Mejora del rendimiento del recurso compartido de archivos de Azure SMB

Este artículo explica cómo puede mejorar el rendimiento de los recursos compartidos de archivos de Azure SMB premium, incluido el uso de SMB multicanal y el almacenamiento en caché de metadatos (versión preliminar).

Se aplica a

Tipo de recurso compartido de archivos SMB NFS
Recursos compartidos de archivos Estándar (GPv2), LRS/ZRS No No
Recursos compartidos de archivos Estándar (GPv2), GRS/GZRS No No
Recursos compartidos de archivos Premium (FileStorage), LRS/ZRS Yes No

Optimización del rendimiento

Las siguientes sugerencias pueden ayudarte a optimizar el rendimiento:

  • Asegúrese de que la cuenta de almacenamiento y el cliente se colocan en la misma región de Azure para reducir la latencia de red.
  • Use aplicaciones multiproceso y distribuya la carga entre varios archivos.
  • Las ventajas de rendimiento de SMB multicanal aumentan con el número de archivos que distribuyen la carga.
  • El rendimiento del recurso compartido Premium está limitado por el tamaño del recurso compartido aprovisionado (IOPS/salida/entrada) y los límites de un solo archivo. Para obtener detalles, consulte Descripción del aprovisionamiento de recursos compartidos de archivos Premium.
  • El rendimiento máximo de un solo cliente de VM sigue estando enlazado a los límites de máquina virtual. Por ejemplo, Standard_D32s_v3 puede admitir un ancho de banda máximo de 16 000 MBps (o 2 GBps), la salida de la máquina virtual (escrituras en el almacenamiento) se mide, la entrada (lecturas del almacenamiento) no. El rendimiento de los recursos compartidos de archivos está sujeto a los límites de red de la máquina, las CPU, el almacenamiento interno, el ancho de banda de red disponible, los tamaños de E/S, el paralelismo, así como otros factores.
  • La prueba inicial suele ser una preparación. Descarte los resultados y repita la prueba.
  • Si el rendimiento está limitado por un solo cliente y la carga de trabajo sigue estando por debajo de los límites de cuota provisionados, puede conseguir un mayor rendimiento repartiendo la carga entre varios clientes.

La relación entre IOPS, el rendimiento y los tamaños de E/S

Rendimiento = tamaño de E/S * IOPS

Cuanto mayor sea el tamaños de E/S mayores serán el rendimiento y las latencias, lo que dará lugar a un número menor de IOPS de red. Los tamaños de E/S menores aumentarán la IOPS, pero provocarán unas latencias y un rendimiento menores. Para más información, consulte Descripción del rendimiento de Azure Files.

SMB multicanal

SMB multicanal permite que un cliente SMB 3.x establezca varias conexiones de red a un recurso compartido de archivos SMB. Azure Files admite SMB multicanal en recursos compartidos de archivos premium (recursos compartidos de archivos en el tipo de cuenta de almacenamiento FileStorage) para clientes de Windows. En el lado del servicio, el SMB multicanal está deshabilitado de forma predeterminada en Azure Files, pero no hay ningún costo adicional por habilitarlo.

Ventajas

