Uważam, że nie jest to tak rzadki problem: jeden proces przydziela ogromne ilości pamięci (czy to z powodu błędu wycieku pamięci, ponieważ próbujesz przetworzyć niewiarygodnie duży plik wejściowy, lub cokolwiek innego). Pamięć RAM zapełnia się iw pewnym momencie Linux musi przełączyć się na wymianę. Czasami jest to tylko ostatnia deska ratunku: jeśli mam kosztowne obliczenia, nie chcę stracić danych, jeśli pod koniec zabraknie pamięci RAM.
Jednak częściej (z mojego doświadczenia) zużycie pamięci jest nieograniczone przez nieuczciwy, być może błędny proces. Tzn. Nie tylko skończyło się na tym, że niektóre mniej pilnie potrzebne dane zostały przeniesione do wymiany, ale system operacyjny jest zmuszony do panicznej wymiany ładunków danych. I to niestety nie tylko poważnie przerywa proces obrażania, ale może spowolnić cały system (nie jest już tak źle na komputerach z dyskiem SSD, ale OTOH martwi mnie, czy zapisywanie gigabajtów i gigabajtów danych na śmieci może długoterminowe uszkodzenie komórek flash).
Dopóki nie zauważę problemu i nie zakończę ręcznie procesu (raz zajęło mi to kilka minut, aż nawet zalogowałem się do wirtualnego terminala!), Połowa mojej uruchomionej sesji jest w trybie wymiany i muszę czekać dość długo, aż system zacznie działać płynnie jeszcze raz.
Istnieje jedno drakoniczne rozwiązanie problemu: wymuszenie twardego limitu pamięci. Ale robienie tego w całym systemie czasami zabija procesy, których raczej potrzebuję, a jeśli będę musiał ręcznie ulimit
przed rozpoczęciem procesu obrażania ... cóż, często zapominam, aż będzie za późno.
Możliwe rodzaje rozwiązań, z którymi byłbym szczęśliwy:
- Jeśli jakikolwiek proces przekroczy określone użycie pamięci, jest sztucznie ograniczany, aby reszta systemu pozostała responsywna.
- Jeśli jakikolwiek proces przekracza określone użycie pamięci, jest to
SIGSTOP
ped, więc mam czas, aby dowiedzieć się, co dalej. - Jeśli proces zbliża się do limitu pamięci RAM, pojawia się ostrzeżenie, zanim rozpocznie się wielka wymiana.
Czy istnieje sposób na uzyskanie takiego zachowania lub podobnego?
ulimit
.