Persiguiendo los cuellos de botella de disco con iperf3 @ YoVirtualizador | 2021-10-15T09:00:00+02:00 | 11 minutos de lectura | Actualizado en 2021-10-15T09:00:00+02:00

Persiguiendo los cuellos de botella en disco

He hecho un artículo en el cual detallo todo esto esto. Está en este artículo por si no lo has visto, donde está detallado todo el proceso, y los comandos que uso junto a sus parámetros.
También están el artículo y el vídeo donde hay mucha más información que asumo ya y que no quiero repetir en este artículo.

Objetivo. Analizar la lectura y escritura en disco

El parámetro -F que como podéis ver en el vídeo, me equivoco, determina el destino y origen de la carga que mueve iperf por la red.
En nuestro caso, vamos a analizar lectura de un SSD, lectura de un par de discos mecánicos y escritura, en disco mecánico esta vez porque es lo que tendrán los servidores de virtualización.
La metodología dista bastante de ser perfecta puesto que ni en todo momento la lectura o escritura en disco es lineal ni en todo momento los ficheros son grandes y secuenciales.
Con esto puedo aspirar a saber un límite mínimo realista, que se acerque a la realidad sin serlo.

Primer concepto, el fichero dummy

Lo primero que voy a hacer es crear un fichero con el que jugar, y lo voy a hacer con powershell.
Esto me va a permitir no depender de múltiples fuentes, y en el vídeo me ha servido para ahorrarme tiempos.
La triste realidad es que seguramente no necesite solo uno, si no varios, por temas de cachés y demás

Creación de un fichero via API de .net

Al igual que en linux haríamos con dd if=/dev/null of=./test.vmdk bs=1M count=500 en windows también puedo crear un fichero vacío con powershell.

$fichero = new-object System.IO.FileStream .\test.vmdk, Create, ReadWrite
$fichero.SetLength(500MB)
$fichero.Close()

Con eso creamos la estructura en la tabla de archivos, con un descriptor a un fichero abierto con un nombre, le añadimos un tamaño y cerramos el fichero.

¿Servidor en linux? Mejor aún

En el caso de leer varias veces el mismo fichero, lo que conseguiremos es que “prefetcher”, “superfetch”, y todos esos derivados del viejo “smartdrv” que hacen de caché de disco, nos sirvan los datos de memoria. Para ello, es bueno crear, usar y destruir.
Pero en linux hay otra opción, que es limpiar manualmente y reiniciar el uso de caché durante la prueba, eso si, como root:

sync; echo 3 > /proc/sys/vm/drop_caches 

Esto lo que hace es escribir a disco los buffers, poner el valor 3 en drop_caches y reiniciar el almacenamiento y uso de sus funcionalidades.
Básicamente será:

  • Mientras queda prueba
    • Ejecuto prueba
    • Limpio caché
    • Vuelvo a ver si queda prueba

Segundo concepto. La metodología

Esto es muy simple.
La idea es seguir y localizar en que punto mi flujo de datos en disco es más lento que el canal de red que estoy usando. Como base, tenemos la topología de red y adaptadores diseñada a raíz de las pruebas del artículo anterior

Para afinar, las pruebas serán:

  • Desde ordenador MII con SSD, lectura de SSD a Servidor Dell a memoria. Con eso veremos la velocidad de lectura.
  • Desde ordenador MII con SSD, lectura de USB a Servidor Dell a memoria. Con eso veremos la velocidad de lectura del disco externo
  • Desde el ordenador MII, escritura en Servidor Dell en disco mecánico interno. Vamos a ver que disco es más viable.
  • Desde el ordenador MII, escritura en Servidor Dell en disco mecánico externo. Vamos a ver que disco es más viable y se repetirá en un par de ocasiones.

El resultado más lento nos determinará el disco menos apto y obraré en consecuencia.

Esta es mi guía para localizar cuellos de botella en esta infraestructura.

Las pruebas

Pues igual que en artículo anterior, voy a probar varias veces a ver que resultados obtengo.

Prueba 1a

Desde ordenador MII con SSD, lectura de SSD a Servidor Dell a memoria.
Con eso veremos la velocidad de lectura.

PS C:\Users\Sistemas\Downloads> .\iperf3.exe -c 169.254.76.145 -F .\test.vmdk
Connecting to host 169.254.76.145, port 5201
[  4] local 169.254.124.136 port 59041 connected to 169.254.76.145 port 5201
[ ID] Interval           Transfer     Bandwidth
[  4]   0.00-0.56   sec  59.6 MBytes   891 Mbits/sec
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth
[  4]   0.00-0.56   sec  59.6 MBytes   891 Mbits/sec                  sender
        Sent 59.6 MByte /  500 MByte (11%) of .\test.vmdk
