Compartir a través de


Recomendaciones de pruebas comparativas de rendimiento para NFS 3.0 en Azure Blob Storage

En este artículo se proporcionan recomendaciones y resultados de pruebas comparativas para NFS 3.0 (versión 3 del sistema de archivos de red) en Azure Blob Storage. Dado que NFS 3.0 se usa principalmente en entornos de Linux, el artículo se centra solo en las herramientas de Linux. En muchos casos, se pueden usar otros sistemas operativos, pero las herramientas y los comandos pueden cambiar.

Información general

Las pruebas de rendimiento de almacenamiento se realizan para evaluar y comparar diferentes servicios de almacenamiento. Hay muchas maneras de hacerlo, pero hay tres más comunes:

  • Uso de comandos estándar de Linux, normalmente cp o dd,
  • Uso de herramientas de pruebas comparativas de rendimiento como fio, vdbench, ior, etc.,
  • Uso de una aplicación real que se usa en producción.

Independientemente del método que se use, siempre es importante comprender otros posibles cuellos de botella en el entorno y asegurarse de que no afectan a los resultados. Por ejemplo, al medir el rendimiento de escritura, es necesario asegurarnos de que el disco de origen pueda leer datos tan rápido como el rendimiento de escritura esperado. El mismo principio se aplica para el rendimiento de lectura. Idealmente, en estas pruebas podemos usar un disco RAM. Es necesario tener en cuenta consideraciones similares para el rendimiento de red, el uso de CPU, etc.

El uso de comandos de Linux estándar es el método más sencillo para las pruebas comparativas de rendimiento, pero también se recomienda menos. El método es sencillo, ya que existen herramientas en todos los entornos de Linux y los usuarios están familiarizados con ellos. Los resultados deben analizarse cuidadosamente, ya que muchos aspectos tienen impacto en ellos, no solo el rendimiento del almacenamiento. Dos comandos que se usan normalmente:

  • Las pruebas con cp comandos copian uno o varios archivos del origen al servicio de almacenamiento de destino y miden el tiempo necesario para finalizar completamente la operación. Este comando realiza E/S bufferizada, no directa, y depende de los tamaños de búfer, el sistema operativo, el modelo de subprocesos, etc. Además, algunas aplicaciones del mundo real se comportan de forma similar y, a veces, representan un buen caso de uso.
  • El segundo comando usado a menudo es dd. El comando es de un solo hilo y, en pruebas a gran escala de ancho de banda, los resultados están limitados por la velocidad de un núcleo único de CPU. Es posible ejecutar varios comandos al mismo tiempo y asignarlos a distintos núcleos, pero eso complica las pruebas y la agregación de resultados. También es mucho más sencillo ejecutar que algunas de las herramientas de pruebas comparativas de rendimiento.

El uso de herramientas de pruebas comparativas de rendimiento representa pruebas de rendimiento sintéticas que son comunes en la comparación de diferentes servicios de almacenamiento. Las herramientas están diseñadas correctamente para usar los recursos de cliente disponibles para maximizar el rendimiento del almacenamiento. La mayoría de las herramientas son configurables y permiten imitar aplicaciones reales, al menos las más sencillas. La imitación de aplicaciones reales requiere información detallada sobre el comportamiento de la aplicación y comprender sus patrones de almacenamiento.

El uso de una aplicación real siempre es el mejor método, ya que mide el rendimiento de las cargas de trabajo reales que los usuarios ejecutan sobre el servicio de almacenamiento. Sin embargo, este método a menudo no es práctico, ya que requiere la réplica del entorno de producción y los usuarios finales para generar una carga adecuada en el sistema. Algunas aplicaciones tienen una funcionalidad de generación de carga y deben usarse para realizar pruebas comparativas de rendimiento.

Método de prueba Ventajas Desventajas
Comandos estándar de Linux -Sencillo
- Disponible en cualquier plataforma linux
- Familiaridad con las herramientas
- No diseñado para pruebas de rendimiento
- No es configurable
- A menudo enlazado al núcleo de CPU
Herramientas de pruebas comparativas de rendimiento - Optimizado para pruebas de rendimiento
- Muy configurable
- Pruebas sencillas de varios nodos
- Es complejo organizar una prueba en el mundo real
Aplicación real - Proporciona una experiencia precisa del usuario final. - A menudo, los usuarios finales ejecutan pruebas
- Requiere la réplica del entorno de producción.
- Puede ser subjetiva

Aunque el uso de aplicaciones reales para pruebas de rendimiento es la mejor opción, debido a la simplicidad de la configuración de pruebas, el método más común es usar herramientas de pruebas comparativas de rendimiento. Se muestra la configuración recomendada para ejecutar pruebas de rendimiento en Azure Blob Storage con NFS 3.0.

Sugerencia

La mayoría de los métodos de pruebas de rendimiento se centran en el rendimiento de un solo cliente. Para realizar pruebas de escalabilidad horizontal, use una herramienta de pruebas comparativas de rendimiento que pueda orquestar pruebas de varios clientes (como fio, vdbench, etc.) o crear una capa de orquestación personalizada.

Selección del tamaño de la máquina virtual

