Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Controllo dello stato del processore per l'istanza Amazon EC2 AL2
C-states controlla i livelli di sonno a cui un core può accedere quando è inattivo. C-states sono numerati a partire da C0 (lo stato più superficiale in cui il core è completamente attivo ed esegue istruzioni) e passano a C6 (lo stato di inattività più profondo in cui un core è spento).
P-states controllano le prestazioni desiderate (in termini di frequenza della CPU) da un core. P-states sono numerati a partire da P0 (l'impostazione delle prestazioni più elevate in cui il core può utilizzare la tecnologia Intel Turbo Boost per aumentare la frequenza, se possibile) e vanno da P1 (l'impostazione P-state che richiede la frequenza di base massima) a P15 (la frequenza più bassa possibile).
Potresti voler modificare P-state le impostazioni C-state or per aumentare la coerenza delle prestazioni del processore, ridurre la latenza o ottimizzare l'istanza per un carico di lavoro specifico. L'impostazione predefinita C-state e P-state le impostazioni offrono le massime prestazioni, ottimali per la maggior parte dei carichi di lavoro. Tuttavia, se la tua applicazione desidera trarre vantaggio da una latenza ridotta a scapito di frequenze single o dual-core più elevate o da prestazioni costanti a frequenze più basse rispetto alle frequenze Turbo Boost a raffica, prova a sperimentare le impostazioni C-state o P-state disponibili per queste istanze.
Per informazioni sui tipi di istanze Amazon EC2 che consentono al sistema operativo di controllare il processore C-states P-states, consulta Processor state control for your Amazon EC2 nella Amazon EC2 User Guide.
Le sezioni seguenti descrivono le diverse configurazioni di stato del processore e come monitorare gli effetti della configurazione. Queste procedure sono state scritte e si applicano ad Amazon Linux; tuttavia, potrebbero funzionare anche per altre distribuzioni Linux con una versione del kernel Linux 3.9 o successiva.
Nota
Gli esempi presenti in questa pagina utilizzano quanto segue:
-
L'turbostatutilità per visualizzare la frequenza e le informazioni del processore. C-state L'utilità turbostat è disponibile per impostazione predefinita su Amazon Linux.
-
Il comando stress per simulare un carico di lavoro. Per installare stress, per prima cosa abilitare il repository EPEL eseguendo sudo amazon-linux-extras install epel, poi eseguire sudo yum install -y stress.
Se l'output non visualizza le C-state informazioni, includete l'--debugopzione nel comando (sudo turbostat --debug
stress <options>).
Indice
Prestazioni massime con la massima frequenza Turbo Boost
Questa è la configurazione di controllo degli stati del processore predefinita per AMI Amazon Linux ed è consigliata per la maggior parte dei carichi di lavoro. Questa configurazione offre le prestazioni più elevate con minore variabilità. Permettendo ai core non attivi di entrare in stati di sospensione più profondi fornisce la capacità aggiuntiva termica richiesta per processi single-core o dual-core per raggiungere il massimo potenziale Turbo Boost.
Il seguente esempio mostra un'istanza c4.8xlarge con due core attivamente in funzione che raggiungono la frequenza massima Turbo Boost del processore.
[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
In questo esempio le vCPU 21 e 28 sono in esecuzione alla massima frequenza Turbo Boost, in quanto gli altri core sono entrati nello stato di sospensione C6 per risparmiare energia e fornire la capacità aggiuntiva termica e di energia per i core in funzione. Le vCPU 3 e 10 (ognuna condivide un core del processore con vCPU 21 e 28) sono nello stato C1, in attesa di istruzioni.
Nell'esempio seguente, tutti i 18 core sono attivamente in funzione. Dunque, non vi è capacità aggiuntiva per la frequenza massima Turbo Boost, ma i core sono ancora in esecuzione alla velocità "all core Turbo Boost" di 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 ...
Prestazioni elevate e bassa latenza grazie a limitazioni più profonde C-states
C-states controlla i livelli di sonno a cui un core può accedere quando è inattivo. Potresti voler regolare il sistema C-states in base alla latenza anziché alle prestazioni. Inserire i core nello stato di sospensione richiedete del tempo. Sebbene un core sospeso consenta maggiore capacità aggiuntiva per un altro core per raggiungere una frequenza più elevata, è necessario del tempo affinché il core sospeso torni attivo e in funzione. Ad esempio, se un core assegnato per gestire le interruzioni di un pacchetto di rete è sospeso, potrebbe verificarsi un ritardo nel lavoro su tale interruzione. È possibile configurare il sistema in modo che non utilizzi Deeper C-states, il che riduce la latenza di reazione del processore, ma a sua volta riduce anche il margine di manovra disponibile per gli altri core per Turbo Boost.
Uno scenario comune per la disabilitazione degli stati di sospensione più profondi è un'applicazione di database Redis, la quale archivia il database nella memoria di sistema per il tempo di risposta alle query più rapido possibile.
Per limitare gli stati di sonno più profondi su AL2
-
Aprire il file
/etc/default/grubcon un editor a scelta.[ec2-user ~]$sudo vim /etc/default/grub -
Modifica la
GRUB_CMDLINE_LINUX_DEFAULTriga e aggiungi leprocessor.max_cstate=1opzioniintel_idle.max_cstate=1and da impostareC1come la più profonda C-state per i core inattivi.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=0L'
intel_idle.max_cstate=1opzione configura il C-state limite per le Intel-based istanze e l'processor.max_cstate=1opzione configura il limite per le istanze. C-state AMD-based È consigliabile aggiungere entrambe le opzioni alla configurazione. Ciò consente di impostare il comportamento desiderato sia su Intel che su AMD tramite una singola configurazione. -
Salvare il file e uscire dall'editor.
-
Eseguire il comando riportato di seguito per ricreare la configurazione di avvio.
[ec2-user ~]$sudo grub2-mkconfig -o /boot/grub2/grub.cfg -
Riavviare l'istanza per abilitare la nuova opzione del kernel.
[ec2-user ~]$sudo reboot
Limitazione degli stati di sospensione più profondi in Amazon Linux AMI
-
Aprire il file
/boot/grub/grub.confcon un editor a scelta.[ec2-user ~]$sudo vim /boot/grub/grub.conf -
Modifica la
kernelriga della prima voce e aggiungi leprocessor.max_cstate=1opzioniintel_idle.max_cstate=1and da impostareC1come la più profonda C-state per i core inattivi.# 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.imgL'
intel_idle.max_cstate=1opzione configura il C-state limite per le Intel-based istanze e l'processor.max_cstate=1opzione configura il limite per le istanze. C-state AMD-based È consigliabile aggiungere entrambe le opzioni alla configurazione. Ciò consente di impostare il comportamento desiderato sia su Intel che su AMD tramite una singola configurazione. -
Salvare il file e uscire dall'editor.
-
Riavviare l'istanza per abilitare la nuova opzione del kernel.
[ec2-user ~]$sudo reboot
Il seguente esempio mostra un'istanza c4.8xlarge con due core attivamente in funzione alla frequenza del core "all core 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 ...
In questo esempio, i core per le VCPU 19 e 28 funzionano a 3,2 GHz e gli altri core sono in attesa di istruzioni. C1 C-state Sebbene i core funzionanti non stiano raggiungendo la frequenza Turbo Boost massima, i core inattivi risponderanno alle nuove richieste molto più velocemente rispetto a quelli più profondi. C6 C-state
Prestazioni di base con la variabilità minore
È possibile ridurre la variabilità della frequenza del processore con. P-states P-states controlla le prestazioni desiderate (in termini di frequenza della CPU) da un core. La maggior parte dei carichi di lavoro ottiene prestazioni migliori in P0, richiedendo Turbo Boost. Tuttavia, potresti voler ottimizzare il sistema per prestazioni coerenti anziché prestazioni intermittenti che possono verificarsi quando sono abilitate le frequenze Turbo Boost.
I carichi di lavoro Intel Advanced Vector Extensions (AVX o AVX2) possono ottenere buone prestazioni a frequenze minori e le istruzioni AVX possono utilizzare più potenza. L'esecuzione del processore a una frequenza più bassa, disabilitando Turbo Boost, può ridurre la quantità di potenza e mantenere la velocità più coerente. Per ulteriori informazioni sull'ottimizzazione della configurazione dell'istanza e sul carico di lavoro per AVX, consulta il sito web Intel
controllo P-state dei driver inattivi della CPU. Le nuove generazioni di CPU richiedono driver inattivi della CPU aggiornati che corrispondono al livello del kernel come segue:
-
Versioni del kernel Linux 6.1 e successive: supporta Intel Granite Rapids (ad esempio, R8i)
-
Versioni del kernel Linux 5.10 e successive: supporta AMD Milan (ad esempio, M6a)
-
Versioni del kernel Linux 5.6 e successive: supporta Intel Icelake (ad esempio, M6i)
Per verificare se il kernel del sistema in esecuzione riconosce la CPU, esegui il comando seguente.
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 l'output di questo comando indica una mancanza di supporto, consigliamo di aggiornare il kernel.
Questa sezione descrive come limitare gli stati di sospensione più profondi e disabilitare Turbo Boost (richiedendo P1 P-state) per fornire una bassa latenza e la più bassa variabilità della velocità del processore per questi tipi di carichi di lavoro.
Per limitare gli stati di sonno più profondi e disabilitare Turbo Boost su AL2
-
Aprire il file
/etc/default/grubcon un editor a scelta.[ec2-user ~]$sudo vim /etc/default/grub -
Modifica la
GRUB_CMDLINE_LINUX_DEFAULTriga e aggiungi leprocessor.max_cstate=1opzioniintel_idle.max_cstate=1and da impostareC1come la più profonda C-state per i core inattivi.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=0L'
intel_idle.max_cstate=1opzione configura il C-state limite per le Intel-based istanze e l'processor.max_cstate=1opzione configura il limite per le istanze. C-state AMD-based È consigliabile aggiungere entrambe le opzioni alla configurazione. Ciò consente di impostare il comportamento desiderato sia su Intel che su AMD tramite una singola configurazione. -
Salvare il file e uscire dall'editor.
-
Eseguire il comando riportato di seguito per ricreare la configurazione di avvio.
[ec2-user ~]$grub2-mkconfig -o /boot/grub2/grub.cfg -
Riavviare l'istanza per abilitare la nuova opzione del kernel.
[ec2-user ~]$sudo reboot -
Quando è necessaria la bassa variabilità della velocità del processore
P1P-state fornita, esegui il comando seguente per disabilitare Turbo Boost.[ec2-user ~]$sudo sh -c "echo 1 > /sys/devices/system/cpu/intel_pstate/no_turbo" -
Una volta terminato il carico di lavoro, puoi riabilitare Turbo Boost con il comando seguente.
[ec2-user ~]$sudo sh -c "echo 0 > /sys/devices/system/cpu/intel_pstate/no_turbo"
Limitazione degli stati di sospensione più profondi e disabilitazione di Turbo Boost in Amazon Linux AMI
-
Aprire il file
/boot/grub/grub.confcon un editor a scelta.[ec2-user ~]$sudo vim /boot/grub/grub.conf -
Modifica la
kernelriga della prima voce e aggiungiprocessor.max_cstate=1le opzioniintel_idle.max_cstate=1and da impostareC1come la più profonda C-state per i core inattivi.# 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.imgL'
intel_idle.max_cstate=1opzione configura il C-state limite per le Intel-based istanze e l'processor.max_cstate=1opzione configura il limite per le istanze. C-state AMD-based È consigliabile aggiungere entrambe le opzioni alla configurazione. Ciò consente di impostare il comportamento desiderato sia su Intel che su AMD tramite una singola configurazione. -
Salvare il file e uscire dall'editor.
-
Riavviare l'istanza per abilitare la nuova opzione del kernel.
[ec2-user ~]$sudo reboot -
Quando è necessaria la bassa variabilità della velocità del processore
P1P-state fornita, esegui il comando seguente per disabilitare Turbo Boost.[ec2-user ~]$sudo sh -c "echo 1 > /sys/devices/system/cpu/intel_pstate/no_turbo" -
Una volta terminato il carico di lavoro, puoi riabilitare Turbo Boost con il comando seguente.
[ec2-user ~]$sudo sh -c "echo 0 > /sys/devices/system/cpu/intel_pstate/no_turbo"
Il seguente esempio mostra un'istanza c4.8xlarge con due vCPU attivamente in funzione alla frequenza del core di base, senza 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
I core per le VCPU 21 e 28 funzionano attivamente alla velocità di base del processore di 2,9 GHz e tutti i core inattivi funzionano anche alla velocità di base nelle istruzioni pronte per l'accettazione. C1 C-state