LINUX.ORG.RU

История изменений

Исправление Manhunt, (текущая версия) :

Конфигурация:
64-битный core i5
8 Гб оперативки
2 Гб свопа
glibc 2.15
Linux kernel 3.4.11

Запуск теста:
gcc -O0 c.c
strace ./a.out

Результаты:
1. При #define COUB (8*1000*1000) миллиард итераций проходится быстро и без проблем (проверил несколько раз)
2. При #define COUB (16*1000*1000) машина уходит в своп, тест работает очень медленно. Ждал больше часа, терпения не хватило, выключил с помощью Ctrl-C.
3. При #define COUB (32*1000*1000) машина также уходит в своп, но минут через 50 вся доступная память исчерпывается, и получаем:

brk(0x2430a8000)                        = 0x2430a8000
brk(0x2430c9000)                        = 0x2430c9000
brk(0x2430ea000)                        = 0x2430ea000
brk(0x24310b000)                        = 0x24310b000
+++ killed by SIGKILL +++
Убито
$ dmesg | tail -n 4
[554284.619967] [17952]  1000 17952     4100      390   1       0             0 bash
[554284.619971] [18193]   108 18193     8969      238   2       0             0 postgres
[554284.619974] Out of memory: Kill process 17925 (a.out) score 921 or sacrifice child
[554284.619977] Killed process 17925 (a.out) total-vm:9474644kB, anon-rss:7585008kB, file-rss:36kB
4. Если ограничить память с помощью bash-евского «ulimit -v», то тест стабильно завершается сообщением о том, что malloc вернул NULL

Исходная версия Manhunt, :

Не воспроизводится

Конфигурация:
64-битный core i5
8 Гб оперативки
2 Гб свопа
glibc 2.15
Linux kernel 3.4.11

Запуск теста:
gcc -O0 c.c
strace ./a.out

Результаты:
1. При #define COUB (8*1000*1000) миллиард итераций проходится быстро и без проблем (проверил несколько раз)
2. При #define COUB (16*1000*1000) машина уходит в своп, тест работает очень медленно. Ждал больше часа, терпения не хватило, выключил с помощью Ctrl-C.
3. При #define COUB (32*1000*1000) машина также уходит в своп, но минут через 50 вся доступная память исчерпывается, и получаем:

brk(0x2430a8000)                        = 0x2430a8000
brk(0x2430c9000)                        = 0x2430c9000
brk(0x2430ea000)                        = 0x2430ea000
brk(0x24310b000)                        = 0x24310b000
+++ killed by SIGKILL +++
Убито
[sergin@kulikov-win7x64] ~/foo/bar $ dmesg | tail -n 4
[554284.619967] [17952]  1000 17952     4100      390   1       0             0 bash
[554284.619971] [18193]   108 18193     8969      238   2       0             0 postgres
[554284.619974] Out of memory: Kill process 17925 (a.out) score 921 or sacrifice child
[554284.619977] Killed process 17925 (a.out) total-vm:9474644kB, anon-rss:7585008kB, file-rss:36kB
4. Если ограничить память с помощью bash-евского «ulimit -v», то тест стабильно завершается сообщением о том, что malloc вернул NULL