轉(zhuǎn)載于:http://blog.csdn.net/tianlesoftware/article/details/6198780
Linux系能監(jiān)控主要涉及系統(tǒng)4個方面資源的監(jiān)控:
- CPU
- Memory
- I/O
- Network
不同的應(yīng)用類型對各個資源的要求不一樣,所以監(jiān)控的時候需要根據(jù)應(yīng)用類型來著重對哪幾個資源進(jìn)行聯(lián)合重點監(jiān)控,這幾個資源也是比較可能成為系統(tǒng)瓶頸的地方。
- CPU相關(guān):需要使用大量CPU,比如高并發(fā)的Web服務(wù)器,圖像視頻處理,科學(xué)計算等。
- I/O相關(guān):處理大量數(shù)據(jù),需大量內(nèi)存和存儲,頻繁I/O讀寫,對CPU要求相對較少,大部分時候都是CPU等硬盤,比如數(shù)據(jù)庫服務(wù)器和文件服務(wù)器等。
監(jiān)控這些資源的使用狀況,一般需要用到以下命令:
工具 | 用途 |
top | 查看進(jìn)程活動狀態(tài)以及一些系統(tǒng)狀況 |
vmstat | 查看系統(tǒng)狀態(tài),硬件和系統(tǒng)信息 |
iostat | 查看CPU負(fù)載,硬盤狀況 |
sar | 綜合工具,查看系統(tǒng)狀況 |
mpstat | 查看多處理器狀況 |
netstat | 查看網(wǎng)絡(luò)狀況 |
iptraf | 實時網(wǎng)絡(luò)狀況檢測 |
tcpdump | 抓取網(wǎng)絡(luò)數(shù)據(jù)包,詳細(xì)分析 |
tcptrace | 數(shù)據(jù)包分析工具 |
netperf | 網(wǎng)絡(luò)帶寬工具 |
dstat | 綜合工具,綜合了vmstat, iostat, ifstat, netstat等多個信息 |
?
?
?
?
?
?
?
?
?
1:CPU
???????CPU?的占用主要取決于什么樣的資源正在?CPU?上面運(yùn)行,比如拷貝一個文件通常占用較少?CPU,因為大部分工作是由?DMA(Direct Memory Access)完成,只是在完成拷貝以后給一個中斷讓?CPU?知道拷貝已經(jīng)完成;科學(xué)計算通常占用較多的?CPU,大部分計算工作都需要在?CPU?上完成,內(nèi)存、硬盤等子系統(tǒng)只做暫時的數(shù)據(jù)存儲工作。要想監(jiān)測和理解?CPU?的性能需要知道一些的操作系統(tǒng)的基本知識,比如:中斷、進(jìn)程調(diào)度、進(jìn)程上下文切換、可運(yùn)行隊列等。????這里用個例子來簡單介紹一下這些概念和他們的關(guān)系,CPU每時每刻都有工作在做(進(jìn)程、線程)并且自己有一張工作清單(可運(yùn)行隊列),由老板(進(jìn)程調(diào)度)來決定他該干什么,他需要和老板溝通以便得到老板的想法并及時調(diào)整自己的工作(上下文切換),部分工作做完以后還需要及時向老板匯報(中斷),所以打工仔(CPU)除了做自己該做的工作以外,還有大量時間和精力花在溝通和匯報上。
???????CPU?也是一種硬件資源,和任何其他硬件設(shè)備一樣也需要驅(qū)動和管理程序才能使用,我們可以把內(nèi)核的進(jìn)程調(diào)度看作是?CPU?的管理程序,用來管理和分配?CPU?資源,合理安排進(jìn)程搶占?CPU,并決定哪個進(jìn)程該使用?CPU、哪個進(jìn)程該等待。操作系統(tǒng)內(nèi)核里的進(jìn)程調(diào)度主要用來調(diào)度兩類資源:進(jìn)程(或線程)和中斷,進(jìn)程調(diào)度給不同的資源分配了不同的優(yōu)先級,優(yōu)先級最高的是硬件中斷,其次是內(nèi)核(系統(tǒng))進(jìn)程,最后是用戶進(jìn)程。每個?CPU?都維護(hù)著一個可運(yùn)行隊列,用來存放那些可運(yùn)行的線程。線程要么在睡眠狀態(tài)(blocked?正在等待?IO)要么在可運(yùn)行狀態(tài),如果?CPU?當(dāng)前負(fù)載太高而新的請求不斷,就會出現(xiàn)進(jìn)程調(diào)度暫時應(yīng)付不過來的情況,這個時候就不得不把線程暫時放到可運(yùn)行隊列里。
?
可以從以下幾個方面監(jiān)控CPU的信息:
- 中斷
- 上下文切換
- 可運(yùn)行隊列
- CPU利用率
通常我們期望我們的系統(tǒng)能到達(dá)以下目標(biāo):
???????(1)CPU?利用率,如果?CPU?有?100%?利用率,那么應(yīng)該到達(dá)這樣一個平衡:65%-70%?User Time,30%-35%?System Time,0%-5%?Idle Time;
???????(2)上下文切換,上下文切換應(yīng)該和?CPU?利用率聯(lián)系起來看,如果能保持上面的?CPU?利用率平衡,大量的上下文切換是可以接受的;
???????(3)可運(yùn)行隊列,每個可運(yùn)行隊列不應(yīng)該有超過1-3個線程(每處理器),比如:雙處理器系統(tǒng)的可運(yùn)行隊列里不應(yīng)該超過6個線程。
vmstat? 是個查看系統(tǒng)整體性能的小工具,小巧、即使在很 ?heavy? 的情況下也運(yùn)行良好,并且可以用時間間隔采集得到連續(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)行隊列的線程數(shù),這些線程都是可運(yùn)行狀態(tài),只不過 CPU 暫時不可用; ( 2 ). b,被 blocked 的進(jìn)程數(shù),正在等待 IO 請求; ( 3 ). in ,被處理過的中斷數(shù) ( 4 ). cs,系統(tǒng)上正在做上下文切換的數(shù)目 ( 5 ). us,用戶占用 CPU 的百分比 ( 6 ). sys,內(nèi)核和中斷占用 CPU 的百分比 ( 7 ). wa,所有可運(yùn)行的線程被 blocked 以后都在等待 IO,這時候 CPU 空閑的百分比 ( 8 ). id ,CPU 完全空閑的百分比
?
?
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯(lián)系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機(jī)微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
