問題現象
ssdディスク(キャッシュディスクとして)io util使用率はクラスター内でほぼ100%であり、ディスクのボトルネックに達しているかどうかを判断する必要があります。
問題調査
他の人のブログで言及されているように、iostatのutilsは、ssd、raidなどの同時実行をサポートする新しいデバイスを反映していないことをiostatのドキュメントを参照してください。
%util
Percentage of elapsed time during which I/O requests were issued to the device (bandwidth utilization for the device). Device saturation occurs when this value is
close to 100% for devices serving requests serially. But for devices serving requests in parallel, such as RAID arrays and modern SSDs, this number does not
reflect their performance limits.
さらに、記事「iostatの2つのトラップ:%utilとsvctm」を参照できますhttps://brooker.co.za/blog/2014/07/04/iostat-pct.html
また、キャッシュディスクを読み取ることにより、x86で試してみました。
fio -name test -rw randread -filename /dev/sdr -runtime 60 -time_based=1 -direct=1 -ioengine libaio -numjobs=1 -iodepth=1 -eta-newline=1
read: IOPS=7872, BW=30.8MiB/s (32.2MB/s)(236MiB/7671msec)
Device: rrqm/s wrqm/s r/s w/s rMB/s wMB/s avgrq-sz avgqu-sz await r_await w_await svctm %util
sdr 0.00 9.00 7524.00 394.00 29.59 2.37 8.27 0.42 0.18 0.13 1.14 0.12 95.00
Device: rrqm/s wrqm/s r/s w/s rMB/s wMB/s avgrq-sz avgqu-sz await r_await w_await svctm %util
sdr 0.00 0.00 8305.00 82.00 32.66 0.96 8.21 0.01 0.12 0.11 0.26 0.12 99.80
Device: rrqm/s wrqm/s r/s w/s rMB/s wMB/s avgrq-sz avgqu-sz await r_await w_await svctm %util
sdr 0.00 0.00 8379.00 62.00 32.80 0.60 8.10 0.02 0.11 0.11 0.10 0.12 99.10
Device: rrqm/s wrqm/s r/s w/s rMB/s wMB/s avgrq-sz avgqu-sz await r_await w_await svctm %util
sdr 0.00 8.00 7720.00 195.00 30.53 1.67 8.33 0.15 0.14 0.12 0.86 0.12 98.10
Device: rrqm/s wrqm/s r/s w/s rMB/s wMB/s avgrq-sz avgqu-sz await r_await w_await svctm %util
sdr 0.00 4.00 8021.00 87.00 31.33 0.72 8.10 0.02 0.12 0.12 0.17 0.12 99.20
Device: rrqm/s wrqm/s r/s w/s rMB/s wMB/s avgrq-sz avgqu-sz await r_await w_await svctm %util
sdr 0.00 5.00 7502.00 374.00 29.31 1.89 8.11 0.31 0.16 0.13 0.92 0.12 96.00
iopsは約7000で、utilsはすでに100%であることがわかりますが、iodepthを増やすと:
fio -name test -rw randread -filename /dev/sdr -runtime 60 -time_based=1 -direct=1 -ioengine libaio -numjobs=1 -iodepth=128 -eta-newline=1
read: IOPS=129k, BW=505MiB/s (530MB/s)(18.1GiB/36746msec)
Device: rrqm/s wrqm/s r/s w/s rMB/s wMB/s avgrq-sz avgqu-sz await r_await w_await svctm %util
sdr 0.00 22.00 125637.00 667.00 491.68 13.65 8.19 10.29 0.35 0.34 1.90 0.01 100.00
Device: rrqm/s wrqm/s r/s w/s rMB/s wMB/s avgrq-sz avgqu-sz await r_await w_await svctm %util
sdr 0.00 9.00 131418.00 136.00 513.60 1.39 8.02 1.59 0.24 0.24 0.52 0.01 100.00
Device: rrqm/s wrqm/s r/s w/s rMB/s wMB/s avgrq-sz avgqu-sz await r_await w_await svctm %util
sdr 0.00 0.00 131817.00 43.00 514.91 0.34 8.00 0.23 0.21 0.21 0.19 0.01 100.00
Device: rrqm/s wrqm/s r/s w/s rMB/s wMB/s avgrq-sz avgqu-sz await r_await w_await svctm %util
sdr 0.00 1.00 132226.00 81.00 517.15 1.23 8.02 0.67 0.23 0.23 0.63 0.01 100.00
Device: rrqm/s wrqm/s r/s w/s rMB/s wMB/s avgrq-sz avgqu-sz await r_await w_await svctm %util
sdr 0.00 0.00 130618.00 37.00 510.23 0.32 8.00 0.12 0.21 0.21 0.65 0.01 100.00
iops 12wとutilsも100%であることがわかります。
また、4k-1-1に対応するnvmeデバイスをテストしました。読み取りは1wのみで、4k-1-128の場合、読み取りは25wですが、使用率は100%です。
問題の原因
%util, it means "Percentage of CPU time during which I/O requests were issued to the device".
utilパラメータは、「デバイスにI / O要求が発行されるCPU時間の割合」を意味します。この値は、シリアルデバイス(HDDメカニカルディスクなど)のデバイスのビジー状態を反映できます。90を超えて長時間実行されている場合%、遅いかもしれません。並列デバイス(SSD、ソリッドステートディスクなど)の場合、1つのIOが特定の期間のCPU時間の100%を占める場合、同じ期間の100 IOもCPU時間の100%を占める可能性があるため、デバイスがボトルネックに達したとは見なされません。
特定のディスクデバイスを判断するには、待機値、avgqu-szなどの他のパラメータを分析する必要があります。
問題の要約
HDDは同時ではなく、SSD(同時デバイス)の機能を反映できないため、io util%の参照値はHDDに対してのみ正確です。