Go to content Go to menu Go to search

Проверка работы OOM-Killer

Проверка работы OOM-Killer в Linux

Запустить нижеследующую программу, желательно в двух экземплярах (код на C):

#include <stdio.h>
#include <stdlib.h>

#define CR 13

int main(){
   char *fptr;
   long i, k;

   i = 50000000000L;

   do{
      if(( fptr = (char *)malloc(i)) == NULL){
         i = i - 1000;
      }
   }
   while (( fptr == NULL) && (i > 0));

   sleep(15);  /* for time to observe */
   for(k = 0; k < i; k++){   /* so that the memory really gets allocated and not just reserved */
      fptr[k] = (char) (k & 255);
   } /* endfor */
   sleep(600);  /* O.K. now you have 1 minute */
   free(fptr); /* clean up, if we get here */
   return(0);
}

Программа займет всю свободную память и будет ждать 10 минут пока не сработает OOM-killer.

Скомпилированный бинарник: a.out

Можно повысить вероятность прибивания процесса так:

echo "+15" > /proc/<PID>/oom_adj

Значение может быть от -17 (минимальная вероятность) до +15 (максимальная вероятность)

перед запуском хорошо бы выключить swap swapoff -a

Результат смотреть в syslog или dmesg -T

Enjoy!


при публикации материалов с данного сайта обратная ссылка на сайт обязательна.
valynkin.ru © no rights reserved