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á.
Considerações sobre memória e vCPU para o Amazon AWS Batch EKS
AWS Batch No Amazon EKS, você pode especificar os recursos que são disponibilizados para um contêiner. Por exemplo, você pode especificar valores requests
ou limits
para recursos de vCPU e memória.
Os seguintes são as restrições para especificar os recursos de vCPU:
-
Pelo menos um valor de
requests
oulimits
de vCPU deve ser especificado. -
Uma unidade de vCPU é equivalente a um núcleo físico ou virtual.
-
O valor da vCPU deve ser inserido em números inteiros ou em acréscimos de 0,25.
-
O menor valor válido de vCPU é 0,25.
-
Se ambos forem especificados, o valor de
requests
deverá ser menor que ou igual ao valor delimits
. Dessa forma, você pode configurar as configurações de vCPU flexíveis e rígidas. -
Os valores de vCPU não podem ser especificados no formato milliCPU. Por exemplo,
100m
não é um valor válido. -
AWS Batch usa o
requests
valor para decisões de escalabilidade. Se um valorrequests
não for especificado, o valorlimits
será copiado para o valorrequests
.
Os seguintes são as restrições para especificar os recursos de memória:
-
Pelo menos um valor de
requests
oulimits
de memória deve ser especificado. -
Os valores da memória devem estar dentro mebibytes (MiBs).
-
Se ambos forem especificados, o valor de
requests
deverá ser igual ao valor delimits
. -
AWS Batch usa o
requests
valor para decisões de escalabilidade. Se um valor derequests
não for especificado, o valor delimits
será copiado para o valor derequests
.
Os seguintes são as restrições para especificar os recursos de GPU:
-
Se ambos forem especificados, o valor de
requests
deverá ser igual ao valor delimits
. -
AWS Batch usa o
requests
valor para decisões de escalabilidade. Se um valorrequests
não for especificado, o valorlimits
será copiado para o valorrequests
.
Exemplos: definições de trabalho
O seguinte AWS Batch sobre a definição de trabalho do Amazon EKS configura compartilhamentos flexíveis de vCPU. Isso permite que o AWS Batch Amazon EKS use toda a capacidade da vCPU para o tipo de instância. No entanto, se houver outros trabalhos em execução, o trabalho receberá um máximo de 2
v. CPUs A memória é limitada 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" } } } ] } } }
O seguinte AWS Batch na definição de trabalho do Amazon EKS tem um request
valor de 1
e aloca um máximo de 4
v CPUs para o trabalho.
{ "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" } } } ] } } }
O seguinte AWS Batch sobre a definição de trabalho do Amazon EKS define um limits
valor de vCPU 1
e um valor de memória limits
de 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" } } } ] } } }
Ao AWS Batch traduzir uma tarefa AWS Batch no Amazon EKS em um pod do Amazon EKS, AWS Batch copia o limits
valor para o requests
valor. Isso ocorre quando um valor de requests
não é especificado. Quando você envia o exemplo de definição de trabalho de precedência, o pod spec
é o seguinte.
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 ...
Reserva de Memória e Reserva de Nó de CPU
AWS Batch depende da lógica padrão do bootstrap.sh
arquivo para reservas de vCPU e memória. Para mais informações sobre o arquivo bootstrap.sh
, consulte bootstrap.sh
nota
Se nenhuma instância estiver em execução, as reservas de vCPU e memória podem afetar inicialmente a lógica de AWS Batch escalabilidade e a tomada de decisões. Depois que as instâncias estiverem em execução, AWS Batch ajusta as alocações iniciais.
Exemplo: reserva de nó de CPU
O valor da reserva de CPU é calculado em milicores usando o número total de v CPUs que estão disponíveis para a instância.
Número da vCPU | Porcentagem reservada |
---|---|
1 | 6% |
2 | 1% |
3-4 | 0,5% |
4 e acima | 0,25% |
Usando os valores que precedem, o seguinte é verdadeiro:
-
O valor da reserva de CPU para uma
c5.large
instância com 2 v CPUs é 70 m. Isso é calculado da seguinte maneira: (1*60) + (1*10) = 70 m. -
O valor da reserva de CPU para uma
c5.24xlarge
instância com 96 v CPUs é 310 m. Isso é calculado da seguinte maneira: (1*60) + (1*10) + (2*5) + (92*2.5) = 310 m.
Neste exemplo, há 1930 (calculadas de 2000-70) unidades de vCPU de milicore disponíveis para executar trabalhos em uma instância c5.large
. Suponha que seu trabalho requeira 2
unidades de vCPU (2*1000 m). O trabalho não caberá em uma instância única c5.large
. No entanto, um trabalho que exige 1.75
unidades de vCPU é adequado.
Exemplo: reserva de memória do nó
O valor da reserva de memória é calculado em mebibytes usando o seguinte:
-
a capacidade da instância em mebibytes. Por exemplo, uma instância de 8 GB é 7.748 MiB.
-
O valor de
kubeReserved
. O valor dekubeReserved
é a quantidade de memória a ser reservada para os daemons do sistema. O valor dekubeReserved
é calculado no campo da seguinte forma: ((11 * número de pods máximo compatível pelo tipo de instância) + 255). Para obter informações sobre o número máximo de pods que é compatível com um tipo de instância, consulte eni-max-pods .txt -
O valor
HardEvictionLimit
. Quando a memória disponível fica abaixo do valorHardEvictionLimit
, a instância tenta remover os pods.
A fórmula para calcular a memória alocável é a seguinte: (instance_capacity_in_MiB
) - (11 * ()maximum_number_of_pods
) - 255 - ()). HardEvictionLimit
value.
Uma instância c5.large
suporta até 29 pods. Para uma c5.large
instância de 8 GB com um HardEvictionLimit
valor de 100 MiB, a memória alocável é 7074 MiB. Isso é calculado da seguinte maneira: (7748 - (11 * 29) -255 -100) = 7074 MiB. Neste exemplo, um 8.192 MiB o trabalho não cabe nesta instância, embora seja um 8 gibibyte
(GiB) instância.
DaemonSets
Quando você usa DaemonSets, considere o seguinte:
-
Se nenhuma instância AWS Batch do Amazon EKS estiver em execução, DaemonSets pode afetar inicialmente a lógica AWS Batch de escalabilidade e a tomada de decisões. AWS Batch aloca inicialmente 0,5 unidades de vCPU e 500 MiB conforme esperado DaemonSets. Depois que as instâncias estiverem em execução, AWS Batch ajusta as alocações iniciais.
-
Em caso de DaemonSet define limites de vCPU ou memória. No AWS Batch Amazon EKS, os trabalhos têm menos recursos. Recomendamos que você mantenha o número de DaemonSets que são atribuídos a AWS Batch trabalhos tão baixos quanto possível.