问题:
CPU 风扇随机旋转。
为什么这是一个问题?
Linux 笔记本电脑放在我的房间里。我没用过。风扇不定期旋转(可能占用大量 CPU)。有时几秒钟。有时几分钟。然后又安静下来。一分钟或几分钟后,风扇再次发出噪音。噪音非常烦人。如果我晚上忘记打开笔记本电脑,它就会吵醒我。
我在问什么?
请告诉我如何追踪使用 CPU 和旋转风扇的事物。
有没有一个工具可以记录及时使用占用大量 CPU?理想情况下什么时候风扇在转吗?我想让该工具运行一段时间,然后查看收集的数据并找出根本原因(或多个)。
我已经知道什么?
我知道像top
或 这样htop
的 Linux 进程工具。如果我盯着它们看,我可以猜测可能是什么原因,但很难猜测,也可能猜错。当 Chrome 浏览器可能出问题时,我需要转到Chrome Task Manager
(树点菜单->更多工具->任务管理器),同样的问题。我需要盯着看很长时间,猜测可能是什么问题。
例如,如果该进程确实是 Chrome,并且有一个愚蠢的选项卡无论出于什么原因都需要使用我的所有 CPU,我只需确保在不需要时关闭它即可。或者我可以停止使用该网站,但我需要找出它是哪个 webapp(chrome 选项卡)。如果它不是 chrome,而是另一个 linux 进程,我就会知道它是否合法使用或者我是否可以关闭它。或者降低优先级或以其他方式说服进程不要在随机时间使用所有资源。
答案1
我将使用pidstat
fromsysstat
包来避免脚本和解析top
你可以使用 来定位一个特定的进程-C
,也可以使用 来监控特定进程的子进程-T CHILD
假设你想知道睡觉时会发生什么。你可以让它在你睡觉时运行约 8 小时
pidstat 75 384 --human > usagelog
此命令将每 75 秒运行 384 次,即 28800 秒,相当于 8 小时。如果发生在更短的时间内,您可以计算 75 的 1/3,然后将 384 乘以 3,这样每 25 秒就会生成一份报告。
这至少可以让您在夜间清楚地了解哪些后台进程会导致 CPU 峰值。pidstat
还会在完成命令后为您提供一个不错的平均值:
Average: UID PID %usr %system %guest %wait %CPU CPU Command
Average: 1000 1345 0.00 0.02 0.00 0.00 0.02 - wslbridge2-back
Average: 1000 6266 0.02 0.08 0.00 0.00 0.10 - pidstat
Average: 1000 6269 0.08 0.04 0.00 0.00 0.12 - zsh
Average: 1000 6275 0.04 0.06 0.00 0.02 0.10 - wslbridge2-back
Average: 1000 6278 0.18 0.08 0.00 0.00 0.26 - zsh
Average: 1000 6305 0.64 0.26 0.00 0.02 0.90 - vim
Average: 1000 6310 1.54 0.54 0.00 0.02 2.08 - node
如你所见,当我在 shell 中只运行 vim 时,我的主要 CPU 消耗者是来自coc.nvim
答案2
风扇转速和温度
使用命令sensors
,sudo apt install lm-sensors
[1],您可以检查各个设备(主板、CPU整体、单核、显卡等)的温度。
通过附加的图形程序psensor
(sudo apt install psensor
)以及等效程序,您将获得一个带有所需温度图的 GUI。
在风扇开始旋转之前,只要发现温度升高太多就足够了。在许多情况下传感器还可以为您提供风扇转速。
脚本
您已经知道该top
命令。您man top
可以查看各种选项的说明,这些选项允许您按自己喜欢的方式对输出进行排序,在本例中,您可以查看 CPU 使用率。
如果您添加sleep
、、sort
(grep
可能head
、tail
和awk
)命令,那么您几乎就拥有了构建脚本和找到在温度(或风扇速度)升高时有极端要求的程序所需的所有工具。
一些硬件和软件原因
软件。夜间或没有明显原因的计算机活动突然增加可能是由某些更新或某些时间(或在某些情况下在负载较低时)的某些计划任务引起的:系统更新、重新索引数据库(例如文件数据库)(如果活动则及其内容)...
检查计划任务和阿纳克隆預定的行動。
特定于浏览器。对于已加载的 chrome/firefox/chromium 页面,如果可能正在运行损坏或无响应的脚本,您可以尝试重新加载页面。
在另一个答案中 [2] 中,有几个技巧/插件可以帮助限制浏览器对系统请求的影响。
硬件还有一些与软件无关的原因会导致温度升高和计算机风扇启动。例如,如果通风口被堵塞由于长时间积累的灰尘,或者枕头、毯子或其他织物,或者只是计算机没有升高到足以循环风扇抽出的空气。
再一次:风扇可能最终使计算机变得更热,从而暂停处理器(dmesg
以控制它),累积稍后在处理器再次打开时一起运行的进程,导致请求高峰,从而再次使处理器升温,然后重新启动风扇......
关于风扇速度调节的补充说明
一般来说,计算机风扇启动的温度可以在操作系统级别进行控制[3,4] 甚至直接从主板上。
好奇地检查主板的设置:您可能会发现阈值温度,超过该温度,风扇就会以不同的速度开始旋转。通常还有操作模式:从安静的不需要时关闭风扇,表演几乎总是处于开启状态。这取决于主板。