Swap、Swapiness 和 Standby:唤醒时开始交换

mdo*_*mdo 7 suspend swap

我在 Lenovo 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 -- 但问题已经存在几个月了,很多软件(包括内核)更新

我经常将我的机器置于 suspend-to-ram (S3) 状态,当机器恢复时,Ubuntu 开始交换进程。我能够观察到使用的交换空间在盒子返回后立即开始增长。请参见下面的 munin 图表,差距(显然)显示了 STR 中的时间范围。

每天的内存使用量

按天换入/换出

不用说,交换时盒子变得不可用,负载超过 10。

到目前为止我所做的:

  • 将 swappiness 从默认值 (60) 降低到 10(通过 /etc/sysctl.conf: vm.swappiness=10)——这大大改善了情况,但有时问题又回来了,我还没有找到触发器(比如内存使用) ) 暂时
  • 将swappiness降低到5——也许这又带来了改进

在去 STR 之前,盒子运行稳定,几个小时没有(交换)问题。今天当问题再次出现时,我使用了这个脚本(-> /sf/ask/33596741/)来查找哪些进程拥有最常用的交换空间。交换狂欢后的结果是这样的(所有使用超过10M的PID):

使用的总交换:2121344 kB
========================================
kB pid 名称
========================================
439520 17491 爪哇
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 打结4

顶部的 java 实例是 IntelliJ。IntelliJ、Firefox 和 Chrome 也都在盒子被放入 STR 之前使用过。

所以我的问题是:我能以某种方式阻止这些换出吗?它们为什么会发生?它可能与一些空闲进程的错误识别有关吗?

我不是在寻找像这样的决议:

  • 关闭交换
  • 购买更多内存

提前致谢!

编辑:内存使用的进一步进展,同一天,一直广泛使用相同的应用程序:

在此处输入图片说明

EDIT2(已解决):我在 11 月 20 日晚上禁用了我的独立 ATI 卡并重新启动。交换使用率随后下降(参见 Munin 图中缺失的红色区域)并且此后没有重新出现,而该框执行了几次挂起/完全循环。

在此处输入图片说明

根本原因似乎是 AMD 的 ATI fglrx 驱动程序(催化剂)用于 radeon(在我的情况下为 Radeon Mobility HD 3650)。

小智 2

我怀疑你的 Lenovo 使用的是 ATI 显卡。虽然我不确定是否是显卡导致了您的问题,但按列表顺序阅读以下内容可能会有所帮助。

https://bugs.launchpad.net/ubuntu/+source/linux/+bug/391628

安装 fglrx 驱动程序后 Unity 无法启动

我希望这对您有所帮助。风险由您自行承担。