我在联想 W500(Core2Duo T9400,4GB Ram)上运行 Ubuntu 12.04
当前内核:3.2.0-32-generic #51-Ubuntu SMP Wed Sep 26 21:33:09 UTC 2012 x86_64 x86_64 x86_64 GNU/Linux - 但问题已经存在几个月了,经过了不少软件(包括内核)更新
我经常将我的机器置于挂起到内存 (S3) 的状态,当机器恢复时,Ubuntu 开始交换进程。我能够观察到,在机器恢复后,使用的交换空间立即开始增长。参见下面的 munin 图表,间隙(显然)显示了 STR 中的时间范围。
不用说,交换时盒子变得无法使用,负载超过 10。
我目前所做的:
- 将 swappiness 从默认值 (60) 降低到 10 (通过 /etc/sysctl.conf: vm.swappiness=10) - 这大大改善了情况,但有时问题会再次出现,目前我还没有找到触发因素 (如内存使用情况)
- 将 swappiness 降低到 5 —— 也许这又带来了改进
在进入 STR 之前,该盒子运行稳定,几个小时没有(交换)问题。今天当问题再次出现时,我使用了这个脚本(->https://stackoverflow.com/questions/479953/how-to-find-out-which-processes-are-swapping-in-linux) 来查找哪些进程占用了最多的交换空间。交换空间占用过多之后的结果如下(所有 PID 使用量超过 10M):
使用的交换空间总量:2121344 kB ======================================== kB pid 名称 ======================================== 439520 17491 Java 208148 22719 火狐 136640 4337 /usr/bin/quodli 120852 5271 镀铬 81832 5264 镀铬 74284 17003 铬 65368 16960 铬 57088 3675 镀铬 56184 30923 镀铬 54412 11331 镀铬 54264 3878 镀铬 51508 18382 镀铬 50088 3163 时代精神 49772 15543 镀铬 41344 15355 康比兹 35040 1161 mysqld 32124 18374 镀铬 30940 11339 镀铬 30044 5752 镀铬 28780 4235 插件包含 24576 31246 同理心聊天 23840 17703 铬 22512 3207 ubuntuone-同步 21588 1937 ntop 18336 2021 星号 17200 3915 镀铬 13964 1935 Xorg 12036 10679 铬 11104 30782 同情 11056 2889 蟒蛇 10932 16565 knotify4
顶部的 java 实例是 IntelliJ。在将框放入 STR 之前,也使用了 IntelliJ、Firefox 和 Chrome。
所以我的问题是:我能以某种方式阻止这些交换吗?为什么会发生这种情况?这是否可能与某些空闲进程的错误识别有关?
我并不是在寻求如下的解决方案:
- 关闭交换
- 购买更多 RAM
提前致谢!
编辑:内存使用情况进一步发展,同一天,广泛使用相同的应用程序:
EDIT2(已解决):我在 11 月 20 日晚上禁用了我的独立 ATI 卡并重新启动。交换使用量随即下降(参见 Munin 图中缺失的红色区域),此后再也没有出现过,而此时该机箱进行了几次挂起/完全开启循环。
根本原因似乎是 AMD 的 ATI fglrx 驱动程序(Catalyst)(在我的情况下是 Radeon Mobility HD 3650)。
答案1
我怀疑您的联想使用的是 ATI 显卡。虽然我不确定是显卡导致了您的问题,但以下按列表顺序阅读可能很有用。
https://bugs.launchpad.net/ubuntu/+source/linux/+bug/391628
我希望这能对你有所帮助。风险自负。