在新启动的系统上,free
报告有关1.5G已用RAM(总共8G RAM,带有lightdm和血浆桌面的Ubuntu 12.04,启动了一个konsole窗口)。运行我使用的应用程序,它仍然消耗不超过2G。但是,将系统运行了两天后,越来越多的可用RAM消失了-不会出现在已用应用程序列表中:虽然smem --pie=name
报告的已用率不到20%(可用率是80%),不一样 free -m
例如第7天的报告:
total used free shared buffers cached
Mem: 7459 7013 446 0 178 997
-/+ buffers/cache: 5836 1623
Swap: 9536 296 9240
(因此您可以看到,它不是缓冲区或缓存)。如今,这种情况终于以系统完全崩溃而告终:Windows管理器消失了,应用程序“悬空了”(无框架),并且弹出窗口通知我“打开的文件太多”。Syslog报告:
kernel: [856738.020829] VFS: file-max limit 752838 reached
因此,我关闭了能够关闭的那些应用程序,并使用Ctrl-Alt-backspace取消了X。之后,X尝试使用failsafeX重新启动,但由于无法检测到其配置而无法执行此操作。因此,我使用Ctrl-Alt-F2切换到控制台,捕获了我可能想到的所有信息(vmstat,free,smem proc/meminfo
,lsof,ps aux
),最后重新启动。X再次提出了failsafeX;这次,我告诉它“从备份的配置中恢复”,然后切换到控制台并成功用于startx
启动图形环境。
我不知道是什么原因导致了这个问题-尽管它必须与X本身或运行在X上的某些用户进程有关-在杀死X之后,free -m
输出看起来像这样:
total used free shared buffers cached
Mem: 7459 2677 4781 0 62 419
-/+ buffers/cache: 2195 5263
Swap: 9536 59 9477
(〜3.5GB已释放)-与新启动后的输出进行比较:
total used free shared buffers cached
Mem: 7459 1483 5975 0 63 730
-/+ buffers/cache: 689 6769
Swap: 9536 0 9536
提供了另外两个有用的输出memstat -u
。坠毁前不久:
User Count Swap USS PSS RSS
mail 1 0 200 207 616
whoopsie 1 764 740 817 2300
colord 1 3200 836 894 2156
root 62 70404 352996 382260 569920
izzy 80 177508 1465416 1519266 1851840
X被杀死后:
User Count Swap USS PSS RSS
mail 1 0 184 188 356
izzy 1 1400 708 739 1080
whoopsie 1 848 668 826 1772
colord 1 3204 804 888 1728
root 62 54876 131708 149950 267860
重新启动后,返回X:
User Count Swap USS PSS RSS
mail 1 0 212 217 628
whoopsie 1 0 1536 1880 5096
colord 1 0 3740 4217 7936
root 54 0 148668 180911 345132
izzy 47 0 370928 437562 915056
编辑:刚刚从我的监视系统添加了两个图形。有趣的是:每当内存消耗出现“跳跃”时,CPU也会达到峰值。刚刚发现了这一点-它使我想起了另一个指向X本身的指示器:通常,当返回我的机器并解锁屏幕时,我发现我的CPU上工作繁重。经检查top
,结果始终是/usr/bin/X :0 -auth /var/run/lightdm/root/:0 -nolisten tcp vt7 -novtswitch -background none
。
因此,经过长时间的解释,最后我的问题是:
- 可能是什么原因?
- 如何更好地识别涉及的流程/应用程序?
- 可以采取什么步骤来避免这种行为-短短整整X天重新启动计算机?
我在旧计算机上运行8.04(Hardy)大约5年了,从未经历过类似的事情(在重启内核更新之前,通常要运行100天以上)。现在这是一台全新的计算机,全新安装了12.04。如果有问题,请遵循一些规格:
带有Radeon(tm)HD Graphics的AMD A4-3400 APU,使用开源ati / radeon驱动程序(因此未安装fglrx),8GB RAM,WDC WD1002FAEX-0硬盘(1TB),华硕F1A75-V Evo主板。具有KDE4 / Plasma的Ubuntu 12.04 64位。通常,应用程序或多或少会永久打开,包括Evolution,Firefox,konsole(其中运行Midnight Commander,大约有四个选项卡)和LibreOffice-偶尔还有Calibre,Gimp和Moneyplex(我已经使用了近20年的银行软件,在对Hardy而言效果还不错的版本中)。
编辑:
今天,我发现了一个“邪恶的家伙”:KDE4s等离子桌面。当我执行时,使用的记忆体再次达到5GB killall plasma-desktop && plasma-desktop
。这释放了1.3GB RAM!ps
说:
RSS SIZE VSZ
plasma usage before restart 120988 526472 1300816
plasma usage after restart 92352 495972 1263632
那么那些1.3GB在哪里呢?如果相加,则这些值之间的差异为96MB,而不是1.3GB。
而且这只能是一部分,因为仍在使用3.7GB(应小于2GB)。我在过去6天中使用多种工具进行了监视:已用内存(不是在讨论缓存和缓冲区)缓慢但稳定地增加。即使我不在办公桌前也不做任何事情...
至于监视打开文件的过程,我目前使用以下1-liner(我喜欢shell,尤其是bash)来获得前5名:
echo "$(for pid in $(ls -a /proc|egrep '^([0-9])*$'|sort -n 2>/dev/null); do \
if [ -e /proc/$pid/fd ]; then FHC=$(ls -l /proc/$pid/fd|wc -l); \
if [ $FHC -gt 0 ]; then PNAME="$(cat /proc/$pid/comm)"; \
echo "$FHC files opened by $pid ($PNAME)"; fi; fi; done)"|sort -r -n|head -n5
在此处以4行命令以提高可读性。那里没什么了-除了Skype不喜欢断开互联网连接。每次断开连接都会略微增加其打开的文件,但没有太大变化。另一方面,血浆也可能是造成这种情况的原因:
看到文件句柄的末尾了吗?那是等离子重启。
free
。我实际上已经考虑过切换到另一个DE。如果KDE3.5可用,那我还没有选择Plasma。这可能只是暂时的,看是否涉及血浆。
sudo bash -c 'sync; echo 3 > /proc/sys/vm/drop_caches'
清除多余的公羊?您可以使用lsof