Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.
Control del estado del procesador para su instancia AL2 de Amazon EC2
C-states controlan los niveles de reposo a los que puede entrar un núcleo cuando está inactivo. C-states se numeran empezando por C0 (el estado más superficial en el que el núcleo está totalmente despierto y ejecutando instrucciones) y van hasta C6 (el estado inactivo más profundo en el que el núcleo está apagado).
P-states controlan el rendimiento deseado (en frecuencia de CPU) desde un núcleo. P-states se numeran empezando por P0 (la configuración de rendimiento más alta en la que el núcleo puede utilizar la tecnología Intel Turbo Boost para aumentar la frecuencia si es posible) y van desde P1 (la P-state que solicita la frecuencia de referencia máxima) hasta P15 (la frecuencia más baja posible).
Es posible que desee cambiar la P-state configuración C-state o para aumentar la uniformidad del rendimiento del procesador, reducir la latencia o ajustar la instancia para una carga de trabajo específica. La P-state configuración C-state y los valores predeterminados proporcionan el máximo rendimiento, lo que resulta óptimo para la mayoría de las cargas de trabajo. Sin embargo, si su aplicación se beneficiaría de una latencia reducida a costa de frecuencias más altas de uno o dos núcleos, o de un rendimiento uniforme en las frecuencias más bajas en lugar de en las frecuencias rápidas de Turbo Boost, considere la posibilidad de experimentar con los C-state P-state ajustes disponibles para estas instancias.
Para obtener información sobre los tipos de instancias de Amazon EC2 que permiten al sistema operativo controlar el procesador P-states, consulte Control del C-states estado del procesador para su instancia de Amazon EC2 en la Guía del usuario de Amazon EC2.
Las siguientes secciones describen las distintas configuraciones de estado del procesador y cómo monitorizar los efectos de la configuración. Estos procedimientos se escribieron para Amazon Linux y se aplican a él; sin embargo, es posible que también funcionen para otras distribuciones de Linux con una versión 3.9 o posterior del kernel de Linux.
nota
En los ejemplos de esta página se utiliza lo siguiente:
-
La turbostat utilidad para mostrar la frecuencia y la C-state información del procesador. La utilidad turbostat está disponible en Amazon Linux de forma predeterminada.
-
El comando stress para simular una carga de trabajo. Para instalar stress, habilite primero el repositorio EPEL mediante la ejecución de sudo amazon-linux-extras install epel y, a continuación, sudo yum install -y stress.
Si el resultado no muestra la C-state información, incluya la --debug opción en el comando (sudo turbostat --debug
stress <options>).
Contenido
Máximo rendimiento con frecuencia máxima de Turbo Boost
Esta es la configuración predeterminada de control de estados del procesador para Amazon Linux AMI y se recomienda para la mayoría de cargas de trabajo. Esta configuración ofrece el rendimiento más alto con la menor variabilidad. Al permitir que los núcleos inactivos entren en estados de suspensión más profundos, se obtiene el margen térmico necesario para que los procesos de núcleo único o doble alcancen su máximo potencial de Turbo Boost.
El siguiente ejemplo muestra una instancia c4.8xlarge con dos núcleos funcionando activamente y llegando a su frecuencia máxima de procesador Turbo Boost.
[ec2-user ~]$sudo turbostat stress -c 2 -t 10stress: info: [30680] dispatching hogs: 2 cpu, 0 io, 0 vm, 0 hdd stress: info: [30680] successful run completed in 10s pk cor CPU %c0 GHz TSC SMI %c1 %c3 %c6 %c7 %pc2 %pc3 %pc6 %pc7 Pkg_W RAM_W PKG_% RAM_% 5.54 3.44 2.90 0 9.18 0.00 85.28 0.00 0.00 0.00 0.00 0.00 94.04 32.70 54.18 0.00 0 0 0 0.12 3.26 2.90 0 3.61 0.00 96.27 0.00 0.00 0.00 0.00 0.00 48.12 18.88 26.02 0.00 0 0 18 0.12 3.26 2.90 0 3.61 0 1 1 0.12 3.26 2.90 0 4.11 0.00 95.77 0.00 0 1 19 0.13 3.27 2.90 0 4.11 0 2 2 0.13 3.28 2.90 0 4.45 0.00 95.42 0.00 0 2 20 0.11 3.27 2.90 0 4.47 0 3 3 0.05 3.42 2.90 0 99.91 0.00 0.05 0.00 0 3 21 97.843.452.90 0 2.11 ... 1 1 10 0.06 3.33 2.90 0 99.88 0.01 0.06 0.00 1 1 28 97.613.442.90 0 2.32 ... 10.002556 sec
En este ejemplo, las vCPU 21 y 28 funcionan a su máxima frecuencia Turbo Boost porque los demás núcleos han pasado al estado de inactividad C6 para ahorrar energía y ofrecer margen térmico y de potencia para los núcleos que están en funcionamiento. Las vCPU 3 y 10 (cada una comparte un núcleo de procesador con las vCPU 21 y 28) se encuentran en el estado C1, a la espera de instrucciones.
En el siguiente ejemplo, los 18 núcleos están funcionando activamente, de modo que no hay margen para la frecuencia máxima Turbo Boost, pero todos funcionan a la velocidad “todos los núcleos Turbo Boost” de 3.2 GHz.
[ec2-user ~]$sudo turbostat stress -c 36 -t 10stress: info: [30685] dispatching hogs: 36 cpu, 0 io, 0 vm, 0 hdd stress: info: [30685] successful run completed in 10s pk cor CPU %c0 GHz TSC SMI %c1 %c3 %c6 %c7 %pc2 %pc3 %pc6 %pc7 Pkg_W RAM_W PKG_% RAM_% 99.27 3.20 2.90 0 0.26 0.00 0.47 0.00 0.00 0.00 0.00 0.00 228.59 31.33 199.26 0.00 0 0 0 99.08 3.20 2.90 0 0.27 0.01 0.64 0.00 0.00 0.00 0.00 0.00 114.69 18.55 99.32 0.00 0 0 18 98.74 3.20 2.90 0 0.62 0 1 1 99.14 3.20 2.90 0 0.09 0.00 0.76 0.00 0 1 19 98.75 3.20 2.90 0 0.49 0 2 2 99.07 3.20 2.90 0 0.10 0.02 0.81 0.00 0 2 20 98.73 3.20 2.90 0 0.44 0 3 3 99.02 3.20 2.90 0 0.24 0.00 0.74 0.00 0 3 21 99.13 3.20 2.90 0 0.13 0 4 4 99.26 3.20 2.90 0 0.09 0.00 0.65 0.00 0 4 22 98.68 3.20 2.90 0 0.67 0 5 5 99.19 3.20 2.90 0 0.08 0.00 0.73 0.00 0 5 23 98.58 3.20 2.90 0 0.69 0 6 6 99.01 3.20 2.90 0 0.11 0.00 0.89 0.00 0 6 24 98.72 3.20 2.90 0 0.39 ...
Alto rendimiento y baja latencia mediante una limitación más profunda C-states
C-states controlan los niveles de sueño en los que puede entrar un núcleo cuando está inactivo. Es posible que desee controlar el sistema C-states para ajustar la latencia en comparación con el rendimiento. Hacer que los núcleos pasen al estado de suspensión lleva tiempo y aunque un núcleo en suspensión ofrece más margen para que otro núcleo arranque a una frecuencia superior, el núcleo en suspensión tarda un tiempo en activarse y en funcionar. Por ejemplo, si un núcleo al que se asigna que gestione un paquete de red interrumpe su suspensión, puede haber un retraso en el servicio que produzca una interrupción. Puedes configurar el sistema para que no utilice más núcleos C-states, lo que reduce la latencia de reacción del procesador y, a su vez, también reduce el margen disponible para otros núcleos para Turbo Boost.
Un caso habitual en el que se deshabilitan los estados de suspensión más profundos es una aplicación de base de datos Redis que almacena la base de datos en la memoria del sistema para ofrecer la máxima rapidez al responder a una consulta.
Para limitar los estados de sueño más profundos en el AL2
-
Abra el archivo
/etc/default/grubcon el editor que prefiera.[ec2-user ~]$sudo vim /etc/default/grub -
Edite la
GRUB_CMDLINE_LINUX_DEFAULTlínea y añada lasprocessor.max_cstate=1opcionesintel_idle.max_cstate=1y para establecerlaC1como la más profunda C-state para los núcleos inactivos.GRUB_CMDLINE_LINUX_DEFAULT="console=tty0 console=ttyS0,115200n8 net.ifnames=0 biosdevname=0 nvme_core.io_timeout=4294967295intel_idle.max_cstate=1 processor.max_cstate=1" GRUB_TIMEOUT=0La
intel_idle.max_cstate=1opción configura el C-state límite para las Intel-based instancias y laprocessor.max_cstate=1opción configura el C-state límite para AMD-based las instancias. Es seguro agregar ambas opciones a la configuración. Eso permite establecer el comportamiento deseado en Intel y AMD con una sola configuración. -
Guarde el archivo y salga del editor.
-
Ejecute el siguiente comando para volver a compilar la configuración de arranque.
[ec2-user ~]$sudo grub2-mkconfig -o /boot/grub2/grub.cfg -
Vuelva a arrancar la instancia para habilitar la nueva opción de kernel.
[ec2-user ~]$sudo reboot
Para limitar estados de suspensión más profundos en la Amazon Linux AMI
-
Abra el archivo
/boot/grub/grub.confcon el editor que prefiera.[ec2-user ~]$sudo vim /boot/grub/grub.conf -
Edite la
kernellínea de la primera entrada y añada lasprocessor.max_cstate=1opcionesintel_idle.max_cstate=1y para configurarlasC1como las más profundas C-state para los núcleos inactivos.# created by imagebuilder default=0 timeout=1 hiddenmenu title Amazon Linux 2014.09 (3.14.26-24.46.amzn1.x86_64) root (hd0,0) kernel /boot/vmlinuz-3.14.26-24.46.amzn1.x86_64 root=LABEL=/ console=ttyS0intel_idle.max_cstate=1 processor.max_cstate=1initrd /boot/initramfs-3.14.26-24.46.amzn1.x86_64.imgLa
intel_idle.max_cstate=1opción configura el C-state límite de las Intel-based instancias y laprocessor.max_cstate=1opción configura el C-state límite de las instancias. AMD-based Es seguro agregar ambas opciones a la configuración. Eso permite establecer el comportamiento deseado en Intel y AMD con una sola configuración. -
Guarde el archivo y salga del editor.
-
Vuelva a arrancar la instancia para habilitar la nueva opción de kernel.
[ec2-user ~]$sudo reboot
El siguiente ejemplo muestra una instancia c4.8xlarge con dos núcleos funcionando activamente en la frecuencia de núcleo “todos los núcleos Turbo Boost”.
[ec2-user ~]$sudo turbostat stress -c 2 -t 10stress: info: [5322] dispatching hogs: 2 cpu, 0 io, 0 vm, 0 hdd stress: info: [5322] successful run completed in 10s pk cor CPU %c0 GHz TSC SMI %c1 %c3 %c6 %c7 %pc2 %pc3 %pc6 %pc7 Pkg_W RAM_W PKG_% RAM_% 5.56 3.20 2.90 0 94.44 0.00 0.00 0.00 0.00 0.00 0.00 0.00 131.90 31.11 199.47 0.00 0 0 0 0.03 2.08 2.90 0 99.97 0.00 0.00 0.00 0.00 0.00 0.00 0.00 67.23 17.11 99.76 0.00 0 0 18 0.01 1.93 2.90 0 99.99 0 1 1 0.02 1.96 2.90 0 99.98 0.00 0.00 0.00 0 1 19 99.703.202.90 0 0.30 ... 1 1 10 0.02 1.97 2.90 0 99.98 0.00 0.00 0.00 1 1 28 99.673.202.90 0 0.33 1 2 11 0.04 2.63 2.90 0 99.96 0.00 0.00 0.00 1 2 29 0.02 2.11 2.90 0 99.98 ...
En este ejemplo, los núcleos de las vCPU 19 y 28 funcionan a 3,2 GHz y los demás núcleos están en espera C1 C-state de instrucciones. Si bien los núcleos en funcionamiento no alcanzan su frecuencia máxima de Turbo Boost, los núcleos inactivos responderán mucho más rápido a las nuevas solicitudes de lo que lo harían en los núcleos más profundos. C6 C-state
Rendimiento básico con el mínimo de variabilidad
Puede reducir la variabilidad de la frecuencia del procesador con P-states. P-states controle el rendimiento deseado (en frecuencia de CPU) desde un núcleo. La mayoría de cargas de trabajo presentan un mejor rendimiento en P0, que solicita Turbo Boost. Pero puede ajustar el sistema para obtener un rendimiento uniforme en lugar de un rendimiento por ráfagas, lo que puede ocurrir cuando se habilitan frecuencias Turbo Boost.
Las cargas de trabajo Intel Advanced Vector Extensions (AVX o AVX2) pueden funcionar bien a frecuencias menores y las instrucciones AVX pueden utilizar más potencia. Al ejecutar el procesador a una frecuencia más baja deshabilitando Turbo Boost, se puede reducir la cantidad de potencia usada y mantener una velocidad más uniforme. Para obtener más información acerca de la optimización de la configuración de instancias y la carga de trabajo de AVX, consulte el sitio web de Intel
Control de los controladores inactivos de la CPU P-state. Las generaciones de CPU más recientes requieren controladores inactivos de CPU actualizados que se corresponden con el nivel de kernel de la siguiente manera:
-
Versiones 6.1 y superiores del kernel de Linux: compatible con Intel Granite Rapids (por ejemplo, R8i)
-
Versiones 5.10 y superiores del kernel de Linux: compatible con AMD Milan (por ejemplo, M6a)
-
Versiones 5.6 y superiores del kernel de Linux: compatible con Intel Icelake (por ejemplo, M6i)
Para detectar si el kernel de un sistema en ejecución reconoce la CPU, ejecute el siguiente comando.
if [ -d /sys/devices/system/cpu/cpu0/cpuidle ]; then echo "C-state control enabled"; else echo "Kernel cpuidle driver does not recognize this CPU generation"; fi
Si el resultado de este comando indica falta de compatibilidad, se recomienda actualizar el kernel.
En esta sección se describe cómo limitar los estados de suspensión más profundos y cómo deshabilitar el Turbo Boost (solicitándolo P1 P-state) para proporcionar una latencia baja y la menor variabilidad de velocidad del procesador para estos tipos de cargas de trabajo.
Para limitar los estados de sueño más profundos y desactivar Turbo Boost en el AL2
-
Abra el archivo
/etc/default/grubcon el editor que prefiera.[ec2-user ~]$sudo vim /etc/default/grub -
Edita la
GRUB_CMDLINE_LINUX_DEFAULTlínea y añade lasprocessor.max_cstate=1opcionesintel_idle.max_cstate=1y para configurarlasC1como las más profundas C-state para los núcleos inactivos.GRUB_CMDLINE_LINUX_DEFAULT="console=tty0 console=ttyS0,115200n8 net.ifnames=0 biosdevname=0 nvme_core.io_timeout=4294967295intel_idle.max_cstate=1 processor.max_cstate=1" GRUB_TIMEOUT=0La
intel_idle.max_cstate=1opción configura el C-state límite para las Intel-based instancias y laprocessor.max_cstate=1opción configura el C-state límite para AMD-based las instancias. Es seguro agregar ambas opciones a la configuración. Eso permite establecer el comportamiento deseado en Intel y AMD con una sola configuración. -
Guarde el archivo y salga del editor.
-
Ejecute el siguiente comando para volver a compilar la configuración de arranque.
[ec2-user ~]$grub2-mkconfig -o /boot/grub2/grub.cfg -
Vuelva a arrancar la instancia para habilitar la nueva opción de kernel.
[ec2-user ~]$sudo reboot -
Cuando necesite la baja variabilidad de velocidad del procesador que
P1P-state ofrece, ejecute el siguiente comando para deshabilitar Turbo Boost.[ec2-user ~]$sudo sh -c "echo 1 > /sys/devices/system/cpu/intel_pstate/no_turbo" -
Cuando finalice la carga de trabajo, puede volver a habilitar Turbo Boost con el siguiente comando.
[ec2-user ~]$sudo sh -c "echo 0 > /sys/devices/system/cpu/intel_pstate/no_turbo"
Para limitar los estados de suspensión más profundos y deshabilitar Turbo Boost en la Amazon Linux AMI
-
Abra el archivo
/boot/grub/grub.confcon el editor que prefiera.[ec2-user ~]$sudo vim /boot/grub/grub.conf -
Edite la
kernellínea de la primera entrada y añada lasprocessor.max_cstate=1opcionesintel_idle.max_cstate=1y para configurarlasC1como las más profundas C-state para los núcleos inactivos.# created by imagebuilder default=0 timeout=1 hiddenmenu title Amazon Linux 2014.09 (3.14.26-24.46.amzn1.x86_64) root (hd0,0) kernel /boot/vmlinuz-3.14.26-24.46.amzn1.x86_64 root=LABEL=/ console=ttyS0intel_idle.max_cstate=1 processor.max_cstate=1initrd /boot/initramfs-3.14.26-24.46.amzn1.x86_64.imgLa
intel_idle.max_cstate=1opción configura el C-state límite de las Intel-based instancias y laprocessor.max_cstate=1opción configura el C-state límite de las instancias. AMD-based Es seguro agregar ambas opciones a la configuración. Eso permite establecer el comportamiento deseado en Intel y AMD con una sola configuración. -
Guarde el archivo y salga del editor.
-
Vuelva a arrancar la instancia para habilitar la nueva opción de kernel.
[ec2-user ~]$sudo reboot -
Cuando necesite la baja variabilidad de velocidad del procesador que
P1P-state ofrece, ejecute el siguiente comando para deshabilitar Turbo Boost.[ec2-user ~]$sudo sh -c "echo 1 > /sys/devices/system/cpu/intel_pstate/no_turbo" -
Cuando finalice la carga de trabajo, puede volver a habilitar Turbo Boost con el siguiente comando.
[ec2-user ~]$sudo sh -c "echo 0 > /sys/devices/system/cpu/intel_pstate/no_turbo"
El siguiente ejemplo muestra una instancia c4.8xlarge con dos vCPUs funcionando activamente en la frecuencia de núcleo básica, sin Turbo Boost.
[ec2-user ~]$sudo turbostat stress -c 2 -t 10stress: info: [5389] dispatching hogs: 2 cpu, 0 io, 0 vm, 0 hdd stress: info: [5389] successful run completed in 10s pk cor CPU %c0 GHz TSC SMI %c1 %c3 %c6 %c7 %pc2 %pc3 %pc6 %pc7 Pkg_W RAM_W PKG_% RAM_% 5.59 2.90 2.90 0 94.41 0.00 0.00 0.00 0.00 0.00 0.00 0.00 128.48 33.54 200.00 0.00 0 0 0 0.04 2.90 2.90 0 99.96 0.00 0.00 0.00 0.00 0.00 0.00 0.00 65.33 19.02 100.00 0.00 0 0 18 0.04 2.90 2.90 0 99.96 0 1 1 0.05 2.90 2.90 0 99.95 0.00 0.00 0.00 0 1 19 0.04 2.90 2.90 0 99.96 0 2 2 0.04 2.90 2.90 0 99.96 0.00 0.00 0.00 0 2 20 0.04 2.90 2.90 0 99.96 0 3 3 0.05 2.90 2.90 0 99.95 0.00 0.00 0.00 0 3 21 99.952.902.90 0 0.05 ... 1 1 28 99.922.902.90 0 0.08 1 2 11 0.06 2.90 2.90 0 99.94 0.00 0.00 0.00 1 2 29 0.05 2.90 2.90 0 99.95
Los núcleos de las vCPU 21 y 28 funcionan activamente a la velocidad básica del procesador de 2,9 GHz, y todos los núcleos inactivos también funcionan a la velocidad básica según las instrucciones listas para aceptar. C1 C-state