SMB multicanal permite a los clientes usar varias conexiones de red que proporcionan un mayor rendimiento a la vez que se reduce el costo de propiedad. El mayor rendimiento se logra a través de la agregación de ancho de banda en varias NIC y el uso de la compatibilidad con Ajuste de escala en lado de recepción (RSS) para que las NIC distribuyan la carga de E/S entre varias CPU.

  • Rendimiento aumentado: varias conexiones permiten la transferencia de los datos a través de varias rutas de acceso en paralelo y, por tanto, benefician significativamente a las cargas de trabajo que usan tamaños de archivo más grandes con tamaños de E/S más grandes, y requieren un alto rendimiento de una sola máquina virtual o un conjunto de máquinas virtuales más pequeño. Entre algunas de estas cargas de trabajo se incluyen medios y entretenimiento para la creación de contenido o la transcodificación, la genómica y el análisis de riesgos de servicios financieros.
  • E/S por segundo más alta: la funcionalidad RSS de NIC permite una distribución de carga eficaz entre varias CPU con varias conexiones. Esto ayuda a lograr una escala de IOPS más alta y un uso eficaz de las CPU de VM. Esto es útil para las cargas de trabajo que tienen tamaños de E/S pequeños, como las aplicaciones de base de datos.
  • Tolerancia a los fallos de la red: varias conexiones mitigan el riesgo de interrupción, ya que los clientes ya no dependen de una conexión individual.
  • Configuración automática: cuando SMB multicanal está habilitado en los clientes y las cuentas de almacenamiento, permite la detección dinámica de las conexiones existentes y puede crear rutas de acceso de conexión adicionales según sea necesario.
  • Optimización de costos: las cargas de trabajo pueden alcanzar una mayor escala de una sola máquina virtual o un conjunto pequeño de máquinas virtuales mientras se conectan a recursos compartidos Premium. Esto podría reducir el costo total de propiedad al reducir el número de máquinas virtuales necesarias para ejecutar y administrar una carga de trabajo.

Para obtener más información sobre SMB multicanal, consulte la documentación de Windows.

Esta característica proporciona mayores ventajas de rendimiento a las aplicaciones multiproceso, pero normalmente no ayuda a las aplicaciones de un único subproceso. Consulte la sección Comparación del rendimiento para obtener más detalles.

Limitaciones

SMB multicanal para los recursos compartido de archivos de Azure tiene actualmente las siguientes restricciones:

  • Solo se admite en clientes de Windows que utilizan SMB 3.1.1. Asegúrese de que los sistemas operativos cliente de SMB tengan las revisiones aplicadas hasta los niveles recomendados.
  • Actualmente no se admite ni se recomienda para los clientes de Linux.
  • El número máximo de canales es cuatro. Para más información, consulte este artículo.

Configuración

SMB multicanal solo funciona cuando la característica está habilitada tanto en el lado del cliente (su cliente) como en el lado del servicio (su cuenta de almacenamiento de Azure).

En los clientes Windows, SMB multicanal está habilitado de manera predeterminada. Puede comprobar la configuración ejecutando el siguiente comando de PowerShell:

Get-SmbClientConfiguration | Select-Object -Property EnableMultichannel

En la cuenta de almacenamiento de Azure, deberás habilitar SMB multicanal. Consulte Implementación de SMB multicanal.

Deshabilitar SMB multicanal

En la mayoría de los escenarios, concretamente las cargas de trabajo multiproceso, los clientes deben ver un rendimiento mejorado con SMB multicanal. Sin embargo, algunos escenarios específicos, como las cargas de trabajo con un único subproceso o con fines de prueba, es posible que desee deshabilitar el SMB multicanal. Consulte Comparación del rendimiento para obtener más detalles.

Comprobar que SMB multicanal está configurado correctamente

  1. Crea un nuevo recurso compartido de archivos premium o use uno premium existente.
  2. Asegúrese de que el cliente admite SMB multicanal (uno o varios adaptadores de red tienen habilitado el ajuste de escala en lado de recepción). Consulte la documentación de Windows para obtener más detalles.
  3. Monte un recurso compartido de archivos en el cliente.
  4. Genere carga con la aplicación. Una herramienta de copia como robocopy o MT, o bien cualquier herramienta de rendimiento como Deskspd para archivos de lectura/escritura, pueden generar carga.
  5. Abra PowerShell como administrador y use el siguiente comando: Get-SmbMultichannelConnection |fl
  6. Busque las propiedades MaxChannels y CurrentChannels.

Screenshot of Get-SMBMultichannelConnection results.

Comparación del rendimiento

