Sobes.tech
Middle

Ինչ կլինի կոնտեյների հետ, եթե CPU սահմանը գերազանցվի?

sobes.tech AI

Պատասխան AI-ից

Կոնտեյներային պլանավորիչը (օրինակ՝ Docker, Kubernetes) սահմանափակելու է նրա CPU ռեսուրսները։ Դա արտահայտվում է հետևյալ կերպ՝

  • Կոնտեյները չի կարող օգտագործել ավելի տրամադրված CPU ժամանակը, նույնիսկ եթե հասանելի են բլոկները։
  • Կոնտեյների ներսում ընթացող պրոցեսները դանդաղում են, քանի որ նրանց կկատարվի քիչ CPU ցիկլեր։
  • Կոնտեյների ներսում առաջադրանքների կատարման ժամանակը կավելանա։
  • Կոնտեյների կամ պլանավորողի լոգերում կարող են հայտնվել CPU throttling (CPU սահմանափակում) մասին հաղորդագրություններ։
  • Եթե CPU բեռը մշտապես գերազանցում է սահմանաչափը, ապա կոնտեյների ներսում ծրագրի կատարողականությունը զգալիորեն կիջնի, ինչը կարող է հանգեցնել ժամանակային սահմանափակումների, սխալների և նույնիսկ ծրագրի ձախողման։

Kubernetes-ում CPU սահմանաչափի կոնֆիգուրացիայի օրինակ՝

# 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 սահմանաչափ

Մետրիկայի օրինակ՝ որը ցույց է տալիս CPU throttling-ը Kubernetes-ում (օգտագործելով cAdvisor/Prometheus)

# Մետրիկա, որը ցույց է տալիս այն ժամանակը, երբ պրոցեսը եղել է throttled
container_cpu_cfs_throttled_periods_total

Docker-ում սահմանափակումները սահմանվում են գործարկման ժամանակ՝

# 0.5 CPU սահմանաչափ
docker run -it --cpus=".5" my-image