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

24

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

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

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

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

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

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

  • Сервер является экземпляром Xen (DomU) под управлением Debian 6.0
  • Он имеет 512 МБ ОЗУ и раздел подкачки 512 МБ
  • Загрузка процессора внутри виртуальной машины показывает в среднем 0,25
mfriedman
источник

Ответы:

14

Похоже, что ошибка 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, но все еще получаю эти ошибки.

Мэтт МакГенри
источник
То же самое может произойти с некоторыми устройствами, например, с контроллером MPT Fusion SCSI рекомендуется хранить vm.min_free_kbytes около 100 мегабайт. Или, по крайней мере, раньше, когда мне в последний раз приходилось использовать эти вещи с 32-битными дистрибутивами Linux. С тех пор все могло измениться.
Янне Пиккарайнен
ВАЖНОЕ ПРЕДУПРЕЖДЕНИЕ . echo 104857600 > /proc/sys/vm/min_free_kbytes ПРИЧИЛА МОЮ СИСТЕМУ ПЕРЕНОСИТЬ ПАНИКУ, воспроизводимо . При этом на экран выскочило немало текста, который я не надеялся прочитать, но последние сообщения касались моего ключа Wi-Fi, так что эта поломка может быть характерна для моей системы. Это, как говорится, тыкать с осторожностью.
i336_
О, это в килобайтах . Я не могу конкретно вспомнить , если я сделал 104857600 или 10485760, но если бы я сделал бывший я пытался зарезервировать 100GB, который делает этот ноутбук не установили;) Постараюсь возился с этим в VM - то.
i336_
1

Я только что исправил эту ошибку на 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 ГБ в буферах. Это не имеет смысла, но это остановило все записи.

Criggie
источник