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

Linux性能監(jiān)測(cè):CPU篇

運(yùn)維 系統(tǒng)運(yùn)維
CPU 也是一種硬件資源,和任何其他硬件設(shè)備一樣也需要驅(qū)動(dòng)和管理程序才能使用,我們可以把內(nèi)核的進(jìn)程調(diào)度看作是 CPU 的管理程序,用來(lái)管理和分配 CPU 資源,合理安排進(jìn)程搶占 CPU,并決定哪個(gè)進(jìn)程該使用 CPU、哪個(gè)進(jìn)程該等待。

CPU 的占用主要取決于什么樣的資源正在 CPU 上面運(yùn)行,比如拷貝一個(gè)文件通常占用較少 CPU,因?yàn)榇蟛糠止ぷ魇怯?DMA(Direct Memory Access)完成,只是在完成拷貝以后給一個(gè)中斷讓 CPU 知道拷貝已經(jīng)完成;科學(xué)計(jì)算通常占用較多的 CPU,大部分計(jì)算工作都需要在 CPU 上完成,內(nèi)存、硬盤等子系統(tǒng)只做暫時(shí)的數(shù)據(jù)存儲(chǔ)工作。要想監(jiān)測(cè)和理解 CPU 的性能需要知道一些的操作系統(tǒng)的基本知識(shí),比如:中斷、進(jìn)程調(diào)度、進(jìn)程上下文切換、可運(yùn)行隊(duì)列等。這里 VPSee 用個(gè)例子來(lái)簡(jiǎn)單介紹一下這些概念和他們的關(guān)系,CPU 很無(wú)辜,是個(gè)任勞任怨的打工仔,每時(shí)每刻都有工作在做(進(jìn)程、線程)并且自己有一張工作清單(可運(yùn)行隊(duì)列),由老板(進(jìn)程調(diào)度)來(lái)決定他該干什么,他需要和老板溝通以便得到老板的想法并及時(shí)調(diào)整自己的工作(上下文切換),部分工作做完以后還需要及時(shí)向老板匯報(bào)(中斷),所以打工仔(CPU)除了做自己該做的工作以外,還有大量時(shí)間和精力花在溝通和匯報(bào)上。

[[17714]]

CPU 也是一種硬件資源,和任何其他硬件設(shè)備一樣也需要驅(qū)動(dòng)和管理程序才能使用,我們可以把內(nèi)核的進(jìn)程調(diào)度看作是 CPU 的管理程序,用來(lái)管理和分配 CPU 資源,合理安排進(jìn)程搶占 CPU,并決定哪個(gè)進(jìn)程該使用 CPU、哪個(gè)進(jìn)程該等待。操作系統(tǒng)內(nèi)核里的進(jìn)程調(diào)度主要用來(lái)調(diào)度兩類資源:進(jìn)程(或線程)和中斷,進(jìn)程調(diào)度給不同的資源分配了不同的優(yōu)先級(jí),優(yōu)先級(jí)最高的是硬件中斷,其次是內(nèi)核(系統(tǒng))進(jìn)程,最后是用戶進(jìn)程。每個(gè) CPU 都維護(hù)著一個(gè)可運(yùn)行隊(duì)列,用來(lái)存放那些可運(yùn)行的線程。線程要么在睡眠狀態(tài)(blocked 正在等待 IO)要么在可運(yùn)行狀態(tài),如果 CPU 當(dāng)前負(fù)載太高而新的請(qǐng)求不斷,就會(huì)出現(xiàn)進(jìn)程調(diào)度暫時(shí)應(yīng)付不過(guò)來(lái)的情況,這個(gè)時(shí)候就不得不把線程暫時(shí)放到可運(yùn)行隊(duì)列里。VPSee 在這里要討論的是性能監(jiān)測(cè),上面談了一堆都沒提到性能,那么這些概念和性能監(jiān)測(cè)有什么關(guān)系呢?關(guān)系重大。如果你是老板,你如何檢查打工仔的效率(性能)呢?我們一般會(huì)通過(guò)以下這些信息來(lái)判斷打工仔是否偷懶:

  • 打工仔接受和完成多少任務(wù)并向老板匯報(bào)了(中斷);
  • 打工仔和老板溝通、協(xié)商每項(xiàng)工作的工作進(jìn)度(上下文切換);
  • 打工仔的工作列表是不是都有排滿(可運(yùn)行隊(duì)列);
  • 打工仔工作效率如何,是不是在偷懶(CPU 利用率)。

