Отправляет email-рассылки с помощью сервиса Sendsay

Ядро убивает процессы.

В Fedora Core 3 ядро убивает процессы если они пытаются захватить больше
48Mb памяти. Как это можно отключить? RAM 64Mb, своп 128 Mb.

Проверял такой программкой:

#include <stdlib.h>
#define BLOCK (8 * 1024 * 1024)
int main(int argc, char **argv) {
void *ptr;
size_t s = 0;
while (ptr = malloc(BLOCK)) {
memset(ptr, 0, BLOCK);
s += BLOCK;
printf ("%uM\n", s / (1024 * 1024));
}
return 0;
}

После вывода числа 48 процесс убивается c такими сообщениями:

oom-killer: gfp_mask=0xd2
DMA per-cpu:
cpu 0 hot: low 2, high 6, batch 1
cpu 0 cold: low 0, high 2, batch 1
Normal per-cpu:
cpu 0 hot: low 6, high 18, batch 3
cpu 0 cold: low 0, high 6, batch 3
HighMem per-cpu: empty

Free pages: 248kB (0kB HighMem)
Active:2964 inactive:9851 dirty:0 writeback:9354 unstable:0 free:62
slab:1646 mapped:3061 pagetab DMA free:64kB min:64kB low:128kB
high:192kB active:1444kB inactive:10748kB present:16384kB protections[]:
0 0 0 Normal free:184kB min:192kB low:384kB high:576kB active:10412kB
inactive:28656kB present:49152kB protections[]: 0 0 0
HighMem free:0kB min:128kB low:256kB high:384kB active:0kB inactive:0kB
present:0kB protections[]: 0 0 0
DMA: 0*4kB 0*8kB 0*16kB 0*32kB 1*64kB 0*128kB 0*256kB 0*512kB 0*1024kB
0*2048kB 0*4096kB = 64kB Normal: 8*4kB 1*8kB 1*16kB 0*32kB 0*64kB
1*128kB 0*256kB 0*512kB 0*1024kB 0*2048kB 0*4096kB = 184 HighMem: empty
Swap cache: add 11674, delete 2254, find 45/46, race 0+0
Out of Memory: Killed process 9341 (test-mem).
Killed

Пробовал запускать программу в Knoppix c ядром 2.6.5 - ядро процесс не
убивало, число вырастало даже больше 100, после чего я его сам увивал.

Пробовал играться с /proc/sys/vm/overcommit_memory и
/proc/sys/vm/overcommit_ratio - никаких результатов. Пересмотрел
документацию ядра - кроме overcommit ничего не нашел по этой теме.

