Rendimiento de la máquina virtual y del disco

Se aplica a: ✔️ Máquinas virtuales Linux ✔️ Máquinas virtuales Windows ✔️ Conjuntos de escalado flexibles ✔️ Conjuntos de escalado uniformes

Este artículo ayuda a aclarar el rendimiento de disco y su funcionamiento cuando se combinan Azure Virtual Machines y discos de Azure. En él, se describe también cómo diagnosticar cuellos de botella en la E/S del disco y los cambios que puede realizar para optimizar el rendimiento.

Funcionamiento del rendimiento

Las máquinas virtuales de Azure tienen límites de rendimiento y de operaciones de entrada/salida (E/S) por segundo en función del tipo y tamaño de la máquina virtual. Los discos de sistema operativo y de datos se pueden conectar a las máquinas virtuales. Los discos tienen sus propios límites de IOPS y rendimiento.

El rendimiento de la aplicación se limita cuando solicita más IOPS o rendimiento que los que se asignan a las máquinas virtuales o a los discos conectados. Cuando se limita, la aplicación experimenta un rendimiento poco óptimo. Esto puede dar lugar a consecuencias negativas como una mayor latencia. Ahora se ejecutarán un par de ejemplos para aclarar este concepto. Para facilitar el seguimiento de estos ejemplos, solo se examinará IOPS. Pero la misma lógica se aplica al rendimiento.

Limitación de E/S de disco

Configuración:

  • Standard_D8s_v3
    • E/S por segundo no almacenadas en caché: 12.800
  • Disco de SO E30
    • E/S por segundo: 500
  • Dos discos de datos E30 × 2
    • E/S por segundo: 500

Diagrama en el que se muestra el límite de nivel de disco.

La aplicación que se ejecuta en la máquina virtual realiza una solicitud que requiere 10 000 IOPS para la máquina virtual. La máquina virtual permite todas ellas por que la máquina virtual Standard_D8s_v3 puede ejecutar hasta 12 800 IOPS.

Las 10 000 solicitudes de IOPS se dividen en tres solicitudes diferentes para los distintos discos:

  • Se solicitan 1000 IOPS al disco del sistema operativo.
  • Se solicitan 4500 IOPS a cada disco de datos.

Todos los discos conectados son E30 y solo pueden controlar 500 IOPS. Por tanto, cada uno responde con 500 IOPS. Los discos conectados limitan el rendimiento de la aplicación y solo puede procesar 1500 IOPS. La aplicación podría funcionar a un rendimiento máximo de 10 000 IOPS si se usaran discos de mejor rendimiento, como discos P30 SSD Premium.

Límite de E/S de máquinas virtuales

Configuración:

  • Standard_D8s_v3
    • E/S por segundo no almacenadas en caché: 12.800
  • Disco de SO P30
    • IOPS: 5.000
  • Dos discos de datos P30 × 2
    • IOPS: 5.000

Diagrama en el que se muestra la limitación del nivel de máquina virtual.

La aplicación que se ejecuta en la máquina virtual realiza una solicitud que requiere 15 000 IOPS. Desafortunadamente, la máquina virtual Standard_D8s_v3 solo está aprovisionada para controlar 12 800 IOPS. La máquina virtual limita la aplicación y debe asignar las 12 800 IOPS.

Esas 12 800 IOPS solicitadas se dividen en tres solicitudes diferentes para los distintos discos:

  • Se solicitan 4267 IOPS al disco del sistema operativo.
  • Se solicitan 4266 IOPS a cada disco de datos.

Todos los discos conectados son discos P30 que pueden controlar 5000 IOPS. Por tanto, responden con las cantidades solicitadas.

Límites de almacenamiento en caché frente a sin caché para máquinas virtuales

Las máquinas virtuales que están habilitadas tanto para Premium Storage como para el almacenamiento en caché de Premium Storage tienen dos límites de ancho de banda de almacenamiento diferentes. Ahora se examinará la máquina virtual Standard_D8s_v3 como ejemplo. Esta es la documentación de la serie Dsv3 y la máquina Standard_D8s_v3:

Gráfico en el que se muestran las especificaciones de Dsv3.

  • El rendimiento de disco máximo no almacenado en caché es el límite máximo de almacenamiento predeterminado que la máquina virtual puede controlar.
  • El límite del rendimiento de almacenamiento almacenado en caché máximo es un límite independiente cuando se habilita el almacenamiento en caché del host.

El almacenamiento en caché de host funciona con el almacenamiento más cercano a la máquina virtual que puede escribirse o leerse rápidamente. La cantidad de almacenamiento que está disponible para la máquina virtual para el almacenamiento en caché del host se encuentra en la documentación. Por ejemplo, puede ver que la Standard_D8s_v3 incluye 200 GiB de almacenamiento en caché.

Puede habilitar el almacenamiento en caché de host al crear la máquina virtual y conectar los discos. También puede activar y desactivar el almacenamiento en caché de host de los discos en una máquina virtual existente. De forma predeterminada, los discos de datos compatibles con caché tendrán habilitado el almacenamiento en caché de solo lectura. Los discos del sistema operativo compatibles con caché tendrán habilitado el almacenamiento en caché de lectura y escritura.

Captura de pantalla en la que se muestra el almacenamiento en caché de host.

Puede ajustar el almacenamiento en caché de host para que coincida con los requisitos de carga de trabajo de cada disco. Puede configurar el almacenamiento en caché de host para que sea:

  • Solo lectura: para cargas de trabajo que solo realizan operaciones de lectura
  • Lectura/escritura: para cargas de trabajo que realizan un equilibrio de operaciones de lectura y escritura

Si la carga de trabajo no sigue ninguno de estos patrones, no se recomienda usar el almacenamiento en caché de host.

