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 sueño 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 activo y ejecutando instrucciones) y van hasta C6 (el estado de inactividad más profundo en el que un núcleo está apagado).
P-states controlan el rendimiento deseado (en la frecuencia de la CPU) desde un núcleo. P-states se numeran empezando por P0 (la configuración de mayor rendimiento en la que el núcleo puede utilizar la tecnología Turbo Boost de Intel para aumentar la frecuencia si es posible) y van desde P1 (la P-state que solicita la máxima frecuencia de referencia) hasta P15 (la frecuencia más baja posible).
Es posible que desee cambiar la P-state configuración para aumentar la C-state uniformidad del rendimiento del procesador, reducir la latencia o ajustar la instancia para una carga de trabajo específica. La configuración predeterminada C-state y la P-state configuración proporcionan el máximo rendimiento, que es ó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 a frecuencias más bajas en lugar de a frecuencias más rápidas del Turbo Boost, considere la posibilidad de experimentar con las C-state P-state configuraciones 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 el control del estado del procesador C-states de 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 Amazon Linux; 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 la salida 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 al limitar más profundamente 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 o C-states ajustar el sistema en función de 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, pero también reduce el margen de ampliación 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 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.
-
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 establecerlaC1como la más profunda 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 CPU virtuales 19 y 28 funcionan a 3,2 GHz y los demás núcleos están en espera de instrucciones C1 C-state. Si bien los núcleos en funcionamiento no están alcanzando su frecuencia Turbo Boost máxima, los núcleos inactivos responderán mucho más rápido a las nuevas solicitudes que si estuvieran 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 la 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
Controla 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 reposo más intensos y cómo desactivar Turbo Boost (solicitándolo P1 P-state) para ofrecer una latencia baja y la variabilidad de velocidad del procesador más bajas para este tipo de cargas de trabajo.
Para limitar los estados de sueño más intensos y desactivar Turbo Boost 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 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.
-
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 necesites la baja variabilidad de velocidad del procesador que
P1P-state proporciona, ejecuta 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 definirlaC1como la más profunda 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 necesites la baja variabilidad de velocidad del procesador que
P1P-state proporciona, ejecuta 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 CPU virtuales 21 y 28 funcionan de forma activa 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 de las instrucciones listas para su aceptación. C1 C-state