cpu 使用率和負載的關係和區別
Linux 下 CPU 使用率與機器負載的關係與區別
轉載 2016年09月17日 10:27:09
當我們使用top命令檢視系統的資源使用情況時會看到 load average,如下圖所示。它表示系統在1、5、15分鐘的平均工作負載。那麼什麼是負載(load)呢?它和CPU的利用率又有什麼關係呢?
load average:系統平均負載是CPU的Load,它所包含的資訊不是CPU的使用率狀況,而是在一段時間內CPU正在處理以及等待CPU處理的程式數之和的統計資訊,也就是CPU使用佇列的長度的統計資訊。這個數字越小越好。
1. CPU負載和CPU利用率的區別
CPU利用率:顯示的是程式在執行期間實時佔用的CPU百分比
CPU負載:顯示的是一段時間內正在使用和等待使用CPU的平均任務數。CPU利用率高,並不意味著負載就一定大。舉例來說:如果我有一個程式它需要一直使用CPU的運算功能,那麼此時CPU的使用率可能達到100%,但是CPU的工作負載則是趨近於“1”,因為CPU僅負責一個工作嘛!如果同時執行這樣的程式兩個呢?CPU的使用率還是100%,但是工作負載則變成2了。所以也就是說,當CPU的工作負載越大,代表CPU必須要在不同的工作之間進行頻繁的工作切換。
舉例說明
網上有篇文章舉了一個有趣比喻,拿打電話來說明兩者的區別,我按自己的理解闡述一下。
某公用電話亭,有一個人在打電話,四個人在等待,每人限定使用電話一分鐘,若有人一分鐘之內沒有打完電話,只能掛掉電話去排隊,等待下一輪。電話在這裡就相當於CPU,而正在或等待打電話的人就相當於任務數。
在電話亭使用過程中,肯定會有人打完電話走掉,有人沒有打完電話而選擇重新排隊,更會有新增的人在這兒排隊,這個人數的變化就相當於任務數的增減。為了統計平均負載情況,我們5分鐘統計一次人數,並在第1、5、15分鐘的時候對統計情況取平均值,從而形成第1、5、15分鐘的平均負載。
有的人拿起電話就打,一直打完1分鐘,而有的人可能前三十秒在找電話號碼,或者在猶豫要不要打,後三十秒才真正在打電話。如果把電話看作CPU,人數看作任務,我們就說前一個人(任務)的CPU利用率高,後一個人(任務)的CPU利用率低。
當然, CPU並不會在前三十秒工作,後三十秒歇著,只是說,有的程式涉及到大量的計算,所以CPU利用率就高,而有的程式牽涉到計算的部分很少,CPU利用率自然就低。但無論CPU的利用率是高是低,跟後面有多少任務在排隊沒有必然關係。
2. 負載為多少才算比較理想?
這個有爭議,各有各的說法,個人比較贊同CPU負載小於等於0.5算是一種理想狀態。
不管某個CPU的效能有多好,1秒鐘能處理多少任務,我們可以認為它無關緊要,雖然事實並非如此。在評估CPU負載時,我們只以5分鐘為單位為統計任務佇列長度。如果每隔5分鐘統計的時候,發現任務佇列長度都是1,那麼CPU負載就為1。假如我們只有一個單核的CPU,負載一直為1,意味著沒有任務在排隊,還不錯。
但是我那臺伺服器,是雙核CPU,等於是有4個核心,每個核心的負載為1的話,總負載為4。這就是說,如果我那臺伺服器的CPU負載長期保持在4左右,還可以接受。
但是每個核心的負載為1,並不能算是一種理想狀態!這意味著我們的CPU一直很忙,不得清閒。網上有說理想的狀態是每個核心的負載為0.7左右,我比較贊同,0.7乘以核心數,得出伺服器理想的CPU負載,比如我這臺伺服器,負載在3.0以下就可以。
3. 如何來降低伺服器的CPU負載?
最簡單辦法的
本文轉自wks9751CTO部落格,原文連結: http://blog.51cto.com/wks97/2073217,如需轉載請自行聯絡原作者
相關文章
- Cookie 和 Session 關係和區別CookieSession
- CPU使用率低負載高負載
- http中session和cookie的區別和關係HTTPSessionCookie
- WebGL和OpenGL的區別及關係Web
- 如何檢視CPU核數和執行緒數?CPU的核心數、執行緒數的關係和區別執行緒
- cpu使用率低負載高,原因分析負載
- GPU和CPU的區別GPU
- CPU和GPU的區別GPU
- 四層和七層負載均衡的區別負載
- javascript中集合、陣列和物件的區別和關係JavaScript陣列物件
- CPU 使用率低高負載的原因,看看這篇!負載
- Flex,Flash,AS3,AIR的關係和區別FlexS3AI
- 盒裝CPU和散裝CPU的區別
- 關係型資料庫和非關係型資料庫的區別資料庫
- 一文搞懂exports和module.exports的關係和區別Export
- PostgreSQL DBA(88) - Linux(CPU使用率 vs 平均負載)SQLLinux負載
- Java程式和執行緒關係及區別Java執行緒
- pycharm和python區別(關係)是什麼PyCharmPython
- 雲端計算和大資料的區別與關係大資料
- IP、域名和DNS的關係與區別是什麼?DNS
- repo和Git的關係 [轉載]Git
- java 7中新增的CPU和負載的監控Java負載
- 單體巨石、微服務和SOA關係與區別微服務
- Apache與Tomcat有什麼關係和區別ApacheTomcat
- 雙機熱備和負載均衡有什麼區別負載
- 【知識分享】伺服器CPU和家用CPU的區別伺服器
- CPU的散片和盒裝CPU有什麼區別?
- 關聯關係與依賴關係的區別
- Android 中 uses-feature 和 uses-permission的作用 關係和區別Android
- CPU Turbo和GPU Turbo的區別 CPU Turbo是什麼意思?GPU
- java和JavaScript究竟什麼關係,有什麼樣的區別JavaScript
- 四七層負載均衡的區別負載
- Centos和Redhat有什麼關係?Centos和Redhat的區別與聯絡介紹CentOSRedhat
- Http 和TCP的關係,TCP長連線和短連線有什麼區別?HTTPTCP
- 區塊鏈和大資料的關係區塊鏈大資料
- 非關係型資料庫(NOSQL)和關係型資料庫(SQL)區別詳解資料庫SQL
- linux和ubuntu區別是什麼?有什麼關係?LinuxUbuntu
- AMD CPU散片和盒裝有什麼區別?AMD CPU散片和盒裝的區別對比知識