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

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