Identificar discos saturados en CentOS 8

Identificar discos saturados en CentOS 8

Un breve resumen; Tengo un servidor de archivos de 10 Gbit con seis SSD de datos que ejecutan CentOS 8 y estoy luchando por saturar la línea. Todo está bien si limito el ancho de banda a 5 o 6 Gbps. Aquí hay algunos gráficos de Cockpit que muestran que todo está bien (~850 usuarios simultáneos, límite de 5 Gbps).

Texto

Desafortunadamente, cuando presiono más, el ancho de banda fluctúa en ondas gigantes. Normalmente, eso es una señal de un disco saturado (o tarjeta SATA), y en las cajas de Windows lo resolví de esta manera:

  1. Abra "Monitor de recursos".
  2. Seleccione la pestaña "Disco".
  3. Mire los gráficos de "Longitud de la cola". Cualquier disco/raid con una longitud de cola constantemente superior a 1 es un cuello de botella. Actualízalo o reduce su carga.

Ahora veo estos síntomas en un servidor CentOS 8, pero ¿cómo puedo identificar al culpable? Mis SSD SATA están divididos en tres matrices RAID0 de software como esta:

    # cat /proc/mdstat
    Personalities : [raid0]
    md2 : active raid0 sdg[1] sdf[0]
          7813772288 blocks super 1.2 512k chunks
    
    md0 : active raid0 sdb[0] sdc[1]
          3906764800 blocks super 1.2 512k chunks
    
    md1 : active raid0 sdd[0] sde[1]
          4000532480 blocks super 1.2 512k chunks`

iostatfluctúa enormemente y normalmente tiene un %iowait alto. Si estoy leyendo esto correctamente, parece indicar que md0 (sdb+sdc) tiene la carga más grande. ¿Pero es un cuello de botella? Después de todo, %util no se acerca a 100.

# iostat -xm 5
avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           7.85    0.00   35.18   50.02    0.00    6.96

Device            r/s     w/s     rMB/s     wMB/s   rrqm/s   wrqm/s  %rrqm  %wrqm r_await w_await aqu-sz rareq-sz wareq-sz  svctm  %util
sda            106.20   57.20      0.89      0.22     3.20     0.00   2.93   0.00  136.87  216.02  26.82     8.56     3.99   0.92  14.96
sde            551.20    0.00    153.80      0.00    65.80     0.00  10.66   0.00    6.75    0.00   3.44   285.73     0.00   0.64  35.52
sdd            571.60    0.00    153.77      0.00    45.80     0.00   7.42   0.00    6.45    0.00   3.40   275.48     0.00   0.63  35.98
sdc            486.60    0.00    208.93      0.00   305.40     0.00  38.56   0.00   20.60    0.00   9.78   439.67     0.00   1.01  49.10
sdb            518.60    0.00    214.49      0.00   291.60     0.00  35.99   0.00   81.25    0.00  41.88   423.52     0.00   0.92  47.88
sdf            567.40    0.00    178.34      0.00   133.60     0.00  19.06   0.00   17.55    0.00   9.68   321.86     0.00   0.28  16.08
sdg            572.00    0.00    178.55      0.00   133.20     0.00  18.89   0.00   17.63    0.00   9.81   319.64     0.00   0.28  16.00
dm-0             5.80    0.80      0.42      0.00     0.00     0.00   0.00   0.00  519.90  844.75   3.69    74.62     4.00   1.21   0.80
dm-1           103.20   61.40      0.40      0.24     0.00     0.00   0.00   0.00  112.66  359.15  33.68     4.00     4.00   0.96  15.86
md1           1235.20    0.00    438.93      0.00     0.00     0.00   0.00   0.00    0.00    0.00   0.00   363.88     0.00   0.00   0.00
md0           1652.60    0.00    603.88      0.00     0.00     0.00   0.00   0.00    0.00    0.00   0.00   374.18     0.00   0.00   0.00
md2           1422.60    0.00    530.31      0.00     0.00     0.00   0.00   0.00    0.00    0.00   0.00   381.72     0.00   0.00   0.00
dm-2             0.00    0.00      0.00      0.00     0.00     0.00   0.00   0.00    0.00    0.00   0.00     0.00     0.00   0.00   0.00
loop0            0.00    0.00      0.00      0.00     0.00     0.00   0.00   0.00    0.00    0.00   0.00     0.00     0.00   0.00   0.00

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           5.14    0.00   22.00   72.86    0.00    0.00

Device            r/s     w/s     rMB/s     wMB/s   rrqm/s   wrqm/s  %rrqm  %wrqm r_await w_await aqu-sz rareq-sz wareq-sz  svctm  %util
sda             34.00   37.40      0.15      0.15     5.20     0.00  13.27   0.00  934.56  871.59  64.34     4.61     4.15   0.94   6.74
sde            130.80    0.00     36.14      0.00    15.00     0.00  10.29   0.00    5.31    0.00   0.63   282.97     0.00   0.66   8.64
sdd            132.20    0.00     36.35      0.00    14.40     0.00   9.82   0.00    5.15    0.00   0.61   281.57     0.00   0.65   8.62
sdc            271.00    0.00    118.27      0.00   176.80     0.00  39.48   0.00    9.52    0.00   2.44   446.91     0.00   1.01  27.44
sdb            321.20    0.00    116.97      0.00   143.80     0.00  30.92   0.00   12.91    0.00   3.99   372.90     0.00   0.91  29.18
sdf            340.20    0.00    103.83      0.00    71.80     0.00  17.43   0.00   12.17    0.00   3.97   312.54     0.00   0.29   9.90
sdg            349.20    0.00    104.06      0.00    66.60     0.00  16.02   0.00   11.77    0.00   3.94   305.14     0.00   0.29  10.04
dm-0             0.00    0.80      0.00      0.01     0.00     0.00   0.00   0.00    0.00 1661.50   1.71     0.00    12.00   1.25   0.10
dm-1            38.80   42.20      0.15      0.16     0.00     0.00   0.00   0.00  936.60 2801.86 154.58     4.00     4.00   1.10   8.88
md1            292.60    0.00    111.79      0.00     0.00     0.00   0.00   0.00    0.00    0.00   0.00   391.22     0.00   0.00   0.00
md0            951.80    0.00    382.39      0.00     0.00     0.00   0.00   0.00    0.00    0.00   0.00   411.40     0.00   0.00   0.00
md2            844.80    0.00    333.06      0.00     0.00     0.00   0.00   0.00    0.00    0.00   0.00   403.71     0.00   0.00   0.00
dm-2             0.00    0.00      0.00      0.00     0.00     0.00   0.00   0.00    0.00    0.00   0.00     0.00     0.00   0.00   0.00
loop0            0.00    0.00      0.00      0.00     0.00     0.00   0.00   0.00    0.00    0.00   0.00     0.00     0.00   0.00   0.00

Mientras tanto, el rendimiento del servidor es atroz. Cada pulsación de tecla a través de SSH tarda unos segundos en registrarse, el escritorio GNOME prácticamente no responde y los usuarios informan de conexiones interrumpidas. Mostraría gráficos de Cockpit pero el tiempo de inicio de sesión se agota. Limitar el ancho de banda funciona muy bien, pero me gustaría desbloquear el resto. Entonces, ¿cómo puedo identificar los cuellos de botella? ¡Me encantaría algunas sugerencias!

Respuesta1

El culpable fue sda, el disco magnético CentOS. La mayor parte de la evidencia apuntaba allí. Como alguien comentó (y parece haber eliminado), los tiempos de espera en sda, dm-0 y dm-1 parecen sospechosos. Efectivamente, dm-0 (root) y dm-1 (swap) también están en sda. Al observar el funcionamiento de iotop, el cuello de botella pareció desencadenarse por un rápido destello de actividad de Gnome seguido de kswapd (intercambio) que obstruyó las obras. Cerrar Gnome con un "init 3" supuso una mejora definitiva, pero no hay forma de que una máquina tan poderosa quede paralizada por una pantalla de inicio de sesión inactiva. SMART también informa más de 8000 sectores defectuosos en sda. Supongo que muchos de estos están en el espacio de intercambio, lo que hace que los intercambios paralicen el sistema.

Una idea era mover el intercambio a otro disco, pero reemplazar el sda parecía más práctico. Comencé una clonación de disco con CloneZilla pero estimaba 3 horas y una nueva instalación sería más rápida, así que seguí con eso. ¡Ahora el servidor está funcionando muy bien! Aquí hay una captura de pantalla que muestra más de 1300 archivos transmitidos simultáneamente a más de 8 Gbps, de manera agradable y estable. ¡Problema resuelto!

ingrese la descripción de la imagen aquí

información relacionada