如果你在Deepin Linux、Debian、Ubuntu系统中遇到kworker进程占用CPU达到100%,可以用以下解决方法解决问题,本文主要内容为问题起因、microcode介绍、解决方法及总结警告。
1、问题起因
有些使用Deepin Linux系统的用户使用的是Deepin提供的intel-microcode补丁,有时在更新重新启动进入笔记本后CPU达到了100%,其中kworker进程占用最高,甚至达到95%,这个时候请不要升级BIOS到最新,而是采用下面的方法解决。
2、什么是microcode
在进行解决之前我们先了解一下什么是microcode?简单说microcode就是处理器厂商发布的微码,以增强系统稳定性和解决安全问题。微码可以通过BIOS更新,Linux内核也支持启动时应用新的微码。没有这些更新,可能会遇到一些很难查的的死机或崩溃问题。建议所有Intel用户使用新的微码。Intel Haswell和Broadwell处理器家族的用户请务必使用最新的微码。这样做有一个好处是我们不需要去更新BIOS固件本身。
对于Arch Linux发行版来说,AMD处理器微指令更新放置在linux-firmware中,而它作为基本系统的一部分安装,不需要额外动作。但对于Deepin Linux系统来说因为其基于Debian sid发行,所以不管你是AMD还是Intel处理器,都需要安装microcode进行微码更新,只是对应的名称不同而已:AMD:amd64-microcode,Intel:intel-microcode。
3、解决方法
从Debian镜像源下载最新版本(最新版本截止时间为9月4日,如果以后你要安装intel-microcode请到下面附的地址去下载最新版本)。以下是手动安装的命令:
wget https://mirrors.tuna./debian/pool/non-free/i/intel-microcode/intel-microcode_3.0807a.1~bpo9+1_amd64.deb
apt-get install iucode-tool
dpkg -i intel-microcode_3.0807a.1~bpo9+1_amd64.deb
重启笔记本驱动已经为最新的3.0807a.1版本了。
附:最新版本下载地址。
当然我们还可以通过以下命令来检测是否存在其它微码更新包,如果显示为以下情况,说明已经是最新的,没有其它可用于更新的微码包了。
sudo dmesg | grep microcode
[2.596144] microcode: sig=0x906e9, pf=0x20, revision=0x84
[2.596388] microcode: Microcode Update Driver: v2.2.
到这里,kworker进程占用CPU 100%的问题就解决了。
4、总结
对于运行在 x86/amd64 架构的CPU上的Linux系统,Linux自带了工具去更新或者部署微码固件。但每个发行版本的命令会有一些差异,这里我们例举两个常用Linux发行版的更新命令。
Debian/Ubuntu Linux 用户输入:sudo apt install intel-microcode
CentOS/RHEL Linux 用户输入:sudo yum install microcode_ctl
对于流行的Linux发行版,这个包的名字也会有所不同:
microcode_ctl 和 linux-firmware:CentOS/RHEL微码更新包。
intel-microcode:Debian/Ubuntu和衍生发行版的适用于Intel CPU的微码更新包。
amd64-microcode:Debian/Ubuntu和衍生发行版的适用于AMD CPU的微码固件。
linux-firmware:适用于AMD CPU的Arch Linux发行版的微码固件(你不用做任何操作,它是默认安装的)。
intel-ucode:适用于Intel CPU的Arch Linux发行版微码固件。
microcode_ctl 、linux-firmware 和 ucode-intel:Suse/OpenSUSE Linux微码更新包。
5、警告
就像我们前面看到的情况一样,CPU占用100%,同样在更新微码后也有可能会导致引导问题,比如,服务器在引导时被挂起或者自动重置,所以对于由此引发的任何硬件故障,我不承担任何责任。故在固件更新之前,请充分评估操作风险。同时无特殊需求,请使用最新的版本就能避免此类问题的发生。
相关主题