As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.
Controle de estado do processador para sua EC2 AL2 instância Amazon
C-states controlam os níveis de suspensão que um núcleo pode assumir quando está ocioso. Os C-states são numerados começando com C0 (o estado mais superficial em que o núcleo está totalmente ativo e executando instruções) até C6 (o estado de ociosidade mais profundo em que um núcleo está desativado).
P-states controlam a performance desejada (na frequência da CPU) de um núcleo. Os P-states são numerados começando com P0 (a configuração de performance mais elevada em que o núcleo pode usar a Intel Turbo Boost Technology para aumentar a frequência, se possível) e vão de P1 (o P-state que solicita a frequência máxima de linha de base) até P15 (a frequência mais baixa possível).
Talvez você queira alterar as configurações de C-state ou P-state para aumentar a consistência de performance do processador, reduzir a latência ou ajustar sua instância para uma workload específica. As configurações padrão de C-state e P-state proporcionam o performance máxima, que é o ideal para a maioria das workloads. Contudo, se sua aplicação se beneficiaria de latência reduzida ao custo de frequências superiores de single ou dual core, ou de uma performance consistente em frequências menores em oposição às frequências Turbo Boost expansíveis, considere experimentar as configurações de C-state ou P-state que estão disponíveis para essas instâncias.
Para obter informações sobre os tipos de EC2 instância da Amazon que permitem que o sistema operacional controle os estados C e P do processador, consulte Controle do estado do processador para sua EC2 instância da Amazon no Guia EC2 do usuário da Amazon.
As seções a seguir descrevem as diferentes configurações de estado do processador e como monitorar os efeitos de sua configuração. Esses procedimentos foram escritos e se aplicam ao Amazon Linux; no entanto, eles também podem funcionar para outras distribuições Linux com uma versão 3.9 ou mais recente do kernel Linux.
nota
Os exemplos desta página usam o seguinte:
-
O utilitário turbostat para exibir informações sobre a frequência do processador e do estado C. O utilitário turbostat está disponível no Amazon Linux por padrão.
-
O comando stress para simular um workload. Para instalar o stress, primeiro ative o repositório EPEL executando sudo amazon-linux-extras install epel e, em seguida, execute sudo yum install -y stress.
Se a saída não exibe informações do C-state, inclua a opção --debug no comando (sudo turbostat --debug
stress <options>).
Tópicos
A mais alta performance com a frequência máxima de Turbo Boost
Essa é a configuração de controle de estado do processador padrão para o Amazon Linux AMI, e é a recomendada para a maioria das workloads. Essa configuração fornece a mais alta performance com menor variabilidade. Permitir que os núcleos inativos assumam os estados mais profundos de desativação fornece o espaço térmico para processos de single ou dual core a fim de atingir o potencial máximo de Turbo Boost.
O exemplo a seguir mostra uma instância c4.8xlarge com dois núcleos que executam o trabalho de forma ativa, atingindo a frequência Turbo Boost do processador.
[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
Neste exemplo, as versões CPUs 21 e 28 estão funcionando na frequência máxima do Turbo Boost porque os outros núcleos entraram no estado de C6 hibernação para economizar energia e fornecer energia e espaço térmico para os núcleos de trabalho. Os v CPUs 3 e 10 (cada um compartilhando um núcleo de processador com as v CPUs 21 e 28) estão no C1 estado aguardando instruções.
No exemplo a seguir, todos os 18 núcleos estão trabalhando ativamente, portanto, não há espaço livre para o Turbo Boost máximo, mas todos estão funcionando na velocidade “Turbo Boost de todos os núcleos” 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 ...
Alta performance e baixa latência limitando os C-states mais profundos
Os C-states controlam os níveis de desativação que um núcleo pode assumir quando está inativo. É possível controlar os C-states para ajustar seu sistema em relação à latência versus performance. Desativar núcleos leva tempo e, embora um núcleo desativado forneça mais espaço para um núcleo funcionar em uma frequência mais alta, leva tempo para que esse núcleo desativado seja reativado e execute o trabalho. Por exemplo, se um núcleo que receber a tarefa de lidar com interrupções de pacotes da internet estiver desativado, poderá ocorrer um atraso em lidar com essa interrupção. É possível configurar o sistema para não usar C-states mais profundos, o que reduz a latência de reação do processador, mas que, por sua vez, também reduz o espaço disponível para outros núcleos para Turbo Boost.
Um cenário comum para desabilitar estados de desativação mais profundos é uma aplicação de banco de dados Redis, que armazena o banco de dados na memória do sistema para o tempo de resposta de consulta mais rápido possível.
Para limitar os estados de sono mais profundos em AL2
-
Abra o arquivo
/etc/default/grubcom o editor de preferência.[ec2-user ~]$sudo vim /etc/default/grub -
Edite a linha
GRUB_CMDLINE_LINUX_DEFAULTe adicione as opçõesintel_idle.max_cstate=1eprocessor.max_cstate=1para definirC1como o estado C mais profundo para núcleos inativos.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=0A opção
intel_idle.max_cstate=1configura o limite de estado C para instâncias baseadas em Intel e a opçãoprocessor.max_cstate=1configura o limite de estado C para instâncias baseadas em AMD. É seguro adicionar as duas opções à sua configuração. Isso permite que uma única configuração defina o comportamento desejado para Intel e AMD. -
Salve o arquivo e saia do editor.
-
Execute o comando a seguir para recompilar a configuração de inicialização.
[ec2-user ~]$sudo grub2-mkconfig -o /boot/grub2/grub.cfg -
Reinicialize sua instância para habilitar a nova opção de kernel.
[ec2-user ~]$sudo reboot
Para limitar estados de desativação mais profundos no Amazon Linux AMI
-
Abra o arquivo
/boot/grub/grub.confcom o editor de preferência.[ec2-user ~]$sudo vim /boot/grub/grub.conf -
Edite a linha
kernelda primeira entrada e adicione as opçõesintel_idle.max_cstate=1eprocessor.max_cstate=1para definirC1como o estado C mais profundo para núcleos inativos.# 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.imgA opção
intel_idle.max_cstate=1configura o limite de estado C para instâncias baseadas em Intel e a opçãoprocessor.max_cstate=1configura o limite de estado C para instâncias baseadas em AMD. É seguro adicionar as duas opções à sua configuração. Isso permite que uma única configuração defina o comportamento desejado para Intel e AMD. -
Salve o arquivo e saia do editor.
-
Reinicialize sua instância para habilitar a nova opção de kernel.
[ec2-user ~]$sudo reboot
O exemplo a seguir mostra uma instância c4.8xlarge com dois núcleos que executam o trabalho de forma ativa na frequência "all core Turbo Boost" do núcleo.
[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 ...
Neste exemplo, os núcleos para v CPUs 19 e 28 estão rodando em 3.2 GHz, e os outros núcleos estão no C1 estado C, aguardando instruções. Embora os núcleos de trabalho não estejam atingindo a frequência máxima de Turbo Boost, os núcleos inativos responderão com muito mais rapidez a novas solicitações do que o fariam se estivessem no C-state C6 mais profundo.
Performance basal com menor variabilidade
É possível reduzir a variabilidade da frequência do processador com P-states. Os P-states controlam a performance desejada (na frequência da CPU) de um núcleo. A maioria das workloads funcionam melhor em P0, o que exige Turbo Boost. No entanto, é possível ajustar seu sistema para obter uma performance consistente em vez de uma performance expansível que pode acontecer quando as frequências Turbo Boost são habilitadas.
As cargas de trabalho do Intel Advanced Vector Extensions (AVX ou AVX2) podem funcionar bem em frequências mais baixas, e as instruções AVX podem usar mais energia. Executar o processador em uma frequência menor desabilitando o Turbo Boost pode reduzir a quantidade de energia usada e manter a velocidade mais consistente. Para obter mais informações sobre como otimizar suas configurações de instância e workload para AVX, consulte o site da Intel
Drivers ociosos da CPU controlam o estado P. As gerações mais recentes de CPU requerem drivers ociosos da CPU atualizados que correspondam ao nível do kernel da seguinte forma:
-
Versões 6.1 e superiores do kernel Linux — Suporta Intel Granite Rapids (por exemplo, R8i)
-
Versões 5.10 e superiores do kernel Linux — Compatível com AMD Milan (por exemplo, M6a)
-
Versões 5.6 e superiores do kernel Linux — Suporta Intel Icelake (por exemplo, M6i)
Para detectar se o kernel de um sistema em execução reconhece a CPU, execute o seguinte 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
Se a saída desse comando indicar falta de suporte, recomendamos que você atualize o kernel.
Esta seção descreve como limitar estados de desativação mais profundos e desabilitar o Turbo Boost (solicitando o P-state P1) para fornecer baixa latência e menor variabilidade da velocidade do processador para esses tipos de fluxos de trabalho.
Para limitar os estados de sono mais profundos e desativar o Turbo Boost AL2
-
Abra o arquivo
/etc/default/grubcom o editor de preferência.[ec2-user ~]$sudo vim /etc/default/grub -
Edite a linha
GRUB_CMDLINE_LINUX_DEFAULTe adicione as opçõesintel_idle.max_cstate=1eprocessor.max_cstate=1para definirC1como o estado C mais profundo para núcleos inativos.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=0A opção
intel_idle.max_cstate=1configura o limite de estado C para instâncias baseadas em Intel e a opçãoprocessor.max_cstate=1configura o limite de estado C para instâncias baseadas em AMD. É seguro adicionar as duas opções à sua configuração. Isso permite que uma única configuração defina o comportamento desejado para Intel e AMD. -
Salve o arquivo e saia do editor.
-
Execute o comando a seguir para recompilar a configuração de inicialização.
[ec2-user ~]$grub2-mkconfig -o /boot/grub2/grub.cfg -
Reinicialize sua instância para habilitar a nova opção de kernel.
[ec2-user ~]$sudo reboot -
Quando você precisar da baixa variabilidade da velocidade do processador que o P-state
P1fornece, execute o seguinte comando para desabilitar o Turbo Boost.[ec2-user ~]$sudo sh -c "echo 1 > /sys/devices/system/cpu/intel_pstate/no_turbo" -
Quando sua workload for concluída, será possível reabilitar o Turbo Boost com o seguinte comando.
[ec2-user ~]$sudo sh -c "echo 0 > /sys/devices/system/cpu/intel_pstate/no_turbo"
Para limitar estados de desativação mais profundos e desabilitar o Turbo Boost no Amazon Linux AMI
-
Abra o arquivo
/boot/grub/grub.confcom o editor de preferência.[ec2-user ~]$sudo vim /boot/grub/grub.conf -
Edite a linha
kernelda primeira entrada e adicione as opçõesintel_idle.max_cstate=1eprocessor.max_cstate=1para definirC1como o estado C mais profundo para núcleos inativos.# 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.imgA opção
intel_idle.max_cstate=1configura o limite de estado C para instâncias baseadas em Intel e a opçãoprocessor.max_cstate=1configura o limite de estado C para instâncias baseadas em AMD. É seguro adicionar as duas opções à sua configuração. Isso permite que uma única configuração defina o comportamento desejado para Intel e AMD. -
Salve o arquivo e saia do editor.
-
Reinicialize sua instância para habilitar a nova opção de kernel.
[ec2-user ~]$sudo reboot -
Quando você precisar da baixa variabilidade da velocidade do processador que o P-state
P1fornece, execute o seguinte comando para desabilitar o Turbo Boost.[ec2-user ~]$sudo sh -c "echo 1 > /sys/devices/system/cpu/intel_pstate/no_turbo" -
Quando sua workload for concluída, será possível reabilitar o Turbo Boost com o seguinte comando.
[ec2-user ~]$sudo sh -c "echo 0 > /sys/devices/system/cpu/intel_pstate/no_turbo"
O exemplo a seguir mostra uma c4.8xlarge instância com dois v executando CPUs ativamente o trabalho na frequência central básica, sem 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
Os núcleos para v CPUs 21 e 28 estão trabalhando ativamente na velocidade básica do processador de 2,9 GHz, e todos os núcleos inativos também estão funcionando na velocidade básica no C1 estado C, prontos para aceitar instruções.