Ahora se verán un par de ejemplos de diferentes opciones de configuración de caché de host y cómo afecta al flujo de datos y al rendimiento. En este primer ejemplo, se examina lo que sucede con las solicitudes de E/S cuando la opción de almacenamiento en caché de host está establecida en Solo lectura.

Configuración:

  • Standard_D8s_v3
    • IOPS en caché: 16 000
    • IOPS no almacenadas en caché: 12.800
  • Disco de datos P30
    • IOPS: 5.000
    • Almacenamiento en caché de host: Solo lectura

Cuando se realiza una lectura y los datos deseados están disponibles en la caché, esta devuelve los datos solicitados. No es necesario leer desde el disco. Esta lectura se cuenta para los límites en caché de la máquina virtual.

Diagrama en el que se muestra un acierto de lectura del almacenamiento en caché de host de lectura.

Cuando se realiza una lectura y los datos deseados no están disponibles en la caché, la solicitud de lectura se retransmite al disco. Después, el disco la muestra en la caché y en la máquina virtual. Esta lectura se cuenta para el límite sin almacenamiento en caché de la máquina virtual y el límite almacenado en caché de la misma.

Diagrama en el que se muestra un fallo de lectura del almacenamiento en caché de host de lectura.

Cuando se realiza una escritura, esta tiene que hacerse en la memoria caché y en el disco antes de que se considere completa. Esta escritura se cuenta para el límite sin almacenamiento en caché de la máquina virtual y el límite almacenado en caché de la misma.

Diagrama en el que se muestra una escritura de almacenamiento en caché de host de lectura.

Ahora se verá lo que sucede con las solicitudes de E/S cuando la opción de almacenamiento en caché de host está establecida en Lectura/escritura.

Configuración:

  • Standard_D8s_v3
    • IOPS en caché: 16 000
    • IOPS no almacenadas en caché: 12.800
  • Disco de datos P30
    • IOPS: 5.000
    • Almacenamiento en caché de host: Lectura/escritura

Una lectura se controla de la misma manera que una operación de solo lectura. Las escrituras son lo único que es diferente con el almacenamiento en caché de lectura y escritura. Al escribir con el almacenamiento en caché de host establecido en Lectura/escritura, la escritura solo se debe realizar en la caché de host para que se considere completada. Después, la escritura se escribe de forma diferida en el disco cuando la caché se vacía periódicamente. Además, los clientes pueden forzar un vaciado mediante la emisión de un comando f/sync o fua. Esto significa que una escritura se cuenta para la E/S almacenada en caché cuando se escribe en la caché. Cuando se escribe de forma diferida en el disco, se cuenta para la E/S sin almacenamiento en caché.

Diagrama en el que se muestra una escritura de almacenamiento en caché de host de lectura/escritura.

Ahora continuará con la máquina virtual Standard_D8s_v3. Menos en esta ocasión, se habilitará el almacenamiento en caché de host en los discos. Esto hace que el límite de IOPS de la VM sea de 16 000 IOPS. Hay tres discos P30 subyacentes conectados a la máquina virtual y cada uno puede administrar 5000 IOPS.

Configuración:

  • Standard_D8s_v3
    • IOPS en caché: 16 000
    • IOPS no almacenadas en caché: 12.800
  • Disco de SO P30
    • IOPS: 5.000
    • Almacenamiento en caché de host: Lectura/escritura
  • Dos discos de datos P30 × 2
    • IOPS: 5.000
    • Almacenamiento en caché de host: Lectura/escritura

Diagrama en el que se muestra un ejemplo de almacenamiento en caché de host.

La aplicación usa una máquina virtual Standard_D8s_v3 con el almacenamiento en caché habilitado. Realiza una solicitud de 16 000 IOPS. Las solicitudes se completan en cuanto se leen o escriben en la caché. Después, las escrituras se escriben de forma diferida en los discos conectados.

Límites no almacenados en caché y almacenados en caché combinados

Los límites en caché de una máquina virtual son independientes de los límites no almacenados en caché. Esto significa que puede habilitar el almacenamiento en caché de host en los discos conectados a una máquina virtual mientras no lo habilita en otros discos. Esta configuración permite que las máquinas virtuales obtengan una E/S de almacenamiento total del límite en caché más el límite no almacenado en caché.

Ahora se verá un ejemplo para ayudarle a comprender cómo funcionan estos límites de forma conjunta. Se continuará con la configuración de una máquina virtual Standard_D8s_v3 y discos Premium conectados.

Configuración:

  • Standard_D8s_v3
    • IOPS en caché: 16 000
    • IOPS no almacenadas en caché: 12.800
  • Disco de SO P30
    • IOPS: 5.000
    • Almacenamiento en caché de host: Lectura/escritura
  • Dos discos de datos P30 × 2
    • IOPS: 5.000
    • Almacenamiento en caché de host: Lectura/escritura
  • Dos discos de datos P30 × 2
    • IOPS: 5.000
    • Almacenamiento en caché de host: Disabled (Deshabilitado)

Diagrama en el que se muestra un ejemplo de almacenamiento en caché de host con almacenamiento remoto.

En este caso, la aplicación que se ejecuta en una máquina virtual Standard_D8s_v3 realiza una solicitud de 25 000 IOPS. La solicitud se divide en 5000 IOPS en cada uno de los discos conectados. En tres discos se usa el almacenamiento en caché de host y en dos discos no.

  • Como los tres discos que usan el almacenamiento en caché de host están dentro de los límites en caché de 16 000, esas solicitudes se completan correctamente. No se produce ningún límite de rendimiento de almacenamiento.
  • Como los dos discos que no usan el almacenamiento en caché de host están dentro de los límites no almacenados en caché de 12 800, esas solicitudes también se completan correctamente. No se produce ningún límite.