页面分配失败 - 我是否内存不足?

mfr*_*man 28 linux troubleshooting memory

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

Feb 16 00:24:05 aramis kernel: swapper: page allocation failure. order:0, mode:0x20
Run Code Online (Sandbox Code Playgroud)

我想知道:

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

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

附加信息:

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

Mat*_*nry 16

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
Run Code Online (Sandbox Code Playgroud)

http://russ.garrett.co.uk/2009/01/01/linux-kernel-tuning/有一些关于何时更改此设置可能有用的讨论,转载在这里:

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

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

  • x86 机器,出于同样的原因:x86 架构只允许低于大约 900MB RAM 的 DMA 传输。因此,您最终可能会遇到 OOM 错误的奇怪情况,并且有大量可用的 RAM。

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

  • 哦,它以*千字节*为单位。具体我记不清是 104857600 还是 10485760,但如果我做了前者,我尝试保留 100GB,这台笔记本电脑 * 没有 * 安装;) 有时间我会尝试在 VM 中摆弄这个。 (3认同)
  • **重要警告**。`echo 104857600 > /proc/sys/vm/min_free_kbytes` **导致我的系统出现内核恐慌,可重复**。在此过程中,屏幕上飞出了相当多的文本,我没有希望阅读,但最后一条消息涉及我的 Wi-Fi 加密狗,因此这种故障可能是我的系统特有的。话虽这么说,但要小心戳。 (2认同)