odbierać sygnał, zanim proces zostanie zabity przez OOM killer / cgroups


11

W naszym klastrze ograniczamy zasoby naszych procesów, np. Pamięć ( memory.limit_in_bytes).

Myślę, że ostatecznie jest to również obsługiwane przez zabójcę OOM w jądrze Linuksa (wygląda to tak, czytając kod źródłowy ).

Czy jest jakiś sposób na uzyskanie sygnału, zanim mój proces zostanie zabity? (Podobnie jak -notifyopcja dla SGEqsub , które wyślą SIGUSR1przed zakończeniem procesu).

Czytam o tym /dev/mem_notify tutaj, ale nie mam tego - czy jest coś jeszcze w dzisiejszych czasach? Przeczytałem również to, co wydaje się dość istotne.

Chcę być w stanie przynajmniej zrzucić ślad małego stosu i może jakieś inne przydatne informacje debugowania - ale może uda mi się nawet odzyskać, zwalniając trochę pamięci.

Jednym z obejść, których obecnie używam, jest ten mały skrypt, który często sprawdza, czy jestem blisko (95%) limitu, a jeśli tak, wysyła proces a SIGUSR1. W Bash uruchamiam ten skrypt w tle ( cgroup-mem-limit-watcher.py &), aby szukał on innych procesów w tej samej grupie i automatycznie kończy działanie po śmierci nadrzędnego procesu Bash.


Nie mogłem znaleźć żadnych źródeł uprawnień, ani nie mogłem znaleźć sposobu, aby ręcznie wywołać OOM Killer dla określonego procesu (w celu przetestowania pomysłu) , ale z tego, co znalazłem, wydaje się, że OOM Killer po prostu wysyła SIGTERM, więc musisz ustawić moduł obsługi tego sygnału.
Hi-Angel,

5
@ Hi-Angel: Z kodu źródłowego Linuksa wydaje się, że wysyła SIGKILL.
Albert,

@Albert Po przeczytaniu kodu źródłowego, myślę również, że OOM Killer wyśle ​​bezpośrednio sygnał SIGKILL.
andy

Odpowiedzi:



5

OOM Killer wysyła SIGKILL, ponieważ w przeciwnym razie niepraktyczne byłoby pozostawienie problematycznemu programowi wyboru kontynuacji.

Oznacza to, że proces nie ma absolutnie żadnej wiedzy, kiedy ma zostać zabity.

Zarządzanie takimi problemami zwykle oznacza dokonywanie poprawek w programach lub ich konfiguracji. Czasami, w zależności od konfiguracji systemu, zwykłe zwiększenie przestrzeni wymiany może dać systemowi operacyjnemu większą elastyczność zarządzania pamięcią, aby uniknąć tak drastycznych środków.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.