Sobes.tech
Middle

O que acontecerá com o contêiner se o limite de CPU for excedido?

sobes.tech IA

Resposta da IA

O programador de containers (por exemplo, Docker, Kubernetes) irá limitar os seus recursos de CPU. Isto manifesta-se da seguinte forma:

  • O container não poderá usar mais tempo de CPU alocado, mesmo que existam núcleos disponíveis.
  • Os processos dentro do container irão desacelerar, pois receberão menos ciclos de CPU.
  • O tempo de execução das tarefas dentro do container aumentará.
  • Nos logs do container ou do programador podem aparecer mensagens sobre throttling de CPU (limitação de CPU).
  • Se a carga de CPU exceder constantemente o limite, o desempenho da aplicação dentro do container irá diminuir significativamente, podendo levar a timeouts, erros e até falhas na aplicação.

Exemplo de configuração de limite de CPU no Kubernetes:

# resource-limits.yaml
apiVersion: v1
kind: Pod
metadata:
  name: limited-cpu-pod
spec:
  containers:
  - name: my-container
    image: my-image
    resources:
      limits:
        cpu: "500m"   # Limite de 0.5 CPU

Exemplo de métrica que mostra throttling de CPU no Kubernetes (usando cAdvisor/Prometheus):

# Métrica que indica o número de nanosegundos durante os quais o processo foi throttled
container_cpu_cfs_throttled_periods_total

No Docker, os limites são definidos ao iniciar:

# Limite de 0.5 CPU
docker run -it --cpus=".5" my-image