proc_pid_oom_score_adj(5)

NAZWA
/proc/pid/oom_score_adj - dostosowanie wyniku dla OOM-killera

OPIS

/proc/pid/oom_score_adj (od Linuksa 2.6.36)
    Plik może być użyty do dostosowania heurystyki zwanej „badness”, używanej do wybrania procesu który zostanie zabity w sytuacji braku pamięci.

    Przypisuje ona do każdego potencjalnego zadania wartość od 0 (nigdy nie zabija) do 1000 (zawsze zabija) aby określić docelowy proces do zabicia. Jednostki są z grubsza proporcjonalne do pamięci, którą proces może przydzielić, obliczaną w oparciu do bieżącego użycia pamięci i pamięci wymiany. Na przykład zadanie używające całą dozwoloną pamięć otrzyma wynik 1000, a jeśli użyje połowę dozwolonej pamięci, otrzyma wynik 500.

    Dodatkowym czynnikiem w wyniku „badness” jest fakt, że procesy roota mają dodatkowe 3% pamięci w stosunku do pozostałych procesów.

    Wielkość „dozwolonej” pamięci zależy od kontekstu w jakim wywołano OOM-killera. Jeśli wynika to z faktu, że pamięć przeznaczona dla zadania alokującego cpuset została wyczerpana, to dozwolona pamięć odpowiada zestawowi pamięci przypisanego do tego cpuset (zobacz cpuset(7)). Jeśli jest to skutek zasad dot. pamięci węzła (lub węzłów), to dozwolona pamięć odpowiada zestawowi tych zasad. Jeśli wynika to z faktu, że osiągnięto limit pamięci (lub pamięci wymiany) to dozwolona pamięć jest tak ustawionym limitem. Gdy wynika to z sytuacji braku pamięci, to dozwolona pamięć odpowiada wszystkim zaalokowanym zasobom.

    Wartość oom_score_adj jest dodawana do wyniku „badness” przed użyciem jej do wybrania procesu przeznaczonego do zabicia. Dozwolone wartości wynoszą od -1000 (OOM_SCORE_ADJ_MIN) do +1000 (OOM_SCORE_ADJ_MAX). Pozwala to przestrzeni użytkownika na kontrolę preferencji OOM-killing. Można w ten sposób zawsze preferować dane zadanie lub całkowicie wyłączyć je z procesu OOM-killing. Najniższa dostępna wartość (-1000) jest równoznaczna z całkowitym wyłączeniem OOM-killing dla danego zadania, ponieważ zawsze zwróci ono wynik „badness” równy 0.

    Z tego względu łatwo jest zdefiniować wielkość pamięci dla każdego zadania przez przestrzeń użytkownika. Ustawienie wartości oom_score_adj np. na +500 jest w przybliżeniu odpowiednikiem pozwolenia pozostałym zadaniom w tym samym systemie, cpuset, zasadom dot. pamięci i zasobom kontrolera pamięci na użycie co najmniej 50% pamięci więcej. Z kolei wartość -500 odpowiada mniej więcej zmniejszeniu o 50% dozwolonej pamięci.

    Z powodu zgodności wstecznej ze starszymi jądrami do modyfikacji wyniku „badness” wciąż można używać /proc/pid/oom_adj. Jego wartość skaluje się liniowo z oom_score_adj.

    Zapis do /proc/pid/oom_score_adj lub /proc/pid/oom_adj zmieni zapis w drugim pseudopliku na przeskalowaną odpowiednio wartość.

    Program choom(1) zapewnia interfejs wiersza poleceń do dostosowywania wartości oom_score_adj działającego procesu lub nowo wykonywanego polecenia.

HISTORIA

/proc/pid/oom_adj (od Linuksa 2.6.11)
    Plik może być użyty do dostosowania wyniku, używanego do wybrania procesów do zabicia, w przypadku sytuacji braku pamięci (out-of-memory - OOM). Jądro używa tej wartości do operacji przesunięcia bitowego wartości oom_score procesu: poprawne wartości mieszczą się w zakresie od -16 do +15, wraz ze specjalną wartością -17, która całkowicie wyłącza zabijanie przy OOM danego procesu. Dodatni wynik zwiększa prawdopodobieństwo, że proces zostanie zabity przez OOM-killer, ujemny zmniejsza je.

    Domyślną wartością tego pliku jest 0, nowy proces dziedziczy ustawienie oom_adj swojego rodzica. Proces musi być uprzywilejowany (CAP_SYS_RESOURCE) aby móc zaktualizować ten plik, choć może zawsze zwiększyć swoje ustawienie oom_adj (od Linuksa 2.6.20).

    Od Linuksa 2.6.36 używanie tego pliku jest przestarzałe, na korzyść /proc/pid/oom_score_adj, a usunięto go w Linuksie 3.7.

ZOBACZ TAKŻE
proc(5), proc_pid_oom_score(5)

TŁUMACZENIE
Autorami polskiego tłumaczenia niniejszej strony podręcznika są: Przemek Borys <pborys@dione.ids.pl>, Robert Luberda <robert@debian.org> i Michał Kułach <michal.kulach@gmail.com>

Niniejsze tłumaczenie jest wolną dokumentacją. Bliższe informacje o warunkach licencji można uzyskać zapoznając się z GNU General Public License w wersji 3 (https://www.gnu.org/licenses/gpl-3.0.html) lub nowszej. Nie przyjmuje się ŻADNEJ ODPOWIEDZIALNOŚCI.

Błędy w tłumaczeniu strony podręcznika prosimy zgłaszać na adres listy dyskusyjnej manpages-pl-list@lists.sourceforge.net.