linux:oom
Содержание
Что такое OOM и oom-killer Out of memomy, killer, oom-killer
Теория
Практика
OOM, Out of memomy, killer, oom-killer
Перезагрузка при OOM
Мы можем настроить систему таким образом, чтобы при OOM у нас был kernel panic и система автоматически перезагружалась.
Скопирую часть из документации с сайта kernel.org
Устанавливаем параметры для ядра через sysctl
# sysctl vm.panic_on_oom = 1 # sysctl kernel.panic = 30 # время ожидания в секундах до перезагрузки
Или чтобы настройки остались после перезагрузки вносим их в файл sysctl
echo "vm.panic_on_oom = 1" >> /etc/sysctl.conf echo "kernel.panic = 30" >> /etc/sysctl.conf
Тест panic_on_oom
Теперь осталось вызвать Пиковую даму OOM.
В этом вопросе меня выручил блог.
Надо собрать простую программу на С
#include <stdio.h> #include <stdlib.h> #include <string.h> #define MB 10485760 int main(int argc, char *argv[]) { void *b = NULL; int c = 0; while(1) { b = (void *) malloc(MB); if (!b) { break; } memset(b, 1, MB); printf("Allocating %d MB\n", (++c * 10)); } exit(0); }
Компилятор, сборка, запуск
# yum install gcc # gcc -O2 oom.c -o oom # ./oom Allocating 10 MB Allocating 20 MB ... Allocating 7500 MB Allocating 7510 MB Killed
Система ушла в ребут.
Запись в syslog
Mar 12 16:51:25 shisp1 kernel: in:imjournal invoked oom-killer: gfp_mask=0x201da, order=0, oom_score_adj=0 Mar 12 16:51:25 shisp1 kernel: [<ffffffff81186394>] oom_kill_process+0x254/0x3d0 Mar 12 16:51:25 shisp1 kernel: [<ffffffff81185e3d>] ? oom_unkillable_task+0xcd/0x120 Mar 12 16:51:25 shisp1 kernel: Out of memory: Kill process 7112 (oom) score 904 or sacrifice child Mar 12 16:51:25 shisp1 kernel: Killed process 7112 (oom) total-vm:7707656kB, anon-rss:7694760kB, file-rss:20kB, shmem-rss:0kB
EOM
linux/oom.txt · Последнее изменение: 2018/03/16 01:42 — 127.0.0.1
Обсуждение