Из-за какого поведения ядра я не могу компилировать некоторые программы
и печатать некоторые документы :(

Ответить   Konstantin Korikov Fri, 17 Dec 2004 14:00:09 +0200 (#282473)

 

Ответы:

Konstantin Korikov пишет:

А что ulimit -a говорит?

-*Название листа "Linux: разрешение вопросов, перспективы и общение";
Написать в лист: mailto:comp.soft.linux.discuss-list@subscribe.ru
Адрес правил листа http://subscribe.ru/catalog/comp.soft.linux.discuss/rules
Номер письма: 14400; Возраст листа: 510; Участников: 1285
Адрес сайта рассылки: http://www.linuxrsp.ru
Адрес этого письма в архиве: http://subscribe.ru/archive/comp.soft.linux.discuss/msg/282487



-*Информационный канал Subscribe.Ru
Подписан адрес:
Код этой рассылки: comp.soft.linux.discuss
Написать в лист: mailto:comp.soft.linux.discuss-list@subscribe.ru
Отписаться: mailto:comp.soft.linux.discuss--unsub@subscribe.ru?subject=comp.soft.linux.discuss

http://subscribe.ru/ http://subscribe.ru/feedback

Ответить   "Yuri N. Glibovetz" Fri, 17 Dec 2004 15:19:29 +0200 (#282487)

 

В Птн, 17/12/2004 в 14:00 +0200, Konstantin Korikov пишет:

Может у меня из-за этого не получается нормально откомпилировать ядро? И
даже при компиляции дров на NVIDIA (после того как каким-то чудом
удалось все-таки откомпилить ядро) выдаются ошибки, такого небыло даже в
Mandrake 9.2 и Debian'e! А может такое быть что виновник SELinux?
Пытался загружаться с опцией selinux=0, после этого ядро
откомпилировалось, но это врятли из-за него возникают такие проблемы.

-*Название листа "Linux: разрешение вопросов, перспективы и общение";
Написать в лист: mailto:comp.soft.linux.discuss-list@subscribe.ru
Адрес правил листа http://subscribe.ru/catalog/comp.soft.linux.discuss/rules
Номер письма: 14414; Возраст листа: 511; Участников: 1285
Адрес сайта рассылки: http://www.linuxrsp.ru
Адрес этого письма в архиве: http://subscribe.ru/archive/comp.soft.linux.discuss/msg/282850



-*Информационный канал Subscribe.Ru
Подписан адрес:
Код этой рассылки: comp.soft.linux.discuss
Написать в лист: mailto:comp.soft.linux.discuss-list@subscribe.ru
Отписаться: mailto:comp.soft.linux.discuss--unsub@subscribe.ru?subject=comp.soft.linux.discuss

http://subscribe.ru/ http://subscribe.ru/feedback

Ответить   Sun, 19 Dec 2004 12:13:39 +0300 (#282850)

 

В сообщении от 1103451219 секунд после начала Эпохи Unix Вы написали:

У вас gcc падает из-за выполнения недопустимой операции, причина которой
может быть в ошибке в самом gcc или в ядре или в какай нибудь
библиотеке. проблемы с железом тоже могли бы вызвать такую ошибку. Там к
стати так и написано - "it is likely a hardware or OS problem". Подобную
ошибку я встречал в ASPLinux 9.2 при компиляции LUFS. А проявляться она
может только на определенном железе.

Так что проблемы у нас с вами разные. Моя - видимо, последствие
намеренного изменения поведения ядра, потому что ядро честно говорит что
оно убило процесс (и еще кучу информации, понятной, наверно, только
разработчикам-ядерщикам), и это происходит только при определенных
условиях (процессу понадобилось больше 48Мб). Думаю что на ядро наложили
какой нибудь патчь. Кто нибудь проверял на FC3 программу, которую я
приводил? Очень хотелось бы узнать у кого на каком числе убивается
процесс и соответственно размер ОЗУ и свопа. Если всегда будет 75% от
ОЗУ, то мои догадки подтвердятся.

Все может быть. Если эта фича недостаточно отлажена и стабильна, то
может и из-за нее.

Ответить   Konstantin Korikov Sat, 18 Dec 2004 22:07:17 +0200 (#283125)

 

Konstantin Korikov wrote:

У меня RedHat9 обновлённый до Fedora 2.92 (Core 3 test 3), ядро
2.6.10-rc3 (vanilla), gcc-3.3.4-7. RAM 512Mb, Swap 610Mb. Ваша программа
показала 920Mb прежде чем сработал OOM killer.
Другие запущенные приложения и сервисы: Opera, Thunderbird,
enlightenment, gkrellm, Eterm, apache, sendmail, spamassassin, ...
То есть для vanilla kernel предположение о 75% RAM не верно. Сейчас
соберу ядро от FC 2.92 и перепроверю результат.

Ответить   Vasile Sun, 19 Dec 2004 12:56:12 +0200 (#283299)

 

В сообщении от 1103453772 секунд после начала Эпохи Unix Вы написали:

Спасибо. Заметил что максимальный объем памяти, которую может захватить
программа меняется и зависит от количества запущенных приложений. Еще
зависит от того как быстро я повторяю тест. Если я повторяю тест сразу
после того как OOM killer убьет программу, то программе достается меньше
памяти. Я уменьшил размер блока в программе до 2Мб для более точных
показаний. Вот что показывала при "голой" системе (запущены только
syslog, cron и anacron естественно никаких иксов): 112, 40, 70, 125,
178(!). При чуть более нагруженной системе (httpd, postfix, xinetd,
automount, но тоже без иксов): 54, 24, 45, 54, 17. Причем после убиения
теста, по показаниям free своп не освобождается или освобождается не
полностью (т.е. не запущенно столько, программ чтобы показания free
казались правдивыми). Пробовал запускать тесть с отключенным свопом -
особых нареканий нет, т.е. программе отдается вся (или почти вся)
оперативная память, после чего опять убийство (когда функция malloc
будет возвращать NULL? Не хочу кровавых сцен!).

В общем такие дела. Чувствую что без исходников ядра эту проблему решить
не смогу. :( А в FC3, всем назло, перенесли исходники ядра с
установочных дисков на диски с исходниками...

Ответить   Konstantin Korikov Tue, 21 Dec 2004 16:46:06 +0200 (#284615)

 

Vasile wrote:

Из SRPM Fedora Core 3 test 3 собрал kernel-2.6.8-1.541.i686 (на основе
2.6.9-rc1-bk7). Результаты последовательных запусков вашей тестовой
программы: ~400Mb, ~200Mb, 600Mb, 500Mb,...
При этом видно что после смерти программы память практически НЕ
освобождается! В чистой консоли, без пользовательских приложений free,
top показывал ~100Mb доступного swap (из 610Mb), ~40Mb free RAM (из
512Mb). При этом эта память не числилась ни за одним процессом.
Можно предположить баг в ядре. С другой стороны, я продолжительное
время использовал vanilla 2.6.9-rc1 - всё работало на ура.
Сейчас использую 2.6.10-rc3 - ваша программа выдаёт число порядка 1016Mb
после чего благополучно завершается (то есть просто malloc() возвращает
NULL, и OOM killer не задействуется).
Могу порекомендовать проверить на вашей системе самосборное ядро
2.6.10-rc3, или 2.6.9-final.

Ответить   Vasile Tue, 21 Dec 2004 21:14:44 +0200 (#284705)

 

В сообщении от 1103656484 секунд после начала Эпохи Unix Вы написали:

Спасибо. Раздобуду, проверю.

Ответить   Konstantin Korikov Wed, 22 Dec 2004 19:10:10 +0200 (#285195)

 

В сообщении от 1103735410 секунд после начала Эпохи Unix Вы написали:

Собрал и установил 2.6.10, сделал три теста: на первом программа
захватила 176128 Кб памяти, после чего была убита oom-killer;
на втором - 174080 Кб и опять убита; на третьем - 169984 Кб и тоже
убита. Это уже намного лучше чем раньше. Жалко только что oom-killer
нельзя отключить нормальным способом, ни опций конфигурирования,
ни параметров ядра я не видел.

Ответить   Konstantin Korikov Mon, 10 Jan 2005 18:11:33 +0200 (#294215)

 

Konstantin Korikov wrote:

в моих тестах пару раз (как правило после загрузки системы) программа
была не убита, но корректно завершена (malloc() вернул NULL). Видимо без
OOM-killer не обойтись, хотя бы в связи с тем что память выделяют не
только пользовательские процессы, но и само ядро (или точнее драйверы
ядра - а им kill не сделаешь ;) ), а также необходимость свободного RAM
для операций со swap'ом.

Ответить   Vasile Mon, 10 Jan 2005 21:52:33 +0200 (#294379)

 

В Сбт, 18/12/2004 в 22:07 +0200, Konstantin Korikov пишет:

У меня дошло до 310 Мб после чего ядра выдало содержимое файла map и
отрубилось

ОЗУ - 256
SWAP - 600

-*Название листа "Linux: разрешение вопросов, перспективы и общение";
Написать в лист: mailto:comp.soft.linux.discuss-list@subscribe.ru
Адрес правил листа http://subscribe.ru/catalog/comp.soft.linux.discuss/rules
Номер письма: 14450; Возраст листа: 512; Участников: 1284
Адрес сайта рассылки: http://www.linuxrsp.ru
Адрес этого письма в архиве: http://subscribe.ru/archive/comp.soft.linux.discuss/msg/283557



-*Информационный канал Subscribe.Ru
Подписан адрес:
Код этой рассылки: comp.soft.linux.discuss
Написать в лист: mailto:comp.soft.linux.discuss-list@subscribe.ru
Отписаться: mailto:comp.soft.linux.discuss--unsub@subscribe.ru?subject=comp.soft.linux.discuss

http://subscribe.ru/ http://subscribe.ru/feedback

Ответить   Mon, 20 Dec 2004 23:46:48 +0300 (#283557)

 

В сообщении от 1103579208 секунд после начала Эпохи Unix Вы написали:

Отрубилось ядро? Или процесс умер?

Ответить   Konstantin Korikov Sun, 19 Dec 2004 23:14:22 +0200 (#283571)

 

В Вск, 19/12/2004 в 23:14 +0200, Konstantin Korikov пишет:

У меня тачка повисла :) После пришлось вспоминать что я делал раньше в
маcдае (тонко намекаю RESET!). В общем при работе этой проги писалось
что выгружается что-то там походу память освобождал под эту прогу
ненасытную :) После вывалилось сообщение кернел паник, причем вовремя
работы этой проги у меня или память зашумела :) или винт, причем шум
какойто странный был, я такого еще никогда не слышал :) похоже на
шелест.

-*Название листа "Linux: разрешение вопросов, перспективы и общение";
Написать в лист: mailto:comp.soft.linux.discuss-list@subscribe.ru
Адрес правил листа http://subscribe.ru/catalog/comp.soft.linux.discuss/rules
Номер письма: 14454; Возраст листа: 513; Участников: 1284
Адрес сайта рассылки: http://www.linuxrsp.ru
Адрес этого письма в архиве: http://subscribe.ru/archive/comp.soft.linux.discuss/msg/283609



-*Информационный канал Subscribe.Ru
Подписан адрес:
Код этой рассылки: comp.soft.linux.discuss
Написать в лист: mailto:comp.soft.linux.discuss-list@subscribe.ru
Отписаться: mailto:comp.soft.linux.discuss--unsub@subscribe.ru?subject=comp.soft.linux.discuss

http://subscribe.ru/ http://subscribe.ru/feedback

Ответить   Tue, 21 Dec 2004 03:22:49 +0300 (#283609)

 

В сообщении от 1103592169 секунд после начала Эпохи Unix Вы написали:

Может вентилятор стал быстрее вращаться, где-то произошел резонанс и
лопасти вентилятора стали задевать провода?... А паника ядра
свидетельствует только о проблемах в железе или в самом ядре. Вы другие
дистрибутивы не пробовали? Ядро 2.4?

Ответить   Konstantin Korikov Mon, 20 Dec 2004 14:27:17 +0200 (#283903)

 

В Пнд, 20/12/2004 в 14:27 +0200, Konstantin Korikov пишет:

Дело не в железе! После того как перекомпилил gcc3.4 все пошло
нормально. А кулер не задевал провода, я бы тогда заметил, у меня одна
сторона системника открыта, т.к. постоянно тестирую новое железо.

-*Название листа "Linux: разрешение вопросов, перспективы и общение";
Написать в лист: mailto:comp.soft.linux.discuss-list@subscribe.ru
Адрес правил листа http://subscribe.ru/catalog/comp.soft.linux.discuss/rules
Номер письма: 14465; Возраст листа: 513; Участников: 1284
Адрес сайта рассылки: http://www.linuxrsp.ru
Адрес этого письма в архиве: http://subscribe.ru/archive/comp.soft.linux.discuss/msg/284001



-*Информационный канал Subscribe.Ru
Подписан адрес:
Код этой рассылки: comp.soft.linux.discuss
Написать в лист: mailto:comp.soft.linux.discuss-list@subscribe.ru
Отписаться: mailto:comp.soft.linux.discuss--unsub@subscribe.ru?subject=comp.soft.linux.discuss

http://subscribe.ru/ http://subscribe.ru/feedback

Ответить   Tue, 21 Dec 2004 19:43:30 +0300 (#284001)