Sobes.tech
Middle

Čo sa stane s kontajnerom, ak bude prekročen limit CPU?

sobes.tech AI

Odpoveď od AI

Plánovač kontajnerov (napríklad Docker, Kubernetes) obmedzí jeho CPU zdroje. To sa prejavuje nasledovne:

  • Kontajner nebude môcť použiť viac prideleného CPU času, aj keď sú dostupné jadrá.
  • Procesy vo vnútri kontajnera sa spomalia, pretože im bude pridelených menej CPU cyklov.
  • Čas vykonávania úloh vo vnútri kontajnera sa predĺži.
  • V logoch kontajnera alebo plánovača sa môžu objaviť správy o throttlingu CPU.
  • Ak zaťaženie CPU neustále prekračuje limit, výkon aplikácie vo vnútri kontajnera sa výrazne zníži, čo môže viesť k timeoutom, chybám a dokonca k zlyhaniu aplikácie.

Príklad konfigurácie limitu CPU v 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"   # Limit 0.5 CPU

Príklad metriky ukazujúcej throttling CPU v Kubernetes (s použitím cAdvisor/Prometheus):

# Metrika, ktorá ukazuje počet nanosekúnd, počas ktorých bol proces throttled
container_cpu_cfs_throttled_periods_total

V prípade Docker-u sa limity nastavujú pri spustení:

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