În acest curs vom explora modul în care sistemele de operare gestionează resursele hardware și software, tehnici de optimizare a performanței și profiling pentru analiza consumului de resurse.
Resursele sistemului de operare includ CPU, memorie, stocare și rețea, iar gestionarea lor eficientă este esențială pentru performanța optimă.
- Cum sunt alocate resursele între procese?
- OS-ul utilizează algoritmi de scheduling pentru a decide ce proces primește acces la resurse.
- Planificarea poate fi bazată pe priorități sau algoritmi round-robin.
- Algoritmi de scheduling la nivel de kernel:
- CFS (Completely Fair Scheduler): Scheduler modern folosit în Linux.
- O(1) Scheduler: Algoritm de planificare vechi bazat pe liste de priorități.
- BFS (Brain Fuck Scheduler): Alternativă optimizată pentru latență scăzută.
- Priority Scheduling și Load Balancing:
chrt -f -p 99 1234 # Setează procesul cu PID 1234 la prioritate maximă în real-time
- Hyper-Threading și utilizarea eficientă a nucleelor procesorului:
cat /sys/devices/system/cpu/smt/active # Verifică statusul Hyper-Threading
- Monitorizarea și optimizarea utilizării RAM-ului:
free -m
- Impactul swapping-ului asupra performanței:
vmstat 1 10 # Monitorizare swapping în timp real
- Utilizarea HugePages și Transparent HugePages (THP):
cat /sys/kernel/mm/transparent_hugepage/enabled
- Planificatori de I/O în Linux:
cat /sys/block/sda/queue/scheduler
- CFQ: Algoritm echilibrat pentru workload-uri mixte.
- NOOP: Optimizat pentru SSD-uri.
- Deadline: Minimiza latența I/O.
- Optimizarea accesului la disc:
echo deadline > /sys/block/sda/queue/scheduler
- Comenzi pentru analiza performanței:
top
iotop # Monitorizare activitate I/O
- Profiling CPU cu `perf`, `strace`, `lsof`:
perf stat -a
strace -p 1234 # Urmărește syscalls pentru PID 1234
ps aux --sort=-%mem | head -10
renice -10 1234
netstat -tulnp