Approche d'analyse des performances
L'optimisation des performances consiste à identifier et résoudre les goulots d'étranglement dans le système, en cherchant un équilibre entre les sous-systèmes de l'OS. La méthode suit ces étapes :
- Évaluer l'état global : Processeur -> Mémoire -> Stockage -> Réseau -> Application
- Détecter les contraintes selon les exigences de l'application
- Implémenter des ajustements pour améliorer l'efficacité
Ces composants sont interconnectés ; une surcharge dans l'un peut impacter les autres. Par exemple, un trafic réseau intense peut solliciter le CPU, tandis qu'une activité mémoire élevée peut entraîner des demandes supplémentaires au processeur.
Outils de surveillance de la charge CPU
1. uptime
utilisateur@machine:~$ uptime
16:45:22 up 2h, 3 users, load average: 0.20, 0.15, 0.08
Cette commande affiche l'heure actuelle, la durée de fonctionnement, le nombre d'utilisateurs connectés et la charge moyenne sur les périodes de 1, 5 et 15 minutes.
2. top
Exécutez top et appuyez sur Maj+P pour trier les processus par consommation CPU. Cet outil aide à repérer les applications les plus gourmandes en ressources processeur.
3. ps
utilisateur@machine:~$ ps aux --sort=-pcpu | head -n 15
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.2 0.8 198760 5432 ? Ss 16:00 0:02 /sbin/init
...
Remarque : l'ajout du tiret devant pcpu effectue un tri décroissant.
4. mpstat
Installez le paquet sysstat via votre gestionnaire de paquets, par exemple sudo apt install sysstat ou sudo yum install sysstat.
utilisateur@machine:~$ mpstat
Linux 5.15.0-78-generic (serveur) 2023-08-01 _x86_64_ (8 CPU)
18:30:00 CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle
18:30:00 all 0.30 0.00 0.60 0.12 0.00 0.00 0.00 0.00 0.00 98.98
Pour une vue détaillée de chaque CPU, utilisez mpstat -P ALL. Pour une surveillance continue, essayez mpstat 2 5 (rafraîchissement toutes les 2 secondes, 5 itérations).
Informations sur le processeur
Les spécifications matérielles du CPU sont disponibles dans le fichier /proc/cpuinfo.
utilisateur@machine:~$ grep -c processor /proc/cpuinfo
8
utilisateur@machine:~$ head -n 10 /proc/cpuinfo
processor : 0
vendor_id : GenuineIntel
cpu family : 6
model : 158
model name : Intel(R) Core(TM) i7-10700K CPU @ 3.80GHz
...
Ajustements simples pour le CPU
1. Modification de la priorité nice
La valeur nice, comprise entre -20 (priorité maximale) et 19 (priorité minimale), influence l'ordonnancement des processus. Utilisez nice pour démarrer une commande avec une priorité spécifique.
utilisateur@machine:~$ nice -n -8 ./traitement_lourd.sh
Pour ajuster la priorité d'un processus existant, employez renice.
utilisateur@machine:~$ renice -n 10 -p 12345
2. Configuration de l'affinité CPU
L'outil taskset permet de lier un procesus à des cœurs CPU spécifiques, réduisant ainsi les coûts de basculement entre processeurs.
Pour exécuter un programme sur les cœurs 0 et 2 :
utilisateur@machine:~$ taskset -c 0,2 ./application
Pour vérifier l'affinité d'un processus en cours :
utilisateur@machine:~$ taskset -cp 6789
pid 6789's current affinity list: 0-7