Назад | Перейти на главную страницу

Ошибка выделения страницы - мне не хватает памяти?

В последнее время я заметил такие записи в kern.log одного из моих серверов:

Feb 16 00:24:05 aramis kernel: swapper: page allocation failure. order:0, mode:0x20

Я хотел бы знать:

  1. Что именно означает это сообщение?
  2. Моему серверу не хватает памяти?

Использование свопа довольно низкое (менее 10%), и до сих пор я не заметил, чтобы какие-либо процессы были убиты из-за нехватки памяти.

Дополнительная информация:

Ошибка 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 ГБ в буферах. В этом нет смысла, но он остановил все журналы.