關於Linux性能監控相信大家已經小有瞭解,對於IO篇,讓我們先分析一些具體的情況,在這些情況下I/O會成為系統的瓶頸。我們會用到工具top,vmstat,iostat,sar等。每一個工具的輸出都從不同的方面反映除系統的性能情況。
Linux性能監控情況1:同一時間進行大量的I/O操作
在這種情況時我們會發現CPU的wa時間百分比會上升,證明系統的idle時間大部分都是在等待I/O操作。
# vmstat 1
procs -----memory----- ---swap---io---- --system--cpu----
r b swpd free buff cache si so bi bo in cs us sy id wa
3 2 0 55452 9236 1739020 0 0 9352 0 2580 8771 20 24 0 57
2 3 0 53888 9232 1740836 0 0 14860 0 2642 8954 23 25 0 52
2 2 0 51856 9212 1742928 0 0 12688 0 2636 8487 23 25 0 52
從這個輸出我們可以看到CPU有50%的時間都在等待I/O操作,我們還可以看到系統的bi值很大,證明系統有大量的I/O請求將磁盤內容讀入內存。
沒有很好的工具能看到到底是哪個進程在進行I/O讀寫。但我們可以通過top命令的輸出來猜測
# top -d 1
top - 19:45:07 up 1:40,3 users,load average:6.36,5.87,4.40
Tasks:119 total,3 running,116 sleeping,0 stopped,0 zombie
Cpu(s):5.9% us,87.1% sy,0.0% ni,0.0% id,5.9% wa,1.0% hi,0.0% si
Mem:2075672k total,2022668k used,53004k free,7156k buffers
Swap:2031608k total,132k used,2031476k free,1709372k cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ nFLT COMMAND
3069 root 5 -10 450m 303m 280m S 61.5 15.0 10:56.68 4562 vmware-vmx
3016 root 5 -10 447m 300m 280m S 21.8 14.8 12:22.83 3978 vmware-vmx
3494 root 5 -10 402m 255m 251m S 3.0 12.6 1:08.65 3829 vmware-vmx
3624 root 5 -10 401m 256m 251m S 1.0 12.6 0:29.92 3747 vmware-vmx
將top的輸出通過faults進行排序。我們可以看到vmware產生最多的page faults。也就是說它進行了大量的IO操作。
Linux性能監控情況2:管道太小
任何I/O操作都需要一定的時間,而且這些時間對於硬盤來說是確定的,它包含磁盤旋轉的延時RD(rotation delay)和磁頭搜索時間DS(disk seek)。RD由磁盤轉速(RPM)決定。RD是磁盤旋轉一週所需時間的一半。如RPM為10000。
RPS=RPM/60=166
1/166=0.0006=6ms 磁盤旋轉一週要6毫秒
RD=6ms/2=3ms
磁盤平均搜索時間是3ms,數據傳輸的平均延時是2ms,這樣一次I/O操作的平均時間是:
3ms+3ms+2ms=8ms
IOPS=1000/8=125 這塊磁盤的每秒IO數(IOPS)為125。所以對於10000RPM的磁盤來說它所能承受的IO操作在IOPS在120~150之間。如果系統的I/O請求超過這個值,就會使磁盤成為系統的瓶頸。
對與系統而言有兩種不同種類的I/O壓力,連續I/O和隨機I/O。
連續I/O常常出現在企業級數據庫這樣的應用中,需要連續的讀取大量數據。這種系統的性能依靠它讀取和移動數據的大小和快慢。我們用iostat來監控,會發現rKB/s,wKB/s會很高。
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/sda 0.00 12891.43 0.00 105.71 0.00 106080.00 0.00 53040.00 1003.46 1099.43 3442.43 26.49 280.00
從輸出我們看到w/s=105,wKB/s=53040。所以53040/105=505KB per I/O。
對於隨機I/O的系統來說性能的關注點不在搜傳輸數據的大小和速度,而是在磁盤的IOPS。這類系統的I/O請求比較小但是數量很大,如Web服務器和Mail服務器。他們的性能主要依賴每秒鐘可處理的請求數:
# iostat -x 1
avg-cpu:%user %nice %sys %idle
2.04 0.00 97.96 0.00
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/sda 0.00 633.67 3.06 102.31 24.49 5281.63 12.24 2640.82 288.89 73.67 113.89 27.22 50.00
從輸出我們看到w/s=102,wKB/s=2640。所以2640/102=23KB per I/O。因此對於連續I/O系統來說我們要關注系統讀取大量數據的能力即KB per request。對於隨機I/O系統我們注重IOPS值。
人生最幸福的事情,大家看法都不一樣,新人們都期望在合適的婚宴場地上舉辦婚宴,擁有幸福的回憶。而對上班族來說,Office Furniture和屏風的合理設置,良好的氛圍,舒適的辦公環境是最重要的。熟女必學十大肌膚抗老方式 相學從那些方面判斷氣運吉凶?
Linux性能監控情況1:同一時間進行大量的I/O操作
在這種情況時我們會發現CPU的wa時間百分比會上升,證明系統的idle時間大部分都是在等待I/O操作。
# vmstat 1
procs -----memory----- ---swap---io---- --system--cpu----
r b swpd free buff cache si so bi bo in cs us sy id wa
3 2 0 55452 9236 1739020 0 0 9352 0 2580 8771 20 24 0 57
2 3 0 53888 9232 1740836 0 0 14860 0 2642 8954 23 25 0 52
2 2 0 51856 9212 1742928 0 0 12688 0 2636 8487 23 25 0 52
從這個輸出我們可以看到CPU有50%的時間都在等待I/O操作,我們還可以看到系統的bi值很大,證明系統有大量的I/O請求將磁盤內容讀入內存。
沒有很好的工具能看到到底是哪個進程在進行I/O讀寫。但我們可以通過top命令的輸出來猜測
# top -d 1
top - 19:45:07 up 1:40,3 users,load average:6.36,5.87,4.40
Tasks:119 total,3 running,116 sleeping,0 stopped,0 zombie
Cpu(s):5.9% us,87.1% sy,0.0% ni,0.0% id,5.9% wa,1.0% hi,0.0% si
Mem:2075672k total,2022668k used,53004k free,7156k buffers
Swap:2031608k total,132k used,2031476k free,1709372k cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ nFLT COMMAND
3069 root 5 -10 450m 303m 280m S 61.5 15.0 10:56.68 4562 vmware-vmx
3016 root 5 -10 447m 300m 280m S 21.8 14.8 12:22.83 3978 vmware-vmx
3494 root 5 -10 402m 255m 251m S 3.0 12.6 1:08.65 3829 vmware-vmx
3624 root 5 -10 401m 256m 251m S 1.0 12.6 0:29.92 3747 vmware-vmx
將top的輸出通過faults進行排序。我們可以看到vmware產生最多的page faults。也就是說它進行了大量的IO操作。
Linux性能監控情況2:管道太小
任何I/O操作都需要一定的時間,而且這些時間對於硬盤來說是確定的,它包含磁盤旋轉的延時RD(rotation delay)和磁頭搜索時間DS(disk seek)。RD由磁盤轉速(RPM)決定。RD是磁盤旋轉一週所需時間的一半。如RPM為10000。
RPS=RPM/60=166
1/166=0.0006=6ms 磁盤旋轉一週要6毫秒
RD=6ms/2=3ms
磁盤平均搜索時間是3ms,數據傳輸的平均延時是2ms,這樣一次I/O操作的平均時間是:
3ms+3ms+2ms=8ms
IOPS=1000/8=125 這塊磁盤的每秒IO數(IOPS)為125。所以對於10000RPM的磁盤來說它所能承受的IO操作在IOPS在120~150之間。如果系統的I/O請求超過這個值,就會使磁盤成為系統的瓶頸。
對與系統而言有兩種不同種類的I/O壓力,連續I/O和隨機I/O。
連續I/O常常出現在企業級數據庫這樣的應用中,需要連續的讀取大量數據。這種系統的性能依靠它讀取和移動數據的大小和快慢。我們用iostat來監控,會發現rKB/s,wKB/s會很高。
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/sda 0.00 12891.43 0.00 105.71 0.00 106080.00 0.00 53040.00 1003.46 1099.43 3442.43 26.49 280.00
從輸出我們看到w/s=105,wKB/s=53040。所以53040/105=505KB per I/O。
對於隨機I/O的系統來說性能的關注點不在搜傳輸數據的大小和速度,而是在磁盤的IOPS。這類系統的I/O請求比較小但是數量很大,如Web服務器和Mail服務器。他們的性能主要依賴每秒鐘可處理的請求數:
# iostat -x 1
avg-cpu:%user %nice %sys %idle
2.04 0.00 97.96 0.00
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/sda 0.00 633.67 3.06 102.31 24.49 5281.63 12.24 2640.82 288.89 73.67 113.89 27.22 50.00
從輸出我們看到w/s=102,wKB/s=2640。所以2640/102=23KB per I/O。因此對於連續I/O系統來說我們要關注系統讀取大量數據的能力即KB per request。對於隨機I/O系統我們注重IOPS值。
人生最幸福的事情,大家看法都不一樣,新人們都期望在合適的婚宴場地上舉辦婚宴,擁有幸福的回憶。而對上班族來說,Office Furniture和屏風的合理設置,良好的氛圍,舒適的辦公環境是最重要的。熟女必學十大肌膚抗老方式 相學從那些方面判斷氣運吉凶?