Program obsługi braku pamięci w wersji Earlyoom 1.4

Po ośmiu miesiącach rozwoju opublikowany zwolnienie procesu w tle wczesna pora 1.4, który okresowo sprawdza ilość dostępnej pamięci (MemAvailable, SwapFree) i stara się wcześnie reagować na wystąpienie braku pamięci. Kod projektu jest napisany w języku C i dystrybuowane przez na licencji MIT.

Jeśli ilość dostępnej pamięci jest mniejsza niż określona wartość, to Earlyoom wymusi (wysyłając SIGTERM lub SIGKILL) zakończenie procesu najbardziej aktywnie zużywającego pamięć (posiadającego najwyższą wartość /proc/*/oom_score), bez przywracania stanu systemu do czyszczenia buforów systemowych i ingerowania w zamianę pracy (funkcja obsługi OOM (Out Of Memory) w jądrze jest uruchamiana, gdy stan out-of-memory osiągnął już wartości krytyczne i zwykle do tego momentu system już nie odpowiada do działań użytkownika).

Earlyoom obsługuje wysyłanie powiadomień o wymuszonym zakończeniu procesów na pulpit (za pomocą notify-send), a także zapewnia możliwość definiowania reguł, w których za pomocą wyrażeń regularnych można określić nazwy procesów, które preferowane są do zakończenia (opcja „- -prefer”) lub zatrzymane należy unikać (opcja „--avoid”).

Głównym zmiany w nowym wydaniu:

  • kosztem powolne ładowanie atrybuty procesu 50% szybsza logika wyboru procesu do zakończenia;
  • Zapewniono, że UID kończonego procesu jest odzwierciedlony w dzienniku, oprócz PID i nazwy procesu;
  • Dodano podświetlanie dziennika debugowania na jasnoszary;
  • Wyczyściłem kod;
  • Tam, gdzie było to możliwe, zastosowano deklarację zmiennych lokalnych dla bloków;
  • Dodano ustawienie PATH_LEN, aby zastąpić wartość rozmiaru bufora wszytą w kodzie;
  • Zapewniono, że cppcheck jest uruchamiany, jeśli jest dostępny;
  • Dodano test wydajności „make bench”;
  • Rozszerzony zestaw testów (make test);
  • Zaimplementowano resetowanie uprawnień roota w pliku jednostki systemowej Earlyoom.service. Ta zmiana przerwy możliwość powiadomień GUI. Aby włączyć powiadomienia GUI, proponuje się przywrócenie uprawnień roota poprzez odkomentowanie „DynamicUser=true”. Wyłączenie roota również приводит na brak możliwości uzyskania informacji o zużyciu pamięci podczas montowania /proc w trybie hidepid=1 lub hidepid=2.

Źródło: opennet.ru

Dodaj komentarz