轉(zhuǎn)載于:http://blog.csdn.net/tianlesoftware/article/details/6198780
Linux系能監(jiān)控主要涉及系統(tǒng)4個(gè)方面資源的監(jiān)控:
- CPU
- Memory
- I/O
- Network
不同的應(yīng)用類型對(duì)各個(gè)資源的要求不一樣,所以監(jiān)控的時(shí)候需要根據(jù)應(yīng)用類型來(lái)著重對(duì)哪幾個(gè)資源進(jìn)行聯(lián)合重點(diǎn)監(jiān)控,這幾個(gè)資源也是比較可能成為系統(tǒng)瓶頸的地方。
- CPU相關(guān):需要使用大量CPU,比如高并發(fā)的Web服務(wù)器,圖像視頻處理,科學(xué)計(jì)算等。
- I/O相關(guān):處理大量數(shù)據(jù),需大量?jī)?nèi)存和存儲(chǔ),頻繁I/O讀寫,對(duì)CPU要求相對(duì)較少,大部分時(shí)候都是CPU等硬盤,比如數(shù)據(jù)庫(kù)服務(wù)器和文件服務(wù)器等。
監(jiān)控這些資源的使用狀況,一般需要用到以下命令:
| 工具 | 用途 |
| top | 查看進(jìn)程活動(dòng)狀態(tài)以及一些系統(tǒng)狀況 |
| vmstat | 查看系統(tǒng)狀態(tài),硬件和系統(tǒng)信息 |
| iostat | 查看CPU負(fù)載,硬盤狀況 |
| sar | 綜合工具,查看系統(tǒng)狀況 |
| mpstat | 查看多處理器狀況 |
| netstat | 查看網(wǎng)絡(luò)狀況 |
| iptraf | 實(shí)時(shí)網(wǎng)絡(luò)狀況檢測(cè) |
| tcpdump | 抓取網(wǎng)絡(luò)數(shù)據(jù)包,詳細(xì)分析 |
| tcptrace | 數(shù)據(jù)包分析工具 |
| netperf | 網(wǎng)絡(luò)帶寬工具 |
| dstat | 綜合工具,綜合了vmstat, iostat, ifstat, netstat等多個(gè)信息 |
?
?
?
?
?
?
?
?
?
1:CPU
???????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ì)列等。????這里用個(gè)例子來(lái)簡(jiǎn)單介紹一下這些概念和他們的關(guān)系,CPU每時(shí)每刻都有工作在做(進(jìn)程、線程)并且自己有一張工作清單(可運(yùn)行隊(duì)列),由老板(進(jìn)程調(diào)度)來(lái)決定他該干什么,他需要和老板溝通以便得到老板的想法并及時(shí)調(diào)整自己的工作(上下文切換),部分工作做完以后還需要及時(shí)向老板匯報(bào)(中斷),所以打工仔(CPU)除了做自己該做的工作以外,還有大量時(shí)間和精力花在溝通和匯報(bào)上。
???????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ì)列里。
?
可以從以下幾個(gè)方面監(jiān)控CPU的信息:
- 中斷
- 上下文切換
- 可運(yùn)行隊(duì)列
- CPU利用率
通常我們期望我們的系統(tǒng)能到達(dá)以下目標(biāo):
???????(1)CPU?利用率,如果?CPU?有?100%?利用率,那么應(yīng)該到達(dá)這樣一個(gè)平衡:65%-70%?User Time,30%-35%?System Time,0%-5%?Idle Time;
???????(2)上下文切換,上下文切換應(yīng)該和?CPU?利用率聯(lián)系起來(lái)看,如果能保持上面的?CPU?利用率平衡,大量的上下文切換是可以接受的;
???????(3)可運(yùn)行隊(duì)列,每個(gè)可運(yùn)行隊(duì)列不應(yīng)該有超過(guò)1-3個(gè)線程(每處理器),比如:雙處理器系統(tǒng)的可運(yùn)行隊(duì)列里不應(yīng)該超過(guò)6個(gè)線程。
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ù)介紹:
(
1
). r,可運(yùn)行隊(duì)列的線程數(shù),這些線程都是可運(yùn)行狀態(tài),只不過(guò) CPU 暫時(shí)不可用;
(
2
). b,被 blocked 的進(jìn)程數(shù),正在等待 IO 請(qǐng)求;
(
3
).
in
,被處理過(guò)的中斷數(shù)
(
4
). cs,系統(tǒng)上正在做上下文切換的數(shù)目
(
5
). us,用戶占用 CPU 的百分比
(
6
). sys,內(nèi)核和中斷占用 CPU 的百分比
(
7
). wa,所有可運(yùn)行的線程被 blocked 以后都在等待 IO,這時(shí)候 CPU 空閑的百分比
(
8
).
id
,CPU 完全空閑的百分比
?
?
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061
微信掃一掃加我為好友
QQ號(hào)聯(lián)系: 360901061
您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對(duì)您有幫助就好】元

