Los discos persistentes le brindan el rendimiento descrito en la tabla de tipos de disco si la máquina virtual genera un uso suficiente para alcanzar los límites de rendimiento. Después de dimensionar los volúmenes de sus discos persistentes para satisfacer sus necesidades de rendimiento, es posible que su carga de trabajo y su sistema operativo necesiten algunos ajustes.
Las siguientes secciones describen las características de las máquinas virtuales y las cargas de trabajo que afectan el rendimiento del disco y analizan algunos elementos clave que se pueden ajustar para mejorar el 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
Las siguientes secciones describen los factores que afectan el rendimiento del disco para una máquina virtual.
- Límites de salida de red en el rendimiento de escritura
- Lecturas y escrituras simultáneas.
- Tamaño de volumen lógico
- Varios discos conectados a una única instancia de VM
Límites de salida de red en el rendimiento de escritura
Su VM tiene un límite de salida de red que depende del tipo de máquina de la VM.
Compute Engine almacena datos en un disco persistente con múltiples escrituras paralelas para garantizar la redundancia integrada. Además, cada solicitud de escritura tiene cierta sobrecarga que utiliza ancho de banda de escritura adicional.
El tráfico de escritura máximo que puede emitir una instancia de VM es el límite de salida de la red dividido por un multiplicador de ancho de banda que representa la replicación y la sobrecarga.
Los límites de salida de la red se enumeran en la columna Ancho de banda máximo de salida (Gbps) en las tablas de tipos de máquinas para las familias de máquinas de uso general , optimizadas para computación , optimizadas para almacenamiento , optimizadas para memoria y optimizadas para acelerador .
El multiplicador de ancho de banda es de aproximadamente 1,16 veces con la utilización total de la red, lo que significa que el 16 % de los bytes escritos son gastos generales. Para el disco persistente regional, el multiplicador de ancho de banda es aproximadamente 2,32 veces para tener en cuenta la sobrecarga de replicación adicional.
En una situación en la que las operaciones de lectura y escritura del disco persistente compiten con el ancho de banda de salida de la red, el 60 % del ancho de banda máximo de salida de la red, definido por el tipo de máquina, se asigna a las escrituras del disco persistente. El 40% restante está disponible para todo el resto del tráfico de salida de la red. Consulte el ancho de banda de salida para obtener detalles sobre otro tráfico de salida de la red.
El siguiente ejemplo muestra cómo calcular el ancho de banda de escritura máximo para un disco persistente en una instancia de VM N1 . La asignación de ancho de banda es la porción del ancho de banda de salida de la red asignada al disco persistente. El ancho de banda de escritura máximo es el ancho de banda de escritura máximo del disco persistente ajustado por sobrecarga.
Recuento de vCPU de máquina virtual | Límite de salida de red (MB/s) | Asignación de ancho de banda (MB/s) | Ancho de banda de escritura máximo (MB/s) | Ancho de banda de escritura máximo con utilización total 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 |
Puede calcular el ancho de banda máximo del disco persistente utilizando las siguientes fórmulas:
N1 máquina virtual con 1 vCPU
El límite de salida de la red es:
2 Gbps / 8 bits = 0,25 GB por segundo = 250 MB por segundo
La asignación de ancho de banda del disco persistente con plena utilización de la red es:
250 MB por segundo * 0,6 = 150 MB por segundo.
El ancho de banda de escritura máximo del disco persistente sin contención de red es:
- 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 de escritura máximo del disco persistente con utilización total de la red es:
- 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 la red proporcionan un límite superior de rendimiento. Otros factores pueden limitar el rendimiento por debajo de este nivel. Consulte las siguientes secciones para obtener información sobre otras restricciones de rendimiento.
Lecturas y escrituras simultáneas.
Para el disco persistente estándar, las lecturas y escrituras simultáneas comparten los mismos recursos. Cuando su VM utiliza más rendimiento de lectura o IOPS, puede realizar menos escrituras. Por el contrario, las instancias que utilizan más rendimiento de escritura o IOPS pueden realizar menos lecturas.
Los volúmenes de discos persistentes no pueden alcanzar simultáneamente su rendimiento máximo y sus límites de IOPS para lecturas y escrituras.
El cálculo del rendimiento es IOPS * I/O size
. Para aprovechar los límites de rendimiento máximo para lecturas y escrituras simultáneas en un disco persistente SSD, use un tamaño de E/S tal que las IOPS de lectura y escritura combinadas no excedan el límite de IOPS.
La siguiente tabla enumera los límites de IOPS por máquina virtual para lecturas y escrituras simultáneas.
Disco persistente estándar | Disco persistente SSD (8 vCPU) | Disco persistente SSD (más de 32 vCPU) | Disco persistente SSD (más de 64 vCPU) | ||||
---|---|---|---|---|---|---|---|
Leer | Escribir | Leer | Escribir | Leer | Escribir | Leer | Escribir |
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 |
1875 | 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 números de IOPS diferentes pero mantener la misma distribución de lectura/escritura.
La siguiente tabla enumera los límites de rendimiento (MB por segundo) por máquina virtual para lecturas y escrituras simultáneas.
Disco persistente estándar | Disco persistente SSD (6-14 vCPU) | Disco persistente SSD (más de 16 vCPU) | |||
---|---|---|---|---|---|
Leer | Escribir | Leer | Escribir | Leer | Escribir |
1200 | 0 | 800 * | 800 * | 1.200 * | 1.200 * |
900 | 100 | ||||
600 | 200 | ||||
300 | 300 | ||||
0 | 400 |
Tamaño de volumen lógico
El disco persistente puede tener un tamaño de hasta 64 TiB y puede crear volúmenes lógicos únicos de hasta 257 TiB utilizando la administración de volúmenes lógicos dentro de su 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 el montaje y la comprobación del sistema de archivos, pueden tardar más de lo esperado.
- El rendimiento máximo del disco persistente se logra en tamaños más pequeños. Los discos tardan más en leerse o escribirse por completo con tanto almacenamiento en una máquina virtual. Si su aplicación lo admite, considere usar varias máquinas virtuales para obtener un mayor rendimiento total del sistema.
- La captura de instantáneas de grandes cantidades de discos persistentes puede tardar más de lo esperado en completarse y puede proporcionar una vista inconsistente de su volumen lógico sin una coordinación cuidadosa con su aplicación.
Varios discos conectados a una única instancia de VM
Los límites de rendimiento de los discos cuando tiene varios discos conectados a una máquina virtual dependen de si los discos son del mismo tipo o de tipos diferentes.
Varios discos del mismo tipo
Si tiene 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 utiliza todos los discos al 100%, el límite de rendimiento agregado se divide equitativamente entre los discos independientemente del tamaño relativo del disco.
Por ejemplo, supongamos que tiene un disco pd-standard
200 GB y un disco pd-standard
de 1000 GB. Si no utiliza el disco de 1000 GB, el disco de 200 GB puede alcanzar el límite de rendimiento de un disco estándar de 1200 GB. Si utiliza ambos discos al 100%, cada uno tiene el límite de rendimiento de un disco pd-standard
600 GB (1200 GB / 2 discos = disco de 600 GB).
Múltiples discos de diferentes tipos.
Si conecta 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 acumulado de los discos conectados no excederá los límites de rendimiento del disco más rápido que admite la VM.
Optimice sus discos para IOPS o cargas de trabajo orientadas al rendimiento
Las recomendaciones de rendimiento dependen de si desea maximizar las IOPS o el rendimiento.
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 cargas de trabajo orientadas a IOPS:
Valores de profundidad de la cola de E/S de 1 por cada 400 a 800 de IOPS, hasta un límite de 64 en volúmenes grandes
Una CPU libre por cada 2000 IOPS de lectura aleatoria y 1 CPU libre por cada 2500 IOPS de escritura aleatoria
Si están disponibles para su tipo de máquina VM, use los discos Google Cloud Hyperdisk Extreme, que le permiten cambiar las IOPS aprovisionadas.
Los valores de lectura anticipada más bajos generalmente se sugieren en documentos de mejores prácticas para MongoDB , Apache Cassandra y otras aplicaciones de bases de datos.
Cargas de trabajo orientadas al rendimiento
Las operaciones de transmisión, como un trabajo de Hadoop, se benefician de lecturas secuenciales rápidas y tamaños de E/S más grandes pueden aumentar el rendimiento de la transmisión.
Utilice un tamaño de E/S de 256 KB o más.
Si están disponibles para su tipo de máquina VM, utilice discos Hyperdisk Throughput, que le permiten cambiar el rendimiento aprovisionado.
Para el disco persistente estándar, utilice 8 o más flujos de E/S secuenciales paralelos cuando sea posible. Standard Persistent Disk está diseñado para optimizar el rendimiento de E/S para el acceso secuencial al disco, similar a un disco duro HDD físico.
Asegúrese de que su aplicación esté optimizada para una localidad de datos razonable en discos grandes.
Si su aplicación accede a datos distribuidos en diferentes partes de un disco durante un corto período de tiempo (cientos de GB por vCPU), no logrará IOPS óptimas. Para obtener el mejor rendimiento, optimice la localidad de los datos, sopesando factores como la fragmentación del disco y la aleatoriedad de las partes del disco a las que se accede.
Para el disco persistente SSD, asegúrese de que el programador de E/S del sistema operativo esté configurado para satisfacer sus necesidades específicas.
En sistemas basados en Linux, verifique si el programador de E/S está configurado en
none
. Este programador de E/S no reordena las solicitudes y es ideal para dispositivos de E/S rápidos y aleatorios.En la línea de comando, verifique la programación de E/S que utiliza su máquina Linux:
cat /sys/block/sda/queue/scheduler
El resultado es similar al siguiente:
[mq-deadline] none
El programador de E/S que está actualmente activo se muestra entre corchetes (
[]
).Si su programador de E/S no está configurado en
none
, realice uno de los siguientes pasos:- Para cambiar su programador de E/S predeterminado a
none
, establezcaelevator=none
en la entradaGRUB_CMDLINE_LINUX
del archivo de configuración de GRUB. Normalmente, este archivo se encuentra en/etc/default/grub
, pero en algunas distribuciones anteriores, puede 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, configure el gestor de arranque en el sistema para que pueda arrancar en Compute Engine.
- Alternativamente, puede cambiar el programador de E/S en tiempo de ejecución:
echo 'none' > sudo /sys/block/sda/queue/scheduler
Si utiliza este método, el sistema vuelve al programador de E/S predeterminado al reiniciar. Ejecute el comando
cat
nuevamente para verificar su programador de E/S.- Para cambiar su programador de E/S predeterminado a
Cambios en la carga de trabajo que pueden mejorar el rendimiento del disco
Ciertos comportamientos de carga de trabajo pueden mejorar el rendimiento de las operaciones de E/S en los discos conectados.
Utilice una profundidad de cola de E/S alta
Los discos persistentes tienen una latencia más alta que los discos conectados localmente, como los discos SSD locales, porque son dispositivos conectados a la red. Pueden proporcionar IOPS y rendimiento muy altos, pero debe asegurarse de que se realicen suficientes solicitudes de E/S en paralelo. El número de solicitudes de E/S realizadas en paralelo se denomina profundidad de la cola de E/S .
Las tablas siguientes muestran la profundidad de la cola de E/S recomendada para garantizar que pueda alcanzar un determinado nivel de rendimiento. Tenga en cuenta que la siguiente tabla utiliza una ligera sobreestimación de la latencia típica para mostrar recomendaciones conservadoras. El ejemplo supone que está utilizando un tamaño de E/S de 16 KB.
Genere suficientes E/S utilizando un tamaño de E/S grande
Utilice un tamaño de E/S grande
Para garantizar que los límites de IOPS y la latencia no obstaculicen el rendimiento de su aplicación, utilice un tamaño de E/S mínimo de 256 KB o superior.
Utilice tamaños de banda grandes para aplicaciones de sistemas de archivos distribuidos. Una carga de trabajo de E/S aleatoria que utiliza tamaños de banda grandes (4 MB o más) logra un gran rendimiento en el disco persistente estándar debido a lo cerca que la carga de trabajo imita el acceso al disco de flujo secuencial múltiple.
Asegúrese de que su aplicación esté generando suficiente E/S
Asegúrese de que su aplicación esté generando suficientes E/S para utilizar completamente los IOPS y los límites de rendimiento del disco. Para comprender mejor el patrón de E/S de su carga de trabajo, revise el uso persistente del disco y las métricas de rendimiento en Cloud Monitoring .
Asegúrese de que haya suficiente CPU disponible en la instancia que genera la E/S
Si su instancia de VM no tiene suficiente CPU, su aplicación no podrá administrar las IOPS descritas anteriormente. Le recomendamos tener una CPU disponible por cada 2000 a 2500 IOPS de tráfico esperado.
Limite las cargas pesadas de E/S a un alcance máximo
Un intervalo se refiere a un rango contiguo de direcciones de bloques lógicos en un único disco físico. Las cargas pesadas de E/S logran el máximo rendimiento cuando se limitan a un intervalo máximo determinado, que depende del tipo de máquina virtual a la que está conectado el disco, como se indica en la siguiente tabla.
Tipo de máquina | Luz máxima recomendada |
---|---|
| 25 TB |
Todos los demás tipos de máquinas | 50 TB |
Las extensiones en discos persistentes independientes que suman hasta 50 TB o menos se pueden considerar iguales a una única extensión de 50 TB a efectos de rendimiento.
Cambios en el sistema operativo para mejorar el rendimiento del disco
En algunos casos, puede habilitar o deshabilitar funciones a nivel del sistema operativo o configurar los discos conectados de maneras específicas para mejorar el rendimiento del disco.
Evite el uso de sistemas de archivos ext3 en Linux
El uso del sistema de archivos ext3 en una máquina virtual Linux puede generar un rendimiento muy deficiente bajo cargas de escritura intensas. Utilice ext4 cuando sea posible. El controlador del sistema de archivos ext4 es compatible con versiones anteriores de ext3/ext2 y admite el montaje de sistemas de archivos ext3. El sistema de archivos ext4 es el predeterminado en la mayoría de los sistemas operativos Linux.
Si no puede migrar a ext4, como solución alternativa, puede montar sistemas de archivos ext3 con la opción de montaje data=journal
. Esto mejora las IOPS de escritura a costa del rendimiento de escritura. La migración a ext4 puede resultar en una mejora de hasta 7 veces en algunos puntos de referencia.
Deshabilite la inicialización diferida y habilite los comandos DISCARD
Los discos persistentes admiten operaciones de descarte o comandos TRIM
, que permiten a los sistemas operativos informar a los discos cuando los bloques ya no están en uso. La compatibilidad con el descarte permite que el sistema operativo marque bloques de disco como ya no necesarios, sin incurrir en el costo de ponerlos a cero.
En la mayoría de los sistemas operativos Linux, habilita las operaciones de descarte cuando monta un disco persistente en su VM. Las máquinas virtuales Windows Server 2012 R2 habilitan operaciones de descarte de forma predeterminada cuando se monta un disco persistente.
Habilitar las operaciones de descarte puede aumentar el rendimiento general del tiempo de ejecución y también puede acelerar el rendimiento de su disco cuando se monta por primera vez. Formatear un volumen de disco completo 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 a menudo se paga la primera vez que se monta el volumen. Al deshabilitar la inicialización diferida y habilitar las operaciones de descarte, puede obtener operaciones de formato y montaje rápidas.
Deshabilite la inicialización diferida y habilite las operaciones de descarte al formatear un disco pasando 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 CentOS 6 o RHEL 6 . Para las máquinas virtuales que utilizan esos sistemas operativos, formatee el disco persistente sin ese parámetro.-E lazy_itable_init=0,discard
Habilite las operaciones de descarte al montar un disco pasando el siguiente indicador al comando
mount
:-o discard
El disco persistente funciona bien con las operaciones de descarte habilitadas. Sin embargo, opcionalmente puede ejecutar fstrim
periódicamente además o en lugar de utilizar operaciones de descarte. Si no utiliza operaciones de descarte, ejecute fstrim
antes de crear una instantánea de su disco de arranque. Recortar el sistema de archivos le permite crear instantáneas más pequeñas, lo que reduce el costo de almacenar instantáneas.
Ajustar el valor de lectura anticipada
Para mejorar el rendimiento de E/S, los sistemas operativos emplean técnicas como la lectura anticipada , en la que se lee en la memoria una cantidad mayor de un archivo del solicitado, asumiendo que es probable que las lecturas posteriores necesiten esos datos. Una mayor lectura anticipada aumenta el rendimiento a expensas de la memoria y las IOPS. Una lectura anticipada más baja aumenta las IOPS a expensas del rendimiento.
En sistemas Linux, puede obtener y configurar 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 son 8388608 bytes (8 * 1024 * 1024).
8388608 bytes / 512 bytes = 16384
Configuraste blockdev en 16384
:
$ sudo blockdev --setra 16384 /dev/DEVICE_ID
Modifique su VM o cree una nueva VM
Existen límites asociados con cada tipo de máquina VM que pueden afectar el rendimiento que puede obtener de los discos conectados. Estos límites incluyen:
- El rendimiento del disco persistente aumenta a medida que aumenta la cantidad de vCPU disponibles.
- Hyperdisk no es compatible con todos los tipos de máquinas.
- Las tasas de salida de la red aumentan a medida que aumenta la cantidad de vCPU disponibles.
Asegúrate de tener CPU libres
Leer y escribir en un disco persistente requiere ciclos de CPU de su VM. Para lograr niveles de IOPS muy altos y consistentes, debe tener CPU libres para procesar E/S.
Para aumentar la cantidad de vCPU disponibles con su VM, puede crear una nueva VM o puede editar el tipo de máquina de una instancia de VM .
Cree una nueva máquina virtual para obtener nuevas funciones
Los tipos de discos más nuevos no son compatibles con todas las series o tipos de máquinas. Hyperdisk proporciona IOPS o tasas de rendimiento más altas para sus cargas de trabajo, pero actualmente solo están disponibles con unas pocas series de máquinas y requieren al menos 64 vCPU.
Las nuevas series de máquinas virtuales normalmente se ejecutan en CPU más nuevas, que pueden ofrecer un mejor rendimiento que sus predecesoras. Además, las CPU más nuevas pueden admitir funciones adicionales para mejorar el rendimiento de sus cargas de trabajo, como Advanced Matrix Extensions (AMX) o Intel Advanced Vector Extensions (AVX-512).
¿Qué sigue?
- Supervise el rendimiento de su disco revisando las métricas de rendimiento del disco y monitoreando su estado .
- Realice una evaluación comparativa de los volúmenes de discos persistentes conectados a máquinas virtuales Linux .
- Obtenga más información sobre los precios de los discos persistentes .
- Aprenda a monitorear el rendimiento de su disco revisando las métricas de rendimiento del disco persistente .