Compartir vía


Consideraciones de rendimiento de Network File System (NFS) 3.0 en Azure Blob Storage

Blob Storage ya es compatible con el protocolo Network File System (NFS) 3.0. En este artículo se incluyen recomendaciones que le ayudarán a optimizar el rendimiento de las solicitudes de almacenamiento. Para más información sobre la compatibilidad de NFS 3.0 con Azure Blob Storage, consulte Compatibilidad del protocolo Network File System (NFS) 3.0 con Azure Blob Storage.

Adición de clientes para aumentar el rendimiento

Azure Blob Storage escala linealmente hasta alcanzar el límite máximo de entrada y salida de la cuenta de almacenamiento. Por lo tanto, las aplicaciones pueden lograr un mayor rendimiento mediante el uso de más clientes. Para ver los límites de entrada y salida de la cuenta de almacenamiento, consulte Objetivos de escalabilidad y rendimiento para cuentas de almacenamiento estándar.

En el gráfico siguiente se muestra cómo aumenta el ancho de banda a medida que se agregan más clientes. En este gráfico, un cliente es una máquina virtual (VM) y con una cuenta de almacenamiento de uso general v2 estándar.

Rendimiento Estándar

En el gráfico siguiente se muestra este mismo efecto cuando se aplica a una cuenta de almacenamiento de blobs en bloques Premium.

Rendimiento Premium

Uso de cuentas de almacenamiento de blobs en bloques Premium para aplicaciones a pequeña escala

No todas las aplicaciones se pueden escalar verticalmente agregando más clientes. Para esas aplicaciones, la cuenta de almacenamiento de blobs en bloques prémium de Azure ofrece una latencia baja coherente y elevadas tasas de transacciones. La cuenta de almacenamiento de blobs en bloques prémium puede alcanzar el ancho de banda máximo con menos subprocesos y clientes. Por ejemplo, con un solo cliente, una cuenta de almacenamiento de blobs en bloques prémium puede alcanzar 2,3 veces más ancho de banda en comparación con la misma configuración que se usa con una cuenta de almacenamiento v2 de uso general y rendimiento estándar.

Cada barra del gráfico siguiente muestra la diferencia en el ancho de banda logrado entre las cuentas de almacenamiento de rendimiento estándar y prémium. A medida que aumenta el número de clientes, se reduce la diferencia.

Rendimiento relativo

Mejora del tamaño de lectura anticipada para aumentar el rendimiento de lectura de archivos grandes

El parámetro de kernel read_ahead_kb representa la cantidad de datos adicionales que se deben leer después de completar una solicitud de lectura determinada. Puede aumentar este parámetro a 16 MiB para mejorar el rendimiento de lectura de archivos grandes.

export AZMNT=/your/container/mountpoint

echo 16384 > /sys/class/bdi/0:$(stat -c "%d" $AZMNT)/read_ahead_kb

Evitación de sobrescrituras frecuentes en los datos

Se tarda más tiempo en completar una operación de sobrescritura que una nueva operación de escritura. Esto se debe a que una operación de sobrescritura de NFS, especialmente una edición parcial de archivos en contexto, es una combinación de varias operaciones de blobs subyacentes: una operación de lectura, una modificación y una operación de escritura. Por lo tanto, una aplicación que requiere ediciones en contexto frecuentes no es adecuada para las cuentas de almacenamiento de blobs habilitadas para NFS.

Implementación de Azure HPC Cache para aplicaciones sensibles a la latencia

Algunas aplicaciones pueden requerir baja latencia, además de alto rendimiento. Puede implementar Azure HPC Cache para mejorar significativamente la latencia. Obtenga más información sobre la Latencia en Blob Storage.

Aumentar el número de conexiones TCP

Puede usar la opción de montaje nconnect para obtener un mayor rendimiento de lectura y escritura agregados desde una sola máquina virtual, pero solo si el kernel de Linux tiene compatibilidad con nconnect de Azure.

nconnect es una opción de montaje de Linux del lado cliente que permite usar varias conexiones TCP entre el cliente y el punto de conexión de Blob service. Puede usar la opción en el comando de montaje nconnect para especificar el número de conexiones TCP que desea crear (por ejemplo: mount -t aznfs -o nconnect=16,sec=sys,vers=3,nolock,proto=tcp <storage-account-name>.blob.core.windows.net:/<storage-account-name>/<container-name> /nfsdatain).

Importante

Aunque las distribuciones más recientes de Linux son totalmente compatibles con nconnect, solo debe usar esta opción si el kernel tiene compatibilidad con nconnect de Azure. El uso de la opción de montaje nconnect sin compatibilidad con nconnect de Azure reducirá el rendimiento, provocará varios tiempos de espera y provocará que los comandos como READDIR y READIRPLUS funcionen incorrectamente.

La compatibilidad con nconnect de Azure está disponible con la mayoría de las kernals de Ubuntu recientes que se pueden usar con máquinas virtuales de Azure. Para averiguar si la compatibilidad con nconnect de Azure está disponible para el kernel, ejecute el siguiente comando.

[ -e /sys/module/sunrpc/parameters/enable_azure_nconnect ] && echo "Yes" || echo "No"

Si la compatibilidad con nconnect de Azure está disponible para el kernel, Yes se imprime en la consola. En caso contrario, 'No se imprime en la consola.

Si la compatibilidad con nconnect de Azure está disponible, habilítela mediante la ejecución del siguiente comando.

echo Y > /sys/module/sunrpc/parameters/enable_azure_nconnect

Otros procedimientos recomendados

  • Use máquinas virtuales con más ancho de banda de red.

  • Use varios puntos de montaje cuando las cargas de trabajo lo permitan.

  • Use tantos subprocesos como sea posible.

  • Use tamaños de bloques grandes.

  • Realice las solicitudes de almacenamiento desde un cliente que se encuentre en la misma región que la cuenta de almacenamiento. Esto puede mejorar la latencia de red.

Pasos siguientes