Skip to content

Aix Commande Aioo

   

La commande aioo est apparue en AIX 5.3 TL05. Elle permet de contrôler la configuration des Asynchronous I/O sur le système.

La commande n’est pas encore parfaitement implémenté, par exemple si on essaye de voir les paramètres alors que le module kernel AIO n’est pas chargé on obtient ce message :

# aioo -a
exec(): 0509-036 Cannot load program aioo because of the following errors:
 0509-130 Symbol resolution failed for aioo because:
 0509-136 Symbol aio_cntl (number 20) is not exported from
 dependent module /unix.
 0509-192 Examine .loader section symbols with the
 'dump -Tv' command.

Ce message explicite indique seulement que le module AIO n’est pas chargé dans le kernel. On peut voir avec la commande genkex que ce module n’est effectivement pas chargé(la commande ne renvoit rien contenant aio)

#genkex|grep aio

Il suffit soit de passer par le menu smit qui va bien (smitty aio) et de rebooter, soit de charger le module kernel de manière plus basique :

# mkdev -l aio0
aio0 Available

On vérifie que le module kernel est bien chargé :

 # genkex|grep aio
 437b000 3628 /usr/lib/drivers/aiopin
 436f000 b278 /usr/lib/drivers/aio.ext

Après ça, on obtient une sortie plus polie de la commande :

# aioo -a
 minservers = 1
 maxservers = 10
 maxreqs = 4096
 fsfastpath = 0

On voit les paramètres classiques correspondant aux nombre d’ aioserver démarrés par défaut sur chaque processeur (minservers), le nombre maximum d’aioserver par processeur (maxservers) et le nombre de requètes que chaque aioserver peut traiter (maxreqs).

On peut compter le nombre d’aioserver démarrés avec la commande pstat :

 # pstat -a|grep aio
 48 a 30098 1 30098 0 0 1 aioserver
 55 a 3708a 1 3708a 0 0 1 aioserver
 56 a 38088 1 38088 0 0 1 aioserver
 60 a 3c096 1 3c096 0 0 1 aioserver
 62 a 3e096 1 3e096 0 0 1 aioserver
 72 a 48096 1 48096 0 0 1 aioserver
 74 a 4a098 1 4a098 0 0 1 aioserver
 78 a 4e09c 1 4e09c 0 0 1 aioserver
 79 a 4f09e 1 4f09e 0 0 1 aioserver
...

Il suffit de compter le nombre d’aioserver démarré puis de le diviser par le nombre de processeurs logiques (si le SMT est activé) pour savoir où l’on se situe dans le paramètrage. Les aioserver sont des processus kernel, on peut donc aussi les lister avec la commande ps aux.

En plus de tout cela, on découvre un nouveau paramètre : fsfastpath. Il permet d’activer une implémentation où les I/O asynchrones sont directement adressés au driver sans passer par les processus aioserver . Cette implémentation est prévue pour les filesystems JFS2 en Concurrent I/O.

Il suffit de passer ce paramètre à 1 pour en profiter car elle n’est pas activée par défaut.

# aioo -o fsfastpath=1

En théorie, on gagne en performance au niveau cpu en évitant des context switchs dûe au passage par les aioserver et en mémoire comme il n’y a plus besoin d’allouer de la mémoire pour ces process. En pratique, et en ayant tester ce paramètre sur des serveurs réels(recette et production donc difficile à monitorer de manière précise), je n’ai pas remarqué de différences significatives ce qui est déjà pas mal :-) . Avec ce paramètre, il est inutile d’effectuer un tuning fin des aioserver et on ne risque pas de problèmes de performance comme lorsque le nombre d’aioserver est insuffisant.

Dernier commentaire sur la commande aioo, elle n’est pas encore bien implémentée dans AIX dans le sens où son paramètrage n’est pas conservée lors d’un reboot (pas d’entrées ajoutées dans les fichiers du répertoire /etc/tunables). Il faut donc ajouter une entrée dans /etc/inittab pour que le paramètre soit pris en compte au reboot.

Et pour la fin l’information la plus importante à mes yeux, IBM maintient un redbook intégrant les nouvelles fonctionnalités apportées à AIX 5.3(uniquement lors des TL impaires). Il s’agit du redbook sg247414 nommé AIX 5L Differences guide Version 5.3 Addendum. Il ne se contente pas de lister les nouvelles fonctionnalités mais les décrit aussi. Vraiment très sympatique.

PS: la commande existe aussi en AIX 5.2 TL9 mais sans le paramètre fsfastpath.

Publications liées

  1. Aix Nouvel Utilitaire Fcstat
  2. Aix Utilisation Memoire Memdetails