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à.
CPUConsiderazioni sulla memoria e AWS Batch su Amazon EKS
In AWS Batch AmazonEKS, puoi specificare le risorse che vengono rese disponibili per un contenitore. Ad esempio, puoi specificare limits
i valori requests
or per v CPU e le risorse di memoria.
Di seguito sono riportati i vincoli per specificare le risorse v: CPU
-
È necessario specificare almeno un v CPU
requests
o unlimits
valore. -
Un'CPUunità v è equivalente a un core fisico o virtuale.
-
Il CPU valore v deve essere immesso in numeri interi o con incrementi di 0,25.
-
Il CPU valore v più piccolo valido è 0,25.
-
Se vengono specificati entrambi, il
requests
valore deve essere inferiore o uguale allimits
valore. In questo modo, è possibile configurare CPU configurazioni soft e hard v. -
CPUi valori v non possono essere specificati in forma milliCPU. Ad esempio,
100m
non è un valore valido. -
AWS Batch utilizza il
requests
valore per ridimensionare le decisioni. Se nonrequests
viene specificato un valore, illimits
valore viene copiato nelrequests
valore.
Di seguito sono riportati i vincoli per specificare le risorse di memoria:
-
È necessario specificare almeno una memoria
requests
o unlimits
valore. -
I valori di memoria devono essere inclusi mebibytes (MiBs).
-
Se vengono specificati entrambi, il
requests
valore deve essere uguale allimits
valore. -
AWS Batch utilizza il
requests
valore per ridimensionare le decisioni. Se non viene specificato unrequests
valore, illimits
valore viene copiato nelrequests
valore.
Di seguito sono riportati i vincoli per specificare le risorse: GPU
-
Se vengono specificati entrambi, il
requests
valore deve essere uguale al valore.limits
-
AWS Batch utilizza il
requests
valore per ridimensionare le decisioni. Se nonrequests
viene specificato un valore, illimits
valore viene copiato nelrequests
valore.
Esempio: definizioni delle mansioni
La seguente definizione di EKS processo AWS Batch su Amazon configura le CPU condivisioni soft v. Ciò consente ad AWS Batch Amazon di EKS utilizzare tutta la CPU capacità v per il tipo di istanza. Tuttavia, se ci sono altri job in esecuzione, al job viene assegnato un massimo di 2
vCPUs. La memoria è limitata a 2 GB.
{ "jobDefinitionName": "MyJobOnEks_Sleep", "type": "container", "eksProperties": { "podProperties": { "containers": [ { "image": "public.ecr.aws/amazonlinux/amazonlinux:2", "command": ["sleep", "60"], "resources": { "requests": { "cpu": "2", "memory": "2048Mi" } } } ] } } }
La seguente definizione di EKS lavoro AWS Batch su Amazon ha un request
valore 1
e assegna un massimo di 4
vCPUs al lavoro.
{ "jobDefinitionName": "MyJobOnEks_Sleep", "type": "container", "eksProperties": { "podProperties": { "containers": [ { "image": "public.ecr.aws/amazonlinux/amazonlinux:2", "command": ["sleep", "60"], "resources": { "requests": { "cpu": "1" }, "limits": { "cpu": "4", "memory": "2048Mi" } } } ] } } }
La seguente definizione del EKS processo AWS Batch su Amazon imposta un CPU limits
valore v 1
e un limits
valore di memoria di 1 GB.
{ "jobDefinitionName": "MyJobOnEks_Sleep", "type": "container", "eksProperties": { "podProperties": { "containers": [ { "image": "public.ecr.aws/amazonlinux/amazonlinux:2", "command": ["sleep", "60"], "resources": { "limits": { "cpu": "1", "memory": "1024Mi" } } } ] } } }
Quando AWS Batch traduce un EKS lavoro AWS Batch su Amazon in un EKS pod Amazon, AWS Batch copia il limits
valore nel requests
valore. Questo è se non viene specificato un requests
valore. Quando inviate la definizione di lavoro di esempio precedente, il contenitore spec
è il seguente.
apiVersion: v1 kind: Pod ... spec: ... containers: - command: - sleep - 60 image: public.ecr.aws/amazonlinux/amazonlinux:2 resources: limits: cpu: 1 memory: 1024Mi requests: cpu: 1 memory: 1024Mi ...
Prenotazioni di nodi CPU e memoria
AWS Batch si basa sulla logica predefinita del bootstrap.sh
file per v CPU e le prenotazioni di memoria. Per ulteriori informazioni sul bootstrap.sh
file, vedere bootstrap.sh
Nota
Se nessuna istanza è in esecuzione, le prenotazioni di v CPU e memoria possono inizialmente influire sulla logica di AWS Batch scalabilità e sul processo decisionale. Dopo l'esecuzione delle istanze, AWS Batch regola le allocazioni iniziali.
Esempio: prenotazione dei nodi CPU
Il valore della CPU prenotazione viene calcolato in millicore utilizzando il numero totale di vCPUs quelli disponibili per l'istanza.
numero v CPU | Percentuale riservata |
---|---|
1 | 6% |
2 | 1% |
3-4 | 0,5% |
4 e versioni successive | 0,25% |
Utilizzando i valori precedenti, è vero quanto segue:
-
Il valore di CPU prenotazione per un'
c5.large
istanza con 2 vCPUs è 70 m. Viene calcolato nel modo seguente: (1*60) + (1*10) = 70 m. -
Il valore di CPU prenotazione per un
c5.24xlarge
esempio con 96 vCPUs è 310 m. Viene calcolato nel modo seguente: (1*60) + (1*10) + (2*5) + (92*2,5) = 310 m.
In questo esempio, sono disponibili 1930 unità millicore v (calcolate 2000-70) per eseguire lavori su un'istanza. CPU c5.large
Supponiamo che il processo richieda 2
(2*1000 m) CPU unità v, il processo non si adatta a una singola istanza. c5.large
Tuttavia, un lavoro che richiede unità 1.75
v CPU è adatto.
Esempio: prenotazione della memoria del nodo
Il valore di prenotazione della memoria viene calcolato in mebibyte utilizzando quanto segue:
-
La capacità dell'istanza in mebibyte. Ad esempio, un'istanza da 8 GB è pari a 7.748 MiB.
-
Il
kubeReserved
valore. IlkubeReserved
valore è la quantità di memoria da riservare ai demoni di sistema. IlkubeReserved
valore viene calcolato nel modo seguente: ((11 * numero massimo di pod supportato dal tipo di istanza) + 255). Per informazioni sul numero massimo di pod supportato da un tipo di istanza, consulta .txt eni-max-pods -
Il valore.
HardEvictionLimit
Quando la memoria disponibile scende al di sotto delHardEvictionLimit
valore, l'istanza tenta di eliminare i pod.
La formula per calcolare la memoria allocabile è la seguente: (instance_capacity_in_MiB
) - (1 * (maximum_number_of_pods
) - 25 - (
)).HardEvictionLimit
value.
Un'c5.large
istanza supporta fino a 29 pod. Per un'c5.large
istanza da 8 GB con un HardEvictionLimit
valore di 100 MiB, la memoria allocabile è 7074 MiB. Viene calcolato nel modo seguente: (7748 - (11 * 29) -255 -100) = 7074 MiB. In questo esempio, un 8.192 MiB job non si adatta a questa istanza anche se è un 8 gibibyte
(GiB) istanza.
DaemonSets
Quando si utilizza DaemonSets, considera quanto segue:
-
Se nessuna EKS istanza AWS Batch su Amazon è in esecuzione, DaemonSets può inizialmente influire sulla logica AWS Batch di scalabilità e sul processo decisionale. AWS Batch inizialmente alloca 0,5 CPU unità v e 500 MiB per quanto previsto DaemonSets. Dopo l'esecuzione delle istanze, AWS Batch regola le allocazioni iniziali.
-
Se un DaemonSet definisce v CPU o limiti di memoria, AWS Batch su Amazon i EKS job hanno meno risorse. Ti consigliamo di mantenere il numero di DaemonSets che vengono assegnati ai AWS Batch lavori il più basso possibile.