如何解决Linux中CPU使用率高的问题?

译文
系统 Linux
电脑死机了?还是开始听到电脑发出很响的CPU风扇噪音?Linux中CPU使用率过高的原因很多,但最常见的原因是运行异常的应用程序。本文介绍了如何在Linux中解决CPU使用率过高的问题。

【51CTO.com快译】电脑死机了?还是开始听到电脑发出很响的CPU风扇噪音?Linux中CPU使用率过高的原因很多,但最常见的原因是运行异常的应用程序。本文介绍了如何在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,然后按回车键,该应用程序将消失。

更新一切

如果您每次运行应用程序时问题依然存在,更新该应用程序可能会解决问题。

为此,在终端中输入:

  1. sudo apt update && sudo apt -y upgrade 

图3

之后,试着再运行有问题的那个应用程序。

删除并重新安装应用程序

如果问题没有解决,有可能是由于程序配置中的错误参数。将其重置为原始状态可能会有所帮助。

先备份配置,以防这可能不是问题的根源,到时候便于恢复。然后,清除有问题的那个应用程序:

  1. sudo apt purge APP_NAME 

图4

重新安装应用程序:

  1. sudo apt update 
  2. sudo apt install APP_NAME 

图5

这会将应用程序重置为原始状态。

回到以前的版本

如果升级应用程序解决不了问题,可以改而回到以前的版本。可以试着降级并使用旧版本,至少直到开发人员修复了应用程序中的错误。

要降级应用程序,先通过运行终端并执行以下命令来查看可用版本:

  1. sudo apt policy APP_NAME 

目前安装的版本旁边会有三个星号。注意其他可用版本。

降级之前,建议您清除现有版本。这将清除任何与配置有关的问题。

安装旧版本,方法如下:

  1. sudo apt install APP_NAME=VERSION 

图6

使用替代应用程序

Linux的优点是,有许多应用程序可执行同样的操作。因此,如果一个应用程序导致CPU使用率过高,您可以换成替代应用程序。

修复导致CPU使用率过高的核心应用程序

如果大量耗用CPU资源的是核心应用程序(比如systemd或Xorg),会发生什么?

若是systemd,试着禁用电脑上非必需的功能和辅助设备,比如游戏手柄和打印机。

如果设备是游戏手柄、鼠标或键盘,您又在运行Ubuntu或兼容的发行版,请在终端中键入xinput,查看所有已连接的设备。想禁用其中一个设备,请使用:

  1. xinput --disable DEVICE_ID 

图7

想重新启用设备,请在上述命令中将disable换成enable。

至于其他设备,解决办法稍微复杂一点。首先,您得在终端中输入lsmod并按回车键,查看Linux内核作为模块加载的所有其他驱动程序。找到有问题的设备对应的驱动程序,并记下名称。然后,输入以下内容:

  1. sudo nano /etc/modprobe.d/blacklist.conf 

您刚打开的文档是启动过程中不应加载的模块的黑名单。它可能已经填充了一些条目。移至文件末尾,遵循同样的语法,将模块添加到该列表中。您的条目应是这样:

  1. blacklist MODULE_NAME 

保存文件,重新启动,但愿现在一切正常。

若是Xorg,试着禁用Window Manager的合成器。虽然合成器将与CPU有关的任务卸载到GPU,但并非总是如此。有时,通过启用合成支持,您还可以实现许多效果。

有时,GPU的驱动程序也会导致CPU使用率过高。Xorg与英伟达或AMD驱动程序的特定版本并不是很兼容。解决办法是升级或降级到不同的版本。另外,可以试用GPU驱动程序的开源版本。不过,那些版本没有同样的功能集,可能缺少一些功能。

换掉内核

Linux内核很少是CPU使用率过高的原因。不过,如果您到了这一步却仍未找到解决办法,不妨试一试。

如官网上所述,要在Ubuntu中安装流行的Liquorix内核,访问终端并输入:

  1. sudo add-apt-repository ppa:damentz/liquorix && sudo apt-get update 

图8

这会将存储库添加到Ubuntu的源代码中。然后,要将内核本身加载上来,请使用:

  1. 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/)。最后,也许是时候从头开始重新安装操作系统或改用不同的发行版本了

(https://www.maketecheasier.com/best-linux-distros/)。

原文标题:How to Fix High CPU Usage in Linux,作者:Odysseas Kourafalos

【51CTO译稿,合作站点转载请注明原文译者和出处为51CTO.com】

责任编辑:赵宁宁 来源: 51CTO
相关推荐

2019-01-15 15:04:54

CPU电脑使用率

2012-07-03 09:57:11

闰秒Linux 服务器

2012-07-02 16:38:22

Linux服务器闰秒

2021-08-10 11:45:57

topCPULinux

2021-11-11 16:46:02

CPU使用率 .NET

2021-05-31 15:53:57

CPU Top命令

2019-09-24 14:52:35

CPU负载Linux

2022-07-23 21:31:24

KubernetesLinux开源

2009-11-16 17:03:20

Oracle优化CPU

2024-04-11 13:27:19

Linuxtop命令

2009-12-15 15:12:05

Linux限制进程cp

2023-03-06 08:41:32

CPU使用率排查

2011-03-23 14:42:47

CPU过度消耗

2019-07-31 07:26:16

Linux服务器CPU

2022-04-06 06:35:58

进程命令CPU

2017-05-03 11:10:14

Linux进程监控cpustat

2017-03-23 19:27:55

LinuxCPUCPU利用率

2009-12-22 09:23:59

Linux Sysst

2014-12-01 13:44:03

cgroupscpulimitlinux

2010-04-27 10:32:54

Oracle优化CPU
点赞
收藏

51CTO技术栈公众号