Geeek.org 🗲 Le Blog Geek & High Tech 100% Indépendant

Votre serveur Linux rame sans raison apparente ? Il est possible qu’un ou plusieurs processus effectuent trop d’entrées/sorties (IO) sur le disque dur, ce qui peut ralentir l’ensemble du système.

Dans cet article, nous allons voir comment identifier ces processus en utilisant un petit script Perl "iodump", ainsi que quelques commandes alternatives comme iotop et lsof pour une analyse plus approfondie.

🔍 Pourquoi surveiller la consommation d’IO sous Linux ?

Les performances d’un serveur Linux peuvent être fortement affectées par une consommation excessive d’IO. Voici quelques cas typiques où il est utile de surveiller l’usage du disque :

✅ Un serveur web ou une base de données qui devient lent sans raison apparente.
✅ Un disque dur ou un SSD qui semble fonctionner en permanence.
✅ Une application qui consomme anormalement des ressources.

🛠️ Méthode 1 : Utiliser le script "iodump" pour identifier les processus gourmands

1️⃣ Activer la journalisation des IO du kernel

Avant de pouvoir analyser les processus en cours, nous devons activer la journalisation des entrées/sorties au niveau du noyau :

echo 1 > /proc/sys/vm/block_dump

Cette commande demande au kernel de loguer toutes les opérations IO effectuées par les processus.

2️⃣ Télécharger et exécuter le script Perl "iodump"

Nous allons utiliser le script iodump, qui permet de transformer ces logs en un rapport lisible.

👉 Téléchargement du script :

wget https://aspersa.googlecode.com/svn/trunk/iodump

👉 Exécution du script :

while true; do sleep 1; dmesg -c; done | perl iodump

💡 Interruption et affichage des résultats
Appuyez sur Ctrl + C pour arrêter l’analyse et afficher la synthèse des processus ayant consommé le plus d’IO.

3️⃣ Analyser les résultats

Voici un exemple de sortie du script :

^C# Caught SIGINT.
 TASK                   PID      TOTAL       READ      WRITE      DIRTY DEVICES
 jbd2/sda2-8            244        151          0        151          0 sda2
 flush-8:0              243         55          0         55          0 sda2
 bash                 30163          7          0          7          0 sda2
 lighttpd             16720          2          2          0          0 sda2
 vi                   30500          1          0          1          0 sda2

Explication des colonnes :

Colonne Description
TASK Nom du processus concerné
PID Identifiant du processus
TOTAL Nombre total d’opérations IO
READ Nombre d’opérations de lecture
WRITE Nombre d’opérations d’écriture
DIRTY Données modifiées en attente d’écriture sur le disque
DEVICES Périphérique de stockage concerné

Dans cet exemple, le processus jbd2/sda2-8 est le plus gourmand en écriture (151 opérations). Il s’agit du journal du système de fichiers ext4, ce qui est normal.
En revanche, lighttpd et vi consomment des IO, ce qui peut être intéressant à analyser.

🕵️ Méthode 2 : Utiliser lsof pour voir les fichiers ouverts

Une fois qu’un processus suspect a été identifié, il est possible de voir les fichiers qu’il manipule avec la commande lsof.

Par exemple, si lighttpd (PID 16720) consomme trop d’IO, on peut voir quels fichiers il manipule avec :

lsof -p 16720

Cela affichera tous les fichiers ouverts par le processus, permettant d’identifier si ce sont des logs, des bases de données ou d’autres fichiers volumineux.

⚡ Méthode 3 : Une alternative plus moderne avec iotop

Le script iodump est puissant mais repose sur les logs du noyau, ce qui peut être intrusif. Une alternative plus moderne et interactive est d’utiliser iotop.

👉 Installation d’iotop (si non installé) :

sudo apt install iotop   # Debian/Ubuntu
sudo yum install iotop   # CentOS/RHEL

👉 Exécution de la commande :

sudo iotop -o

💡 Pourquoi iotop ?

  • Il affiche en temps réel les processus consommant le plus d’IO.
  • L’option -o affiche uniquement les processus actifs.
  • Il est plus simple et ne nécessite pas d’activer block_dump.

🎯 Conclusion : Quelle méthode choisir ?

Méthode Avantages Inconvénients
iodump Donne un historique des IO Nécessite d’activer block_dump
lsof Permet d’identifier les fichiers manipulés Ne montre pas l’impact exact sur le disque
iotop Plus moderne et interactif Ne donne pas d’historique, uniquement en temps réel

Si vous recherchez une analyse rapide et en temps réel, utilisez iotop.
Si vous avez besoin d’un rapport détaillé sur une période donnée, iodump est une bonne option.
Enfin, pour voir quels fichiers sont ouverts, lsof est l’outil idéal.

Avec ces outils, vous pourrez identifier et corriger les processus qui ralentissent votre serveur Linux en consommant trop d’IO. 🚀

📢 Et vous ?

Quels outils utilisez-vous pour surveiller la consommation d’IO sur vos serveurs Linux ? N'hésitez pas à rejoindre le serveur Discord Geeek.


Vous êtes correctement abonné à Geeek
Bienvenue ! Vous êtes correctement connecté.
Parfait ! Vous êtes correctement inscrit.
Votre lien a expiré
Vérifiez vos emails et utiliser le lien magique pour vous connecter à ce site