LinuxParty

NUESTRO SITIO necesita la publicidad para costear hosting y el dominio. Por favor considera deshabilitar tu AdBlock en nuestro sitio. También puedes hacernos una donación entrando en linuxparty.es, en la columna de la derecha.
Inicio desactivadoInicio desactivadoInicio desactivadoInicio desactivadoInicio desactivado
 

En ocasiones, al implementar una nueva aplicación en un servidor, nos encontramos con que el departamento de aprovisionamiento nos proporciona un servidor virtual con recursos limitados, especialmente en cuanto a la velocidad de disco. Este problema puede afectar significativamente el rendimiento de la aplicación en entornos críticos. Para evitar sorpresas desagradables y tener argumentos sólidos al solicitar más recursos, es esencial determinar desde el principio las velocidades de lectura y escritura de nuestros discos.

A continuación, se describen tres herramientas que permiten evaluar el rendimiento de los discos duros, lo que proporciona datos concretos para respaldar nuestras demandas de recursos. A pesar de que existen muchas otras formas de medir el rendimiento, estas tres herramientas ofrecen una sólida referencia y justificación al momento de realizar solicitudes de mejora, incluso si a veces parecen caer en oídos sordos.

Comando fio: Evaluación del Rendimiento del Disco

El comando "fio" es una potente herramienta de prueba de E/S que genera múltiples hilos o procesos para simular diferentes tipos de acciones de E/S definidas por el usuario. Fio utiliza una serie de parámetros globales, los cuales pueden ser heredados por hilos o procesos posteriores, a menos que se anulen en configuraciones posteriores. El uso más común de fio implica la creación de un archivo de trabajo que coincide con el tipo de carga de E/S que deseamos simular.

Con esta herramienta, podemos evaluar el rendimiento de lectura y escritura de los discos, lo que resulta invaluable para conocer las limitaciones de E/S de nuestro servidor. Esto proporciona una base sólida para argumentar la necesidad de recursos adicionales, particularmente en entornos críticos donde el rendimiento del disco es esencial.

En resumen, al conocer y utilizar estas tres herramientas, podremos medir de manera precisa el rendimiento de los discos de nuestro servidor, lo que nos permitirá respaldar nuestras peticiones de recursos adicionales con datos concretos, incluso si no siempre obtenemos la respuesta que esperamos. La información obtenida de estas pruebas de rendimiento es esencial para garantizar el funcionamiento óptimo de nuestras aplicaciones en entornos críticos.

Creamos un archivo por ejemplo: test.fio

Que contendrá:

[random-read]
rw=randread
# Las pruebas pueden ser 128, 256 o 512 m
size=256m
# Haremos una prueba de rendimiento de la partición montada
# que queremos.
directory=/var/www/html

Ejecutaremos la prueba:

fio test.fio

Y la salida será:

random-read: (g=0): rw=randread, bs=(R) 4096B-4096B, (W) 4096B-4096B, (T) 4096B-4096B, ioengine=psync, iodepth=1
fio-3.7
Starting 1 process
random-read: Laying out IO file (1 file / 256MiB)
Jobs: 1 (f=1): [r(1)][100.0%][r=1520KiB/s,w=0KiB/s][r=380,w=0 IOPS][eta 00m:00s]
random-read: (groupid=0, jobs=1): err= 0: pid=18853: Wed Oct 18 11:29:06 2023
   read: IOPS=443, BW=1773KiB/s (1815kB/s)(256MiB/147885msec)
    clat (usec): min=113, max=79962, avg=2253.26, stdev=1211.66
     lat (usec): min=113, max=79962, avg=2253.55, stdev=1211.66
    clat percentiles (usec):
     |  1.00th=[  848],  5.00th=[ 1958], 10.00th=[ 1975], 20.00th=[ 1975],
     | 30.00th=[ 1991], 40.00th=[ 1991], 50.00th=[ 1991], 60.00th=[ 2008],
     | 70.00th=[ 2008], 80.00th=[ 2024], 90.00th=[ 3032], 95.00th=[ 4015],
     | 99.00th=[ 5997], 99.50th=[ 6063], 99.90th=[10028], 99.95th=[14091],
     | 99.99th=[55837]
   bw (  KiB/s): min=  752, max= 4816, per=100.00%, avg=1772.60, stdev=430.64, samples=295
   iops        : min=  188, max= 1204, avg=443.15, stdev=107.67, samples=295
  lat (usec)   : 250=0.72%, 500=0.08%, 750=0.08%, 1000=0.41%
  lat (msec)   : 2=53.94%, 4=39.34%, 10=5.33%, 20=0.08%, 50=0.01%
  lat (msec)   : 100=0.01%
  cpu          : usr=0.20%, sys=1.60%, ctx=72523, majf=0, minf=12
  IO depths    : 1=100.0%, 2=0.0%, 4=0.0%, 8=0.0%, 16=0.0%, 32=0.0%, >=64=0.0%
     submit    : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0%
     complete  : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0%
     issued rwts: total=65536,0,0,0 short=0,0,0,0 dropped=0,0,0,0
     latency   : target=0, window=0, percentile=100.00%, depth=1

Run status group 0 (all jobs):
   READ: bw=1773KiB/s (1815kB/s), 1773KiB/s-1773KiB/s (1815kB/s-1815kB/s), io=256MiB (268MB), run=147885-147885msec

Disk stats (read/write):
  ploop53972: ios=74076/3488, merge=0/0, ticks=0/0, in_queue=0, util=0.00%

Lo que está marcado en negrita, es de lo que nos tendremos que fijar.

También tenemos que tener en cuenta, que un servidor virtual nunca dará el mismo rendimiento que nuestro ordenador o un servidor físico.

Puedes borrar el fichero creado por la prueba, descrito en test.fio, y volver a ejecutar la prueba (para este caso en /var/www/html/), hazlo siempre cuando tenga menos tráfico para que te muestre una estadística más real.

Optimización de Rendimiento en GNU/Linux: Herramienta iostat

El comando iostat es una herramienta esencial que todo administrador de sistemas GNU/Linux debe dominar. iostat permite supervisar y comprender en profundidad los parámetros de entrada/salida de los diversos dispositivos del sistema, lo que facilita la observación de los distintos ratios de transferencia de datos.

Dicho software suele estar en el paquete "sysstat", para instalarlo, en Fedora, Rocky y AlmaLinux, RHEL, bastará ejecutar:

sudo yum -y install sysstat

Y ejecutar la prueba:

iostat -d 2 3

Una de las salidas típicas de iostat se presenta de la siguiente manera:

root@myserver ~]# iostat -d 2 3
Linux 3.10.0 (vl-3440.panel-vps.com)    18/10/23        _x86_64_        (32 CPU)

Device:            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
ploop53972       31,33       544,77      1027,75  139818925  263780264

Device:            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
ploop53972       40,00         0,00       164,00          0        328

Device:            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
ploop53972        4,00        10,00        96,00         20        192

Explicación:

  • Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn: Estos encabezados describen las métricas que se presentarán a continuación. "tps" se refiere a transacciones por segundo, "kB_read/s" es la velocidad de lectura en kilobytes por segundo, "kB_wrtn/s" es la velocidad de escritura en kilobytes por segundo, "kB_read" es el total de kilobytes leídos y "kB_wrtn" es el total de kilobytes escritos.

  • ploop53972: Este es el nombre del dispositivo o partición en el que se están registrando las estadísticas.

  • Las siguientes líneas proporcionan datos específicos sobre el dispositivo o partición. En tu caso, tienes tres conjuntos de datos, cada uno con tres líneas, que representan diferentes momentos en el tiempo. Cada conjunto de datos muestra métricas de I/O en ese instante.

A continuación, desglosaré una de las líneas de datos como ejemplo:

  • ploop53972: Nuevamente, es el nombre del dispositivo o partición.
  • tps (transacciones por segundo): En este ejemplo, el dispositivo "ploop53972" está realizando aproximadamente 4 transacciones de E/S por segundo.
  • kB_read/s (velocidad de lectura en KB/s): Está leyendo datos a una velocidad de 10 kilobytes por segundo.
  • kB_wrtn/s (velocidad de escritura en KB/s): Está escribiendo datos a una velocidad de 96 kilobytes por segundo.
  • kB_read (total de KB leídos): Hasta el momento, se han leído un total de 20 kilobytes en el dispositivo "ploop53972".
  • kB_wrtn (total de KB escritos): Hasta el momento, se han escrito un total de 192 kilobytes en el dispositivo "ploop53972".

Las siguientes líneas proporcionan métricas para diferentes momentos en el tiempo. Esto te permite observar la evolución de las estadísticas de entrada/salida a lo largo del tiempo. En tu caso, la última línea muestra un aumento en la velocidad de escritura con 164 KB/s, lo que indica un mayor flujo de escritura en el dispositivo "ploop53972".

  • tps
    Es la transferencia a disco por segundo.
  • Bls_read/s (kB_read/s, MB_read/s)
    Es la cantidad de bloques leídos por segundo.
  • Bls_wrtn/s (kB_wrtn/s, MB_wrtn/s)
    Representa la cantidad de bloques escritos por segundo.
  • Blk_read (kB_read, MB_read)
    Bloques totales leídos.
  • Blk_wrtn (kB_wrtn, MB_wrtn)
    Bloques totales escritos.

Comando ioping

El comando ioping permite obtener el rendimiento del acceso a disco de un equipo al igual que si estuviésemos ejecutando un ping a la red.

Es una herramienta bastante simple y si no podemos obtenerlo por repositorios la compilación del programa es tan simple que ni siquiera necesita explicaciones adicionales, y como una imagen vale más que mil palabras os muestro un ejemplo de uso:

root@shell> ioping -c 10 -s 1M -D /tmp
1048576 bytes from /tmp (ext4 /dev/sda1): request=1 time=34.0 ms
1048576 bytes from /tmp (ext4 /dev/sda1): request=2 time=23.0 ms
1048576 bytes from /tmp (ext4 /dev/sda1): request=3 time=23.2 ms
...
--- /tmp (ext4 /dev/sda1) ioping statistics ---
10 requests completed in 9268.4 ms, 37 iops, 37.4 mb/s
min/avg/max/mdev = 23.0/26.7/34.0/4.4 ms

Por tanto, ioping permite obtener la latencia de entrada/salida de disco pudiéndonos ser útil para saber la potencia de lectura o escrita que el disco ofrece, empleando o no la caché. Las principales opciones que presenta son:

  • -c count
    Se ejecuta count veces y luego termina ofreciendo una estadística de resultados.
  • -s size
    Establece el tamaño de la lectura/escritura que realizará.
  • -L
    Realiza las operaciones de forma secuencial y no aleatorias.
  • -C
    Comprueba la latencia del disco empleando la caché.
  • -D
    Comprueba la latencia escribiendo en disco directamente.

Para más información, consultar la página de su manual.
Página oficial de ioping: code.google.com/ioping

Comando hdparm

El comando hdparm (que se encuentra ya instalado en la mayoría de las distribuciones Linux) es muy versátil, nos permite obtener información general acerca de nuestro disco duro y también permite realizar ajustes de configuración.

Sólo voy a hacer referencia a una combinación de parámetros que se puede usar para sacar estadísticas del rendimiento de nuestro disco duro, los que queráis saber todo lo que puede ofrecer este comando os sugiero que echéis un vistazo al manual de uso (man hdparm).

Para realizar la prueba de rendimiento tenemos que escribir lo siguiente:

root@shell> hdparm -tT /dev/sda
/dev/sda: 
 Timing cached reads: 7864 MB in 2.00 seconds = 3935.41 MB/sec 
 Timing buffered disk reads: 204 MB in 3.00 seconds = 67.98 MB/sec

Bien, espero que vuestras pruebas de rendimiento den buenos resultados y estos comandos os sean de utilidad.

No estás registrado para postear comentarios



Redes:



   

 

Suscribete / Newsletter

Suscribete a nuestras Newsletter y periódicamente recibirás un resumen de las noticias publicadas.

Donar a LinuxParty

Probablemente te niegues, pero.. ¿Podrías ayudarnos con una donación?


Tutorial de Linux

Filtro por Categorías