页面分配失败-我的内存不足吗?


24

最近,我在kern.log我的一台服务器中注意到了这样的条目:

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

我想知道:

  1. 该消息到底是什么意思?
  2. 我的服务器内存不足了吗?

交换使用率非常低(不到10%),到目前为止,我还没有发现任何进程由于内存不足而被杀死。

附加信息:

  • 该服务器是运行Debian 6.0的Xen实例(DomU)
  • 它具有512 MB的RAM和512 MB的交换分区
  • 虚拟机内部的CPU负载平均为0.25

Answers:


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/讨论了何时更改此设置可能有用,请在此处复制:

这告诉内核尝试始终保持64MB的RAM可用。它在两种主要情况下很有用:

  • 无交换机器,您不希望传入的网络流量淹没内核,并在OOM有时间刷新任何缓冲区之前强制执行OOM。

  • 出于相同的原因,x86机器也是如此:x86体系结构仅允许在大约900MB RAM以下的DMA传输。因此,您可能会遇到大量带有可用RAM的OOM错误的怪异情况。

我在3.2.12-gentoo x86机器上应用了此设置,但仍然遇到这些错误。


在某些设备上可能会发生同样的事情,例如,对于MPT Fusion SCSI控制器,建议将vm.min_free_kbytes保持在100兆字节左右。或者至少在我上次不得不将这些东西与32位Linux发行版一起使用时,它曾经使用过。从那时起,事情可能已经改变了。
Janne Pikkarainen 2012年

重要警告echo 104857600 > /proc/sys/vm/min_free_kbytes 导致我的系统重现内核。在我不希望阅读的过程中,屏幕上弹出了不少文字,但是最后一条消息与我的Wi-Fi加密狗有关,因此这种损坏可能是我的系统特有的。话虽这么说,小心一点。
i336_

哦,以千字节为单位。我无法具体记得是104857600还是10485760,但是如果我做的是前者,我会尝试保留100GB的容量,这是笔记本电脑尚未安装的;)我会在虚拟机中尝试一下。
i336_

1

我刚刚在运行Debian 5和内核2.6.39.3 64位的Lenovo NAS上解决了此错误。

根据https://www.novell.com/support/kb/doc.php?id=7002803,该消息尽管看起来很吓人,但仍具有参考性。

但是,他们正在填充我非常有限的根分区(此设备具有50 MB的根分区?!)

对我来说,解决方法是vm.min_free_kbytes65536低到高16384

之后,操作系统仍然具有107 MB的可用内存和2 GB的缓冲区。这没有任何意义,但是它停止了所有日志记录。


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.