現(xiàn)在把打工仔換成 CPU,我們可以通過(guò)查看這些重要參數(shù):中斷、上下文切換、可運(yùn)行隊(duì)列、CPU 利用率來(lái)監(jiān)測(cè) CPU 的性能。

底線

上一篇 Linux 性能監(jiān)測(cè):介紹 提到了性能監(jiān)測(cè)前需要知道底線,那么監(jiān)測(cè) CPU 性能的底線是什么呢?通常我們期望我們的系統(tǒng)能到達(dá)以下目標(biāo):

  • CPU 利用率,如果 CPU 有 100% 利用率,那么應(yīng)該到達(dá)這樣一個(gè)平衡:65%-70% User Time,30%-35% System Time,0%-5% Idle Time;
  • 上下文切換,上下文切換應(yīng)該和 CPU 利用率聯(lián)系起來(lái)看,如果能保持上面的 CPU 利用率平衡,大量的上下文切換是可以接受的;
  • 可運(yùn)行隊(duì)列,每個(gè)可運(yùn)行隊(duì)列不應(yīng)該有超過(guò)1-3個(gè)線程(每處理器),比如:雙處理器系統(tǒng)的可運(yùn)行隊(duì)列里不應(yīng)該超過(guò)6個(gè)線程。

vmstat

vmstat 是個(gè)查看系統(tǒng)整體性能的小工具,小巧、即使在很 heavy 的情況下也運(yùn)行良好,并且可以用時(shí)間間隔采集得到連續(xù)的性能數(shù)據(jù)。

$ vmstat 1
procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu------
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 2  1    140 2787980 336304 3531996  0    0     0   128 1166 5033  3  3 70 25  0
 0  1    140 2788296 336304 3531996  0    0     0     0 1194 5605  3  3 69 25  0
 0  1    140 2788436 336304 3531996  0    0     0     0 1249 8036  5  4 67 25  0
 0  1    140 2782688 336304 3531996  0    0     0     0 1333 7792  6  6 64 25  0
 3  1    140 2779292 336304 3531992  0    0     0    28 1323 7087  4  5 67 25  0

參數(shù)介紹:

  • r,可運(yùn)行隊(duì)列的線程數(shù),這些線程都是可運(yùn)行狀態(tài),只不過(guò) CPU 暫時(shí)不可用;
  • b,被 blocked 的進(jìn)程數(shù),正在等待 IO 請(qǐng)求;
  • in,被處理過(guò)的中斷數(shù)
  • cs,系統(tǒng)上正在做上下文切換的數(shù)目
  • us,用戶占用 CPU 的百分比
  • sys,內(nèi)核和中斷占用 CPU 的百分比
  • wa,所有可運(yùn)行的線程被 blocked 以后都在等待 IO,這時(shí)候 CPU 空閑的百分比
  • id,CPU 完全空閑的百分比

舉兩個(gè)現(xiàn)實(shí)中的例子來(lái)實(shí)際分析一下:

$ vmstat 1
procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu------
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 4  0    140 2915476 341288 3951700  0    0     0     0 1057  523 19 81  0  0  0
 4  0    140 2915724 341296 3951700  0    0     0     0 1048  546 19 81  0  0  0
 4  0    140 2915848 341296 3951700  0    0     0     0 1044  514 18 82  0  0  0
 4  0    140 2915848 341296 3951700  0    0     0    24 1044  564 20 80  0  0  0
 4  0    140 2915848 341296 3951700  0    0     0     0 1060  546 18 82  0  0  0

從上面的數(shù)據(jù)可以看出幾點(diǎn):

  1. interrupts(in)非常高,context switch(cs)比較低,說(shuō)明這個(gè) CPU 一直在不停的請(qǐng)求資源;
  2. user time(us)一直保持在 80% 以上,而且上下文切換較低(cs),說(shuō)明某個(gè)進(jìn)程可能一直霸占著 CPU;
  3. run queue(r)剛好在4個(gè)。
$ vmstat 1
procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu------
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
14  0    140 2904316 341912 3952308  0    0     0   460 1106 9593 36 64  1  0  0
17  0    140 2903492 341912 3951780  0    0     0     0 1037 9614 35 65  1  0  0
20  0    140 2902016 341912 3952000  0    0     0     0 1046 9739 35 64  1  0  0
17  0    140 2903904 341912 3951888  0    0     0    76 1044 9879 37 63  0  0  0
16  0    140 2904580 341912 3952108  0    0     0     0 1055 9808 34 65  1  0  0

