Résumé : ionice
Vous avez maintenant pris l'habitude de lancer vos programmes gourmands avec nice pour eviter qu'ils ne monopolisent le processeur. C'est bien, mais il leur arrive encore parfois de consommer tout les accès dique et de faire ramer votre swap.
Et le sauveur s'appelle ionice. Son utilisation est simple :
$ ionice -c 2 -n 4 /usr/local/monscript
Mais que veulent dire -c 2 et -n 4 ? Il s'agit simplement de la classe et de la priorité.
- -c 1 : temps réel, ne pas utiliser sous peine de geler la machine
- -c 2 : standard on donne acces au disque dès qu'on en a l'occasion
- -c 3 : on donne accès au disque lorsque personne ne l'a demand depuis un certain temps (quasiment jamais)
Pour récupérer les informations pour un processus existant à partir de son pid :
$ ionice -p1Vous constaterez que la plupart des processus sont dans la classe none. Selon les documentations cela connespond à -c2 -n4 ou à un calcul en fonction de la valeur de nice du preocessus.
Ainsi pour lancer un programme particulièrement gourmand je vous conseille quelque chose du genre
$ nice -n 19 ionice -c2 -n7 /usr/local/monscript
Passons à une partie plus technique. Ceci n'est possible que parce que le noyau contient un scheduler d'io. C'est une innovation récente. Ce n'est que depuis le 2.6.18 que le scheduler cfq est présent par défaut et c'est le seul qui supporte ces priorités. Mais ce n'est pas le seul. Vous pouvez en compiler plusieurs et en changer soit au boot (avec l'option elevator=) soit après le boot disque par disque avec la commande
$ echo "cfq" > /sys/block/hda/queue/schedulerLe choix d'un bon scheduler peut influencer les performances de vo serveurs de base de données ...
La documentation se trouve dans le répertoire Documentation/block des sources du noyau.