Chapitre 4.5 - Processus et Ressources
Objectifs d'Apprentissage
À la fin de ce chapitre, vous serez capable de:
- Comprendre l'utilisation CPU par les processus
- Comprendre l'utilisation mémoire
- Monitorer les ressources avec différents outils
- Identifier les processus gourmands
- Limiter les ressources
Utilisation CPU
Mesure CPU
# Avec ps
ps aux --sort=-%cpu | head
# Avec top
top
# Colonne %CPU
# Avec htop
htop
# Barres CPU par processus
Temps CPU
# Temps CPU total utilisé
ps -eo pid,time,comm
# Format: HH:MM:SS
# Exemple: 01:23:45 = 1h 23min 45s
Charge CPU (Load Average)
# Voir la charge
uptime
# Exemple: load average: 1.25, 0.85, 0.65
# 1 min, 5 min, 15 min
# Interprétation:
# < nombre de CPUs: OK
# = nombre de CPUs: Utilisation complète
# > nombre de CPUs: Surcharge
# Nombre de CPUs
nproc
lscpu | grep "^CPU(s)"
Utilisation Mémoire
Mémoire par Processus
# Avec ps
ps aux --sort=-%mem | head
# Format lisible
ps aux --sort=-%mem -o pid,%mem,rss,comm | head
# Avec top
top
# Colonne %MEM, RES (RSS)
# RSS = Resident Set Size (mémoire physique)
Types de Mémoire
# Voir détails
cat /proc/PID/status | grep -i mem
# VSZ: Virtual Size (mémoire virtuelle)
# RSS: Resident Set Size (mémoire physique)
# Shared: Mémoire partagée
Mémoire Totale
# Vue d'ensemble
free -h
# Détails
cat /proc/meminfo
# Par processus
ps aux --sort=-%mem | head -10
Outils de Monitoring
vmstat - Statistiques Système
# Statistiques toutes les secondes
vmstat 1
# Colonnes importantes:
# r: Processus en attente
# b: Processus bloqués
# swpd: Swap utilisé
# free: Mémoire libre
# si/so: Swap in/out
# us/sy/id: CPU user/system/idle
iostat - I/O Statistiques
# Installer si nécessaire
sudo apt install sysstat # Ubuntu/Debian
# Statistiques I/O
iostat -x 1
# Colonnes:
# %util: Utilisation disque
# r/s, w/s: Lectures/écritures par seconde
sar - System Activity Reporter
# Historique CPU
sar -u
# Historique mémoire
sar -r
# Historique I/O
sar -b
# En temps réel
sar -u 1 10 # CPU, 1 seconde, 10 fois
Identifier les Processus Gourmands
Top 10 CPU
ps aux --sort=-%cpu | head -11 | tail -10
Top 10 Mémoire
ps aux --sort=-%mem | head -11 | tail -10
Processus par Utilisateur
# CPU par utilisateur
ps aux | awk '{cpu[$1]+=$3} END {for (user in cpu) print user, cpu[user]"%"}'
# Mémoire par utilisateur
ps aux | awk '{mem[$1]+=$4} END {for (user in mem) print user, mem[user]"%"}'
Limiter les Ressources
ulimit - Limites par Processus
# Voir les limites
ulimit -a
# Limiter mémoire virtuelle
ulimit -v 1000000 # 1GB en KB
# Limiter processus
ulimit -u 100
# Limiter fichiers ouverts
ulimit -n 1024
# Permanent: /etc/security/limits.conf
cgroups - Contrôle Avancé
# Voir les cgroups
systemd-cgtop
# Limiter CPU
systemd-run --slice=my-slice --property=CPUQuota=50% commande
# Limiter mémoire
systemd-run --slice=my-slice --property=MemoryLimit=1G commande
Résumé
Dans ce chapitre, vous avez appris:
CPU: %CPU, temps CPU, load average
Mémoire: %MEM, RSS, VSZ, types de mémoire
Monitoring: vmstat, iostat, sar pour statistiques
Identification: ps avec tri pour processus gourmands
Limites: ulimit, cgroups pour contrôler ressources
Prochaines Étapes
Chapitre 4.6: Jobs et Tâches en Arrière-Plan
Module 5: Utilisateurs et Permissions
Chapitre créé le: Décembre 2024