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