我在 Ubuntu 11.10 和 Debian Wheezy 中都遇到了这个严重的性能问题:
如果一个进程使用了大量 RAM(比如 3900 MB 中的 3700 MB),系统很快就会变得无法使用,并且磁盘不断抖动。它到达窗口管理器不响应的地步,杀死违规进程需要几分钟。(实际上到达终端,发出 pkill,等待一段时间直到信号真正通过)
即使完全禁用交换分区,也会出现此问题。
使用 iotop 进行调查,看起来大部分磁盘活动都是磁盘读取,转到 google chrome 和 X 窗口渲染器等进程。然而,这只是有限的信息,因为 iotop 在系统处于全速模式时不再更新。
我的问题是:
1)是什么导致了大量磁盘读取?2)我怎样才能防止这使系统无法使用?
我正在尝试编写一个脚本来检查正在运行的进程的内存使用情况。为此,它需要读取 /proc/*/smaps 文件。
root 拥有的进程的权限设置为“-r--r--r--”,每个人都应该可读,对吗?
ls -l 的示例输出 [编辑:现在具有目录权限]
ls -l /proc/939/smaps
-r--r--r-- 1 root root 0 2012-07-11 12:11 /proc/939/smaps
ls -ld /proc/939/smaps
-r--r--r-- 1 root root 0 2012-07-11 12:11 /proc/939/smaps
Run Code Online (Sandbox Code Playgroud)
尝试阅读:
cat /proc/939/smaps
cat: /proc/939/smaps: Permission denied
Run Code Online (Sandbox Code Playgroud)
我在这里缺少什么明显的东西吗?
EDIT2:经过进一步调查,其他文件(例如 /proc//cmdline)是可读的,因此它可能只是 smaps 文件的特殊情况?