磁盤負載指標%iowait-await-%util的正確理解_第1頁
磁盤負載指標%iowait-await-%util的正確理解_第2頁
磁盤負載指標%iowait-await-%util的正確理解_第3頁
磁盤負載指標%iowait-await-%util的正確理解_第4頁
磁盤負載指標%iowait-await-%util的正確理解_第5頁
全文預覽已結束

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、磁盤負載指標%iowait,await,%util的正確理解說明%iowait, await, %util 是來衡量硬盤負載的三個指標, 但是這個指標通常容易被誤解, 實際上, 這三個指標單純的, 并不定能說明相應的磁盤有問題或者有瓶頸, 是需要結合具體執 IO 操作的程序的執式, 綜合的來判斷指標的原因.關于 await, %util 的計算式可以參照:總結%iowait:最容被誤解的參數, 實際上這是個常宏觀的系統指標, 其表 CPU空閑 并且 有未完成的IO 這種狀態在個采樣周期的占, 般來說當個進程進同步的 IO 操作時, 進程將會被掛起, CPU 將會空閑, 等待 IO 完成, 這時

2、候如果沒有其它進程占 CPU ft時的狀態將會被計 iowait 的統計時間以內. 但是 CPU 空閑也只是當前進程空閑, 空閑出來的 CPU 是可以進其它操作的, 如果ft時 %iowait 較, 只能說明在等待 IO 完成的時間系統沒有其它進程來占 CPU 了, IO 未完成, 有可能只是單純的 IO size 較, 完成需要較長時間, 并不定是 IO 有問題.且如果等待 IO 完成時系統有其它繁忙的進程占了 CPU, 那么論ft時 IO 完成時間多長(即使是IO完全卡死), %iowait 也會常的低, 因為ft時CPU不空閑了, 因為 %iowait 只是反映 CPU空閑 并且 有未完

3、成的IO 這種狀態時間的占, 兩個條件缺少個都不會計iowait 的時間.await每個I/O的平均耗時, 包括在內核 IO 隊列內的時間和在存儲設備上執ft IO 的時間, 所以 await 可能有兩個原因, 是 IO 在 IO queue耗時較長, 另個就是由于 IO 在存儲設備上執的時間較長, IO 在 IO queue 耗時較長可能是由于程序次并發了過多的 IO, 讓IO 在 queue 排隊, IO 在存儲設備上執的時間較長也有可能時 IO 本就較, 例如在硬盤上寫 1KB 件, 耗時定是 1MB的時間短的, 所以 await , 還要結合業務本的特點判斷 await 的原因%uti

4、l這個反映 IO queue, 中存在 IO 在采樣周期的占, 只要 IO queue 中存在 IO, 就會被計到 %util 的時間內, 論是 1 個 IO 或者 100 個IO, 并且也只計算 IO 存在于 queue 的時間, 所以ft時即使磁盤壓較, 但是 IO queue 中并沒有排隊的 IO 那么 %util 也不會(例如每次 IO size 都較), 或者有些程序進順序 IO, 完成個再發下個, 并且 IO size 并不, ft時即使磁盤壓較 %util 也會較測試環境和命令使 fio 模擬客戶端, 通過不同的 fio 引擎和不同的隊列深度配置來模擬順序的和并發的 IO 環境如

5、下rootcentos-76-c1# uname -aLinux centos-76-c1 5.5.7-1.el7.elrepo.x86_64 #1 SMP Fri Feb 28 12:21:58 EST 2020 x86_64 x86_64 x86_64 GNU/Linuxrootcentos-76-c1# cat /etc/redhat-release CentOS Linux release 7.6.1810 (Core) rootcentos-76-c1# fio -versionfio-3.1使 iostat -mx 1 10000 sdb 來模監控 %iowait, await ,

6、 %util 具體數值rootcentos-76-c1# iostat -mx 1 10000 sdbLinux 5.5.7-1.el7.elrepo.x86_64 (centos-76-c1) 03/05/2020 _x86_64_ (1 CPU)avg-cpu: %user %nice %system %iowait %steal %idle 1.46 0.00 0.78 12.33 0.00 85.43Device:rrqm/s wrqm/sr/sw/s rMB/s wMB/s avgrq-sz avgqu-sz await r_await w_await svctm %util sdb

7、0.000.66 0.60 263.410.011.179.20 21.27 81.06 7.02 81.23 0.16 4.23avg-cpu: %user %nice %system %iowait %steal %idle 0.00 0.00 0.00 0.00 0.00 100.00Device:rrqm/s wrqm/sr/sw/s rMB/s wMB/s avgrq-sz avgqu-sz await r_await w_await svctm %util sdb0.000.00 0.00 0.000.000.000.000.00 0.00 0.00 0.00 0.00 0.00.

8、%iowait%iowait 與 CPU 本的關系找個 CPU 空閑的時期rootcentos-76-c1# top -n 1top - 17:38:33 up 1:02, 3 users, load average: 0.00, 0.10, 0.12Tasks: 136 total, 1 running, 81 sleeping, 0 stopped, 0 zombie%Cpu(s): 0.0 us, 0.0 sy, 0.0 ni,100.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 stKiB Mem : 977804 total, 696812 free, 1056

9、96 used, 175296 buff/cacheKiB Swap: 1572860 total, 1572860 free,0 used. 697424 avail Mem隨便增加些負載差不多的普通負載, 觀察ft時的 iowaitrootcentos-76-c1# fio -name=randwrite -rw=randwrite -bs=16k -size=1G -runtime=60 -ramp_time=20 -ioengine=sync -numjobs=1 -filename=/d ev/sdb -direct=1 -group_reportingrandwrite: (g=0

10、): rw=randwrite, bs=(R) 16.0KiB-16.0KiB, (W) 16.0KiB-16.0KiB, (T) 16.0KiB-16.0KiB, ioengine=sync, iodepth=1 fio-3.1Starting 1 processJobs: 1 (f=1): w(1)100.0%r=0KiB/s,w=1472KiB/sr=0,w=92 IOPSeta 00m:00srandwrite: (groupid=0, jobs=1): err= 0: pid=7724: Thu Mar 5 17:56:42 2020 write: IOPS=86, BW=1390K

11、iB/s (1423kB/s)(81.5MiB/60004msec)clat (usec): min=2917, max=48358, avg=11505.79, stdev=4808.19 lat (usec): min=2918, max=48359, avg=11506.34, stdev=4808.19.iowait 達到了 99%.avg-cpu: %user %nice %system %iowait %steal %idle 0.00 0.00 1.00 99.00 0.00 0.00Device:rrqm/s wrqm/sr/sw/s rMB/s wMB/s avgrq-sz

12、avgqu-sz await r_await w_await svctm %util sdb0.000.00 0.00 101.000.001.58 32.000.94 9.86 0.00 9.86 1.02 10.30avg-cpu: %user %nice %system %iowait %steal %idle 0.00 0.00 0.00 100.00 0.00 0.00Device:sdb.rrqm/s wrqm/sr/sw/s0.000.00 0.00 97.96rMB/s wMB/s avgrq-sz avgqu-sz await r_await w_await svctm %u

13、til0.001.53 32.000.97 10.41 0.00 10.41 1.02 10.00ft時增加個分耗費 CPU 的計算圓周率的命令, 計算 50000 位的圓周率rootcentos-76-c1# time echo scale=50000; 8*a(1) | bc -l -qft時 CPU 利率已經常rootcentos-76-c1# top -n 1top - 17:59:21 up 1:22, 3 users, load average: 0.21, 0.17, 0.09Tasks: 138 total, 2 running, 81 sleeping, 0 stopped,

14、 0 zombie%Cpu(s):100.0 us, 0.0 sy, 0.0 ni, 0.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 stKiB Mem : 977804 total, 696652 free, 105816 used, 175336 buff/cacheKiB Swap: 1572860 total, 1572860 free,0 used. 697288 avail Mem這是可以看到 %iowait 直接變成了 0.00.avg-cpu: %user %nice %system %iowait %steal %idle 100.00 0.00 0.

15、00 0.00 0.00 0.00Device:rrqm/s wrqm/sr/sw/s rMB/s wMB/s avgrq-sz avgqu-sz await r_await w_await svctm %util sdb0.000.00 0.00 66.000.001.03 32.000.66 10.48 0.00 10.48 1.98 13.10avg-cpu: %user %nice %system %iowait %steal %idle 99.01 0.00 0.99 0.00 0.00 0.00Device:rrqm/s wrqm/sr/sw/s rMB/s wMB/s avgrq

16、-sz avgqu-sz await r_await w_await svctm %util sdb0.000.00 0.00 69.310.001.08 32.000.66 10.11 0.00 10.11 2.00 13.86.總結通過上的測試可以證明 %iowait 是個分宏觀的個參數, 系統其他服務對 CPU 的利會直接影響這個數值, 如果 CPU 利率夠, 即使ft時 IO 完全卡死, ft時 %iowait 可能也很低. %iowait 即使很, 實際上硬盤的壓可能也不.awaitawait 和 iodepth 的關系使 fio 模擬客戶端, 固定的 io 請求, 通過配置不同的

17、-iodepth= -iodepth_batch_submit= -iodepth_low= 來實現不同并發度的IOrootcentos-76-c1# fio -name=randwrite -rw=randwrite -bs=4k -size=1G -runtime=60 -ramp_time=20 -ioengine=libaio -iodepth= -iodepth_batch_submit= -iodepth_low= -numjobs=1 -filename=/dev/sdb -direct=1 -group_reporting測試結果iodepthIOPSBWavgqu-szawa

18、it190363KiB/s0.203.0343371349KiB/s2.176.511611684676KiB/s10.007.506418287317KiB/s47.9718.3325618517424KiB/s252.03300 500102417236963KiB/s270.84300 600總結隨著并發度越來越, 達到了本機 IO 能承受的 IO 的上限, 量 IO 在存儲集群排隊, 可以看到 await 隨著 IO 在隊列中排隊時間的增逐漸增await 和 iosize 的關系使 fio 模擬客戶端, 固定的 io iodept, 通過配置不同的 -bs= 來實現不同的 IO (bl

19、ock_size 即次讀寫的件的)rootcentos-76-c1# fio -name=randwrite -rw=randwrite -bs= -size=1G -runtime=60 -ramp_time=20 -ioengine=libaio -iodepth=1 -iodepth_batch_submit=1 -iodepth_low=1 -numjobs=1 -filename=/dev/sdb -direct=1 -group_reporting測試結果block_sizeIOPSBWavgrq-szavgqu-szawait4KiB90364KiB/s8.000.252.931

20、6KiB691120KiB/s32.000.649.7564KiB301948KiB/s128.000.8430.11256KiB113004KiB/s512.000.9389.901MiB44168KiB/s2048.001.14227.004MiB14531KiB/s2048.00 - 2560.003.46902.7516MiB05206KiB/s2048.00 - 2560.0012.502223.40總結可以看到隨著 block_size 即 次讀寫的件的不斷增加, await 也逐漸增加, 實際上ft時 IO 并不能說 IO 是瓶頸, 或者 IO 延時過, 只是單純的完成 IO 耗

21、時更長%util%util 與 IO 的關系使 fio 分別測試不同 iosize 的同步 IOrootcentos-76-c1# fio -name=randwrite -rw=randwrite -bs=4K -size=1G -runtime=60 -ramp_time=20 -ioengine=sync -numjobs=4 -filename=/de v/sdb -direct=1 -group_reporting -sync=1randrw: (g=0): rw=randwrite, bs=(R) 4096B-4096B, (W) 4096B-4096B, (T) 4096B-40

22、96B, ioengine=sync, iodepth=1.fio-3.1Starting 4 processesJobs: 2 (f=2): E(0),w(4)100.0%r=0KiB/s,w=1081KiB/sr=0,w=270 IOPSeta 00m:00srandrw: (groupid=0, jobs=4): err= 0: pid=8310: Thu Mar 5 19:24:57 2020 write: IOPS=292, BW=1169KiB/s (1197kB/s)(68.5MiB/60004msec).Davg-cpu: %user %nice %system %iowait

23、 %steal %idle 100.00 0.00 0.00 0.00 0.00 0.00Device:rrqm/s wrqm/sr/sw/s rMB/s wMB/s avgrq-sz avgqu-sz await r_await w_await svctm %util sdb0.000.00 0.00 325.000.001.278.002.17 7.18 0.00 7.18 1.17 38.10avg-cpu: %user %nice %system %iowait %steal %idle 99.00 0.00 1.00 0.00 0.00 0.00Device:rrqm/s wrqm/

24、sr/sw/s rMB/s wMB/s avgrq-sz avgqu-sz await r_await w_await svctm %util sdb0.000.00 0.00 309.000.001.218.002.28 7.87 0.00 7.87 1.08 33.40.rootcentos-76-c1# fio -name=randwrite -rw=randwrite -bs=1m -size=1G -runtime=60 -ramp_time=20 -ioengine=sync -numjobs=4 -filename=/de v/sdb -direct=1 -group_reporting -sync=1randwrite: (g=0): rw=randwrite, bs=(R) 1024KiB-1024KiB, (W) 1024KiB-1024KiB, (T) 1024KiB-1024KiB, ioengine=sync, iodepth=1.fio-3.1Starting 4 processesJobs: 3 (f=3): w(3),_(1)58.2%r=0KiB/s,w=4096KiB/sr=0,w

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論