Założę się, że system tak naprawdę nie „zawiesił się” (w tym sensie, że jądro się zawiesiło), ale raczej bardzo nie reagował. Możliwe, że po prostu zmienił się bardzo mocno, powodując, że wydajność interaktywna i przepustowość systemu spadły jak kamień.
Państwo mogłoby wyłączyć swapa, ale to tylko zmienia problem z niską wydajność w procesach OOM zabite (i wszystkie zabawy, które przyczyn), wraz ze spadkiem wydajności z powodu mniej dostępnej pamięci podręcznej dysku.
Alternatywnie, możesz użyć limitów zasobów na proces (zwykle określanych jako rlimit
i / lub ulimit
), aby wyeliminować możliwość, że pojedynczy proces zajmie absurdalnie dużo pamięci i spowoduje zamianę, ale to po prostu popycha cię do rozrywkowego terytorium procesami, które giną w niewygodne chwile, ponieważ chcieli trochę więcej pamięci, niż system był w stanie im dać.
Jeśli wiedziałeś, że zamierzasz zrobić coś, co może spowodować ogromne zużycie pamięci, prawdopodobnie możesz napisać program opakowujący, który wykonał, mlockall()
a następnie uruchomił powłokę; utrzymałoby to w pamięci i byłoby najbliższą rzeczą, aby „zachować responsywny rdzeń”, który prawdopodobnie dostaniesz (ponieważ nie chodzi o to, że procesor jest nadmiernie wykorzystywany, to jest problem).
Osobiście popieram metodę kontroli zasobów „nie rób głupot”. Jeśli masz uprawnienia roota, możesz wyrządzić wszelkiego rodzaju szkody w systemie, a więc robienie wszystkiego , czego nie znasz, jest ryzykownym przedsięwzięciem.