linux cpu相關效能指標
Run Queue Statistics
在linux中,process有兩種狀態:
1.runnable
2.blocked waiting for an event to complete
一個blocked狀態的process可能在等待一個I/O操作獲取的資料,或者是一個系統呼叫的結果
如果一個process在runnable狀態,這就意味著它將同其他runnable狀態的process等待CPU時間,而不是立即獲得CPU時間,一個runnable狀態的process不需要消耗CPU時間,只有當Linux排程程式從runnable佇列中選擇哪個process下次執行.當 process在runnable狀態,等待CPU時間時,他們形成的等待佇列稱作Run Queue.Run Queue越大,表示等待的佇列越長.
效能工具通常顯示runnable processes的數目和blocked processes的數目.還有一個很常見的系統狀態是load average,系統的load是指running和runnable process的總和.例如:如果有兩個processes在running和有三個在等待執行(runnable),那麼系統的load為五.load average是指在指定時間內load的平均值.一般load average顯示的三個數字的時間分別為1分鐘,五分鐘和十五分鐘.
Context Switches
在linux中,process有兩種狀態:
1.runnable
2.blocked waiting for an event to complete
一個blocked狀態的process可能在等待一個I/O操作獲取的資料,或者是一個系統呼叫的結果
如果一個process在runnable狀態,這就意味著它將同其他runnable狀態的process等待CPU時間,而不是立即獲得CPU時間,一個runnable狀態的process不需要消耗CPU時間,只有當Linux排程程式從runnable佇列中選擇哪個process下次執行.當 process在runnable狀態,等待CPU時間時,他們形成的等待佇列稱作Run Queue.Run Queue越大,表示等待的佇列越長.
效能工具通常顯示runnable processes的數目和blocked processes的數目.還有一個很常見的系統狀態是load average,系統的load是指running和runnable process的總和.例如:如果有兩個processes在running和有三個在等待執行(runnable),那麼系統的load為五.load average是指在指定時間內load的平均值.一般load average顯示的三個數字的時間分別為1分鐘,五分鐘和十五分鐘.
Context Switches
大部分現在的CPU在同一時間只能執行一個process.雖然也有一些CPU,例如超執行緒技術的CPU,能實現同時執行超過一個process,linux把這種CPU看作多個單執行緒CPU.
linux核心不斷的在不同process間切換,造成一個錯覺,讓人感覺一個單CPU同時處理多個任務.不同process之間的切換稱作 Context Switch.當系統做Context Switch時,CPU儲存所有old process的context資訊並獲得new process的所有context資訊.Context資訊包括大量的linux追蹤每個process資訊,尤其是一些資源:那些process正在執行,被分配了哪些記憶體,它開啟了那些檔案,等等.切換Context會觸發大量的資訊移動,這是比較高的開銷.如果可能的話儘量保持很小的 context switches.
為了儘可能的減小context switches,你首先需要知道它們是怎麼產生的.首先,kernel排程觸發context switches.為了保證每個process平等的共享CPU時間,kernel週期性中斷running的process,如果合適,kernel排程器會開始一個其他的process而不是讓當前的process繼續執行,每次的週期性中斷或者定時中斷都可能觸發context switch.每秒定時中斷的次數因不同架構和不同的kernel版本而不同.獲取每秒中斷次數的一個簡單辦法是通過監控 /proc/interrupts檔案,看下面的例子:
root@localhost asm-i386]# cat /proc/interrupts | grep timer; sleep 10 ; cat /proc/interrupts | grep timer
0: 24060043 XT-PIC timer
0: 24070093 XT-PIC timer
上面可以看到在指定的時間內timer次數的變化,每秒產生的中斷次數為1000次.如果你的context switch比timer中斷大很多.那麼context switch更多的可能是I/O請求或者其他長時間的系統呼叫(比如sleep)產生.當一個應用請求一個操作不能立即實現時,kernel開始 context switch操作:存入請求的process並且試著切換到其他runnable process.這將使得CPU保持工作狀態.
Interrupts
其他方面,CPU接收硬體驅動發出的中斷請求.這種中斷通常被觸發當一個驅動器有一個時間需要被kernel操作時.例如:如果一個磁碟控制器從磁碟上取得了一個資料塊和kernel需要讀取使用這個塊,那麼磁碟控制器會觸發一箇中斷.kernel接收每個中斷,一箇中斷處理器執行如果這個中斷被註冊,否則,這個中斷被忽略.在系統中,中斷處理器的優先順序非常高,而且執行速度非常快.很多時候,有些中斷處理並不需要很高的處理優先順序,所以也有soft- interrupt handler.如果有很多的中斷,kernel需要花費大量的時間去處理中斷.可以檢查/proc/interrupts能夠知道中斷髮生在哪個CPU 上.
CPU Utilization
CPU Utilization,一個很直觀的概念,在任意時間內,CPU有7個狀態:
1.idle,表示CPU閒置並等待工作分配.
2.user,表示CPU在執行使用者的程式
3.system,表示CPU在執行kernel工作
4.nice,表示CPU花費在被nice改變過優先順序的process上的時間(注意:被nice命令改變優先順序的process僅指那些nice值為負的process.花費在被nice命令改變優先順序的任務上的時間也將被計算在系統和使用者時間內,因此整個時間加起來可能會超過百分之百)
5.iowait,表示CPU等待IO操作完成的時間
6.irq,表示CPU開銷在響應硬中斷上的時間
7.softirq,表示CPU開銷在響應軟中斷上的時間.
我們一般用vmstat看到的都是四個狀態:sy,us,id,wa,通過他和load avg結合,基本可以知道cpu的狀態
linux核心不斷的在不同process間切換,造成一個錯覺,讓人感覺一個單CPU同時處理多個任務.不同process之間的切換稱作 Context Switch.當系統做Context Switch時,CPU儲存所有old process的context資訊並獲得new process的所有context資訊.Context資訊包括大量的linux追蹤每個process資訊,尤其是一些資源:那些process正在執行,被分配了哪些記憶體,它開啟了那些檔案,等等.切換Context會觸發大量的資訊移動,這是比較高的開銷.如果可能的話儘量保持很小的 context switches.
為了儘可能的減小context switches,你首先需要知道它們是怎麼產生的.首先,kernel排程觸發context switches.為了保證每個process平等的共享CPU時間,kernel週期性中斷running的process,如果合適,kernel排程器會開始一個其他的process而不是讓當前的process繼續執行,每次的週期性中斷或者定時中斷都可能觸發context switch.每秒定時中斷的次數因不同架構和不同的kernel版本而不同.獲取每秒中斷次數的一個簡單辦法是通過監控 /proc/interrupts檔案,看下面的例子:
root@localhost asm-i386]# cat /proc/interrupts | grep timer; sleep 10 ; cat /proc/interrupts | grep timer
0: 24060043 XT-PIC timer
0: 24070093 XT-PIC timer
上面可以看到在指定的時間內timer次數的變化,每秒產生的中斷次數為1000次.如果你的context switch比timer中斷大很多.那麼context switch更多的可能是I/O請求或者其他長時間的系統呼叫(比如sleep)產生.當一個應用請求一個操作不能立即實現時,kernel開始 context switch操作:存入請求的process並且試著切換到其他runnable process.這將使得CPU保持工作狀態.
Interrupts
其他方面,CPU接收硬體驅動發出的中斷請求.這種中斷通常被觸發當一個驅動器有一個時間需要被kernel操作時.例如:如果一個磁碟控制器從磁碟上取得了一個資料塊和kernel需要讀取使用這個塊,那麼磁碟控制器會觸發一箇中斷.kernel接收每個中斷,一箇中斷處理器執行如果這個中斷被註冊,否則,這個中斷被忽略.在系統中,中斷處理器的優先順序非常高,而且執行速度非常快.很多時候,有些中斷處理並不需要很高的處理優先順序,所以也有soft- interrupt handler.如果有很多的中斷,kernel需要花費大量的時間去處理中斷.可以檢查/proc/interrupts能夠知道中斷髮生在哪個CPU 上.
CPU Utilization
CPU Utilization,一個很直觀的概念,在任意時間內,CPU有7個狀態:
1.idle,表示CPU閒置並等待工作分配.
2.user,表示CPU在執行使用者的程式
3.system,表示CPU在執行kernel工作
4.nice,表示CPU花費在被nice改變過優先順序的process上的時間(注意:被nice命令改變優先順序的process僅指那些nice值為負的process.花費在被nice命令改變優先順序的任務上的時間也將被計算在系統和使用者時間內,因此整個時間加起來可能會超過百分之百)
5.iowait,表示CPU等待IO操作完成的時間
6.irq,表示CPU開銷在響應硬中斷上的時間
7.softirq,表示CPU開銷在響應軟中斷上的時間.
我們一般用vmstat看到的都是四個狀態:sy,us,id,wa,通過他和load avg結合,基本可以知道cpu的狀態
大部分的效能工具用百分比表示CPU時間.當system時間佔用很高的時候,你可以用"oprofile"工具發現時間都花費在哪裡.當iowait很高的時候,你需要分析你的IO裝置,比如磁碟,網路卡.
原文地址:http://www.51testing.com/?uid-3787-action-viewspace-itemid-5527
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/241379/viewspace-719213/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Linux 網路效能指標Linux指標
- Linux記憶體效能指標和工具的對應關係圖Linux記憶體指標
- 效能指標指標
- Linux相關Linux
- 指標相關指標
- Linux作業系統效能指標監控與通知Linux作業系統指標
- MySQL常用效能指標MySql指標
- Loadrunner效能指標分析指標
- web前端應用應該關注哪些效能指標?Web前端指標
- Linux 相關2Linux
- mybaties 標籤相關BAT
- Arch Linux ARM相關Linux
- Linux 核心相關命令Linux
- linux相關記錄Linux
- html文字相關標籤HTML
- 效能測試中伺服器關鍵效能指標淺析伺服器指標
- SDN控制器關鍵效能指標及測試方法—Vecloud指標Cloud
- [轉帖]晶片相關-- Cpu歷史--intel系列晶片Intel
- [轉帖]晶片相關-- Cpu歷史--AMD系列晶片
- 從原始碼角度看CPU相關日誌原始碼
- PLC的7大效能指標指標
- 立創 eda 標號相關
- Linux網路相關命令Linux
- Linux相關的操作指令Linux
- Linux 、docker 、nginx 相關命令LinuxDockerNginx
- 【linux】命令-網路相關Linux
- Flutter學習(六) 動畫以及動效相關Flutter動畫
- 座標系相關知識科普
- PbootCMS會員相關標籤呼叫boot
- 目標檢測相關論文
- MySQL全面瓦解19:遊標相關MySql
- 雙指標相關演算法指標演算法
- 壓力測試相關指標指標
- Linux執行python相關指令LinuxPython
- Linux檔案管理相關命令Linux
- 【linux】Linux程式相關知識學習整理Linux
- 計算機網路的效能指標計算機網路指標
- 效能測試之常見效能指標指標
- 剖析HBase負載均衡和效能指標負載指標