磁盘负载指标%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

提交评论