[  4]   0.00-0.56   sec  59.6 MBytes   891 Mbits/sec                  receiver

iperf Done.

Prueba 1b

Desde ordenador MII con SSD, lectura de USB a Servidor Dell a memoria.
Con eso veremos la velocidad de lectura del disco externo Toshiba.

PS C:\Users\Sistemas\Downloads> .\iperf3.exe -c 169.254.76.145 -F 'd:\copiavm.vmdk'
Connecting to host 169.254.76.145, port 5201
[  4] local 169.254.124.136 port 59043 connected to 169.254.76.145 port 5201
[ ID] Interval           Transfer     Bandwidth
[  4]   0.00-1.01   sec  48.0 MBytes   399 Mbits/sec
[  4]   1.01-2.00   sec  53.4 MBytes   450 Mbits/sec
[  4]   2.00-3.01   sec  50.5 MBytes   423 Mbits/sec
[  4]   3.01-4.00   sec  51.2 MBytes   432 Mbits/sec
[  4]   4.00-5.00   sec  50.9 MBytes   426 Mbits/sec
[  4]   5.00-6.01   sec  52.5 MBytes   439 Mbits/sec
[  4]   6.01-7.02   sec  52.8 MBytes   438 Mbits/sec
[  4]   7.02-8.02   sec  52.5 MBytes   438 Mbits/sec
[  4]   8.02-9.01   sec  50.6 MBytes   431 Mbits/sec
[  4]   9.01-10.01  sec  55.0 MBytes   457 Mbits/sec
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth
[  4]   0.00-10.01  sec   517 MBytes   433 Mbits/sec                  sender
        Sent  517 MByte / 5.30 GByte (9%) of d:\copiavm.vmdk
[  4]   0.00-10.01  sec   517 MBytes   433 Mbits/sec                  receiver

iperf Done.

Prueba 1c

Desde ordenador MII con SSD, lectura de USB a Servidor Dell a memoria.
Con eso veremos la velocidad de lectura del disco externo Seagate.

PS C:\Users\Sistemas\Downloads> .\iperf3.exe -c 169.254.76.145 -F 'e:\New folder\ghost.gho'
Connecting to host 169.254.76.145, port 5201
[  4] local 169.254.124.136 port 59056 connected to 169.254.76.145 port 5201
[ ID] Interval           Transfer     Bandwidth
[  4]   0.00-1.00   sec  85.4 MBytes   715 Mbits/sec
[  4]   1.00-2.00   sec  91.5 MBytes   767 Mbits/sec
[  4]   2.00-3.00   sec  90.0 MBytes   754 Mbits/sec
[  4]   3.00-4.01   sec  77.4 MBytes   648 Mbits/sec
[  4]   4.01-5.01   sec  86.2 MBytes   723 Mbits/sec
[  4]   5.01-6.00   sec  89.8 MBytes   755 Mbits/sec
[  4]   6.00-7.00   sec  92.0 MBytes   774 Mbits/sec
[  4]   7.00-8.01   sec  80.2 MBytes   664 Mbits/sec
[  4]   8.01-9.01   sec  71.8 MBytes   607 Mbits/sec
[  4]   9.01-9.50   sec  40.8 MBytes   692 Mbits/sec
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth
[  4]   0.00-9.50   sec   805 MBytes   711 Mbits/sec                  sender
        Sent  805 MByte / 1.23 GByte (63%) of e:\New folder\ghost.gho
[  4]   0.00-9.50   sec   805 MBytes   711 Mbits/sec                  receiver

iperf Done.

Prueba 2a

Desde el ordenador MII, escritura en Servidor Dell en disco mecánico interno.
Vamos a ver que disco es más viable.

PS C:\users\equipo\Downloads> .\iperf3.exe -s -F Ficherobasura
-----------------------------------------------------------
Server listening on 5201
-----------------------------------------------------------
Accepted connection from 169.254.124.136, port 59059
[  5] local 169.254.76.145 port 5201 connected to 169.254.124.136 port 59060
[ ID] Interval           Transfer     Bandwidth
[  5]   0.00-1.03   sec  5.14 MBytes  41.9 Mbits/sec
[  5]   1.03-2.02   sec  5.88 MBytes  49.6 Mbits/sec
[  5]   2.02-3.04   sec  5.88 MBytes  48.5 Mbits/sec
[  5]   3.04-4.02   sec  5.62 MBytes  48.0 Mbits/sec
[  5]   4.02-5.03   sec  5.75 MBytes  47.9 Mbits/sec
[  5]   5.03-6.02   sec  6.25 MBytes  52.9 Mbits/sec
[  5]   6.02-7.03   sec  6.00 MBytes  49.8 Mbits/sec
[  5]   7.03-8.04   sec  6.38 MBytes  53.1 Mbits/sec
[  5]   8.04-9.09   sec  6.12 MBytes  49.0 Mbits/sec
[  5]   9.09-10.02  sec  5.12 MBytes  46.0 Mbits/sec
[  5]  10.02-10.03  sec  0.00 Bytes  0.00 bits/sec
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth
[  5]   0.00-10.03  sec  0.00 Bytes  0.00 bits/sec                  sender
        Sent 0.00 Byte / 58.1 MByte (0%) of Ficherobasura
[  5]   0.00-10.03  sec  58.1 MBytes  48.6 Mbits/sec                  receiver

Prueba 2b

Desde el ordenador MII, escritura en Servidor Dell en disco mecánico externo.
Vamos a ver que disco es más viable igual que la lectura. Primero con Seagate.

PS C:\users\equipo\Downloads> .\iperf3.exe -s -F d:\Ficherobasura
-----------------------------------------------------------
Server listening on 5201
-----------------------------------------------------------
Accepted connection from 169.254.124.136, port 50880
[  5] local 169.254.76.145 port 5201 connected to 169.254.124.136 port 50881
[ ID] Interval           Transfer     Bandwidth
[  5]   0.00-1.08   sec  3.14 MBytes  24.3 Mbits/sec
[  5]   1.08-2.05   sec  3.12 MBytes  27.1 Mbits/sec
[  5]   2.05-3.04   sec  3.75 MBytes  31.8 Mbits/sec
[  5]   3.04-4.06   sec  3.25 MBytes  26.7 Mbits/sec
[  5]   4.06-5.05   sec  2.75 MBytes  23.3 Mbits/sec
[  5]   5.05-6.06   sec  2.75 MBytes  22.8 Mbits/sec
[  5]   6.06-7.07   sec  2.75 MBytes  22.8 Mbits/sec
[  5]   7.07-8.09   sec  2.75 MBytes  22.8 Mbits/sec
[  5]   8.09-9.09   sec  2.75 MBytes  23.1 Mbits/sec
[  5]   9.09-10.01  sec  2.38 MBytes  21.6 Mbits/sec
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth
[  5]   0.00-10.01  sec  0.00 Bytes  0.00 bits/sec                  sender
        Sent 0.00 Byte / 29.4 MByte (0%) of d:\Ficherobasura
[  5]   0.00-10.01  sec  29.4 MBytes  24.6 Mbits/sec                  receiver

Prueba 2c

Desde el ordenador MII, escritura en Servidor Dell en disco mecánico externo. Vamos a ver que disco es más viable, ahora con Toshiba.

PS C:\users\equipo\Downloads> .\iperf3.exe -s -F d:\Ficherobasura
-----------------------------------------------------------
Server listening on 5201
-----------------------------------------------------------
Accepted connection from 169.254.124.136, port 59061
[  5] local 169.254.76.145 port 5201 connected to 169.254.124.136 port 59062
[ ID] Interval           Transfer     Bandwidth
[  5]   0.00-1.00   sec  40.6 MBytes   340 Mbits/sec
[  5]   1.00-2.11   sec  42.1 MBytes   320 Mbits/sec
[  5]   2.11-3.01   sec  42.4 MBytes   394 Mbits/sec
[  5]   3.01-4.00   sec  43.5 MBytes   368 Mbits/sec
[  5]   4.00-5.02   sec  44.8 MBytes   370 Mbits/sec
[  5]   5.02-6.00   sec  49.1 MBytes   418 Mbits/sec
[  5]   6.00-7.01   sec  54.0 MBytes   449 Mbits/sec
[  5]   7.01-8.00   sec  48.6 MBytes   411 Mbits/sec
[  5]   8.00-9.00   sec  53.0 MBytes   445 Mbits/sec
[  5]   9.00-10.00  sec  54.9 MBytes   461 Mbits/sec
[  5]  10.00-10.00  sec  0.00 Bytes  0.00 bits/sec
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth
[  5]   0.00-10.00  sec  0.00 Bytes  0.00 bits/sec                  sender
        Sent 0.00 Byte /  473 MByte (0%) of d:\Ficherobasura
[  5]   0.00-10.00  sec   473 MBytes   397 Mbits/sec                  receiver

Prueba 2d

Desde el ordenador MII, escritura en Servidor Dell en disco mecánico externo. Vamos a ver que disco es más viable, ahora con Toshiba, pero en un puerto USB 2.0

