Skip to main content

Cyber AI România

Duminică, 25 octombrie 2026

DAMOS pentru reclamare proactivă: cum faci kernelul să recupereze memoria în funcție de pattern-ul real de acces

Un proces care are 20 GB RSS nu folosește neapărat activ 20 GB. O parte poate fi accesată constant, iar alta poate rămâne neatinsă minute întregi. Reclamarea tradițională intervine pe măsură ce presiunea de memorie crește; DAMON poate observa pattern-ul real de acces, iar DAMOS — DAMON-based Operation Schemes — poate aplica automat o acțiune doar regiunilor care se încadrează în criteriile definite.

Pentru reclamare, acțiunea relevantă este pageout: kernelul încearcă să recupereze paginile regiunilor selectate. DAMOS suportă și limite de timp/dimensiune, prioritizare, filtre și watermarks tocmai pentru a evita o politică prea agresivă.

Verifică suportul înainte să modifici memoria

Începe cu:

uname -r
grep '^CONFIG_DAMON' /boot/config-"$(uname -r)"

Pentru administrare prin sysfs ai nevoie de suport DAMON corespunzător, iar cea mai practică verificare este:

sudo damo report sysinfo

Versiunile actuale DAMO raportează explicit interfețele și funcțiile DAMON disponibile pe kernelul respectiv. Nu presupune că toate opțiunile există doar pentru că rulezi un kernel recent.

Identifică procesul:

PID="$(pgrep -n myapp)"
echo "$PID"

Măsoară înainte:

grep -E 'VmRSS|VmSwap' /proc/"$PID"/status
cat /proc/pressure/memory

Păstrează și un baseline de latență și throughput al aplicației.

Confirmă mai întâi că există memorie rece

Înainte să faci reclaim:

sudo damo start "$PID"
sudo damo report access --repeat

Caută regiuni mari cu frecvență foarte mică și age ridicat. DAMON modelează accesul pe baza dimensiunii regiunii, frecvenței accesărilor și vechimii pattern-ului; acestea sunt exact proprietățile pe care DAMOS le poate folosi ulterior pentru selecție.

Oprește monitorizarea:

sudo damo stop

Nu trece la pageout doar pentru că RSS-ul este mare. Trebuie să existe o coadă rece consistentă în mai multe ferestre de observare.

Aplică pageout numai memoriei care nu a fost accesată

Pentru un test controlat, politica oficială DAMO poate fi exprimată astfel:

sudo damo start \
  --damos_access_rate 0 0 \
  --damos_sz_region 4K max \
  --damos_age 60s max \
  --damos_action pageout \
  --target_pid "$PID"

Comanda cere kernelului să caute regiuni de minimum 4 KiB care au avut rată de acces zero și și-au păstrat acest comportament cel puțin 60 de secunde, apoi să încerce reclamarea lor. Acest model este documentat direct de proiectul DAMO.

Verifică schema activă:

sudo damo report damon

Raportul actual include configurația DAMON, starea kdamond și statisticile DAMOS, inclusiv informații despre regiunile asupra cărora schema a încercat sau a reușit să aplice acțiunea.

Nu rula o schemă nelimitată în producție

DAMOS are quotas tocmai pentru situația în care găsește brusc gigabytes de memorie eligibilă. Kernelul poate limita atât timpul petrecut aplicând acțiunea, cât și numărul de bytes procesați într-un interval. Când quota nu permite procesarea tuturor regiunilor, pentru pageout sunt prioritizate regiunile mai reci.

Pentru a vedea opțiunile exacte suportate de versiunea DAMO instalată:

damo help damon_param_options -h

Nu copia flag-uri de quota din tutoriale vechi; DAMO a evoluat activ, inclusiv în 2026, iar opțiunile noi includ quota goals și algoritmi de auto-tuning.

Dacă vrei reclamare continuă la nivelul întregului sistem, verifică și DAMON_RECLAIM. Modulul oficial poate limita, de exemplu, reclamarea la 128 MiB pe secundă și 10 ms de procesare per interval în configurația implicită, iar quota_sz, quota_ms și quota_reset_interval_ms sunt configurabile.

Corelează reclamarea cu PSI

În timpul testului:

watch -n 1 cat /proc/pressure/memory

Urmărește și:

free -h
grep -E 'VmRSS|VmSwap' /proc/"$PID"/status
sudo damo report damon

Dacă RSS scade, dar memory full PSI și latența aplicației cresc puternic, politica este prea agresivă. Reclamarea proactivă trebuie să elibereze memoria rece înainte ca direct reclaim sau kswapd să producă spike-uri, nu să transforme paginile folosite în trafic repetat către swap. DAMON_RECLAIM poate chiar ajusta quota în funcție de system-wide some memory PSI.

La final:

sudo damo stop

DAMOS devine valoros când selecția este bazată pe acces real, nu pe presupunerea că „memoria mare este memorie inutilă”. Măsoară întâi, aplică pageout numai unei cozi evident reci, limitează agresivitatea și urmărește PSI plus latența aplicației înainte să automatizezi politica.

Surse folosite

Linux Kernel Documentation — DAMON Design și DAMOS: access patterns, quotas, prioritizare, filters și watermarks.

Linux Kernel Documentation — DAMON-based Reclamation și controlul reclamării prin quota și memory pressure.

Linux Kernel Documentation — DAMOS actions, PAGEOUT, quota goals și filters.

DAMO — documentația oficială pentru damo start, damo report damon și scheme pageout.

Facebook
X
WhatsApp

Te-ar putea interesa si: