1. 程式人生 > >如何查看Linux的CPU負載

如何查看Linux的CPU負載

spa 發揮 物理 實時 占用 接受 span 變化 inux

哪些工具可以查看 CPU 負載?

可以使用 top 命令、uptime 命令,特別是 top 命令,功能強大,不僅僅可以用來查看 CPU 負載。

CPU 負載怎麽理解?是不是 CPU 利用率?

要區別 CPU 負載和 CPU 利用率,它們是不同的兩個概念,但它們的信息可以在同一個 top 命令中進行顯示。CPU 利用率顯示的是程序在運行期間實時占用的 CPU 百分比,而 CPU 負載顯示的是一段時間內正在使用和等待使用 CPU 的平均任務數。CPU 利用率高,並不意味著負載就一定大。網上有篇文章舉了一個有趣比喻,拿打電話來說明兩者的區別,我按自己的理解闡述一下。 某公用電話亭,有一個人在打電話,四個人在等待,每人限定使用電話一分鐘,若有人一分鐘之內沒有打完電話,只能掛掉電話去排隊,等待下一輪。電話在這裏就相當於 CPU,而正在或等待打電話的人就相當於任務數。 在電話亭使用過程中,肯定會有人打完電話走掉,有人沒有打完電話而選擇重新排隊,更會有新增的人在這兒排隊,這個人數的變化就相當於任務數的增減。為了統計平均負載情況,我們 5 秒鐘統計一次人數,並在第 1、5、15 分鐘的時候對統計情況取平均值,從而形成第 1、5、15 分鐘的平均負載。 有的人拿起電話就打,一直打完 1 分鐘,而有的人可能前三十秒在找電話號碼,或者在猶豫要不要打,後三十秒才真正在打電話。如果把電話看作 CPU,人數看作任務,我們就說前一個人(任務)的 CPU 利用率高,後一個人(任務)的 CPU 利用率低。 當然, CPU 並不會在前三十秒工作,後三十秒歇著,只是說,有的程序涉及到大量的計算,所以 CPU 利用率就高,而有的程序牽涉到計算的部分很少,CPU 利用率自然就低。但無論 CPU 的利用率是高是低,跟後面有多少任務在排隊沒有必然關系。

如何來降低服務器的 CPU 負載呢?

最簡單辦法的是更換性能更好的服務器,不要想著僅僅提高 CPU 的性能,那沒有用,CPU 要發揮出它最好的性能還需要其它軟硬件的配合。 在服務器其它方面配置合理的情況下,CPU 數量和 CPU 核心數(即內核數)都會影響到 CPU 負載,因為任務最終是要分配到 CPU 核心去處理的。兩塊 CPU 要比一塊 CPU 好,雙核要比單核好。 因此,我們需要記住,除去 CPU 性能上的差異,CPU 負載是基於內核數來計算的!有一個說法,“有多少內核,即有多少負載”。

CPU 負載為多少才算比較理想?

個人比較贊同 CPU 負載小於等於 0.7 算是一種理想狀態。 不管某個 CPU 的性能有多好,1 秒鐘能處理多少任務,我們可以認為它無關緊要,雖然事實並非如此。在評估 CPU 負載時,我們只以 5 秒鐘為單位為統計任務隊列長度。如果每隔 5 秒鐘統計的時候,發現任務隊列長度都是 1,那麽 CPU 負載就為 1。假如我們只有一個單核的 CPU,負載一直為 1,意味著沒有任務在排隊,還不錯。 上面提到的我那臺服務器,是雙核又 CPU,等於是有 4 個內核,每個內核的負載為 1 的話,總負載為 4。這就是說,如果我那臺服務器的 CPU 負載長期保持在 4 左右,還可以接受。但實際上 CPU 負載已經達到 9 以上了,所以就很麻煩了。 但是每個內核的負載為 1,並不能算是一種理想狀態!這意味著我們的 CPU 一直很忙,不得清閑。網上有說理想的狀態是每個內核的負載為 0.7 左右,我比較贊同,0.7 乘以內核數,得出服務器理想的CPU 負載

,比如我這臺服務器,負載在 3.0 以下就可以。

#查看CPU型號:

$>grep ‘model name‘ /proc/cpuinfo |uniq

model name : Intel(R) Xeon(R) CPU E5-2682 v4 @ 2.50GHz

#查看CPU物理個數

$>grep ‘physical id‘ /proc/cpuinfo |sort |uniq |wc -l

0

#查看單個CPU是幾核的

$>grep ‘cpu cores‘ /proc/cpuinfo |uniq

如何查看Linux的CPU負載