PS C:\users\equipo\Downloads> .\iperf3.exe -s -F d:\Ficherobasura
-----------------------------------------------------------
Server listening on 5201
-----------------------------------------------------------
Accepted connection from 169.254.124.136, port 50880
[  5] local 169.254.76.145 port 5201 connected to 169.254.124.136 port 50881
[ ID] Interval           Transfer     Bandwidth
[  5]   0.00-1.08   sec  3.14 MBytes  24.3 Mbits/sec
[  5]   1.08-2.05   sec  3.12 MBytes  27.1 Mbits/sec
[  5]   2.05-3.04   sec  3.75 MBytes  31.8 Mbits/sec
[  5]   3.04-4.06   sec  3.25 MBytes  26.7 Mbits/sec
[  5]   4.06-5.05   sec  2.75 MBytes  23.3 Mbits/sec
[  5]   5.05-6.06   sec  2.75 MBytes  22.8 Mbits/sec
[  5]   6.06-7.07   sec  2.75 MBytes  22.8 Mbits/sec
[  5]   7.07-8.09   sec  2.75 MBytes  22.8 Mbits/sec
[  5]   8.09-9.09   sec  2.75 MBytes  23.1 Mbits/sec
[  5]   9.09-10.01  sec  2.38 MBytes  21.6 Mbits/sec
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth
[  5]   0.00-10.01  sec  0.00 Bytes  0.00 bits/sec                  sender
        Sent 0.00 Byte / 29.4 MByte (0%) of d:\Ficherobasura
[  5]   0.00-10.01  sec  29.4 MBytes  24.6 Mbits/sec                  receiver

Resumen y resultado

Como vemos tenemos las siguientes velocidades:

Prueba Tipo elemento medido Resultado
1a Lectura a RAM Disco SSD SK Hynix M.2 891 Mbits/sec
1b Lectura a RAM Toshiba MQ01 ABD100 USB 3.0 UASP 433 Mbits/sec
1c Lectura a RAM Seagate ST1000LM35 USB 3.0 UASP 711 Mbits/sec
2a Escritura desde RAM WDC WD5000 SATA3 48.6 Mbits/sec
2b Escritura desde RAM Seagate ST1000LM35 USB 3.0 UASP 24.6 Mbits/sec
2c Escritura desde RAM Toshiba MQ01 ABD100 USB 3.0 UASP 397 Mbits/sec
2d Escritura desde RAM Toshiba MQ01 ABD100 USB 2.0 24.6 Mbits/sec

Esto significa que no vamos a encontrarnos problemas significativos de lectura si no que la lucha estará en la escritura.
Y es en escritura donde, a Falta de confirmarlo, parece ser que el peor de los discos, el Toshiba, mejora en rendimiento de escritura a discos de 7200 RPM en principio superiores a las 5400 RPM del Toshiba.
Ante las dudas, si, he repetido varias veces las pruebas y arroja esos resultados.

Así, tal como dije en el vídeo, el flujo será de lectura del M.2 a escritura en el WD, o puede que en el Toshiba, y con esto ya queda localizado viendo donde y como podemos hacer las siguientes pruebas.

Hasta la proxima.


YoVirtualizador en formato podcast. Ahora también en Sospechosos Habituales: https://feedpress.me/sospechososhabituales
Y sin más, os dejo los enlaces:

Web: https://www.yovirtualizador.com
Grupo de telegram: https://t.me/grupovirtualizador
Podcast: https://www.ivoox.com/podcast-yovirtualizador_fg_f1563806_filtro_1.xml
Canal de youtube: https://www.youtube.com/channel/UC0R70cABSsmC6TFyXth0qPg
Enlace de afiliados de amazon: https://amzn.to/3gX3HmK
Enlace de referidos de la Asociación Podcast: https://www.asociacionpodcast.es/registrarse/socio/?coupon=SB6A70

© 2019 - 2024 YoVirtualizador

Powered by Hugo with theme Dream.

avatar

El blog de YoVirtualizadorTu podcast y blog de confianza

Acerca de YoVirtualizador

YoVirtualizador es la marca de varios proyectos

Podcast de informática profesional. Canal de Youtube sobre el blog, el podcast y de temática profesional. Blog de contenido diverso, con temática BOFH y técnica.

Gracias por la lectura.

Política de comentarios

En YoVirtualizador todos los comentarios serán bienvenidos pero moderados.

Respetos guardan respetos.

El contenido irrelevante u ofensivo será eliminado.

Galletas

Política de cookies

En YoVirtualizador no usamos cookies para nada, pero los servicios de discus y analytics recopilan datos en servidores ajenos a YoVirtualizador sin que yo pueda hacer nada.

Este aviso es sólo porque algún político tenía que justificar su existencia.

Si hace clic en un enlace de afiliado y compra un producto o servicio, es posible que ese comerciante nos pague una tarifa.