如何解決Linux中CPU使用率高的問題?
譯文【51CTO.com快譯】電腦死機(jī)了?還是開始聽到電腦發(fā)出很響的CPU風(fēng)扇噪音?Linux中CPU使用率過高的原因很多,但最常見的原因是運(yùn)行異常的應(yīng)用程序。本文介紹了如何在Linux中解決CPU使用率過高的問題。
找出罪魁禍?zhǔn)?/strong>
運(yùn)行異常的應(yīng)用程序連速度最快的處理器都“俯首稱臣”。可以使用System Monitor應(yīng)用程序或終端中的top,找出有問題的那個(gè)應(yīng)用程序。
打開終端,鍵入top,然后按回車鍵。
圖1
默認(rèn)情況下,所有進(jìn)程都按照CPU使用率來排序,最耗CPU的進(jìn)程位于頂部。如果某個(gè)應(yīng)用程序始終位于前五名,CPU使用率明顯高于其余應(yīng)用程序,那它就是罪魁禍?zhǔn)住?/p>
終止或殺死應(yīng)用程序
top包括支持renice和kill的功能,那樣您可以使用這些工具來改變?nèi)魏芜M(jìn)程的優(yōu)先級(jí)或強(qiáng)制停止它。
應(yīng)用程序的nice優(yōu)先級(jí)是指與其他運(yùn)行中的進(jìn)程相比,允許它使用的CPU資源數(shù)量。nice接受的值在+19到-20之間。數(shù)值越高,優(yōu)先級(jí)越低。
在top中,按r并輸入有問題的那個(gè)應(yīng)用程序的PID。試著改成“+5”值,如果不管用,重試“+10”、“+15”,最后是最低優(yōu)先級(jí)“+19”。
圖2
如果該應(yīng)用程序沒有響應(yīng),應(yīng)立即終止它。在top中按k,輸入PID,然后按回車鍵,該應(yīng)用程序?qū)⑾А?/p>
更新一切
如果您每次運(yùn)行應(yīng)用程序時(shí)問題依然存在,更新該應(yīng)用程序可能會(huì)解決問題。
為此,在終端中輸入:
- sudo apt update && sudo apt -y upgrade
圖3
之后,試著再運(yùn)行有問題的那個(gè)應(yīng)用程序。
刪除并重新安裝應(yīng)用程序
如果問題沒有解決,有可能是由于程序配置中的錯(cuò)誤參數(shù)。將其重置為原始狀態(tài)可能會(huì)有所幫助。
先備份配置,以防這可能不是問題的根源,到時(shí)候便于恢復(fù)。然后,清除有問題的那個(gè)應(yīng)用程序:
- sudo apt purge APP_NAME
圖4
重新安裝應(yīng)用程序:
- sudo apt update
- sudo apt install APP_NAME
圖5
這會(huì)將應(yīng)用程序重置為原始狀態(tài)。
回到以前的版本
如果升級(jí)應(yīng)用程序解決不了問題,可以改而回到以前的版本。可以試著降級(jí)并使用舊版本,至少直到開發(fā)人員修復(fù)了應(yīng)用程序中的錯(cuò)誤。
要降級(jí)應(yīng)用程序,先通過運(yùn)行終端并執(zhí)行以下命令來查看可用版本:
- sudo apt policy APP_NAME
目前安裝的版本旁邊會(huì)有三個(gè)星號(hào)。注意其他可用版本。
降級(jí)之前,建議您清除現(xiàn)有版本。這將清除任何與配置有關(guān)的問題。
安裝舊版本,方法如下:
- sudo apt install APP_NAME=VERSION
圖6
使用替代應(yīng)用程序
Linux的優(yōu)點(diǎn)是,有許多應(yīng)用程序可執(zhí)行同樣的操作。因此,如果一個(gè)應(yīng)用程序?qū)е翪PU使用率過高,您可以換成替代應(yīng)用程序。
修復(fù)導(dǎo)致CPU使用率過高的核心應(yīng)用程序
如果大量耗用CPU資源的是核心應(yīng)用程序(比如systemd或Xorg),會(huì)發(fā)生什么?
若是systemd,試著禁用電腦上非必需的功能和輔助設(shè)備,比如游戲手柄和打印機(jī)。
如果設(shè)備是游戲手柄、鼠標(biāo)或鍵盤,您又在運(yùn)行Ubuntu或兼容的發(fā)行版,請(qǐng)?jiān)诮K端中鍵入xinput,查看所有已連接的設(shè)備。想禁用其中一個(gè)設(shè)備,請(qǐng)使用:
- xinput --disable DEVICE_ID
圖7
想重新啟用設(shè)備,請(qǐng)?jiān)谏鲜雒钪袑isable換成enable。
至于其他設(shè)備,解決辦法稍微復(fù)雜一點(diǎn)。首先,您得在終端中輸入lsmod并按回車鍵,查看Linux內(nèi)核作為模塊加載的所有其他驅(qū)動(dòng)程序。找到有問題的設(shè)備對(duì)應(yīng)的驅(qū)動(dòng)程序,并記下名稱。然后,輸入以下內(nèi)容:
- sudo nano /etc/modprobe.d/blacklist.conf
您剛打開的文檔是啟動(dòng)過程中不應(yīng)加載的模塊的黑名單。它可能已經(jīng)填充了一些條目。移至文件末尾,遵循同樣的語法,將模塊添加到該列表中。您的條目應(yīng)是這樣:
- blacklist MODULE_NAME
保存文件,重新啟動(dòng),但愿現(xiàn)在一切正常。
若是Xorg,試著禁用Window Manager的合成器。雖然合成器將與CPU有關(guān)的任務(wù)卸載到GPU,但并非總是如此。有時(shí),通過啟用合成支持,您還可以實(shí)現(xiàn)許多效果。
有時(shí),GPU的驅(qū)動(dòng)程序也會(huì)導(dǎo)致CPU使用率過高。Xorg與英偉達(dá)或AMD驅(qū)動(dòng)程序的特定版本并不是很兼容。解決辦法是升級(jí)或降級(jí)到不同的版本。另外,可以試用GPU驅(qū)動(dòng)程序的開源版本。不過,那些版本沒有同樣的功能集,可能缺少一些功能。
換掉內(nèi)核
Linux內(nèi)核很少是CPU使用率過高的原因。不過,如果您到了這一步卻仍未找到解決辦法,不妨試一試。
如官網(wǎng)上所述,要在Ubuntu中安裝流行的Liquorix內(nèi)核,訪問終端并輸入:
- sudo add-apt-repository ppa:damentz/liquorix && sudo apt-get update
圖8
這會(huì)將存儲(chǔ)庫(kù)添加到Ubuntu的源代碼中。然后,要將內(nèi)核本身加載上來,請(qǐng)使用:
- sudo apt-get install linux-image-liquorix-amd64 linux-headers-liquorix-amd64
重新啟動(dòng)以啟用新內(nèi)核,但愿CPU使用率會(huì)回到正常水平。
但愿其中一種解決辦法對(duì)您有用。如果沒用,您也可以試著用taskset為應(yīng)用程序手動(dòng)分配CPU核心
(https://www.maketecheasier.com/assign-cpu-cores-with-taskset-linux/)。最后,也許是時(shí)候從頭開始重新安裝操作系統(tǒng)或改用不同的發(fā)行版本了
(https://www.maketecheasier.com/best-linux-distros/)。
原文標(biāo)題:How to Fix High CPU Usage in Linux,作者:Odysseas Kourafalos
【51CTO譯稿,合作站點(diǎn)轉(zhuǎn)載請(qǐng)注明原文譯者和出處為51CTO.com】