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 instância AL2 do Amazon EC2
C-states controla os níveis de sono em que um núcleo pode entrar quando está ocioso. 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) e vão até C6 (o estado ocioso mais profundo em que um núcleo é desligado).
P-states controle o desempenho desejado (na frequência da CPU) a partir de um núcleo. P-states são numerados a partir de P0 (a configuração de desempenho mais alta em que o núcleo pode usar a tecnologia Intel Turbo Boost para aumentar a frequência, se possível) e vão de P1 (a P-state que solicita a frequência máxima de linha de base) a P15 (a frequência mais baixa possível).
Talvez você queira alterar as P-state configurações C-state ou para aumentar a consistência do desempenho do processador, reduzir a latência ou ajustar sua instância para uma carga de trabalho específica. O padrão C-state e P-state as configurações fornecem desempenho máximo, o que é ideal para a maioria das cargas de trabalho. No entanto, se seu aplicativo se beneficiaria da redução da latência ao custo de frequências mais altas de um ou dois núcleos, ou do desempenho consistente em frequências mais baixas, em oposição às frequências intermitentes do Turbo Boost, considere experimentar as P-state configurações C-state ou configurações que estão disponíveis para essas instâncias.
Para obter informações sobre os tipos de instância do Amazon EC2 que permitem que o sistema operacional controle o processador P-states, consulte Controle do C-states estado do processador para sua instância do Amazon EC2 no Guia do usuário do Amazon EC2.
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 turbostat utilitário para exibir a frequência e C-state as informações do processador. 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 exibir as C-state informações, inclua a --debug opção no comando (sudo turbostat --debug
stress <options>).
Conteúdo
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 vCPUs 21 e 28 estão sendo executadas na frequência Turbo Boost máxima porque os outros núcleos entraram no estado de desativação C6 para economizar energia e fornecer energia e espaço térmico para os núcleos ativos. As vCPUs 3 e 10 (cada um compartilhando um núcleo de processador com vCPUs 21 e 28) estão no estado C1, aguardando instruções.
No exemplo a seguir, todos os 18 núcleos estão executando trabalho de forma ativa, portanto, não há espaço para o Turbo Boost máximo, mas todos eles estão em execução na velocidade "all core 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 desempenho e baixa latência por meio de limitações mais profundas C-states
C-states controlam os níveis de sono em que um núcleo pode entrar quando está inativo. Talvez você queira controlar C-states para ajustar seu sistema para latência versus desempenho. 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. Você pode configurar o sistema para não usar mais profundamente C-states, o que reduz a latência de reação do processador, mas isso, por sua vez, também reduz o espaço disponível para outros núcleos para o 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 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
GRUB_CMDLINE_LINUX_DEFAULTlinha e adicione asprocessor.max_cstate=1opçõesintel_idle.max_cstate=1e para definirC1como a mais profunda C-state para núcleos ociosos.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
intel_idle.max_cstate=1opção configura o C-state limite para Intel-based instâncias e aprocessor.max_cstate=1opção configura o C-state limite para AMD-based instâncias. É 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
kernellinha da primeira entrada e adicione asprocessor.max_cstate=1opçõesintel_idle.max_cstate=1e para definirC1como a mais profunda C-state para núcleos ociosos.# 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
intel_idle.max_cstate=1opção configura o C-state limite para Intel-based instâncias e aprocessor.max_cstate=1opção configura o C-state limite para AMD-based instâncias. É 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 das vCPUs 19 e 28 estão funcionando a 3,2 GHz, e os outros núcleos estão C1 C-state no, aguardando instruções. Embora os núcleos em funcionamento não estejam atingindo a frequência máxima do Turbo Boost, os núcleos inativos responderão muito mais rapidamente às novas solicitações do que nos mais profundos. C6 C-state
Performance basal com menor variabilidade
Você pode reduzir a variabilidade da frequência do processador com P-states. P-states controle o desempenho desejado (na frequência da CPU) a partir 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 workloads Intel Advanced Vector Extensions (AVX ou AVX2) podem se desempenhar bem em frequências menores, e as instruções de 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
Controle P-state de drivers ociosos da CPU. 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 sono mais profundos e desativar o Turbo Boost (solicitando o P1 P-state) para fornecer baixa latência e a menor variabilidade de velocidade do processador para esses tipos de cargas de trabalho.
Para limitar estados de sono mais profundos e desativar o Turbo Boost no AL2
-
Abra o arquivo
/etc/default/grubcom o editor de preferência.[ec2-user ~]$sudo vim /etc/default/grub -
Edite a
GRUB_CMDLINE_LINUX_DEFAULTlinha e adicione asprocessor.max_cstate=1opçõesintel_idle.max_cstate=1e para definirC1como a mais profunda C-state para núcleos ociosos.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
intel_idle.max_cstate=1opção configura o C-state limite para Intel-based instâncias e aprocessor.max_cstate=1opção configura o C-state limite para AMD-based instâncias. É 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 de velocidade do processador
P1P-state fornecida, execute o comando a seguir para desativar 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
kernellinha da primeira entrada e adicione asprocessor.max_cstate=1opçõesintel_idle.max_cstate=1e para definirC1como a mais profunda C-state para núcleos ociosos.# 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
intel_idle.max_cstate=1opção configura o C-state limite para Intel-based instâncias e aprocessor.max_cstate=1opção configura o C-state limite para AMD-based instâncias. É 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 de velocidade do processador
P1P-state fornecida, execute o comando a seguir para desativar 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 instância c4.8xlarge com duas vCPUs que executam o trabalho de forma ativa na frequência de núcleo de linha de base, 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 das vCPUs 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 do, prontos para aceitar as instruções. C1 C-state