我在一台较旧的笔记本电脑上运行 ubuntu 18.04,它是一台 hp dv7 6180sl,配有升级的内存(16gb)和 SSD。它虽然旧了点,但速度仍然足够快,可以满足我的工作需要。
从几个 ubuntu 版本开始(每次发布时我都会重新安装,所以我不是从旧版本开始的),看起来 CPU 从未真正空闲过,因此风扇一直在工作。今天我决定找出是什么在使用我的 CPU。
我在这里和谷歌上读了很多答案,但没有一个能真正解决我的问题。Top 说:
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
5501 tox 20 0 3911436 324668 68984 S 12,5 4,0 30:04.86 gnome-shell
获取 gnome-shell 的 PID 后,我尝试进行 strace 以查看底层发生的情况,我发现有一个recvmsg
系统调用产生大量错误,耗费了近 30% 的时间(这几乎是一分钟之后):
strace: Process 5501 attached
% time seconds usecs/call calls errors syscall
------ ----------- ----------- --------- --------- ----------------
29.71 0.100941 2 46612 39214 recvmsg
24.81 0.084290 5 17842 poll
22.21 0.075445 3 21796 ioctl
8.92 0.030304 4 7269 writev
3.72 0.012652 8 1583 53 futex
3.17 0.010771 2 5180 getpid
1.58 0.005380 1 3874 mprotect
1.58 0.005357 3 2003 write
1.46 0.004969 3 1958 read
0.51 0.001727 8 215 2 openat
0.48 0.001634 3 501 close
0.45 0.001533 5 288 timerfd_create
0.32 0.001098 4 288 timerfd_settime
0.32 0.001072 6 183 mmap
0.26 0.000887 7 132 114 stat
0.25 0.000838 2 426 fstat
0.11 0.000370 2 213 fcntl
0.08 0.000267 10 26 munmap
0.06 0.000191 1 146 getrusage
0.00 0.000001 0 4 1 recvfrom
0.00 0.000001 1 2 uname
0.00 0.000001 1 1 restart_syscall
------ ----------- ----------- --------- --------- ----------------
100.00 0.339729 110542 39384 total
我有必要担心这个吗?
答案1
自从安装 18.04 以来,我一直遇到类似的持续高 CPU 负载,原因不明。我认为它只是掩盖了 Firefox 视频渲染等底层的东西,但即使关闭所有程序,甚至不移动鼠标,它也不会真正降到接近零的水平。
我尝试了相同的 strace 并得到了类似的结果:
% time seconds usecs/call calls errors syscall
------ ----------- ----------- --------- --------- ----------------
39.61 0.240174 3 87585 76642 recvmsg
25.36 0.153778 6 27384 poll
9.07 0.054990 3 17502 ioctl
8.98 0.054434 3 18079 write
7.98 0.048402 5 9702 writev
3.29 0.019926 3 6640 read
2.20 0.013369 1 8942 getpid
1.32 0.008014 6 1352 59 futex
0.91 0.005530 2 2634 mprotect
0.23 0.001413 20 72 mmap
0.21 0.001299 4 353 close
0.21 0.001272 5 240 timerfd_create
0.17 0.001043 10 101 2 openat
0.17 0.001010 4 240 timerfd_settime
0.09 0.000518 1 420 360 stat
0.07 0.000432 2 198 fstat
0.06 0.000374 9 41 munmap
0.03 0.000192 2 124 getrusage
0.03 0.000184 2 99 fcntl
0.00 0.000006 2 4 recvfrom
0.00 0.000004 1 7 sendmsg
0.00 0.000004 1 7 ftruncate
0.00 0.000004 1 7 memfd_create
0.00 0.000003 2 2 uname
0.00 0.000001 0 7 lseek
0.00 0.000000 0 1 restart_syscall
------ ----------- ----------- --------- --------- ----------------
100.00 0.606376 181743 77063 total
这很糟糕,我所有程序都会每隔 1 秒就会出现一次卡顿。这种情况如此频繁,我已经习惯了弥补它。视频播放卡顿、游戏卡顿、火狐浏览器卡顿,这很烦人。不知道从哪里开始修复它,虽然关闭 gnome-shell 并重新启动它至少可以工作一段时间——仍然有错误,但响应更快。
左侧边栏也经常出现图标重叠等问题,我怀疑 gnome-shell 出现了一些累积错误,并且在某些时候它花费了大量 CPU 时间来尝试解决某些配置或极端情况之间严重交互的矛盾。我想现在我只希望 18.10 能有所改善。