Para ejecutar correctamente las pruebas de rendimiento, el primer paso es ajustar correctamente el tamaño de una máquina virtual que se usa en las pruebas. La máquina virtual actúa como un cliente que ejecuta la herramienta de pruebas comparativas de rendimiento. El aspecto más importante al seleccionar el tamaño de la máquina virtual para esta prueba es el ancho de banda de red disponible. La máquina virtual más grande que seleccionamos, mejores resultados que podemos lograr. Si ejecutamos la prueba en Azure, se recomienda usar una de las máquinas virtuales de uso general .

Creación de una cuenta de almacenamiento con NFS 3.0

Después de seleccionar la máquina virtual, es necesario crear una cuenta de almacenamiento que usaremos en nuestras pruebas. Siga nuestra guía paso a paso para obtener instrucciones paso a paso. Se recomienda leer las consideraciones de rendimiento de NFS 3.0 en Azure Blob Storage antes de realizar pruebas.

Otras consideraciones

  • La máquina virtual y la cuenta de almacenamiento con el punto de conexión NFS 3.0 deben estar en la misma región,
  • La máquina virtual que ejecuta las aplicaciones de prueba solo debe usarse para realizar pruebas para asegurarse de que otros servicios en ejecución no afectan a los resultados,
  • Para montar el punto de conexión NFS 3.0 de manera confiable, se debe utilizar el cliente auxiliar de montaje AzNFS.

Ejecución de pruebas comparativas de rendimiento

Hay varias herramientas de pruebas comparativas de rendimiento disponibles para su uso en entornos linux. Cualquiera de ellos se puede usar para evaluar el rendimiento, compartimos nuestro enfoque recomendado con FIO (evaluador de E/S flexible). FIO está disponible a través de administradores de paquetes estándar para cada distribución de Linux o como código fuente. Se puede usar en muchos escenarios de prueba. En este artículo se describen los escenarios recomendados para Azure Storage. Para más personalización y diferentes parámetros, consulte la documentación de FIO.

Los parámetros siguientes se usan para las pruebas:

Carga de trabajo Métrica Tamaño de bloque Subprocesos Profundidad de IO Tamaño de archivo nconnect E/S directa
Secuencial Ancho de banda 1 MiB 8 1024 10 GiB 16
Secuencial IOPS 4 KiB 8 1024 10 GiB 16
Aleatorio IOPS 4 KiB 8 1024 10 GiB 16

Nuestra configuración de pruebas se realizó en la región Este de EE. UU. con el tipo de máquina virtual cliente D32ds_v5 y el tamaño de archivo de 10 GB. Todas las pruebas se ejecutaron 100 veces y los resultados muestran el valor medio. Las pruebas se realizaron en las cuentas de almacenamiento Estándar y Premium. Obtenga más información sobre las diferencias entre los dos tipos de cuentas de almacenamiento aquí.

Medición del ancho de banda secuencial

Ancho de banda de lectura

fio --name=seq_read_bw --ioengine=libaio --directory=/mnt/test_folder --direct=1 --blocksize=1M --readwrite=read --filesize=10G --end_fsync=1 --numjobs=8 --iodepth=1024 --runtime=60 --group_reporting --time_based=1

Ancho de banda de escritura

fio --name=seq_write_bw --ioengine=libaio --directory=/mnt/test_folder --direct=1 --blocksize=1M --readwrite=write --filesize=10G --end_fsync=1 --numjobs=8 --iodepth=1024 --runtime=60 --group_reporting --time_based=1

Resultados

Captura de pantalla de los resultados de la prueba de ancho de banda secuencial.

Medición de IOPS secuenciales

IOPS de lectura

fio --name=seq_read_iops --ioengine=libaio --directory=/mnt/test_folder --direct=1 --blocksize=4K --readwrite=read --filesize=10G --end_fsync=1 --numjobs=8 --iodepth=1024 --runtime=60 --group_reporting --time_based=1

Escribir IOPS

fio --name=seq_write_iops --ioengine=libaio --directory=/mnt/test_folder --direct=1 --blocksize=4K --readwrite=write --filesize=10G --end_fsync=1 --numjobs=8 --iodepth=1024 --runtime=60 –group_reporting –time_based=1

Resultados

Recorte de pantalla de los resultados de la prueba de IOPS secuenciales.

Nota:

Los resultados de las pruebas de IOPS secuenciales muestran valores mayores que los límites de la cuenta de almacenamiento para las solicitudes por segundo. Las IOPS se miden en el lado cliente y los valores más grandes se deben a las optimizaciones del servicio y la naturaleza secuencial de la prueba.

Medición de IOPS aleatorias

IOPS de lectura

fio --name=rnd_read_iops --ioengine=libaio --directory=/mnt/test_folder --direct=1 --blocksize=4K --readwrite=randread --filesize=10G --end_fsync=1 --numjobs=8 --iodepth=1024 --runtime=60 --group_reporting --time_based=1

Escribir IOPS

fio --name=rnd_write_iops --ioengine=libaio --directory=/mnt/test_folder --direct=1 --blocksize=4K --readwrite=randwrite --filesize=10G --end_fsync=1 --numjobs=8 --iodepth=1024 --runtime=60 –group_reporting –time_based=1

Resultados

Captura de pantalla de los resultados aleatorios de la prueba de iops.

Nota:

Los resultados de las pruebas aleatorias se agregan para completar, el punto de conexión NFS 3.0 en Azure Blob Storage no es un servicio de almacenamiento recomendado para cargas de trabajo de escritura aleatoria.

Pasos siguientes