RSS Feed

Posts Tagged ‘kernel’

  1. Co robić, jeżeli system swapuje, a dużo ramu jest cały czas wolne

    Wrzesień 6, 2011 by 0verlord

    Ogólnie rzecz biorąc, swapowanie bywa pożyteczne. Jeżeli mamy mini serwerek, który ma mało ramu, a jakaś aplikacja sobie ucieknie, mamy szanse ją dobić i serwer naprawić.
    Gorzej, jeżeli mamy do dyspozycji 12GB ramu, wykorzystywane jest jakieś 6, swap jest wykorzystany na poziomie 30-40%, a procesor wisi w wa (wasted) i ogólnie mamy wrażenie, że ruch na I/O morduje performance serwera.

    Miałem taki przypadek z serwerem poczty. O ile jeszcze Thunderbird sobie z radził, to już (tfu, tfu) Outlook czytający maile po imapie, potrafił nie umieć pobrać całej wiadomości z serwera. Jak ludzie bluzgali, to już inna opowieść 😉

    W każdym razie, vmstat pokazywał sobie jakieś 20-40% procka czekającego na dysk i sama sytuacja nie wyglądała jakoś szczególnie dramatycznie. Natomiast tutaj był problem ze swapem.

    Jest taki parametr w kernelu, nazywa się vm.swappiness, dokładne info w obcym jezyku jest tutaj. Przyjmuje parametry od 0 do 100, gdzie 0 oznacza brak swapowania, jeżeli jest wolny ram, a 100, że wszystko co się da lub nie da ma iść do swapa.
    Jeżeli już na serwerze mamy zatkany swap, procedura wyczyszczenia wygląda tak:

    # gasimy swapa
    swapoff /tam/gdzie/swap
    # przestawiamy parametr
    sysctl -w vm.swappiness=0 (lub 100 w zależności od celu)
    # włączamy swap
    swapon /tam/gdzie/swap

    Jeżeli mamy dużo ramu, warto z niego korzystać. Wszystko, co wisi w ramie, będzie działało dużo szybciej, i nie będzie czekało na dysk.