Skip to main content

cgroups v2: Kwoty zasobów i watchdogi OOM

DLA AGENTÓW AIChatGPTClaude

Mechanizmy jądra Linux (Control Groups v2) służące do ustanawiania sztywnych limitów sprzętowych dla pamięci RAM, procesora CPU, dysku oraz liczby procesów (PIDs), w celu ochrony hosta przed zawieszającymi się cyklami agentów.

1. Przegląd koncepcji i problem systemowy

Autonomiczne agenci AI są z natury nieprzewidywalni:

  • Agent pisze funkcję rekurencyjną do traversacji grafu plików, zapomina o warunku wyjścia i inicjuje nieskończone przydzielanie pamięci.
  • W ciągu 30 sekund zużycie RAM skacze z 200 MB do 32 GB.
  • Na hoście aktywuje się mechanizm awaryjny Linux Out-Of-Memory (OOM Killer), który według nieprzewidywalnego algorytmu heurystycznego zabija nie tylko zawieszonego agenta, ale także główną bazę danych PostgreSQL oraz serwer webowy.

Control Groups v2 (cgroups v2) to inżynieryjna klatka jądra Linux. Pozwala ona przypisać procesowi agenta ścisłe ramy: nawet jeśli agent będzie próbował przydzielić terabajt pamięci, jądro wymusi ograniczenie do wyznaczonego limitu i bezpiecznie zakończy wyłącznie ten konkretny, izolowany proces.

2. Taksonomia architektoniczna i model mentalny

┌─────────────────────────────────────────────────────────────┐
│                 CGROUPS V2 UNIFIED HIERARCHY                │
├─────────────────────────────────────────────────────────────┤
│ ROOT CONTROL GROUP (/sys/fs/cgroup)                         │
│ ├── system.slice (Krytyczne usługi hosta: SSH, Systemd, UFW) │
│ │   ➔ Gwarantowana pamięć i wysoki priorytet CPU           │
│ └── agent-sandbox.slice (Izolowane środowisko agenta)       │
│     ├── memory.max = 1536M (Twardy limit pamięci)          │
│     ├── memory.high = 1200M (Miękki limit: throttling)      │
│     ├── cpu.max = 100000 100000 (Maks. 1 pełny rdzeń)       │
│     ├── pids.max = 150 (Ochrona przed Fork Bomb)            │
│     └── io.weight = 100 (Niski priorytet zapisu na SSD)     │
└─────────────────────────────────────────────────────────────┘

3. Praktyczne scenariusze inżynierskie w środowisku produkcyjnym

01. Ochrona hosta za pomocą systemd-run

Uruchomienie ryzykownego skryptu agentowego bezpośrednio w wydzielonej grupie limitów bez użycia kontenera:

systemd-run --scope -p MemoryMax=1G -p CPUQuota=50% -p TasksMax=50 python agent_worker.py

Jeśli skrypt przekroczy 1 GB RAM, jądro natychmiast ponownie uruchomi jedynie usługę agent_worker.py, nie ingerując w żaden inny proces na serwerze.

02. Wykorzystanie PSI do adaptacyjnego zarządzania obciążeniem

Demon monitorujący odczytuje /proc/pressure/memory. Jeśli wskaźnik ciśnienia przekracza 20%, system automatycznie wstrzymuje przyjmowanie nowych zadań dla agentów, dopóki bieżące obliczenia nie zostaną zakończone.

4. Pułapki, typowe błędy i bezpieczeństwo

  • Pętla OOM (Nieskończony cykl restartów): Jeśli limit pamięci zostanie ustawiony zbyt nisko (np. 256 MB dla aplikacji Node.js), agent będzie upadał i restartował się co 10 sekund, zapychając kolejki zadań.
  • Wyłączony Swap: Przy całkowitym braku pliku swap na serwerze gwałtowny skok zużycia pamięci powoduje natychmiastowe wysłanie sygnału SIGKILL. Zaleca się posiadanie niewielkiego obszaru zram lub pliku swapfile na szybkim dysku NVMe w celu amortyzacji szczytowych skoków obciążenia.

5. Strategiczny wniosek dla inżyniera roku 2026

cgroups v2 to fundament stabilności każdej infrastruktury współpracującej z autonomicznym kodem. Ustawienie sztywnych kwot sprzętowych gwarantuje, że żadna pomyłka czy halucynacja AI nie będzie w stanie naruszyć dostępności serwera hosta.

/ Najczęściej zadawane pytaniaSchema.org FAQPage

FAQ: cgroups v2: Kwoty zasobów i watchdogi OOM

cgroups v1 posiadał rozdzielone, niespójne hierarchie dla pamięci, procesora i urządzeń blokowych, co prowadziło do błędów oraz uniemożliwiało precyzyjne ograniczanie przepustowości wejścia/wyjścia (I/O). cgroups v2 wykorzystuje jedną, zunifikowaną hierarchię procesów (Unified Hierarchy) i obsługuje informacje o ciśnieniu pamięci (Pressure Stall Information - PSI).
/ Linki wewnętrzne
Wszystkie hasła