The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Индекс форумов
Составление сообщения

Исходное сообщение
"Выпуск earlyoom 1.1, процесса для раннего реагирования на не..."
Отправлено Аноним, 08-Июл-18 23:11 
>>Если объём доступной памяти меньше заданного значения, то earlyoom принудительно (через отправку SIGKILL) завершит работу процесса, наиболее активно потребляющего память
> Ох неужели наконец-то кто-то это сделал, ПРАЗДНИК блин.
> Постоянно виснет система из-за того что кончается свободная оперативка, а свап на
> ССД включать не хочу ибо дорогой ССД быстро убъётся постоянными перезаписями.

У нас, свободных бздунов, это делается так (для некоторых, особо одаренных знатоков и петросянов опеннета: естественно, только через пуссиэкзе и все такое, никак иначе! Ну, вы поняли…)


man protect
NAME
     protect – protect processes from being killed when swap space is
     exhausted

EXAMPLES
     Mark the Xorg server as protected:

           pgrep Xorg | xargs protect -p


% more /etc/sysctl.conf
vm.disable_swapspace_pageouts=1
vm.pageout_oom_seq=2
kern.sched.preempt_thresh=224
kern.sched.interact=10

# что значит
% sysctl -d vm.pageout_oom_seq vm.disable_swapspace_pageouts kern.sched.preempt_thresh kern.sched.interact
vm.pageout_oom_seq: back-to-back calls to oom detector to start OOM
vm.disable_swapspace_pageouts: Disallow swapout of dirty pages
kern.sched.preempt_thresh: Maximal (lowest) priority for preemption
kern.sched.interact: Interactivity score threshold

% config -x /boot/kernel/kernel|grep SWAP  
options    NO_SWAPPING


В итоге, даже при сильном "перегрузе" всех ядер гуй остается приятно отзывчивым, а если что-то начинает отжирать память "как не в себя", то фриз до прихода ООМ убивца можно даже не заметить (опция, ускоряющая каст ООМ killer:
vm.pageout_oom_seq=2, вместо =10)

Заценка:


/usr/bin/time -l  python -c '{x:str(x)*(x**x**x) for x in range(100000000)}'
time: command terminated abnormally
       15,35 real         1,66 user         3,86 sys
   5047412  maximum resident set size
         3  average shared memory size
        11  average unshared data size
       119  average unshared stack size
   1259462  page reclaims
        12  page faults
         0  swaps
         0  block input operations
         0  block output operations
         0  messages sent
         0  messages received
         0  signals received
        25  voluntary context switches
       700  involuntary context switches
zsh: killed     /usr/bin/time -l python -c '{x:str(x)*(x**x**x) for x in range(100000000)}'

Если что - лицензия позволяет утянуть^W позаимств^W вдохновиться, нам не жалко ;)

 

Ваше сообщение
Имя*:
EMail:
Для отправки ответов на email укажите знак ! перед адресом, например, !user@host.ru (!! - не показывать email).
Более тонкая настройка отправки ответов производится в профиле зарегистрированного участника форума.
Заголовок*:
Сообщение*:
 
При общении не допускается: неуважительное отношение к собеседнику, хамство, унизительное обращение, ненормативная лексика, переход на личности, агрессивное поведение, обесценивание собеседника, провоцирование флейма голословными и заведомо ложными заявлениями. Не отвечайте на сообщения, явно нарушающие правила - удаляются не только сами нарушения, но и все ответы на них. Лог модерирования.



Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру