¿La utilidad del disco SSD cercana al 100% significa que el disco es lento?

Fenómeno problema

La tasa de uso del disco ssd (como disco de caché) io util está cerca del 100% en el clúster y es necesario determinar si se alcanza el cuello de botella del disco.

Investigación de problemas

Consulte la documentación de iostat, como se menciona en los blogs de otras personas, de que las utilidades de iostat no reflejan los nuevos dispositivos que admiten la concurrencia, como ssd, raid, etc .:

  %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.

Además, puede consultar el artículo https://brooker.co.za/blog/2014/07/04/iostat-pct.html "Dos trampas en iostat:% util y svctm"

También lo probé en x86, leyendo el disco de caché:

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

Puede ver que iops está alrededor de 7000, y utils ya está al 100%; pero si aumenta 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

Puede ver que iops 12w y utils también son 100%.

También probé el dispositivo nvme, correspondiente a 4k-1-1, la lectura es solo 1w, si es 4k-1-128 la lectura tiene 25w, pero sus utilidades son 100%.

causas del problema

%util, it means "Percentage of CPU time during which I/O requests were issued to the device".

El parámetro util significa "el porcentaje de tiempo de CPU durante el cual se envían solicitudes de E / S al dispositivo". Este valor puede reflejar el nivel de ocupación de un dispositivo para dispositivos en serie (como discos mecánicos HDD). Si se ejecuta durante un tiempo prolongado superior a 90 %, puede ser lento. Para dispositivos en paralelo (como SSD, discos de estado sólido), si una E / S ocupa el 100% del tiempo de la CPU en un cierto período de tiempo, entonces 100 E / S en el mismo período de tiempo también pueden ocupar el 100% del tiempo de la CPU, por lo que no se puede considerar que el dispositivo haya alcanzado un cuello de botella.

Para juzgar un determinado dispositivo de disco, se deben analizar otros parámetros como el valor de espera, avgqu-sz, etc.

resumen de un problema

El valor de referencia de io util% solo es preciso para HDD, porque HDD no es concurrente y no puede reflejar la capacidad de SSD (dispositivo concurrente).

Supongo que te gusta

Origin blog.51cto.com/wendashuai/2551080
Recomendado
Clasificación