從上面的數(shù)據(jù)可以看出幾點(diǎn):

  1. context switch(cs)比 interrupts(in)要高得多,說(shuō)明內(nèi)核不得不來(lái)回切換進(jìn)程;
  2. 進(jìn)一步觀察發(fā)現(xiàn) system time(sy)很高而 user time(us)很低,而且加上高頻度的上下文切換(cs),說(shuō)明正在運(yùn)行的應(yīng)用程序調(diào)用了大量的系統(tǒng)調(diào)用(system call);
  3. run queue(r)在14個(gè)線程以上,按照這個(gè)測(cè)試機(jī)器的硬件配置(四核),應(yīng)該保持在12個(gè)以內(nèi)。

mpstat

mpstat 和 vmstat 類似,不同的是 mpstat 可以輸出多個(gè)處理器的數(shù)據(jù),下面的輸出顯示 CPU1 和 CPU2 基本上沒有派上用場(chǎng),系統(tǒng)有足夠的能力處理更多的任務(wù)。

$ mpstat -P ALL 1
Linux 2.6.18-164.el5 (vpsee) 	11/13/2009

02:24:33 PM  CPU   %user   %nice    %sys %iowait    %irq   %soft  %steal   %idle    intr/s
02:24:34 PM  all    5.26    0.00    4.01   25.06    0.00    0.00    0.00   65.66   1446.00
02:24:34 PM    0    7.00    0.00    8.00    0.00    0.00    0.00    0.00   85.00   1001.00
02:24:34 PM    1   13.00    0.00    8.00    0.00    0.00    0.00    0.00   79.00    444.00
02:24:34 PM    2    0.00    0.00    0.00  100.00    0.00    0.00    0.00    0.00      0.00
02:24:34 PM    3    0.99    0.00    0.99    0.00    0.00    0.00    0.00   98.02      0.00

ps

如何查看某個(gè)程序、進(jìn)程占用了多少 CPU 資源呢?下面是 Firefox 在 VPSee 的一臺(tái) Sunray 服務(wù)器上的運(yùn)行情況,當(dāng)前只有2個(gè)用戶在使用 Firefox:

$ while :; do ps -eo pid,ni,pri,pcpu,psr,comm | grep 'firefox'; sleep 1; done

  PID  NI PRI %CPU PSR COMMAND
 7252   0  24  3.2   3 firefox
 9846   0  24  8.8   0 firefox
 7252   0  24  3.2   2 firefox
 9846   0  24  8.8   0 firefox
 7252   0  24  3.2   2 firefox

原文:http://www.vpsee.com/2009/11/linux-system-performance-monitoring-cpu/

系列導(dǎo)航:

  1. Linux性能監(jiān)測(cè):監(jiān)測(cè)目的與工具介紹
  2. Linux性能監(jiān)測(cè):CPU篇
  3. Linux性能監(jiān)測(cè):內(nèi)存篇
  4. Linux性能監(jiān)測(cè):磁盤IO篇
  5. Linux性能監(jiān)測(cè):網(wǎng)絡(luò)篇
責(zé)任編輯:yangsai 來(lái)源: vpsee.com
相關(guān)推薦

2013-07-01 17:35:30

2010-12-22 13:14:52

Linux性能監(jiān)測(cè)

2010-12-22 13:19:43

Linux性能監(jiān)測(cè)網(wǎng)絡(luò)

2010-12-22 13:17:47

Linux性能監(jiān)測(cè)磁盤IO

2011-11-08 21:51:43

Linux 監(jiān)控 IO

2010-12-24 13:25:44

Linux性能監(jiān)控CPU

2010-05-26 18:08:30

Linux性能監(jiān)控

2010-12-22 12:54:03

Linux性能監(jiān)測(cè)

2011-03-31 11:14:29

MRTG監(jiān)測(cè)

2011-03-30 13:29:49

MRTG

2019-12-10 08:10:35

LinuxCPU性能優(yōu)化

2010-06-04 09:42:47

Linux 測(cè)試cpu

2022-04-23 16:30:22

Linux磁盤性能

2019-08-15 15:00:29

監(jiān)測(cè)Linux性能NetData

2020-03-18 08:00:00

LinuxHtop系統(tǒng)性能

2010-05-24 14:43:39

Linux性能監(jiān)測(cè)工具

2010-05-26 18:40:54

Linux性能監(jiān)控

2010-05-26 18:21:04

Linux性能監(jiān)控

2010-05-26 18:31:51

Linux性能監(jiān)控

2011-11-08 21:47:37

Linux 監(jiān)控 IO
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)