Hay dos categorías de patrones de carga de trabajo de lectura/escritura: de un único subproceso y multiproceso. La mayoría de las cargas de trabajo usan varios archivos, pero podría haber casos de uso específicos en los que la carga de trabajo funcione con un solo archivo en un recurso compartido. En esta sección se tratan diversos casos de uso y el impacto en el rendimiento de cada uno de ellos. En general, la mayoría de las cargas de trabajo son multiproceso y distribuyen la carga de trabajo por varios archivos, por lo que deberían poder observar mejoras significativas en el rendimiento con SMB multicanal.

  • Varios archivos/Multiproceso: según el patrón de carga de trabajo, deberías poder observar una mejora significativa en el rendimiento en E/S de lectura y escritura a través de varios canales. Las mejoras de rendimiento varían desde cualquier punto entre 2x y 4x en términos de IOPS, rendimiento y latencia. En esta categoría, SMB multicanal debe habilitarse para obtener el mejor rendimiento.
  • Un solo archivo/Multiproceso: en la mayoría de los casos de uso de esta categoría, las cargas de trabajo se beneficiarán de tener habilitado SMB multicanal, especialmente si la carga de trabajo tiene un tamaño medio de E/S > ~16 k. Algunos escenarios de ejemplo que se benefician de SMB multicanal son la copia de seguridad o la recuperación de un solo archivo grande. Una excepción en la que es posible que desees deshabilitar SMB multicanal es si tu carga de trabajo es pesada en E/S pequeñas. En ese caso, tal vez observes una ligera pérdida de rendimiento (10 %). Dependiendo del caso de uso, considere la posibilidad de distribuir la carga entre varios archivos o deshabilitar la característica. Consulte la sección Configuración para obtener más información.
  • Varios archivos o un solo archivo/Multiproceso: en la mayoría de las cargas de trabajo de un único subproceso, existen unas ventajas de rendimiento mínimas debido a la falta de paralelismo. Por lo general, hay una ligera degradación del rendimiento de ~10 % si el SMB multicanal está habilitado. En este caso, es ideal deshabilitar SMB multicanal, con una excepción. Si la carga de trabajo de un único subproceso puede distribuir la carga entre varios archivos y usa un tamaño medio de E/S más grande (> ~16 k), deben existir unas ventajas de rendimiento mínimas del SMB multicanal.

Configuración de prueba de rendimiento

En los gráficos de este artículo, se usó la siguiente configuración: una sola máquina virtual D32s v3 Estándar con una sola NIC habilitada para RSS con cuatro canales. La carga se generó mediante diskspd.exe, multiproceso con una profundidad de E/S de 10 y E/S aleatorias con diversos tamaños de E/S.

Size vCPU Memoria: GiB GiB de almacenamiento temporal (SSD) Discos de datos máx. Rendimiento máximo de almacenamiento en caché y temporal: IOPS/Mbps (tamaño de caché en GiB) Rendimiento máximo del disco sin almacenamiento en la caché: IOPS/Mbps Nº máx. NIC Ancho de banda de red esperado (Mbps)
Standard_D32s_v3 32 128 256 32 64000/512 (800) 51200/768 8 16000

Screenshot that shows the performance test configuration.

Archivos multiproceso o varios archivos con SMB multicanal

La carga se realizó con respecto a 10 archivos con diversos tamaños de E/S. Los resultados de la prueba de escalado vertical mostraron mejoras significativas en los resultados de la prueba de rendimiento e IOPS con SMB multicanal habilitado. En los diagramas siguientes se describen los resultados:

Diagram of performance.

Diagram of throughput performance.

  • En una sola NIC, en el caso de las lecturas, el rendimiento aumentó entre el doble y el triple, mientras que en el caso de las escrituras, una mejora en términos de IOPS y rendimiento se multiplicó por 3 y hasta por 4.
  • SMB multicanal permitió que IOPS y el rendimiento alcanzaran los límites de VM incluso con una sola NIC y el límite de cuatro canales.
  • Dado que la salida (o las lecturas en el almacenamiento) no se mide, el rendimiento de lectura pudo superar el límite publicado de VM de 16 000 Mbps (2 GiB/s). La prueba alcanzó >2,7 GiB/s. La entrada (o las escrituras en el almacenamiento) sigue estando sujeta a límites de VM.
  • Distribución de la carga por varios archivos permitidos para mejoras sustanciales.

Un comando de ejemplo utilizado en esta prueba es:

