Dans ce cas on voit que la machine swappe. Pour expliquer les baisses de performances on peut voir que les devices de swap sont situés (généralement) sur les disques internes (hdisk0 & hdisk1 → lscfg -vl hdisk0 pour avoir des infos sur les disques). Pour déterminer sur quel(s) disque(s) se trouve l'espace de pagination on peut utiliser les commandes suivantes :
mrcmid@SomeMachine:/$ lsvg -l rootvg |grep paging hd6 paging 48 96 2 open/syncd N/A
mrcmid@SomeMachine:/$ lslv -l hd6 hd6:N/A PV COPIES IN BAND DISTRIBUTION hdisk0 048:000:000 100% 000:042:006:000:000 hdisk1 048:000:000 100% 000:048:000:000:000
L'activité de swapping sollicite beaucoup ces disques (d'où le Wait à 79.2%) ce qui pénalise la machine car le CPU passe son temps à déterminer quoi lire et écrire dans le swap au détriment du reste de l'activité système.
Pour détecter les process qui swappent le plus :
root@SomeMachine:/apps/sys/log/stats/swap$ svmon -gP -t 10 |grep -p Pid|grep '^.*[0-9]' Pid Command Inuse Pin Pgsp Virtual 64-bit Mthrd LPage 1359954 oracle 1029357 251501 365 259596 Y N N Pid Command Inuse Pin Pgsp Virtual 64-bit Mthrd LPage 2375768 oracle 1029417 251501 349 259596 Y N N Pid Command Inuse Pin Pgsp Virtual 64-bit Mthrd LPage 1740830 oracle 1034135 251501 349 259621 Y N N
Avec la commande lspv on peut déterminer les LVs et FSs présents sur le disque pour, éventuellement, effectuer une meilleur répartition sur des disques moins sollicités.
. . . à suivre . . .
http://www.ibm.com/developerworks/views/aix/libraryview.jsp?search_by=Optimizing+AIX+5L+performance
http://www.ibm.com/developerworks/aix/library/au-aix5_cpu/index.html
http://www.ibm.com/developerworks/aix/library/au-processinfinity.html
Attention tout de même en cas de jfs2 ou NFS fortement sollicité le maxclient peut littéralement exploser et atteindre les 80% du maxperm% et faire swapper le serveur, dans le cas maxperm%=maxclient%. Il est peut être appréciable de mettre un maxclient% à 30%.
Rapidement, l'utilisation du lru_file repage=0 permet de se libérer des contraintes min/maxfree% (intervalle qui encadre la garantie d'avoir de la place dans la free list, depuis 5.3, ces valeurs sont appliquées sur chaque memory pool).
Sinon, pour les larges pages, il faut aussi
vmstat -l
vmstat -P all
http://www.ibm.com/developerworks/views/aix/libraryview.jsp?search_by=Tuning+your+memory+settings
http://publib.boulder.ibm.com/infocenter/pseries/v5r3/index.jsp?topic=/com.ibm.aix.prftungd/doc/prftungd/aix_mem_aff_support.htm
Il faut les monter avec l'option rbrw pour ne pas cacher 2 fois (ram & disques).
Une doc tirée du site IBM.
Par défaut les I/O asynchrones sont mal configurés. Le min server doit être fixé au nombre potentiellement accédé de disques avec les I/O asynchrones. Le max server doit etre égal au minimum multiplié par le nombre de CPU. Attention en AIX 5.3, le max server est d'office multiplié par l'AIX donc min=max. Le nombre de requêtes doit être à 16384 (4*4096). Il ne faut pas dépasser 1000 pour le max (ça ne sert à rien de monter au-delà) Ici, on parle bien de disques physique et non de LUN logique.
Petit détail piquant, le min server est le nombre de server d'I/O asynchrones lancés au démarrage du serveur avec les droits root. Toutes les applications peuvent s'en servir. Par contre, entre le min et le max, donc lancé au besoin, ils appartiennent à l'utilisateur qui en a besoin et ne sont jamais arrêtés. Je vous laisse imaginer lorsqu'il y à Sybase et Oracle sur le même serveur.
Un PDF contenant des infos provenant d'IBM, disponible ici.
http://www.ibm.com/developerworks/aix/library/au-DirectIO.html
http://www-03.ibm.com/servers/aix/whitepapers/db_perf_aix.pdf