我正在尝试追踪一台旧笔记本电脑(10 年,4GB 内存,2 核,Kubuntu 18.04)上的重复挂起现象。现在,在适度使用的情况下(在 Firefox 中打开的标签少于 10 个,一堆其他程序,没有什么大问题),这种情况每天都会发生几次。
有时我会遇到 OOM,但在大多数情况下,用户界面会停止运行一到三十分钟,然后一切恢复正常。这是最近发生的(过去 2 个月)。在大多数情况下,dmesg 或 syslog 中没有任何内容。
我一直试图诊断它,但没有成功,但我注意到 htop 的一件事是,平均负载跳转到 30 或更高,而累积 CPU 使用率保持在 10% 以下,内存使用率(Mem+Swap)保持在 4Gb 以下。
第一个问题:平均负载与 CPU 使用率怎么会如此不同?第二个问题:我还能做什么?我可以运行一些压力程序并希望获得有意义的信息吗?
[编辑] 仍在等待下一次崩溃,但我注意到 swapiness 为 0。默认情况下它不应该是 60 吗?
答案1
问题 1:平均负载和 CPU 使用率怎么会有这么大的差别?
在 Linux 和 Unix 中,平均负载都包括待处理进程。与 Unix 不同,在 Linux 中,平均负载包括 I/O 等待(例如等待磁盘读取或写入)和待处理进程。
让我们使用磁盘(长寻道时间)来演示高平均负载和低 CPU 使用率,通过让多个任务读取大文件中的随机扇区。系统因 I/O 等待而陷入困境。
系统几乎空闲:
doug@s15:~$ sudo turbostat --Summary --quiet --show Busy%,Bzy_MHz,PkgTmp,PkgWatt,GFXWatt,IRQ --interval 60
Busy% Bzy_MHz IRQ PkgTmp PkgWatt GFXWatt
0.38 1806 27911 30 4.12 0.12
0.37 1858 27147 29 4.14 0.12
但平均负载非常高:
doug@s15:~$ uptime
22:47:01 up 1 day, 13:36, 5 users, load average: 49.00, 47.85, 34.30
问题2:我还能做什么?
您的症状听起来像是大量交换。您声称内存使用率很低,但我猜这并不总是正确的,有时您会进行大量交换,甚至有一次您完全耗尽了内存。
答案2
来自评论...
正如我所怀疑的,存在交换问题。在这种情况下,它根本没有交换。
对于 4G RAM,将 vm.swappiness 设置为 60(之前为 0 -这是一个完全错误的设置),从此以后就没再发生过一次挂起事件。