自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Linux 測試cpu性能詳解

運維 系統(tǒng)運維
在這篇文章中,主要介紹Linux 測試cpu性能的一些基礎知識,首先介紹一下Linux kernel中的調度器(scheduler),調度器負責調度系統(tǒng)中的兩種資源,一是線程,二是中斷。調度器給不同資源不同的優(yōu)先級。

在這篇文章中,主要介紹Linux 測試cpu性能的一些基礎知識.首先介紹一下Linux kernel中的調度器(scheduler),調度器負責調度系統(tǒng)中的兩種資源,一是線程,二是中斷。調度器給不同資源不同的優(yōu)先級。

Linux 測試cpu性能從高到低為:
1. 硬件中斷(Hardware Interrupts)--這些請求由硬件觸發(fā),比如磁盤已經完成了讀寫任務或是網(wǎng)卡受到了新的數(shù)據(jù)包。
2. 軟件中斷(Software Interrupts)--這里指的是維護內核運行的內核態(tài)軟件中斷。比如內核的時鐘管理進程。
3. 實時進程(Real time threads)--實時進程比內核本身具備更高的優(yōu)先級,它可以搶占內核的CPU時間片,在2.4內核是一個不可搶占的內核,它中不支持實時程序。
4. 內核進程(Kernel threads)--包括所以的內核程序。
5. 用戶進程(User threads)-- 所有運行在用戶態(tài)的進程。


關于Linux 測試cpu性能,有3個重要的概念:上下文切換(context switchs),運行隊列(Run queue)和使用率(utilization)。

上下文切換:
目前流行的CPU在同一時間內只能運行一個線程,超線程的處理器可以在同一時間運行多個線程(包括多核CPU),Linux內核會把多核的處理器當作多個單獨的CPU來識別。
 一個標準的Linux內核何以支持運行50~50000個進程運行,對于普通的CPU,內核會調度和執(zhí)行這些進程。每個進程都會分到CPU的時間片來運行,當一個進程用完時間片或者被更高優(yōu)先級的進程搶占后,它會備份到CPU的運行隊列中,同時其他進程在CPU上運行。這個進程切換的過程被稱作上下文切換。過多的上下文切換會造成系統(tǒng)很大的開銷。

運行隊列:
每個CPU都會維持一個運行隊列,理想情況下,調度器會不斷讓隊列中的進程運行。進程不是處在sleep狀態(tài)就是run able狀態(tài)。 如果CPU過載,就會出現(xiàn)調度器跟不上系統(tǒng)的要求,導致可運行的進程會填滿隊列。隊列愈大,程序執(zhí)行時間就愈長。“load”用來表示運行隊列,用top命令我們可以看到CPU一分鐘,5分鐘和15分鐘內的運行隊列的大小。這個值越大表明系統(tǒng)負荷越大。

Linux 測試cpu性能CPU使用率:
CPU使用率可分為一下幾個部分
User Time—執(zhí)行用戶進程的時間百分比;
System Time—執(zhí)行內核進程和中斷的時間百分比;
Wait IO—因為IO等待而使CPU處于idle狀態(tài)的時間百分比;
Idle—CPU處于Idle狀態(tài)的時間百分比。

關于時間片和動態(tài)優(yōu)先級:
時間片對于CPU來說是很關鍵的參數(shù),如果時間片太長,就會使系統(tǒng)的交互性能變差,用戶感覺不到并行。如果太短,又會造成系統(tǒng)頻繁的上下文切換,使性能下降。對于IO Bound的系統(tǒng)來講并不需要太長的時間片,因為系統(tǒng)主要是IO操作;而對于CPU Bound的系統(tǒng)來說需要長的時間片以保持cache的有效性。每一個進程啟動的時候系統(tǒng)都會給出一個默認的優(yōu)先級,但在運行過程中,系統(tǒng)會根據(jù)進程的運行狀況不斷調整優(yōu)先級,內核會升高或降低進程的優(yōu)先級(每次增加或降低5),判斷標準是根據(jù)進程處于sleep狀態(tài)的時間。IO Bound進程大部分時間在sleep狀態(tài),所以內核會調高它的優(yōu)先級,CPU Bound進程會被內核懲罰降低優(yōu)先級。因此,如果一個系統(tǒng)上即運行IO Bound進程,又運行CPU Bound進程,我們會發(fā)現(xiàn),IO Bound進程的性能不會下降,而CPU Bound進程性能會不斷下降。
我們運行一個CPU Bound的程序:cpu-hog。用ps命令可以看出它的優(yōu)先級在不斷下降。
 

  1. term1# ./cpu-hog  
  2. term2# while :; do ps -eo pid,ni,pri,pcpu,comm | egrep  
  3. 'hog|PRI'; sleep 1; done  
  4. PID NI PRI %CPU COMMAND  
  5. 22855 0 20 84.5 cpu-hog  
  6. PID NI PRI %CPU COMMAND  
  7. 22855 0 18 89.6 cpu-hog  
  8. PID NI PRI %CPU COMMAND  
  9. 22855 0 15 92.2 cpu-hog  
  10. PID NI PRI %CPU COMMAND  
  11. 22855 0 15 93.8 cpu-hog  

我們運行find命令,是一個IO Bound的程序,可以觀察到它的優(yōu)先級不斷提高。
 

  1. term1# find /  
  2. term2# while :; do ps -eo pid,ni,pri,pcpu,comm | egrep  
  3. 'find|PRI'; sleep 1; done  
  4. PID NI PRI %CPU COMMAND  
  5. 23101 0 20 0.0 find  
  6. PID NI PRI %CPU COMMAND  
  7. 23101 0 21 4.0 find  
  8. PID NI PRI %CPU COMMAND  
  9. 23101 0 23 3.5 find  
  10. PID NI PRI %CPU COMMAND  
  11. 23101 0 23 4.3 find  
  12. PID NI PRI %CPU COMMAND  
  13. 23101 0 23 4.2 find  
  14. PID NI PRI %CPU COMMAND  
  15. 23101 0 23 4.4 find  

 

正如我們之前討論的任何系統(tǒng)的性能比較都是基于基線的,并且監(jiān)控CPU的性能就是以上3點,運行隊列、CPU使用率和上下文切換。以下是一些對于CPU很普遍的性能要求:
1. 對于每一個CPU來說運行隊列不要超過3,例如,如果是雙核CPU就不要超過6;
2. 如果CPU在滿負荷運行,應該符合下列分布,
a) User Time:65%~70%
b) System Time:30%~35%
c) Idle:0%~5%
3. 對于上下文切換要結合CPU使用率來看,如果CPU使用滿足上述分布,大量的上下文切換也是可以接受的。
常用的監(jiān)視工具有,vmstat, top,dstat和mpstat.
 

  1. # vmstat 1  
  2. procs -----------memory---------- ---swap-- -----io---- --system-- ----cpu----  
  3. r b swpd free buff cache si so bi bo in cs us sy id wa  
  4. 0 0 104300 16800 95328 72200 0 0 5 26 7 14 4 1 95 0  
  5. 0 0 104300 16800 95328 72200 0 0 0 24 1021 64 1 1 98 0  
  6. 0 0 104300 16800 95328 72200 0 0 0 0 1009 59 1 1 98 0  

 

r表示運行隊列的大小,
b表示由于IO等待而block的線程數(shù)量,
in表示中斷的數(shù)量,
cs表示上下文切換的數(shù)量,
us表示用戶CPU時間,
sys表示系統(tǒng)CPU時間,
wa表示由于IO等待而是CPU處于idle狀態(tài)的時間,
id表示CPU處于idle狀態(tài)的總時間。


總結的說,Linux 測試CPU性能監(jiān)控包含以下方面:
檢查系統(tǒng)的運行隊列,確保每一個CPU的運行隊列不大于3.
確保CPU使用分布滿足70/30原則(用戶70%,系統(tǒng)30%)。
如果系統(tǒng)時間過長,可能是因為頻繁的調度和改變優(yōu)先級。
CPU Bound進程總是會被懲罰(降低優(yōu)先級)而IO Bound進程總會被獎勵(提高優(yōu)先級)。

【編輯推薦】

  1. Linux性能測試工具Lmbench介紹和使用說明
  2. Linux 編程工具介紹及Linux下的編程
  3. Linux 開發(fā)工具詳細介紹
  4. Linux下載工具Curl詳解
  5. Linux 測試軟件:從源代碼開始
     
責任編輯:chenqingxiang 來源: hi.baidu
相關推薦

2010-06-04 16:07:09

Linux 性能測試工

2010-05-26 18:08:30

Linux性能監(jiān)控

2019-12-10 08:10:35

LinuxCPU性能優(yōu)化

2010-12-22 13:09:23

Linux性能監(jiān)測CPU

2011-08-01 16:24:04

XCode CodeTimer 測試

2023-07-31 09:13:13

ValidatorGolang

2010-06-04 11:00:27

hadoop性能優(yōu)化

2019-07-25 07:14:03

LinuxSync操作系統(tǒng)

2010-12-24 13:25:44

Linux性能監(jiān)控CPU

2016-09-14 11:09:06

Web工具運維

2024-03-06 18:09:06

Linux性能工具

2010-06-11 11:20:18

Linux性能測試工具

2010-06-04 10:09:29

Linux 性能檢測

2010-06-07 14:42:47

Linux性能測試工具

2021-07-03 08:54:49

LinuxSysbench性能

2023-12-05 07:41:24

LinuxCPU性能問題

2023-12-11 07:21:36

2014-07-28 16:47:41

linux性能

2010-02-03 17:47:49

千兆交換機

2023-06-06 16:10:11

點贊
收藏

51CTO技術棧公眾號