上篇講如何用LoadRunner監控Linux的性能指標 ,可是關於CPU的幾個指標沒有搞清楚,下面就詳細說說。html
CPU Utilization 好理解,就是CPU的利用率,75%以上就比較高了(也有說法是80%或者更高)。除了這個指標外,還要結合Load Average和Context Switch Rate來看,有可能CPU高是由於後兩個指標高致使的。 java
Load Average ,這個很難衡量。網上搜了一圈,還沒見到幾個合理的解釋。我100個併發用戶測試數來這兩個值是:77.534%,6.108,CPU利用率比較高,Load Average也好像有點高。後來發現了以下兩片博文: 理解Load Average作好壓力測試 ,「Load Average是 CPU的 Load,它所包含的信息不是 CPU的使用率情況,而是在一段時間內 CPU正在處理以及等待 CPU處理的進程數之和的統計信息,也就是 CPU使用隊列的長度的統計信息。 」,基本解釋了multi-process,multi-thread程序的原理。理解Linux處理器的負載均值(翻譯) ,簡單提及來就一句話:linux
Load Average < CPU個數 * 核數 *0.7 服務器
好比1個1核CPU,Load Average < 1 * 1 * 0.7;1個4核的CPU,Load Average必須 < 1 * 4 * 0.7 = 2.8。架構
查看cpu的信息:grep 'model name' /proc/cpuinfo 併發
Context Switch Rate 。就是Process(Thread)的切換,若是切換過多,會讓CPU忙於切換,也會致使影響吞吐量。《高性能服務器架構 》這篇文章的第2節就是說的是這個問題的。究竟多少算合適?google了一大圈,沒有一個確切的解釋。Context Switch大致上由兩個部分組成:中斷和進程(包括線程)切換,一次中斷(Interrupt)會引發一次切換,進程(線程)的建立、激活之類的也會引發一次切換。CS的值也和TPS(Transaction Per Second)相關的,假設每次調用會引發N次CS,那麼就能夠得出性能
Context Switch Rate = Interrupt Rate + TPS* N 測試
CSR減掉IR,就是進程/線程的切換,假如主進程收到請求交給線程處理,線程處理完畢歸還給主進程,這裏就是2次切換。也能夠用CSR、IR、TPS的值代入公式中,得出每次事物致使的切換數。所以,要下降CSR,就必須在每一個TPS引發的切換上下功夫,只有N這個值降下去,CSR就能下降,理想狀況下N=0,可是不管如何若是N >= 4,則要好好檢查檢查。另外網上說的CSR<5000,我認爲標準不應如此單一。優化
其餘信息: 網站
這三個指標在LoadRunner中能夠監控到;另外,在linux中,也能夠用vmstat查看r(Load Arerage),in(Interrupt)和cs(Context Switch)
#vmstat 1 5
procs --------------memory------------- ----swap-- ---io-- -system------cpu----
r b swpd free buff cache si so bi bo in cs us sy id wa
0 0 244644 29156 415720 2336484 0 0 1 49 2 1 1 0 98 0
0 0 244644 29140 415720 2336484 0 0 0 28 9 115 0 0 99 1
0 0 244644 29140 415720 2336484 0 0 0 24 62 256 0 0 100 0
0 0 244644 29140 415720 2336484 0 0 0 0 5 93 0 0 100 0
0 0 244644 29140 415720 2336484 0 0 0 0 58 255 0 0 100 0
Interrupt Rate包括內核因爲進程的時間片中斷。(在 Linux 2.6 中,系統時鐘每 1 毫秒中斷一次時鐘頻率,用 HZ 宏表示,定義爲 1000,即每秒中斷 1000 次。系統不同,內核不同配置100、250的都有。)
內核的時鐘頻率能夠經過以下命令知道
cat /boot/config-`uname -r` | grep '^CONFIG_HZ='
CONFIG_HZ=100
每秒總的時鐘中斷數就是 = cpu個數 * 核數 * CONFIG_HZ
cat /proc/interrupts
CPU0 CPU1 CPU2 CPU3
LOC: 97574747 52361843 105207680 69447653 Local timer interrupts
RES: 107368 257510 98635 186294 Rescheduling interrupts
CAL: 14174 14206 14164 194 function call interrupts
TLB: 1007949 853117 992546 591410 TLB shootdowns
能夠查看中斷的類型以及次數
後記:
發現一篇Linux性能監控的文章,特貼在這裏,供參考
http://blog.csdn.net/tianlesoftware/archive/2011/02/21/6198780.aspx
==========================================================================
性能相關的系列文章:
LoadRunner利用ODBC編寫MySql腳本
LoadRunner壓力測試時監控服務器Linux的資源狀況
壓力測試衡量CPU的三個指標:CPU Utilization、Load Average和Context Switch Rate
高性能服務器架構(High-Performance Server Architecture)
網站性能測試PV到TPS的轉換以及TPS的波動
用GTmetrix來優化你的網頁(集成了YSlow、FireBug的功能)