Sobes.tech
Middle

Mis juhtub konteineriga, kui CPU piir ületatakse?

sobes.tech AI

Vastus AI-lt

Konteinerite planeerija (näiteks Docker, Kubernetes) piirab tema CPU ressursid. See avaldub järgmiselt:

  • Konteiner ei saa kasutada rohkem määratud CPU aega, isegi kui vabad tuumad on olemas.
  • Konteineris olevad protsessid aeglustuvad, kuna neile eraldatakse vähem CPU tsükleid.
  • Konteineris olevate ülesannete täitmise aeg pikeneb.
  • Konteineri või planeerija logides võivad ilmuda sõnumid CPU throttlingu kohta.
  • Kui CPU koormus ületab pidevalt limiidi, langeb konteineri sisese rakenduse jõudlus märkimisväärselt, mis võib põhjustada ajastutõrkeid, vigu ja isegi rakenduse krahhe.

Kuberneteses CPU limiidi konfiguratsiooni näide:

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

Näide metrikast, mis näitab CPU throttlingut Kuberneteses (cAdvisor/Prometheus kasutades):

# Metrika, mis näitab, kui palju nanosekundit protsess oli throttled
container_cpu_cfs_throttled_periods_total

Dockeris määratakse limiidid käivitamisel:

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