Curs 8 - Planificarea Resurselor și Performanța Sistemului de Operare

Î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.

1. Introducere în Planificarea Resurselor

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.

2. Planificarea Utilizării CPU și Load Balancing

- 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

3. Gestionarea Memoriei și Swapping

- 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

4. Performanța Stocării și Optimizarea I/O

- 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

5. Monitorizarea Performanței și Troubleshooting

- 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

6. Exemplu Practic - Monitorizarea și Optimizarea Performanței

a) Identificarea proceselor care consumă CPU și RAM

ps aux --sort=-%mem | head -10

b) Optimizarea priorității proceselor

renice -10 1234

c) Analiza traficului de rețea

netstat -tulnp

Resurse suplimentare: