有时内核会占用 40-50% 的 CPU,导致其他程序出现延迟。发生这种情况时,输出iotop
如下所示:
Total DISK READ : 2.96 K/s | Total DISK WRITE : 1552.86 K/s
Actual DISK READ: 2.96 K/s | Actual DISK WRITE: 103.72 K/s
TID PRIO USER DISK READ DISK WRITE SWAPIN IO> COMMAND
17631 be/4 root 0.00 B/s 0.00 B/s 0.00 % 6.99 % [kworker/5:2]
15770 be/4 root 0.00 B/s 0.00 B/s 0.00 % 6.96 % [kworker/5:0]
21092 be/4 root 0.00 B/s 0.00 B/s 0.00 % 4.50 % [kworker/7:3]
23201 be/4 root 0.00 B/s 0.00 B/s 0.00 % 4.48 % [kworker/7:2]
19368 be/4 root 0.00 B/s 0.00 B/s 0.00 % 3.07 % [kworker/4:0]
20876 be/4 root 0.00 B/s 0.00 B/s 0.00 % 3.05 % [kworker/4:3]
14505 be/4 fabian 0.00 B/s 2.96 K/s 0.00 % 2.47 % cinnamon --replace
9172 be/4 root 0.00 B/s 0.00 B/s 0.00 % 1.77 % [kworker/1:1]
4149 be/4 root 0.00 B/s 0.00 B/s 0.00 % 1.76 % [kworker/1:3]
14752 be/4 root 0.00 B/s 0.00 B/s 0.00 % 1.25 % [kworker/2:2]
15418 be/4 root 0.00 B/s 0.00 B/s 0.00 % 1.24 % [kworker/2:0]
23131 be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.73 % [kworker/0:3]
22790 be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.73 % [kworker/0:2]
236 be/3 root 0.00 B/s 1229.84 K/s 0.00 % 0.13 % [jbd2/sda2-8]
1625 be/4 fabian 2.96 K/s 308.20 K/s 0.00 % 0.12 % firefox-esr [Cache2 I/O]
22086 be/4 fabian 0.00 B/s 0.00 B/s 0.00 % 0.01 % java -Xss1M -Djava.library.path=/home/f~ng --versionType release [Render thread]
(然后是一堆 0.00% 的东西)
这告诉我这个CPU使用率是由系统的大量“IO”引起的,这是相当模糊和不具体的。同样奇怪的是“总磁盘写入”比“实际磁盘写入”多得多。是否有类似“不是实际的磁盘写入,只是开玩笑”之类的内容?
但更重要的是:如何详细了解 CPU 使用率过高的原因?是什么促使这些kworker
人做这么多工作?
当然,我也尝试简单地查看任务管理器,它没有列出任何 kworkers,而top
,它确实列出了一些,但显示它们的 CPU 使用率非常低。 (我只得到提示,内核 CPU 使用率很高,因为CPU使用率显示小程序内核有专用的颜色。)
当时不使用交换,RAM、SSD 使用和上传+下载没什么了不起的。
我已经几乎排除了与 WLAN、LAN、蓝牙、第二个屏幕、显卡(大约使用了 12%)、后台运行的其他程序以及其他地方建议的其他一些内容的关系(我不知道)通过禁用它们来记住所有这些)。我也不使用任何奇特的设置,例如 RAID,它只是一台运行 Debian 9.11(Linux 内核 4.9.0-11-amd64)的笔记本电脑。
编辑/proc/sys/vm/drop_caches
根据这个答案让人感觉内核使用这么多 CPU 的时间现在更短了,但我不确定,它也没有告诉我原因。请告诉我这是否出于某种原因是一个可怕的想法,因为我真的不知道它到底是做什么的。
更新:显然,12% 繁忙的不是显卡,而是集成到 CPU 中的显卡芯片。我的显卡根本无法工作,在尝试让它工作时,我搞乱了系统。我以此为契机从 Debian 切换到 Manjaro,从 Cinnamon 切换到 Mate。现在显卡可以工作了,我不再遇到这个问题了,但我当然还是想知道如何更好地调试这样的问题。