8核cpu,,負載


今天有一個電話面試,面試官問我:CentOS怎么查看CPU負載?我說:看top的第一行有load average。面試官又問:為什么從這就判定是負載高呢?依據是什么呢?然后... 然后我就尷尬了,掛了電話趕緊查資料惡補一下(在這里吐槽一下自己)。
使用Linux的朋友都知道如何查看Unix/Linux load的值,這邊我也重復一下查看load的方法:

load average 后面三個值代表系統在1分鍾、5分鍾和15分鍾的負載情況,都知道數字越高表示系統負載越大,第一直覺就是這個系統不行了。那么到底多高的負載才算高負載? 我們又如何去判斷系統是否已經高負載呢?
1. 什么是load average?
load average的就是一定時間內計算機有多少個active_tasks,也就是說是計算機的任務執行隊列的長度,cpu計算的隊列。
2. load average多少是正常?
既然load是cpu計算的隊列,那就應該和cpu個處理方式和cpu的個數有關系。所以我個人認為應該按系統識別的cpu個數來確定load的臨界值,系統識別為8個cpu,那么load為8就是臨界點,高於8就屬於over load了。
3. 什么叫系統識別CPU個數?
這里涉及到cpu物理個數和超線程技術的問題。對於單處理器在滿負載的情況下1.00,則雙處理器的負載滿額的情況是 2.00,它還有一倍的資源可以利用。
從性能的角度上理解,一台主機擁有多核心的處理器與另台擁有同樣數目的處理性能基本上可以認為是相差無幾。當然實際 情況會復雜得多,不同數量的緩存、處理器的頻率等因素都可能造成性能的差異。但即便這些因素造成的實際性能稍有不同,其實系統還是以處理器的核心數量計算負載均值 。這使我們有了兩個新的法則:
  “有多少核心即為有多少負荷”法則: 在多核處理中,你的系統均值不應該高於處理器核心的總數量。
  “核心的核心”法則: 核心分布在分別幾個單個物理處理中並不重要,其實兩顆四核的處理器 等於 四個雙核處理器 等於 八個單處理器。所以,它應該有八個處理器內核。
4. 如何查看系統的CPU個數?
在 Linux 下,可以使用從/proc/cpuinfo文件獲取你系統上的邏輯處理器的數量:
[root@localhost ~]# cat /proc/cpuinfo
5.CPU高不等同於load高
在Unix/Linux可能經常會遇到cpu的使用率為100%,但是load卻不高!這是為什么呢?因為幾乎所有的任務和會和CPU進行交互,但是由於各個設備的使用頻率不同,造成了不能同步進行的問題。比如說,當對硬盤進行讀寫的時候,出現IO的等待時候,事實上cpu已經被切換到別的進程上了。該任務就處於等待狀態,當這樣的任務過多,導致隊列長度過大,這樣就體現到負載過大了,但實際是此時cpu被分配去干執行別的任務或空閑,因此CPU高不等同於load高,load高也不能於cpu高


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM