linux和性能相關的命令及系統性能診斷

內容:

一.             命令詳解

二.             識別cpu/io/內存/network瓶頸,及決方法啊

 

常用的和性能有關的命令

Iostat/vmstat/top/mpstat/time/strace/ipcs/ipcrm/ifconfig/tethereal/netstat/free/uptime

 

 

一.命令詳解

 

1.       Top命令詳解:

參考:http://bbs.linuxtone.org/thread-1684-1-1.html

 

[root@localhost ~]# top

 

top - 12:08:54 up 1 day, 21:06,  2 users,  load average: 0.16, 0.11, 0.06

Tasks: 123 total,   2 running, 121 sleeping,   0 stopped,   0 zombie

Cpu(s):  0.0% us,  0.0% sy,  0.0% ni, 99.9% id,  0.0% wa,  0.0% hi,  0.0% si

Mem:   8173076k total,  3188184k used,  4984892k free,   147472k buffers

Swap: 10223608k total,        0k used, 10223608k free,  2833104k cached

 

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND                      

    1 root      16   0  4772  564  468 S  0.0  0.0   0:01.34 init                          

    2 root      RT   0     0    0    0 S  0.0  0.0   0:00.01 migration/0                  

    3 root      34  19     0    0    0 S  0.0  0.0   0:00.00 ksoftirqd/0                  

    4 root      RT   0     0    0    0 S  0.0  0.0   0:00.01 migration/1                  

    5 root      34  19     0    0    0 S  0.0  0.0   0:00.00 ksoftirqd/1                  

    6 root      RT   0     0    0    0 S  0.0  0.0   0:00.00 migration/2                  

    7 root      34  19     0    0    0 S  0.0  0.0   0:00.00 ksoftirqd/2                  

    8 root      RT   0     0    0    0 S  0.0  0.0   0:00.00 migration/3                  

    9 root      34  19     0    0    0 S  0.0  0.0   0:00.00 ksoftirqd/3                  

   10 root      RT   0     0    0    0 S  0.0  0.0   0:00.01 migration/4                  

   11 root      34  19     0    0    0 S  0.0  0.0   0:00.00 ksoftirqd/4                  

   12 root      RT   0     0    0    0 S  0.0  0.0   0:00.00 migration/5                  

   13 root      34  19     0    0    0 S  0.0  0.0   0:00.00 ksoftirqd/5                  

   14 root      RT   0     0    0    0 S  0.0  0.0   0:00.00 migration/6                  

   15 root      34  19     0    0    0 S  0.0  0.0   0:00.00 ksoftirqd/6                   

   16 root      RT   0     0    0    0 S  0.0  0.0   0:00.00 migration/7                  

   17 root      34  19     0    0    0 S  0.0  0.0   0:00.00 ksoftirqd/7

 

 

 

top命令是Linux下常用的性能分析工具,能夠實時顯示系統中各個進程的資源佔用狀況,類似於Windows的任務管理器; top是一個動態顯示過程,即可以通過用戶按鍵來不斷刷新當前狀態.如果在前臺執行該命令,它將獨佔前臺,直到用戶終止該程序爲止.

 

默認情況下僅顯示比較重要的  PID、USER、PR、NI、VIRT、RES、SHR、S、%CPU、%MEM、TIME+、COMMAND 列。可以通過下面的快捷鍵來更改顯示內容。

 

1.     更改顯示內容通過 f 鍵可以選擇顯示的內容。按 f 鍵之後會顯示列的列表,按 a-z  即可顯示或隱藏對應的列,最後按回車鍵確定。

 

2.     按 o 鍵可以改變列的顯示順序。按小寫的 a-z 可以將相應的列向右移動,而大寫的 A-Z  可以將相應的列向左移動。最後按回車鍵確定。

 

 

3.     按大寫的 F 或 O 鍵,然後按 a-z 可以將進程按照相應的列進行排序。而大寫的  R 鍵可以將當前的排序倒轉。

 

 

統計信息區前五行是系統整體的統計信息。第一行是任務隊列信息,同 uptime  命令的執行結果。其內容如下:

 

12:08:54

當前時間

up 1 day, 21:06

系統運行時間,格式爲時:分

2 user

當前登錄用戶數

load average: 0.16, 0.11, 0.06

系統負載,即任務隊列的平均長度。

            三個數值分別爲  1分鐘、5分鐘、15分鐘前到現在的平均值。

 

 

第二、三行爲進程和CPU的信息。當有多個CPU時,通過按鍵“1“可以在總cpu和每個cpu信息之間切換,這些內容可能會超過兩行。內容如下:

 

Tasks: 123 total

進程總數

2 running

正在運行的進程數

121 sleeping

睡眠的進程數

0 stopped

停止的進程數

0 zombie

殭屍進程數

Cpu(s): 0.0% us

用戶空間佔用CPU百分比

0.0% sy

內核空間佔用CPU百分比

0.0% ni

用戶進程空間內改變過優先級的進程佔用CPU百分比

99.9% id

空閒CPU百分比

0.0% wa

等待輸入輸出的CPU時間百分比

0.0% hi

 

0.0% si

 

 

最後兩行爲內存信息。內容如下:

 

Mem:   8173076k total

物理內存總量

3188184k used

使用的物理內存總量

4984892k free

空閒內存總量

147472k buffers

用作內核緩存的內存量

Swap: 10223608k total

交換區總量

0k used

使用的交換區總量

10223608k free

空閒交換區總量

2833104k cached

緩衝的交換區總量。

            內存中的內容被換出到交換區,而後又被換入到內存,但使用過的交換區尚未被覆蓋,

            該數值即爲這些內容已存在於內存中的交換區的大小。

            相應的內存再次被換出時可不必再對交換區寫入。

 

 

進程信息區統計信息區域的下方顯示了各個進程的詳細信息。首先來認識一下各列的含義。

序號

列名

含義

a

PID

進程id

b

PPID

父進程id

c

RUSER

Real user name

d

UID

進程所有者的用戶id

e

USER

進程所有者的用戶名

f

GROUP

進程所有者的組名

g

TTY

啓動進程的終端名。不是從終端啓動的進程則顯示爲 ?

h

PR

優先級

i

NI

nice值。負值表示高優先級,正值表示低優先級

j

P

最後使用的CPU,僅在多CPU環境下有意義

k

%CPU

上次更新到現在的CPU時間佔用百分比

l

TIME

進程使用的CPU時間總計,單位秒

m

TIME+

進程使用的CPU時間總計,單位1/100秒

n

%MEM

進程使用的物理內存百分比

o

VIRT

進程使用的虛擬內存總量,單位kb。VIRT=SWAP+RES

p

SWAP

進程使用的虛擬內存中,被換出的大小,單位kb。

q

RES

進程使用的、未被換出的物理內存大小,單位kb。RES=CODE+DATA

r

CODE

可執行代碼佔用的物理內存大小,單位kb

s

DATA

可執行代碼以外的部分(數據段+棧)佔用的物理內存大小,單位kb

t

SHR

共享內存大小,單位kb

u

nFLT

頁面錯誤次數

v

nDRT

最後一次寫入到現在,被修改過的頁面數。

w

S

進程狀態。

            D=不可中斷的睡眠狀態

            R=運行

            S=睡眠

            T=跟蹤/停止

            Z=殭屍進程

x

COMMAND

命令名/命令行

y

WCHAN

若該進程在睡眠,則顯示睡眠中的系統函數名

z

Flags

任務標誌,參考 sched.h

2.    vmstat命令詳解

 

[root@localhost ~]# vmstat 1 5

procs -----------memory---------- ---swap-- -----io---- --system-- ----cpu----

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

 1  0      0 4886396 147552 2905036    0    0     1     4    4     3  0  0 100  0

 0  0      0 4886396 147552 2905036    0    0     0   228 4144  4103  1  1 98  0

 0  0      0 4886396 147552 2905036    0    0     0    88 1964  1286  0  0 99  0

 0  0      0 4886396 147552 2905036    0    0     0   100 2321  2007  1  0 99  0

 1  0      0 4886332 147552 2905036    0    0     0   156 2647  2265  1  0 99  0

[root@localhost ~]#

 

 

 

usage: vmstat [-V] [-n] [delay [count]]

              -V prints version.

              -n causes the headers not to be reprinted regularly.

              -a print inactive/active page stats.

              -d prints disk statistics

              -D prints disk table

              -p prints disk partition statistics

              -s prints vm table

              -m prints slabinfo

              -S unit size

              delay is the delay between updates in seconds.

              unit size k:1000 K:1024 m:1000000 M:1048576 (default is K)

              count is the number of updates.

 

 

 

vmstat是一個相當全面的性能分析工具,可以觀察到系統的進程狀態、內存使用、虛擬內存使用、磁盤的IO、中斷、上下問切換、CPU使用等性能信息

 

 

   Procs

       r: The number of processes waiting for run time.(運行的和等待(CPU時間片)運行的進程數,這個值也可以判斷是否需要增加CPU(長期大於cpu個數))

       b: The number of processes in uninterruptible sleep.(處於不可中斷狀態的進程數,這個值一般爲2-3倍cpu的個數就表明cpu排隊比較嚴要了,常見的情況是由IO引起的)

 

 

   Memory

       swpd: the amount of virtual memory used.(現在已經使用的虛擬內存,單位k)

       free: the amount of idle memory.(空閒物理內存,單位k)

       buff: the amount of memory used as buffers.(作爲buffer使用的物理內存,對塊設備讀寫進行緩衝,單位k)

       cache: the amount of memory used as cache. (作爲cache使用的物理內存,對文件系統的緩衝,單位k)

       inact: the amount of inactive memory. (-a option) (沒有活動的物理內存,單位k)

       active: the amount of active memory. (-a option) (有活動的物理內存,單位k)

 

buffer和cache的區別:

buffers are only used for file metadata (inodes, etc) and data from raw block devices. It's accessed via block device and block number.

Cache has file data blocks, and memory mapped information (i.e. files mapped with mmap() calls). It's accessed primarily via inode number.

  So, the main difference would be scope, One's more concerened with blocks on a device, the other with information in a file.

 buffer and cache both can flush to disk, however. The buffer to the device file and the cache through the file system layer to the block device.   

 

   Swap

       si: Amount of memory swapped in from disk (k/s). (每秒由磁盤調入內存的數量)

       so: Amount of memory swapped to disk (k/s). (每秒由內存調入磁盤的數量)

 

   IO

       bi: Blocks received from a block device (blocks/s). (從塊設備讀入的數據塊數量)

       bo: Blocks sent to a block device (blocks/s).  (寫到塊設備的數據塊數量)

如果這兩個值比較大,說明io的壓力也較大,cpu在io的等待可能也會大

 

   System

       in: The number of interrupts per second, including the clock. (每秒產生中斷的次數)

       cs: The number of context switches per second.(每秒產生上下文切換的次數)

這個兩個值比較大說明,說明消耗內核上cpu較多,可能不合理的使用cpu

 

 

   CPU

       These are percentages of total CPU time.

       us: Time spent running non-kernel code. (user time, including nice time) (用戶進程使用cpu的時間)

       sy: Time spent running kernel code. (system time) (內核進程使用cpu的時間)

       id: Time spent idle. Prior to Linux 2.5.41, this includes IO-wait time.(空閒事件使用cpu的時間,這個值越小,說明cpu可能很忙)

       wa: Time spent waiting for IO. Prior to Linux 2.5.41, shown as zero. (等待io使用cpu的時間)

 

 

3.       iostat命令詳解

 

iostat用於監控cpu的統計信息和磁盤的統計信息

 

[oracle@localhost ~]$ iostat

Linux 2.6.9-78.ELsmp (localhost)        09/29/2010

 

avg-cpu:  %user   %nice    %sys %iowait   %idle

           0.18    0.00    0.08    0.02   99.72

 

Device:            tps   Blk_read/s   Blk_wrtn/s   Blk_read   Blk_wrtn

sda               8.48        26.06       111.87    6429617   27601457

sda1              0.00         0.00         0.00        628          0

sda2              0.00         0.01         0.00       1654         33

sda3              8.48        26.05       111.87    6426351   27601424

dm-0             14.65        26.04       111.87    6425698   27601424

dm-1              0.00         0.00         0.00        360          0

 

 

cpu的統計信息,如果是多cpu系統,顯示的所有cpu的平均統計信息。

 

%user:用戶進程消耗cpu的比例

%nice:用戶進程優先級調整消耗的cpu比例

%sys:系統內核消耗的cpu比例

%iowait:等待磁盤io所消耗的cpu比例

%idle:閒置cpu的比例(不包括等待磁盤io的s)

 

磁盤的統計信息:

 

Device:設備的名稱

Tps:設備上每秒的io傳輸(可能多個io被組成一個io)的次數

Blk_read/s:每秒從設備讀取block(kernel 2.4以上,block=512byte)的數量

Blk_wrtn/s:每秒寫到設備block(kernel 2.4以上,block=512byte)的數量

Blk_read:間隔時間內,從設備讀取總的block數量

Blk_wrtn:間隔時間內,寫到設備總的block數量

 

 

默認iostat不帶任何參數顯示的是概要信息,如果要看更比較詳細的信息,可以用“iostat –x“,例子如下:

 

 

[root@localhost ~]# iostat -x

Linux 2.6.9-78.ELsmp (localhost)        09/30/2010

 

avg-cpu:  %user   %nice    %sys %iowait   %idle

           0.14    0.00    0.07    0.01   99.78

 

Device:    rrqm/s wrqm/s   r/s   w/s  rsec/s  wsec/s    rkB/s    wkB/s avgrq-sz avgqu-sz   await  svctm  %util

sda          0.04   5.08  0.46  6.74   19.21   94.55     9.60    47.27    15.80     0.01    0.93   0.18   0.13

sda1         0.00   0.00  0.00  0.00    0.00    0.00     0.00     0.00    26.17     0.00    3.08   2.83   0.00

sda2         0.00   0.00  0.00  0.00    0.00    0.00     0.00     0.00    17.57     0.00    0.99   0.84   0.00

sda3         0.03   5.08  0.46  6.74   19.20   94.55     9.60    47.27    15.80     0.01    0.93   0.18   0.13

dm-0         0.00   0.00  0.49 11.82   19.19   94.55     9.60    47.27     9.24     0.36   29.58   0.11   0.13

dm-1         0.00   0.00  0.00  0.00    0.00    0.00     0.00     0.00     8.00     0.00    6.22   0.62   0.00

 

字段說明:

 

rrqm/s:每秒進行merge(多個io的合併)讀操作的數量

wrqm/s:每秒進行merge(多個io的合併)寫操作的數量

r/s:每秒完成讀io設備的次數

w/s:每秒完成寫io設備的次數

rsec/s:每秒讀扇區的次數

wsec/s:每秒寫扇區的次數

rkB/s:每秒讀多少k字節,在kernel2.4以上,rkB/s=2×rsec/s,因爲一個扇區爲512bytes

wkB/s:每秒寫多少k字節,在kernel2.4以上,wkB/s =2×wsec/s,因爲一個扇區爲512bytes

avgrq-sz:平均每次io設備的大小(以扇區爲單位),因爲有merge讀或寫,所以每次io大小需要計算

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

await:每次io設備的等待時間,也包括io服務時間(毫秒)。

await的大小一般取決於服務時間(svctm) 以及 I/O 隊列的長度和 I/O 請求的發出模式。

如果 svctm 比較接近 await,說明I/O 幾乎沒有等待時間;

如果 await 遠大於 svctm,說明 I/O隊列太長,應用得到的響應時間變慢,

如果響應時間超過了用戶可以容許的範圍,這時可以考慮更換更快的磁盤,調整內核 elevator算法,優化應用,或者升級 CPU。

隊列長度(avgqu-sz)也可作爲衡量系統 I/O 負荷的指標,但由於 avgqu-sz 是按照單位時間的平均值,所以不能反映瞬間的 I/O 洪水

 

svctm:每次io設備的服務時間(毫秒),它的大小一般和磁盤性能有關:CPU/內存的負荷也會對其有影響,請求過多也會間接導致 svctm 的增加

 

%util:處理io操作的cpu比例,如果這個着接近100%,說明io請求非常多,cpu的所有時間都用來處理io請求,io系統負載很大(也有可能cpu資源不足),磁盤可能存在瓶頸;在%util等於70%的時候,io的讀取就會有很多等待。

 

 

下面是別人寫的這個參數輸出的分析

# iostat -x 1

avg-cpu:  %user   %nice    %sys   %idle

16.24    0.00    4.31   79.44

Device:    rrqm/s wrqm/s   r/s   w/s  rsec/s  wsec/s    rkB/s    wkB/s avgrq-sz avgqu-sz   await  svctm  %util

/dev/cciss/c0d0

0.00  44.90  1.02 27.55    8.16  579.59     4.08   289.80    20.57    22.35   78.21   5.00  14.29

/dev/cciss/c0d0p1

0.00  44.90  1.02 27.55    8.16  579.59     4.08   289.80    20.57    22.35   78.21   5.00  14.29

/dev/cciss/c0d0p2

0.00   0.00  0.00  0.00    0.00    0.00     0.00     0.00     0.00     0.00    0.00   0.00   0.00

 


上面的 iostat 輸出表明秒有 28.57 次設備 I/O 操作: 總IO(io)/s = r/s(讀) +w/s(寫) = 1.02+27.55 = 28.57 (次/秒) 其中寫操作佔了主體 (w:r = 27:1)。


平均每次設備 I/O 操作只需要 5ms 就可以完成,但每個 I/O 請求卻需要等上 78ms,爲什麼? 因爲發出的 I/O 請求太多 (每秒鐘約 29 個),假設這些請求是同時發出的,那麼平均等待時間可以這樣計算:

平均等待時間 = 單個 I/O 服務時間 * ( 1 + 2 + ... + 請求總數-1) / 請求總數

應用到上面的例子: 平均等待時間 = 5ms * (1+2+...+28)/29 = 70ms,和 iostat 給出的78ms 的平均等待時間很接近。這反過來表明 I/O 是同時發起的。


每秒發出的 I/O 請求很多 (約 29 個),平均隊列卻不長 (只有 2 個 左右),這表明這 29 個請求的到來並不均勻,大部分時間 I/O 是空閒的。


一秒中有 14.29% 的時間 I/O 隊列中是有請求的,也就是說,85.71% 的時間裏 I/O 系統無事可做,所有 29 個 I/O 請求都在142毫秒之內處理掉了。

delta(ruse+wuse)/delta(io) = await = 78.21 => delta(ruse+wuse)/s=78.21 * delta(io)/s = 78.21*28.57 =2232.8,表明每秒內的I/O請求總共需要等待2232.8ms。所以平均隊列長度應爲 2232.8ms/1000ms = 2.23,而iostat 給出的平均隊列長度 (avgqu-sz) 卻爲 22.35,爲什麼?! 因爲 iostat 中有 bug,avgqu-sz值應爲 2.23,而不是 22.35。

 

 

 

4.       sar命令詳解

 

sar的常用參數:

-A:所有報告的總和。

-u:CPU利用率

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

-d:硬盤使用報告。

-r:內存和交換空間的使用統計。

-g:串口I/O的情況。

-b:緩衝區使用情況。

-a:文件讀寫情況。

-c:系統調用情況。

-q:報告隊列長度和系統平均負載

-R:進程的活動情況。

-y:終端設備活動情況。

-w:系統交換活動。

-x { pid | SELF | ALL }:報告指定進程ID的統計信息,SELF關鍵字是sar進程本身的統計,ALL關鍵字是所有系統進程的統計

 

 

 

查看cpu

[root@localhost ~]# sar -u 1 5

Linux 2.6.9-78.ELsmp (localhost)        09/30/2010

 

06:08:27 PM       CPU     %user     %nice   %system   %iowait     %idle

06:08:28 PM       all      0.00      0.00      0.00      0.00    100.00

06:08:29 PM       all      0.00      0.00      0.12      0.00     99.88

06:08:30 PM       all      0.00      0.00      0.00      0.00    100.00

 

06:08:30 PM       CPU     %user     %nice   %system   %iowait     %idle

06:08:31 PM       all      0.00      0.00      0.00      0.00    100.00

06:08:32 PM       all      0.00      0.00      0.00      0.00    100.00

Average:          all      0.00      0.00      0.02      0.00     99.98

 

在顯示內容包括:


  %user:CPU處在用戶模式下的時間百分比。

    %nice:CPU處在帶NICE值的用戶模式下的時間百分比。

  %system:CPU處在系統模式下的時間百分比。

  %iowait:CPU等待輸入輸出完成時間的百分比。

    %idle:CPU空閒時間百分比。

        在所有的顯示中,我們應主要注意%iowait和%idle,%iowait的值過高,表示硬盤存在I/O瓶頸,%idle值高,表示CPU較空閒,如果%idle值高但系統響應慢時,有可能是CPU等待分配內存,此時應加大內存容量。%idle值如果持續低於10,那麼系統的CPU處理能力相對較低,表明系統中最需要解決的資源是CPU。

 

 

查看io

[root@localhost ~]# sar -b 1 5

Linux 2.6.9-78.ELsmp (localhost)        09/30/2010

 

06:10:06 PM       tps      rtps      wtps   bread/s   bwrtn/s

06:10:07 PM      0.00      0.00      0.00      0.00      0.00

06:10:08 PM      3.00      0.00      3.00      0.00     48.00

06:10:09 PM      2.00      0.00      2.00      0.00    112.00

 

06:10:09 PM       tps      rtps      wtps   bread/s   bwrtn/s

06:10:10 PM     21.78      0.00     21.78      0.00    213.86

06:10:11 PM      3.00      0.00      3.00      0.00     48.00

Average:         5.99      0.00      5.99      0.00     84.63

 

查看物理內存和swap空間使用信息

[root@localhost ~]# sar -r 1 5

Linux 2.6.9-78.ELsmp (localhost)        09/30/2010

 

06:12:21 PM kbmemfree kbmemused  %memused kbbuffers  kbcached kbswpfree kbswpused  %swpused  kbswpcad

06:12:22 PM   1272620   6900456     84.43    176328   6388732  10223608         0      0.00         0

06:12:23 PM   1272620   6900456     84.43    176328   6388732  10223608         0      0.00         0

06:12:24 PM   1272620   6900456     84.43    176328   6388732  10223608         0      0.00         0

 

06:12:24 PM kbmemfree kbmemused  %memused kbbuffers  kbcached kbswpfree kbswpused  %swpused  kbswpcad

06:12:25 PM   1272620   6900456     84.43    176328   6388732  10223608         0      0.00         0

06:12:26 PM   1272620   6900456     84.43    176328   6388732  10223608         0      0.00         0

Average:      1272620   6900456     84.43    176328   6388732  10223608         0      0.00         0

 

 

 

查看網卡流量統計

root@localhost ~]# sar -n EDEV 1 5

Linux 2.6.9-78.ELsmp (localhost)        09/30/2010

 

06:18:22 PM     IFACE   rxerr/s   txerr/s    coll/s  rxdrop/s  txdrop/s  txcarr/s  rxfram/s  rxfifo/s  txfifo/s

06:18:23 PM        lo      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00

06:18:23 PM      eth0      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00

06:18:23 PM      eth1      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00

06:18:23 PM      sit0      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00

 

06:18:23 PM     IFACE   rxerr/s   txerr/s    coll/s  rxdrop/s  txdrop/s  txcarr/s  rxfram/s  rxfifo/s  txfifo/s

06:18:24 PM        lo      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00

06:18:24 PM      eth0      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00

06:18:24 PM      eth1      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00

06:18:24 PM      sit0      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00

 

06:18:24 PM     IFACE   rxerr/s   txerr/s    coll/s  rxdrop/s  txdrop/s  txcarr/s  rxfram/s  rxfifo/s  txfifo/s

06:18:25 PM        lo      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00

06:18:25 PM      eth0      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00

06:18:25 PM      eth1      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00

06:18:25 PM      sit0      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00

 

06:18:25 PM     IFACE   rxerr/s   txerr/s    coll/s  rxdrop/s  txdrop/s  txcarr/s  rxfram/s  rxfifo/s  txfifo/s

06:18:26 PM        lo      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00

06:18:26 PM      eth0      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00

06:18:26 PM      eth1      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00

06:18:26 PM      sit0      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00

 

06:18:26 PM     IFACE   rxerr/s   txerr/s    coll/s  rxdrop/s  txdrop/s  txcarr/s  rxfram/s  rxfifo/s  txfifo/s

06:18:27 PM        lo      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00

06:18:27 PM      eth0      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00

06:18:27 PM      eth1      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00

06:18:27 PM      sit0      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00

 

Average:        IFACE   rxerr/s   txerr/s    coll/s  rxdrop/s  txdrop/s  txcarr/s  rxfram/s  rxfifo/s  txfifo/s

Average:           lo      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00

Average:         eth0      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00

Average:         eth1      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00

Average:         sit0      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00

 

 

查看運行進程隊列長度

[root@localhost ~]# sar -q 1 5

Linux 2.6.9-78.ELsmp (localhost)        09/30/2010

 

08:00:04 PM   runq-sz  plist-sz   ldavg-1   ldavg-5  ldavg-15

08:00:05 PM         0       127      0.02      0.16      0.10

08:00:06 PM         0       127      0.02      0.16      0.10

08:00:07 PM         0       127      0.02      0.16      0.10

 

08:00:07 PM   runq-sz  plist-sz   ldavg-1   ldavg-5  ldavg-15

08:00:08 PM         0       127      0.02      0.16      0.10

08:00:09 PM         0       127      0.01      0.16      0.10

Average:            0       127      0.02      0.16      0.10

 

字段說明:

runq-sz: 準備運行的進程運行隊列。

plist-sz:  進程隊列裏的進程和線程的數量

ldavg-1:  前一分鐘的系統平均負載(load average)

ldavg-5 : 前五分鐘的系統平均負載(load average)

ldavg-15 : 前15分鐘的系統平均負載(load average)

 

一般來說只要每個CPU的當前活動進程數不大於3那麼系統的性能就是良好的,如果每個CPU的任務數大於5,那麼就表示這臺機器的性能有嚴重問題。負載/cpu數量,表示每個cpu的活動進程數

 

 

5.       ps命令詳解

ps用戶查看進程的相關信息,和top類似

 

查看系統當前運行的所有進程

ps –ef 或ps auxw

其中參數a表示顯示系統中所有用戶的的進程;u表示輸出進程用戶所屬信息; x表示也顯示沒有控制檯的進程;w表示加寬可以顯示較多的資訊;若顯示行太長而被截斷則可以使用f參數

 

 

[root@localhost ~]# ps -auxw|more

USER       PID %CPU %MEM   VSZ  RSS TTY      STAT START   TIME COMMAND

root         1  0.0  0.0  4772  564 ?        S    Sep26   0:01 init [5]                                        

                 

root         2  0.0  0.0     0    0 ?        S    Sep26   0:00 [migration/0]

root         3  0.0  0.0     0    0 ?        SN   Sep26   0:00 [ksoftirqd/0]

root         4  0.0  0.0     0    0 ?        S    Sep26   0:00 [migration/1]

root         5  0.0  0.0     0    0 ?        SN   Sep26   0:00 [ksoftirqd/1]

root         6  0.0  0.0     0    0 ?        S    Sep26   0:00 [migration/2]

root         7  0.0  0.0     0    0 ?        SN   Sep26   0:00 [ksoftirqd/2]

root         8  0.0  0.0     0    0 ?        S    Sep26   0:00 [migration/3]

root         9  0.0  0.0     0    0 ?        SN   Sep26   0:00 [ksoftirqd/3]

root        10  0.0  0.0     0    0 ?        S    Sep26   0:00 [migration/4]

root        11  0.0  0.0     0    0 ?        SN   Sep26   0:00 [ksoftirqd/4]

 

字段說明:

USER: 行程擁有者 

PID: pid 

%CPU: 佔用的 CPU 使用率 

%MEM: 佔用的記憶體使用率 

VSZ: 佔用的虛擬記憶體大小 

RSS: 佔用的記憶體大小 

TTY: 終端的次要裝置號碼 (minor device number of tty) 

STAT: 該行程的狀態: 

     D: 不可中斷的靜止 (通悸□□縝b進行 I/O 動作) 

     R: 正在執行中 

     S: 靜止狀態 

     T: 暫停執行 

     Z: 不存在但暫時無法消除 

     W: 沒有足夠的記憶體分頁可分配 

     <: 高優先序的行程 

     N: 低優先序的行程 

     L: 有記憶體分頁分配並鎖在記憶體內 (即時系統或捱A I/O) 

START: 行程開始時間 

TIME: 執行的時間 

COMMAND:所執行的指令

 

 

 

6.    time命令詳解

查看命令運行的時間

 

[root@localhost ~]# time ps -ef | wc -l

134

 

real    0m0.009s

user    0m0.004s

sys     0m0.006s

 

7.    pstree命令詳解

顯示進程的樹形結構

 

[root@localhost ~]# pstree |more

init─┬─acpid

     ├─atd

     ├─crond

     ├─cups-config-dae

     ├─cupsd

     ├─dbus-daemon-1

     ├─dhclient

     ├─events/0─┬─aio/0

     │          ├─aio/1

     │          ├─aio/2

     │          ├─aio/3

     │          ├─aio/4

     │          ├─aio/5

     │          ├─aio/6

     │          ├─aio/7

     │          ├─kacpid

     │          ├─kblockd/0

     │          ├─kblockd/1

     │          ├─kblockd/2

     │          ├─kblockd/3

     │          ├─kblockd/4

     │          ├─kblockd/5

     │          ├─kblockd/6

     │          ├─kblockd/7

--More—

 

8.    進程的跟蹤命令介紹

 

進程無法啓動,軟件運行速度突然變慢,程序的"SegmentFault"等等都是讓每個Unix系統用戶頭痛的問題,可以用這些進程跟蹤命令來診斷(在aix上有類似gdb命令)

 

truss和strace:用來跟蹤一個進程的系統調用或信號產生的情況,

ltrace:用來跟蹤進程調用庫函數的情況。

 

 

這三個命令的用戶基本相同,介紹下常用的參數

 

-f :除了跟蹤當前進程外,還跟蹤其子進程。

-o file :將輸出信息寫到文件file中,而不是顯示到標準錯誤輸出(stderr)。

-p pid :綁定到一個由pid對應的正在運行的進程。此參數常用來調試後臺進程。

-e execve :只記錄 execve 這類系統調用

 

 

9.    網絡相關命令

 

ifconfig               # 查看所有網絡接口的屬性

netstat -lntp          # 查看所有監聽端口

netstat -antp          # 查看所有已經建立的連接

netstat -s             # 查看網絡統計信息進程

tethereal

 

iptraf:可以監控網絡流量

 

安裝方式:

1.官網及下載 http://iptraf.seul.org/download.html

2. get ftp://iptraf.seul.org/pub/iptraf/iptraf-3.0.0.tar.gz

3. yum install -y iptraf

 

 

 

 

 

 

帶說明:

 

10.Ipcs和Ipcrm命令詳解

 

Ipcs和ipcrm是管理System V IPC對象的(消息、信號量(semaphores)和共享內存),在日常工作中,有時會遇到共享內存無法釋放。這個時候就可以通過ipcs查詢,ipcrm刪除

樣例:

ipcs [-m|-q|-s]

-m      輸出有關共享內存(shared memory)的信息

-q      輸出有關信息隊列(message queue)的信息

-s      輸出有關“遮斷器”(semaphore)的信息

#ipcs -m

 

刪除ipc

ipcrm -m|-q|-s shm_id

#ipcrm -m 105

 

參考:http://www.52rd.com/Blog/Detail_RD.Blog_wqyuwss_6519.html

 

 

性能分析分類彙總:

進程性能分析相關的命令:

top,ps,pstree

 

Cpu性能分析相關命令:

vmstat,sar,time,top

 

Memory性能分析相關命令:

vmstat,top,ipcs,ipcrm,cat /proc/meminfo,cat /proc/slabinfo,cat /proc/<pid #>/maps

 

io性能分析相關命令:

vmstat,iostat,

 

網絡性能分析相關命令:

Ifconfig,netstat,tethereal,sar –n EDEV

 

 

 

 

 

 

 

 

二.             識別cpu/io/內存/network瓶頸,及決方法啊

 

1.       識別cpu性能瓶頸

 

衡量Cpu性能指標:

 

1. 用戶使用CPU的情況;

CPU運行常規用戶進程

CPU運行niced process

CPU運行實時進程

2. 系統使用CPU情況;

用於I/O管理:中斷和驅動

用於內存管理:頁面交換

用戶進程管理:進程開始和上下文切換

3.WIO:用於進程等待磁盤I/O而使CPU處於空閒狀態的比率。

4.CPU的空閒率,除了上面的WIO以外的空閒時間

5.CPU用於上下文交換的比率

6.nice

7.real-time

8.運行進程隊列的長度

9.平均負載

 

用於查看cpu性能的命令有:vmstat,iostat,sar,top,strace

既然已經知道cpu性能指標了,那就用命令查看確認

 

步驟一:先用vmstat查看系統的cpu整體運行狀況

 

[root@localhost ~]# vmstat -n 1 10

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 1282844 176332 6389000    0    0     1     6   10     8  0  0 100  0

 0  0      0 1282844 176332 6389000    0    0     0     0 1028   120  0  0 100  0

 0  0      0 1282844 176332 6389000    0    0     0     8 1011    41  0  0 100  0

 0  0      0 1282844 176332 6389000    0    0     0    28 1033   146  0  0 100  0

 0  0      0 1282844 176332 6389000    0    0     0    40 1009    31  0  0 100  0

 0  0      0 1282844 176332 6389000    0    0     0     0 1048   156  0  0 100  0

 0  0      0 1282844 176332 6389000    0    0     0    24 1010    35  0  0 100  0

 0  0      0 1282844 176332 6389000    0    0     0     0 1026   119  0  0 100  0

 0  0      0 1282844 176332 6389000    0    0     0     0 1017    63  0  0 100  0

 0  0      0 1282844 176332 6389000    0    0     0    24 1032   141  0  0 100  0

 

紅色的字表是和cpu性能有關的

r: 如果在procs中運行的序列(process r)是連續的大於在系統中的CPU的個數,表示cpu比較忙,系統現在運行比較慢,有多數的進程等待CPU.。如果r的輸出數大於系統中可用CPU個數的4倍的話, 則系統面臨着CPU短缺的問題,或者是CPU的速率過低,系統中有多數的進程在等待CPU,造成系統中進程運行過慢.

b : 如果在procs中運行的序列(process b), 即處於不可中斷狀態的進程數,連續我爲cpu的2-3倍就表明cpu排隊比較嚴要了

 

SYSTEM

in:每秒產生的中斷次數

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

上面2個值越大,會看到由內核消耗的CPU時間會越大

 

CPU

us:用戶進程消耗的CPU時間百分,

us的值比較高時,說明用戶進程消耗的CPU時間多,在服務高峯期持續大於50-60,是可以接受,但是如果長期超50%的使用,那麼我們就該考慮優化程序算法或者進行加速

 

sy: 內核進程消耗的CPU時間百分比

sy的值高時,說明系統內核消耗的CPU資源多,這並不是良性表現,我們應該檢查原因

wa: IO等待消耗的CPU時間百分比

wa的值高時,說明IO等待比較嚴重,這可能由於磁盤大量作隨機訪問造成,也有可能磁盤出現瓶頸(塊操作)。

id:CPU處於空閒狀態時間百分比,如果空閒時間(cpu id)持續爲0並且系統時間(cpu sy)是用戶時間的兩倍(cpu us) 系統則面臨着CPU資源的短缺. 在服務高峯期持續小於50,可以接受

 

通過這個命令可以觀察cpu性能的結果是:

A.如果r連續大於cpu的個數,甚至幾倍cpu個數;b也有持續有值,甚至cpu的2-3倍,並且id也持續小於50%,wa也比較小,這就表明cpu符合很嚴重。

B  再詳細確認可以用:sar -u 1 5,sar -q 1 5可以觀察cpu的使用率和cpu運行進程隊列長度及負載。

C. 如果想再看看具體是什麼進程在消耗cpu,就要使用命令:top,ps –auxw | more

D. 如果知道了某個進程消耗大量的cpu,想主要知道這個進程在做成什麼,那就用命令:strace

 

 

2.識別memory性能瓶頸

 

爲了提高磁盤存取效率, Linux做了一些精心的設計, 除了對dentry進行緩存(用於VFS,加速文件路徑名到inode的轉換), 還採取了兩種主要Cache方式:Buffer Cache和Page Cache.前者針對磁盤塊的讀寫,後者針對文件inode的讀寫.這些Cache有效縮短了I/O系統調用(比如read,write,getdents)的時間.

      內存活動基本上可以用3個數字來量化:活動虛擬內存總量,交換(swapping)率和調頁(paging)率.其中第一個數字表明內存的總需求量,後兩個數字表示那些內存中有多少比例正處在使用之中.目標是減少內存活動或增加內存量,直到調頁率保持在一個可以接受的水平上爲止.

     活動虛擬內存的總量(VM)=實際內存大小(size of real memory)(物理內存)+使用的交換空間大小(amount of swap space used)


     當程序運行需要的內存大於物理內存時,UNIX系統採用了調頁機制,即系統copy一些內存中的頁面到磁盤上,騰出來空間供進程使用。


大多數系統可以忍受偶爾的調頁,但是頻繁的調頁會使系統性能急劇下降。


UNIX內存管理:UNIX系統通過2種方法進行內存管理,“調頁算法”,“交換技術”。


調頁算法:是將內存中最近不常使用的頁面換到磁盤上,把常使用的頁面(活動頁面)保留

在內存中供進程使用。

交換技術:是系統將整個進程,而不是部分頁面,全部換到磁盤上。正常情況下,系統會發

生一些交換過程。


當內存嚴重不足時,系統會頻繁使用調頁和交換,這增加了磁盤I/O的負載。進一步降低了系統對作業的執行速度,即系統I/O資源問題又會影響到內存資源的分配。


Unix的虛擬內存

Unix的虛擬內存是一個十分複雜的子系統,它實現了進程間代碼與數據共享機制的透明性,並能夠分配比系統現有物理內存更多的內存,某些操作系統的虛存甚至能通過提供緩存功能影響到文件系統的性能,各種風格的UNIX的虛存的實現方式區別很大,但都離不開下面的4個概念。


1:實際內存

實際內存是指一個系統中實際存在的物理內存,稱爲RAM。實際內存是存儲臨時數據最快最有效的方式,因此必須儘可能地分配給應用程序,現在的RAM的形式有多種:SIMM、DIMM、Rambus、DDR等,很多RAM都可以使用糾錯機制(ECC)。


2:交換空間

交換空間是專門用於臨時存儲內存的一塊磁盤空間,通常在頁面調度和交換進程數據時使用,通常推薦交換空間的大小應該是物理內存的二到四倍。


3:頁面調度

頁面調度是指從磁盤向內存傳輸數據,以及相反的過程,這個過程之所以被稱爲頁面調度,是因爲Unix內存被平均劃分成大小相等的頁面;通常頁面大小爲4KB和8KB(在Solaris中可以用pagesize命令查看)。當可執行程序開始運行時,它的映象會一頁一頁地從磁盤中換入,與此類似,當某些內存在一段時間內空閒,就可以把它們換出到交換空間中,這樣就可以把空閒的RAM交給其他需要它的程序使用。


4:交換

頁面調度通常容易和交換的概念混淆,頁面調度是指把一個進程所佔內存的空閒部分傳輸到磁盤上,而交換是指當系統中實際的內存已不夠滿足新的分配需求時,把整個進程傳輸到磁盤上,交換活動通常意味着內存不足。

 

[root@ticketA ~]# vmstat 1 10

procs -----------memory---------- ---swap-- -----io---- --system-- ----cpu----

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

 2  0  81616 105616 122168 31284140    1    1    16    24    0     0  2  0 98  0

 3  0  81616 105616 122168 31284140    0    0     0    12 5594  4285  3  1 96  0

 2  0  81616 105616 122172 31284136    0    0     0    16 5574  4176  3  1 96  0

 1  0  81616 105552 122172 31284136    0    0     0   108 5545  4329  3  1 96  0

 3  0  81616 105360 122172 31284136    0    0     0    36 5533  4195  3  1 96  0

 0  0  81616 105360 122180 31284128    0    0     0    60 5538  4341  3  1 96  0

 0  0  81616 105360 122180 31284128    0    0     0    48 5473  4179  3  1 96  0

 1  0  81616 105360 122180 31284128    0    0     0     8 5553  4299  3  1 96  0

 0  0  81616 105360 122180 31284128    0    0     0    20 5608  4231  3  1 96  0

 0  0  81616 105360 122180 31284128    0    0     0    60 5585  4285  3  0 96  0

 

 

MEMORY

-swap:切換到交換內存上的內存(默認以KB爲單位)

如果SWAP的值不爲0,或者還比較大,比如超過100M了,但是SI,SO的值長期爲0,這種情況我們可以不用擔心,不會影響系統性能。-free:空閒的物理內存

- buff:作爲buffer cache的內存,對塊設備的讀寫進行緩衝

- cache:作爲page cache的內存,文件系統的cache

如果cache的值大的時候,說明cache處的文件數多,如果頻繁訪問到的文件都能被cache處,那麼磁盤的讀IO bi會非常小。

SWAP

-si:交換內存使用,由磁盤調入內存

-so:交換內存使用,由內存調入磁盤

內存夠用的時候,這2個值都是0,如果這2個值長期大於0時,系統性能會受到影響,磁盤IO和CPU資源都會被消耗。

我發現有些朋友看到空閒內存(FREE)很少的或接近於0時,就認爲內存不夠用了,實際上不能光看這一點,Linux是搶佔內存式的OS,還要結合si,so,如果free很少,但是si,so也很少(大多時候是0),那麼不用擔心,系統性能這時不會受到影響的。

 

 

3.識別io性能瓶頸

 

首先用命令vmstat大概瞭解系統狀況

 

[root@localhost ~]# vmstat 1 5

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 1225516 176836 6452620    0    0     0     4    3     3  0  0 100  0

 0  0      0 1225524 176836 6452620    0    0     0    32 1021    66  0  0 100  0

 0  0      0 1225524 176836 6452620    0    0     0     0 1028   122  0  0 100  0

 0  0      0 1225524 176836 6452620    0    0     0    40 1009    36  0  0 100  0

 0  0      0 1225524 176836 6452620    0    0     0     0 1028   124  0  0 100  0

 

如果b的值爲2-3倍cpu數量,bi和bo的值很大(有時bi和bo值很小,但in和cs很大,也會引起磁盤io負載重),wa的值持續很高,如高於40,id也持續高於70,這些現象都表明系統的io可能出現性能問題。可以進一步通過iostat命令分析。

 

root@localhost ~]# iostat -x 1 5

Linux 2.6.9-78.ELsmp (localhost)        10/08/2010

 

avg-cpu:  %user   %nice    %sys %iowait   %idle

           0.07    0.00    0.03    0.01   99.89

 

Device:    rrqm/s wrqm/s   r/s   w/s  rsec/s  wsec/s    rkB/s    wkB/s avgrq-sz avgqu-sz   await  svctm  %util

sda          0.01   3.26  0.16  4.36    6.42   60.99     3.21    30.49    14.91     0.00    0.56   0.16   0.07

sda1         0.00   0.00  0.00  0.00    0.00    0.00     0.00     0.00    26.17     0.00    3.08   2.83   0.00

sda2         0.00   0.00  0.00  0.00    0.00    0.00     0.00     0.00    17.57     0.00    0.99   0.84   0.00

sda3         0.01   3.26  0.16  4.36    6.42   60.99     3.21    30.49    14.91     0.00    0.56   0.16   0.07

dm-0         0.00   0.00  0.17  7.62    6.42   60.99     3.21    30.49     8.65     0.12   15.45   0.09   0.07

dm-1         0.00   0.00  0.00  0.00    0.00    0.00     0.00     0.00     8.00     0.00    6.22   0.62   0.00

 

查看iostat的結果,首先看%util(服務io的時間佔總時間的百分比),如果這個值接近100%,表示io的請求很多(表示任務服務的所有時間幾乎都用在io上),這種現象表明磁盤io性能出現瓶頸。

再看await(表示每次io設備等待時間)和svctm(表示每次io設備服務時間,一般性能越好的磁盤,這個值越小)。

如果svctm接近await,說明io幾乎沒有等待,每個io設備都得到及時的響應

如果svctm遠小於await,說明io等待隊列可能很長,io的得到服務的時間將延長(排隊+服務時間)。

 

avgqu-sz表示io排隊的現象,如果排隊過長會影響io的響應時間

 

r/s+w/s:可以計算當前系統的iops(可以結合硬盤的測試或者硬件參數來衡量是否超過磁盤的iops最大值)

 

 

4.網絡性能識別與分析

 

可以通過命令netstat,iptraf命令來識別

 

可以通過ifconfig,netstat連接網絡基本情況

 

ifconfig               # 查看所有網絡接口的屬性

netstat -lntp          # 查看所有監聽端口

netstat -antp          # 查看所有已經建立的連接

netstat -s             # 查看網絡統計信息進程

 

用iptraf連接網絡的速率,如果網絡的帶寬達到極限,那一般系統的支持的進程數或者最大連接數也會成爲瓶頸

 

 

知道哪有問題了,接下來就是調整了,調整的方法如下:

 

Cpu的調整:

一般在cpu的wa小於5%就需要調整cpu,調整的相關參數在目錄下:/proc/sys/kernel/;一邊調整參數threads-max,pid_max,如下:

[root@localhost ~]# sysctl kernel.pid_max

kernel.pid_max = 32768

[root@localhost ~]# sysctl kernel.pid_max=32769

kernel.pid_max = 32769

 

memory調整:

當出現嚴重的換頁現象,應該注意內存不足的影響

1. 關閉不必要的非核心進程

 

2. 調整/proc/sys/vm/下的系統參數

 

保證linux有足夠的物理內存,可以調整vm的如下參數

 

vm.min_free_kbytes=409600;//默認值是3797,保證物理內存有足夠空閒空間,防止突發性換頁

vm.vfs_cache_pressure=200;//默認是100,增大這個參數設置了虛擬內存回收directory和i-node緩衝的傾向,這個值越大。越易回收

vm.swappiness=40 //缺省60,減少這個參數會使系統儘快通過swapout不使用的進程資源來釋放更多的物理內存

3. 配置較大的swap,一般爲物理內存2倍

 

 

Io的調整:

1.       負載平衡,磁盤io均分

2.       啓用異步io

查看是否啓用異步io

[root@localhost ~]# cat /proc/slabinfo |grep kio

kioctx 0  0    384   10    1 : tunables   54   27    8 : slabdata      0      0      0

kiocb 0 0    256   15    1 : tunables  120   60    8 : slabdata      0      0      0

 

3.       塊設備調大預讀扇區readahead

[root@localhost ~]# blockdev --report

RO    RA   SSZ   BSZ   StartSec     Size    Device

rw   256   512  4096          0  570949632  /dev/sda

rw   256   512  1024         63      80262  /dev/sda1

rw   256   512  1024      80325     208845  /dev/sda2

rw   256   512   512     289170  570644865  /dev/sda3

rw   256   512  4096     289170  550109184  /dev/dm-0

rw   256   512  4096     289170   20447232  /dev/dm-1

[root@localhost ~]# blockdev --setra 2048 /dev/sda1

[root@localhost ~]# blockdev --report

RO    RA   SSZ   BSZ   StartSec     Size    Device

rw  2048   512  4096          0  570949632  /dev/sda

rw  2048   512  1024         63      80262  /dev/sda1

rw  2048   512  1024      80325     208845  /dev/sda2

rw  2048   512   512     289170  570644865  /dev/sda3

rw   256   512  4096     289170  550109184  /dev/dm-0

rw   256   512  4096     289170   20447232  /dev/dm-1

 

4.       調整vm相關參數

 

 改善io系統的性能的vm參數

overcommit_memory = 0

vm.overcommit_ratio = 10 //默認值是50,用於虛擬內存的物理內存的百分比

vm.dirty_ratio = 20 //默認值是40,爲了保持穩定,持續的寫入,把這個值調整的小一些,經驗值是20

vm.dirty_background_ratio //缺省數值是500,也就是5秒,如果系統要求穩定持續的寫,可以適當降低該值,把峯值的寫操作平均多次,也避免宕機丟失更多的數據

vm.dirty_expire_centisecs //缺省是3000,也就是30秒,如果系統寫操作壓力很大,可以適當減小該值,但也不要太小;建議設置爲 1500

=====================================================

轉至http://blog.csdn.net/wyzxg/article/details/6234457

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章