====== Généralités ======
* Un AIX 5.x nécessite au moins 1 Go de RAM mais 2 Go sont plutôt conseillés pour bien faire tourner l'OS (et cela hormis les applications pouvant tourner sur la machine).
* Si on ne connait rien aux futures applications tournant sur la machine on peut spécifier une taille de swap égale à la RAM. Ce n'est pas forcément optimisé mais vu la taille des disques à l'heure actuelle (plusieurs centaines de Go) on peut se le permettre.
* L'activité de swap est très pénalisante pour la machine. Cela fait beaucoup d'IO et le CPU passe son temps à les gérer. Mais attention il est normal qu'il machine swappe légèrement, le système y place les vieilles pages mémoires inutilisées. Par contre effectivement si ça swappe beaucoup sur la durée on peut envisager un problème de mémoire.
====== Tips ======
===== the top 10 CPU-consuming processes =====
ps aux | head -1; ps aux | sort -rn +2 | head -10
===== the top 10 memory-consuming processes =====
ps aux | head -1 ; ps aux | sort -rn +3 | head
===== Obtenir des infos sur un segment mémoire =====
On liste les segments mémoire avec la commande suivante :
root@machine:/home/root$ ipcs -mP|awk '/m/ {ligne=$0} /SID/ {print ligne" " $1}'
m 1179648 0x76003809 --rw-rw-rw- root system SID:0x2561
m 131073 0x76003810 --rw-rw-rw- root system SID:0x19007
m 2 0x0d097858 --rw-rw---- root system SID:0x25a1
m 3 0xffffffff D-rw------- suiveur suivi SID:0x3865c
m 393220 0x0052e2c1 --rw------- suiveur suivi SID:0x2fc97
m 5 0xffffffff --rw-rw---- root system SID:0x8c0
m 3145734 0x0000cace --rw-rw-rw- root system SID:0xd808
m 8126471 0xffffffff --rw-rw---- root system SID:0x6ab
Soit la ligne suivante :
m 2 0x0d097858 --rw-rw---- root system SID:0x25a1
On récupère le //SID//, ici //0x25a1//, ensuite un svmon nous donnera plus d'infos :
root@machine:/home/root$ svmon -lS 0x25a1
Vsid Esid Type Description PSize Inuse Pin Pgsp Virtual
25a1 3 work shared memory segment s 1 0 0 1
pid(s)=80434, 78606, 73892, 72518, 70314, 68498, 62240,
pid(s)=61728, 57886, 54110, 50450, 48752, 34464, 31384,
pid(s)=27290, 22746
===== Monitorer un process =====
Si vous avez besoin d'une analyse fine de la conso mémoire d'un process donné, vous pouvez utiliser le script suivant:
++++ MonitorConsoPId.ksh |
#!/bin/ksh
#Script de monitoring d'un process donné
# on mesure toutes les 10 secondes
SleepTime=10
PID=$1
if [ "$PID" -eq "" ]
then
echo "Merci de lancer $0 avec en parametre le pid du process à monitorer"
exit 1
fi
# si on passe stop en second parametre on kill le monitoring du process donné
if [ "$2" = "stop" ]
then
# on recherche le script lancé et on essaie de le killer
PID2KILL=`ps -ef |grep "$0 $1"|grep -v grep |awk '$NF == pid {print $2}' pid=$PID`
if [ "$PID2KILL" != "" ]
then
echo "on supprime le process $PID2KILL"
kill $PID2KILL
sleep 1
else
echo "pas de process à supprimer"
exit 1
fi
# on check l'etat du process
if [ "`ps -T $PID2KILL|wc -l`" -gt 1 ]
then
echo "le process $PID2KILL n'est pas mort"
echo "Relancez $0 $1 stop ou tentez de supprimer $PID2KILL vous-même"
exit 1
else
echo "Le process $PID2KILL a bien été supprimé"
exit 0
fi
fi
echo "Monitoring du process $1 commencé"
echo " => Pour arreter la prise de mesure, merci de lancer la commande suivante $0 $1 stop"
LOGFILE=/apps/sys/log/stats/NMON/MEMUSE_${PID}_`date "+%Y%m%d"`.csv
echo "DATE;PID;%CPU;%MEM;SZ;RSS;Commentaires" > $LOGFILE
(
while [ "`ps -T $PID|wc -l`" -gt 1 ]
do
DATE=`date "+%d/%m/%Y %H:%M:%S"`
ps auxwww|awk '$2 == pid {print dte";"$2";"$3";"$4";"$5";"$6}' dte="$DATE" pid=$PID >>$LOGFILE
sleep $SleepTime
done
echo "Le process $1 n'existe plus, on quitte"
)>> $LOGFILE &
++++
Il s'utilise ainsi:
./MonitorConsoPID.ksh
Pour couper:
./MonitorConsoPID.ksh stop
Il s'arrete aussi une fois que le PID suivi meurt.
Par défaut, on mesure toutes les 10 secondes, ça se modifie dans le script de même pour le choix de la log.
(par defaut: ///apps/sys/log/stats/NMON/MEMUSE__.csv//).
Après traitement, on peut le donner à Excel, il saura quoi en faire.
===== Supprimer un segment mémoire inutilisé =====
On liste les segments mémoire :
root@server:/home/root$ ipcs -mS|awk '/^0x/{print substr($1,3)}'|xargs -i svmon -lS {}
Vsid Esid Type Description PSize Inuse Pin Pgsp Virtual
3c43e 3 work shared memory segment s 1 0 0 1
pid(s)=76144, 72132, 71146, 69064, 66022, 64196, 61696,
pid(s)=60624, 58908, 57910, 50648, 48944, 47748, 46444,
pid(s)=39758, 38666, 35698, 32846, 26416, 26008, 24804,
pid(s)=15234
Vsid Esid Type Description PSize Inuse Pin Pgsp Virtual
3c55e 3 work shared memory segment s 1 0 0 1
pid(s)=27358
Vsid Esid Type Description PSize Inuse Pin Pgsp Virtual
3a59d 4 work shared memory segment s 32 0 0 32
pid(s)=27358
Vsid Esid Type Description PSize Inuse Pin Pgsp Virtual
4722 3 work shared memory segment s 357 0 0 357
pid(s)=70000, 66458, 63240, 63072, 59712, 54592, 51662,
pid(s)=46050, 43942, 40046, 39316, 37074, 36852, 34342,
pid(s)=30202, 29744, 28328
Vsid Esid Type Description PSize Inuse Pin Pgsp Virtual
1c8ee 4 work shared memory segment s 1 0 0 1
pid(s)=34576
Vsid Esid Type Description PSize Inuse Pin Pgsp Virtual
20ab1 - work s 1 0 0 1
Unused segment
Ensuite on recupère l'adresse avec //ipcs -mS// :
m 114425863 0x0000cace --rw-rw-rw- root system
SID :
0x20ab1
Puis on le supprime + //slibclean// :
ipcrm -M 0x0000cace
slibclean
====== Liens ======
* http://stix.id.au/wiki/Tuning_the_AIX_file_caches
* http://users.ca.astound.net/baspence/AIXtip/AIX5_Initial_Tuning.htm