Ошибка выделения страницы - не хватает памяти?
В последнее время я заметил записи, подобные этой в kern.log
одного из моих серверов:
Feb 16 00:24:05 aramis kernel: swapper: page allocation failure. order:0, mode:0x20
Я хотел бы знать:
- Что именно означает это сообщение?
- На моем сервере не хватает памяти?
Использование подкачки довольно низкое (менее 10%), и до сих пор я не заметил, чтобы какие-либо процессы были убиты из-за нехватки памяти.
Дополнительная информация:
- Сервер является экземпляром Xen (DomU) под управлением Debian 6.0
- Он имеет 512 МБ ОЗУ и раздел подкачки 512 МБ
- Загрузка процессора внутри виртуальной машины показывает в среднем 0,25
3 ответа
Похоже, что ошибка Debian 666021 является отчетом об этой же проблеме. Предложение есть:
#change value for this boot
sysctl -w vm.min_free_kbytes=65536
#change value for subsequent boots
echo "vm.min_free_kbytes=65536" >> /etc/sysctl.conf
http://russ.garrett.co.uk/2009/01/01/linux-kernel-tuning/ обсуждает, когда изменение этого параметра может быть полезным, воспроизведено здесь:
Это говорит ядру, чтобы оно всегда старалось освободить 64 МБ ОЗУ. Это полезно в двух основных случаях:
Машины без подкачки, где вы не хотите, чтобы входящий сетевой трафик перегружал ядро и заставлял OOM, прежде чем он успеет очистить любые буферы.
Машины x86, по той же причине: архитектура x86 допускает только передачу DMA ниже примерно 900 МБ ОЗУ. Таким образом, вы можете получить причудливую ситуацию с ошибкой OOM с тоннами свободной оперативной памяти.
Я применил этот параметр на своем компьютере 3.2.12-gentoo x86, но все еще получаю эти ошибки.
Также стоит проверить vm.zone_reclaim_mode
: см. http://www.kernel.org/doc/Documentation/sysctl/vm.txt
Я только что исправил эту ошибку на Lenovo NAS под управлением Debian 5 и ядра 2.6.39.3 64bit.
По словам https://www.novell.com/support/kb/doc.php?id=7002803 сообщения носят информационный характер, несмотря на то, что выглядят страшно
Тем не менее, они заполняли мой очень ограниченный корневой раздел (это устройство имеет корневой раздел размером 50 МБ?!)
Исправление для меня было установить vm.min_free_kbytes
от 65536
до 16384
,
После этого ОС все еще имеет 107 МБ свободной памяти и 2 ГБ в буферах. Это не имеет смысла, но это остановило все записи.