我不希望我的计算机将数据交换到磁盘。我没有交换分区:
美元免费 缓存的已用空闲共享缓冲区总数 电话:3841912 3670012 171900 0 74980 699652 -/+ 缓冲区/缓存:2895380 946532 交换:0 0 0
回到当天(也许最近是内核 2.4?)这曾经有效。内存饥饿的进程将被 oom 杀手杀死,我会重新启动它们。但是现在(Linux 2.6.38-8-generic #42-Ubuntu SMP Mon Apr 11 03:31:24 UTC 2011 x86_64)google-chrome(13.0.782.24 beta)定期将我的机器发送到交换的死亡螺旋中。或者至少感觉像是交换的东西:X 窗口需要永远更新,磁盘驱动器嗡嗡作响,gnome 面板内存图表达到顶峰,我在系统日志中看到以下消息:
rtkit-daemon[1771]:金丝雀线程显然正在挨饿。采取行动。 rtkit-daemon[1771]:降级已知的实时线程。 ...
但是,根据 syslog,内核并没有运行 oom 杀手。为了更好地衡量,我将swappiness设置为0:
$ cat /proc/sys/vm/swappiness 0
我的解决方法是在这种情况开始发生时使用 ctrl-alt-sysrq-f。在这种情况下,有人有将 Linux 配置为自行运行 oom_kill 的秘诀吗?
OOM 不一定会杀死您认为会的进程。在这里阅读:http : //lwn.net/Articles/317814/
我怀疑正在发生的事情是因为 chrome 对每个页面使用不同的进程,所以混淆了 OOM-killer 的启发式和其他进程而不是父 chrome 进程被杀死。
根据此,在OOM杀手喜欢杀人niced过程。所以尝试将 chrome 设置为大于 0.. 可能使它更像是一个目标:-)
我得出的结论是,现代Linux 不喜欢在没有虚拟内存的情况下运行。也许在硬盘驱动器速度较慢/VM算法较旧等的时代摆脱交换是有意义的。或者也许你可以跳过一些障碍来配置oom杀手......
但过去几个月我一直在使用交换文件运行,我对机器的低内存行为感到非常满意。它在极限下会减慢一点,但很容易干预并杀死消耗内存的进程以使事情回到正轨。
归档时间: |
|
查看次数: |
3076 次 |
最近记录: |