linux性能問題(CPU,內存,磁盤I/O,網絡)

一. CPU性能評估ios

1.vmstat [-V] [-n] [depay [count]]緩存

-V : 打印出版本信息,可選參數網絡

-n : 在週期性循環輸出時,頭部信息僅顯示一次性能

delay : 兩次輸出之間的時間間隔優化

count : 按照delay指定的時間間隔統計的次數。默認是1操作系統

如:vmstat 1 3接口

user1@user1-desktop:~$ vmstat 1 3隊列

procs -----------memory---------- ---swap-- -----io---- -system-- ----cpu----進程

r b swpd free buff cache si so bi bo in cs us sy id wa內存

0 0 0 1051676 139504 477028 0 0 46 31 130 493 3 1 95 2

0 0 0 1051668 139508 477028 0 0 0 4 377 1792 3 1 95 0

0 0 0 1051668 139508 477028 0 0 0 0 327 1741 3 1 95 0

r : 運行和等待CPU時間片的進程數(若長期大於CPU的個數,說明CPU不足,須要增長CPU)

b : 在等待資源的進程數(如等待I/O或者內存交換等)

swpd : 切換到內存交換區的內存數量,單位kB

free : 當前空閒物理內存,單位kB

buff : buffers cache的內存數量,通常對塊設備的讀寫才須要緩存

cache : page cached的內存數量,通常做爲文件系統cached,頻繁訪問的文件都會被cached

si : 由磁盤調入內存,即內存進入內存交換區的數量

so : 內存調入磁盤,內存交換區進入內存的數量

bi : 從塊設備讀入數據的總量,即讀磁盤,單位kB/s

bo : 寫入到塊設備的數據總量,即寫磁盤,單位kB/s

in : 某一時間間隔中觀測到的每秒設備中斷數

cs : 每秒產生的上下文切換次數

us :用戶進程消耗的CPU時間百分比【注意】

sy : 內核進程消耗CPU時間百分比【注意】

id : CPU處在空閒狀態的時間百分比【注意】

wa :IO等待所佔用的CPU時間百分比

若是si、so的值長期不爲0,表示系統內從不足,須要增長系統內存

bi+bo參考值爲1000,若超過1000,且wa較大,表示系統IO有問題,應該提升磁盤的讀寫性能

in與cs越大,內核消耗的CPU時間就越多

us+sy參考值爲80%,若是大於80%,說明可能存在CPU資源不足的狀況

綜上所述,CPU性能評估中重點注意r、us、sy和id列的值。

2. sar [options] [-o filename] [interval [count] ]

options:

-A :顯示系統全部資源設備(CPU、內存、磁盤)的運行狀態

-u : 顯示系統全部CPU在採樣時間內的負載狀態

-P : 顯示指定CPU的使用狀況(CPU計數從0開始)

-d : 顯示全部硬盤設備在採樣時間內的使用情況

-r : 顯示內存在採樣時間內的使用情況

-b : 顯示緩衝區在採樣時間內的使用狀況

-v : 顯示進程、文件、I節點和鎖表狀態

-n :顯示網絡運行狀態。參數後跟DEV(網絡接口)、EDEV(網絡錯誤統計)、SOCK(套接字)、FULL(顯示其它3個參數全部)。可單獨或一塊兒使用

-q : 顯示運行隊列的大小,與系統當時的平均負載相同

-R : 顯示進程在採樣時間內的活動狀況

-y : 顯示終端設備在採樣時間內的活動狀況

-w : 顯示系統交換活動在採樣時間內的狀態

-o : 將命令結果以二進制格式存放在指定的文件中

interval : 採樣間隔時間,必須有的參數

count : 採樣次數,默認1

如:sar -u 1 3

user1@user1-desktop:~$ sar -u 1 3

Linux 2.6.35-27-generic (user1-desktop) 2011年03月05日 _i686_ (2 CPU)

09時27分18秒 CPU %user %nice %system %iowait %steal %idle

09時27分19秒 all 1.99 0.00 0.50 5.97 0.00 91.54

09時27分20秒 all 3.90 0.00 2.93 5.85 0.00 87.32

09時27分21秒 all 2.93 0.00 1.46 4.39 0.00 91.22

平均時間: all 2.95 0.00 1.64 5.40 0.00 90.02

%user : 用戶進程消耗CPU時間百分比

%nice : 運行正常進程消耗CPU時間百分比

%system : 系統進程消耗CPU時間百分比

%iowait : IO等待多佔用CPU時間百分比

%steal : 內存在相對緊張壞經下pagein強制對不一樣頁面進行的steal操做

%idle : CPU處在空閒狀態的時間百分比

 

3. iostat [-c | -d] [-k] [-t] [-x [device]] [interval [count]]

-c :顯示CPU使用狀況

-d :顯示磁盤使用狀況

-k : 每秒以k bytes爲單位顯示數據

-t :打印出統計信息開始執行的時間

-x device :指定要統計的磁盤設備名稱,默認爲全部磁盤設備

interval :制定兩次統計時間間隔

count : 統計次數

如: iostat -c

user1@user1-desktop:~$ iostat -c

Linux 2.6.35-27-generic (user1-desktop) 2011年03月05日 _i686_ (2 CPU)

avg-cpu: %user %nice %system %iowait %steal %idle

2.51 0.02 1.27 1.40 0.00 94.81

(每項表明的含義與sar相同)

 

4uptime ,如:

user1@user1-desktop:~$ uptime

10:13:30 up 1:15, 2 users, load average: 0.00, 0.07, 0.11

顯示的分別是:系統當前時間,系統上次開機到如今運行了多長時間,目前登陸用戶個數,系統在1分鐘內、5分鐘內、15分鐘內的平均負載

注意:load average的三個值通常不能大於系統CPU的個數,不然說明CPU很繁忙

二 . 內存性能評估

1free

2.watch 與 free 相結合,在watch後面跟上須要運行的命令,watch就會自動重複去運行這個命令,默認是2秒執行一次,如:

Every 2.0s: free Sat Mar 5 10:30:17 2011

total used free shared buffers cached

Mem: 2060496 1130188 930308 0 261284 483072

-/+ buffers/cache: 385832 1674664

Swap: 3000316 0 3000316

(-n指定重複執行的時間,-d表示高亮顯示變更)

3.使用vmstat,關注swpd、si和so

4. sar -r,如:

user1@user1-desktop:~$ sar -r 2 3

Linux 2.6.35-27-generic (user1-desktop) 2011年03月05日 _i686_ (2 CPU)

10時34分11秒 kbmemfree kbmemused %memused kbbuffers kbcached kbcommit %commit

10時34分13秒 923548 1136948 55.18 265456 487156 1347736 26.63

10時34分15秒 923548 1136948 55.18 265464 487148 1347736 26.63

10時34分17秒 923548 1136948 55.18 265464 487156 1347736 26.63

平均時間: 923548 1136948 55.18 265461 487153 1347736 26.63

kbmemfree : 空閒物理內存

kbmemused : 已使用物理內存

%memused : 已使用內存佔總內存百分比

kbbuffers : Buffer Cache大小

kbcached : Page Cache大小

kbcommit : 應用程序當前使用內存大小

%commit :應用程序使用內存百分比

 

 

三 . 磁盤I/O性能評估

1sar -d ,如:

user1@user1-desktop:~$ sar -d 1 3

Linux 2.6.35-27-generic (user1-desktop) 2011年03月05日 _i686_ (2 CPU)

10時42分27秒 DEV tps rd_sec/s wr_sec/s avgrq-sz avgqu-sz await svctm %util

10時42分28秒 dev8-0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00

10時42分28秒 DEV tps rd_sec/s wr_sec/s avgrq-sz avgqu-sz await svctm %util

10時42分29秒 dev8-0 2.00 0.00 64.00 32.00 0.02 8.00 8.00 1.60

10時42分29秒 DEV tps rd_sec/s wr_sec/s avgrq-sz avgqu-sz await svctm %util

10時42分30秒 dev8-0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00

平均時間: DEV tps rd_sec/s wr_sec/s avgrq-sz avgqu-sz await svctm %util

平均時間: dev8-0 0.67 0.00 21.33 32.00 0.01 8.00 8.00 0.53

DEV : 磁盤設備名稱

tps :每秒到物理磁盤的傳送數,即每秒的I/O流量。一個傳送就是一個I/O請求,多個邏輯請求能夠被合併爲一個物理I/O請求

rc_sec/s:每秒從設備讀入的扇區數(1扇區=512字節)

wr_sec/s : 每秒寫入設備的扇區數目

avgrq-sz : 平均每次設備I/O操做的數據大小(以扇區爲單位)

avgqu-sz : 平均I/O隊列的長度

await : 平均每次設備I/O操做的等待時間(毫秒)

svctm :平均每次設備I/O 操做的服務時間(毫秒)

%util :一秒中有百分之幾的時間用用於I/O操做

正常狀況下svctm應該小於await,而svctm的大小和磁盤性能有關,CPU、內存的負荷也會對svctm值形成影響,過多的請求也會簡介致使svctm值的增長。

await的大小通常取決與svctm的值和I/O隊列長度以及I/O請求模式。若是svctm與await很接近,表示幾乎沒有I/O等待,磁盤性能很好;若是await的值遠高於svctm的值,表示I/O隊列等待太長,系統上運行的應用程序將變慢,此時能夠經過更換更快的硬盤來解決問題。

