Los discos persistentes te proporcionan el rendimiento descrito en la tabla de tipos de disco si la VM genera un uso suficiente para alcanzar los límites de rendimiento. Una vez que dimensiones los volúmenes de discos persistentes para satisfacer tus necesidades de rendimiento, puede que tu carga de trabajo y tu sistema operativo necesiten algunos ajustes.
En las siguientes secciones, se describen las características de las VMs y las cargas de trabajo que afectan el rendimiento del disco, y hablaremos sobre algunos elementos clave que se pueden ajustar para obtener un mejor rendimiento. Algunas de las sugerencias y cómo aplicar algunas de ellas a tipos específicos de cargas de trabajo.
Factores que afectan el rendimiento del disco
En las siguientes secciones, se describen los factores que afectan el rendimiento del disco para una VM.
- Límites de salida de red en la capacidad de procesamiento de escritura
- Operaciones de lectura y escritura simultáneas
- Tamaño del volumen lógico
- Varios discos adjuntos a una sola instancia de VM
Límites de salida de red en la capacidad de procesamiento de escritura
La VM tiene un límite de salida de red que depende del tipo de máquina de la VM.
Compute Engine almacena datos en discos persistentes con varias operaciones de escritura paralelas para garantizar la redundancia integrada. Además, cada solicitud de escritura tiene una sobrecarga que usa ancho de banda de escritura adicional.
El tráfico de escritura máximo que puede generar una instancia de VM equivale al límite de salida de red dividido por un multiplicador del ancho de banda que se tiene en cuenta para la replicación y la sobrecarga.
Los límites de salida de red se enumeran en la columna Ancho de banda de salida máximo (Gbps) en las tablas de tipo de máquina para familias de máquinas de uso general, optimizadas para procesamiento, optimizadas para procesamiento, optimizadas para memoria y optimizadas para acelerador.
El multiplicador del ancho de banda es aproximadamente 1.16 veces cuando se usa toda la red, lo que significa que el 16% de los bytes escritos son sobrecarga. Para Persistent Disk regional, el multiplicador del ancho de banda es de alrededor de 2.32 veces mayor para cubrir la sobrecarga de replicación adicional.
En una situación en la que las operaciones de lectura y escritura de Persistent Disk compiten con el ancho de banda de salida de red, el 60% del ancho de banda de salida de red máximo, definido por el tipo de máquina, se asigna a escrituras de Persistent Disk. El 40% restante está disponible para todo el resto del tráfico de salida de red. Consulta Ancho de banda de salida para obtener detalles sobre otro tráfico de salida de red.
En el siguiente ejemplo, se muestra cómo calcular el ancho de banda máximo de escritura para un Persistent Disk en una instancia de VM N1. La asignación de ancho de banda es la parte del ancho de banda de salida de red asignada a Persistent Disk. El ancho de banda máximo de escritura es el ancho de banda máximo de escritura del Persistent Disk que se ajusta para la sobrecarga.
Cantidad de CPU virtuales de VM | Límite de salida de red (MB/s) | Asignación de ancho de banda (MB/s) | Ancho de banda máximo de escritura (MB/s) | Ancho de banda máximo de escritura bajo un uso completo de la red (MB/s) |
---|---|---|---|---|
1 | 250 | 150 | 216 | 129 |
2-7 | 1,250 | 750 | 1,078 | 647 |
8-15 | 2,000 | 1,200 | 1,724 | 1,034 |
16+ | 4,000 | 2,400 | 3,448 | 2,069 |
Puedes calcular el ancho de banda máximo de Persistent Disk mediante las siguientes fórmulas:
VM N1 con 1 CPU virtual
El límite de salida de red es el siguiente:
2 Gbps/8 bits = 0.25 GB por segundo = 250 MB por segundo
La asignación del ancho de banda de Persistent Disk bajo un uso completo de red es la siguiente:
250 MB por segundo * 0.6 = 150 MB por segundo
El ancho de banda máximo de escritura de Persistent Disk sin contención de red es el siguiente:
- Discos zonales: 250 MB por segundo/1.16 ~= 216 MB por segundo
- Discos regionales: 250 MB por segundo/2.32 ~= 108 MB por segundo
El ancho de banda máximo de escritura de Persistent Disk bajo un uso completo de red es el siguiente:
- Discos zonales: 150 MB por segundo/1.16 ~= 129 MB por segundo
- Discos regionales: 150 MB por segundo/2.32 ~= 65 MB por segundo
Los límites de salida de red proporcionan un límite superior en el rendimiento. Otros factores pueden limitar el rendimiento por debajo de este nivel. Consulta las siguientes secciones para obtener información sobre otras restricciones de rendimiento.
Operaciones de lectura y escritura simultáneas
En Persistent Disk estándar, las operaciones de lectura y escritura simultáneas comparten los mismos recursos. Cuando tu VM usa una capacidad de procesamiento de lectura o IOPS mayor, es capaz de realizar menos operaciones de escritura. Por el contrario, las instancias que usan más capacidad de procesamiento de escritura o IOPS pueden realizar menos operaciones de lectura.
Los volúmenes de Persistent Disk no pueden alcanzar los límites de capacidad de procesamiento e IOPS máximos de forma simultánea para lecturas y escrituras.
El cálculo de la capacidad de procesamiento es IOPS * I/O size
. Para aprovechar los límites máximos de capacidad de procesamiento de operaciones de lectura y escritura simultáneas en discos persistentes SSD, usa un tamaño de E/S que no permita que las IOPS de lectura y escritura combinadas excedan el límite de IOPS.
En la siguiente tabla, se enumeran los límites de IOPS por VM para lecturas y escrituras simultáneas.
Disco persistente estándar | Disco persistente SSD (8 CPU virtuales) | Disco persistente SSD (más de 32 CPU virtuales) | Disco persistente SSD (más de 64 CPU virtuales) | ||||
---|---|---|---|---|---|---|---|
Lectura | Escritura | Lectura | Escritura | Lectura | Escritura | Lectura | Escritura |
7,500 | 0 | 15,000 | 0 | 60,000 | 0 | 100,000 | 0 |
5,625 | 3,750 | 11,250 | 3,750 | 45,000 | 15,000 | 75,000 | 25,000 |
3,750 | 7,500 | 7,500 | 7,500 | 30,000 | 30,000 | 50,000 | 50,000 |
1,875 | 11,250 | 3,750 | 11,250 | 15,000 | 45,000 | 25,000 | 75,000 |
0 | 15,000 | 0 | 15,000 | 0 | 60,000 | 0 | 100,000 |
Los números de IOPS en esta tabla se basan en un tamaño de E/S de 8 KB. Otros tamaños de E/S, como 16 KB, pueden tener una cantidad diferente de IOPS, pero mantienen la misma distribución de operaciones de lectura y escritura.
En la siguiente tabla, se enumeran los límites de capacidad de procesamiento (MB por segundo) por VM para operaciones de lectura y escritura simultáneas.
Disco persistente estándar | Disco persistente SSD (de 6 a 14 CPU virtuales) | Disco persistente SSD (más de 16 CPU virtuales) | |||
---|---|---|---|---|---|
Lectura | Escritura | Lectura | Escritura | Lectura | Escritura |
1,200 | 0 | 800* | 800* | 1,200* | 1,200* |
900 | 100 | ||||
600 | 200 | ||||
300 | 300 | ||||
0 | 400 |
Tamaño del volumen lógico
Persistent Disk puede tener un tamaño de hasta 64 TiB y se pueden crear volúmenes lógicos únicos de hasta 257 TiB mediante la administración de volúmenes lógicos dentro de la VM. Un tamaño de volumen mayor afecta el rendimiento de las siguientes maneras:
- No todos los sistemas de archivos locales funcionan bien a esta escala. Las operaciones comunes, como la activación y la verificación del sistema de archivos, pueden tardar más de lo esperado.
- El rendimiento máximo de Persistent Disk se logra en tamaños más pequeños. Los discos tardan más en leer o escribir de manera completa con este almacenamiento en una VM. Si es compatible con tu aplicación, considera usar varias VMs para obtener una mayor capacidad de procesamiento total del sistema.
- Es posible que realizar instantáneas de grandes cantidades de Persistent Disk tome más tiempo del previsto en completarse y puede proporcionar una vista inconsistente del volumen lógico sin una cuidadosa coordinación con la aplicación.
Varios discos adjuntos a una sola instancia de VM
Los límites de rendimiento de los discos cuando tienes varios discos conectados a una VM dependen de si los discos son del mismo tipo o de tipos diferentes.
Varios discos del mismo tipo
Si tienes varios discos del mismo tipo conectados a una instancia de VM en el mismo modo (por ejemplo, lectura/escritura), los límites de rendimiento son los mismos que los límites de un solo disco que tiene el tamaño combinado de esos discos. Si usas todos los discos al 100%, el límite de rendimiento total se divide de manera uniforme entre los discos, sin importar el tamaño relativo del disco.
Por ejemplo, supongamos que tienes un disco de 200 GB pd-standard
y un disco pd-standard
de 1,000 GB. Si no usas el disco de 1,000 GB, el disco de 200 GB puede alcanzar el límite de rendimiento de un disco estándar de 1,200 GB. Si usas ambos discos al 100%, cada uno tiene el límite de rendimiento de un disco pd-standard
de 600 GB (1,200 GB / 2 discos = 600 GB).
Varios discos de tipos diferentes
Si conectas diferentes tipos de discos a una VM, el rendimiento máximo posible es el límite de rendimiento del disco más rápido que admite la VM. El rendimiento acumulativo de los discos conectados no excederá los límites de rendimiento del disco más rápido que admite la VM.
Optimiza los discos para IOPS o las cargas de trabajo orientadas a la capacidad de procesamiento
Las recomendaciones de rendimiento dependen de si deseas maximizar las IOPS o la capacidad de procesamiento.
Cargas de trabajo orientadas a IOPS
Las bases de datos, ya sean SQL o NoSQL, tienen patrones de uso de acceso aleatorio a los datos. Google recomienda los siguientes valores para las cargas de trabajo orientadas a IOPS:
Valores de profundidad de la cola de E/S de 1 por cada 400 a 800 IOPS, hasta un límite de 64 para volúmenes grandes
Una CPU libre por cada 2,000 IOPS de lectura aleatoria y 1 CPU libre por cada 2,500 IOPS de escritura aleatoria
Si está disponible para tu tipo de máquina de VM, usa discos Google Cloud Hyperdisk Extreme, que te permiten cambiar las IOPS aprovisionadas.
Por lo general, en los documentos de prácticas recomendadas, se sugieren valores de lectura anticipada menores para MongoDB, Apache Cassandra y otras aplicaciones de bases de datos.
Cargas de trabajo orientadas a la capacidad de procesamiento
Las operaciones de transmisión, como un trabajo de Hadoop, se benefician de las operaciones de lectura secuenciales rápidas; los tamaños más grandes de E/S pueden aumentar el rendimiento de la transmisión.
Usa un tamaño de E/S de 256 KB o más.
Si está disponible para tu tipo de máquina de VM, usa discos Hyperdisk Throughputo, que te permiten cambiar la capacidad de procesamiento aprovisionada.
Para Persistent Disk estándar, usa 8 o más transmisiones secuenciales de E/S paralelas cuando sea posible. Persistent Disk estándar está diseñado para optimizar el rendimiento de E/S con el acceso al disco secuencial, similar a un disco duro HDD.
Asegúrate de que tu aplicación esté optimizada para una localidad de datos temporales razonable en discos grandes
Si tu aplicación accede a datos que se distribuyen en diferentes partes de un disco durante un período corto (cientos de GB por CPU virtual), no obtendrás IOPS óptimas. Si quieres obtener un mejor rendimiento, optimiza para una localidad de datos temporales y ten en cuenta factores como la fragmentación del disco y la aleatoriedad de las partes accedidas del disco.
Para los Persistent Disk SSD, asegúrate de que el programador de E/S en el sistema operativo esté configurado para satisfacer tus necesidades específicas.
En los sistemas basados en Linux, verifica si el programador de E/S está configurado como
none
. Este programador de E/S no reordena las solicitudes y es ideal para dispositivos rápidos de E/S aleatoria.En la línea de comandos, verifica qué programa de E/S usa tu máquina de Linux:
cat /sys/block/sda/queue/scheduler
El resultado es similar a este:
[mq-deadline] none
El programador de E/S que está activo actualmente se muestra entre corchetes (
[]
).Si el programador de E/S no está configurado como
none
, realiza uno de los siguientes pasos:- Para cambiar tu programador de E/S predeterminado a
none
, configuraelevator=none
en la entradaGRUB_CMDLINE_LINUX
del archivo de configuración GRUB. Por lo general, este archivo se encuentra en/etc/default/grub
, pero, en algunas distribuciones anteriores, podría estar ubicado en un directorio diferente.
GRUB_CMDLINE_LINUX="elevator=none vconsole.keymap=us console=ttyS0,38400n8 vconsole.font=latarcyrheb-sun16
Después de actualizar el archivo de configuración de GRUB, configura el bootloader en el sistema para que pueda iniciarse en Compute Engine.
- Como alternativa, puedes cambiar el programador de E/S en el entorno de ejecución:
echo 'none' > sudo /sys/block/sda/queue/scheduler
Si usas este método, el sistema vuelve al programador de E/S predeterminado en el reinicio. Ejecuta el comando
cat
de nuevo para verificar tu programador de E/S.- Para cambiar tu programador de E/S predeterminado a
Cambios en la carga de trabajo que pueden mejorar el rendimiento del disco
Ciertos comportamientos de la carga de trabajo pueden mejorar el rendimiento de las operaciones de E/S en los discos conectados.
Usa una profundidad de cola de E/S alta
Los discos persistentes tienen una latencia más alta que los discos conectados localmente, como los SSD locales, porque son dispositivos conectados a la red. Pueden proporcionar IOPS y capacidad de procesamiento muy altos, pero debes asegurarte de que se realicen suficientes solicitudes de E/S en paralelo. La cantidad de solicitudes de E/S realizadas en paralelo se conoce como profundidad de cola de E/S.
En las siguientes tablas, se muestra la profundidad de cola de E/S recomendada para asegurarte de que puedas lograr un nivel de rendimiento determinado. Ten en cuenta que, en la tabla que aparece a continuación, se usa una leve sobreestimación de la latencia típica para mostrar recomendaciones conservadoras. En el ejemplo, se supone que usas un tamaño de E/S de 16 KB.
Genera suficientes E/S con un tamaño de E/S grande
Usa un tamaño de E/S grande.
Para garantizar que los límites y la latencia de IOPS no generen un cuello de botella en el rendimiento de tu aplicación, usa un tamaño mínimo de E/S de 256 KB o más.
Usa tamaños de franjas grandes para las aplicaciones del sistema de archivos distribuido. Una carga de trabajo de E/S aleatoria que usa tamaños de franjas grandes (4 MB o más) logra un gran rendimiento en Persistent Disk estándar debido a la exactitud con que imita el acceso al disco con múltiples transmisiones secuenciales.
Asegúrate de que tu aplicación genere suficiente E/S
Asegúrate de que la aplicación genere suficientes E/S para usar por completo los límites de IOPS y capacidad de procesamiento del disco. Para comprender mejor el patrón de E/S de la carga de trabajo, revisa las métricas de rendimiento y el uso del disco persistente en Cloud Monitoring.
Asegúrate de que haya suficiente CPU disponible en la instancia que genera la E/S
Si tu instancia de VM consume mucha CPU, tu app no podrá administrar las IOPS descritas con anterioridad. Te recomendamos tener una CPU disponible por cada 2,000–2,500 IOPS de tráfico esperado.
Limita las cargas pesadas de E/S a un intervalo máximo
Un intervalo hace referencia a un rango contiguo de direcciones de bloque lógicas en un solo disco físico. Las cargas pesadas de E/S alcanzan el rendimiento máximo cuando se limitan a un intervalo máximo determinado, que depende del tipo de máquina de la VM a la que está conectado el disco, como se muestra en la siguiente tabla.
Tipo de máquina | Intervalo máximo recomendado |
---|---|
|
25 TB |
Todos los demás tipos de máquinas | 50 TB |
Los intervalos en discos persistentes distintos que agregan hasta 50 TB o menos pueden considerarse como un solo intervalo de 50 TB para fines de rendimiento.
Cambios en el sistema operativo para mejorar el rendimiento del disco
En algunos casos, puedes habilitar o inhabilitar funciones a nivel del sistema operativo, o configurar los discos conectados de maneras específicas para mejorar el rendimiento del disco.
Evita usar sistemas de archivos ext3 en Linux
El uso del sistema de archivos ext3 en una VM de Linux puede generar un rendimiento muy bajo en cargas de escritura pesadas. Usa ext4 cuando sea posible. El controlador del sistema de archivos ext4 es retrocompatible con ext3/ext2 y admite la activación de sistemas de archivos ext3. El sistema de archivos ext4 es el predeterminado en la mayoría de los sistemas operativos Linux.
Si no puedes migrar a ext4, como solución alternativa, puedes activar sistemas de archivos ext3 con la opción de activación data=journal
. Esto mejora las IOPS de escritura a costa de la capacidad de procesamiento de escritura. La migración a ext4 puede mejorar hasta 7 veces hasta el valor en algunas comparativas.
Inhabilita la inicialización diferida y habilita los comandos DISCARD
Los discos persistentes admiten los comandos TRIM
, que permiten a los sistemas operativos informar a los discos cuando los bloques ya no están en uso. La función para descartar la compatibilidad permite que el sistema operativo marque los bloques de disco cuando ya no sean necesarios, sin incurrir en el costo de poner los bloques a cero.
En la mayoría de los sistemas operativos Linux, puedes habilitar las operaciones de descarte cuando activas un Persistent Disk en tu VM. Las VMs de Windows Server 2012 R2 habilitan las operaciones de descarte de forma predeterminada cuando activas un disco persistente.
Habilitar operaciones de descarte puede aumentar el rendimiento general del entorno de ejecución y, también, puede acelerar el rendimiento del disco cuando se activa por primera vez. Formatear el volumen completo del disco puede llevar mucho tiempo, por lo que el formateo diferido es una práctica común. La desventaja del formateo diferido es que el costo se suele pagar la primera vez que se activa el volumen. Si inhabilitas la inicialización diferida y habilitas las operaciones de descarte, puedes obtener operaciones de formateo y activación rápidas.
Para inhabilitar la inicialización diferida y habilitar las operaciones de descarte cuando se formatea un disco, pasa los siguientes parámetros a mkfs.ext4:
-E lazy_itable_init=0,lazy_journal_init=0,discard
El parámetro
lazy_journal_init=0
no funciona en instancias con imágenes de CentOS 6 o RHEL 6. Para las VMs que usan esos sistemas operativos, formatea el disco persistente sin ese parámetro.-E lazy_itable_init=0,discard
Para habilitar las operaciones de descarte cuando activas un disco, pasa la siguiente marca al comando
mount
:-o discard
Persistent Disk funciona bien con las operaciones de descarte habilitadas. Sin embargo, puedes ejecutar fstrim
de manera periódica junto con las operaciones de descarte o en lugar de ellas. Si no usas operaciones de descarte, ejecuta fstrim
antes de crear una instantánea de tu disco de arranque. Reducir el sistema de archivos te permite crear imágenes de instantáneas más pequeñas, lo que reduce el costo de almacenamiento de instantáneas.
Ajusta el valor de lectura anticipada
Para mejorar el rendimiento de E/S, los sistemas operativos emplean técnicas como la lectura anticipada, que consiste en leer en la memoria más archivos de los solicitados en el supuesto de que las operaciones de lectura posteriores necesitarán esos datos. Una lectura anticipada mayor aumenta la capacidad de procesamiento a expensas de la memoria y las IOPS. Una lectura anticipada menor aumenta las IOPS a expensas de la capacidad de procesamiento.
En los sistemas Linux, puedes obtener y establecer el valor de lectura anticipada con el comando blockdev:
$ sudo blockdev --getra /dev/DEVICE_ID
$ sudo blockdev --setra VALUE /dev/DEVICE_ID
El valor de lectura anticipada es <desired_readahead_bytes>
/ 512 bytes.
Por ejemplo, para una lectura anticipada de 8 MB, 8 MB es 8,388,608 bytes (8 * 1,024 * 1,024).
8388608 bytes / 512 bytes = 16384
Establece blockdev en 16384
:
$ sudo blockdev --setra 16384 /dev/DEVICE_ID
Modifica tu VM o crea una nueva
Existen límites asociados con cada tipo de máquina de VM que pueden afectar el rendimiento que puedes obtener de los discos conectados. Estos son algunos de los límites:
- El rendimiento de Persistent Disk aumenta a medida que aumenta la cantidad de CPU virtuales disponibles.
- Hyperdisk no es compatible con todos los tipos de máquinas.
- Las tarifas de salida de red aumentan a medida que aumenta la cantidad de CPU virtuales disponibles.
Asegúrate de tener CPU libres
Realizar operaciones de lectura y escritura en un disco persistente requiere ciclos de CPU de tu VM. Si quieres alcanzar niveles de IOPS muy altos y coherentes, debes tener CPU libres para procesar E/S.
Para aumentar la cantidad de CPU virtuales disponibles con tu VM, puedes crear una VM nueva o editar el tipo de máquina de una instancia de VM.
Crea una VM nueva para obtener una nueva funcionalidad
Los tipos de discos más nuevos no son compatibles con todas las series o tipos de máquinas. Hyperdisk proporciona tasas de IOPS o capacidad de procesamiento más altas para tus cargas de trabajo, pero, en la actualidad, están disponibles con unas pocas series de máquinas y requieren al menos 64 CPU virtuales.
Por lo general, las series de máquinas de VM nuevas se ejecutan en CPUs más nuevas, lo que puede ofrecer un mejor rendimiento que sus antecesores. Además, las CPUs más recientes pueden admitir funciones adicionales para mejorar el rendimiento de tus cargas de trabajo, como extensiones de matriz avanzadas (AMX) o extensiones de vector avanzadas de Intel (AVX-512).
¿Qué sigue?
- Compara los volúmenes de Persistent Disk conectados con las VMs de Linux.
- Obtén más información sobre los precios de discos persistentes.
- Obtén información sobre cómo supervisar el rendimiento del disco mediante la revisión de las métricas de rendimiento del disco persistente.