Cosa devo sapere sull'allocazione della CPU in Amazon ECS?
Sto cercando informazioni relative all'allocazione della CPU ai processi in Amazon Elastic Container Service (Amazon ECS).
Breve descrizione
Quando si crea una definizione di processo, è possibile definire limiti per le risorse della CPU. Questi limiti possono essere definiti a livello di processo e container.
Le prestazioni complessive del cluster Amazon ECS vengono influenzate da questi limiti. A seconda dei comportamenti di Amazon ECS e del caso d'uso, è necessario regolare i valori di allocazione della CPU a livello di processo e di container. Utilizzare le seguenti informazioni per determinare l'allocazione della CPU che soddisfa i requisiti del carico di lavoro e delle applicazioni.
Risoluzione
Amazon ECS utilizza un'unità di misura standard per le risorse della CPU chiamate unità CPU. 1024 unità CPU sono l'equivalente di 1 vCPU.
Ad esempio, 2048 unità CPU equivalgono a 2 vCPU.
Nota: quando si definiscono le definizioni dei processi, è possibile utilizzare anche 1 vCPU anziché 1024. Quando la definizione del processo è registrata, ECS traduce il valore in unità.
Allocazione della CPU a livello di processo
I processi di Amazon ECS possono essere eseguiti su istanze AWS Fargate o Amazon Elastic Compute Cloud (Amazon EC2).
Quando imposti il parametro cpu a livello di processo, imposterai anche la quantità massima di risorse della CPU consentite ai container in un processo.
AWS Fargate
AWS Fargate richiede un parametro cpu a livello di processo per allocare le risorse richieste al processo. È possibile selezionare la memoria e la CPU tra le dimensioni di processo predefinite disponibili per AWS Fargate. Per ulteriori informazioni sulle diverse combinazioni, consulta la sezione Memoria e CPU dei processi nella Guida per gli sviluppatori di AWS Fargate.
Amazon EC2
Quando si eseguono processi su Amazon EC2, il parametro cpu è facoltativo.
Se definisci il parametro cpu, considera quanto segue:
- I container avranno un accesso limitato in base alla quantità di cpu definita.
- La quantità definita nel parametro cpu diventa la prenotazione della CPU per il processo da pianificare su un'istanza del container.
Nota: questo vale anche per la definizione a livello di container.
Ad esempio, un parametro cpu definito su Amazon EC2 con la seguente configurazione avrà 1024 unità CPU rimaste nel suo pool:
- Un'istanza EC2 m5.large registrata in un cluster ECS come istanza di container per un totale di 2048 unità CPU.
- Un processo con cpu: 1024 definita a livello di processo è in esecuzione sull'istanza.
- CPUUtilization EC2 dell'istanza attuale è pari al 68%.
L’attuale CPUUtilization non influisce sul numero di unità CPU disponibili nell'istanza di container per la pianificazione dei processi. Anche se l'istanza supera il 50% del suo utilizzo, la metà delle unità del pool sarà comunque disponibile per l'avvio di nuovi processi. Questo perché il parametro agisce solo come riserva e limite della CPU e non si traduce direttamente nell'utilizzo della CPU stessa.
Con questo esempio, ci sono diversi risultati che possono verificarsi quando si tiene conto solo della CPU:
- È possibile pianificare altre due processi con cpu: 512 definita nelle definizioni a livello di processo o a livello di container.
- È possibile pianificare un processo, con due container, con cpu: 1024 definita a livello di processo e cpu: 512 definita a livello di container in ciascun container.
- Se la cpu non è definita, è possibile pianificare tutte i processi supportati da ECS per la modalità di rete selezionata. Le unità CPU disponibili nell'istanza del container ECS per la pianificazione non vengono influenzate.
Allocazione della CPU a livello di container
Le definizioni della cpu a livello di container vengono considerate nei seguenti scenari:
Al momento della pianificazione:
- Quando la definizione della cpu a livello di processo non è impostata, la quantità totale di unità CPU definite nei container diventa la prenotazione della CPU.
- Il numero totale di unità di CPU nella definizione a livello di container della cpu non può essere maggiore delle unità CPU definite nell'allocazione a livello di processo.
Nel tempo di esecuzione e non ci sono conflitti sulla CPU:
- Se è impostata la definizione della cpu a livello di processo, i container hanno accesso solo alle risorse della cpu fino al valore definito dalla cpu a livello di processo.
- Se la definizione della cpu a livello di processo non è impostata, i container nel processo hanno accesso a tutte le risorse della CPU disponibili nell'istanza, indipendentemente dalla definizione della cpu impostata a livello di container.
- Se si utilizzano processi di Windows e la cpu a livello di processo non è supportata, i container sono sempre limitati alla definizione di cpu a livello di container.
La contesa della CPU si verifica quando più processi richiedono il tempo della cpu. Quando si verifica un conflitto della CPU, i container vengono limitati alla quantità di risorse definita sulla cpu nella definizione a livello di container.
Importante: assicurati di verificare se l'applicazione in esecuzione su ECS è compatibile con i container. Alcune applicazioni, come Java 10, sono compatibili con i container e utilizzano solo i limiti definiti nella definizione della cpu a livello di container, indipendentemente dal fatto che vi sia o meno conflitto della CPU.
Le definizioni della cpu a livello di container vengono mappate direttamente ai parametri cpuShares dell'API Crea un docker remoto per il container.
Informazioni correlate
In che modo posso allocare memoria per i processi in Amazon ECS?
Contenuto pertinente
- AWS UFFICIALEAggiornata 2 anni fa
- AWS UFFICIALEAggiornata 2 anni fa
- AWS UFFICIALEAggiornata 2 anni fa
- AWS UFFICIALEAggiornata 3 anni fa