如何解决Linux中CPU使用率高的问题?
找出罪魁祸首
运行异常的应用程序连速度最快的处理器都“俯首称臣”。可以使用System Monitor应用程序或终端中的top,找出有问题的那个应用程序。
打开终端,键入top,然后按回车键。
图1
默认情况下,所有进程都按照CPU使用率来排序,最耗CPU的进程位于顶部。如果某个应用程序始终位于前五名,CPU使用率明显高于其余应用程序,那它就是罪魁祸首。
终止或杀死应用程序
top包括支持renice和kill的功能,那样您可以使用这些工具来改变任何进程的优先级或强制停止它。
应用程序的nice优先级是指与其他运行中的进程相比,允许它使用的CPU资源数量。nice接受的值在+19到-20之间。数值越高,优先级越低。
在top中,按r并输入有问题的那个应用程序的PID。试着改成“+5”值,如果不管用,重试“+10”、“+15”,最后是最低优先级“+19”。
图2
如果该应用程序没有响应,应立即终止它。在top中按k,输入PID,然后按回车键,该应用程序将消失。
更新一切
如果您每次运行应用程序时问题依然存在,更新该应用程序可能会解决问题。
为此,在终端中输入:
sudo apt update && sudo apt -y upgrade
图3
之后,试着再运行有问题的那个应用程序。
删除并重新安装应用程序
如果问题没有解决,有可能是由于程序配置中的错误参数。将其重置为原始状态可能会有所帮助。
先备份配置,以防这可能不是问题的根源,到时候便于恢复。然后,清除有问题的那个应用程序:
sudo apt purge APP_NAME
图4
重新安装应用程序:
sudo apt update sudo apt install APP_NAME
图5
这会将应用程序重置为原始状态。
回到以前的版本
如果升级应用程序解决不了问题,可以改而回到以前的版本。可以试着降级并使用旧版本,至少直到开发人员修复了应用程序中的错误。
要降级应用程序,先通过运行终端并执行以下命令来查看可用版本:
sudo apt policy APP_NAME
目前安装的版本旁边会有三个星号。注意其他可用版本。
降级之前,建议您清除现有版本。这将清除任何与配置有关的问题。
安装旧版本,方法如下:
sudo apt install APP_NAME=VERSION
图6
使用替代应用程序
Linux的优点是,有许多应用程序可执行同样的操作。因此,如果一个应用程序导致CPU使用率过高,您可以换成替代应用程序。
修复导致CPU使用率过高的核心应用程序
如果大量耗用CPU资源的是核心应用程序(比如systemd或Xorg),会发生什么?
若是systemd,试着禁用电脑上非必需的功能和辅助设备,比如游戏手柄和打印机。
如果设备是游戏手柄、鼠标或键盘,您又在运行Ubuntu或兼容的发行版,请在终端中键入xinput,查看所有已连接的设备。想禁用其中一个设备,请使用:
xinput --disable DEVICE_ID
图7
想重新启用设备,请在上述命令中将disable换成enable。
至于其他设备,解决办法稍微复杂一点。首先,您得在终端中输入lsmod并按回车键,查看Linux内核作为模块加载的所有其他驱动程序。找到有问题的设备对应的驱动程序,并记下名称。然后,输入以下内容:
sudo nano /etc/modprobe.d/blacklist.conf
您刚打开的文档是启动过程中不应加载的模块的黑名单。它可能已经填充了一些条目。移至文件末尾,遵循同样的语法,将模块添加到该列表中。您的条目应是这样:
blacklist MODULE_NAME
保存文件,重新启动,但愿现在一切正常。
若是Xorg,试着禁用Window Manager的合成器。虽然合成器将与CPU有关的任务卸载到GPU,但并非总是如此。有时,通过启用合成支持,您还可以实现许多效果。
有时,GPU的驱动程序也会导致CPU使用率过高。Xorg与英伟达或AMD驱动程序的特定版本并不是很兼容。解决办法是升级或降级到不同的版本。另外,可以试用GPU驱动程序的开源版本。不过,那些版本没有同样的功能集,可能缺少一些功能。
换掉内核
Linux内核很少是CPU使用率过高的原因。不过,如果您到了这一步却仍未找到解决办法,不妨试一试。
如官网上所述,要在Ubuntu中安装流行的Liquorix内核,访问终端并输入:
sudo add-apt-repository ppa:damentz/liquorix && sudo apt-get update
图8
这会将存储库添加到Ubuntu的源代码中。然后,要将内核本身加载上来,请使用:
sudo apt-get install linux-image-liquorix-amd64 linux-headers-liquorix-amd64
重新启动以启用新内核,但愿CPU使用率会回到正常水平。
但愿其中一种解决办法对您有用。如果没用,您也可以试着用taskset为应用程序手动分配CPU核心
(https://www.maketecheasier.com/assign-cpu-cores-with-taskset-linux/)。最后,也许是时候从头开始重新安装操作系统或改用不同的发行版本了