%util若接近100%,表示磁盤產生I/O請求太多,I/O系統已經滿負荷地在工做,該磁盤可能存在瓶頸。長期下去,勢必影響系統的性能,可經過優化程序或者經過更換更高、更快的磁盤來解決此問題。

2. iostat -d

user1@user1-desktop:~$ iostat -d 2 3

Linux 2.6.35-27-generic (user1-desktop) 2011年03月05日 _i686_ (2 CPU)

Device: tps Blk_read/s Blk_wrtn/s Blk_read Blk_wrtn

sda 5.89 148.87 57.77 1325028 514144

Device: tps Blk_read/s Blk_wrtn/s Blk_read Blk_wrtn

sda 0.00 0.00 0.00 0 0

Device: tps Blk_read/s Blk_wrtn/s Blk_read Blk_wrtn

sda 0.00 0.00 0.00 0 0

Blk_read/s : 每秒讀取的數據塊數

Blk_wrtn/s : 每秒寫入的數據塊數

Blk_read : 讀取的全部塊數

Blk_wrtn : 寫入的全部塊數

若是Blk_read/s很大,表示磁盤直接讀取操做不少,能夠將讀取的數據寫入內存中進行操做;若是Blk_wrtn/s很大,表示磁盤的寫操做很頻繁,能夠考慮優化磁盤或者優化程序。這兩個選項沒有一個固定的大小,不一樣的操做系統值也不一樣,但長期的超大的數據讀寫,確定是不正常的,必定會影響系統的性能。

3iostat -x /dev/sda 3 ,對指定磁盤的單獨統計

4vmstat -d

四 . 網絡性能評估

1ping

time值顯示了兩臺主機之間的網絡延時狀況,若很大,表示網絡的延時很大。packets loss表示網絡丟包率,越小表示網絡的質量越高。

2netstat -i ,如:

user1@user1-desktop:~$ netstat -i

Kernel Interface table

Iface MTU Met RX-OK RX-ERR RX-DRP RX-OVR TX-OK TX-ERR TX-DRP TX-OVR Flg

eth0 1500 0 6043239 0 0 0 87311 0 0 0 BMRU

lo 16436 0 2941 0 0 0 2941 0 0 0 LRU

Iface : 網絡設備的接口名稱

MTU : 最大傳輸單元,單位字節

RX-OK / TX-OK : 準確無誤地接收 / 發送了多少數據包

RX-ERR / TX-ERR : 接收 / 發送數據包時產生了多少錯誤

RX-DRP / TX-DRP : 接收 / 發送數據包時丟棄了多少數據包

RX-OVR / TX-OVR : 因爲偏差而遺失了多少數據包

Flg :接口標記,其中:

L :該接口是個迴環設備

B : 設置了廣播地址

M : 接收全部的數據包

R :接口正在運行

U : 接口處於活動狀態

O : 在該接口上禁用arp

P :表示一個點到點的鏈接

正常狀況下,RX-ERR,RX-DRP,RX-OVR,TX-ERR,TX-DRP,TX-OVR都應該爲0,若不爲0且很大,那麼網絡質量確定有問題,網絡傳輸性能也必定會降低。

當網絡傳輸存在問題時,能夠檢測網卡設備是否存在故障,還能夠檢查網絡部署環境是否合理。

3. netstat -r (default行對應的值表示系統的默認路由)

4sar -n ,n後爲DEV(網絡接口信息)、EDEV(網絡錯誤統計信息)、SOCK(套接字信息)、和FULL(顯示全部)

wangxin@wangxin-desktop:~$ sar -n DEV 2 3

Linux 2.6.35-27-generic (wangxin-desktop) 2011年03月05日 _i686_ (2 CPU)

11時55分32秒 IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s

11時55分34秒 lo 2.00 2.00 0.12 0.12 0.00 0.00 0.00

11時55分34秒 eth0 2.50 0.50 0.31 0.03 0.00 0.00 0.00

11時55分34秒 IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s

11時55分36秒 lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00

11時55分36秒 eth0 1.50 0.00 0.10 0.00 0.00 0.00 0.00

11時55分36秒 IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s

11時55分38秒 lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00

11時55分38秒 eth0 14.50 0.00 0.88 0.00 0.00 0.00 0.00

平均時間: IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s

平均時間: lo 0.67 0.67 0.04 0.04 0.00 0.00 0.00

平均時間: eth0 6.17 0.17 0.43 0.01 0.00 0.00 0.00

IFACE : 網絡接口設備

rxpck/s : 每秒接收的數據包大小

txpck/s :每秒發送的數據包大小

rxkB/s : 每秒接受的字節數

txkB/s : 每秒發送的字節數

rxcmp/s : 每秒接受的壓縮數據包

txcmp/s : 每秒發送的壓縮數據包

rxmcst/s : 每秒接受的多播數據包

相關文章
相關標籤/搜索