====== 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