![CPU 过热并冻结运行 Chrome](https://linux22.com/image/1176725/CPU%20%E8%BF%87%E7%83%AD%E5%B9%B6%E5%86%BB%E7%BB%93%E8%BF%90%E8%A1%8C%20Chrome%20.png)
我在配备 8GB RAM 和 1TB SSD 的 Thinkpad Yoga 460 笔记本电脑上运行 Ubuntu 20.04 和 Chrome 85.0.4183.121(官方版本)(64 位)。
如果我在 Chrome 中打开超过 10 个标签,我的系统通常会变得很慢或完全冻结。风扇开始疯狂运转。当我真正进入 htop 时,CPU 使用率似乎正常(不是 100%),但 dmesg 显示 CPU 过热
[371723.356218] mce: CPU1: Core temperature above threshold, cpu clock throttled (total events = 35463)
[371723.356219] mce: CPU3: Core temperature above threshold, cpu clock throttled (total events = 35463)
[371723.356221] mce: CPU0: Package temperature above threshold, cpu clock throttled (total events = 54525)
[371723.356222] mce: CPU2: Package temperature above threshold, cpu clock throttled (total events = 54525)
[371723.356223] mce: CPU3: Package temperature above threshold, cpu clock throttled (total events = 54525)
[371723.356225] mce: CPU1: Package temperature above threshold, cpu clock throttled (total events = 54525)
[371723.357220] mce: CPU3: Core temperature/speed normal
[371723.357221] mce: CPU1: Core temperature/speed normal
[371723.357222] mce: CPU2: Package temperature/speed normal
[371723.357223] mce: CPU0: Package temperature/speed normal
[371723.357224] mce: CPU1: Package temperature/speed normal
[371723.357225] mce: CPU3: Package temperature/speed normal
但并非总是如此。有时我也遇到这种情况:通常如果我按住电源按钮想关机(由于冻结时间过长),但在它真正关机之前松开,因为它会再次开始响应。
[378478.212711] oom-kill:constraint=CONSTRAINT_NONE,nodemask=(null),cpuset=/,mems_allowed=0,global_oom,task_memcg=/user.slice/user-1000.slice/[email protected],task=chrome,pid=129195,uid=1000
[378478.212786] Out of memory: Killed process 129195 (chrome) total-vm:5194428kB, anon-rss:233868kB, file-rss:0kB, shmem-rss:326524kB, UID:1000 pgtables:2684kB oom_score_adj:300
[378478.230448] oom_reaper: reaped process 129195 (chrome), now anon-rss:0kB, file-rss:0kB, shmem-rss:325512kB
我尝试切换到 Firefox,但它一直崩溃,并且 dmesg 中显示内存不足错误。
我有一台 Mac Powerbook,配置基本相同,在 Chrome 中打开 10-20 个标签页,没有任何问题。请注意,在此之前,我还有另一台 Thinkpad,使用 Chrome 时也经常卡死。
我将 BIOS 升级到最新版本。我将专有的 NVIDIA 驱动程序换成了开源驱动程序,因为我认为这可能是问题所在。我还关闭了 Chrome 中的硬件加速。
我不知道还能做什么来解决这个问题。
更新 - 问题已解决:我更改了系统 BIOS 中的某些设置,似乎已解决了此问题。
我禁用了英特尔超线程,禁用了 Speedstep,并将自适应热从最大性能更改为平衡。
我不确定这些中的哪一个可能已解决问题。有机会时,我会回去逐一设置它们以查看。但现在一切似乎都正常。我的风扇仍然会不时启动,但没有通常的冻结。现在已经几天没有出现任何问题,所以看起来无论发生什么,都通过 BIOS 调整得到了解决。
答案1
我能找到的唯一可靠的解决方案是:
sudo apt install earlyoom
早期o乌特oF米emory”-killer 将终止任何导致计算机磁盘抖动并导致计算机冻结的进程。我认为大多数 Chrome 开发人员拥有的 RAM 比大多数用户多得多,因此他们几乎不会遇到此类问题。
还有另一种更手动的方式来处理它:您可以按 手动AltSysRQF调用 OOM 杀手。但要使它起作用,您需要启用它:
$ sudo sed -i s@#[email protected]@g /etc/sysctl.conf
$ sudo sysctl -w kernel.sysrq=1
SysRQ在许多键盘上标有Print Screen 或PrtScr,而在其他一些键盘上,您必须按下Fn才能访问它,从而形成完整的按键组合AltFnPrtScrF。在某些键盘上,只有右手Alt可以使用。
这些方法本质上是迫使浏览器或有问题的应用程序崩溃,并释放其内存。以前有一些浏览器插件可以暂停后台进程,但在撰写本文时,它们造成的问题比解决的问题还多,所以我不会链接它们 - 如今,大多数 Chrome 和 Firefox 只是将崩溃的标签暂停在后台,直到您单击它们,因此崩溃的影响很小 - 但请检查您的插件,因为除了占用大量内存的网络应用程序外,它们是最有可能的罪魁祸首。