diskspd.exe -W300 -C5 -r -w100 -b4k -t8 -o8 -Sh -d60 -L -c2G -Z1G z:\write0.dat z:\write1.dat z:\write2.dat z:\write3.dat z:\write4.dat z:\write5.dat z:\write6.dat z:\write7.dat z:\write8.dat z:\write9.dat .

Cargas de trabajo multiproceso o de un solo archivo con SMB multicanal

La carga se realizó con respecto a un solo archivo de 128 GiB. Con SMB multicanal habilitado, la prueba de escalado vertical con archivos multiproceso o únicos mostró mejoras en la mayoría de los casos. En los diagramas siguientes se describen los resultados:

Diagram of IOPS performance.

Diagram of single file throughput performance.

  • En una sola NIC con un tamaño medio de E/S mayor (> ~16 k), había mejoras significativas tanto en las lecturas como en las escrituras.
  • Para tamaños de E/S más pequeños, hubo un ligero impacto de ~10 % en el rendimiento con el SMB multicanal habilitado. Esto podría mitigarse mediante la distribución de la carga por varios archivos, o la deshabilitación de la característica.
  • El rendimiento sigue estando sujeto a los límites de un solo archivo.

Almacenamiento en caché de metadatos para recursos compartidos de archivos SMB premium

El almacenamiento en caché de metadatos es una mejora para los recursos compartidos de archivos de Azure SMB premium cuyo objetivo es reducir la latencia de los metadatos, aumentar las IOPS disponibles e impulsar el rendimiento de la red. Esta característica en versión preliminar mejora las siguientes API de metadatos y se puede usar desde clientes Windows y Linux:

  • Create
  • Abrir
  • Cerrar
  • Eliminar

Para incorporarse, apúntese a la versión preliminar pública y le daremos más detalles. Actualmente, esta característica de versión preliminar solo está disponible para los recursos compartidos de archivos SMB premium (recursos compartidos de archivos en el tipo de cuenta de almacenamiento FileStorage). No hay ningún costo adicional asociado al uso de esta característica.

Disponibilidad regional

Actualmente, la versión preliminar del almacenamiento en caché de metadatos solo está disponible en las siguientes regiones de Azure.

  • Este de Australia
  • Sudeste de Brasil
  • Sur de Francia
  • Centro-oeste de Alemania
  • Norte de Suiza
  • Centro de Emiratos Árabes Unidos
  • Norte de Emiratos Árabes Unidos
  • Centro-oeste de EE. UU.

Mejoras de rendimiento con el almacenamiento en caché de metadatos

La mayoría de las cargas de trabajo o los patrones de uso que contienen metadatos pueden beneficiarse del almacenamiento en caché de metadatos. Para determinar si su carga de trabajo contiene metadatos, puede usar Azure Monitor para dividir las transacciones por dimensión de API.

Las cargas de trabajo con grandes volúmenes de metadatos y los patrones de uso típicos incluyen:

  • Servicios web o de aplicaciones
  • Tareas de DevOps
  • Indexación/trabajos por lotes
  • Escritorios virtuales con directorios domésticos u otras cargas de trabajo que interactúan principalmente con muchos archivos pequeños, directorios o identificadores

En los diagramas siguientes se muestran los resultados potenciales.

Reducción de la latencia de metadatos

Al almacenar en caché rutas de acceso de archivos y directorios para búsquedas futuras, el almacenamiento en caché de metadatos puede reducir la latencia de los archivos y directorios a los que se accede con frecuencia un 30 % o más para cargas de trabajo con mucha carga de datos a escala.

Chart showing latency in milliseconds with and without metadata caching.

Aumento de IOPS disponibles

El almacenamiento en caché de metadatos puede aumentar las IOPS disponibles en más del 60 % para cargas de trabajo con mucho metadatos a escala.

Chart showing available IOPS with and without metadata caching.

Aumento del rendimiento de la red

El almacenamiento en caché de metadatos puede aumentar el rendimiento de red en más del 60 % para cargas de trabajo con mucho metadatos a escala.

Chart showing network throughput with and without metadata caching.

Pasos siguientes