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

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

我在联想 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

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

我希望这能对你有所帮助。风险自负。

相关内容