Linux系統(tǒng)和性能監(jiān)控之CPU篇
編者注:本文由sanotes.net站長(zhǎng)tonnyom在2009年8月翻譯自Linux System and Performance Monitoring系列文章。本文是系列的第一篇,講述CPU方面的性能監(jiān)控。
前言: 網(wǎng)上其實(shí)有很多關(guān)于這方面的文章,那為什么還會(huì)有此篇呢,有這么幾個(gè)原因,是我翻譯的動(dòng)力,第一,概念和內(nèi)容雖然老套,但都講得很透徹,而且還很全面.第二,理論結(jié)合實(shí)際,其中案例分析都不錯(cuò).第三,不花哨,采用的工具及命令都是最基本的,有助于實(shí)際操作。但本人才疏學(xué)淺,譯文大多數(shù)都是立足于自己對(duì)原文的理解,大家也可以自己去OSCAN上找原文,如果有什么較大出入,還望留言回復(fù),甚是感激!
1.0 性能監(jiān)控介紹
性能優(yōu)化就是找到系統(tǒng)處理中的瓶頸以及去除這些的過程,多數(shù)管理員相信看一些相關(guān)的"cook book"就可以實(shí)現(xiàn)性能優(yōu)化,通常通過對(duì)內(nèi)核的一些配置是可以簡(jiǎn)單的解決問題,但并不適合每個(gè)環(huán)境,性能優(yōu)化其實(shí)是對(duì)OS 各子系統(tǒng)達(dá)到一種平衡的定義,這些子系統(tǒng)包括了:
CPU Memory IO Network
這些子系統(tǒng)之間關(guān)系是相互彼此依賴的,任何一個(gè)高負(fù)載都會(huì)導(dǎo)致其他子系統(tǒng)出現(xiàn)問題.比如:
- 大量的頁調(diào)入請(qǐng)求導(dǎo)致內(nèi)存隊(duì)列的擁塞
- 網(wǎng)卡的大吞吐量可能導(dǎo)致更多的 CPU開銷
- 大量的CPU開銷又會(huì)嘗試更多的內(nèi)存使用請(qǐng)求
- 大量來自內(nèi)存的磁盤寫請(qǐng)求可能導(dǎo)致更多的 CPU 以及 IO問題
所以要對(duì)一個(gè)系統(tǒng)進(jìn)行優(yōu)化,查找瓶頸來自哪個(gè)方面是關(guān)鍵,雖然看似是某一個(gè)子系統(tǒng)出現(xiàn)問題,其實(shí)有可能是別的子系統(tǒng)導(dǎo)致的.
1.1 確定應(yīng)用類型
基于需要理解該從什么地方來入手優(yōu)化瓶頸,首先重要的一點(diǎn),就是理解并分析當(dāng)前系統(tǒng)的特點(diǎn),多數(shù)系統(tǒng)所跑的應(yīng)用類型,主要為2種:
IO Bound(譯注:IO 范疇): 在這個(gè)范疇中的應(yīng)用,一般都是高負(fù)荷的內(nèi)存使用以及存儲(chǔ)系統(tǒng),這實(shí)際上表示IO 范疇的應(yīng)用,就是一個(gè)大量數(shù)據(jù)處理的過程.IO 范疇的應(yīng)用不對(duì)CPU以及網(wǎng)絡(luò)發(fā)起更多請(qǐng)求(除非類似NAS這樣的網(wǎng)絡(luò)存儲(chǔ)硬件).IO 范疇的應(yīng)用通常使用CPU 資源都是為了產(chǎn)生IO 請(qǐng)求以及進(jìn)入到內(nèi)核調(diào)度的sleep 狀態(tài).通常數(shù)據(jù)庫(kù)軟件(譯注:mysql,oracle等)被認(rèn)為是IO 范疇的應(yīng)用類型.
CPU Bound(譯注:CPU 范疇): 在這個(gè)范疇中的應(yīng)用,一般都是高負(fù)荷的CPU 占用. CPU 范疇的應(yīng)用,就是一個(gè)批量處理CPU 請(qǐng)求以及數(shù)學(xué)計(jì)算的過程.通常web server,mail server,以及其他類型服務(wù)被認(rèn)為是CPU 范疇的應(yīng)用類型.
1.2 確定基準(zhǔn)線統(tǒng)計(jì)
系統(tǒng)利用率情況,一般隨管理員經(jīng)驗(yàn)以及系統(tǒng)本身用途來決定.唯一要清楚的就是,系統(tǒng)優(yōu)化希望達(dá)成什么效果,以及哪些方面是需要優(yōu)化,還有參考值是什么?因此就建立一個(gè)基準(zhǔn)線,這個(gè)統(tǒng)計(jì)數(shù)據(jù)必須是系統(tǒng)可用性能狀態(tài)值,用來比較不可用性能狀態(tài)值.
在以下例子中,1個(gè)系統(tǒng)性能的基準(zhǔn)線快照,用來比較當(dāng)高負(fù)荷時(shí)的系統(tǒng)性能快照.
# vmstat 1 procs memory swap io system cpu r b swpd free buff cache si so bi bo in cs us sy wa id 1 0 138592 17932 126272 214244 0 0 1 18 109 19 2 1 1 96 0 0 138592 17932 126272 214244 0 0 0 0 105 46 0 1 0 99 0 0 138592 17932 126272 214244 0 0 0 0 198 62 40 14 0 45 0 0 138592 17932 126272 214244 0 0 0 0 117 49 0 0 0 100 0 0 138592 17924 126272 214244 0 0 0 176 220 938 3 4 13 80 0 0 138592 17924 126272 214244 0 0 0 0 358 1522 8 17 0 75 1 0 138592 17924 126272 214244 0 0 0 0 368 1447 4 24 0 72 0 0 138592 17924 126272 214244 0 0 0 0 352 1277 9 12 0 79
# vmstat 1 procs memory swap io system cpu r b swpd free buff cache si so bi bo in cs us sy wa id 2 0 145940 17752 118600 215592 0 1 1 18 109 19 2 1 1 96 2 0 145940 15856 118604 215652 0 0 0 468 789 108 86 14 0 0 3 0 146208 13884 118600 214640 0 360 0 360 498 71 91 9 0 0 2 0 146388 13764 118600 213788 0 340 0 340 672 41 87 13 0 0 2 0 147092 13788 118600 212452 0 740 0 1324 620 61 92 8 0 0 2 0 147360 13848 118600 211580 0 720 0 720 690 41 96 4 0 0 2 0 147912 13744 118192 210592 0 720 0 720 605 44 95 5 0 0 2 0 148452 13900 118192 209260 0 372 0 372 639 45 81 19 0 0 2 0 149132 13692 117824 208412 0 372 0 372 457 47 90 10 0 0
從上面第一個(gè)結(jié)果可看到,最后一列(id) 表示的是空閑時(shí)間,我們可以看到,在基準(zhǔn)線統(tǒng)計(jì)時(shí),CPU 的空閑時(shí)間在79% - 100%.在第二個(gè)結(jié)果可看到,系統(tǒng)處于100%的占用率以及沒有空閑時(shí)間.從這個(gè)比較中,我們就可以確定是否是CPU 使用率應(yīng)該被優(yōu)化.
2.0 安裝監(jiān)控工具
多數(shù) *nix系統(tǒng)都有一堆標(biāo)準(zhǔn)的監(jiān)控命令.這些命令從一開始就是*nix 的一部分.Linux 則通過基本安裝包以及額外包提供了其他監(jiān)控工具,這些安裝包多數(shù)都存在各個(gè)Linux 發(fā)布版本中.盡管還有其他更多的開源以及第三方監(jiān)控軟件,但本文檔只討論基于Linux 發(fā)布版本的監(jiān)控工具.
本章將討論哪些工具怎樣來監(jiān)控系統(tǒng)性能.
工具 描述 Base 是否在軟件源倉(cāng)庫(kù)中 vmstat all purpose performance tool yes yes mpstat provides statistics per CPU no yes sar all purpose performance monitoring tool no yes iostat provides disk statistics no yes netstat provides network statistics yes yes dstat monitoring statistics aggregator no in most distributions iptraf traffic monitoring dashboard no yes netperf Network bandwidth tool no In some distributions ethtool reports on Ethernet interface configuration yes yes iperf Network bandwidth tool no yes tcptrace Packet analysis tool no yes
3.0 CPU 介紹
CPU 利用率主要依賴于是什么資源在試圖存取.內(nèi)核調(diào)度器將負(fù)責(zé)調(diào)度2種資源種類:線程(單一或者多路)和中斷.調(diào)度器去定義不同資源的不同優(yōu)先權(quán).以下列表從優(yōu)先級(jí)高到低排列:
Interrupts(譯注:中斷) - 設(shè)備通知內(nèi)核,他們完成一次數(shù)據(jù)處理的過程.例子,當(dāng)一塊網(wǎng)卡設(shè)備遞送網(wǎng)絡(luò)數(shù)據(jù)包或者一塊硬件提供了一次IO 請(qǐng)求.
Kernel(System) Processes(譯注:內(nèi)核處理過程) - 所有內(nèi)核處理過程就是控制優(yōu)先級(jí)別.
User Processes(譯注:用戶進(jìn)程) - 這塊涉及"userland".所有軟件程序都運(yùn)行在這個(gè)user space.這塊在內(nèi)核調(diào)度機(jī)制中處于低優(yōu)先級(jí).
從上面,我們可以看出內(nèi)核是怎樣管理不同資源的.還有幾個(gè)關(guān)鍵內(nèi)容需要介紹,以下部分就將介紹context(譯注:上下文切換),run queues(譯注:運(yùn)行隊(duì)列)以及utilization(譯注:利用率).
3.1 上下文切換
多數(shù)現(xiàn)代處理器都能夠運(yùn)行一個(gè)進(jìn)程(單一線程)或者線程.多路超線程處理器有能力運(yùn)行多個(gè)線程.然而,Linux 內(nèi)核還是把每個(gè)處理器核心的雙核心芯片作為獨(dú)立的處理器.比如,以Linux 內(nèi)核的系統(tǒng)在一個(gè)雙核心處理器上,是報(bào)告顯示為兩個(gè)獨(dú)立的處理器.
一個(gè)標(biāo)準(zhǔn)的Linux 內(nèi)核可以運(yùn)行50 至 50,000 的處理線程.在只有一個(gè)CPU時(shí),內(nèi)核將調(diào)度并均衡每個(gè)進(jìn)程線程.每個(gè)線程都分配一個(gè)在處理器中被開銷的時(shí)間額度.一個(gè)線程要么就是獲得時(shí)間額度或已搶先獲得一些具有較高優(yōu)先級(jí)(比如硬件中斷),其中較高優(yōu)先級(jí)的線程將從區(qū)域重新放置回處理器的隊(duì)列中.這種線程的轉(zhuǎn)換關(guān)系就是我們提到的上下文切換.
每次內(nèi)核的上下文切換,資源被用于關(guān)閉在CPU寄存器中的線程和放置在隊(duì)列中.系統(tǒng)中越多的上下文切換,在處理器的調(diào)度管理下,內(nèi)核將得到更多的工作.
3.2 運(yùn)行隊(duì)列
每個(gè)CPU 都維護(hù)一個(gè)線程的運(yùn)行隊(duì)列.理論上,調(diào)度器應(yīng)該不斷的運(yùn)行和執(zhí)行線程.進(jìn)程線程不是在sleep 狀態(tài)中(譯注:阻塞中和等待IO中)或就是在可運(yùn)行狀態(tài)中.如果CPU 子系統(tǒng)處于高負(fù)荷下,那就意味著內(nèi)核調(diào)度將無法及時(shí)響應(yīng)系統(tǒng)請(qǐng)求.導(dǎo)致結(jié)果,可運(yùn)行狀態(tài)進(jìn)程擁塞在運(yùn)行隊(duì)列里.當(dāng)運(yùn)行隊(duì)列越來越巨大,進(jìn)程線程將花費(fèi)更多的時(shí)間獲取被執(zhí)行.
比較流行的術(shù)語就是"load",它提供當(dāng)前運(yùn)行隊(duì)列的詳細(xì)狀態(tài).系統(tǒng) load 就是指在CPU 隊(duì)列中有多少數(shù)目的線程,以及其中當(dāng)前有多少進(jìn)程線程數(shù)目被執(zhí)行的組合.如果一個(gè)雙核系統(tǒng)執(zhí)行了2個(gè)線程,還有4個(gè)在運(yùn)行隊(duì)列中,則 load 應(yīng)該為 6. top 這個(gè)程序里顯示的load averages 是指1,5,15 分鐘以內(nèi)的load 情況.
3.3 CPU 利用率
CPU 利用率就是定義CPU 使用的百分比.評(píng)估系統(tǒng)最重要的一個(gè)度量方式就是CPU 的利用率.多數(shù)性能監(jiān)控工具關(guān)于CPU 利用率的分類有以下幾種:
User Time(譯注:用戶進(jìn)程時(shí)間) - 關(guān)于在user space中被執(zhí)行進(jìn)程在CPU 開銷時(shí)間百分比.
System Time(譯注:內(nèi)核線程以及中斷時(shí)間) - 關(guān)于在kernel space中線程和中斷在CPU 開銷時(shí)間百分比.
Wait IO(譯注:IO 請(qǐng)求等待時(shí)間) - 所有進(jìn)程線程被阻塞等待完成一次IO 請(qǐng)求所占CPU 開銷idle的時(shí)間百分比.
Idle(譯注:空閑) - 一個(gè)完整空閑狀態(tài)的進(jìn)程在CPU 處理器中開銷的時(shí)間百分比.
4.0 CPU 性能監(jiān)控
理解運(yùn)行隊(duì)列,利用率,上下文切換對(duì)怎樣CPU 性能最優(yōu)化之間的關(guān)系.早期提及到,性能是相對(duì)于基準(zhǔn)線數(shù)據(jù)的.在一些系統(tǒng)中,通常預(yù)期所達(dá)到的性能包括:
Run Queues - 每個(gè)處理器應(yīng)該運(yùn)行隊(duì)列不超過1-3 個(gè)線程.例子,一個(gè)雙核處理器應(yīng)該運(yùn)行隊(duì)列不要超過6 個(gè)線程.
CPU Utiliation - 如果一個(gè)CPU 被充分使用,利用率分類之間均衡的比例應(yīng)該是
65% - 70% User Time 30% - 35% System Time 0% - 5% Idle Time
Context Switches - 上下文切換的數(shù)目直接關(guān)系到CPU 的使用率,如果CPU 利用率保持在上述均衡狀態(tài)時(shí),大量的上下文切換是正常的.
很多Linux 上的工具可以得到這些狀態(tài)值,首先就是 vmstat 和 top 這2個(gè)工具.
4.1 vmstat 工具的使用
vmstat 工具提供了一種低開銷的系統(tǒng)性能觀察方式.因?yàn)?vmstat 本身就是低開銷工具,在非常高負(fù)荷的服務(wù)器上,你需要查看并監(jiān)控系統(tǒng)的健康情況,在控制窗口還是能夠使用vmstat 輸出結(jié)果.這個(gè)工具運(yùn)行在2種模式下:average 和 sample 模式.sample 模式通過指定間隔時(shí)間測(cè)量狀態(tài)值.這個(gè)模式對(duì)于理解在持續(xù)負(fù)荷下的性能表現(xiàn),很有幫助.下面就是
vmstat 運(yùn)行1秒間隔的示例:
# vmstat 1 procs -----------memory---------- ---swap-- -----io---- --system-- ----cpu---- r b swpd free buff cache si so bi bo in cs us sy id wa 0 0 104300 16800 95328 72200 0 0 5 26 7 14 4 1 95 0 0 0 104300 16800 95328 72200 0 0 0 24 1021 64 1 1 98 0 0 0 104300 16800 95328 72200 0 0 0 0 1009 59 1 1 98 0
Table 1: The vmstat CPU statistics
Field Description
r The amount of threads in the run queue. These are threads that are runnable, but the CPU is not available to execute them.
當(dāng)前運(yùn)行隊(duì)列中線程的數(shù)目.代表線程處于可運(yùn)行狀態(tài),但CPU 還未能執(zhí)行.
b This is the number of processes blocked and waiting on IO requests to finish.
當(dāng)前進(jìn)程阻塞并等待IO 請(qǐng)求完成的數(shù)目
in This is the number of interrupts being processed.
當(dāng)前中斷被處理的數(shù)目
cs This is the number of context switches currently happening on the system.
當(dāng)前kernel system中,發(fā)生上下文切換的數(shù)目
us This is the percentage of user CPU utilization.
CPU 利用率的百分比
sys This is the percentage of kernel and interrupts utilization.
內(nèi)核和中斷利用率的百分比
wa This is the percentage of idle processor time due to the fact that ALL runnable threads are blocked waiting on IO.
所有可運(yùn)行狀態(tài)線程被阻塞在等待IO 請(qǐng)求的百分比
id This is the percentage of time that the CPU is completely idle.
CPU 空閑時(shí)間的百分比
4.2 案例學(xué)習(xí):持續(xù)的CPU 利用率
在這個(gè)例子中,這個(gè)系統(tǒng)被充分利用
# vmstat 1 procs memory swap io system cpu r b swpd free buff cache si so bi bo in cs us sy wa id 3 0 206564 15092 80336 176080 0 0 0 0 718 26 81 19 0 0 2 0 206564 14772 80336 176120 0 0 0 0 758 23 96 4 0 0 1 0 206564 14208 80336 176136 0 0 0 0 820 20 96 4 0 0 1 0 206956 13884 79180 175964 0 412 0 2680 1008 80 93 7 0 0 2 0 207348 14448 78800 175576 0 412 0 412 763 70 84 16 0 0 2 0 207348 15756 78800 175424 0 0 0 0 874 25 89 11 0 0 1 0 207348 16368 78800 175596 0 0 0 0 940 24 86 14 0 0 1 0 207348 16600 78800 175604 0 0 0 0 929 27 95 3 0 2 3 0 207348 16976 78548 175876 0 0 0 2508 969 35 93 7 0 0 4 0 207348 16216 78548 175704 0 0 0 0 874 36 93 6 0 1 4 0 207348 16424 78548 175776 0 0 0 0 850 26 77 23 0 0 2 0 207348 17496 78556 175840 0 0 0 0 736 23 83 17 0 0 0 0 207348 17680 78556 175868 0 0 0 0 861 21 91 8 0 1
根據(jù)觀察值,我們可以得到以下結(jié)論:
1,有大量的中斷(in) 和較少的上下文切換(cs).這意味著一個(gè)單一的進(jìn)程在產(chǎn)生對(duì)硬件設(shè)備的請(qǐng)求.
2,進(jìn)一步顯示某單個(gè)應(yīng)用,user time(us) 經(jīng)常在85%或者更多.考慮到較少的上下文切換,這個(gè)應(yīng)用應(yīng)該還在處理器中被處理.
3,運(yùn)行隊(duì)列還在可接受的性能范圍內(nèi),其中有2個(gè)地方,是超出了允許限制.
4.3 案例學(xué)習(xí):超負(fù)荷調(diào)度
在這個(gè)例子中,內(nèi)核調(diào)度中的上下文切換處于飽和
# vmstat 1 procs memory swap io system cpu r b swpd free buff cache si so bi bo in cs us sy wa id 2 1 207740 98476 81344 180972 0 0 2496 0 900 2883 4 12 57 27 0 1 207740 96448 83304 180984 0 0 1968 328 810 2559 8 9 83 0 0 1 207740 94404 85348 180984 0 0 2044 0 829 2879 9 6 78 7 0 1 207740 92576 87176 180984 0 0 1828 0 689 2088 3 9 78 10 2 0 207740 91300 88452 180984 0 0 1276 0 565 2182 7 6 83 4 3 1 207740 90124 89628 180984 0 0 1176 0 551 2219 2 7 91 0 4 2 207740 89240 90512 180984 0 0 880 520 443 907 22 10 67 0 5 3 207740 88056 91680 180984 0 0 1168 0 628 1248 12 11 77 0 4 2 207740 86852 92880 180984 0 0 1200 0 654 1505 6 7 87 0 6 1 207740 85736 93996 180984 0 0 1116 0 526 1512 5 10 85 0 0 1 207740 84844 94888 180984 0 0 892 0 438 1556 6 4 90 0
根據(jù)觀察值,我們可以得到以下結(jié)論:
1,上下文切換數(shù)目高于中斷數(shù)目,說明kernel中相當(dāng)數(shù)量的時(shí)間都開銷在上下文切換線程.
2,大量的上下文切換將導(dǎo)致CPU 利用率分類不均衡.很明顯實(shí)際上等待io 請(qǐng)求的百分比(wa)非常高,以及user time百分比非常低(us).
3,因?yàn)镃PU 都阻塞在IO請(qǐng)求上,所以運(yùn)行隊(duì)列里也有相當(dāng)數(shù)目的可運(yùn)行狀態(tài)線程在等待執(zhí)行.
4.4 mpstat 工具的使用
如果你的系統(tǒng)運(yùn)行在多處理器芯片上,你可以使用 mpstat 命令來監(jiān)控每個(gè)獨(dú)立的芯片.Linux 內(nèi)核視雙核處理器為2 CPU's,因此一個(gè)雙核處理器的雙內(nèi)核就報(bào)告有4 CPU's 可用.
mpstat 命令給出的CPU 利用率統(tǒng)計(jì)值大致和 vmstat 一致,但是 mpstat 可以給出基于單個(gè)處理器的統(tǒng)計(jì)值.
# mpstat –P ALL 1 Linux 2.4.21-20.ELsmp (localhost.localdomain) 05/23/2006 05:17:31 PM CPU %user %nice %system %idle intr/s 05:17:32 PM all 0.00 0.00 3.19 96.53 13.27 05:17:32 PM 0 0.00 0.00 0.00 100.00 0.00 05:17:32 PM 1 1.12 0.00 12.73 86.15 13.27 05:17:32 PM 2 0.00 0.00 0.00 100.00 0.00 05:17:32 PM 3 0.00 0.00 0.00 100.00 0.00
4.5 案例學(xué)習(xí): 未充分使用的處理量
在這個(gè)例子中,為4 CPU核心可用.其中2個(gè)CPU 主要處理進(jìn)程運(yùn)行(CPU 0 和1).第3個(gè)核心處理所有內(nèi)核和其他系統(tǒng)功能(CPU 3).第4個(gè)核心處于idle(CPU 2).
使用 top 命令可以看到有3個(gè)進(jìn)程差不多完全占用了整個(gè)CPU 核心.
# top -d 1 top - 23:08:53 up 8:34, 3 users, load average: 0.91, 0.37, 0.13 Tasks: 190 total, 4 running, 186 sleeping, 0 stopped, 0 zombie Cpu(s): 75.2% us, 0.2% sy, 0.0% ni, 24.5% id, 0.0% wa, 0.0% hi, 0.0% si Mem: 2074736k total, 448684k used, 1626052k free, 73756k buffers Swap: 4192956k total, 0k used, 4192956k free, 259044k cached PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 15957 nobody 25 0 2776 280 224 R 100 20.5 0:25.48 php 15959 mysql 25 0 2256 280 224 R 100 38.2 0:17.78 mysqld 15960 apache 25 0 2416 280 224 R 100 15.7 0:11.20 httpd 15901 root 16 0 2780 1092 800 R 1 0.1 0:01.59 top 1 root 16 0 1780 660 572 S 0 0.0 0:00.64 init # mpstat –P ALL 1 Linux 2.4.21-20.ELsmp (localhost.localdomain) 05/23/2006 05:17:31 PM CPU %user %nice %system %idle intr/s 05:17:32 PM all 81.52 0.00 18.48 21.17 130.58 05:17:32 PM 0 83.67 0.00 17.35 0.00 115.31 05:17:32 PM 1 80.61 0.00 19.39 0.00 13.27 05:17:32 PM 2 0.00 0.00 16.33 84.66 2.01 05:17:32 PM 3 79.59 0.00 21.43 0.00 0.00 05:17:32 PM CPU %user %nice %system %idle intr/s 05:17:33 PM all 85.86 0.00 14.14 25.00 116.49 05:17:33 PM 0 88.66 0.00 12.37 0.00 116.49 05:17:33 PM 1 80.41 0.00 19.59 0.00 0.00 05:17:33 PM 2 0.00 0.00 0.00 100.00 0.00 05:17:33 PM 3 83.51 0.00 16.49 0.00 0.00 05:17:33 PM CPU %user %nice %system %idle intr/s 05:17:34 PM all 82.74 0.00 17.26 25.00 115.31 05:17:34 PM 0 85.71 0.00 13.27 0.00 115.31 05:17:34 PM 1 78.57 0.00 21.43 0.00 0.00 05:17:34 PM 2 0.00 0.00 0.00 100.00 0.00 05:17:34 PM 3 92.86 0.00 9.18 0.00 0.00 05:17:34 PM CPU %user %nice %system %idle intr/s 05:17:35 PM all 87.50 0.00 12.50 25.00 115.31 05:17:35 PM 0 91.84 0.00 8.16 0.00 114.29 05:17:35 PM 1 90.82 0.00 10.20 0.00 1.02 05:17:35 PM 2 0.00 0.00 0.00 100.00 0.00 05:17:35 PM 3 81.63 0.00 15.31 0.00 0.00
你也可以使用 ps 命令通過查看 PSR 這列,檢查哪個(gè)進(jìn)程在占用了哪個(gè)CPU.
# while :; do ps -eo pid,ni,pri,pcpu,psr,comm | grep 'mysqld'; sleep 1; done PID NI PRI %CPU PSR COMMAND 15775 0 15 86.0 3 mysqld PID NI PRI %CPU PSR COMMAND 15775 0 14 94.0 3 mysqld PID NI PRI %CPU PSR COMMAND 15775 0 14 96.6 3 mysqld PID NI PRI %CPU PSR COMMAND 15775 0 14 98.0 3 mysqld PID NI PRI %CPU PSR COMMAND 15775 0 14 98.8 3 mysqld PID NI PRI %CPU PSR COMMAND 15775 0 14 99.3 3 mysqld
4.6 結(jié)論
監(jiān)控 CPU 性能由以下幾個(gè)部分組成:
1,檢查system的運(yùn)行隊(duì)列,以及確定不要超出每個(gè)處理器3個(gè)可運(yùn)行狀態(tài)線程的限制.
2,確定CPU 利用率中user/system比例維持在70/30
3,當(dāng)CPU 開銷更多的時(shí)間在system mode,那就說明已經(jīng)超負(fù)荷并且應(yīng)該嘗試重新調(diào)度優(yōu)先級(jí)
4,當(dāng)I/O 處理得到增長(zhǎng),CPU 范疇的應(yīng)用處理將受到影響
原文:http://www.sanotes.net/html/y2009/370.html
【編輯推薦】