Выпуск апрацоўшчыка недахопу памяці earlyoom 1.4

Пасля васьмі месяцаў распрацоўкі апублікаваны выпуск фонавага працэсу earlyoom 1.4, які перыядычна правярае аб'ём даступнай памяці (MemAvailable, SwapFree) і спрабуе на ранняй стадыі адрэагаваць на ўзнікненні недахопу памяці. Код праекта напісаны на мове Сі і распаўсюджваецца пад ліцэнзій MIT.

Калі аб'ём даступнай памяці менш зададзенага значэння, то earlyoom прымусова (праз адпраўку SIGTERM або SIGKILL) завершыць працу працэсу, найболей актыўна спажывальнага памяць (маючага самае вялікае значэнне /proc/*/oom_score), не даводзячы стан сістэмы да ачысткі сістэмных буфераў і што замінае працы свопінгу (апрацоўшчык OOM (Out Of Memory) у ядры спрацоўвае калі стан недахопу памяці ўжо дасягнула крытычных значэнняў і звычайна да гэтага моманту сістэма ўжо не рэагуе на дзеянні карыстача).

Earlyoom падтрымлівае адпраўку апавяшчэнняў аб прымусова завершаных працэсах на працоўны стол (з дапамогай notify-send), а таксама дае магчымасць вызначэння правілаў, у якіх пры дапамозе рэгулярных выразаў можна задаць імёны працэсаў, завяршэнне якіх пераважна (опцыя «—prefer») або прыпынкі якіх. варта пазбягаць (опцыя "-avoid").

Асноўныя змены у новым выпуску:

  • За кошт адкладзенай загрузкі атрыбутаў працэсаў на 50% паскорана логіка выбару працэсаў для завяршэння;
  • Забяспечана адлюстраванне ў логу UID завяршанага працэсу, у дадатак да PID і імя працэсу;
  • Дададзена падсвятленне адладкавага лога светла шэрым колерам;
  • Праведзена чыстка кода;
  • Па магчымасці выкарыстана аб'ява лакальных для блокаў зменных;
  • Дададзена налада PATH_LEN для замены зашытага ў код значэння памеру буфера;
  • Забяспечаны запуск cppcheck пры ім наяўнасці;
  • Дададзены тэст прадукцыйнасці make bench;
  • Пашыраны набор тэстаў (make test);
  • Рэалізаваны скід прывілеяў root у unit-файле systemd earlyoom.service. Гэта змена ламае магчымасць GUI апавяшчэнняў. Для ўключэння GUI апавяшчэнняў прапануецца вярнуць root правы, раскаментаваўшы "DynamicUser=true". Адключэнне root таксама прыводзіць да немагчымасці атрымання звестак аб спажыванні памяці пры мантаванні /proc у рэжыме hidepid=1 або hidepid=2.

Крыніца: opennet.ru

Дадаць каментар