Академический Документы
Профессиональный Документы
Культура Документы
AIX
REFERENCE
86 F2 72AP 04
Bull
AIX 4.3 Guide doptimisation
AIX
Logiciel
Octobre 1999
REFERENCE
86 F2 72AP 04
The following copyright notice protects this book under the Copyright laws of the United States of America
and other countries which prohibit such actions as, but not limited to, copying, distributing, modifying, and
making derivative works.
Copyright
Imprim en France
Vos suggestions sur la forme et le fond de ce manuel seront les bienvenues. Une feuille
destine recevoir vos remarques se trouve la fin de ce document.
Pour commander dautres exemplaires de ce manuel ou dautres publications techniques
Bull, veuillez utiliser le bon de commande galement fourni en fin de manuel.
Marques dposes
Toutes les marques dposes sont la proprit de leurs titulaires respectifs.
AIXR est une marque dpose dIBM Corp. et est utilise sous licence.
UNIX est une marque dpose licencie exclusivement par X/Open Company Ltd
An 2000
Le produit document dans ce manuel est prt pour lAn 2000.
La loi du 11 mars 1957, complte par la loi du 3 juillet 1985, interdit les copies ou reproductions destines
une utilisation collective. Toute reprsentation ou reproduction intgrale ou partielle faite par quelque
procd que ce soit, sans consentement de lauteur ou de ses ayants cause, est illicite et constitue une contrefaon sanctionne par les articles 425 et suivants du code pnal.
Ce document est fourni titre dinformation seulement. Il nengage pas la responsabilit de Bull S.A. en cas
de dommage rsultant de son application. Des corrections ou modifications du contenu de ce document
peuvent intervenir sans pravis ; des mises jour ultrieures les signaleront ventuellement aux destinataires.
xi
Chapitre 1. Performances . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Vitesse dexcution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Estimation de la charge . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Dynamique dexcution des programmes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Dynamique systme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Procdure doptimisation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Identification des charges de travail . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Dfinition des objectifs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Identification des ressources critiques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Rduction des contraintes de ressources critiques . . . . . . . . . . . . . . . . . . . . . . . . .
Modification de laffectation des ressources en fonction des priorits . . . . . . . . .
Rptition des tapes doptimisation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Mise en uvre de ressources supplmentaires . . . . . . . . . . . . . . . . . . . . . . . . . . .
Essais comparatifs les donnes de performance sont invitablement modifies
1-1
1-1
1-2
1-2
1-6
1-8
1-8
1-8
1-9
1-10
1-10
1-10
1-11
1-12
2-1
2-2
2-2
2-2
2-3
2-4
2-4
2-4
2-5
2-5
2-8
2-11
2-13
2-14
2-15
2-15
2-16
2-16
3-1
3-2
3-2
3-3
3-4
3-4
3-5
3-5
3-5
3-6
3-6
3-6
3-6
3-7
Prface
iii
iv
3-8
3-8
3-8
3-10
3-11
3-11
3-11
3-12
3-14
4-1
4-2
4-2
4-3
4-11
4-11
4-11
4-13
4-13
4-14
4-18
4-18
4-19
4-20
4-20
4-23
4-23
4-23
4-23
4-24
4-27
5-1
5-2
5-3
6-1
6-2
6-3
6-4
6-5
6-6
6-10
6-10
6-17
6-17
6-19
6-20
6-20
6-20
6-20
6-21
6-21
6-22
6-23
6-25
6-26
7-1
7-2
7-2
7-2
7-3
7-3
7-4
7-4
7-5
7-6
7-6
7-14
7-14
7-16
7-16
7-17
7-18
8-1
8-1
8-2
8-2
8-3
8-5
8-6
8-7
8-7
8-8
8-9
8-10
8-10
8-11
8-13
8-13
8-15
8-16
8-16
8-17
8-18
8-19
8-20
8-21
8-22
8-23
8-23
8-23
8-24
8-25
9-1
9-2
9-3
Prface
Couche socket . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Fonctions UDP et TCP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Couche UDP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Couche TCP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Couche IP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Couche IF (couche Demux sous AIX version 4.1) . . . . . . . . . . . . . . . . . . . . . . . . . .
Cartes rseau local et pilotes dunit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Optimisation de TCP et UDP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Recommandations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Optimisation des files de transmission et de rception de la carte . . . . . . . . . . . .
Optimisation de la taille maximum de segment (MSS) TCP . . . . . . . . . . . . . . . . .
Optimisation des performances du protocole IP . . . . . . . . . . . . . . . . . . . . . . . . . . .
Optimisation des performances Ethernet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Optimisation des performances anneau jeton (4 Mo) . . . . . . . . . . . . . . . . . . . . .
Optimisation des performances anneau jeton (16 Mo) . . . . . . . . . . . . . . . . . . . .
Optimisation des performances FDDI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Optimisation des performances ATM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Optimisation des performances SOCC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Optimisation des performances HIPPI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Optimisation du pool mbuf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Fonction de gestion des mbuf : gnralits . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Optimisation des polls mbuf : quand ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Optimisation des polls mbuf : comment ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Rcapitulatif des paramtres doptimisation UDP, TCP/IP et mbuf . . . . . . . . . . . . . .
thewall . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
sockthresh . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
sb_max . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
rfc1323 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
udp_sendspace . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
udp_recvspace . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
tcp_sendspace . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
tcp_recvspace . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
ipqmaxlen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
xmt_que_size . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
rec_que_size . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
MTU . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Voir aussi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Optimisation de NFS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Nombre de biod et de nfsd requis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Performances et montages logiciels et matriels de NFS . . . . . . . . . . . . . . . . . . .
Optimisation des retransmissions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Optimisation du cache dattribut de fichier NFS . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Dsactivation du support ACL NFS inutilis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Optimisation de la mise en cache des donnes NFS . . . . . . . . . . . . . . . . . . . . . . .
Optimisation des autres couches pour amliorer les performances NFS . . . . . .
Augmentation de la taille du tampon du socket NFS . . . . . . . . . . . . . . . . . . . . . . . .
Configuration du disque du serveur NFS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Acclrateurs matriels . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Du bon usage de NFS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Service des stations de travail sans disque . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Particularits dun systme sans disque . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Remarques sur NFS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Excution dun programme sur une station de travail sans disque . . . . . . . . . . . .
Pagination . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Ressources requises pour les stations de travail sans disque . . . . . . . . . . . . . . .
vi
9-3
9-5
9-5
9-6
9-10
9-11
9-11
9-12
9-12
9-13
9-21
9-23
9-23
9-24
9-24
9-24
9-25
9-25
9-25
9-26
9-26
9-27
9-29
9-31
9-31
9-31
9-32
9-32
9-32
9-32
9-33
9-33
9-33
9-34
9-34
9-35
9-35
9-36
9-36
9-37
9-38
9-38
9-39
9-39
9-39
9-39
9-40
9-40
9-40
9-41
9-41
9-41
9-42
9-44
9-45
9-46
9-48
9-49
9-51
9-53
9-54
9-54
9-55
9-55
9-55
9-56
9-57
9-58
9-59
9-61
10-1
10-1
10-2
10-2
10-2
10-2
10-3
10-3
10-3
10-4
10-4
11-1
11-2
11-2
11-2
11-3
11-3
11-4
11-4
11-4
11-5
11-5
11-6
11-6
11-6
11-7
11-7
11-7
11-9
11-9
11-9
11-10
11-10
11-11
11-13
Prface
vii
viii
12-1
12-1
12-2
12-4
12-5
12-6
12-10
12-16
12-17
12-17
12-18
12-18
12-19
12-19
12-20
12-21
12-22
12-23
12-23
12-25
12-25
12-29
13-1
13-1
13-1
13-2
13-3
13-3
13-4
A-1
A-5
A-6
A-9
A-12
A-13
B-1
C-1
C-1
C-1
C-3
C-4
C-4
C-5
Annexe D. Commande ld . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Excutables rditables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Bibliothques de sous-routines prdites . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Exemples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
D-1
D-1
D-1
D-2
F-1
G-1
G-1
G-1
G-1
H-1
H-2
H-3
H-3
I-1
I-1
I-2
I-2
J-1
J-1
J-1
J-2
J-2
J-3
J-3
J-3
J-4
J-4
J-4
J-5
J-5
J-5
J-6
J-6
J-6
J-7
J-7
J-7
J-8
J-8
J-8
J-9
J-9
J-9
J-10
J-10
J-10
J-11
J-11
J-11
J-12
J-12
J-13
J-13
J-13
J-14
J-14
J-14
Prface
ix
nonlocsrcroute . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
npskill (AIX version 4.1 seulement) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
npswarn (AIX version 4.1 seulement) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
numclust (AIX version 4.1 seulement) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
numfsbuf (AIX version 4.1 seulement) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Paramtres de contrle de charge mmoire . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
pd_npages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
rec_que_size . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
rfc1122addrchk . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
rfc1323 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
sb_max . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
subnetsarelocal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Taille de lespace de pagination . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
tcp_keepidle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
tcp_keepintvl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
tcp_mssdflt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
tcp_recvspace . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
tcp_sendspace . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
tcp_ttl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
thewall . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
udp_recvspace . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
udp_sendspace . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
udp_ttl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
xmt_que_size . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
J-15
J-15
J-15
J-16
J-16
J-16
J-17
J-17
J-17
J-18
J-18
J-18
J-19
J-19
J-19
J-20
J-20
J-20
J-21
J-21
J-21
J-22
J-22
J-22
Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
X-1
A propos de ce manuel
Avertissement: Dans ce manuel, ce qui sapplique au DPX/20 sapplique galement aux
systmes Unix suivants : ESCALA et ESTRELLA.
Ce manuel, AIX - Guide doptimisation, donne des informations sur les concepts, les outils
et les techniques dvaluation et doptimisation dAIX sur les systmes ESCALA. Il traite de
la conception et de limplantation du systme et des applications, ainsi que de loptimisation
post-implantation de lutilisation de la CPU et de la mmoire, et des E/S disque et de
communication. La plupart des conseils doptimisation ont t tests ou valids sur la
version 3.2.5. Des prcisions sur AIX version 4.1 sont galement fournies. Les informations
qui ne sappliquent qu AIX version 4.1 sont signales dans le texte.
Destin aux administrateurs systme, programmeurs et utilisateurs finals concerns par
loptimisation des systmes AIX. Ce manuel suppose une bonne connaissance de
lenvironnement dexploitation AIX. Des sections de prsentation permettent aux utilisateurs
moins chevronns dacqurir les notions indispensables et aux autres de se familiariser
avec la terminologie propre loptimisation.
Ce manuel est une version totalement revue du manuel AIX version 3.2 Performance
Monitoring and Tuning Guide, tant au niveau de la structure que des conseils fournis.
Notons notamment les modifications intervenues au niveau du conditionnement et du
contenu des outils danalyse de performances dans AIX version 4.1.
extension
planification installation
(inoccup)
BEST/1
Predict
AIX SMIT
contrle
optimisation
(dsquilibr)
(quilibr)
AIX BOS
Perf. Toolbox
AIX PDT
BEST/1 Monitor
AIX BOS
BEST/1 Acquire
(surcharg)
BEST/1
Predict
Prface
xi
Outils et documentation
Le conditionnement des outils de performance permet lanalyste de ninstaller sur un
systme que les outils requis pour contrler et optimiser ce systme. Les modules et leurs
principales fonctions sont dcrits ci-aprs.
BEST/1
BEST/1 est un outil de planification de la capacit qui exploite des modles de mise en file
dattente pour prvaluer les performances dune configuration donne lors du traitement
dune charge donne. Les prvisions peuvent tre fondes sur :
les descriptions de charge issues dune application,
les donnes de la charge collectes par surveillance des systmes existants.
BEST/1 est constitu de trois modules principaux :
Collect
Analyze
Predict
BEST/1 pour UNIX est un produit de BGS Systems, Inc. Vous pouvez contacter BGS
Systems au 18008910000 (aux EtatsUnis).
xii
iostat
lsattr
lslv
netstat
nfsstat
Affiche des statistiques sur les activits NFS (Network File System) et RPC
(Remote Procedure Call).
nice
no
ps
renice
reorgvg
sar
time
trace
vmstat
Les commandes BOS AIX sont dcrites en dtail dans les manuels de rfrence de
commandes dAIX.
Agent
Agent
Manager
Agent
xmperf
Display
Agent
Agent
Configuration de rseau local exploitant Performance Toolbox
Lobjectif principal de PTX Manager est de collecter et dafficher les donnes issues de
diffrents systmes de la configuration. xmperf est le principal programme ddi cet
objectif. Le principal programme utilis par lAgent pour collecter et transmettre les donnes
au Manager est xmservd.
Sous AIX version 4.1, outre les composants de base PTX, les produits sous licence
Performance Toolbox for AIX et Performance Aide for AIX proposent un ensemble doutils
de contrle et doptimisation distinct, dont lessentiel fait partie de BOS version 3.2.5 :
fdpr
filemon
fileplace
Affiche la position des blocs dun fichier dans des volumes physiques
ou logiques.
lockstat
netpmon
rmss
svmon
syscalls
Prface
xiii
tprof
bf
stem
xiv
Chapitre 12 : Outil de diagnostic PDT : description dun nouvel outil dAIX version 4.1, qui
value les configurations au niveau de leur quilibre et tient jour un historique des
donnes de performance pour en identifier les tendances.
Chapitre 13 : Gestion dun possible dfaut de performance AIX : description de la marche
suivre pour signaler un possible dfaut de performance au niveau dAIX et du mode de
collecte et de transmission des donnes requises.
Annexe A : Commandes de contrle et doptimisation des performances AIX : liste des
commandes AIX les plus utiles pour le contrle et loptimisation dAIX et dtail de la
syntaxe et des fonctions des commandes schedtune, vmtune, pdt_config et
pdt_report.
Annexe B : Sous-routines lies aux performances : description de plusieurs sous-routines
lies aux performances.
Annexe C : Mmoire cache et adressage : aperu de limpact des caches sur les
performances des programmes.
Annexe D : Commande Id : techniques dutilisation de lditeur de liens AIX.
Annexe E : Outils de performance : consommation de ressources et temps de rponse
des outils de performance.
Annexe F : Gestion de la mmoire des applications : distinction entre les versions
dorigine et courante des sous-routines malloc et realloc.
Annexe G : Bibliothques partages : avantages et inconvnients des bibliothques
partages au niveau des performances.
Annexe H : Accs lhorloge du processeur : mthodes dutilisation de lhorloge du
processeur pour calculer des dures.
Annexe I : Support NLS (National Language Support) : effet de lutilisation du
support NLS (National Language Support) dAIX sur les performances.
Annexe J : Rcapitulatif des paramtres AIX optimisables : liste des paramtres dAIX
modifiables par lutilisateur, ayant une incidence directe ou indirecte sur les
performances.
Conventions typographiques
Voici les conventions typographiques adoptes dans ce manuel :
Gras
Italique
Espacement
fixe
ISO 9000
Ce produit rpond aux normes qualit ISO 9000.
Bibliographie
Les manuels suivants concernent le contrle des performances :
AIX - Bibliographie, rfrence 86 F2 71WE.
AIX 4.3 Guide de lutilisateur : systme dexploitation et units,
rfrence 86 F2 97HX.
AIX 4.3 Guide dadministration : systme dexploitation et units,
rfrence 86 F2 99HX.
Prface
xv
Commande de manuels
Vous pouvez commander ces publications auprs de votre reprsentant commercial.
Si vous disposez du manuel AIX - Bibliographie, consultezle.
xvi
Chapitre 1. Performances
Vitesse dexcution
Les termes de vitesse et de rapidit, que lon continue demployer pour dcrire les
ordinateurs, font rfrence une ralit aujourdhui dpasse. Le temps nest plus en effet
o il tait possible de lire un programme, de calculer la somme des dures dexcution de
ses instructions pour valuer son temps dexcution. Le travail de milliers de programmeurs
et dingnieurs depuis trente ans a rendu ce type de calcul sinon impossible, du moins
dnu de sens.
Les machines daujourdhui sont plus puissantes que leurs anctres. Le remplacement des
lampes vide par des circuits intgrs et le raccourcissement significatif des cycles
dexcution ont certes contribu cette volution, mais les innombrables nouveauts en
matire darchitecture matrielle et logicielle ont t dcisives. Chaque avance en terme
de densit de circuit intgr fait progresser dautant les performances, non seulement parce
quune mme opration est alors excutable sur une surface moindre une vitesse
dhorloge suprieure, mais aussi parce que le gain despace induit offre aux ingnieurs un
nouvel espace dexprimentation. Bref, les machines ont vu leur capacit saccrotre en
gagnant la fois en complexit et en rapidit.
La complexit des machines modernes et des systmes dexploitation va de pair avec celle
de leur environnement. Outre lexcution de programmes individuels, les ordinateurs ont
aujourdhui grer un nombre variable dinterruptions imprvisibles issues des units dE/S
et de communication. Au point que les meilleures ides des ingnieurs, bases sur
lhypothse dun seul programme excut sur une machine autonome, sont aujourdhui
largement rattrapes et dpasses par les impondrables du monde rel. Ds lors quil est
tenu compte de ce caractre alatoire, certaines erreurs peuvent tre compenses. Les
gains et les pertes varient ainsi dun programme lautre au cours du temps.
Le solde net entre les gains et les pertes au niveau logiciel et matriel donne la
performance du systme. La rapidit dun systme est le dbit avec lequel il traite une
squence spcifique de demandes. Si les demandes simbriquent bien aux architectures
matrielle et logicielle du systme, on peut dire : Le systme excute rapidement cette
charge de travail. Nous ne pouvons pas dire Le systme est rapideou du moins, nous
ne le devrions pas.
Performances
1-1
Estimation de la charge
Lvaluation complte et exacte de la charge dun systme est dterminante pour la
prvision et lanalyse de ses performances. Toute variation de la charge a en effet
davantage dincidence sur la mesure des performances quune diffrence au niveau de la
vitesse dhorloge CPU ou de la taille de la RAM. La charge du systme doit tenir compte
non seulement du type et du dbit des demandes soumises, mais aussi de lensemble des
modules logiciels et des programmes dapplication internes impliqus.
Il convient de suivre au mieux lactivit des utilisateurs des applications existantes pour
disposer dune valuation exacte et dynamique de leur interaction avec les stations de
travail et les terminaux.
Veillez inclure dans votre valuation lactivit sousjacente du systme. Par exemple, si
le systme est dot de systmes de fichiers NFS frquemment sollicits par dautres
systmes, vous devez considrer ces accs comme une portion significative de la charge
globale, mme si le systme ne joue pas officiellement le rle de serveur.
Objectifs de performances
Une fois la charge de travail value, vous pouvez dfinir vos critres de performances et
fixer vos objectifs en consquence. Les principaux critres de performances globales des
systmes informatiques sont le temps de rponse et le dbit. Le temps de rponse est le
laps de temps coul entre le lancement dune opration et lobtention des informations
utiles pour la reprise du travail, alors que le dbit est le nombre doprations comprises
dans la charge de travail et pouvant tre accomplies par unit de temps. La relation entre
ces mesures est complexe. Dans certains cas, vous devez modifier les deux mesures. Dans
dautres, une seule modification suffit amliorer la situation.
Pour une optimisation planifie, vous devez dterminer clairement vos objectifs en termes
de temps de rponse et de dbit pour une charge de travail prcise. Faute de quoi, vous
risquez de perdre temps et argent pour lamlioration dun aspect secondaire du systme.
1-2
Une analyse claire des performances lies une charge de travail doit sappuyer sur un
modle dynamique et non statique de lexcution dun programme, comme illustr la
figure Hirarchie dexcution dun programme cidessous.
Matriel
Pipeline processeur
Cache
TLB
Mmoire
relle
Systme dexploitation
Instruction courante
Routine en cours de diffusion
Routines diffusables
Routines en attente/
Gestionnaires
dinterruption
Disque
Programmes
excutables
Hirarchie dexcution dun programme
Hirarchie matrielle
En gnral, le temps requis pour passer dun niveau matriel lautre correspond
approximativement au dlai de latence de niveau infrieur laps de temps entre lmission
dune requte et la rception des premires donnes.
Disques fixes
Lors de lexcution dun programme, lopration la plus coteuse en temps (hormis une
entre manuelle au clavier) est la rcupration de code ou de donnes stocks sur disque :
le contrleur de disque doit savoir quels blocs accder (temps dattente en file) ;
le bras du disque doit trouver le cyclindre concern (temps de recherche) ;
les ttes de lecture et dcriture doivent attendre le positionnement et la rotation des
blocs recherchs (dlai de rotation) ;
les donnes doivent tre transmises au contrleur (temps de transmission) et transfres
au programme dapplication (temps de traitement des interruptions).
Les oprations sur disque ont des origines diverses qui ne se limitent pas aux demandes
explicites dE/S effectues par un programme. Une grande part de loptimisation du systme
consiste souvent liminer les E/S disque inutiles.
Mmoire relle
La RAM est plus rapide que le disque, mais elle consomme davantage par octet. Les
systmes dexploitation tentent de conserver dans la RAM les codes et donnes
frquemment utiliss et de transfrer les donnes en sus sur le disque (ou du moins de ne
pas les transfrer initialement sur la RAM).
Cependant, la RAM nest pas ncessairement plus rapide que le processeur. Sur un
ESCALA, un dlai de latence RAM de plusieurs cycles processeurs scoule entre le
Performances
1-3
moment o le matriel dtecte la ncessit dun accs RAM et celui o les donnes ou les
instructions sont mises disposition du processeur.
Si laccs se fait sur une page de mmoire virtuelle stocke qui a t sur disque (ou
destine ltre), un dfaut de page se produit et le programme est suspendu jusqu ce
que la page soit lue depuis le disque.
Tampons TLB (Translation Lookaside Buffer)
La mmoire virtuelle est lun des moyens permettant de librer les programmeurs de tout
souci quant aux limites physiques du systme. Ils peuvent concevoir et coder des
programmes sans se proccuper de la capacit mmoire effective : cest le systme qui se
charge de traduire les adresses virtuelles des donnes et instructions du programme en
adresses relles, requises pour rcuprer ces donnes et instructions en RAM. Pour limiter
ces oprations de traduction, coteuses en temps, les adresses relles des pages de
mmoire virtuelle rcemment sollicites sont conserves dans une mmoire cache appele
tampon TLB (Translation Lookaside Buffer). Ainsi, tant que le programme sollicite un mme
jeu rduit de pages de donnes et de programmes, il est inutile de retraduire les adresses
chaque accs la RAM. En revanche, si le systme tente daccder une page de
mmoire virtuelle qui ne bnficie pas dune entre TLB (absence en TLB), des dizaines de
cycles processeurs (attente pour absence en TLB) sont gnralement ncessaires pour
traduire les adresses.
Mmoires cache
Pour limiter la frquence des dlais de latence RAM, les ESCALA sont quips de
mmoires cache destines aux instructions et aux donnes. Si linstruction ou les donnes
requises se trouvent dj en mmoire cache (prsence en cache), elles sont mises
disposition du processeur ds le cycle suivant (sans dlai dattente) ; sinon (absence en
cache), un temps dattente RAM se produit.
Certains systmes disposent de deux niveaux de mmoire cache, appels gnralement L1
et L2. Si une recherche est infructueuse sur le niveau L1, elle se poursuit sur le niveau L2.
En cas de nouvel chec, la recherche est reporte sur la RAM.
Sur les ESCALA, la taille et la structure des mmoires cache varient en fontion du modle
mais leur principe dexploitation est identique. Reportezvous lannexe C, Mmoire cache
et adressage pour une prsentation dtaille de larchitecture des mmoires cache et TLB pour information ou pour optimiser un programme de niveau infrieur.
Pipeline et registres
Larchitecture en pipeline, trs volutive, du ESCALA rend possible, dans certains cas, le
traitement simultan de plusieurs instructions. De vastes ensembles de registres gnraux
et de registres virgule flottante permettent de conserver une quantit considrable de
donnes de programme dans les registres, au lieu de les stocker et de les recharger
continuellement.
Les compilateurs doptimisation du ESCALA sont conus pour exploiter au mieux ces
fonctionnalits. Il est conseill de recourir aux compilateurs chaque gnration dun
programme excutable (mme court). Le manuel Optimization and Tuning Guide for XL
Fortran, XL C and XL C++ explique comment optimiser les programmes.
Hirarchie logicielle
Lors de son excution, un programme doit galement traverser diverses tapes dans la
hirarchie logicielle.
Programmes excutables
Lorsquun utilisateur demande lexcution dun programme, AIX accomplit un certain
nombre doprations pour rendre oprationnel le programme excutable sur disque. Tout
dabord, le systme recherche dans les rpertoires spcifis la variable denvironnement
courante PATH de lutilisateur la copie correcte du programme. Ensuite, le programme de
1-4
chargement du systme ( ne pas confondre avec lditeur de liens ld) rsout toutes les
rfrences externes du programme aux bibliothques partages.
Le systme dexploitation soumet la requte de lutilisateur sous forme dun processus,
cestdire dun ensemble de ressources, tel quun segment dadresse virtuelle prive,
comme le requiert tout programme excutable.
Sous AIX version 4.1, le systme dexploitation cre en outre automatiquement une routine
unique lintrieur de ce processus. Une routine est ltat dexcution actuel dune seule
instance dun programme. Sous AIX version 4.1, laccs au processeur et dautres
ressources est affect sur la base de routines et non de processus. Un programme
dapplication peut crer plusieurs routines au sein dun processus. Ces routines partagent
les ressources du processus dont elles dpendent.
Enfin, le systme se branche sur le point dentre du programme. Si la page de programme
contenant ce point dentre nest pas encore charge en mmoire (cas notamment dun
programme rcemment compil, excut ou copi), linterruption pour dfaut de page
provoque la lecture de la page.
Gestionnaires dinterruption
Lorsquun vnement externe se produit, le systme dexploitation en est averti par une
interruption de la routine en cours et le contrle est transfr un gestionnaire
dinterruptions. Au pralable, lessentiel de ltat matriel doit tre sauvegard pour que le
contexte de la routine puisse tre restaur une fois linterruption traite. Les gestionnaires
dinterruption appels pour la premire fois subissent tous les temps dattente lis au
passage dans la hirarchie matrielle (except ceux causs par des dfauts de page). Sauf
excution trs rcente du gestionnaire dinterruption (ou programmes impliqus
particulirement conomiques), il est peu probable que les codes ou les donnes soient
conservs dans les tampons TLB ou les mmoires cache.
Lorsque la routine interrompue est relance, son contexte dexcution (contenu des
registres par exemple) est logiquement restaur pour que la routine fonctionne
normalement. En revanche, le contenu des tampons TLB et des mmoires cache doit tre
reconstitu partir des demandes de programme qui ont suivi. Le gestionnaire
dinterruption et la routine dexcution subissent gnralement des temps dattente
importants du fait des absences en mmoire cache et en TLB rsultant de linterruption.
Routines en attente
Chaque fois quune requte soumise par un programme ne peut tre satisfaite
immdiatement (par exemple, opration dE/S explicite ou conscutive un dfaut de
page), la routine est mise en attente jusqu lexcution de la requte. Gnralement, des
temps dattente dans les tampons TLB et en mmoire cache sajoutent au temps requis
pour lexcution de la requte.
Routines diffusables
Une routine diffusable mais non encore excute est plus prjudiciable quutile. En effet, si
paralllement, des routines sont en cours dexcution, les lignes de mmoire cache (zones
du cache contenant les instructions et/ou les donnes de la routine voir annexe C :
Mmoire cache et adressage) peuvent tre rutilises et les pages de mmoire virtuelle
appeles, retardant davantage la diffusion de la routine.
Routine en cours de diffusion
Le programmateur choisit la routine dont la demande de processeur est la plus forte. (Les
considrations qui affectent ce choix sont discutes dans Performance du programmateur
de CPU AIX, page 2-2.) Une fois la routine diffuse, ltat logique du processeur au
moment de linterruption de la routine est restaur.
Instructions courantes
Sur les ESCALA, la plupart des instructions machine sont mme dexcuter un cycle
processeur unique, condition de ne pas rencontrer dabsence en cache ou en TLB. En
Performances
1-5
Dynamique systme
Crer des programmes individuels les plus efficaces possible ne suffit pas. Gnralement,
la personne responsable des performances na pas particip la cration des programmes
effectivement excuts. En outre, la plupart des niveaux de la hirarchie dcrits
prcdemment sont grs par une ou plusieurs parties dAIX. Dans tous les cas, ds lors
que des programmes dapplication ont t acquis et optimiss au mieux, le seul moyen
damliorer les performances globales du systme est dintervenir au niveau du systme.
Les principaux lments concerns sont :
Disques fixes
Mmoire relle
Routine en cours
E/S de
communication
1-6
Station de
travail
Multi
utilisateur
Serveur
Lorsquun seul systme traite des charges de travail de plusieurs types, utilisateurs et
analyste des performances doivent stre pralablement concerts sur les priorits relatives
des objectifs en cas de conflit entre diverses charges de travail.
Performances
1-7
Procdure doptimisation
Loptimisation est avant tout une question de gestion des ressources et de configuration du
systme. Voici les tapes de la procdure prconise :
1. Identification des charges de travail sur le systme.
2. Dfinition des objectifs :
a. Dtermination de la mthode dvaluation des rsultats.
b. Quantification et hirarchisation des objectifs.
3. Identification des ressources critiques limitant les performances du systme.
4. Rduction des contraintes de ressources critiques :
a. Utilisation de la ressource la plus approprie, si le choix est possible.
b. Rduction des contraintes de ressources critiques au niveau des programmes et des
fonctions systme.
c. Utilisation parallle des ressources.
5. Modification de laffectation des ressources en fonction des priorits :
a. Modification de la priorit ou des limites de ressources au niveau des programmes.
b. Modification de la configuration des paramtres de gestion des ressources systme.
6. Rptition des tapes 3 5 jusqu ce que les objectifs soient atteints (ou les ressources
satures).
7. Mise en uvre de ressources supplmentaires, le cas chant.
1-8
intresss, de justifier les mesures quil prend, etc. Perte de temps et dnergie :
loptimisation du travail de lanalyste laisserait beaucoup dsirer. Si lexploitation et la prise
en charge du systme sortent du cadre de lentreprise, il convient de recourir un accord
de service crit entre utilisateurs et fournisseurs pour sassurer que les objectifs de
performance et les priorits ont t clairement compris.
Performances
1-9
1-10
CPU: 90%
Disk: 70%
Memory 60%
La charge de ce systme est concentre sur la CPU. Si lon rgule la charge de faon
ramener le taux dutilisation de la CPU 45 %, il est probable que les performances soient
doubles. En contrepartie, la charge est limite au niveau des E/S, comme suit :
CPU: 45%
Disk: 90%
Memory 60%
Performances
1-11
Rpartition des
valeurs mesures
Le faible niveau de la courbe en son extrmit peut indiquer une mise en mmoire cache
optimale de faible probabilit ou rsulter de larrondissement des valeurs.
Un vnement externe rgulier peut entraner la prsence de deux maxima sur la courbe.
Exemple :
Valeur relle
1-12
Moyenne
Moyenne
La rpartition des mesures autour de la valeur relle nest pas alatoire. Il convient donc
dappliquer avec prcaution les tests classiques de statistiques par dduction. En outre,
dans certains cas, ni la moyenne, ni la valeur relle ne caractrisent correctement les
performances.
Voir aussi
CPU
Performances du programmateur de CPU sous AIX : traite de la gestion de la CPU
sous AIX.
Contrle et optimisation de la CPU : prsente les outils et techniques de gestion de la
CPU.
Mmoire
Performances du gestionnaire de mmoire virtuelle (VMM) : dcrit larchitecture de
gestion de mmoire AIX.
Contrle et optimisation de la mmoire : prsente les outils et techniques de gestion de
la mmoire.
Disques
Gestion AIX du stockage sur disque fixe : dcrit la structure du support disque fixe sous
AIX.
Prinstallation du disque : traite de la planification des informations sur les
performances relatives des disques fixes de ESCALA.
Contrle et optimisation des E/S disque : traite du contrle de la rorganisation et de
lextension du stockage sur disque.
Performances
1-13
1-14
Ce chapitre dcrit les composants AIX de gestion des ressources ayant le plus dimpact sur
les performances du systme et indique comment les optimiser. Pour des conseils
doptimisation sur une ressource spcifique, reportez-vous au chapitre correspondant.
Performances du programmateur CPU sous AIX
Performances du gestionnaire de mmoire virtuelle (VMM)
Performances de gestion AIX du stockage sur disque fixe
Pour des conseils doptimisation spcifiques, reportez-vous :
Contrle et optimisation de la CPU
Contrle et optimisation de la mmoire
Contrle et optimisation des E/S disque
2-1
2-2
FIFO
La routine est excute jusqu son terme, sauf si un blocage se produit. Elle
utilise la CPU ou une routine dote dune priorit suprieure devient
diffusable. Seules les routines priorit fixe peuvent tre excutes en mode
FIFO.
RR
OTHER
Les routines sont particulirement utiles pour les applications composes de plusieurs
processus asynchrones : ces applications peuvent soumettre au systme une moindre
charge ds lors quelles sont converties en structures multiroutines.
valeur nice
20 par dfaut
priorit de
base 40 par
dfaut
valeur nice
reste gale
20
priorit de
base
constante
40
Aprs
renice 5
Aprs
setpri()
50
pnalit CPU
valeur nice
15
priorit de
base
constante
40
Priorit fixe
de 50
valeur nice et
utilisation
CPU
sans objet
2-3
La priorit dune routine peut tre fixe via la sous-routine setpri. La commande ps permet
dafficher la priorit, la valeur nice et les valeurs dutilisation CPU court terme dun
processus.
Pour en savoir plus sur les commandes nice et renice, reportez-vous Contrle des
conflits pour CPU, page 6-20.
Pour en savoir plus sur le calcul de la pnalit CPU et la diminution des valeurs dutilisation
de la CPU court terme, reportez vous Optimisation du calcul des priorits dun
processus via schedtune, page 6-23.
routine aaa
routine bbb
priorit n+1
routine iii
routine jjj
priorit n+2
routine xxx
routine yyy
routine ccc
Voir aussi
Gestion des ressources AIX
Contrle et optimisation de la CPU
Commandes nice, ps et renice
Sous-routine setpri
Sous-routines getpriority, setpriority et nice.
2-4
2-5
Processus
Segment de texte de
programme (persistant)
Routine(s)
0 . . . . . .trames de page de 4 ko . . . . . . . . . n
Mmoire
relle
Espace de
pagination
Segment de bibliothque
partage (de travail)
Pages
touches
Fichier
excutable
E/S
relles
2-6
lespace de pagination du disque ( moins que son tat nautorise sa validation, cest--dire
son inscription lemplacement de fichier permanent).
Repagination
Il existe deux catgories de dfaut de page : dfaut de nouvelle page et dfaut de page
dj rfrence. Les dfauts qui relvent de la premire catgorie se produisent
lorsquaucun article de la page concerne na t rfrenc rcemment. Ceux de la
seconde catgorie concernent les pages dj rfrences qui le sont nouveau, mais ne
se trouvent pas en mmoire car elles ont t dplaces depuis (ventuellement sur disque).
Une politique idale de repositionnement de page serait dliminer entirement les dfauts
de page dj rfrence (en admettant que la mmoire relle soit suffisante) par le vol
systmatique des trames des pages qui ne sont pas appeles tre de nouveau
rfrences. Ainsi, le nombre de ces dfauts de page est inversement proportionnel
lefficacit de lalgorithme de repositionnement, du fait du vol continu des pages en mmoire
(rduisant dautant le volume global des E/S au profit des performances du systme).
Pour estimer la catgorie du dfaut de page, VMM tient un tampon historique des pages
rfrences o sont consigns les ID des pages ayant fait lobjet des N dfauts de page les
plus rcents (N tant le nombre maximum de trames que la mmoire peut contenir). Par
exemple, une mmoire de 16 Mo requiert un tampon de 4 096 entres pour lhistorique des
pages rfrences. Si lID de la page en entre figure dj dans le tampon, la page est
considre comme dj rfrence. VMM value galement les taux de dfauts de page
rfrence en mmoire de calcul et en mmoire de fichier sparment, en tenant un
compte distinct pour chaque type de mmoire. Ces taux sont multiplis pas 0,9 chaque
excution de lalgorithme pour donner une image de lactivit rcente de repagination plus
fidle que lhistorique.
Seuils VMM
Plusieurs seuils numriques dfinissent les objectifs de VMM. Lorsquun de ces seuils est
dpass, VMM prend les mesures ncessaires pour ramener ltat de la mmoire
lintrieur des limites dfinies. Cette section traite des seuils modifiables par ladministrateur
systme via la commande vmtune.
Le nombre de trames de page figurant dans la liste des disponibilits est contrl par les
paramtres :
minfree
maxfree
Taille maximale que la liste des disponibilits peut atteindre sous leffet
du vol de pages effectu par VMM. Il peut arriver que la liste dpasse
cette taille, lorsque les processus se terminent et librent les pages des
segments de travail ou que des fichiers possdant des pages en
mmoire sont supprims.
VMM tente de maintenir la liste une taille au moins gale minfree. Si, du fait des dfauts
de page et/ou des requtes systme, la taille descend en-de de minfree, lalgorithme de
repositionnement de page sexcute. Il est ncessaire de respecter une taille minimale
(valeur minfree, par dfaut) pour plusieurs raisons. Par exemple, lalgorithme de
prrecherche squentielle dAIX requiert plusieurs trames simultanment pour chaque
processus effectuant une lecture squentielle. De mme, VMM doit veiller ce que
2-7
suffisamment despace soit disponible pour charger une page ncessaire la libration
dune trame de page, faute de quoi un blocage du systme risque de se produire.
Les seuils suivants sont exprims en pourcentages. Ils reprsentent la fraction de la
mmoire relle totale occupe par des pages de fichiers (nappartenant pas un segment
de mmoire de calcul).
minperm
maxperm
Lorsque le pourcentage de mmoire relle occupe par les pages de fichier est compris
entre minperm et maxperm, VMM ne vole gnralement que les pages de fichiers, mais si
le taux de repagination des pages de fichiers est suprieur celui des pages de mmoire
de calcul, il vole galement ces dernires.
Lalgorithme de repositionnement de page sassure que les pages de mmoire de calcul
sont correctement traites. Par exemple, la lecture squentielle dun fichier de donnes
volumineux stock en mmoire ne doit pas entraner la perte de pages de texte dun
programme susceptibles dtre sollicites court terme. Par le truchement des seuils et des
taux de repagination, lalgorithme contrle le traitement des deux types de page (en
accordant une lgre prfrence aux pages de mmoire de calcul).
2-8
>
1
h
Plus ce rapport augmente, plus le risque demballement est grand. La valeur par dfaut de
h est 6, ce qui signifie quil y a risque demballement du systme lorsque le rapport entre le
nombre de pages crites et le nombre de pages voles est suprieur 17 %. Une valeur de
h infrieure (pouvant aller jusqu 0, le test tant effectu sans effectuer une division relle)
augmente le seuil de dtection du phnomne demballement. Autrement dit, le systme est
autoris sapprocher davantage des conditions demballement avant que ne se dclenche
linterruption des processus. Le rapport ci-dessus a t choisi car il est relativement peu
dpendant de la configuration. Quels que soient la capacit de pagination du disque et le
nombre de mgaoctets de mmoire installe sur le systme, un rapport faible diminue les
risques demballement. Un rapport avoisinnant la valeur 1 signifie un emballement certain.
Tout laps de temps pendant lequel la mmoire nest pas surcharge peut tre dfini comme
priode sre.
Paramtre w
Le paramtre w contrle le nombre dintervalles de 1 seconde durant lesquels le rapport
ci-dessus doit tre infrieur 1/h avant ractivation des processus interrompus. La valeur
2-9
par dfaut, 1 seconde, est proche de la valeur minimale admise (zro). Une valeur de
1 seconde tente de ractiver les processus ds expiration du dlai de scurit de
1 seconde. Si une valeur plus leve est attribue w, les temps de rponse pour les
processus interrompus risquent dtre inutilement longs, le processeur tant inactif faute de
processus.
Paramtre p
Le paramtre p dtermine si un processus peut tre interrompu. Analogue au paramtre h,
le paramtre p permet de dfinir un seuil applicable au rapport entre deux mesures
concernant tous les processus : le nombre de pages dj rfrences (dfini la section
relative lalgorithme de repositionnement de page) et le nombre de dfauts de page
cumuls par le processus durant la dernire seconde. Un rapport lev indique que le
processus semballe. Un processus est candidat la suspension (soit parce quil semballe
soit parce quil contribue lemballement de lensemble) si :
nombre de pages rfrences au cours de la dernire seconde
nombre de dfauts de page au cours de la dernire seconde
>
1
p
Par dfaut, p prend la valeur 4, ce qui signifie quun processus est considr comme
semballant (et donc candidat la suspension) ds lors que le rapport entre les pages
rfrences et les dfauts de page cumuls au cours de la dernire seconde est suprieur
25 %. Une valeur faible de p (pouvant atteindre zro, le test neffectuant pas rellement la
division) autorise le systme sapprocher davantage des conditions demballement avant
que ne se dclenche linterruption des processus. La valeur zro signifie quaucun
processus ne peut tre interrompu par le systme de contrle de charge mmoire.
Paramtre m
Le paramtre m dtermine la limite infrieure du degr de multiprogrammation. Le degr de
multiprogrammation est dfini comme le nombre de processus actifs (non suspendus).
(Chaque processus compte pour un, quel que soit le nombre de routines quil excute.) Ne
sont pas comptabiliss le processus noyau et les processus priorit fixe infrieure
60 (1), mmoire fixe (2) ainsi que les vnements en attente (3), aucun processus de
cette catgorie ne pouvant tre interrompu. La valeur 2 par dfaut garantit quau moins
deux processus utilisateur sont toujours activables. Une valeur infrieure dem, lorsquelle
est autorise, indique que par moments un seul processus utilisateur peut tre actif. Des
valeurs suprieures de m retirent au systme de contrle de charge la possibilit
dinterrompre des processus. Ce paramtre dpend fortement de la configuration et de la
charge. Une valeur trop faible de m dans une configuration tendue dclenche trop
aisment la suspension des processus, une valeur trop leve de m dans une configuration
rduite ne confre pas au systme de contrle une sensibilit suffisante. La valeur 2
(par dfaut) est le meilleur compromis pour une configuration rduite mais risque dtre trop
faible pour une configuration plus tendue, pouvant et devant prendre en charge des
dizaines de processus pour exploiter les ressources disponibles.
Par exemple, si une configuration et une charge donnes peuvent grer lexcution
simultane denviron 25 processus, mais quau-del, il y a risque demballement, il est
conseill de fixer 25 la valeur de m.
Paramtre e
Chaque fois quun processus interrompu est ractiv, il est exempt de toute interruption
pendant une priode de e secondes. Ce laps de temps est mnag pour assurer que le
cot lev (en E/S disque) que reprsente le chargement des pages dun processus
interrompu est compens par une progression raisonnable des processus. La valeur par
dfaut de e est 2 secondes.
Une fois par seconde, le programmateur (processus 0) examine toutes les grandeurs cites
ci-dessus, collectes pendant lintervalle dune seconde prcdent. Cet examen lui permet
de dterminer si les processus doivent tre suspendus ou activs. Tous les processus
dsigns aptes tre suspendus par les paramtres p et e sont marqus comme tels.
2-10
Lorsquun de ces processus reoit la CPU en mode utilisateur, il est interrompu (sauf si la
suspension rduit moins de m le nombre de processus actifs). Le critre de mode
utilisateur est appliqu pour empcher quun processus soit interrompu alors que des
oprations systme critiques sont excutes sur son compte. Si les conditions
demballement perdurent au cours des intervalles dune seconde suivants, les autres
processus rpondant aux critres de p et e sont marqus pour tre interrompus. Lorsque le
programmateur dtermine que les conditions dintervalle de scurit sont remplies, chaque
seconde, un certain nombre de processus interrompus sont remis dans la file dexcution
(ractivs).
Les processus interrompus sont ractivs : (1) par ordre de priorit, (2) par ordre
dinterruption. Ils ne sont pas tous activs en mme temps. Leur nombre est calcul selon
une formule qui tablit le nombre de processus actifs ce moment-l et en ractive 1/5me
ou augmente selon une progression rgulire croissante le nombre minimum (cest loption
la plus leve qui est choisie). Par cette stratgie prudente, laccroissement du degr de
multiprogrammation est ralis par tranche denviron 20 % par seconde. Ainsi, la
ractivation seffectue un rythme relativement lent pendant la premire seconde qui suit la
priode de scurit, puis un rythme plus soutenu au cours des secondes suivantes. Si la
surcharge mmoire se reproduit pendant la ractivation, lopration sinterrompt et les
processus marqus pour la ractivation sont de nouveau marqus comme tant
interrompus. Les autres processus sont interrompus conformment aux rgles prcdentes.
Les six paramtres de lutilitaire de contrle de charge mmoire peuvent tre dfinis par
ladministrateur systme via la commande schedtune. Les techniques doptimisation de
lutilitaire sont dcrites au chapitre 7 : Contrle et optimisation de la mmoire.
2-11
2-12
...
/op/nomfichier
Fichier
/op
... p
...
hd11
...
om m im
FS
hd2 LV
LP
PP
o
om m im
om m im
PV
/dev/hdisk0
/dev/hdisk2
/dev/hdisk1
autre VG
VG
root vg
2-13
Les volumes logiques peuvent assurer certaines fonctions systme, telle la pagination. Sils
renferment des donnes systme ou utilisateur ou des programmes, ils disposent chacun
dun systme de fichiers journaliss (JFS) unique. Ce dernier est compos dun pool de
blocs de la taille dune page (4 096 octets). Lorsque des donnes sont inscrites dans un
fichier, un ou plusieurs blocs lui sont affects. Les blocs peuvent tre contigus ou non (et
contigus ou non ceux dj affects au fichier).
Sous AIX version 4.1, un systme de fichiers donn peut tre dfini avec une taille de
fragment infrieure 4 096 octets. La taille de fragment est de 512, 1 024 ou 2 048 octets.
Ce qui permet de stocker plus efficacement les fichiers peu volumineux.
La figure Organisation des donnes sur disque fixe (sans option miroir) illustre ce qui peut
se produire lorsquun systme de fichiers na pas t rorganis depuis longtemps. Le
fichier /op/filename est rparti sur un grand nombre de blocs physiquement distants les uns
des autres : la lecture squentielle de ce fichier exige plusieurs oprations de recherche,
coteuses en temps.
Au niveau conceptuel, un fichier AIX est une chane contigu et squentielle doctets, mais
la ralit physique est parfois bien diffrente : le fichier peut avoir t fragment la suite
de multiples extensions des volumes logiques ou doprations daffectation/ libration/
raffectation au sein du systme de fichiers. Un systme de fichiers est dit fragment
lorsque son espace disponible est compos de multiples parcelles qui rendent impossible
lcriture dun nouveau fichier sur des blocs contigus.
Laccs aux fichiers implants sur un systme de fichiers trs fragment exige de multiples
oprations de recherche et induit des temps de rponse en E/S bien suprieurs, du fait des
dlais de recherche. Par exemple, laccs squentiel demande plus doprations de
recherche si le fichier est dispers sur des parcelles physiquement loignes que sil est
concentr sur une ou quelques parcelles contigus. Il en va de mme pour laccs alatoire
un fichier.
Limpact de la dispersion dun fichier sur les performances dE/S est moindre si le fichier est
en mmoire tampon. Lorsquun fichier est ouvert sous AIX, il est mapp un segment de
donne persistant en mmoire virtuelle. Ce segment joue le rle de tampon virtuel, les blocs
du fichier renvoient directement aux pages du segment. VMM gre les pages de segment
en lisant la demande les blocs du fichier qui y sont contenus (au fur et mesure de leur
ouverture). Il arrive que VMM rcrive une page sur le bloc correspondant du fichier sur
disque ; mais, en gnral, il conserve en mmoire les pages rcemment appeles. Ces
pages restent donc plus longtemps en mmoire et laccs des fichiers logiques aux blocs
correspondants seffectue sans passer par le disque physique.
A un certain stade, lutilisateur ou ladministrateur systme peut dcider de rorganiser la
position des fichiers dans les volumes logiques et la position des volumes logiques dans les
volumes physiques, de faon rduire la fragmentation et rpartir plus uniformment la
charge totale des E/S. Pour en savoir plus sur la dtection et la correction des problmes
lis la rpartition sur disque et la fragmentation, reportezvous Contrle et
optimisation des E/S disque, page 8-1.
2-14
minpgahead
maxpgahead
Ecriture diffre
Pour accrotre les performances dcriture, limiter le nombre en mmoire de pages de
fichier modifies, rduire la charge du systme et minimiser la fragmentation du disque, le
systme de fichiers divise chaque fichier en partitions de 16 ko. Les pages dune partition
donne ne sont inscrites sur le disque que lorsque le programme a crit le premier octet de
la partition suivante. Ce nest qu ce stade que le systme de fichiers force lcriture des
quatre pages modifies de la premire partition sur le disque. Les pages de donnes
restent en mmoire jusqu ce que leur trame soit rutilise, stade partir duquel aucune
autre opration dE/S nest requise. Si un programme accde lune des pages avant que
les trames ne soient rutilises, aucune E/S nest ncessaire.
Sil reste beaucoup de page modifies non rutilises en mmoire, le dmon sync les crit
sur le disque, ce qui peut entraner une utilisation anormale du disque. Pour rpartir plus
efficacement les activits dE/S par rapport la charge de travail, vous pouvez activer
lcriture diffre alatoire pour indiquer au systme le nombre de pages conserver en
mmoire avant de les crire sur disque. Le seuil dcriture diffre alatoire est dfini sur la
base des fichiers. Cette action entrane lcriture des pages sur disque avant lexcution du
dmon sync ; les E/S sont ainsi rparties plus uniformment.
Vous pouvez modifier la taille des partitions dcriture diffres et le seuil dcriture diffre
alatoire via la commande vmtune.
2-15
Pile de disques
Une pile de disques est un ensemble de disques grs comme un tout. Plusieurs
algorithmes de gestion engendrent divers degrs de performances et/ou dintgrit des
donnes. Ces algorithmes de gestion sont identifis par diffrents niveaux RAID.
(RAID signifie redundant array of independent disks.) Les niveaux RAID sous les
versions 3.2.5 et 4 dfinis dans larchitecture sont les suivants :
RAID0
Les donnes sont inscrites sur des units physiques conscutives, avec un
nombre fixe de blocs de 512 octets par criture. Cette technique est comparable
la technique de rpartition en bandes des donnes sur disque : elle offre les
mmes caractristiques au niveau de lintgrit des donnes que des units de
disque indpendantes classiques. Autrement dit, lintegrit des donnes dpend
entirement de la frquence et de la validit des sauvegardes. Ce niveau est
analogue la fonction de rpartition en bande dcrite Performances et
rpartition des volumes logiques, page 8-15.
RAID1
Les donnes sont rparties en bandes sur les units, comme pour le niveau
RAID0, mais la moiti des units sont utilises comme units miroir. RAID1
rpond certains problmes dintgrit et de disponibilit pouvant survenir
avec RAID0 en cas de dfaillance dune unit unique, mais noffre pas plus de
solutions que RAID0 en cas de dfaillance dune ou plusieurs units. Des
sauvegardes consciencieuses sont indispensables. Ce niveau est analogue
la fonction miroir des volumes logiques propose par le gestionnaire de
volumes logiques.
RAID3
Les donnes sont rparties en bandes octet par octet sur un ensemble dunits
de donnes, une unit de parit distincte contenant un octet de parit pour
chaque position doctet dans les units de donnes. En cas de dfaillance
dune unit unique, son contenu est reconstitu sur la base de loctet de parit
et des octets de donnes restants. Dans cette technique, lunit de parit
devient un goulot dtranglement en terme de performances : une criture doit
y tre effectue chaque criture sur un des autres disques.
RAID5
Les donnes sont rparties bloc par bloc (de 512 octets), mais des portions dun
certain nombre dunits (pas forcment toutes) sont rserves aux informations
de parit. Ce qui alourdit encore lcriture des informations de parit.
Les units RAID doivent tre considres comme une solution en terme dintgrit et de
disponibilit, mais non de performances. Les configurations RAID tendues sont
gnralement limites par le fait que chaque RAID est raccord une carte SCSI unique.
Du point de vue des performances, la prise en charge dun nombre donn dunits de
disque est plus efficace avec des units RAID raccordes plusieurs cartes SCSI quavec
une seule unit RAID de grande taille.
2-16
Rpartir la charge pour allger le travail, tel est le postulat qui a conduit au dveloppement
des systmes multiprocesseur. A un moment donn, la vitesse de traitement dun
processeur se heurte une limite technologique. Si un seul processeur ne parvient pas
grer correctement la charge du systme, une solution possible est de multiplier les
processeurs.
Le succs de cette solution dpend bien entendu de lingniosit de ses concepteurs, et
encore faut-il que la charge de travail sy prte : sil est vident que multiplier les employs
rpondant un numro vert accrot lefficacit du service, multiplier les conducteurs dune
automobile ne prsente aucun intrt.
Pour que la migration dun systme monoprocesseur en systme multiprocesseur se
traduise par lamlioration de ses performances, les conditions suivantes doivent tre
runies :
La charge de travail est limite par la vitesse de traitement et sature lunique processeur
du systme.
La charge de travail contient plusieurs lments gourmands en temps processeur
(transactions, calculs complexes, etc.) qui peuvent tre traits simultanment et de
manire indpendante.
Le processeur existant ne peut pas tre mis niveau et aucun processeur seul noffre la
vitesse de traitement ncessaire.
Plusieurs lments (base de donnes centralise, etc.) incitent rpartir la charge de
travail entre plusieurs systmes monoprocesseur.
Dune manire gnrale, il est prfrable dopter pour une solution mettant en oeuvre un
seul processeur lorsque cela est possible car lassociation de plusieurs processeurs pose
des problmes de performances, ngligeables, voire inexistants, dans les systmes
monoprocesseur. En particulier, si la condition 2 nest pas remplie, les performances dun
systme multiprocesseur peuvent tre moindres que celles dun systme monoprocesseur.
Bien que les applications unifilaires inchanges fonctionnent en gnral correctement dans
un environnement multiprocesseur, leurs performances sen trouvent souvent modifies de
manire imprvue. La mise en place dun systme multiprocesseur peut amliorer le dbit
dun systme et parfois raccourcir le temps dexcution dapplications multifiles complexes,
mais il rduit rarement le temps de rponse de chaque commande unifilaire.
Pour optimiser les performances dun systme multiprocesseur, il convient de connatre la
dynamique du systme dexploitation et du fonctionnement du matriel, spcifique des
environnements multiprocesseurs.
Introduction au multitraitement
3-1
3-2
garantir cette flexibilit. Un systme symtrique fait cependant apparatre les limites du
multitraitement dune charge de travail.
La famille ESCALA ne contient que des systmes multiprocesseur symtriques, dont la
figure Systme multiprocesseur symtrique donne un exemple. AIX version 4.1 ne prend
en charge que ce type de systme. Dautres types de systme peuvent prsenter une
configuration diffrente de leur mmoire cache.
Cache L1
Processeur 1 sur processeur
Cache L2 1
Cache L1
Processeur 2 sur processeur
Cache L2 2
Cache L1
Processeur 3 sur processeur
Cache L2 3
Cache L1
Processeur 4 sur processeur
Cache L2 4
Mmoire
relle
Units
E/S
Bien que les systmes multiprocesseur ESCALA soient techniquement symtriques, les
logiciels y introduisent un peu dasymtrie. Au dpart, pendant lamorage, un seul
processeur a le contrle. Le premier processeur dmarr est appel processeur matre.
Afin que les logiciels crits par lutilisateur continuent de fonctionner correctement lors de la
transformation de lenvironnement monoprocesseur en environnement multiprocesseur, les
pilotes dunit et les extensions de noyau qui ne sont pas explicitement conus pour un
systme multiprocesseur sont contraints de sexcuter uniquement sur le processeur
matre. Cette contrainte sappelle canalisation.
Introduction au multitraitement
3-3
autres routines sont susceptibles de modifier les lignes de la mmoire cache de cette
routine, ce qui augmente le dlai de latence de la mmoire lorsque la routine obtient
finalement le dverrouillage de la donne et redevient diffusable.
Le noyau AIX contient un grand nombre de donnes partages et doit donc procder la
srialisation des donnes en interne. Cela peut provoquer des retards de srialisation, y
compris dans les applications qui ne partagent pas de donnes avec dautres programmes,
car les fonctions du noyau utilises par lapplication doivent srialiser les donnes
partages du noyau.
Granularit du verrouillage
Un programmeur qui travaille dans un environnement multiprocesseur doit dcider du
nombre de verrous distincts crer pour les donnes partages. Si un seul verrou doit
srialiser lensemble des donnes partages, le risque de conflit daccs est relativement
lev. Si chaque donne dispose dun verrou, le risque de conflit est relativement faible.
Cependant, toute demande supplmentaire de verrouillage ou de dverrouillage utilise du
temps processeur et lexistence de plusieurs verrous peut provoquer un blocage. La figure
Blocage prsente le cas le plus simple de blocage : la routine 1 a obtenu le dverrouillage
de la donne A et attend le dverrouillage de la donne B et la routine 2 a obtenu le
dverrouillage de la donne B et attend le dverrouillage de la donne A. Aucun des deux
programmes ne peut obtenir le dverrouillage qui mettrait fin au blocage. Pour viter les
blocages, on tablit gnralement un protocole par lequel tous les programmes qui utilisent
un ensemble de verrous doivent toujours obtenir le dverrouillage dans le mme ordre.
Routine 1
Noyau
verrou A
verrou
accord
.
.
.
verrou B
dverr. A
verrou
accord
verrou
attente
verrou
attente
Routine 2
verrou B
.
.
.
verrou A
dverr. B
Blocage
3-4
Introduction au multitraitement
3-5
Dbit
Le dbit dun systme SMS dpend principalement des lments suivants :
Une rpartition constamment trs bonne de la charge de travail. Davantage de routines
diffusables que de processeurs certains instants ne compense pas linactivit des
processeurs dautres.
Le nombre de conflits daccs.
Le degr daffinit avec un processeur.
Temps de rponse
Le temps de rponse dun programme dans un systme SMS est fonction des lments
suivants :
Le niveau de rpartition des processus du programme. Si celui-ci a en permanence
plusieurs routines diffusables, son temps de rponse samliorera probablement dans un
environnement SMS. Sil est constitu dune seule routine, son temps de rponse sera
au mieux comparable celui dun systme monoprocesseur quivalent.
Le nombre de conflits daccs entre plusieurs instances dun programme ou entre
plusieurs programmes diffrents utilisant les mmes verrous.
Le degr daffinit avec un processeur. Si chaque diffusion dun programme a lieu vers
des processeurs diffrents qui ne disposent pas des lignes de mmoire cache du
programme, celui-ci risque de sexcuter plus lentement que dans un systme
monoprocesseur comparable.
3-6
Adaptation
correcte au
SMS
Adaptation
totale au SMS
Introduction au multitraitement
3-7
total
nombre
nombre
nombre
nombre
de
de
de
de
de
routines
routines
routines
routines
routines
dans le systme,
qui attendent une entre-sortie,
qui attendent une ressource partage,
qui attendent les rsultats dune autre routine,
en veille leur demande.
Une charge de travail peut faire lobjet dun multitraitement si elle prsente en permanence
autant de routines diffusables quil y a de processeurs dans le systme. Notez quil ne sagit
pas du nombre moyen de routines diffusables. Si le nombre de routines diffusables est gal
zro la moiti du temps, et double de celui de processeurs le reste du temps, le nombre
moyen de routines diffusables est effectivement gal au nombre de processeurs, mais tous
les processeurs ne sont actifs que la moiti du temps.
Augmenter le multitraitement de la charge de travail implique :
lidentification et la suppression des goulets dtranglement qui obligent les routines
attendre
laugmentation du nombre total de routines dans le systme.
Ces deux solutions ne sont pas indpendantes. Si un grand goulet dtranglement se forme
sur le systme, laugmentation du nombre de routines de la charge de travail existante qui
passent dans le goulet dtranglement va accrotre la proportion de routines en attente. Sil
ny a pas de goulet dtranglement, laugmentation du nombre de routines peut en crer un.
3-8
Monoprocesseur
Multiprocesseur
2 voies
Traitement
Attente E/S
(ou verrou sur SM)
Verrou ferm
Introduction au multitraitement
3-9
Aug. vit
t
xt + (x1)t
n
1
x+x
n
1
x
3-10
Position dans la file dattente La position dune routine dans la file dattente des routines
du programmateur
diffusables reflte un certain nombre de conditions de
priorit.
Politique de planification
Introduction au multitraitement
3-11
Porte concurrentielle
Contrle au niveau du
processus
3-12
Introduction au multitraitement
3-13
3-14
4-1
4-2
Le nombre dutilisateurs par machine et le nombre total dutilisateurs dans le cas dune
application multiutilisateur. Cette description doit indiquer les heures de connexion de ces
utilisateurs, ainsi quune valuation du temps de saisie au clavier, dattente de lexcution
des requtes et des temps de rflexion. Vous pouvez tenter de savoir si les temps de
rflexion varient systmatiquement en fonction de la requte suivante ou prcdente.
Les hypothses de lutilisateur sur les machines prvues. Sil pense une machine en
particulier, il vous faut le savoir ds prsent. De mme, sil a des exigences en terme
de type, de taille, de cot, demplacement, dinterconnexion ou dautres variables
susceptibles de limiter votre marge de manuvre, vous devez intgrer ces exigences
vos objectifs. Lestimation des rsultats ne sera sans doute pas ralise sur le systme
o le programme a t dvelopp, test ou install initialement.
4-3
Accs disque
Mmoire relle
Trafic rseau
(LAN)
Les sections suivantes indiquent comment dterminer ces valeurs dans les divers cas de
figure exposs prcdemment.
4-4
tty:
tin
1.2
Disks:
hdisk1
hdisk2
hdisk3
hdisk4
hdisk11
hdisk5
hdisk6
hdisk7
hdisk8
hdisk9
hdisk0
hdisk10
tout
cpu:
1.6
% tm_act
Kbps
0.0
0.0
0.0
0.0
0.0
0.0
0.0
0.0
0.0
0.0
0.0
0.0
0.0
0.0
3.0
11.2
1.8
4.8
0.0
0.0
2.0
4.8
0.0
0.0
% user
% sys
% idle
60.2
10.8
23.4
tps
Kb_read
Kb_wrtn
0.0
0
0
0.0
0
0
0.0
0
0
0.0
0
0
0.0
0
0
0.0
0
0
0.0
0
0
0.8
8
48
1.2
0
24
0.0
0
0
1.2
24
0
0.0
0
0
% iowait
5.6
Pour mesurer la mmoire, utilisez svmon. La commande svmon G fait le point sur
lutilisation globale de la mmoire. Le rsultat statistique est exprim en pages de 4 ko :
$ svmon G
m e m o r y
size inuse free pin
24576 24366
210 2209
i n u s e
work pers clnt
15659 6863 1844
p i n
work pers
2209
0
p g s p a c e
clnt
size inuse
0
40960 26270
xxxxxx
PID PPID
28031 51445
51445 54772
54772 6864
$ svmon P 51445
Pid
51445
C
STIME
15 14:01:56
1 07:57:47
0 07:57:47
TTY
pts/9
pts/9
TIME CMD
0:00
ps fu xxxxxx
0:00
ksh
0:02
rlogind
Command
ksh
Inuse
1668
Pin
2
Pgspace
4077
Pid: 51445
Command: ksh
Segid
8270
4809
9213
8a1
Type
pers
work
work
pers
Description
Inuse
/dev/fslv00:86079
1
shared library
1558
private
37
code,/dev/hd2:14400
72
Pin
0
0
2
0
Pgspace
0
4039
38
0
Address Range
0..0
0..4673 :60123..65535
0..31 : 65406..65535
0..91
Le cot de cette instance de ksh est imputable au segment de travail (9213) dont 37 pages
sont en cours dutilisation. Le cot des 1558 pages de la bibliothque partage et celui des
72 pages de lexcutable ksh est rparti respectivement sur lensemble des programmes et
des instances de ksh.
Si vous estimez que la taille du systme de 96 Mo est excessive, utilisez la commande
rmss pour rduire la taille effective de la machine et reprenez les mesures de la charge.
Si les oprations de pages augmentent sensiblement ou que le temps de rponse sallonge,
cela signifie que vous avez trop rduit la mmoire. Appliquez cette mthode jusqu ce que
vous trouviez la taille la plus approprie lexcution de la charge dans les meilleures
conditions. Pour en savoir plus sur cette mthode, reportez-vous Estimation de la
mmoire requise via rmss, page 7-6.
4-5
input
(Total)
output
packets errs packets errs colls
35608011 213488 30338882
0
0
300
0
426
0
0
272
2
190
0
0
231
0
192
0
0
143
0
113
0
0
408
1
176
0
0
La premire ligne indique le trafic cumul sur le rseau depuis le dernier amorage. Chaque
ligne qui suit fournit lactivit enregistre lors des 5 secondes prcdentes.
Mesure de la charge totale sur un systme actif
La mthode utiliser est analogue celle applique aux systmes ddis, mais vous
devez, dans ce cas, veiller prserver les performances du systme. Il faut savoir, par
exemple, que le cot dexcution de la commande svmon G est trs lev. Lannexe E,
Outils de performance, donne une estimation des cots, en termes de ressources, des
outils de performances les plus couramment utiliss.
Loutil le moins coteux est probablement vmstat, qui fournit des informations sur la
mmoire, les oprations dE/S et lutilisation du processeur, en un seul rapport. Si les
intervalles entre deux rapports vmstat restent raisonnablement longs (10 secondes), le cot
moyen dutilisation de cette commande est faible. Pour plus de dtails sur lutilisation de
vmstat, reportez-vous Identification des ressources limitatives, page 12-23.
Mesure dune charge partielle sur un systme actif
Une telle mesure est intressante lorsque vous souhaitez transfrer ou dupliquer une partie
de la charge pour lexcuter sur un autre systme. Le systme tant en service, votre
intervention doit laffecter le moins possible. Il vous faut analyser la charge en dtail pour
distinguer la partie qui vous intresse et dterminer les lments communs. Il peut sagir :
du programme ou de quelques programmes associs,
du travail effectu par certains utilisateurs du systme,
du travail provenant de certains terminaux.
Selon le critre choisi, utilisez lune des commandes :
ps ef | grep pgmname
ps fuusername, . . .
ps ftttyname, . . .
pour identifier les processus qui vous intressent et de faire le point sur leur consommation
en temps CPU. Pour valuer loccupation mmoire de ces processus, vous pouvez utiliser
la commande svmon (judicieusement !).
4-6
tprof
svmon
vmstat s
4-7
Mmoire relle
Comptez (trs approximativement) 350 lignes de code par page de texte programme.
Cest--dire environ 12 octets par ligne. Noubliez pas que le style de code et les
options du compilateur peuvent multiplier ou diviser le rsultat par deux.
Cette variation concerne les pages impliques dans le scnario type.
Si, occasionnellement, des sous-routines excutes sont insres la fin de
lexcutable, les pages concernes ne sollicitent gnralement pas la mmoire relle.
Les rfrences des bibliothques partages autres que libc.a naugmentent la
consommation mmoire que dans la mesure o ces bibliothques ne sont pas
partages par dautres programmes ou instances du programme considr. Pour
mesurer la taille des bibliothques, crivez un programme simple, dexcution longue
qui y fait rfrence, et appliquez svmon P au processus.
valuez la capacit de stockage requise par les structures de donnes identifies
dans le programme. Arrondissez le rsultat la page la plus proche.
Dans une excution courte, chaque opration dE/S disque utilisera une page de
mmoire. Supposons que la page doit dj tre disponible. Ne supposez pas que le
programme va attendre la libration dune autre page du programme.
E/S disque
Pour les E/S squentielles, chaque lot de 4 096 octets lus ou crits gnre une
opration dE/S, sauf si certaines pages du fichier sont encore en mmoire du fait
dune utilisation rcente.
Pour les E/S alatoires, chaque accs, mme limit, une page diffrente de
4 096 octets gnre une opration dE/S, sauf si certaines pages du fichier sont
encore en mmoire du fait dune utilisation rcente.
Dans des conditions de laboratoire, chaque lecture ou criture squentielle dune page
de 4 ko dans un fichier volumineux mobilise environ 140+/20 microsecondes de
temps CPU. Chaque lecture ou criture alatoire dune page de 4 ko mobilise environ
350+/40 microsecondes de temps CPU. Rappelons quen pratique les fichiers ne
sont pas ncessairement stocks squentiellement sur disque, mme sils sont crits
et lus squentiellement dans le programme. Par consquent, un accs disque
reprsente en ralit un cot CPU gnralement plus proche de celui dun accs
alatoire que dun accs squentiel thorique.
E/S de communication
Les E/S disque sur des systmes de fichiers monts distance, de type NFS ou AFS,
sont excutes sur le serveur. Dans ce cas, il y a davantage de demandes mmoire et
CPU ct client.
Les appels de procdure distance (RPC) de tous types constituent une bonne part
de la charge CPU. Cest pourquoi il est conseill de les rduire au minimum, de
diffrer leur traitement, den faire un prototype et de les mesurer lavance.
Dans des conditions de laboratoire, chaque lecture ou criture NFS dune page de
4 ko mobilise environ 670+/30 microsecondes de temps CPU client.
Chaque lecture ou criture alatoire NFS dune page de 4 ko mobilise environ
1000+/200 microsecondes de temps CPU client.
4-8
4-9
4-10
4-11
SecSub1
Page 2
ErrSub1
PriSub2
SecSub2
Page 3
ErrSub2
PriSub3
PriSub2
Page 2
PriSub3
SecSub1
SecSub2
Page 3
ErrSub1
ErrSub2
Regroupement rfrentiel
Le second schma propose une version amliore du programme o les sous-routines
principales sont regroupes, les fonctions peu sollicites places ensuite et les
sous-routines derreur, ncessaires mais peu utilises, places en fin de programme. Les
fonctions les plus courantes peuvent prsent tre traites en une seule lecture disque et
une seule page de mmoire au lieu des trois du schma prcdent.
Rappelons que le regroupement rfrentiel et la partie active sont dfinis par rapport au
temps. Si un programme fonctionne par tape prenant chacune un certain temps et utilisant
diffrentes sous-routines, il est conseill de limiter au minimum la partie active chaque
tape.
4-12
Registres et pipeline
En gnral, laffectation et loptimisation de lespace de registre, ainsi que le maintien des
donnes dans le pipeline sont la charge des compilateurs. En revanche, il incombe au
programmeur dviter toute structure en contradiction avec les mcanismes doptimisation
du compilateur. Par exemple, si vous insrez une sous-routine dans lune des boucles
critiques, le compilateur prfrera sans doute lincorporer dans la partie principale du
programme pour limiter le temps dexcution. Or, si cette sous-routine a t place dans un
module .c diffrent, le compilateur ne pourra la dplacer.
4-13
En fait, le modle naturel daccs des oprations sur les ranges/colonnes gnre un
mcanisme demballement de la mmoire : il y a accs une chane dlments de taille
suprieure au cache, si bien que les lments utiliss initialement sont expulss et la mme
mthode daccs de nouveau applique pour les mmes donnes. La solution
gnralement prconise est de partitionner lopration en blocs, de sorte que les diverses
oprations portant sur les mmes lments puissent tre excutes quand les lments
sont encore en mmoire cache. Cette technique gnrale est appele exploitation par
blocs. Un groupe de chercheurs comptents en analyse numrique a t sollicit pour
coder des versions des algorithmes de manipulation de matrices, en utilisant lexploitation
par blocs et dautres techniques doptimisation. Rsultat : des performances 30 fois
meilleures pour la multiplication des matrices. Cette version optimise des routines a t
installe dans la bibliothque BLAS (Basic Linear Algebra Subroutines) dAIX,
/usr/lib/libblas.a. Un jeu plus tendu de sous-routines optimises est galement disponible
dans le programme sous licence ESSL (Engineering and Scientific Subroutine Library),
document dans le manuel IBM Engineering and Scientific Subroutine Library Guide and
Reference.
Les fonctions et les interfaces des sous-routines BLAS (Basic Linear Algebra Subroutines)
sont dcrites dans AIX Technical Reference, Volume 2: Base Operating System and
Extensions. Cette bibliothque nest accessible que si lenvironnement dexcution
FORTRAN est install. Elle est destine particulirement aux utilisateurs qui doivent
effectuer leurs propres oprations vectorielles et matricielles :les sous-routines proposes
offrent un degr doptimisation tel quun non spcialiste danalyse numrique ne risque pas
de faire mieux.
Si le programmeur contrle les structures des donnes, dautres amliorations peuvent tre
envisages. En gnral, il est prconis de regrouper au maximum les donnes souvent
utilises. Si une structure contient la fois des informations de contrle trs sollicites et
des donnes dtailles peu sollicites, assurez-vous que les informations de contrle sont
affectes sur des octets conscutifs. Cette prcaution permettra de charger la totalit des
informations de contrle en mmoire cache en limitant les cas dabsences en cache
( quelques-uns, voire un seul).
Prprocesseurs et compilateurs XL
Pour exploiter au mieux un programme sur une machine donne, il faut savoir que :
Certains prprocesseurs permettent de rorganiser la structure de certains codes source
de faon obtenir un module source, quivalent au niveau fonctionnel, mais compilable
en code excutable plus performant.
Plusieurs options de compilation sont disponibles en fonction de la ou des variantes
darchitecture POWER utilises.
La fonction #pragma permet de signaler certains aspects du programme au
compilateur XL C pour quil gnre un code plus efficace en allgeant certaines
hypothses concernant les cas les moins favorables.
Plusieurs niveaux doptimisation confrent au compilateur une marge de libert plus ou
moins tendue pour rorganiser les instructions.
Pour les programmeurs presss, une seule rgle est prconise : loptimisation
systmatique. Le gain de performances induit par une optimisation du code, aussi simple
soit-elle, est tel quil serait aberrant den faire lconomie (ne serait-ce quen appliquant
loption O de la commande cc, xlc ou xlf). Les seules exceptions cette rgle sont les
conditions de test qui exigent de gnrer le code tel quel (par exemple, pour analyser les
performances au niveau des instructions par la fonction tprof).
Les autres techniques doptimisation confrent certains programmes des performances
suprieures mais il faut procder nombre de recompilations et mesures pour dterminer la
combinaison technique la mieux approprie un programme particulier.
4-14
Les diffrentes techniques dexploitation optimales des compilateurs sont prsentes dans
les sections qui suivent. Pour une description plus dtaille, reportez-vous au manuel
Optimization and Tuning Guide for XL Fortran, XL C and XL C++.
qarch=PWR
qarch=PWRX
qarch=PPC
qtune=PWRX
qtune=601
4-15
qtune=PWR
qtune=PWRX
qtune=601
par dfaut
qarch=COM
OK
OK
OK
PWR
qarch=PWR
OK
OK
OK
PWR
qarch=PWRX
OK
OK
non valide
PWRX
qarch=PPC
OK
non valide
OK
601
Directive #pragma
Dans certains cas, loptimiseur peut tre inhib par la ncessit de gnrer un code qui
tienne compte des conditions les moins favorables. Pour signaler au compilateur que
certaines contraintes peuvent tre assouplies et autoriser ainsi la gnration dun code plus
efficace, vous disposez de la directive #pragma.
Un pragma est une instruction dfinie limplantation. Les pragmas sont de la forme :
#pragma character_sequence ...
Les pragmas en XL C ci-dessous peuvent sensiblement amliorer les performances dun
programme sans modifier le reste du code source :
disjoint
isolated_call
Directive #pragma disjoint
La directive #pragma disjoint rpertorie les identificateurs qui, dans le cadre de leur
utilisation, ne jouent pas le rle dalias entre eux :
#pragma disjoint ( { identifier | *identifier }
[,{ identifier | *identifier } ] ... )
La directive informe le compilateur quaucun des identificateurs de la liste ne partage la
mme mmoire physique, ce qui donne plus de latitude pour les optimisations. Si lun des
identificateurs de la liste partage en ralit de la mmoire physique, les rsultats du
programme risquent dtre incorrects.
Cette directive peut apparatre nimporte quel point du programme source.
Un identificateur doit tre cit dans le programme l o la directive apparat. Les
identificateurs ne peuvent renvoyer :
un membre dune structure ou dune union,
un lien une structure ou une union,
une constante dnumration,
une tiquette.
Les identificateurs doivent tre dclars avant dtre cits dans une pragma. Aucun
pointeur de la liste des identificateurs ne doit avoir servi dargument une fonction avant
dapparatre dans la directive.
Lutilisation de la directive #pragma disjoint est illustre dans lexemple ci-dessous. Le
pointeur externe ptr_a ne partage pas de mmoire avec la variable externe b pas plus
quil ne pointe vers elle, le compilateur peut donc en dduire que la proposition 7 pour
lobjet sur lequel ptr_a pointe ne modifiera pas la valeur b. De mme, le pointeur externe
ptr_b ne partage pas de mmoire avec la variable externe a, pas plus quil ne pointe vers
elle. Par consquent, le compilateur peut en dduire que largument de
another_function prend la valeur 6.
4-16
4-17
Niveaux doptimisation
Les niveaux doptimisation offerts par les compilateurs XL ont t modifis par rapport aux
versions antrieures. Les nouvelles options proposes sont :
Pas doptimisation
En labsence de toute forme dindicateur O, le compilateur gnre un code brut sans
restructuration des instructions ni autre forme damlioration.
O ou O2
Ces indicateurs (quivalents) demandent au compilateur deffectuer une optimisation en se
fondant sur une restructuration minimale du code. Seules sont appliques les directives
explicites de type #pragma. Ce niveau neffectue plus de mise en pipeline logicielle, de
droulement de boucles ou de simple mise en commun prvisionnelle. Il dfinit galement
une contrainte sur la quantit de mmoire utilisable par le compilateur.
Il en rsulte, par rapport aux versions antrieures, une possible dgradation des
performances des routines tendues ou complexes compiles avec loption O.
O3
Cette option impose au compilateur dappliquer les techniques doptimisation et dutiliser le
volume de mmoire ncessaire pour une optimisation maximale.
Ce niveau peut modifier les programmes au niveau fonctionnel si ces derniers tiennent
compte :
des exceptions virgule flottante,
du signe de zro,
des effets dun ragencement des calculs.
Ces effets secondaires peuvent cependant tre vits, au prix dune diminution des
performances, en combinant loption qstrict avec O3.
Loption qhot combine O3 permet deffectuer des mises en commun prvisionnelles et
quelques droulements de boucle.
Par rapport loption O des versions antrieures, ces modifications procurent le mme
niveau, voire un niveau plus lev de performances des routines tendues ou complexes
compiles avec loption O3 (ventuellement combine qstrict ou qhot).
4-18
strncpy()
strncmp()
index()
rindex()
memchr()
memcpy()
memccpy()
memmove()
memcmp()
memset()
Pour revenir au niveau dimbrication de la version 3.1, faites prcder linstruction
#include <string.h> de :
#define __STR31__
4-19
4-20
Mme si la prsence de la fonction de contrle de charge mmoire VMM sous AIX garantit
quaucune condition demballement naissante ne dgnre en auto-emballement perptuel,
les temps de rponse et/ou le dbit subissent leffet des dfauts de page inutiles.
4-21
doivent tre soigneusement labors (ou examins, sils sont ports) pour sassurer que les
fractions de mmoire fixe sont utilises avec parcimonie. Voici quelques conseils ce sujet :
Le code est fix sur la base de module chargeable (fichier excutable). Si certains
modules objets dun composant doivent tre fixs et dautres simplement pagins, veillez
placer les modules fixer dans un module chargeable distinct.
Il nest pas souhaitable de fixer prventivement un module ou une structure de donnes :
le concepteur doit savoir dans quelles conditions linformation peut tre demande et si,
dans ce cas, un dfaut de page peut ou non tre tolr.
Les structures fixes dont la taille dpend de la charge (telles que les pools de mmoire
tampon) doivent tre optimisables par ladministrateur systme.
4-22
Prinstallation dAIX
Installation dAIX sur un nouveau systme
Avant de commencer linstallation, vous devez avoir dtermin la taille et lemplacement des
systmes de fichiers disque et des espaces de pagination, et le moyen de les communiquer
AIX.
Prinstallation de la CPU
Il est dconseill de modifier a priori les paramtres de planification par dfaut de la CPU
(tels que la dure des tranches horaires). A moins que vous nayez une grande exprience
en contrle et optimisation dune charge de travail similaire sur une configuration analogue,
ne modifiez pas ces paramtres pendant linstallation.
Pour des indications sur la post-installation, reportez-vous Contrle et optimisation de la
CPU.
Prinstallation de la mmoire
Si vous installez un systme de plus de 32 Mo, appel grer plus de cinq utilisateurs
simultanment, vous devez envisager daugmenter le niveau minimum de
multiprogrammation associ au mcanisme de contrle de charge mmoire VMM. Par
exemple, si vous estimez que, au bas mot, quatre des applications les plus gourmandes en
mmoire doivent pouvoir sexcuter simultanment, tout en laissant au moins 16 Mo pour le
systme dexploitation et 25 % de mmoire relle aux pages de fichiers, vous pouvez
augmenter le niveau minimum de multiprogrammation de 2 (par dfaut) 4, par la
commande :
# schedtune m 4
Ne procdez aucune autre modification de seuil de mmoire tant que vous navez pas
confront le systme la charge de travail relle.
Pour des indications sur la post-installation, reportez-vous Contrle et optimisation de la
mmoire.
4-23
Prinstallation du disque
Recommandations gnrales
Bien que les mcanismes de dfinition et dextension des volumes logiques adoptent les
valeurs par dfaut les plus satisfaisantes possibles, seul linstallateur du systme est
mme de dterminer la taille et lemplacement des volumes logiques, en fonction du volume
de donnes escompt et des contraintes de la charge de travail, pour des E/S optimises.
Dans cette optique, voici quelques recommandations utiles :
Si possible, le groupe de volumes par dfaut, rootvg, ne doit tre constitu que du
volume physique sur lequel le systme a t initialement install. Un ou plusieurs autres
groupes de volumes doivent tre dfinis pour contrler les autres volumes physiques du
systme. Ces mesures sont utiles tant au niveau de la gestion que des performances.
Pour amliorer les performances dun groupe de volumes comportant plusieurs volumes
physiques, vous pouvez :
Dfinir initialement le groupe de volumes avec un seul volume physique.
Dfinir un volume logique au sein du nouveau groupe de volume. Le volume logique
journal du groupe de volumes est alors affect sur le premier volume physique.
Ajouter les volumes physiques restants au groupe de volumes.
Dfinir les systmes de fichiers trs sollicits sur les nouveaux volumes physiques.
Dfinir exclusivement les systmes de fichiers de trs faible activit, sil en existe, sur
le volume physique contenant le volume logique du journal.
Cette solution spare les E/S de journalisation des E/S trs importantes de donnes,
augmentant la probabilit de chevauchement. Cette technique peut avoir un effet
particulirement marqu sur les performances du serveur NFS car lcriture des
donnes et du journal doit tre acheve avant que NFS ne dclare les E/S termines
pour une opration dcriture.
Attribuez ds que possible aux volumes logiques leur taille maximale escompte.
Par prcaution, traitez en premier les volumes logiques les plus importants en terme de
performances pour tre sr quils seront contigus et affects lemplacement souhait.
Les volumes logiques trs sollicits doivent occuper des portions de plusieurs units de
disque. Si loption Gamme de volumes physiques du menu smit Ajout volume logique
(raccourci smit mklv) est positionn sur maximum, le nouveau volume logique sera
rparti sur les divers volumes physiques du groupe de volumes (ou du moins, le lot de
volumes physiques explicitement spcifi).
Si le systme est quip dunits de diffrents types (ou que vous devez dterminer
lunit commander), les remarques suivantes vous seront utiles :
Les gros fichiers normalement accessibles squentiellement doivent tre installs sur
lunit de disque la plus rapidement disponible. Les niveaux de performances en
accs alatoires et squentiels mesurs sont, du plus lent au plus rapide :
4-24
Drive
Capacity
200MB
400MB
857MB
2.4GB
1.37GB
540MB
1.0GB**
2.0GB
SCSI
Adapter
Random Pages
per Second
approx. 40
approx. 50
approx. 60
approx. 65*
approx. 70
approx. 85
approx. 85
approx. 85
Sequential Pages
per Second
approx. 250
approx. 375
approx. 550
approx. 525
approx. 800
approx. 975
approx. 1075
approx. 950
Disk Drives
per Adapter
1
2
2
3
Chaque fois que possible, raccordez les units exigeant des performances trs
leves une carte SCSI-2. Ce type de carte offre des fonctionnalits, telles que
lcriture dos dos, que les autres cartes disque du ESCALA ne proposent pas.
Sur les units de disque 200 Mo, 540 Mo et 1 Go, les volumes logiques appels
recevoir des fichiers squentiels frquemment sollicits doivent tre affects sur le
bord externe du volume physique. Ces disques ont davantage de blocs par piste dans
leur section externe, ce qui amliore les performances des oprations squentielles.
Sur un bus SCSI, les units dotes des adresses SCSI les plus leves (telles que
dfinies sur les units physiques) sont prioritaires. Le plus souvent, cet effet est
ngligeable, mais les oprations squentielles portant sur des fichiers volumineux sont
connues pour exclure de laccs au bus les units dotes dun petit numro. Vous
devrez probablement configurer les units de disque contenant les donnes les plus
critiques en matire de temps de rponse aux adresses les plus leves de chaque
bus SCSI. La commande lsdev Cs scsi porte sur les affectations dadresses
actuelles sur chaque bus SCSI. Pour la carte SCSI dorigine, ladresse SCSI est le
premier nombre de la quadruple paire de nombres de la sortie. Dans lexemple
ci-dessus, le disque de 400 Mo rside ladresse SCSI 0, le disque de 320 Mo,
ladresse 1, et lunit de bande 8 mm, ladresse 5.
hdisk0
hdisk1
rmt0
Les gros fichiers trs utiliss et gnralement ouverts en mode alatoire (tels que les
bases de donnes) doivent tre rpartis sur plusieurs volumes physiques.
4-25
4-26
4-27
4-28
5-1
5-2
tout
0.0
% tm_act
0.1
0.0
tin
0.0
tout
0.0
% tm_act
2.4
0.0
cpu:
% user
0.0
% sys
0.2
% idle
99.6
tps
0.0
0.0
Kb_read
18129
0
Kb_wrtn
56842
0
% user
23.1
% sys
9.0
% idle
65.9
Kb_read
0
0
Kb_wrtn
32
0
Kbps
0.3
0.0
cpu:
Kbps
6.4
0.0
tps
1.6
0.0
% iowait
0.1
% iowait
2.0
$ vmstat 5 2
procs
memory
page
faults
cpu
r b
avm
fre re pi po fr
sr cy in
sy cs us sy id wa
0 0 2610 1128
0
0
0
0
0
0 112
1 19 0 0 99 0
0 0 2505 1247
0
0
0
0
0
0 125 1056 37 22 9 67 2
$ netstat I tr0 5
input
(tr0)
output
packets errs packets errs colls
532099 1664
985
0
0
45
0
6
0
0
44
1
5
0
0
input
packets
532111
45
44
(Total)
output
errs packets errs colls
1664
997
0
0
0
6
0
0
1
5
0
0
Le premier compte rendu gnr par chacune de ces commandes concerne lactivit
cumule depuis le dernier amorage du systme. Le second compte rendu montre lactivit
enregistre durant le premier intervalle de 5 secondes. De ce simple extrait, il ressort que
lactivit enregistre au cours du premier intervalle a t sensiblement suprieure la
moyenne.
Ces commandes sont la base du mcanisme de contrle. Les scripts shell peuvent tre
crits pour rduire les donnes gnres par la commande *stat, signaler les problmes de
performances ou enregistrer les donnes concernant ltat du systme au moment de
lincident. Par exemple, un script shell peut tester le pourcentage de CPU disponible, et
lorsquil dtecte un pourcentage gal 0 signifiant que la CPU est sature, excuter un
autre script shell. Par exemple :
$ ps ef | egrep v STIME|$LOGNAME | sort +3 r | head n 15
Ce script enregistre les 15 processus actifs (autres que les processus de lutilisateur du
script) qui ont rcemment consomm le plus de temps CPU.
Selon le niveau de sophistication requis, laborer un ensemble de scripts shell peut savrer
difficile. Fort heureusement, il existe des modules moins exigeants en dveloppement et
configuration qui offrent bien plus de fonctions que la plupart des installations nen
requirent localement.
5-3
5-4
Lunit centrale dun ESCALA est lun des composants les plus rapides du systme : il est
rarissime quun programme monopolise 100 % de la CPU au-del de quelques secondes.
Mme sur des systmes multiutilisateurs trs chargs, il arrive quau bout dune priode de
10 ms tous les travaux soient en attente. Si un message indique que la CPU est occupe
100 % (0 % disponible et 0 % dattente) depuis un certain temps, il est fort probable quun
programme se trouve engag dans une boucle infinie. Dans ce cas, si le programme en
cause est simplement coteux, mais tout fait exploitable, il convient de lidentifier et de lui
appliquer un traitement ad hoc.
Ce chapitre indique comment dtecter les programmes incontrls, ou faisant un usage
intensif de CPU, et rduire leur impact sur les performances.
Si vous tes peu familiaris avec la programmation de la CPU sous AIX, reportez-vous
Performances du programmateur CPU sous AIX, page 2-2, avant de poursuivre.
Cette section traite des points suivants :
Contrle de la CPU via vmstat
Mesure de la CPU via time
Identification des grands consommateurs de CPU via ps
Analyse des programmes via tprof
Analyse du flux de commande via stem
Restructuration des excutables via fdpr
Contrle des conflits pour la CPU
Modification de la tranche horaire du programmateur
Administration de lID utilisateur par rapport la CPU
Loutil xmperf est galement trs utile pour contrler lutilisation de la CPU.
6-1
cpu
us sy id wa
57 32 0 10
48 37 0 16
55 36 0 9
2
2
2
3
2
0
0
0
0
1
22534
22534
22534
22534
22557
1465
1445
1426
1410
1365
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
2
1
1
0 22541
0 22524
0 22546
1356
1350
1293
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0 4
0 16
0 14
Cette sortie met en vidence limpact dun programme en boucle dans un environnement
multiutilisateur. Il ressort des trois premiers relevs (le rsum ayant t supprim) que
lquilibre du systme pour lutilisation de la CPU se situe 5055 % ct utilisateur,
3035 % ct systme et 1015 % en attente dE/S. Ds le lancement du programme en
boucle, tous les cycles CPU disponibles sont utiliss. Aucune E/S ntant effectue dans
une boucle, tous les cycles non utiliss du fait de lattente des E/S sont alors exploits par le
programme. En fait, ce processus est capable de sapproprier la CPU de tout processus
utile qui sen dferait. Bnficiant du mme niveau de priorit que les autres processus
davant-plan, le processus nest pas contraint dabandonner de la CPU au profit dun autre
processus devenu diffusable. Son excution dure environ 10 secondes (5 relevs). Au-del,
lactivit du systme suit un cours plus normal.
6-2
6-3
6-4
6-5
Valeur
TIME
%CPU
Temps CPU total utilis par le processus depuis son lancement divis
par le temps coul depuis le lancement du processus. Mesure la
dpendance du programme vis--vis de la CPU.
Le script shell :
$ps ef | egrep v STIME|$LOGNAME | sort +3 r | head n 15
sert mettre en vidence les processus utilisateur du systme les plus gourmands en CPU.
Appliqu lexemple de la section Contrle de la CPU via vmstat, ce script gnrerait la
sortie suivante (la ligne den-tte a t ajoute pour faciliter la lecture) :
USER
waters
root
root
root
root
root
bick
bick
luc
PID
45742
52121
4250
38812
27036
47418
37651
43538
60061
PPID
C
STIME
TTY TIME CMD
54701 120 15:19:05 pts/29 0:02 ./looper
1 11 15:32:33 pts/31 58:39 xhogger
1
3 15:32:33 pts/31 26:03 xmconsole allcon
4250
1 15:32:34 pts/31 8:58 xmconstats 0 3 30
6864
1 15:18:35
0:00 rlogind
25925
0 17:04:26
0:00 coelogin <d29dbms:0>
43538
0 16:58:40 pts/4 0:00 /bin/ksh
1
0 16:58:38
0:07 aixterm
27036
0 15:18:35 pts/18 0:00 ksh
6-6
Indicateurs de spcification de
processus :
G
Les processus
rpertoris sont :
Non leaders du
groupe de
processus et non
associs un
terminal
Non leaders du
groupe de
processus
Processus non
noyau
Membres des
groupes de
processus spcifis
Processus noyau
Ceux spcifis
dans la liste des
numros de
processus
Ceux associs
avec les TTY dans
la liste
Y
(nTTYs)
(1 TTY)
Processus
utilisateur spcifis
Processus avec
terminaux
NON associs un
TTY
Spcifie sans indicateur, la commande ps sapplique par dfaut tous les processus de
lmetteur de cette commande ps.
Indicateurs de slection de
colonne
U
Colonne :
Default1 f
Default2 e
PID
TTY
TIME
CMD
USER
6-7
UID
PPID
STIME
S/STAT
PRI
NI/NICE
ADDR
SZ/SIZE
WCHAN
RSS
SSIZ
%CPU
%MEM
PGIN
LIM
TSIZ
TRS
environment
(suivant la
commande ; sans
en-tte de colonne)
6-8
PID
ID processus
TTY
TIME
CMD
USER
UID
PPID
ID du processus parent.
STIME
S/STAT
PRI
NI/NICE
ADDR
SZ/SIZE
WCHAN
RSS
SSIZ
%CPU
%MEM
Valeur RSS divise par la taille de la machine en ko, multiplie par 100
et arrondie au pourcentage le plus proche.
PGIN
LIM
TSIZ
TRS
environnement
6-9
Exemple thorique
Le programme C suivant initialise 0x01 chaque octet dun grand tableau de nombres
entiers, incrmente chaque entier (int) dune constante alatoire et envoie en sortie un
entier (int) dsign alatoirement. Le programme ne remplit pas de fonction particulire,
mais il est reprsentatif des programmes qui traitent de grands tableaux.
6-10
6-11
Process
PID
=======
===
version1 33570480
bsh 33566383
/etc/init
1
/etc/syncd
3059
tprof
5038
rlogind
11345
PID.771
771
tprof
11940
tprof
11951
tprof
13987
bsh
16048
=======
===
Total
Total
=====
793
8
6
5
4
2
1
1
1
1
1
=====
823
Kernel
======
30
8
0
5
2
2
1
1
1
1
1
======
52
User
====
763
0
6
0
2
0
0
0
0
0
0
====
771
Shared
======
0
0
0
0
0
0
0
0
0
0
0
======
0
Other
=====
0
0
0
0
0
0
0
0
0
0
0
=====
0
Process
=======
version1
bsh
/etc/init
/etc/syncd
tprof
rlogind
PID.771
=======
Total
Total
=====
793
9
6
5
7
2
1
=====
823
Kernel
======
30
9
0
5
5
2
1
======
52
User
====
763
0
6
0
2
0
0
====
771
Shared
======
0
0
0
0
0
0
0
======
0
Other
=====
0
0
0
0
0
0
0
=====
0
FREQ
===
1
2
1
1
4
1
1
===
11
Ticks
======
763
USER) =
%
======
92.7
763
Source
=======
version1.c
Address
=======
632
Bytes
=====
560
6-12
Ticks
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
34
40
261
70
69
50
239
29
30
31
32
33
34
Source
for(OuterIndex=0; OuterIndex<Asize; OuterIndex++)
{
for (InnerIndex=0; InnerIndex<Asize; InnerIndex++)
big[RowDim][ColDim] = 0x01010101;
}
Increment = rand();
/* increment every element in the array */
for(OuterIndex=0; OuterIndex<Asize; OuterIndex++)
{
for (InnerIndex=0; InnerIndex<Asize; InnerIndex++)
{
big[RowDim][ColDim] += Increment;
if (big[RowDim][ColDim] < 0)
printf(Negative number.%d\n,
big[RowDim][ColDim]);
}
}
printf(Version 1 Check Num: %d\n,
big[rand()%Asize][rand()%Asize]);
return(0);
}
Ce compte rendu montre clairement que le plus grand nombre dimpulsions est associ
laccs aux lments du tableau big, et nous permet doptimiser les performances en nous
concentrant sur les boucles internes for. La premire boucle for (initialisation) est un
exemple de programmation sauvage : il est totalement inefficace dinitialiser les lments
des tableaux les uns aprs les autres. Sil sagissait de mettre le tableau 0, nous aurions
d utiliser bzero. Dans la mesure o il sagit de donner chaque bit la valeur dun caractre
spcifique, nous allons utiliser memset pour remplacer la premire boucle for.
(les fonctions bzero et memset sont trs efficaces, tout comme les fonctions str : crites en
assembleur, elles exploitent des instructions matrielles qui nont pas dquivalent direct
en C).
Nous devons accder successivement aux lments du tableau pour les incrmenter, mais
en nous assurant que le schma de la rfrence mmoire se rapporte des adresses
conscutives pour optimiser lutilisation du cache. Ici, les dimensions des ranges sont
modifies plus rapidement que celles des colonnes. Les tableaux C tant structurs sur la
base des ranges, nous omettons une range complte chaque rfrence mmoire.
La longueur des ranges tant de 1 024 entiers int (4 096 octets), nous changeons de
page chaque rfrence. La taille du tableau dpassant largement les possibilits du cache
de donnes et du TLB de donnes, nous avons crit un programme qui accepte le
maximum de cache et de TLB. Pour ce faire, nous avons simplement transpos les
instructions #define pour inverser les valeurs de RowDim et ColDim.
La forme non optimise de ce programme (version2.c) consomme environ 2,7 secondes
de temps CPU, comparer aux 7,9 secondes pour version1.
Le fichier suivant, __t.version2.c, rsulte dune commande tprof applique la forme
non optimise du programme :
6-13
Ticks
Source
15
memset(big,0x01,sizeof(big));
16
Increment = rand();
17
18
{
21
{
23
67
big[RowDim][ColDim] += Increment;
24
60
if (big[RowDim][ColDim] < 0)
25
43
printf(Negative number.
%d\n,big[RowDim][ColDim]);
26
}
27
}
28
big[rand()%Asize][rand()%Asize]);
30
return(0);
31
}
230 Total Ticks for main in version2.c
En tant attentif au schma dutilisation du temps CPU, nous avons multipli la vitesse CPU
du programme non optimis par trois. Les performances sont multiplies par 7 si
version1.c et version2.c sont optimiss avant compilation.
Lutilisation de la CPU par un programme intervient principalement dans les sous-routines
de bibliothque quil utilise et non dans le programme lui-mme. Si, dans version2.c, le
test conditionnel de la ligne 24 et lentre printf de la ligne 28 sont supprims pour crer
la version3.c suivante :
#include <string.h>
#include <stdlib.h>
#define Asize 256
#define RowDim OuterIndex
#define ColDim InnerIndex
main()
{
int Increment;
int OuterIndex;
int InnerIndex;
int big [Asize][Asize];
/* Initialize every byte to 0x01 */
memset(big,0x01,sizeof(big));
Increment = rand();
/* increment in memory order */
for(OuterIndex=0; OuterIndex<Asize; OuterIndex++)
{
for (InnerIndex=0; InnerIndex<Asize; InnerIndex++)
{
big[RowDim][ColDim] += Increment;
printf(RowDim=%d, ColDim=%d, Number=%d\n,
RowDim, ColDim, big[RowDim][ColDim]);
}
}
return(0);
}
le temps dexcution est essentiellement imputable linstruction printf. La commande :
$ tprof v s k p version3 x version3 >/dev/null
6-14
gnre une __version3.all qui comprend les donnes de profilage pour le noyau et la
bibliothque de sous-routine partage libc.a (seule bibliothque utilise par ce
programme) :
Process
PID
=======
===
version3 33568373
bsh 33567348
tprof
15987
tprof
7784
tprof
12905
bsh
13941
=======
===
Total
Total
=====
818
5
3
1
1
1
=====
829
Kernel
======
30
5
1
1
1
1
======
39
User
====
19
0
2
0
0
0
====
21
Shared
======
769
0
0
0
0
0
======
769
Other
=====
0
0
0
0
0
0
=====
0
Process
=======
version3
bsh
tprof
=======
Total
Total
=====
818
6
5
=====
829
Kernel
======
30
6
3
======
39
User
====
19
0
2
====
21
Shared
======
769
0
0
======
769
Other
=====
0
0
0
=====
0
FREQ
===
1
2
3
===
6
USER) =
Ticks
======
11
8
%
======
1.3
1.0
KERNEL) =
Ticks
======
7
5
3
2
2
2
1
1
1
1
1
1
1
1
1
%
======
0.8
0.6
0.4
0.2
0.2
0.2
0.1
0.1
0.1
0.1
0.1
0.1
0.1
0.1
0.1
Ticks
======
769
Profile: /usr/lib/libc.a
%
======
92.0
19
Source
=======
version3.c
glink.s
Bytes
=====
320
36
Address
=======
13832
21760
414280
819368
689016
29300
372288
27656
48168
29744
629596
658460
672024
135864
736084
Bytes
=====
1244
256
668
672
60
208
1044
76
856
2304
240
492
184
32
240
30
Source
=======
low.s
low.s
vmmove.c
xix_sattr.c
disubs.c
lockl.s
v_getsubs1.c
clock.s
noname
vmvcs.s
spec_vnops.c
rdwr.c
isubs.c
devsw_pin.c
ld_libld.c
769
Source
=======
/usr/lib
Address Bytes
======= =====
794624 724772
shr.o
Address
=======
632
1112
Ticks
======
476
205
41
18
16
10
1
1
1
%
======
56.9
24.5
4.9
2.2
1.9
1.2
0.1
0.1
0.1
769
Source
=======
doprnt.c
fwrite.c
strchr.s
printf.c
memcmp.s
strerror.c
isatty.c
flsbuf.c
ioctl.c
Address
=======
36616
50748
31896
313796
36192
46800
62932
4240
57576
Bytes
=====
7052
744
196
144
184
124
112
280
240
6-15
Ce qui confirme que les impulsions sont majoritairement imputables aux bibliothques
partages libc.a, ici. Le profil de libc.a indique que la plupart de ces impulsions sont
imputables la sous-routine _doprnt.
_doprnt est le module de traitement de printf, sprintf, etc. Avec une simple modification,
nous avons augment le temps de traitement de 2,7 8,6 secondes, et notre impression
formate consomme prsent environ 60 % du temps CPU. Ceci explique pourquoi le
formatage doit tre employ judicieusement. Les performances de _doprnt sont
galement affectes par lenvironnement local. Reportezvous lannexe I, Support NLS
local et vitesse. Ces tests ont t effectus dans lenvironnement local C, le plus efficace.
6-16
Analyse de stem
Pour analyser le flux de commande dun simple programme dapplication, entrez :
stem p stem_test_pgm
La sortie de cette commande est :
**********************************************************
Make.Stem does not exist, issueing make for stem_samples.o
make stem_samples.o
Target stem_samples.o is up to date.
******************************************************
The instrumented stem_test_pgm is at /tmp/EXE/stem_test_pgm
Assuming version 3.2.5 or later, SVC_string=.sc_flih
Linstrumentation de stem_test_pgm a abouti, bien que le programme ait t limit. La
forme instrumente du programme rside dans le rpertoire /tmp/EXE. Entrez ensuite :
/tmp/EXE/stem_test_pgm
6-17
Vous obtenez un fichier appel stem_out dans le rpertoire de travail courant. Dans ce cas,
stem_out contient :
Seconds.usecs TID Routine Names & Seconds.usecs since
entering routine.
767549539.847704
1 >main
767549539.880523
1
>setPI
767549539.880958
1
<setPI 0.000435
767549539.881244
1
>squareit
767549539.881515
1
<squareit 0.000271
767549539.881793
1
>printf
767549539.883316
1
<printf 0.001523
767549539.883671
1
>setPI
767549539.883944
1
<setPI 0.000273
767549539.884221
1
>squareit
767549539.884494
1
<squareit 0.000273
767549539.884772
1
>printf
767549539.885981
1
<printf 0.001209
767549539.886330
1 <main 0.038626
767549539.886647
1
>exit
Le graphique dappel capture les appels dirigs vers les fonctions du module (setPI et
squareit) et vers la sousroutine printf de libc.a. Les numros droite des noms des
sousroutines reprsentent le temps coul (en secondes et microsecondes) entre lappel
et la rponse.
Si le mme processus est excut sur la commande wc (/usr/bin/wc), le fichier stem_out
contient alors (pour wc dun fichier compos de deux mots) :
Seconds.usecs TID Routine Names & Seconds.usecs since
entering routine.
767548812.962031
1 >main
767548812.993952
1
>setlocale
767548812.995065
1
<setlocale 0.001113
767548812.995337
1
>catopen
767548812.995554
1
<catopen 0.000217
767548812.995762
1
>getopt
767548812.996101
1
<getopt 0.000339
767548812.996345
1
>open
767548812.996709
1
<open 0.000364
767548812.996953
1
>read
767548812.997209
1
<read 0.000256
767548812.997417
1
>read
767548812.997654
1
<read 0.000237
767548812.997859
1
>wcp
767548812.998113
1
>printf
767548812.998586
1
<printf 0.000473
767548812.998834
1
<wcp 0.000975
767548812.999041
1
>printf
767548813.000439
1
<printf 0.001398
767548813.000720
1
>close
767548813.000993
1
<close 0.000273
767548813.001284
1
>exit
Ce graphique dappel, obtenu assez facilement, illustre la structure dune commande AIX.
Les appels destination de setlocale et catopen assurent que la commande se droule
dans le mme environnement local NLS (National Language Support) et avec le mme
catalogue de messages que son processus pre.
Bien que les programmes stem puissent sexcuter dans plusieurs processus, le graphique
dappel indique uniquement lordre dexcution dans le processus principal.
6-18
6-19
6-20
/*
fixprocpri.c
Usage: fixprocpri priority PID . . .
*/
#include <sys/sched.h>
#include <stdio.h>
#include <sys/errno.h>
main(int argc,char **argv)
{
pid_t ProcessID;
int Priority,ReturnP;
if( argc < 3 ) {
printf( usage setpri priority pid(s) \n);
exit(1);
}
argv++;
Priority=atoi(*argv++);
if ( Priority < 50 ) {
printf( Priority must be >= 50 \n);
exit(1);
}
while (*argv) {
ProcessID=atoi(*argv++);
ReturnP = setpri(ProcessID, Priority);
if ( ReturnP > 0 )
printf(pid=%d new pri=%d old pri=%d\n,
(int)ProcessID,Priority,ReturnP);
else {
perror( setpri failed );
exit(1);
}
}
}
waters
S UID PID
S 200 7032
S 200 7569
S 200 8544
PPID
7287
7032
6495
C PRI NI ADDR
0 60 20 1b4c
0 65 25 2310
0 60 20 154b
SZ
108
88
108
WCHAN
5910a58
TTY
pts/2
pts/2
pts/0
TIME
0:00
0:00
0:00
CMD
ksh
vmstat
ksh
La sortie montre le rsultat de la commande nice 5 dcrite plus haut. Le processus 7569 a
une priorit effective de 65 (la commande ps a t lance en mode superutilisateur lors
dune autre session, do la prsence de deux TTY).
Si lun des processus a exploit la sous-routine setpri pour sattribuer une priorit fixe, le
format en sortie de ps l est le suivant :
F S UID PID PPID
C PRI NI ADDR
200903 S
0 10759 10500 0 59 3438
40
SZ
WCHAN
TTY TIME CMD
4f91f98 pts/0 0:00 fixpri
6-21
renice modifie la valeur nice et, par consquent, la priorit du ou des processus en cours
dexcution. Les processus sont identifis via lID processus, lID groupe de processus ou le
nom de lutilisateur des processus. renice ne peut tre appliqu des processus priorit
fixe.
A partir de lexemple prcdent, modifions la valeur nice (renice) du processus vmstat
lanc via nice :
# renice 5 7569
7569: old priority 5, new
# ps lu waters
F S UID PID PPID
241801 S 200 7032 7287
200801 S 200 7569 7032
241801 S 200 8544 6495
priority 0
C PRI NI ADDR
0 60 20 1b4c
0 55 15 2310
0 60 20 154b
SZ
108
92
108
WCHAN
5910a58
TTY
pts/2
pts/2
pts/0
TIME
0:00
0:00
0:00
CMD
ksh
vmstat
ksh
Le processus est prsent excut une priorit suprieure celles des autres processus
davant-plan. Notez que renice najoute ni ne retranche la valeur spcifie lancienne
valeur nice. Elle remplace lancienne valeur par la nouvelle. Pour annuler le tout, entrez :
# renice 0 7569
7569: old priority 5, new
# ps lu waters
F S UID PID PPID
241801 S 200 7032 7287
200801 S 200 7569 7032
241801 S 200 8544 6495
priority 0
C PRI NI ADDR
0 60 20 1b4c
1 60 20 2310
0 60 20 154b
SZ
108
92
108
WCHAN
5910a58
TTY
pts/2
pts/2
pts/0
TIME
0:00
0:00
0:00
CMD
ksh
vmstat
ksh
Dans ces exemples, renice est lanc par lutilisateur root. Lutilisation de renice par un
utilisateur non root est doublement limite. Il ne peut :
lancer cette commande que sur ses propres processus,
augmenter la priorit dun processus, mme pour restaurer sa priorit par dfaut, aprs
lavoir diminue via renice.
nice 5
nice 5
nice 5
renice 5
renice +5
renice 5
Resulting
nice Value
25
25
15
Resulting
Priority Value
65
65
55
nice n 5
nice n +5
nice n 5
6-22
renice n 5
renice n +5
renice n 5
Resulting
nice Value
25
25
15
Resulting
Priority Value
65
65
55
6-23
(R=0, D=0,5) signifie que la pnalit CPU est 0, ce qui rend la priorit absolue : aucun
processus darrire-plan ne peut obtenir de temps CPU tant quun processus davant-plan
en rclame. Les priorits des processus sont en effet constantes, mme si, techniquement,
ce ne sont pas des processus priorit fixe.
# schedtune r 5
(R=0,15625, D=0,5) signifie que des processus davant-plan nentreront jamais en
comptition avec un processus darrire-plan lanc via nice 20. La limite de 120 tranches
de temps CPU accumules signifie que la pnalit maximum pour les processus
davant-plan est fixe 18.
# schedtune r 6 d 16
(R=0,1875, D=0,5) signifie quun processus darrire-plan lanc via nice 20, le sera au
moins une seconde avant que le processus darrire-plan ne reoive du temps CPU.
Cependant, les processus davant-plan peuvent toujours tre distingus sur la base de
lutilisation de CPU. Les processus davant-plan longs qui doivent normalement se trouver
en arrire-plan finissent par accumuler suffisamment dutilisation de CPU pour les
empcher dinterfrer avec lavant-plan rel.
# schedtune r 32 d 32
(R=1, D=1) signifie que les processus longs atteignent une valeur C gale 120 et la
conservent, en opposition avec leur valeur nice. Les nouveaux processus ont la priorit
quelle que soit leur valeur nice, jusqu ce quils aient accumul suffisamment de tranches
horaires pour passer dans la gamme de priorits des processus existants.
Si vous estimez quun ou deux paramtres doivent tre modifis pour sadapter la charge
de travail, entrez la commande schedtune, en tant quutilisateur root. Les valeurs
modifies seront conserves jusqu la prochaine commande schedtune ou jusquau
ramorage suivant du systme. Vous pouvez rtablir les valeurs par dfaut via
schedtune D, mais noubliez pas qualors tous les paramtres schedtune sont
rinitialiss par cette commande, y compris les paramtres de contrle de charge
mmoire VMM. Pour faire perdurer une modification au fil des ramorages, ajoutez la ligne
approprie la fin du fichier /etc/inittab.
6-24
6-25
6-26
La mmoire dun ESCALA est presque toujours pleine. Si les programmes en cours ne
loccupent pas intgralement, AIX y conserve les pages de texte de programmes antrieurs
et des fichiers associs. Ceci ne cote rien, puisque la mmoire est de toutes faons
inutilise. Souvent, par contre, les pages de fichier ou de programme sont rutilises, ce qui
rduit les E/S disque.
Cette technique de mise en mmoire cache amliore lefficacit du systme mais rend plus
difficile lvaluation des besoins mmoire rels dune charge de travail.
Ce chapitre dcrit comment mesurer et modifier la quantit de mmoire utilise. Elle
comporte les sections suivantes :
Quantit de mmoire utilise rpertorie les commandes relatives lexploitation de la
mmoire et traite de leurs avantages et inconvnients.
Programme perte de mmoire dcrit lune des causes les plus courantes de
surcharge de mmoire.
Analyse de lexploitation de la mmoire via BigFoot dcrit les caractristiques et le
fonctionnement de loutil BigFoot, qui rend compte des schmas dutilisation de la
mmoire.
Estimation de la mmoire requise via rmss illustre les techniques dutilisation de loutil
Reduced-Memory System Simulator.
Optimisation du contrle de la charge mmoire VMM dcrit les situations dans
lesquelles cette optimisation est ncessaire et les mthodes doptimisation via la
commande schedtune.
Optimisation du remplacement de page VMM dtaille les mthodes et les effets de la
modification des paliers de remplacement de page VMM.
Les lecteurs qui ne seraient pas familiariss avec la gestion de la mmoire virtuelle dAIX
peuvent se reporter Performance du gestionnaire de mmoire virtuelle (VMM), page 2-5
avant de poursuivre.
7-1
vmstat
vmstat rend compte de la mmoire virtuelle active totale exploite par tous les processus
du systme ainsi que le nombre de trames de page en mmoire relle dans la liste des
disponibilits. La mmoire virtuelle active est dfinie comme le nombre de pages de
segments actifs en mmoire virtuelle qui ont t exploites. Elle est gnralement gale au
nombre demplacements despace de pagination dj affects. Ce nombre peut tre
suprieur au nombre de trames de page relles de la machine, dans la mesure o certaines
pages de la mmoire virtuelle active peuvent avoir t vacues vers lespace de
pagination.
ps
ps fournit des comptes rendus diffrents en fonction de lindicateur spcifi. Le plus complet
est issu de ps v, qui affiche les colonnes suivantes :
SIZE
RSS
TSIZ
TRS
Taille de lensemble de texte rsidant (en mmoire relle). Elle est gale au
nombre de pages de segment de codes multipli par 4. Comme indiqu plus
haut, ce chiffre surestime lutilisation de la mmoire pour les programmes
dont plusieurs instances sont en cours.
%MEM
Il ressort clairement qutablir des statistiques relatives la mmoire dans un format conu
pour des systmes antrieurs, plus simples, aboutit des donnes fausses.
7-2
svmon
svmon fournit des comptes rendus de lutilisation de la mmoire au niveau du processus
global et au niveau du segment. G et P sont les options les plus intressantes pour
loptimisation.
G
Sous AIX version 4.1, la commande svmon est intgre la bote outils PTX
(Performance Toolbox for AIX). Pour savoir si svmon est disponible, entrez :
lslpp lI perfagent.tools
Si ce module est install, svmon est disponible.
Le compte rendu global svmon ci-dessous indique les chiffres correspondants. Le nombre
prsent par vmstat comme mmoire virtuelle active( avm) est report par svmon comme
emplacements despace de pagination en cours dutilisation (25270). Le nombre de trames
de page de la liste des disponibilits (2691) est identique dans les deux comptes rendus.
Le nombre de pages fixes (2157) fait lobjet dun compte-rendu spar car les pages fixes
sont comptes dans les pages en cours dutilisation.
$ svmon G
m e m o r y
size inuse free
24576 21885 2691
pin
2157
i n
work
13172
u s e
pers clnt
7899
814
p i n
work pers
2157
0
p g s p a c e
clnt
size inuse
0 40960 25270
Pour faire ressortir un processus donn, long, sur cette machine, nous pouvons comparer
les comptes rendus ps v et svmon P. Le programme rel a t renomm anon.
$ ps v 35851
PID TTY STAT
35851
S
TIME PGIN
0:03 494
SIZE
1192
RSS
2696
LIM
xx
TSIZ
1147
La valeur de SIZE (1192) est le nombre de Pgspace de svmon (298) multipli par quatre.
RSS (2696) est gal la somme du nombre de pages du segment priv du processus (329)
et du nombre de pages du segment du code (345) multiplie par quatre. TSIZE nest pas li
lutilisation de la mmoire relle. TRS (1380) est gal au nombre de pages utilises dans
le segment du code (345) multipli par quatre. %MEM est gal la valeur RSS divise par
la taille de la mmoire relle en ko, multiplie par 100 et arrondie.
$ svmon P 35851
Pid
Command
35851
anon
Pid: 35851
Command: anon
Segid Type Description
Inuse
18a3 pers /dev/hd2:5150
1
9873 pers /dev/hd2:66256
1
4809 work shared library
1734
748e work private
329
2105 pers code,/dev/hd2:4492 345
Inuse
2410
Pin
0
0
0
2
0
Pgspace
0
0
4326
298
0
Pin
2
Pgspace
4624
Address Range
0..0
0..0
0..4668 : 60123..65535
0..423 : 65402..65535
0..402
7-3
Voir aussi
Commandes vmstat, ps et svmon.
7-4
7-5
7-6
la structure des systmes inhrents tels que le noyau. Si une taille de mmoire donne est
refuse par rmss, un message derreur est affich.
rmss diminue la taille effective de la mmoire dun ESCALA en volant des trames de page
disponibles dans la liste tenue par VMM. Ces trames, conserves dans un fond de trames
inutilisables, sont renvoyes dans la liste des disponibilits lorsque la taille de la mmoire
effective doit tre augmente. De plus, rmss ajuste dynamiquement certaines structures de
donnes et variables systme qui doivent rester proportionnelles la taille de la mmoire
effective.
La modification de la taille de la mmoire peut prendre jusqu 15 ou 20 secondes.
En gnral, plus la rduction souhaite est importante, plus rmss prend de temps.
Lorsque rmss a abouti, le message suivant saffiche :
Simulated memory size changed to 12,00 Mb.
Pour afficher la taille actuelle de la mmoire, utilisez lindicateur p :
# rmss p
rmss rpond par :
Simulated memory size is
12.00 Mb.
Si, finalement, vous souhaitez rgler la taille de la mmoire sur celle de la mmoire actuelle
de la machine, utilisez lindicateur r :
# rmss r
Quelle que soit la taille de la mmoire virtuelle actuelle, lindicateur r ramne la taille de la
mmoire celle de la mmoire relle physique de la machine. Dans cet exemple, o un
systme de 16 Mo est exploit, rmss rpond :
Simulated memory size changed to 16,00 Mb.
Remarque : La commande rmss indique la quantit de mmoire relle utilisable. Sur les
machines dont la mmoire nest pas fiable ou dj utilise, rmss indique la quantit de
mmoire relle, cest--dire la mmoire physique relle moins la mmoire non fiable ou
dj utilise par le systme. Par exemple, la commande rmss r peut indiquer :
Simulated memory size changed to 79.9062 Mb.
Dans cet exemple, une partie de la mmoire est considre comme non fiable ou est
rserve par un priphrique (et nest donc pas disponible pour lutilisateur).
Indicateurs c, p et r
Les indicateurs c, p et r de rmss permettent, contrairement dautres options,
dexploiter des applications complexes qui ne peuvent tre exprimes en un fichier
excutable ou un script shell unique. Les indicateurs c, p et r vous obligent, par contre,
valuer vous-mme les performances. Il existe un moyen simple de le faire : vmstat s
mesure lactivit au niveau de lespace de pagination lors de lexcution dune application.
Si vous lancez vmstat s, puis lapplication, puis nouveau vmstat s, et calculez la
diffrence entre le nombre de transferts en mmoire despace de pagination avant et
aprs, vous obtenez le nombre de transferts effectus pendant le programme. En outre,
en chronomtrant le programme, puis en divisant le nombre de transferts par la dure
dexcution du programme, vous obtenez le taux moyen de transferts de lespace de
pagination.
Il est galement important dexcuter plusieurs fois lapplication avec chaque taille mmoire.
Deux raisons : dabord, lors de la modification de la taille de la mmoire, rmss vide une
grande quantit de mmoire. Ainsi, la premire fois que lapplication est lance aprs
modification de la taille de la mmoire, il est possible quune partie importante du temps
dexcution soit pris par la lecture des fichiers en mmoire relle. Cependant, les fichiers
pouvant rester en mmoire aprs lexcution de lapplication, les temps dexcution suivants
peuvent tre plus courts. Lautre raison dexcuter plusieurs fois lapplication est davoir une
ide de ses performances moyennes avec une taille donne de mmoire. Le ESCALA et
7-7
AIX sont des systmes complexes, et il est impossible de dupliquer ltat du systme
chaque fois que votre application est excute. Ainsi, la performance dune application peut
varier de faon significative dune excution lautre.
En rsum, vous devez tenir compte des tapes suivantes pour activer rmss :
sil existe plusieurs tailles de mmoire examiner :
{
changez la taille de la mmoire via rmss c ;
lancez lapplication une premire fois ;
pour plusieurs excutions :
{
lancez vmstat s pour obtenir le nombre avant de transferts
en mmoire despace de pagination ;
lancez et chronomtrez lapplication ;
lancez vmstat s pour obtenir le nombre aprs de transferts
en mmoire despace de pagination ;
soustrayez la valeur avant de la valeur aprs pour
obtenir le nombre de transferts en mmoire pendant
lexcution ;
divisez le nombre de transferts en mmoire despace de pagination par
le temps de rponse
pour obtenir le taux de transferts en mmoire de lespace
de pagination ;
}
}
lancez rmss r pour restaurer la taille mmoire normale (ou ramorcez)
Le calcul du nombre dE/S de pagination (aprs avant) peut tre automatis via le script
vmstat.sh inclus dans le module PerfPMR.
Exploitation de rmss pour lancer une commande avec des tailles de mmoire
diffrentes
Les indicateurs s, f, d, n et o sont exploits pour activer rmss comme programme
pilote : rmss excute une application spcifie avec des tailles de mmoire diffrentes et
affiche des statistiques sur ses performances pour chaque taille de mmoire. La syntaxe
pour ce type dactivation de rmss est la suivante :
rmss [ s smemsize ] [ f fmemsize ] [ d memdelta ]
[ n numiterations ] [ o outputfile ] command
Lindicateur n permet de spcifier le nombre dexcutions et mesure le temps dexcution
de la commande pour chaque taille de mmoire. o spcifie le fichier dans lequel crire le
compte rendu rmss ; command est lapplication lancer et chronomtrer pour chaque
taille de mmoire. Ces indicateurs sont dtaills plus loin.
Les indicateurs s, f et d permettent de spcifier les diffrentes tailles de mmoire : s la
taille de dpart, f la taille finale et d la diffrence entre les tailles. Toutes ces valeurs sont
des nombres entiers ou dcimaux, en mgaoctets. Par exemple, pour lancer et mesurer
une commande avec 24, 20, 16, 12 et 8 Mo, utilisez la combinaison suivante :
s 24 f 8 d 4
De mme, pour les tailles 16, 24, 32, 40 et 48 Mo, la combinaison est la suivante :
s 16 f 48 d 8
Si vous omettez lindicateur s, rmss dmarre avec la taille mmoire actuelle de la
machine. Si vous omettez lindicateur f, rmss sarrte 8 Mo. Si vous omettez
lindicateur d, la valeur par dfaut (8 Mo) est applique.
Quelles sont les valeurs possibles pour s, f et d ? Le plus simple consiste choisir les
tailles mmoire des ESCALA censs faire tourner lapplication concerne. Cependant, une
incrmentation infrieure 8 Mo peut tre utile, car elle vous donne une ide de la marge
de manuvre dont vous disposez lorsque vous fixez votre choix sur une taille.
Par exemple, si une application donne semballe 8 Mo mais fonctionne sans transferts
7-8
7-9
16,00 Mb.
Memory size
Avg. Pageins Avg. Response Time Avg. Pagein Rate
(megabytes)
(sec.)
(pageins / sec.)
16.00
115.0
123.9
0.9
15.00
112.0
125.1
0.9
14.00
179.0
126.2
1.4
13.00
81.0
125.7
0.6
12.00
403.0
132.0
3.1
11.00
855.0
141.5
6.0
10.00
1161.0
146.8
7.9
9.00
1529.0
161.3
9.5
8.00
2931.0
202.5
14.5
Ce compte rendu comporte quatre colonnes : la premire indique la taille de la mmoire, et
la colonne Avg. Pageins le nombre moyen de transferts en mmoire au cours de
lexcution de lapplication avec cette taille de mmoire. Il est important de noter que Avg.
Pageins fait rfrence toutes les oprations de transfert en mmoire, y compris le code,
les donnes et les fichiers lus partir de tous les programmes, qui se sont droules en
mme temps que lapplication. La colonne Avg. Response Time indique la dure
moyenne dexcution de lapplication, tandis que Avg. Pagein Rate indique le taux
moyen de transferts de pages.
Etudions dabord la colonne Avg. Pagein Rate. Entre 16 et 13 Mo, le taux de transfert
est assez rduit (< 1,5 transfert/s). Entre 13 et 8 Mo, ce taux augmente, dabord
graduellement, puis plus rapidement lorsque lon sapproche de 8 Mo. La colonne Avg.
Response Time a la mme structure : relativement bas au dpart, puis de plus en plus
important au fur et mesure que la taille de la mmoire tend vers 8 Mo.
Ici, le taux de transfert en mmoire dcrot avec le passage de la taille de la mmoire de
14 Mo (1,4 transfert/s) 13 Mo (0,6 transfert/s). Il ny a pas de quoi salarmer : il est
impossible dobtenir des rsultats uniformes avec un systme rel. Lessentiel est que le
taux de transfert en mmoire reste relativement bas pour une mmoire de 14 Mo et de
13 Mo.
Nous pouvons dduire quelques remarques de ce compte rendu. Si la performance dune
application est juge inacceptable 8 Mo (ce qui est probable), le fait dajouter de la
mmoire amliore cette performance de faon significative. Le temps de rponse varie
entre 124 secondes pour 16 Mo et 202 secondes pour 8 Mo, ce qui constitue une
augmentation de 63 %. Dun autre ct, si la performance est juge inacceptable 16 Mo,
lajout de mmoire ne lamliore pas beaucoup car, cette taille, les transferts en mmoire
ne ralentissent pas le programme de faon significative.
Exemples dexploitation des indicateurs s, f, d, n et o
Pour connatre les performances du script shell ccfoo qui comprend la commande
cc O c foo.c avec 16, 14, 12, 10, 8 et 6 Mo de mmoire, lancer et mesurer la
commande deux fois pour chaque taille de mmoire, puis crire le compte rendu dans le
fichier cc.rmss.out, entrez :
7-10
16,00 Mb.
16.00
0.0
0.4
0.0
14.00
0.0
0.4
0.0
12.00
0.0
0.4
0.0
10.00
0.0
0.4
0.0
8.00
0.5
0.4
1.2
6.00
786.0
13.5
58.4
Simulated final memory size.
11,00 Mb.
11.00
0.0
0.4
0.0
10.00
0.0
0.4
0.0
9.00
0.5
0.4
1.1
8.00
0.0
0.4
0.0
7.00
207.0
3.7
56.1
6.00
898.0
16.1
55.9
5.00
1038.0
19.5
53.1
Simulated final memory size.
7-11
48.00 Mb.
48.00
0.0
2.7
0.0
40.00
0.0
2.7
0.0
32.00
0.0
2.7
0.0
24.00
1520.8
26.9
56.6
16.00
4104.2
67.5
60.8
8.00
4106.8
66.9
61.4
48.00 Mb.
48.00
373.0
25.5
14.6
40.00
377.0
27.3
13.8
32.00
376.0
27.5
13.7
24.00
370.0
27.6
13.4
16.00
376.0
27.3
13.8
8.00
370.0
27.1
13.6
4.50
1329.0
57.6
23.1
Comme dans le premier exemple, les temps de rponse moyens et les valeurs du taux de
transfert en mmoire restent presque stables avec la diminution de la taille de la mmoire
jusqu 4,5 Mo, seuil partir duquel les deux paramtres augmentent normment.
Cependant, le taux de transfert en mmoire est relativement lev (presque 14 transferts/s)
partir de 48 Mo et jusqu 8 Mo. La conclusion est que, avec certaines applications,
aucune taille de mmoire nest dans la pratique suffisante pour liminer les transferts en
7-12
mmoire, car les programmes sont euxmmes trs consommateurs dE/S. Parmi les
programmes courants trs consommateurs dE/S, se trouvent les programmes qui balayent
ou accdent en mode alatoire de nombreuses pages de fichier trs volumineux.
Conseils dutilisation des indicateurs s, f, d, n et o
Lune des fonctions utiles de rmss, exploit de cette faon, est quil peut tre interrompu
(par la touche dinterruption, CtrlC, par dfaut) sans dtruire le compte rendu crit dans
le fichier de sortie. Outre lcriture du compte rendu dans le fichier sortie, rmss redfinit la
taille de la mmoire celle de la mmoire physique de la machine.
Vous pouvez lancer rmss en arrire-plan, mme aprs vous tre dconnect, via la
commande nohup. Pour ce faire, faites prcder la commande rmss de nohup, et
terminez la commande par un perlute (&) :
# nohup rmss s 48 f 8 o foo.out foo &
7-13
THRASH
p
m
PROC MULTI
4
2
SUSP
w
e
WAIT GRACE
1
2
FORK
f
TICKS
10
SCHED
t
TIME_SLICE
0
7-14
soit tu par cette fonction. Si vous lancez rmss pour connatre les effets de la diminution
des tailles de mmoire, il est prfrable de dsactiver le contrle de charge mmoire pour
viter quil ninterfre avec vos mesures.
Si la dsactivation du contrle de charge mmoire augmente le nombre de situations
demballement (avec un temps de raction amoindri), alors le contrle de charge mmoire
joue un rle actif de soutien dans le systme. Dans ce cas, loptimisation des paramtres de
contrle de charge mmoire ou lajout de mmoire RAM peut amliorer les
performances.
La dfinition du niveau de multiprogrammation minimum, m, vite aux m processus dtre
suspendus. Supposons quun administrateur systme sache quau moins dix processus
doivent toujours tre rsidants et actifs en RAM pour de bonnes performances, et
souponne le contrle de charge mmoire de suspendre les processus de faon trop
brutale. Si schedtune m 10 est lanc, le systme ne suspendra jamais tant de processus
que moins de dix processus restent en comptition pour accder la mmoire.
Le paramtre m ne tient pas compte du noyau, des processus fixs en RAM par lappel
systme plock, des processus priorit fixe une valeur infrieure 60 et ceux en
attente dvnements. La valeur par dfaut du systme m=2 permet dassurer que le noyau,
les processus fixs et deux processus utilisateurs feront toujours partie des processus en
comptition pour laccs la RAM.
La valeur m=2, adapte aux configurations mono-utilisateur de bureau, est souvent
insuffisante pour les configurations multiutilisateurs plus importantes ou les serveurs
disposant de grandes quantits de RAM. Sur ces systmes, affecter la valeur 4 ou 6 m
peut amliorer les performances.
Lorsque vous avez dtermin le nombre de processus susceptibles de fonctionner sur le
systme pendant les pics dactivit, ajoutez schedtune la fin du fichier /etc/inittab, pour
vous assurer quil sera bien excut chaque amorage du systme et que les paramtres
par dfaut seront restaurs. Par exemple, la ligne /etc/inittab suivante fait passer le niveau
minimum de multiprogrammation 4 sous AIX version 4.1 :
schedtune:2:wait:/usr/samples/kernel/schedtune m 4
La ligne /etc/inittab correspondante sous la version 3.2.5 serait :
schedtune:2:wait:/usr/lpp/bos/samples/schedtune m 4
Noubliez pas que cette ligne ne doit pas tre utilise sur une autre version dAIX sans
consultation pralable de la documentation.
Alors quil est possible de modifier les paramtres qui contrlent le nombre dinterruptions
des processus et le critre de slection des processus interrompre, il est impossible de
prvoir avec prcision leffet de telles modifications sur une configuration et une charge de
travail particulires. Le choix des paramtres par dfaut est dlicat et requiert des outils de
mesure sophistiqus et une observation attentive des charges de travail rcurrentes. Soyez
trs prudent si vous envisagez dajuster des paramtres de contrle de charge mmoire
autres que ceux dtaills ici.
7-15
7-16
cpu
us sy id wa
0 0 99 0
1 3 96 0
3 9 54 34
22 14 0 64
43 16 0 42
30 15 0 55
50 22 0 27
57 9 0 34
82 8 0 11
79 11 0 11
94 6 0 0
96 4 0 0
91 8 0 1
91 9 0 0
7-17
# vmtune
minperm maxperm minpgahead maxpgahead minfree maxfree numperm
1433
5734
2
16
128
144
3497
number of memory frames = 8192
number of bad memory pages = 0
maxperm=70.0% of real memory
minperm=17.5% of real memory
La colonne numperm donne le nombre de pages de fichier en mmoire, 3497, soit 42,7 %
de mmoire relle. Si la charge de travail exploite peu de fichiers rcemment lus ou crits, il
est possible de rduire la quantit de mmoire utilise cet effet. La commande :
# vmtune p 15 P 40
dfinit minperm 15 % et maxperm 40 % de mmoire relle. Cela permet dassurer que
VMM ne vole les trames des pages de fichier que lorsque le rapport pages de
fichier/mmoire totale dpasse 40 %. A linverse, si lapplication renvoie frquemment un
jeu rduit de fichiers existants (spcialement si ces fichiers font partie dun systme de
fichiers mont NFS), il est possible daffecter plus despace pour la mise en mmoire cache
locale des pages de fichier avec :
# vmtune p 30 P 60
Voir aussi
Commandes schedtune et vmtune.
7-18
Prinstallation
La configuration des systmes de fichiers a un impact non ngligeable sur lensemble des
performances du systme et toute modification intervenant aprs linstallation prend
beaucoup de temps. Dcider du nombre et du type des disques fixes ainsi que de la taille et
du placement des espaces de pagination et des volumes logiques sur ces disques est de ce
fait une opration critique de la prinstallation.
Pour des prcisions sur la planification de la configuration des disques au moment de la
prinstallation, reportez-vous Prinstallation du disque page 4-24.
8-1
tin
0.0
Disks:
hdisk0
hdisk1
hdisk2
cd0
tout
3.2
% tm_act
0.0
0.1
0.2
0.0
cpu:
% user
0.2
% sys
0.6
Kbps
0.3
0.1
0.8
0.0
tps
0.0
0.0
0.1
0.0
msps
% idle
98.9
Kb_read
29753
11971
91200
0
% iowait
0.3
Kb_wrtn
48076
26460
108355
0
Le premier, rcapitulatif, indique lquilibre (ou ici le dsquilibre) global des E/S sur chaque
disque. hdisk1 est quasi inutilis alors que hdisk2 reoit prs de 63 % du total des E/S.
Le deuxime relev indique lintervalle de 5 secondes pendant lequel cp a t excut. Les
donnes doivent tre tudies avec attention. La dure dexcution de ce cp a t denviron
2,6 secondes. Ainsi, 2,5 secondes de haute activit dE/S ont t compenses par
2,5 secondes de temps inoccup pour arriver aux 39,5 % iowait relevs. Un intervalle
plus court aurait permis de caractriser plus prcisment la commande elle-mme, mais cet
exemple illustre les prcautions prendre lors de lexamen de relevs indiquant des
moyennes dactivit.
8-2
USED
USED
USED
USED
USED
USED
USED
USED
USED
110
1117
USED
USED
USED
USED
USED
USED
USED
USED
USED
USED
USED
USED
USED
USED
USED
USED
USED
1827
2834
USED
USED
USED
USED
USED
USED
USED
USED
USED
USED
USED
USED
USED
USED
USED
USED
3544
4550
USED
0052
USED
0053
USED
0054
USED
0055
USED
0056
USED
0057
USED
0058
USED
USED
USED
5160
6167
0059
0069
0060
0070
0061
0071
0062
0072
0063
0073
0064
0074
0065
0075
0066
0067
0068
6877
7884
Le mot USED signifie que la partition physique est utilise par un volume logique autre que
hd11. Les chiffres indiquent la partition logique de hd11 affecte cette partition physique.
Pour consulter le reste de hd11 sur hdisk1, entrez :
$ lslv p hdisk1 hd11
qui gnre :
hdisk1:hd11:/home/op
0035 0036 0037 0038
0045 0046 0047 0048
0039
0049
0040
0050
0041
0051
0042
0043
0044
110
1117
USED
USED
USED
USED
USED
USED
USED
USED
USED
USED
USED
USED
USED
USED
USED
USED
USED
1827
2834
USED
USED
USED
USED
USED
USED
USED
USED
USED
USED
USED
USED
USED
USED
USED
USED
3544
4550
0001
0011
0002
0012
0003
0013
0004
0014
0005
0015
0006
0016
0007
0017
0008
0009
0010
5160
6167
0018
0028
0019
0029
0020
0030
0021
0031
0022
0032
0023
0033
0024
0034
0025
0026
0027
6877
7884
Nous constatons que le volume logique hd11 est rparti sur le volume physique hdisk1,
ses premires partitions logiques se trouvant dans les zones mdianes-internes et internes
de hdisk1, et les partitions 35 51, dans les zones externes. Un travail qui accde hd11
de faon alatoire subit inutilement des attentes dE/S, tandis que laccesseur disque va et
vient entre les diffrentes zones de hd11. Ces relevs montent galement quil nexiste
aucune partition physique libre ni sur hdisk0 ni sur hdisk1.
8-3
Si nous examinons hd2 (volume logique contenant le systme de fichiers /usr) sur hdisk2
via :
$ lslv p hdisk2 hd2
nous dcouvrons quelques partitions physiques libres (FREE) :
hdisk2:hd2:/usr
USED USED USED
FREE FREE FREE
FREE FREE FREE
FREE FREE FREE
FREE
USED
FREE
FREE
FREE
FREE
FREE
FREE
FREE
FREE
FREE
FREE
FREE
FREE
FREE
FREE
FREE
FREE
FREE
FREE
FREE
FREE
FREE
FREE
FREE
FREE
FREE
FREE
FREE
110
1120
2130
3140
4141
USED
USED
FREE
FREE
FREE
USED
USED
FREE
FREE
USED
USED
FREE
FREE
USED
USED
FREE
FREE
USED
USED
FREE
FREE
USED
USED
FREE
FREE
USED
FREE
FREE
FREE
USED
FREE
FREE
FREE
USED
FREE
FREE
FREE
USED
FREE
FREE
FREE
4251
5261
6271
7281
8282
USED
0009
USED
0025
USED
0010
0016
0026
0001
0011
0017
0027
0002
0012
0018
0028
0003
0013
0019
0029
0004
0014
0020
0030
0005
0015
0021
0031
0006
USED
0022
0032
0007
USED
0023
0033
0008
USED
0024
0034
8392
93102
103112
113122
0035
0045
0055
0065
0075
0036
0046
0056
0066
0037
0047
0057
0067
0038
0048
0058
0068
0039
0049
0059
0069
0040
0050
0060
0070
0041
0051
0061
0071
0042
0052
0062
0072
0043
0053
0063
0073
0044
0054
0064
0074
123132
133142
143152
153162
163163
0076
0086
0096
FREE
FREE
0077
0087
0097
FREE
0078
0088
0098
FREE
0079
0089
0099
FREE
0080
0090
0100
FREE
0081
0091
FREE
FREE
0082
0092
FREE
FREE
0083
0093
FREE
FREE
0084
0094
FREE
FREE
0085
0095
FREE
FREE
164173
174183
184193
194203
204204
0158401591 hdisk0
8 blks,
0162401671 hdisk0
48 blks,
0172802539 hdisk0
812 blks,
32 KB,
192 KB,
3248 KB,
Logical blocks
0,9%
0104001047
5,5%
0108001127
93.5%
0118401995
8-4
automatiquement les pages concernes lorsque le fichier est cr. Si toutefois un fichier
de ce type est lu squentiellement, via la commande cp ou tar, par exemple, lespace
entre les articles est interprt comme des zros binaires. Aussi, le rsultat dune
commande cp peut-il tre bien plus grand que le fichier dentre, bien que la quantit de
donnes nait pas vari.
Sous AIX version 4.1, la commande fileplace est intgre la bote outils PTX
(Performance Toolbox for AIX). Pour savoir si fileplace est disponible, entrez :
lslpp lI perfagent.tools
Si le module est install, fileplace est disponible.
USED
FREE
FREE
FREE
USED
FREE
FREE
FREE
USED
FREE
FREE
FREE
USED
FREE
FREE
FREE
USED
FREE
FREE
FREE
FREE
FREE
FREE
FREE
FREE
FREE
FREE
FREE
110
1120
2130
3140
4141
USED
USED
FREE
FREE
FREE
USED
USED
FREE
FREE
USED
USED
FREE
FREE
USED
USED
FREE
FREE
USED
USED
FREE
FREE
USED
USED
FREE
FREE
USED
FREE
FREE
FREE
USED
FREE
FREE
FREE
USED
FREE
FREE
FREE
USED
FREE
FREE
FREE
4251
5261
6271
7281
8282
USED
0009
0019
0029
USED
0010
0020
0030
0001
0011
0021
0031
0002
0012
0022
0032
0003
0013
0023
0033
0004
0014
0024
0034
0005
0015
0025
0035
0006
0016
0026
0036
0007
0017
0027
0037
0008
0018
0028
0038
8392
93102
103112
113122
0039
0049
0059
0069
0079
0040
0050
0060
0070
0041
0051
0061
0071
0042
0052
0062
0072
0043
0053
0063
0073
0044
0054
0064
0074
0045
0055
0065
0075
0046
0056
0066
0076
0047
0057
0067
0077
0048
0058
0068
0078
123132
133142
143152
153162
163163
0080
0090
0100
FREE
FREE
0081
0091
FREE
FREE
0082
0092
FREE
FREE
0083
0093
FREE
FREE
0084
0094
FREE
FREE
0085
0095
FREE
FREE
0086
0096
FREE
FREE
0087
0097
FREE
FREE
0088
0098
FREE
FREE
0089
0099
FREE
FREE
164173
174183
184193
194203
204204
La fragmentation des partitions physiques dans hd2, observe sur le relev prcdent, a
disparu. Nous navons toutefois affect aucune fragmentation au niveau du bloc physique
existant ventuellement dans le systme de fichiers /usr. Dans la mesure o la plupart des
fichiers dans /usr sont crits une fois, pendant linstallation du systme, et ne sont plus mis
jour ensuite, /usr a peu de chance de subir des fragmentations. Ce qui nest pas le cas
des donnes utilisateur dans le systme de fichiers /home.
8-5
6029960306 hdisk1
8 blks,
6030861167 hdisk1
860 blks,
32 KB,
3440 KB,
0,9%
99.1%
Logical blocks
0855508562
0856409423
8-6
cpu
us sy id wa
0 1 99 0
64 12 15 10
92 6 0 2
84 6 0 10
85 6 0 9
93 5 0 2
47 9 11 34
1 1 98 1
Les relevs avant et aprs vmstat s suivants indiquent les cumuls dactivits de
pagination. Noubliez pas que ce sont les valeurs de paging space page ins et
. . outs qui reprsentent lactivit dE/S relle. Les dcomptes (non qualifis) de
page ins et de page outs indiquent le total des E/S (dans lespace de pagination,
mais aussi E/S normales de fichiers galement traites par le mcanisme de pagination).
(Les informations ne relevant pas de notre propos ont t supprimes des relevs.)
$ vmstat s
.
6602 page ins
3948 page outs
544 paging space page ins
1923 paging space page outs
71 total reclaims
.
.
$ vmstat s
.
7022 page ins
4146 page outs
689 paging space page ins
2032 paging space page outs
84 total reclaims
.
.
Le fait quil y ait eu plus de pages dcharges que de pages charges au cours de la
compilation laisse supposer que le systme a t restreint la limite de son point
demballement. Certaines pages ont t rfrences deux fois car leur trame a t vole
avant la fin de leur utilisation (cest--dire avant toute modification).
vmstat s >statout
testpgm
sync
vmstat s >> statout
egrep ins|outs statout
gnre un relev avant et aprs, indiquant les cumuls dactivits disque, tels que :
5698
5012
0
32
6671
5268
8
225
page ins
page outs
paging space
paging space
page ins
page outs
paging space
paging space
page ins
page outs
page ins
page outs
8-7
0.1
26
0
0984 persistent
/dev/hd1:25
0.0
1
0
34ba .indirect
/dev/hd1:4
Most Active Logical Volumes
0.66
216
0 357.0 /dev/hd1
/home
Most Active Physical Volumes
0.65
216
0 357.0 /dev/hdisk1
320 MB SCSI
33.045
9.5
0.000
0.0
8-8
32 sdev
25.369 sdev
8.3
5.608
64 sdev
15.4
1760 sdev
494.9
2 sdev
64.856 sdev
0.8
22.295
Le relev Most Active Segments donne la liste des fichiers les plus actifs. Pour
identifier les fichiers inconnus, vous pouvez traduire le nom du volume logique, /dev/hd1,
vers le point de montage du systme de fichiers, /home, et lancer la commande find :
# find /home inum 25 print
qui renvoie :
/home/waters/smit.log
Lancer filemon sur des systmes traitant de vritables travaux gnre des relevs bien
plus longs, avec lventualit de devoir agrandir lespace du tampon de suivi.
La consommation despace et de temps CPU par filemon peuvent entraner une srieuse
dgradation des performances : testez filemon sur un systme non productif avant de vous
aventurer sur un systme rellement exploit.
Remarque : Bien que filemon indique la moyenne, le minimum, le maximum et la
dviation standard dans ses rubriques relatives aux statistiques, ces rsultats ne
peuvent servir de base la dfinition dintervalles fiables ou dautres conclusions
statistiques formelles. La rpartition des points de donnes nest en gnral ni alatoire
ni symtrique.
8-9
Si les accs sont essentiellement de type alatoire, envisagez dajouter des disques et
de mieux rpartir les fichiers concerns.
Si les accs effectus par le travail sont majoritairement squentiels et impliquent
plusieurs units de disque, envisagez dajouter une ou plusieurs cartes disque. Il peut
tre intressant de construire un volume logique rparti, pour les fichiers squentiels
volumineux dont les performances sont critiques.
La section suivante donne plus de prcisions sur les ratios units/cartes disque.
Extension de la configuration
Malheureusement, toute opration doptimisation des performances a des limites. La
question devient alors : De quel matriel aije besoin, en quelle quantit et comment en
tirer le maximum ? La question est particulirement pineuse avec des travaux limits au
niveau des disques, du fait du nombre de variables. Pour amliorer les performances de ce
type de travaux, vous pouvez :
Ajouter des units de disque et y rpartir les donnes : la charge des E/S est ainsi
divise entre davantage daccesseurs.
Acqurir des units de disque plus rapides pour complter ou remplacer les units
existantes, pour les donnes trs sollicites.
Ajouter une ou plusieurs cartes disque SCSI pour connecter les units nouvelles et/ou
existantes.
Ajouter de la RAM au systme et augmenter les valeurs des paramtres VMM minperm
et maxperm pour amliorer la mise en mmoire cache des donnes trs sollicites.
Vu la complexit de la question, troitement lie limportance de la charge de travail et de
la configuration, et vu la rapidit dvolution de la vitesse des disques, des cartes et des
processeurs, nous ne vous donnerons pas ici de consignes prcises, mais de simples
conseils de base.
Si vous cherchez optimiser les accs squentiels :
Ne raccordez pas plus de trois units (nouvelles) de 1 Go une carte disque SCSI2
donne.
Les performances maximales dune carte disque SCSI2, en traitement squentiel
continu, dans des conditions idales, sont denviron 6,8 Mo/s.
Si vous cherchez optimiser les accs squentiels :
Ne raccordez pas plus de six units (nouvelles) de 1 Go une carte disque SCSI2
donne.
Les performances maximales dune carte disque SCSI2, en traitement alatoire (sur
des pages de 4 ko) continu, dans des conditions idales, sont denviron 435 pages/s.
Pour obtenir une analyse plus fine de votre configuration et de votre charge de travail, vous
pouvez utiliser un simulateur, tel BEST/1.
Voir aussi
Commandes backup, fileplace, lslv, lsps, lspv, reorgvg, smit et unmount.
Performances du gestionnaire de mmoire virtuelle (VMM)
Programmes CPU limite
Position et taille des espaces de pagination
8-10
B C
F
...
numro
page
1 2 3
15 16
23
8-11
Des valeurs suprieures de maxpgahead peuvent tre utilises sur des systmes o
les performances en mode squentiel des volumes logiques rpartis sont dune
importance capitale.
Donner minpgahead la valeur 0 annihile de fait le mcanisme. Ce qui peut avoir de
fcheuses consquences sur les performances.
La valeur par dfaut (8) de maxpgahead est celle qui entrane les performances
maximales des E/S squentielles pour les units de disque courantes.
Le passage de la valeur de lecture anticipe de minpgahead maxpgahead est
suffisamment rapide : pour les fichiers de taille courante, il ny a aucun intrt
augmenter la valeur de minpgahead.
8-12
Exemple
Leffet de la rgulation sur les performances peut tre tudi en lanant une session vi sur
un nouveau fichier, tandis quun autre processus copie (via cp) un fichier de 64 Mo. La
copie a lieu du disk1 vers le disk0 et lexcutable vi rside sur le disk0. Pour que la
session vi dmarre, elle doit se charger ellemme et effectuer quelques autres E/S, ce
quelle effectue en mode alatoire, une page la fois. Cette opration mobilise environ
50 E/S physiques, qui peuvent tre termines en 0,71 secondes, sous rserve quil ny ait
de concurrence pour laccs au disque. Si le niveau haut est dfini 0 (valeur par dfaut),
les critures logiques rsultant de cp passent avant les critures physiques et une longue
file dattente se construit. Chaque E/S initie par vi doit attendre son tour dans la file avant
que lE/S suivante puisse tre mise et vi ne peut ainsi pas dmarrer avant la fin de cp.
La figure Rsultats dun test de rgulation dE/S illustre les dlais dexcution de cp et
dinitialisation de vi avec diffrents paramtres de rgulation. Cette tude a t effectue
sur un Modle 530 quip de deux disques de 857 Mo et de 32 Mo de mmoire vive.
Niveau
haut
Niveau
bas
cp (s)
vi (s)
0
0
0
0
50
50,2
9
17
17
33
33
6
12
8
24
16
76.8
57.9
63.9
52.0
55.1
vi non fait
vi termin aprs cp
est termin
2.7
3.6
3.4
9.0
4.9
8-13
Niveau
bas
cp (s)
vi (s)
0
0
0
0
50
50,2
9
17
17
33
33
6
12
8
24
16
76.8
57.9
63.9
52.0
55.1
vi non fait
vi termin aprs cp
est termin
2.7
3.6
3.4
9.0
4.9
8-14
lment 2
lment 3
premire bande
lment 4
...
lment 5
...
lment 6
...
deuxime bande
lment n
lment n+1
lment n+2
lment n+3
lment n+4
lment n+5
premier
volume
physique
premier
volume
physique
deuxime
volume
physique
.
.
.
deuxime partition logique
8-15
taille dlment Bien quen thorie toute puissance de 2 comprise entre 4 et 128 ko
de bande
convienne, vous devez tenir compte des lectures anticipes, puisque la
plupart des lectures passeront par ce mcanisme. Lobjectif est que
chaque lecture anticipe gnre au moins une E/S sur chaque unit de
disque (idalement un nombre gal).
taille
attributs
8-16
8-17
Performances et compression
Lorsquun fichier est crit dans un systme de fichiers pour lequel la compression est
active, lalgorithme correspondant comprime les donnes par tranches de 4 096 octets
(une page) et crit les donnes compresses dans le minimum de fragments contigus.
A lvidence, si la taille de fragment du systme de fichiers est de 4 ko, il ny a pas de gain
despace disque compensant leffort de compression des donnes. (La compression et les
fragments de taille infrieure 4 ko sont une nouveaut de AIX version 4.1.)
Bien que la compression gnre un gain despace, il convient toutefois de mnager un peu
despace libre dans le systme de fichiers.
En effet, dans la mesure o le degr de compression de chaque bloc de 4096 octets
nest pas connu lavance, le systme de fichiers commence par rserver un bloc entier.
Les fragments inutiliss sont librs aprs la compression, mais la rservation initiale
peut entraner un message de type manque despace prmatur.
Il faut de lespace pour lexcution de la commande defragfs.
8-18
8-19
8-20
Performances et sync/fsync
La synchronisation force du contenu de la mmoire relle et des disques sopre de
diffrentes faons :
Un programme dapplication effectue un appel fsync() pour un fichier donn : toutes les
pages contenant des donnes modifies pour ce fichier sont alors crites sur disque.
Lcriture prend fin lorsque lappel fsync() revient au programme.
Un programme dapplication effectue un appel sync() : toutes les pages du fichier en
mmoire contenant des donnes modifies sont alors programmes pour une criture
sur disque. Lcriture ne prend pas ncessairement fin lorsque lappel sync() revient au
programme.
Un utilisateur lance la commande sync, laquelle son tour met un appel sync().
L aussi, certaines critures peuvent ne pas tre termines lorsque lutilisateur est invit
entrer une autre commande (ou que la commande suivante dun script shell est traite).
Le dmon sync, /usr/sbin/syncd, lance un appel sync() intervalle rgulier
gnralement de 60 secondes. Ceci garantit que le systme naccumule pas de
grandes quantits de donnes existant uniquement en RAM volatile.
Outre une faible consommation de CPU, une synchronisation :
regroupe les critures au lieu de les parpiller ;
crit au moins 28 ko de donnes systme, mme en labsence dactivit dE/S depuis la
dernire synchronisation ;
acclre lcriture des donnes sur disque, en annulant lalgorithme dcriture diffre.
Cet effet est particulirement visible sur les programmes qui mettent un fsync() aprs
chaque criture.
8-21
8-22
8-23
8-24
8-25
8-26
9-1
Performances UDP/TCP/IP
Pour apprhender les caractristiques des performances de UDP et de TCP/IP, quelques
notions sur larchitecture sous-jacente simposent. La figure Flux des donnes
UDP/TCP/IP illustre la structure traite ici.
tampon
denvoi
tampon de
lecture
application
espace utilisateur
copie
mbuf
espace systme
envoi socket
tampon
copie
tampon de
mbuf
rception socket
datagrammes
flux
TCP
(conformit MTU)
UDP
conformit MTU
TCP
UDP
file dentre IP
application de MTU
socket
couche ou
sous-systme
(par exemple,
NFS, DFS)
couche
TCP ou
UDP
Couche IP
couche IF
file de rception
unit
pilote
DMA
adaptateur
support
9-2
Couche socket
Les sockets fournissent linterface de programmation API au sous-systme de
communication. Il en existe plusieurs types, offrant diffrents niveaux de service par le biais
de protocoles de communication diffrencis. Les sockets de type SOCK_DGRAM utilisent
le protocole UDP. Les sockets de type SOCK_STREAM utilisent le protocole TCP.
La smantique douverture, de lecture et dcriture relative aux sockets est semblable
celle qui rgit la manipulation des fichiers.
La taille des tampons de la mmoire virtuelle du systme (cest--dire la capacit totale des
pools mbuf) utiliss en entre et sortie des sockets est limite par les valeurs par dfaut du
systme (il est possible de passer outre ces valeurs pour un socket donn par un appel la
routine setsockopt()) :
udp_sendspace Taille des tampons des sockets de datagrammes. Les valeurs par
et
dfaut sont respectivement de 9216 et 41600.
udp_recvspace
tcp_sendspace
et
tcp_recvspace
Taille des tampons des sockets de flux. Par dfaut : 16384 (les deux).
9-3
Flux denvoi
Lorsquune application crit dans un socket, les donnes sont copies de lespace
utilisateur dans le tampon denvoi du socket, dans lespace du noyau. Selon la quantit de
donnes copies, le socket les place dans le mbuf ou dans les grappes. Une fois la copie
termine, la couche socket appelle la couche transport (TCP ou UDP), et lui passe un
pointeur sur la liste des mbuf lis (chane mbuf).
Flux de rception
Du ct rception, une application ouvre un socket et y lit des donnes. Si le tampon de
rception nen contient pas, la couche socket met la routine de lapplication ltat veille
(bloqu) jusqu larrive de donnes. Lorsque des donnes arrivent, elles sont places
dans la file du tampon de rception du socket et la routine de lapplication peut tre diffuse.
Les donnes sont ensuite copies dans le tampon de lapplication (dans lespace
utilisateur), la chane mbuf est libre et le contrle revient lapplication.
Cration de socket
Sous AIX Version 4.3.1 et ultrieures, la valeur sockthresh dtermine la proportion de la
mmoire rseau du systme qui peut tre utilise avant que la cration de socket ne soit
dsactive. La valeur de sockthresh est fournie sous la forme dun pourcentage de
thewall. Elle est par dfaut de 85% et peut prendre toute valeur comprise entre 1 et 100,
condition toutefois que sockthresh ne soit pas infrieure la quantit de mmoire
actuellement utilise.
Loption sockthresh a pour but dviter que de trop nombreuses connexions soient
ouvertes, conduisant lutilisation de la totalit de la mmoire rseau disponible sur la
machine. Dans ce cas de figure, il ne resterait plus de mmoire pour les autres oprations
et la machine, bloque, devrait tre redmarre. Utilisez sockthresh pour dfinir partir
de quel point les nouveaux sockets sont refuss. Les appels vers socket() et socketpair()
choueront (erreur ENOBUFS), et les requtes de connexion entrantes seront annules de
manire transparente. Ainsi, la mmoire rseau restant disponible sur la machine pourra
tre utilise par les connexions existantes et aucun blocage de la machine ne sera
craindre.
Le dcompte netstat m sockets not created because sockthresh was
reached est incrment chaque fois que la cration dun nouveau socket est refus parce
que la quantit de mmoire rseau dj utilise est suprieure la valeur de sockthresh.
9-4
Couche UDP
UDP offre un protocole conomique pour les applications dotes de fonctions susceptibles
de traiter les incidents de communication. UDP convient bien aux applications de style
requte-rponse. Une application de ce type devant de toutes faons grer les incidents
de rponse, il suffit de peu pour lui faire grer les erreurs de communication comme une
des causes possibles dun dfaut de rponse. Cest pourquoi, outre son faible cot, des
sous-systmes tels NFS, ONC RPC, DCE RPC et DFS utilisent UDP.
Connexion
Dtection
derreur
Recouvrement
derreur
Aucun. UDP naccuse pas rception des paquets et ne dtecte pas leur
perte en cours de transmission ou par saturation du pool de tampons.
En consquence, UDP ne retransmet jamais de paquet. La reprise doit
tre excute par lapplication.
Contrle de flux
Taille des
donnes
Doit tenir dans un seul tampon. Ce qui implique que les pools de
tampons de deux cts de UDP disposent de tampons dont la taille
rponde aux besoins des applications. La taille maximale dun paquet
UDP est de 64 ko. Bien entendu, une application qui gnre des blocs
plus grands peut les scinder elle-mme en plusieurs datagrammes
ce que fait DCE, par exemple mais il est plus simple de passer
par TCP.
9-5
Flux denvoi
Si udp_sendspace est suffisamment grand pour contenir le datagramme, les donnes de
lapplication sont copies dans des mbuf de la mmoire du noyau. Si le datagramme est
plus grand que udp_sendspace, une erreur est renvoye lapplication.
Si le datagramme est suprieur ou gal 936 octets, il est copi dans une ou plusieurs
grappes de 4 ko. Le reste (et lventuel datagramme complet), de moins de 936 octets est
copi dans 14 mbufs. Par exemple, une criture de 8704 octets est copie dans deux
grappes et le reste dans trois mbuf. UDP ajoute len-tte UDP (dans le mme mbuf, si
possible), effectue un total de contrle sur les donnes et appelle la routine IP ip_output.
Flux de rception
UDP vrifie le total de contrle et met les donnes en file dattente sur le socket adquat. Si
la limite udp_recvspace est dpasse, le paquet est rejet. (Le dcompte de ces rejets est
consign par netstat s sous lintitul udp: socket buffer overflows.)
Si lapplication est en attente dun receive ou dun read sur le socket, elle est place en file
dattente dexcution. receive copie alors le datagramme dans lespace dadressage de
lutilisateur et libre le mbuf : lopration receive est termine. Normalement, le destinataire
adresse un accus de rception et un message lexpditeur.
Couche TCP
TCP fournit un protocole de transmission fiable. TCP convient aux applications qui, au
moins par priodes, sont essentiellement en mode entre ou en mode sortie. TCP assurant
que les paquets arrivent destination, lapplication est libre de la dtection derreur et
des tches de reprise. Parmi les applications exploitant le transport via TCP, citons : ftp,
rcp et telnet. DCE peut lutiliser sil est configur pour exploiter un protocole orient
connexion.
9-6
Connexion
Dtection
derreur
Recouvrement
derreur
Contrle de flux
fentre de
transmission
donnes
non acquittes
donnes
acquittes
expditeur TCP
ec5
art6
art7
application expditrice
(en veille)
art8
flux des donnes
ec5
destinataire TCP
...
art4
art6
art
espace disponible pour
donnes en transit
r
fentre de rception
application rceptrice
(en traitement)
9-7
inutilis
tcp_recvspace
initiateur
tailles
maximales
des fentres
couteur
tcp_recvspace
tcp_sendspace
Taille des fentres TCP
9-8
tcp_recvspace est, dans les deux exemples, infrieur tcp_sendspace : dans la mesure o la technique de dplacement de fentre
impose que les deux systmes aient la mme capacit de tampon disponible, la taille de la fentre est dfinie son minimum dans les deux
directions. Lespace nominal supplmentaire disponible illustr nest
jamais utilis.
Si le paramtre rfc1323 est 1, la taille maximale de la fentre TCP est
de 4 Go (et non de 64 ko).
Taille des
donnes
Flux denvoi
Lorsque la couche TCP reoit une requte dcriture de la couche socket, elle affecte un
nouveau mbuf pour les informations den-tte et copie les donnes dans le tampon denvoi
du socket, dans le mbuf den tte TCP (sil y a de la place), ou dans une nouvelle chane
mbuf. Si les donnes copies se trouvent dans des grappes, de nouvelles grappes ne sont
pas cres : un champ pointeur est dfini dans le nouvel en-tte mbuf (cet en-tte fait partie
de la structure mbuf et na aucune relation avec len-tte TCP), pointant sur les grappes
contenant les donnes, vitant ainsi la charge dune ou plusieurs copies de 4 ko. TCP
effectue ensuite un total de contrle sur les donnes, met jour les diverses variables dtat
utilises pour le contrle de flux et autres services, et, enfin, appelle la couche IP avec le
mbuf den-tte dsormais li la nouvelle chane mbuf.
Flux de rception
Lorsque la routine dentre TCP reoit des donnes dIP, elle effectue un total de contrle
sur len-tte et les donnes TCP, pour dtecter dventuelles altrations, dtermine la
connexion laquelle sont destines les donnes, supprime les informations den-tte, lie la
chane mbuf au tampon de rception du socket associ la connexion, et fait appel un
service socket pour activer lapplication (si elle est en veille, comme expliqu plus haut).
9-9
Couche IP
Le protocole Internet (IP) fournit un service datagramme de base aux couches hautes.
Sil reoit un paquet plus grand que le MTU de linterface, il le fragmente et envoie les
fragments au systme destinataire, lequel les rassemble sous leur forme dorigine. En cas
de perte dun fragment au cours de la transmission, le paquet incomplet est rejet par le
destinataire. Le dlai dattente par IP dun fragment manquant est dfini par le paramtre
ipfragttl, affich et renseign via la commande no.
La taille maximale de la file dattente de paquets IP reus de linterface rseau est
contrle par le paramtre ipqmaxlen, dfini et affich via no. Si la taille de la file dattente
en entre atteint ce chiffre, les paquets suivants sont abandonns.
Flux denvoi
Lorsque la routine de sortie IP reoit un paquet mis par UDP ou TCP, elle identifie
linterface laquelle envoyer la chane mbuf, met jour et effectue un total de contrle sur
la partie IP de len-tte, et passe le paquet la couche interface (IF).
IP dtermine le pilote et la carte dunit utiliser, en fonction du numro du rseau. La table
dinterface du pilote dfinit le MTU maximal pour ce rseau. Si le datagramme est plus petit
que le MTU, IP insre len-tte IP dans le mbuf existant, effectue un total de contrle sur
len-tte IP et appelle le pilote pour envoyer la trame. Si la file denvoi du pilote est sature,
une erreur EAGAIN est renvoye IP, qui la transmet UDP, lequel la transmet son tour
lapplication. Lexpditeur na plus qu patienter et ressayer.
Si le datagramme est plus grand que le MTU (ce qui ne se produit que dans UDP), IP le
divise en fragments de taille gale celle du MTU, ajoute chaque fragment un en-tte IP
(dans un mbuf), et appelle le pilote pour chaque trame de fragment. Si la file denvoi du
pilote est sature, une erreur EAGAIN est renvoye IP. IP rejette tous les fragments non
envoys associs ce datagramme et renvoie EAGAIN UDP, qui le transmet
lapplication expditrice. UDP renvoie EAGAIN lapplication expditrice. IP et UDP ne
plaant pas les messages en file dattente, il appartient lapplication de diffrer lenvoi et
de le tenter ultrieurement.
Flux de rception
Sous AIX version 3, lorsque la routine dentre IP reoit le contrle suite une interruption
hors niveau planifie par IF, elle te la chane mbuf de la file dattente, vrifie le total de
contrle de len-tte IP pour sassurer quil nest pas altr, et dtermine si le paquet est
destin ce systme. Dans laffirmative, et si la trame nest pas un fragment, IP passe la
chane mbuf la routine dentre TCP ou UDP.
Sous AIX version 4.1, la couche demux (dmultiplexeur couche IF dans la version 3)
appelle IP sur la routine dinterruption. Toute activit de planification ou de mise (ou retrait)
en file dattente est interrompue. IP vrifie le total de contrle de len-tte IP pour sassurer
quil nest pas altr, et dtermine si le paquet est destin ce systme. Dans laffirmative,
et si la trame nest pas un fragment, IP passe la chane mbuf la routine dentre TCP
ou UDP.
Si la trame reue est un fragment de datagramme (ce qui ne peut se produire que dans
UDP), IP bloque la trame. A rception des fragments suivants, ils sont fusionns en un
datagramme logique, lequel, une fois complet, est transmis UDP. IP bloque les fragments
dun datagramme incomplet jusqu expiration du dlai ipfragttl (spcifi via no). Le dlai
ipfragttl par dfaut est de 30 secondes (valeur ipfragttl de 60). En cas de perte de
fragments (suite un incident rseau, une insuffisance despace mbuf, une saturation de la
file de transmission, etc.), IP ne les reoit jamais. A lexpiration de ipfragttl, IP rejette les
fragments reus. Ce qui est consign par netstat s sous lintitul ip:
fragments dropped after timeout.
9-10
Flux de rception
Sous AIX version 3, lorsque la couche IF reoit un paquet du pilote dunit, elle supprime
len-tte de liaison, place la chane mbuf sur la file dattente dentre IP (par le biais de
pointeurs, et non par copie) et planifie une interruption hors niveau pour excuter le
traitement dentre IP.
Sous AIX version 4.1, lorsque la couche demux reoit un paquet du pilote dunit, elle
appelle IP sur la routine dinterruption pour excuter le traitement dentre IP.
Flux denvoi
Au niveau de la couche du pilote dunit, la chane mbuf contenant le paquet est place sur
la file de transmission. Le nombre maximal de tampons de sorties qui peut tre en file
dattente est contrl par le paramtre systme xmt_que_size. Dans certains cas, les
donnes sont copies dans les tampons DMA du pilote. La carte est ensuite appele
dmarrer les oprations DMA.
A ce niveau, le contrle revient la routine de sortie TCP ou UDP, laquelle continue
mettre tant quelle a des donnes envoyer. Le contrle revient ensuite lapplication, qui
sexcute en mode asynchrone pendant que la carte transmet des donnes. Une fois la
transmission termine, la carte interrompt le systme et les routines dinterruption dunit
sont appeles pour adapter les files de transmission et librer les mbuf qui contenaient les
donnes transmises.
Flux de rception
Lorsque des trames sont reues par une carte, elles sont transfres dans une file de
rception gre par le pilote. Cette file dattente peut tre constitue de mbuf ou dun pool
de tampons distinct gr par le pilote dunit. Dans les deux cas, les donnes se trouvent
dans une chane mbuf lorsquelles passent du pilote dunit la couche IF.
Certains pilotes reoivent les trames DMA dans une zone de mmoire fixe. Ils affectent
ensuite des mbuf et y copient les donnes. Les pilotes/cartes recevant des trames MTU
volumineuses peuvent rceptionner les trames DMA directement dans des grappes mbuf.
Le pilote passe le contrle de la trame au protocole appropri (IP dans cet exemple) en
appelant une fonction de dmultiplexage qui identifie le type de paquet et place le mbuf
contenant le tampon dans la file dentre de ce protocole. A dfaut de mbuf disponible, ou si
la file dentre du plus haut niveau est sature, les trames entrantes sont rejetes.
9-11
Recommandations
Vous pouvez viser soit un dbit maximal, soit une utilisation minimale de la mmoire. Les
conseils qui suivent sappliquent lune ou lautre des approches, parfois aux deux.
Optimisation de la mmoire
Si votre trafic est essentiellement local, optez pour la plus grande taille de MTU accepte
par le type de votre rseau : vous minimiserez la fragmentation de paquets changs par
les systmes locaux. Avec, en contrepartie, une fragmentation dans les passerelles
connectant votre rseau dautres rseaux locaux dots de MTU de taille infrieure
(voir Optimisation de la taille maximum de segment (MSS) TCP).
Chaque fois que possible, les programmes dapplication doivent lire et crire des
volumes :
9-12
9-13
Dans le cas de cartes prsentant des limites de files matrielles, la modification de ces
valeurs entrane une augmentation de la consommation de mmoire relle en raison des
blocs de contrle et tampons qui leur sont associs. Ces limites ne doivent donc tre
rehausses que si le besoin sen fait sentir ou, sur les gros systmes, si laccroissement de
lutilisation de la mmoire est ngligeable. Dans le cas de limites de files de transmission
logicielles, laugmentation de ces valeurs ne joue pas sur lutilisation de la mmoire. Elle
permet seulement de mettre en file dattente des paquets dj allous par les protocoles
des couches hautes.
9-14
9-15
Packets: 1869143
Bytes: 2309523868
Interrupts: 0
Transmit Errors: 0
Packets Dropped: 0
Receive Statistics:
Packets: 1299293
Bytes: 643101124
Interrupts: 823040
Receive Errors: 0
Packets Dropped: 0
Bad Packets: 0
Broadcast Packets: 0
Multicast Packets: 0
CRC Errors: 0
DMA Overrun: 0
Alignment Errors: 0
No Resource Errors: 0
Receive Collision Errors: 0
Packet Too Short Errors: 0
Packet Too Long Errors: 0
Packets Discarded by Adapter: 0
Receiver Start Count: 0
General Statistics:
No mbuf Errors: 0
Adapter Reset Count: 0
Driver Flags: Up Broadcast Running
Simplex 64BitSupport
Une autre mthode consiste utiliser lutilitaire netstat i. Si cet utilitaire indique une valeur
non nulle dans la colonne Oerrs pour une interface, cela signifie que vous tes en
prsence dun dpassement de file dattente en sortie. Ceci est valable pour toutes les
versions dAIX.
9-16
========
0x400000
0x1ff88000
0x1ff90000
3
3
no
0x0
250
1024
32
0x30
0
1
auto_detect
N/A
Bus Memory address of Adapter Registers
Bus Memory address of Adapter Virtual Memory
Bus Interrupt Level
Interrupt Priority
Enable ALTERNATE ATM MAC address
ALTERNATE ATM MAC address (12 hex digits)
Software Transmit Queue size
Maximum Number of VCs Needed
Minimum Guaranteed VCs Supported
Minimum 4Kbyte premapped receive buffers
Sonet or SDH interface
Provide SONET Clock
N/A
False
False
False
False
False
True
True
True
True
True
True
True
True
True
11
3
0x7a0000
0x2000
7
256
256
no
0x
100_Full_Duplex
96
False
False
False
False
False
True
True
True
True
True
True
9-17
Range
202048
20150
1664
Comment
Notes
TRANSMIT queue size
SW TX queue
RECEIVE queue size
See Note 1
RECEIVE buffer pool size On Adapter
Remarques :
1. Il sagit dune file de rception logicielle fournie uniquement des fins de compatibilit
avec les applications AIX 3.2.x utilisant linterface du gestionnaire de priphrique
rseau pour lire les paquets directement partir du gestionnaire. Cette file limite le
nombre de paquets entrants qui peuvent tre placs en attente avant dtre reus par
ces applications. Ce paramtre nest dfini que si bos.compat est install.
Cette file dattente nest pas utilise par la pile TCP/IP normale.
Feature Code: 2992
(codename Durandoak)
Ethernet HighPerformance LAN Adapter (8f95)
Parameter
Default
Range
Comment
xmt_que_size
512
202048 TRANSMIT queue size
Notes
SW queue
Range
16,32,64,128,256
16,32,64,128,256
Comment
Notes
TRANSMIT queue size
HW queue
RECEIVE queue size
HW queue
9-18
Comment
Notes
SW queue
See Note 1
Notes
SW queue
HW queue
Comment
Notes
Transmit Queue Size (in mbufs)
Receive Queue
See Note 1
Comment
Notes
9-19
Cartes PCI
Feature Code 2985
(codename Klickitat)
IBM PCI Ethernet Adapter (22100020)
Parameter
Default
tx_que_size
64
rx_que_size
32
Range
Comment
16,32,64,128,256 TRANSMIT queue size
16,32,64,128,256 RECEIVE queue size
Notes
HW Queues
HW Queues
tx_que_size
rx_que_size
receive_proc
Default Range
512 5122048
512
512
6
0128
Comment
Notes
Software Transmit Queueu size
SW Queue
Receive queue size
HW Queue
Minimum Receive Buffer descriptors
Range
4128
4128
Comment
Notes
HW Queues
HW Queues
Range
3250
1128
Comment
Notes
Transmit Queue Size
SW Queue
Receive frame count Rcv buffer pool
xmt_que_size
rx_que_size
9-20
Default
96
32
Range
Comment
Notes
322048 TRANSMIT queue size
SW Queue
32160 HARDWARE RECEIVE queue size HW queue
xmt_que_size
rx_que_size
Default
512
64
Range
322048
32512
Comment
Notes
TRANSMIT queue size SW Queue
RECEIVE queue size
HW Queue
sw_txq_size
rv_buf4k_min
Default
Range
100
04096
48(0x30) 0512(x200)
Comment
Notes
Software Transmit Queue size
SW Queue
Minimum 4Kbyte premapped receive Buffers
Rseau local
Si lautre systme est local, le MSS notifi par TCP est bas sur le MTU (maximum transfer
unit) de linterface du rseau local :
TCP MSS = MTU taille entte TCP taille entte IP.
Il sagit du maximum possible sans fragmentation IP : cette valeur est donc optimale par
dfinition, et aucune optimisation du MSS nest requise pour les rseaux locaux.
Rseau distant
Lorsque lautre extrmit se trouve sur un rseau distant, TCP sous AIX spcifie pour MSS
une valeur par dfaut de 512 octets. Cette valeur conservatoire est base sur le fait que
tous les routeurs IP prennent en charge un MTU dau moins 576 octets.
Le MSS optimal pour les rseaux distants est bas sur le plus petit MTU des rseaux
intervenant sur la route entre la source et la destination. Il sagit gnralement dun nombre
dynamique qui ne peut tre tabli que par une certaine recherche au niveau du MTU du
chemin. Le protocole TCP ne fournit aucun mcanisme permettant de dterminer ce
nombre, cest pourquoi la valeur par dfaut est couramment adopte. Il est toutefois
possible de lancer une recherche du PMTU TCP laide de la commande :
no o tcp_pmtu_discover=1
Lun des effets secondaires de ce paramtre est laugmentation de la table de routage (une
entre de plus par connexion TCP active). Loption de la commande no route_expire doit
avoir une valeur non nulle afin que toute entre de routage en mmoire cache non utilise
soit supprime de la table lissue de la dure dinactivit route_expire.
9-21
Cette valeur par dfaut, qui convient bien Internet en gnral, peut se rvler inutilement
restrictive pour les interrseaux dun domaine administratif. Dans un environnement de ce
type, les tailles des MTU des rseaux physiques constitutifs sont connues et le MTU
minimal de mme que le MSS optimal peuvent tre dtermins par ladministrateur. AIX
offre plusieurs moyens pour forcer TCP utiliser ce MSS optimal. Les htes source et cible
doivent tous deux prendre en charge ces fonctions. Dans un environnement htrogne,
multifournisseur, la disponibilit de la fonction sur les deux systmes peut tre un facteur
dterminant dans le choix de la solution.
Routes statiques
Pour passer outre la valeur par dfaut de MSS (512), il suffit de spcifier une route statique
vers un rseau distant spcifique et dassocier loption mtu la commande route pour
spcifier le MTU ce rseau. Dans ce cas, spcifiez le MTU minimal effectif de la route, au
lieu de calculer une valeur MSS.
Dans un environnement stable et limit, cette mthode permet un contrle prcis du MSS
rseau par rseau. Elle prsente nanmoins quelques inconvnients :
Elle est incompatible avec le routage dynamique.
Elle devient peu pratique si le nombre de rseaux distants devient consquent.
Les routes statiques doivent tre dfinies aux deux extrmits, pour que les deux cts
ngocient avec un MSS suprieur au MSS par dfaut.
Option tcp_mssdflt de la commande no
La valeur par dfaut (512) adopte par TCP pour les rseaux distants peut tre modifie via
le paramtre tcp_mssdflt de la commande no. La modification sapplique lensemble du
systme.
La valeur destine remplacer la valeur de MSS par dfaut doit tre la valeur minimale de
MTU diminue de 40 pour laisser la place aux en-ttes TCP et IP.
Dans un environnement o le MTU est suprieur au MTU par dfaut, cette mthode offre
lavantage dliminer la ncessit de dfinir le MSS rseau par rseau. Inconvnients :
Augmenter la valeur par dfaut peut entraner une fragmentation au niveau du routeur IP
si la destination se trouve sur un rseau rellement loign et que les MTU des rseaux
intervenants sont inconnus.
Le paramtre tcp_mssdflt doit avoir la mme valeur sur lhte destination.
Sous-rseau et option subnetsarelocal de la commande no
Il est possible de faire partager plusieurs rseaux physiques le mme numro de rseau,
par le biais de sous-rseaux (voir Adressage TCP/IP). Loption subnetsarelocal de la
commande no spcifie, sur lensemble du systme, si les sous-rseaux doivent tre
considrs comme locaux ou distants. Avec subnetsarelocal=1 (valeur par dfaut), lhte A
sur le sous-rseau 1 considre lhte B sur le sous-rseau 2 comme se trouvant sur le
mme rseau physique.
La consquence est que lorsque les htes A et B tablissent une connexion, ils ngocient le
MSS en supposant quils se trouvent sur le mme rseau. Chaque hte indique un MSS sur
la base du MTU de son interface rseau. Ce qui conduit gnralement au choix dun MSS
optimal.
Cette approche prsente plusieurs avantages :
Elle ne requiert aucun liaison statique ; MSS est automatiquement ngoci.
Elle ne dsactive ni ne supplante la ngociation du MSS par TCP : de lgres diffrences
de MTU entre rseaux adjacents peuvent ainsi tre correctement gres.
9-22
Inconvnients :
Risque de fragmentation au niveau du routeur IP lorsque deux rseaux fort MTU sont
relis via un rseau faible MTU. La figure Fragmentation intersousrseaux illustre
ce problme.
hte
A
FDDI
routeur 1
MTU = 4 352
Ethernet
routeur 2
MTU = 1 500
FDDI
hte
B
MTU = 4 352
Fragmentation inter-sous-rseaux
Dans ce scnario, les htes A et B tablissement une connexion sur la base dun MTU
commun de 4 352. Un paquet transitant de A vers B sera fragment par le routeur 1 et
dfragment par le routeur 2 (et vice versa).
Source et destination doivent considrer les sous-rseaux comme locaux.
>quit
Si le nombre rsultant est strictement positif, un dpassement a eu lieu. La longueur
maximale de cette file dattente est dfinie via la commande no. Par exemple :
no o ipqmaxlen=100
permet la mise en file dattente de 100 paquets. La valeur exacte utiliser est dtermine
par la vitesse maximale de rception en rafale. Si celle-ci ne peut tre dtermine, le
nombre de dpassement peut aider dterminer laugmentation requise. Laugmentation de
la taille de la file dattente ninduit aucune consommation mmoire supplmentaire. Cette
augmentation peut nanmoins allonger le temps pass dans le gestionnaire dinterruption
hors niveau, dans la mesure o IP doit traiter davantage de paquets dans sa file dentre.
Ce qui risque daffecter le temps CPU requis par les processus. Le choix est entre un faible
taux de rejet de paquets et la disponiblit de la CPU pour dautres traitements. Le mieux est
daugmenter ipqmaxlen par petits incrments si le choix nest pas vident.
9-23
La valeur par dfaut (1 500), qui est aussi la valeur maximale de MTU, ne doit pas tre
modifie.
La taille de bloc de lapplication doit tre un multiple de 4 096 octets.
Les paramtres relatifs lespace socket peuvent conserver leur valeur par dfaut.
Si la charge de travail prvoit une utilisation intensive de services faisant appel UDP,
tels que NFS ou RPC, il convient daugmenter la valeur de sb_max pour prendre en
compte le fait que chaque MTU de 1 500 octets utilise un tampon de 4 096 octets.
9-24
Pour ESCALA modle *90 ou plus rapide, utilisez no o rfc1323=1 pour que la taille des
tampons de socket puisse tre dfinie une valeur suprieure 64 ko. Suivez ensuite la
procdure prcdente avec nouvelle-taille au moins gal 128 ko.
9-25
9-26
agrandis de faon rpondre aux minimums dfinis par lowclust et lowmbuf. Cest la
structure VMM qui impose que cette opration soit le fait dun processus du noyau.
Le service de noyau netm limite en outre la croissance du pool de grappes. Le paramtre
mb_cl_hiwat dfinit cette limite suprieure.
Le paramtre mb_cl_hiwat contrle le nombre maximal de tampons libres que peut
contenir le pool de grappes. Lorsque le seuil dfini par mb_cl_hiwat est dpass, netm est
planifi pour librer quelques grappes et les restituer VMM.
Le systme de noyau netm est excut selon une priorit leve (fixe 37). De ce fait,
distribuer trop de netm peut avoir un effet ngatif non seulement sur les performances du
rseau, mais galement sur celles du systme pour cause de conflit avec les autres
processus utilisateur et systme. Des pools mal configurs peuvent provoquer
lemballement des netm, d des incompatibilits entre les besoins du trafic rseau et des
seuils mal dfinis. La distribution du systme de noyau netm peut tre minimise en
configurant les pools mbuf pour quils rpondent aux besoins du rseau et du systme.
La fonction de gestion mbuf se sert encore dun dernier paramtre rseau, thewall.
thewall contrle la taille de RAM maximale (en kilo-octets) susceptible dtre affecte par la
fonction de gestion mbuf partir de VMM. Ce paramtre sert viter tout dsquilibre des
ressources VMM, qui aurait un fcheux effet sur les performances systme.
input
packets
20905
17
174
248
210
239
253
246
99
13
(Total)
output
errs packets errs colls
227
3635
0
0
0
1
0
0
0
320
0
0
0
443
0
0
0
404
0
0
0
461
0
0
1
454
0
0
0
467
0
0
1
145
0
0
0
1
0
0
9-27
La commande netstat peut tre assortie dun indicateur, m, qui donne des dtails sur
lusage et la disponibilit des mbuf et des grappes :
253 mbufs in use:
50 mbufs allocated to data
1 mbufs allocated to packet headers
76 mbufs allocated to socket structures
100 mbufs allocated to protocol control blocks
10 mbufs allocated to routing table entries
14 mbufs allocated to socket names and addresses
2 mbufs allocated to interface addresses
16/64 mapped pages in use
319 Kbytes allocated to network (39% in use)
0 requests for memory denied
0 requests for memory delayed
0 calls to protocol drain routines
La ligne 16/64 mapped pages in use indique quil existe 64 grappes fixes, dont 16
sont actuellement utilises.
Ce compte rendu peut tre compar aux paramtres systme dfinis, via la commande no
a. Les lignes intressantes cet gard sont :
lowclust
lowmbuf
thewall
mb_cl_hiwat
=
=
=
=
29
88
2048
58
Il est clair que sur le systme test, les 319 Kbytes allocated to network sont trs
en-de de la valeur de thewall (2 048 ko) et que les (64 16 = 48) grappes libres sont
galement en-de de la limite mb_cl_hiwat (58).
Le compteur requests for memory denied, tenu jour par la fonction de gestion des
mbuf, est incrment chaque fois quune requte daffectation de mbuf naboutit pas.
Normalement, la valeur de requests for memory denied est 0. Si une surcharge de
trafic se produit sur un systme, les pools mbuf configurs par dfaut peuvent se rvler
insuffisants : le compteur derreur est alors incrment chaque fois quune requte
daffectation de mbuf choue. Le compteur atteint rapidement des chiffres de lordre des
milliers, compte tenu du nombre de paquets arrivant dans un court laps de temps. Les
statistiques requests for memory denied correspondent aux paquets abandonns sur
le rseau. Ces paquets supposent des retransmissions, cest--dire une baisse des
performances. Si la valeur de requests for memory denied est suprieure zro, il
peut tre utile doptimiser les paramtres mbuf voir Optimisation des pools mbuf
comment ?.
Le dcompte Kbytes allocated to the network, tenu jour par la fonction de
gestion des mbuf, reprsente la quantit de mmoire systme actuellement affecte aux
deux pools mbuf. La limite suprieure de ce dcompte, dfinie par thewall, permet
dempcher la fonction de gestion mbuf de consommer trop de mmoire physique sur un
systme. La valeur par dfaut de thewall limite cette fonction 2 048 ko (comme indiqu
sur le comte rendu gnr par la commande no a). Si la valeur de Kbytes allocated
to the network est proche de thewall, il peut tre utile doptimiser les paramtres mbuf.
Reportez-vous Optimisation des pools mbuf : comment ?.
Il est des cas o les indicateurs ci-dessus laissent supposer quil faut tendre les pools
mbuf, alors quen fait, il y a un problme systme auquel il convient dabord de remdier.
Par exemple :
manque de mmoire mbuf
donnes en attente non lues partir dun socket ou dune autre structure dattente
interne.
9-28
Une perte de mmoire mbuf dnote une situation dans laquelle un code noyau ou une
extension noyau a omis de librer une ressource mbuf et dtruit le pointeur vers
lemplacement mmoire correspondant, perdant tout jamais ladresse du mbuf. Si cette
situation est rcurrente, toutes les ressources mbuf finiront par tre inaccessibles. Si les
statistiques mbuf gnres par netstat montrent un accroissement progressif de lusage
des mbuf, naccusant jamais de baisse, ou une utilisation intensive des mbuf sur un
systme relativement peu charg, il y a sans doute une perte de mmoire mbuf.
Les dveloppeurs dextensions noyau se doivent de toujours intgrer dans leurs tests un
contrle sur les pertes de mmoire.
Il se peut galement que de nombreux mbuf restent en attente dans un socket suite une
erreur dans une application. Normalement, un programme dapplication lit les donnes dun
socket, entranant la rattribution des mbuf la fonction de gestion du mbuf.
Un administrateur peut grer les statistiques gnres par la commande netstat m et
chercher un ventuel usage intensif du mbuf alors que le trafic rseau ne le justifie pas. Il
peut galement examiner la liste des processus en cours (via ps ef) et tudier de prs
ceux qui utilisent le sous-systme rseau avec une forte consommation de temps CPU.
Il convient alors disoler lapplication en cause et de la corriger.
9-29
#!/bin/ksh
# echo Tuning mbuf pools...
# set maximum amount of memory to allow for allocation (10MB)
no o thewall=10240
# set minimum number of small mbufs
no o lowmbuf=3000
# generate network traffic to force small mbuf pool expansion
ping 127.0.0.1 1000 1 >/dev/null
# set minimum number of small mbufs back to default to prevent netm from
# running unnecessarily
no d lowmbuf
# set maximum number of free clusters before expanding pool
# (about 6MB)
no o mb_cl_hiwat=1500
# gradually expand cluster pool
N=10
while [ $N lt 1500 ]
do
no o lowclust=$N
ping 127.0.0.1 1000 1 >/dev/null
let N=N+10
done
# set minimum number of clusters back to default to prevent netm
# from running unnecessarily
no d lowclust
Vous pouvez lancer netstat m la suite du script ci-dessus pour vrifier la taille du pool
de grappes (appeles pages mappes par la commande netstat ). Pour vrifier la taille du
pool de mbuf, vous disposez de la commande crash qui permet dexaminer une structure
de donnes noyau, mbstat (voir le fichier /usr/include/sys/mbuf.h). Ladresse du noyau de
mbstat peut tre affiche dans le cadre de crash, via la commande od mbstat. Entrez
ensuite od <adresse-noyau> pour obtenir un clich du premier mot de la structure
mbstat, qui contient la taille du pool mbuf. Si vous utilisez AIX version 4.1 ou version 3.2
avec pTF U437500, le dialogue est semblable :
$ crash
> od mbstat
001f7008: 00000180
> quit
La taille du pool mbuf est ainsi de 18016 (38410).
Si vous utilisez AIX version 3.2 sans le PTF U437500, le dialogue est semblable :
$ crash
> od mbstat
000e2be0: 001f7008
> od 1f7008
001f7008: 00000180
> quit
La taille du pool mbuf est ainsi de 18016 (38410).
9-30
thewall
Objet :
Valeurs :
Affichage :
no a ou no o thewall
Modification :
no o thewall=nouvelle-valeur
nouvelle-valeur est en ko, et non en octets.
La modification est immdiate pour les nouvelles connexions.
La modification est effective jusqu lamorage systme suivant.
Diagnostics :
Aucun.
Objet :
Valeurs :
Affichage :
no a or no o sockthresh
Modification :
no o sockthresh=nouvelle-valeur
sockthresh
Aucun.
9-31
sb_max
Objet :
Valeurs :
Affichage :
no a ou no o sb_max
Modification :
no o sb_max=nouvelle-valeur
La modification est immdiate pour les nouvelles connexions.
La modification est effective jusqu lamorage systme suivant.
Diagnostics :
Aucun.
Objet :
Valeurs :
Affichage :
no a ou no o rfc1323
Modification :
no o rfc1323=nouvelle-valeur
rfc1323
Aucun.
udp_sendspace
Objet :
Valeurs :
Affichage :
no a ou no o udp_sendspace
Modification :
no o udp_sendspace=nouvelle-valeur
La modification est immdiate pour les nouvelles connexions.
La modification est effective jusqu lamorage systme suivant.
Diagnostics :
Aucun.
udp_recvspace
Objet
Valeurs :
9-32
Affichage :
no a ou no o udp_recvspace
Modification :
no o udp_recvspace=nouvelle-valeur
La modification est immdiate pour les nouvelles connexions.
La modification est effective jusqu lamorage systme suivant.
Diagnostics :
tcp_sendspace
Objet
Valeurs :
Affichage :
no a ou no o tcp_sendspace
Modification :
no o tcp_sendspace=nouvelle-valeur
La modification est immdiate pour les nouvelles connexions.
La modification est effective jusqu lamorage systme suivant.
Diagnostics :
Dbit faible
tcp_recvspace
Objet :
Valeurs :
Affichage :
no a ou no o tcp_recvspace
Modification :
no o tcp_recvspace=nouvelle-valeur
La modification est immdiate pour les nouvelles connexions.
La modification est effective jusqu lamorage systme suivant.
Diagnostics :
Dbit faible
Objet :
Valeurs :
ipqmaxlen
9-33
Affichage :
no a ou no o ipqmaxlen
Modification :
no o ipqmaxlen =nouvelle-valeur
La modification est immdiate.
La modification est effective jusqu lamorage systme suivant.
Diagnostics :
xmt_que_size
Objet :
Valeurs :
Affichage :
Modification :
Diagnostics :
netstat i
Oerr > 0
Optimisation : Augmentez la taille. Doit tre naturellement dfinie 150 sur les systmes
orients rseau, et notamment les serveurs.
Voir :
rec_que_size
Objet :
Valeurs :
Affichage :
Modification :
Diagnostics :
Aucun.
Optimisation : Augmentez la taille. Doit tre naturellement dfinie 150 sur les systmes
orients rseau, et notamment les serveurs.
Voir :
9-34
MTU
Objet :
Valeurs :
Affichage :
lsattr E l trn
Modification :
Diagnostics :
Voir aussi
Les commandes crash, ifconfig, lsattr, netstat et no.
La sousroutine setsockopt.
9-35
Optimisation de NFS
NFS fournit des programmes dun systme un accs transparent des fichiers sur un
autre systme, par le biais du montage du rpertoire distant (via mount). Normalement,
lamorage du serveur, la commande exportfs rend les rpertoires disponibles, et les
dmons grant le tl-accs (nfsd) sont lancs. De mme, le montage des rpertoires
distants et linitialisation du nombre requis de biod pour la gestion du tl-accs sont
effectus au cours de lamorage du systme client.
La figure Interaction client-serveur NFS illustre la structure du dialogue entre un serveur et
des clients NFS. Lorsquune routine dun systme client tente de lire ou dcrire un fichier
dans un rpertoire mont par NFS, la requte est rachemine du mcanisme dE/S normal
vers lun des dmons dE/S par bloc NFS du client (biod). Le biod envoie la demande au
serveur ad hoc, o il est affect lun des dmons NFS du serveur (nfsd). Pendant le
traitement de cette requte, ni le biod ni le nfsd concern nexcutent aucune tche.
client A
routine m
serveur Z
biod i
nfsd a
biod j
nfsd b
biod k
biod a
nfsd c
.
.
nfsd x
biod b
nfsd y
biod c
nfsd z
LAN
client B
routine n
9-36
Pour chaque client, estimez le nombre maximal de fichiers susceptibles dtre crits
simultanment. Configurez au moins deux biod par fichier. Si les fichiers sont
volumineux (plus de 32 ko), vous pouvez commencer avec quatre biod par fichier pour
prendre en charge les activits de lecture anticipe ou dcriture diffre. Il nest pas rare
de mobiliser cinq biod pour crire un fichier volumineux.
Sur chaque serveur, commencez par configurer autant de nfsd que la somme des biod
configurs sur les clients pour grer les fichiers partir de ce serveur. Ajoutez 20 % pour
les requtes NFS autres que de lecture/criture.
Si les stations client sont rapides, mais connectes un serveur plus lent, vous devrez
peut-tre limiter le taux de gnration des requtes NFS mises par les clients. Le mieux
est de rduire le nombre de biod sur les clients, en tenant compte de limportance
relative de la charge et du temps de rponse de chaque client.
9-37
acregmin
acregmax
acdirmin
acdirmax
Chaque fois quun fichier ou un rpertoire est mis jour, sa suppression est diffre dau
moins acregmin ou acdirmin secondes. Sil sagit dune deuxime ou nime mise jour,
lentre est conserve pendant une dure au moins gale lintervalle entre les deux
dernires mises jour, sous rserve quelle reste infrieure acregmax ou acdirmax
secondes.
9-38
no o sb_max=131072
nfso o nfs_chars=130000
stopsrc s nfsd
startsrc s nfsd
donne sb_max une valeur dau moins 100 octets suprieure la valeur souhaite de
nfs_chars, donne nfs_chars la valeur 130 972, puis arrte et relance les nfsd pour que
les nouvelles valeurs entrent en vigueur. Si vous constatez que cette modification amliore
les performances, insrez les commandes no et nfso dans /etc/rc.nfs, juste avant la
commande startsrc qui lance les nfsd.
9-39
Acclrateurs matriels
Prestoserve
Le but du produit Prestoserve est de rduire le temps de latence des critures NFS, en
proposant une mthode plus rapide que les E/S disque pour satisfaire limpratif NFS
dcritures synchrones. Il fournit de la RAM non volatile (NVRAM) dans laquelle NFS peut
crire des donnes. Les donnes sont alors considres comme en scurit et NFS peut
autoriser le client poursuivre. Les donnes sont crites ultrieurement sur un disque, en
fonction de la disponibilit des units. Enfin, il est impossible de dpasser la largeur de
bande du disque, mais dans la mesure o lessentiel du trafic NFS est en rafales,
Prestoserve permet daplanir la charge de travail sur le disque, avec des gains de
performance parfois considrables.
9-40
9-41
9-42
type de requte
composant
NFS_LOOKUP
NFS_LOOKUP
bin
NFS_LOOKUP
a.out
(non trouv)
NFS_LOOKUP
NFS_LOOKUP
bin
NFS_LOOKUP
X11
NFS_LOOKUP
NFS_LOOKUP
NFS_LOOKUP
10
NFS_LOOKUP
a.out
11
NFS_LOOKUP
12
NFS_LOOKUP
a.out
13
NFS_GETATTR
a.out
14
NFS_LOOKUP
15
NFS_LOOKUP
a.out
16
fork
17
exec
18
NFS_LOOKUP
usr
19
NFS_LOOKUP
bin
20
NFS_LOOKUP
21
NFS_LOOKUP
usr
22
NFS_LOOKUP
bin
23
NFS_LOOKUP
X11
24
NFS_LOOKUP
25
NFS_LOOKUP
26
NFS_LOOKUP
a.out
27
NFS_OPEN
28
NFS_GETATTR
29
NFS_ACCESS
30
NFS_GETATTR
a.out
31
FS_GETATTR
a.out
32
NFS_READ
33
NFS_GETATTR
a.out
34
NFS_LOOKUP
35
NFS_LOOKUP
lib
36
NFS_LOOKUP
libc.a
37
NFS_READLINK
libc.a
38
NFS_LOOKUP
usr
39
NFS_LOOKUP
ccs
40
NFS_LOOKUP
lib
9-43
41
NFS_LOOKUP
libc.a
42
NFS_OPEN
libc.a
43
NFS_GETATTR
libc.a
44
NFS_ACCESS
libc.a
45
NFS_GETATTR
libc.a
46
NFS_GETATTR
libc.a
47
NFS_CLOSE
libc.a
48
_exit
Avec une autre variable PATH, la srie doprations NFS serait diffrente. Par exemple,
avec la variable PATH .:/usr/bin:/usr/bin/X11: , le programme a.out aurait t
trouve plus rapidement. A linverse, avec ce PATH, la plupart des commandes auraient t
excutes plus lentement, car elles rsident presque toutes dans /usr/bin. Un autre
moyen rapide dexcuter le programme est dentrer ./a.out, dans la mesure o il est
inutile de parcourir lexcutable (la rsolution de bibliothque est nanmoins toujours
requise). Ajouter un nombre important de rpertoires peu utiliss au chemin (PATH) ralentit
lexcution des commandes. Ceci sapplique tous les environnements, mais est
particulirement significatif dans les environnements sans disque.
Un autre facteur prendre en compte lors du dveloppement de programmes est la
minimisation du nombre de bibliothques rfrences. Il est vident que plus il y a de
bibliothques charger, moins lexcution du programme est rapide. La variable
denvironnement LIBPATH peut galement affecter la vitesse de chargement du
programme. Soyez donc prudent lorsque vous lutilisez.
Le support NLS (National Language Support) peut aussi avoir une incidence sur lexcution
des programmes. Dans lexemple prcdent, lexcution avait lieu dans lenvironnement
local C, le plus efficace. Lexcution dans dautres environnements peut induire une
charge supplmentaire lors de laccs aux catalogues de messages.
A premire vue, lactivit NFS pour un petit programme semble disproportionne. En fait,
les performances de lexemple restent dans des normes acceptables. Noubliez pas que la
rsolution de chemin pour laccs aux fichiers est galement effectue pour les systmes
de fichiers JFS : le nombre total doprations est donc similaire. Le cache NFS assure que
les oprations NFS ne gnreront pas toutes de trafic rseau. Au total, les dlais de latence
des oprations rseau restent gnralement courts, et le cumul des dlais pour les
commandes peu lev sauf si le serveur est lui-mme surcharg.
Pagination
Les systmes sans disque AIX effectuent la pagination via le protocole NFS. La pagination
est le processus par lequel lespace de travail (variables du programme, par exemple) peut
tre crit et lu sur disque. Cette opration a lieu lorsque la somme des besoins en mmoire
des processus excuts sur un systme est suprieure la mmoire systme.
(Reportez-vous Performances du gestionnaire de la mmoire virtuelle (VMM), page 2-5.)
Les avantages de la pagination sont mitigs. Elle permet certes dviter de surcharger la
mmoire, mais gnralement aux dpens des performances. En fait, seule une faible dose
de pagination maintient des temps de rponse acceptables dans un environnement de
stations de travail.
Dans lenvironnement sans disqsue, la pagination est particulirement lente. Ceci est d au
protocole NFS qui force les critures sur disque. En pratique, on peut considrer quau
mieux, lcriture dune page prendra deux trois fois plus de temps que sur un systme
disque. Compte tenu de ce fait, il est important que les systmes sans disque disposent de
suffisamment de mmoire pour que les applications excutes naient pas besoin de
recourir la pagination. (Voir Programmes CPU limite.)
9-44
Les produits bureautiques AIXwindows favorisent les attitudes conduisant des priodes de
pagination intense sur des systmes dpourvus de mmoire suffisante. Par exemple, un
utilisateur peut lancer simultanment deux programmes : un tableur consquent dans une
fentre et une base de donnes dans une autre. Supposons quil mette jour une feuille de
calcul, attende le rsultat puis passe la fentre base de donnes pour interroger la base.
Bien que le tableur soit inactif, il occupe un espace non ngligeable. Interroger une base de
donnes requiert galement beaucoup despace. Sauf si la mmoire relle est suffisante
pour contenir ces deux programmes, les pages de mmoire virtuelle du tableur sont
pagines vers lextrieur et la base de donnes charge. A linteraction suivante de
lutilisateur avec le tableur, la mmoire occupe par la base de donnes doit tre pagine,
et le tableur recharg. En clair, les limites de cette situation sont dtermines par la
frquence de passage dune fentre lautre et par la charge qui incombe alors au serveur.
9-45
Optimisation du client
Plusieurs oprations peuvent concourir loptimisation dun client :
Ajout de mmoire client
Augmentation du nombre des dmons biod du client NFS
Modification de la configuration rseau du client
Ajout dun disque la configuration client
Si la mmoire dun client est insuffisante, lespace de travail est pagin. Ce qui peut tre
dtect via la commande vmstat s. Si lespace de travail dun client est en permanence
pagin, ajouter de la mmoire ne peut quamliorer ses performances.
Le nombre de dmons dE/S par bloc (biod) configurs sur un client limite le nombre de
requtes de lecture et dcriture NFS en suspens. Sur un systme sans disque sur lequel
NFS na pas t explicitement activ, seuls quelques biod sont disponibles. Si NFS est
activ, ce nombre augmente. Normalement, le nombre de biod disponibles par dfaut avec
NFS activ est suffisant pour une station sans disque.
Les pilotes dunit Ethernet et en anneau jeton sont assortis de paramtres qui dfinissent
la taille des files de transmission et de rception pour lunit. Ces paramtres peuvent avoir
une incidence sur les performances client. Voir Optimisation des autres couches pour
amliorer les performances NFS, page 9-39.
Ajouter un disque une station sans disque nest pas une hrsie : en fait, des tudes
marketing ont montr que les systmes sans disque sont gnralement quips dun
disque dans lanne qui suit leur achat. Ajouter un disque ne met pas en cause le principal
avantage des systmes sans disque la maintenance centralise des fichiers. Le disque
peut tre rserv la pagination. On parle alors dun systme sans donnes. Dautres
combinaisons sont possibles. Un disque peut par exemple contenir de lespace de
pagination et de lespace pour les fichiers temporaires.
Optimisation du rseau
La largeur de bande dun rseau est, nominalement, de 10 megabits/seconde. Dans la
pratique, la concurrence entre utilisateurs Ethernet rend impossible lexploitation de
lintgralit de la largeur de bande. Sachant quun disque SCSI Bull peut fournir jusqu
32 megabits/seconde, il est inquitant de voir de nombreux clients partager le mme quart
de largeur de bande dun disque. Cette comparaison ne vaut, toutefois, que pour les
applications qui effectuent des E/S disque squentielles ce qui nest pas le plus courant,
les E/S alatoires (limites en temps de recherche et dlai de rotation) tant nettement plus
frquentes. La plupart des disques SCSI ayant un dbit soutenu de 50 85 oprations
dE/S alatoires par seconde, le taux effectif dE/S alatoires dun disque est de
2 - 3 mgabits/seconde. Ainsi, une largeur de bande Ethernet est sensiblement quivalente
9-46
deux disques effectuant des E/S alatoires. Il convient den tirer une leon : les
applications effectuant des E/S squentielles sur des fichiers volumineux doivent tre
excutes sur le systme auquel est rattach le disque, et non sur une station sans disque.
Bien que le MTU (Maximum Transfer Unit) dun rseau local (LAN) puisse tre modif via
SMIT, les stations sans disque sont limites leur valeur par dfaut.
Optimisation du serveur
La configuration du serveur fait intervenir :
CPU du serveur
Configuration du disque du serveur
Configuration du NFS du serveur
Configuration de la mmoire du serveur
Configuration du rseau du serveur
La puissance de traitement de la CPU du serveur est significative car toutes les requtes
serveur font appel au service CPU. Gnralement, le traitement CPU requis par les
requtes de lecture/criture est sensiblement suprieur celui requis par les autres
requtes.
La configuration du disque du serveur est gnralement le premier goulot dtranglement
rencontr. Une technique doptimisation vidente consiste quilibrer les E/S disque de
sorte quaucune utilisation disque ne soit largement suprieure une autre. Une autre
technique est de maximiser le nombre de disques. Par exemple, deux disques de 400 Mo
offrent prs de deux fois plus de possibilits dE/S alatoires par seconde quun seul disque
de 857 Mo. En outre, avec AIX, il est possible de placer un historique du journal sur une
autre unit. Cettet opration amliore la squence dcritures NFS multiple comme suit :
Ecriture des donnes sur un disque fichier
Ecriture de lhistorique du journal sur le disque journal (pas de recherche de disque)
Ecriture des donnes daffectation de fichier sur disque fichier (recherche de disque peu
importante)
De par labsence du journal sur le disque fichier, une ou deux recherches potentiellement
longues sur le disque sont vites. (Si le fichier et lhistorique du journal se trouvaient sur un
mme disque peu charg, laccesseur passeraient continuellement de la zone de fichier la
zone de lhistorique de journal, et vice-versa.)
Le nombre dinstances du dmon NFS (nfsd) excutes sur le serveur limite le nombre de
requtes NFS excutables concuremment par le serveur. Le nombre de nfsd par dfaut
nest que de 8, ce qui nest gnralement suffisant que pour les serveurs dentre de
gamme. Le nombre de nfsd lancs chaque amorage peut tre modifi via smit nfs
(Network File System (NFS) > Configuration NFS sur ce systme).
La taille de la mmoire du serveur nest significative que pour les oprations de lecture
NFS. Dans la mesure o les critures ne peuvent tre places en mmoire cache, la taille
de la mmoire est sans incidence sur les performances relatives lcriture. Dautre part,
en supposant que certains fichiers sont utiliss rptition, plus la mmoire du serveur est
leve, plus grande est la probabilit quune lecture puisse tre satisfaite par la mmoire,
en vitant une E/S disque. Gagner une E/S disque rduit le taux dutilisation du disque,
amliore les temps de rponse pour les lectures et diminue le taux dutilisation de la CPU
du serveur. Vous disposez de la commande iostat pour tudier lactivit du disque.
Les indices suivants rvlent quun supplment de mmoire peut amliorer les
performances du serveur :
Un ou plusieurs pilotes de disque oprent presque la limite de leurs capacits
(40 85 E/S alatoires par seconde). Voir Prinstallation du disque, page 4-24.
9-47
Sur une priode de quelques minutes ou plus, le nombre doctets lus est sensiblement
suprieur au nombre doctets crits.
Comme le client, les pilotes dunit Ethernet et en anneau jeton sont limits quant au
nombre de tampons disponibles pour lenvoi des donnes. Voir Optimisation des autres
couches pour amliorer les performances NFS, page 9-39.
vi
pack
more
cat
cmp
grep
sort
join
wc
cut
diff3
cc
cp
find
ld
make
tar
ar
modr
lev
awk
diff
minimal
ls
echo
pwd
rm
ps
court
dure normale
relative sur
systme
disque
long
9-48
30
25
20
%
utilisation
CPU
15
10
5
0
dure
9-49
22
20
18
16
14
%
utilisation 12
disque
10
8
6
4
2
0
dure
270
240
210
180
Ethernet :
paquets/seconde 150
envoys et
120
reus
90
60
30
0
dure
140000
120000
100000
octets/seconde
transfrs et
reus
80000
60000
40000
20000
0
dure
9-50
25
20
%
utilisation
CPU
15
10
5
0
dure
Dveloppement de logiciels : utilisation de la CPU serveur
%
utilisation
disque
90
80
70
60
50
40
30
20
10
0
dure
Dveloppement de logiciels : utilisation du disque serveur
9-51
400
360
320
280
240
200
160
120
80
40
0
paquets
transfrs
et reus
dure
Dveloppement de logiciel : paquets/seconde (Ethernet)
octets
transfrs
et reus
360000
320000
280000
240000
200000
160000
120000
80000
40000
0
dure
Dveloppement de logiciel : octets/seconde (Ethernet)
9-52
100
90
80
%
70
dutilisation 60
moyenne
50
du serveur 40
30
20
10
0
disq
ue
CPU
nombre de clients
Utilisation moyenne du serveur
55
requte NFS
temps de
rponse en
millisecondes
45
35
25
15
nombre de clients
Temps de rponse aux requtes NFS
En supposant que le goulot dtranglement disque sest produit avec un nombre rduit de
clients pour cette charge de travail, il est facilement mesurable. La figure Utilisation
moyenne du serveur illustre lutilisation moyenne de CPU et du disque en fonction du
nombre de clients (serveur dun disque). La figure Temps de rponse aux requtes NFS
illustre lvolution du temps de rponse en fonction du nombre de clients.
Voir aussi
Optimisation de NFS
Commandes iostat, nfsstat, rm et smit.
Dmons biod and nfsd.
9-53
9-54
Rsultats
Le tableau suivant rcapitule les rsultats obtenus. Max ports: est le nombre maximal de
ports pris en charge par la carte, lorsque le dbit effectif est proche de la vitesse de la ligne.
Vitesse ligne 8/16 ports :
64 ports :
128 ports :
Send
Receive Send
Receive Send
Receive
2400 baud
Max ports:
32
16
64
64
N/A
N/A
Char/sec
7700
3800
15200
14720
Eff. Kb/sec: 2.4
2.4
2.3
2.3
CPU util. %: 5
32
9
76
9600 baud
Max ports:
32
12
56
20
128
128
Char/sec
30700
11500
53200
19200
122200
122700
Eff. Kb/sec: 9.6
9.6
9.5
9.6
9,6
9.6
CPU util. %: 17
96
25
99
21
27
19,200 baud
Max ports:
32
6
32
10
128
128
Char/sec
48900
11090
51200
18000
245400
245900
Eff. Kb/sec: 15.3
18.5
16
18
19.2
19.2
CPU util. %: 35
93
23
92
39
39
38400 baud
Max ports:
32
4
24
7
75
75
Char/sec
78400
10550
50400
15750
255200
255600
Eff. Kb/sec: 24.5
26.4
21
22.5
34
34
CPU util. %: 68
98
23
81
40
37
9-55
rduit, et on constate une importante baisse dactivit. Pour les mesures qui suivent, quatre
concentrateurs 16 ports ont t connects aux 64 ports RS-232.
9-56
9-57
9-58
Network
Process (top 20)
PID CPU Time
CPU %
CPU %
ping
12699
0.0573
1.380
0.033
trcstop
12700
0.0150
0.360
0.000
ksh
13457
0.0150
0.360
0.000
rlogind
6321
0.0127
0.306
0.088
netpmon
12690
0.0064
0.153
0.000
netw
771
0.0047
0.113
0.113
netpmon
10650
0.0037
0.090
0.000
trace
10643
0.0023
0.055
0.000
swapper
0
0.0022
0.053
0.000
writesrv
1632
0.0009
0.021
0.000
Network
FLIH
CPU Time
CPU %
CPU %
external device
0.0573
1.379
0.890
data page fault
0.0368
0.887
0.000
floating point
0.0001
0.003
0.000
Network
SLIH
CPU Time
CPU %
CPU %
clock
0.0415
0.998
0.000
tokdd
0.0064
0.154
0.154
<addr=0x00022140>
0.0008
0.019
0.000
9-59
========================================================================
Network DeviceDriver Statistics (by Device):
Xmit
Recv
Device
Pkts/s Bytes/s Util QLen
Pkts/s Bytes/s
/dev/tok0
3.37
629 0.005 0.005
16.85
1900
========================================================================
Network DeviceDriver Transmit Statistics (by Destination Host):
Host
Pkts/s Bytes/s
xactive.austin.ibm.com
1.44
390
========================================================================
Detailed Second Level Interrupt Handler CPU Usage Statistics:
SLIH: tokdd
count:
84
cpu time (msec):
avg 0.076
min 0.058
max 0.097
sdev 0.009
========================================================================
Detailed Network DeviceDriver Statistics:
DEVICE: /dev/tok0
recv packets:
70
recv sizes (bytes):
avg
112,8 min
68 max
324 sdev
75,2
recv times (msec):
avg
0,226 min
0,158 max
0,449 sdev
0,056
xmit packets:
14
xmit sizes (bytes):
avg
186,6 min
52 max
314 sdev
100,0
xmit times (msec):
avg
1,552 min
1,127 max
2,532 sdev
0,380
========================================================================
Detailed Network DeviceDriver Transmit Statistics (by Host):
HOST: xactive.austin.ibm.com
xmit packets:
6
xmit sizes (bytes):
avg
270,3 min
52 max
314 sdev
97,6
xmit times (msec):
avg
1,772 min
1,516 max
2,532 sdev
0,346
9-60
9-61
Lexemple suivant est une trame rsultant dune opration ftp. Notez que le paquet IP est la
taille du MTU pour ce rseau (1 492 octets).
Packet Number 501
TOK: =====( packet received on interface tr0 )=====Fri Dec 10 08:42:51 1993
TOK: 802.5 packet
TOK: 802.5 MAC header:
TOK: access control field = 18, frame control field = 40
TOK: [ src = 90:00:5a:4f:35:82, dst = 10:00:5a:a8:88:81]
TOK: routing control field = 08b0, 3 routing segments
TOK: routing segments [ ef31 ce61 ba30 ]
TOK: 802.2 LLC header:
TOK: dsap aa, ssap aa, ctrl 3, proto 0:0:0, type 800 (IP)
IP:
< SRC = 129.35.145.135 > (xactive.austin.ibm.com)
IP:
< DST = 129.35.145.140 > (alborz.austin.ibm.com)
IP:
ip_v=4, ip_hl=20, ip_tos=0, ip_len=1492, ip_id=34233, ip_off=0
IP:
ip_ttl=60, ip_sum=5ac, ip_p = 6 (TCP)
TCP:
<source port=20(ftpdata), destination port=1032 >
TCP:
th_seq=445e4e02, th_ack=ed8aae02
TCP:
th_off=5, flags<ACK |>
TCP:
th_win=15972, th_sum=0, th_urp=0
TCP: 00000000
01df0007 2cd6c07c 00004635 000002c2
|....,..|..F5....|
TCP: 00000010
00481002 010b0001 000021b4 00000d60
|.H........!....|
Lots of uninteresting data omitted
TCP: 00000590
63e40000 3860000f 4800177d 80410014
|c...8..H..}.A..|
TCP: 000005a0
82220008 30610038 30910020
|...0a.80..
|
9-62
Remarque : Les recommandations qui suivent sappuient sur des essais effectus sous
AIX version 4.1. Au moment o nous crivons, nous ne savons pas dans quelle mesure
elles sappliquent galement AIX version 4.1.
Du point de vue des performances, la diffrence essentielle entre DCE DFS et NFS est la
capacit du client de mise en cache de DFS. Il nest donc pas tonnant que les principales
techniques doptimisation de DFS concernent les attributs du cache client. Les paramtres
client et serveur dcrits dans ce chapitre concernent :
Cache DFS sur disque ou en mmoire
Taille du cache DFS
Taille de la tranche de cache DFS
Nombre de tranches de cache DFS
Emplacement du cache disque DFS
Taille du tampon dtat du cache DFS
Taille des articles et lectures/critures
Paramtres de communication DFS
Optimisation du serveur de fichiers DFS
Optimisation LFS DCE pour les performances DFS.
10-1
A titre de test de faisabilit, vous pouvez rduire temporairement, via rmss, la taille
effective de la mmoire en dduisant la quantit de mmoire que vous affecterez au
cache. Si vous constatez une activit de pagination ou une baisse de performances, ou
les deux, abandonnez lide de crer un cache mmoire. Reportez-vous Estimation de
la mmoire requise via rmss, page 7-6.
10-2
10-3
10-4
Lutilitaire de suivi AIX est un puissant outil dobservation du systme. Il capture un flux
squentiel dvnements horodats, fournissant un niveau de dtail extrmement fin sur
lactivit du systme. Les vnements sont restitus dans lordre chronologique et dans leur
contexte. Lutilitaire est ainsi un outil privilgi dobservation du systme et de lexcution
des applications. Dautres outils sont axs sur les statistiques (taux dutilisation du CPU,
dlai dattente des E/S, etc.), lutilitaire de suivi est lui plus spcifiquement ddi lanalyse
du pourquoi et du comment.
Le systme dexploitation est conu pour offrir une visibilit gnrale des excutions sur le
systme. Les utilisateurs peuvent tendre la visibilit dans leurs applications en insrant
des vnements complmentaires et en fournissant des rgles de formatage.
Lors de la conception et de limplantation de cet outil, il a t pris grand soin de veiller
lefficacit de la collecte des donnes, de faon perturber au minimum lactivit systme.
De ce fait, lutilitaire est aussi adapt lanalyse des performances qu lidentification des
incidents.
Plus en savoir plus, reportez-vous aux rubriques :
Prsentation de lutilitaire de suivi
Exemple dutilisation de lutilitaire de suivi
Lancement et contrle du suivi depuis la ligne de commande
Lancement et contrle du suivi depuis un programme
Ajout dvnements de suivi
Syntaxe des strophes du fichier de format du suivi
11-1
11-2
Mode contrl par application. Le suivi est lanc (avec trcstart()) et contrl par des
appels de sous-routines (telles que trcon(), trcoff()), partir dun programme
dapplication.
11-3
0.003109888
0.162816
V.S=00
delete_in_progress
process_private working_storage
1B0 ksh
8525
00.2F33 ppage=1F7F
0.003141376
0.031488
V.S=00
delete_in_progress
process_private working_storage
Lactivit VMM ne nous intressant pas ce niveau, nous avons reformat le suivi via :
$ trcrpt k 1b0,1b1 O exec=on,pid=on trc_raw > cp.rpt2
Loption k 1b0,1b1 supprime les vnements VMM superflus de la sortie formate.
Elle vite de relancer le suivi du travail pour liminer les vnements non souhaits. Nous
aurions pu faire appel la fonction k de trcrpt au lieu de celle de la commande trace pour
liminer les vnements lockl et unlockl, si nous avions eu besoin de consulter lactivit de
verrouillage un moment donn. Si notre intrt ne portait que sur un petit nombre
dvnements, nous aurions spcifi d id-ancre1,id-ancre2 pour gnrer un compte
rendu ne portant que sur ces vnements. LID ancre tant la premire colonne du compte
rendu, il est trs rapide de compiler une liste dancres inclure ou exclure.
Une liste complte des ID dancre de suivi se trouve dans /usr/include/sys/trchkid.h.
11-4
PID
ELAPSED_SEC
101 ksh
101 ksh
134 cp
8525
7214
7214
0.005833472
0.012820224
0.014451456
DELTA_MSEC
0.107008
0.031744
0.030464
kfork
execve
execcp../bin/trk/junk
11-5
trcoff
q ou quit
!commande
11-6
trcon
trcoff
trcstop
int trcoff()
int trcstop()
CMD
canal
11-7
Lexemple suivant illustre comment lancer le suivi partir dun programme, le suivi ne
portant que sur une portion spcifie du code :
#include <fcntl.h>
#include <sys/trcctl.h>
extern int trcstart(char *arg);
char *ctl_dev =/dev/systrctl;
int ctl_fd;
main()
{
printf(configuring trace collection \n);
if (trcstart(ad)){
perror(trcstart);
exit(1);
}
printf(opening the trace device \n);
if((ctl_fd =open (ctl_dev,O_RDWR))<0){
perror(open ctl_dev);
exit(1);
}
printf(turning data collection on \n);
if(ioctl(ctl_fd,TRCON,0)){
perror(TRCON);
exit(1);
}
/* *** code here will be traced *** */
printf(The code to print this line will be traced.);
printf(turning data collection off\n);
if (ioctl(ctl_fd,TRCOFF,0)){
perror(TRCOFF);
exit(1);
}
printf(stopping the trace daemon \n);
if (trcstop(0)){
perror(trcstop);
exit(1);
}
exit(0);
}
Aucun fichier de sortie ntant spcifi dans le paramtre pour la sous-routine trcstart(), la
sortie du suivi se trouvera dans /var/adm/ras/trcfile, qui est galement le fichier dentre
par dfaut de la commande trcrpt.
11-8
Type
4 bits
mot de donnes 1
Champ de donnes
16 bits
mot de donnes 2
mot de donnes 3
mot de donnes 4
mot de donnes 5
Horodate 32 bits
mot
dancrage
(obligatoire)
D1
(en option)
D2
(en option)
D3
(en option)
D4
(en option)
D5
(en option)
T
(en option)
Canaux de suivi
Lutilitaire de suivi peut prendre en charge simultanment jusqu huit canaux dactivit
dancrage de suivi, numrots de 0 7. Le canal 0, toujours utilis pour les vnements
systme, ne leur est nanmoins pas rserv : des applications peuvent y faire appel. Les
sept autres canaux, appels canaux gnriques, sont destins au suivi des activits des
applications.
11-9
Au lancement du suivi, le canal 0 est utilis par dfaut. Une commande trace n (n tant le
numro de canal) lance le suivi vers un canal gnrique. Lusage des canaux gnriques
souffre quelques restrictions :
Linterface vers les canaux gnriques consomme plus de temps CPU que linterface
vers le canal 0 : dune part, il faut distinguer entre les canaux et, dautre part, les canaux
gnriques enregistrent des articles de longueur variable.
Les vnements enregistrs sur le canal 0 et sur les canaux gnriques ne peuvent tre
corrls que par le biais de lhorodate, et non squentiellement : il peut donc y avoir des
cas o il est impossible de dterminer lantriorit dun vnement.
ID dvnements
LID vnement dun article de suivi identifie cet article comme appartenant une classe
dfinie. LID vnement est la base sur laquelle le mcanisme de suivi enregistre ou ignore
les ancrages de suivi, et sur laquelle la commande trcrpt inclut ou exclut les articles de
suivi dans le compte rendu format.
Les ID vnement sont sur 12 bits (trois chiffres hexadcimaux). Il en existe 4096 possibles.
Les ID qui sont maintenus en permanence et livrs avec le code sont affects de faon
11-10
permanente par BULL, pour viter toute duplication. Pour permettre aux utilisateurs de
dfinir des vnements dans leurs environnements ou au cours de dveloppements,
lintervalle dID compris entre 010 0FF (hexa) leur a t rserv : les utilisateurs en
disposent leur guise dans leur propre environnement (cest--dire, dans tout ensemble de
systmes dans lequel ils sont prts assurer quun mme ID vnement nest pas utilis de
faon ambigu).
Attention : Il est important que les utilisateurs qui se servent de cet intervalle
dvnements maintiennent le code dans leur environnement. Si vous livrez du code,
instrument avec des ID dancrage temporaires, dans un environnement dans lequel
vous ne contrlez pas lutilisation des ID, vous risquez des collisions avec dautres
programmes qui utilisent les mmes ID dans cet environnement.
Les ID vnement doivent tre conservs car peu nombreux, mais ils peuvent tre tendus
par le biais du champ de donnes 16 bits. Il existe donc 65536 vnements distincts
possibles pour chaque ID dancrage thorique. La seule raison davoir un ID unique est
quun ID est le niveau auquel la collecte et le rapport de filtrage sont disponibles dans
lutilitaire de suivi.
Un vnement ajout par lutilisateur peut tre format via la commande trcrpt sil existe
une strophe pour lvnement dans le fichier de format de suivi spcifi. Ce fichier est un
fichier ASCII modifiable : reportez-vous Syntaxe des strophes du fichier de format de
suivi, page 11-13.
11-11
for(i=1;i<11;i++){
TRCHKL1T(HKWD_USER1,i);
/* The code being measured goes here. The interval */
/* between occurrences of HKWD_USER1 in the trace */
/* file is the total time for one iteration.
*/
}
printf(turning trace off\n);
if(ioctl(ctlfd,TRCSTOP,0)){
perror(TRCOFF);
exit(1);
}
printf(stopping the trace daemon \n);
if (trcstop(0)){
perror(trcstop);
exit(1);
}
exit(0);
}
Lorsque vous compilez ce programme, vous devez tablir un lien la bibliothque librts.a
comme suit :
$ xlc O3 sample.c o sample l rts
HKWD_USER1 a pour ID 010 (hexadcimal). Vous pouvez le vrifier en consultant
/usr/include/sys/trchkid.h.). Lutilitaire de compte rendu ignore comment formater
lvnement HKWD_USER1, sauf si des rgles sont indiques dans le fichier de format de
suivi. Lexemple de strophe suivante peut tre utilise :
# User event HKWD_USER1 Formatting Rules Stanza
# An example that will format the event usage of the sample program
010 1.0 L=APPL USER EVENT HKWD_USER1 O2.0
\n \
The # of loop iterations = U4
\n \
The elapsed time of the last loop = \
endtimer(0x010,0x010) starttimer(0x010,0x010)
Ninsrez pas cette strophe dans le fichier /etc/trcfmt original, mais faites une copie de
celui-ci dans votre rpertoire (mytrcfmt, par exemple). Lorsque vous excutez le
programme exemple, les donnes dvnement brutes sont captures dans le fichier journal
par dfaut, puisquaucun autre fichier na t spcifi la sous-routine trcstart. Vous
souhaitez probablement filtrer la sortie pour ne conserver que vos vnements. Pour ce
faire, lancez la commande trcrpt, comme suit :
trcrpt d 010 t mytrcfmt O exec=on > sample.rpt
Vous pouvez parcourir sample.rpt pour voir le rsultat.
11-12
ID-vn
L=
V.R
APPL
SVC
KERN
INT
label-vn
n
t
starttimer(#,#)
endtimer(#,#)
descrip-donnes
o descripteur-donnes a la syntaxe :
Format
label-donnes
label-corresp
, val-corresp
descripteur-donnes
descripteur-donnes
V.R
L=
label-vn
11-13
\n
\t
starttimer(timerID), endtimer(timerID)
timerID est un identificateur unique qui associe un starttimer particulier
avec un endtimer ultrieur ayant le mme identificateur. Par convention
(non obligatoire), timerID est de la forme :
ID de lvnement de dpart, ID de lvnement final
Lorsque lutilitaire de compte rendu rencontre une directive starttimer
au cours de lanalyse dun vnement, il associe lheure de lvnement
de dpart au timerID spcifi. Lorsquil rencontre un endtimer avec le
mme timerID, il affiche lcart de temps (entre parenthses) entre les
deux vnements. Les vnements dbut et fin dappel systme font
appel cette fonction : au retour dun vnement appel systme, la
dure de cet appel est indique.
11-14
descripdonnes
11-15
Tous les champs de format possibles sont dcrits dans les commentaires du fichier
/etc/trcfmt. En voici une brve prsentation.
Descriptions de champs de format
Am.n
S1, S2, S4
Bm.n
Xm
D2, D4
U2, U4
F4, F8
Gm.n
Om.n
Rm
Quelques macros peuvent servir de champs de format, pour un accs rapide aux donnes.
Par exemple :
$HD, $D1, $D2, $D3, $D4, $D5
Accde au champ de donnes 16 bits du mot dancrage et des mots de
donnes 1 5 de lenregistrement de lvnement, respectivement.
Le pointeur de donnes nest pas dplac. Les donnes auxquelles
accde une macro sont hexadcimales par dfaut. Une macro peut tre
associe un autre type de donnes (X, D, U, B) par le biais du
caractre % suivi du nouveau code de format. Par exemple :
$D1%B2.3
Cette macro entrane laccs au mot de donnes 1, mais en le
considrant comme 2 octets et 3 bits de donnes binaires.
Les commentaires intgrs au fichier /etc/trcfmt dcrivent les autres possibilits de macros
et de formats, et expliquent comment crer des macros personnalises.
11-16
PDT value ltat dun systme et surveille les modifications intervenant sur la charge de
travail et les performances. Il tente didentifier les problmes leur naissance, proposant
des solutions avant quils ne deviennent critiques. PDT est disponible partir dAIX
version 4.1.
Pour lessentiel, PDT ne requiert aucune entre utilisateur. La collecte et le report des
donnes PDT sont facilement activs et aucune intervention ultrieure de ladministrateur
nest requise. Les donnes sont rgulirement collectes et enregistres en vue dune
analyse historique, et un rapport est gnr et adress lID utilisateur adm. Normalement,
seuls les problmes apparents les plus significatifs sont consigns sur le rapport. Labsence
de problme significatif est galement signale, le cas chant. Vous pouvez personnaliser
PDT pour que les rapports soient achemins vers un autre utilisateur ou que les problmes
de gravit moindre soient galement consigns.
Cette rubrique traite des points suivants :
Structure de PDT
Porte de lanalyse PDT
Exemple de compte rendu PDT
Installation et activation de PDT
Personnalisation de PDT
Rponse aux messages PDT
Structure de PDT
Comme illustr la figure Structure des composants de PDT, lapplication PDT est
constitue de trois composants :
cron
contrle
collecte
contrle
rapport
contrle
retenue
PDT
historique
collecteurs
fichier,
mail
rapporteur
donnes
courantes
donnes
courantes
et
historiques
rapport
priodique
limination des
donnes obsoltes
Structure des composants de PDT
12-1
12-2
12-3
12-4
La section Upward Trends identifie deux tendances possibles. La premire est que le
systme de fichiers sur le volume logique hd2 (systme de fichiers /usr) crot au rythme
moyen de 2 % par jour. La date de saturation probable est indique, calcule sur la base
dune croissance linaire continue.
La seconde tendance est lapparente croissance systmatique du niveau dutilisation de
lune des zones de pagination. Des informations sur son taux de croissance et sur la date
prsume de saturation sont donnes. Savoir quels sont les systmes de fichiers et les
espaces de pagination qui frlent la saturation est de la plus haute importance (surtout si le
taux de croissance est lev ou que la date de saturation prvue est imminente), car leur
saturation peut provoquer un blocage du systme ou de lapplication.
La troisime tendance est une modification dun des indicateurs de charge de travail. Les
indicateurs surveills par PDT sont les suivants :
Mot-cl
Indicateur
nusers
loadavg
nprocesses
STAT_A
STAT_W
STAT_Z
STAT_I
STAT_T
STAT_x
cp
idle_pct_cpu0
idle_pct_avg
La section suivante, System Health, se sert dun certain nombre dindicateurs de charge
pour dterminer lusage que font les processus de leur temps.
La dernire section du compte rendu (Summary) indique le niveau de gravit slectionn, et
si changer de niveau donne accs des informations supplmentaires. (Le niveau de
gravit le plus lev est 1, niveau par dfaut du compte rendu. Le niveau le plus bas est 3.)
Tout message ( lexclusion des informations de len-tte et du rcapitulatif) apparaissant
dans le compte rendu PDT doit tre examin. Vous devez remdier au problme signal ou
du moins trouver une explication lerreur. Les rponses possibles aux messages
spcifiques sont indiques Rponse aux messages PDT, page 12-10.
12-5
# /usr/sbin/perf/diag_tool/pdt_config
________________PDT customization menu__________________
1) show current PDT report recipient and severity level
2) modify/enable PDT reporting
3) disable
PDT reporting
4) modify/enable PDT collection
5) disable
PDT collection
6) deinstall
PDT
7) exit pdt_config
Please enter a number:
Si vous rpondez 4, la collecte et la consignation par dfaut sont actives. Lentre crontab
de lutilisateur adm est mise jour pour intgrer les entres PDT. La collecte est effective
lorsque les travaux cron sont excuts par cron. Slectionnez 7 pour mettre fin au
programme pdt_config.
Pour dsactiver la collecte, slectionnez loption 5.
Personnalisation de PDT
Certains aspects de PDT peuvent tre personnaliss. Nimporte quel utilisateur peut, par
exemple, tre dsign comme destinataire rgulier des rapports PDT, et la dure de
conservation des donnes dans lenregistrement historique PDT peut tre modifie.
Toute personnalisation suppose de modifier un des fichiers PDT dans
/var/perf/cfg/diag_tool/ ou dexcuter le script /usr/sbin/perf/diag_tool/pdt_config.
Nous vous conseillons de ne rien modifier avant davoir obtenu et tudi quelques rapports
PDT et davoir acquis une certaine aisance dans la manipulation de cet outil.
12-6
12-7
12-8
Dsinstallation de PDT
Il est impossible de dsinstaller PDT directement via pdt_config, mais si loption 6 est
requise, un message explicite les tapes ncessaires au retrait de PDT du systme :
# /usr/sbin/perf/diag_tool/pdt_config
________________PDT customization menu__________________
1) show current PDT report recipient and severity level
2) modify/enable PDT reporting
3) disable
PDT reporting
4) modify/enable PDT collection
5) disable
PDT collection
6) deinstall
PDT
7) exit pdt_config
Please enter a number: 6
PDT is installed as package bos.perf.diag_tool in the bos lpp.
Use the installp facility to remove the package
________________PDT customization menu__________________
1) show current PDT report recipient and severity level
2) modify/enable PDT reporting
3) disable
PDT reporting
4) modify/enable PDT collection
5) disable
PDT collection
6) deinstall
PDT
7) exit pdt_config
Please enter a number: 7
#
12-9
par dfaut), mais peut tre cr par ladministrateur. Le fichier .nodes comporte un nom
dhte par ligne.
/usr/sbin/perf/diag_tool/Driver_ daily
/usr/sbin/perf/diag_tool/Driver_ daily2
/usr/sbin/perf/diag_tool/Driver_ offweekly
Il est possible de modifier ces heures en ditant la table cron de lutilisateur adm, mais nous
vous le dconseilllons fortement.
12-10
Problme :
Rponse :
Comm. utiles :
Problme :
Rponse :
Comm. utiles :
du, ls
Problme :
Rponse :
Comm. utiles :
Problme :
Rponse :
Comm. utiles :
Problme :
Rponse :
Comm. utiles :
lsps a, vmstat
Problme :
Rponse :
Comm. utiles :
Problme :
Rponse :
Comm. utiles :
schedtune
Problme :
Rponse :
Comm. utiles :
Problme :
Rponse :
Comm. utiles :
ping
12-11
Problme :
Rponse :
Comm. utiles :
12-12
Problme :
Rponse :
Comm. utiles :
smit
Problme :
Rponse :
Comm. utiles :
Problme :
Rponse :
Comm. utiles :
Problme :
Rponse :
Comm. utiles :
Problme :
Rponse :
Comm. utiles :
Problme :
Rponse :
Comm. utiles :
Problme :
Rponse :
Comm. utiles :
ping, rlogin, rsh (pour chronomtrer les charges de travail connues sur
lhte distant)
Problme :
Rponse :
Comm. utiles :
Problme :
Rponse :
Comm. utiles :
ps aucg
12-13
Problme :
Rponse :
Comm. utiles :
Problme :
Rponse :
12-14
12-15
12-16
12-17
programme exploitant NFS et DFS. Il en est de mme avec de gros programmes, tels
que des compilateurs. Mme si lalgorithme du programme nest pas limit en disque, la
dure de chargement dun excutable volumineux sera plus leve la premire
excution quaux suivantes.
Si le programme a toujours t trs lent ou quaucune modification denvironnement ne
peut justifier son ralentissement, il faut tudier les ressources dont il dpend.
Reportez-vous Identification des ressources limitatives, page 12-23 pour connatre
les techniques de localisation des goulots dtranglement.
12-18
Puis excutez-les sous un ID utilisateur valide. Le temps rel indiqu sur la ligne real
est-il diffrent ?
Dune excution lautre, un programme consomme normalement peu prs le mme
temps CPU (user+sys), mais il se peut parfois que le temps rel (real) utilis soit
diffrent du fait des oprations E/S, plus nombreuses ou plus lentes. Les fichiers de
lutilisateur sont-il implants sur un rpertoire mont sur NFS ? Ou sur un disque
intensment utilis pour dautres raisons ?
Vrifiez le fichier .profile de lutilisateur : les spcifications $PATH sont peut-tre
tranges. Par exemple, si vous recherchez sans succs une paire de rpertoires monts
sur NFS avant dexplorer /usr/bin, tout sera plus long.
12-19
les donnes pour assurer un contrle et une sauvegarde fiable ou encore de sassurer
que tous les utilisateurs travaillent sur la dernire version dun programme.
Si ces impratifs exigent un taux important dchanges client/serveur NFS, il est
prfrable de ddier un systme au rle de serveur plutt que de travailler avec
plusieurs systmes mi-serveurs, mi-clients.
Les programmes ont-ils t correctement ports pour utiliser les appels de procdure
distance RPC (et cela se justifiait-il) ?
Le plus simple pour porter un programme sur un environnement distribu est de
remplacer les appels de programmes par des RPC sur une base 1:1. Mais il faut savoir
que lcart de performances entre des appels de programme locaux et des appels RPC
est encore plus lev que lcart entre les E/S disque locales et les E/S NFS. Ds lors
que les RPC se rvlent indispensables, il est prfrable de les traiter par lots chaque
fois que possible.
12-20
12-21
netstat v
netstat m
netstat rs
netstat s
Si loption n nest pas spcifie, un fichier nfsstat.int contenant :
la sortie en dbut et fin de contrle dune commande nfsstat csnr.
Si loption p nest pas spcifie, deux fichiers, Pprof.stt et Pprof.flow. Pprof.stt,
contiennent les heures de dbut et de fin de lexcution. Pprof.flow contient les donnes
du profil du processus. Les colonnes du fichier Pprof.flow sont :
a. Nom du processus
b. ID processus
c. Heure de la premire occurrence du processus dans lintervalle de mesure
d. Heure de la dernire occurrence du processus
e. Temps dexcution total du processus
f. Indicateurs Begin/End (la somme des deux est donne plus loin). Indique ltat du
processus en dbut et fin dexcution :
Begin:
execed:
forked:
Alive at Start:
End:
Alive at end:
execed away:
Exited:
0
1
2
0
4
8
g. ID processus parent
12-22
r b
0 0
0 0
0 0
0 0
0 0
0 0
0 0
0 0
0 0
0 0
0 0
0 0
0 0
0 1
0 1
0 0
memory
page
faults
avm
fre re pi po fr
sr cy in
sy cs
8793
81
0
0
0
1
7
0 125
42 30
8793
80
0
0
0
0
0
0 155 113 79
8793
57
0
3
0
0
0
0 178
28 69
9192
66
0
0 16 81 167
0 151
32 34
9193
65
0
0
0
0
0
0 117
29 26
9193
65
0
0
0
0
0
0 120
30 31
9693
69
0
0 53 100 216
0 168
27 57
9693
69
0
0
0
0
0
0 134
96 60
10193
57
0
0
0
0
0
0 124
29 32
11194
64
0
0 38 201 1080
0 168
29 57
11194
63
0
0
0
0
0
0 141 111 65
5480
755
3
1
0
0
0
0 154 107 71
5467 5747
0
3
0
0
0
0 167
39 68
4797 5821
0 21
0
0
0
0 191 192 125
3778 6119
0 24
0
0
0
0 188 170 98
3751 6139
0
0
0
0
0
0 145
24 54
cpu
us sy id wa
1 2 95 2
14 8 78 0
1 12 81 6
1 6 77 16
1 3 96 0
1 3 95 0
1 4 63 33
12 4 84 0
1 3 94 2
2 8 62 29
12 7 81 0
13 8 78 2
1 16 79 5
20 5 42 33
5 8 41 46
1 10 89 0
Les colonnes pertinentes pour lvaluation initiale sont les colonnes pi et po dans page et
les quatre colonnes de la rubrique cpu.
Les entres pi et po correspondent respectivement aux chargements et aux
dchargements de page dans lespace de pagination. Si une E/S dans lespace de
pagination se produit, la charge de travail approche (voire dpasse) les limites de
mmoire du systme.
Si la somme des taux dutilisation de CPU us et sy (utilisateur et systme) excde 80 %
dans un intervalle donn de 5 secondes, la charge de travail sapproche des limites CPU
du systme pendant cet intervalle.
Un pourcentage dattente des E/S (wa) non nul (colonnes pi et po zro) signifie quun
certain temps dattente est marqu sur les E/S de fichiers non coordonnes et quune
partie de la charge de travail est limite en E/S.
Sapprocher des limites signifie quune partie de la charge subit un ralentissement du fait
dune ressource critique. Lallongement des temps de rponse nest peut-tre pas
subjectivement significatif, mais tout supplment de charge ce niveau entranera une
dtrioration rapide des performances.
12-23
Si vmstat signale un temps dattente des E/S important, excutez iostat pour disposer
dinformations plus dtailles. La commande
$ iostat 5 3
commande iostat dtablir toutes les 5 secondes un bref relev des E/S et de lactivit de
la CPU. Le chiffre 3 final indique de gnrer trois relevs.
Le relev iostat ci-dessous concerne un systme dot de la mme charge de travail que
dans lexemple prcdent (vmstat), mais un autre moment. Le premier relev fournit le
cumul dactivit depuis le dernier amorage, et les suivants, lactivit au cours de lintervalle
de 5 secondes qui prcde :
tty:
tin
0.0
Disks:
hdisk0
hdisk1
hdisk2
cd0
tty:
% tm_act
0.0
0.0
0.4
0.0
tin
0.0
Disks:
hdisk0
hdisk1
hdisk2
cd0
tty:
tout
4.3
tout
30.3
% tm_act
0.2
0.0
0.0
0.0
tin
0.0
Disks:
hdisk0
hdisk1
hdisk2
cd0
cpu:
% user
0.2
Kbps
0.2
0.0
1.5
0.0
cpu:
Kbps
0.8
0.0
0.0
0.0
tout
8.4
cpu:
% tm_act
0.0
0.0
98.4
0.0
Kbps
0.0
0.0
575.6
0.0
% sys
% idle
% iowait
0.6
98.8
0.4
tps
0.0
0.0
0.3
0.0
% user
8.8
tps
0.2
0.0
0.0
0.0
% user
0.2
tps
0.0
0.0
61.9
0.0
msps
% sys
7.2
msps
% sys
5.8
msps
Kb_read
7993
2179
67548
0
% idle
83.9
Kb_read
4
0
0
0
Kb_wrtn
4408
1692
59151
0
%iowait
0.2
Kb_wrtn
0
0
0
0
% idle
% iowait
0.0
93.8
Kb_read
0
0
396
0
Kb_wrtn
0
0
2488
0
Le premier relev rvle un dsquilibre au niveau des E/S : la plupart (86,9 % de kilooctets
en lecture contre 90,7 % en criture) concernent le disque hdisk2 qui contient le systme
dexploitation et lespace de pagination. Lutilisation cumule de la CPU depuis le dernier
amorage nest gnralement significative que sur un systme exploit 24 h sur 24.
La second relev indique un faible volume de lecture sur le disque hdisk0, qui contient un
systme de fichiers distinct, rserv lutilisateur principal du systme. Lactivit CPU
provient de deux programmes dapplication et de la commande iostat elle-mme. La sortie
de iostat, bien que non volumineuse, est rachemine vers un fichier, le systme ntant
pas suffisamment limit en mmoire pour forcer une sortie pendant cet intervalle.
Dans le troisime relev, des conditions proches de lemballement ont t cres, par
lexcution dun programme qui affecte et remplit un volume important de mmoire
(ici, environ 26 Mo). hdisk2 est actif 98,4 % du temps, ce qui entrane une attente E/S de
93,8 %. Le fait quun seul programme monopolise plus des trois-quarts de la mmoire
systme (32 Mo) et provoque lemballement du systme met en vidence les limites du
contrle de charge mmoire VMM, page 2-10. Mme dans le cas dune charge plus
homogne, la capacit mmoire requise pour chaque lment doit tre bien analyse.
Si vmstat indique quune quantit importante de temps CPU est disponible alors que le
systme donne des signes de ralentissement, il se peut que vous soyez confront des
retards causs par des conflits de verrouillage dans le noyau. Sous AIX version 4.1, ce
phnomne peut tre tudi laide de la commande lockstat si Performance Toolbox est
install sur votre systme.
12-24
0m0.13s
0m0.01s
0m0.02s
0m0.06s
0m0.01s
0m0.03s
La plupart (voire la totalit) des pages de foo.in sont encore en mmoire car aucun
processus nest intervenu pour les rclamer et, par ailleurs, la taille du fichier est minime,
compare la capacit RAM du systme. Un petit fichier foo.out serait galement plac
en mmoire et un programme qui lutiliserait en entre serait peu dpendant du disque.
Pour dterminer la dpendance dun programme vis--vis du disque, vrifiez ltat de
donnes en entre : si le programme doit normalement tre excut sur un fichier qui na
pas t rcemment utilis, assurez-vous que le fichier test ne se trouve pas en mmoire.
Sil sagit, linverse, dun programme normalement excut dans une squence standard,
et quil prend en entre la sortie du programme prcdent, il vous faut prparer la mmoire
pour garantir lexactitude de la mesure. Par exemple :
$ cp foo.in /dev/null
prpare la mmoire en lui intgrant les pages de foo.in.
La situation est plus complexe si la taille du fichier est grande par rapport la capacit
RAM. Si la sortie dun programme est reprise en entre par le suivant et que la totalit du
fichier ne loge pas dans la RAM, le second programme terminera la lecture des pages en
dbut de fichier, dplaant les pages la fin. Ces conditions, trs difficiles reproduire
artificiellement, quivalent grosso modo une situation dans laquelle aucune mise en
cache na lieu sur le disque.
Le cas particulier dun fichier de taille suprieure celle de la RAM est trait dans la section
suivante.
Disque ou mmoire ?
De mme quune part importante de la mmoire relle est rserve la mise en tampon
des fichiers, lespace de pagination du systme est utilis comme mmoire temporaire pour
les donnes actives dun programme qui ont t expulses de la RAM. Supposons quun
programme lise peu ou pas de donnes et prsente nanmoins des symptmes de
dpendance visvis des E/S. Pire, le ratio de temps rel par rapport au temps utilisateur
+ systme ne samliore pas au cours des excutions successives. On peut en conclure
que ce programme est probablement limit en mmoire et que ses E/S sont destines
lespace de pagination (do elles proviennent probablement). Pour le vrifier, vous pouvez
utiliser le script shell vmstatit ci-dessous. Le script shell vmstatit rsume le
volumineux compte rendu gnr par vmstat s, qui indique les dcomptes cumuls de
certaines activits systme depuis son lancement :
12-25
vmstat s >temp.file
# cumulative counts before the command
time $1
# command under test
vmstat s >>temp.file # cumulative counts after execution
grep pagi.*ins temp.file >>results
# extract only the data
grep pagi.*outs temp.file >>results # of interest
2>results
0m0.03s
0m0.01s
0m0.02s
2323 paging
2323 paging
4850 paging
4850 paging
space
space
space
space
page
page
page
page
ins
ins
outs
outs
Le fait que les donnes statistiques de pagination avant/aprs soient identiques nous
conforte dans lide que la commande cp nest pas limite en pagination. Une variante plus
complte du script shell vmstatit peut tre utilise pour reflter la situation relle :
vmstat s >temp.file
time $1
vmstat s >>temp.file
echo Ordinary Input:
grep ^[ 09]*page ins
echo Ordinary Output:
grep ^[ 09]*page outs
echo True Paging Output:
grep pagi.*outs
echo True Paging Input:
grep pagi.*ins
>>results
temp.file >>results
>>results
temp.file >>results
>>results
temp.file >>results
>>results
temp.file >>results
Toutes les E/S ordinaires effectues sous AIX tant traites via VMM, la commande
vmstat s rend compte des E/S ordinaires de programmes en termes de chargement/
dchargement de pages. La version ci-dessus du script shell vmstatit applique la
commande cp sur un gros fichier qui na pas t rcemment utilis, gnre :
real
0m2.09s
user
0m0.03s
sys
0m0.74s
Ordinary Input:
46416 page ins
47132 page ins
Ordinary Output:
146483 page outs
147012 page outs
True Paging Output:
4854 paging space
4854 paging space
True Paging Input:
2527 paging space
2527 paging space
page outs
page outs
page ins
page ins
La sortie de la commande time confirme lexistence dune dpendance visvis des E/S.
Laccroissement des page ins indique les E/S requises pour satisfaire la commande cp.
Laccroissement des page outs indique que le fichier est suffisamment volumineux pour
forcer lcriture des pages modifies (pas ncessairement les siennes) partir de la
mmoire. La constance du nombre cumul dE/S dans lespace de pagination confirme que
les structures de donnes construites par la commande cp ne sont pas suffisamment
tendues pour surcharger la mmoire de la machine test.
Lordre des E/S dans cette version du script shell vmstatit a son importance. En gnral,
les programmes lisent les entres dun fichier puis en crivent la sortie. Mais dans le
12-26
processus de pagination, la page de segment actif qui ne peut tre accueillie est dabord
dcharge (crite lextrieur) : elle nest charge (lue) que lorsque le programme tente dy
accder. Sur le systme test, le dsquilibre entre le nombre de dchargements
(paging space page outs) et le nombre presque deux fois moindre de chargements
(paging space page ins) depuis le dernier amorage rvle que certains programmes
ont stock en mmoire des donnes qui nont pas t rutilises jusqu la fin du
programme. programmes CPU limite, page 4-20 donne davantage dinformations.
Reportez-vous galement Contrle et optimisation de la mmoire, page 7-1.
Lexemple ci-dessous illustre limpact de la limitation de mmoire sur les statistiques : une
commande donne est excute dans un environnement dot de suffisamment de mmoire
(32 Mo), puis la taille du systme est rduite via une commande rmss (reportez-vous
Estimation de la mmoire requise via rmss, page 7-6). La squence de commandes :
$ cc c ed.c
$ vmstatit cc c ed.c 2>results
prpare dans un premier temps la mmoire en lui intgrant le fichier source de 7 944 lignes
et lexcutable du compilateur C puis mesure lactivit E/S de la seconde excution :
real
0m7.76s
user
0m7.44s
sys
0m0.15s
Ordinary Input:
57192 page ins
57192 page ins
Ordinary Output:
165516 page outs
165553 page outs
True Paging Output:
10846 paging space
10846 paging space
True Paging Input:
6409 paging space
6409 paging space
page outs
page outs
page ins
page ins
Il ny a visiblement pas de limitation au niveau des E/S. Mme pour lire le code source,
aucune E/S nest requise. Si vous excutez la commande :
# rmss c 8
pour ramener 8 Mo la taille effective de la machine et que vous rptez la mme
squence de commandes, vous obtenez :
real
0m9.87s
user
0m7.70s
sys
0m0.18s
Ordinary Input:
57625 page ins
57809 page ins
Ordinary Output:
165811 page outs
165882 page outs
True Paging Output:
11010 paging space
11061 paging space
True Paging Input:
6623 paging space
6701 paging space
page outs
page outs
page ins
page ins
12-27
12-28
12-29
12-30
Si vous pensez avoir dtect un dfaut au niveau des performances dAIX, vous disposez
doutils et de procdures pour faire part du problme et fournir les donnes permettant de
lanalyser. Outils et procdures sont conus pour vous donner une solution aussi prcise et
rapide que possible avec un minimum deffort et de temps de votre part.
Cette rubrique traite des points suivants :
Base de mesure
Compte rendu du problme
Obtention et installation de PerfPMR (AIX version 3.2.5)
Installation de PerfPMR partir du Web (inclut la version 4)
Donnes danalyse
Base de mesure
Les problmes de performance apparaissent souvent immdiatement aprs une
modification du systme, matrielle ou logicielle. A moins quune mesure pr-modification
nait t effectue, base possible de comparaison des performances avant/aprs,
quantifier le problme est impossible. Seule la collecte dinformations exhaustives sur la
configuration et les performances via le module PerfPMR permet une analyse efficace.
Reportez-vous Contrle avant modification.
Disposer de loutil PDT (Performance Diagnostic Tool) install et oprationnel est galement
utile pour tudier lensemble des performances du systme.
13-1
Une analyse avec time, iostat et vmstat indique-t-elle une limitation de CPU ou
dE/S ?
Les travaux sont-ils excuts sur : station de travail, serveur, multi-utilisateur ou un
panachage de ces types de systme ?
Quels sont les objectifs non atteints ?
Lobjectif principal est-il dfini en termes de temps de rponse du terminal ou de la
console, du dbit ou des rponses en temps rel ?
Les objectifs ont-ils t fixs sur la base de mesures effectues sur un autre systme
AIX ? Si oui, quelle en est la configuration ?
Si lincident est signal pour la premire fois, vous vous verrez attribuer un numro de
rfrence PMR ( indiquer lors de tout renseignement complmentaire).
Vous serez probablement invit fournir des donnes pour aider BULL analyser le
problme. Pour les collecter, BULL fournit un module doutils, appel PerfPMR.
Sous AIX version 3.2.5, il sagit dun outil informel disponible auprs de votre reprsentant
BULL. Sous AIX version 4.1, PerfPMR est un module installable en option, fourni sur le
support du systme dexploitation de base (BOS) AIX.
13-2
message
Description du contenu
license.agreement
readme
Donnes danalyse
Tous les lments suivants doivent tre intgrs aux informations fournies au service de
maintenance, lors de la premire collecte :
Un moyen de reproduire le problme
Si possible, joignez un programme ou un script shell illustrant le problme
A dfaut, dcrivez prcisment les conditions sous lesquelles a eu lieu le problme.
Les donnes collectes par les outils PerfPMR
Sur chaque systme concern
Au mme moment
Pendant loccurrence du problme.
13-3
13-4
13-5
13-6
Les outils relatifs aux performances dans lenvironnement AIX relvent de lune des deux
catgories suivantes : informations sur le cours des vnements ou moyens daction sur
ces vnements. Peu participent des deux catgories. Cette annexe rcapitule les
commandes relatives aux performances. Nombre dentre elles sont dcrites dans les
chapitres traitant de loptimisation daspects spcifiques du systme. Pour la majorit, vous
trouverez le dtail de leur fonction et leur syntaxe dans le manuel AIX Commands
Reference. Les commandes schedtune, pdt_config, pdt_report et vmtune sont dcrites
plus avant dans cette annexe.
Certaines des commandes relatives aux performances sont fournies comme partie de la
bote outils Performance Toolbox for AIX (PTX), et non du systme dexploitation de base
AIX. Ces commandes sont identifies par (PTX). Pour dterminer si les outils PTX sont
installs, entrez :
$ lslpp lI perfagent.tools
Si le module est affich AVAILABLE, les outils PTX sont exploitables.
Les listes suivantes rcapitulent les commandes relatives aux performances :
Commandes de compte rendu et danalyse des performances
Commandes doptimisation, page A-3
Fonction
bf, bfrpt
Fournit des rapports dtaills sur les trames daccs mmoire des
applications.
emstat
filemon
fileplace
gprof
iostat
lockstat
A-1
lsattr
Affiche les attributs ayant une incidence sur les performances, tels que :
La taille des caches
La taille de la mmoire relle
Le nombre maximal de pages dans le cache tampon dE/S bloc
Le nombre maximal de kilo-octets de mmoire autoriss pour les
mbuf
Les niveaux haut et bas de la rgulation des E/S disque.
lslv
netpmon
netstat
nfso
nfsstat
Affiche des statistiques sur lactivit client et serveur NFS (Network File
System) et RPC (Remote Procedure Call).
no
Affiche (ou modifie) les valeurs des options rseau, telles que :
Tailles par dfaut des tampons socket denvoi et de rception
Quantit maximale de mmoire utilise dans le pool mbuf et les
pools de grappe.
pdt_config
pdt_report
ps
sar
schedtune
A-2
smit
stem
svmon
syscalls
time
tprof
trace
vmstat
vmtune
Commandes doptimisation
Les outils suivants permettent de modifier un ou plusieurs lments lis aux performances
du systme.
Commande
Fonction
fdpr
nfso
nice
no
renice
reorgvg
rmss
schedtune
A-3
smit
vmtune
Voir aussi
Commandes : gnralits dans AIX 4.3 Guide de lutilisateur : systme dexploitation et
units explique comment interprter les diagrammes de syntaxe.
A-4
Commande emstat
Objet
Rend compte des comptes des instructions mules.
Syntaxe
Description
La commande emstat fournit des statistiques sur le nombre dinstructions que le systme
doit muler. Ce dcompte est utilis pour dterminer si une application doit tre recompile
pour liminer les instructions qui doivent tre mules sur les processeurs PowerPC 601 ou
PowerPC 604. Une instruction qui doit tre mule requiert davantage de cycles CPU
quune instruction qui ne doit pas ltre.
Si une application a t compile sous AIX version 3, elle peut contenir des instructions non
disponibles sur les processeurs 601 ou 604. Le 601 est dots de la majorit des instructions
POWER ; il lui en manque environ cinq, rarement excutes : les problmes sont donc
exceptionnels. Par contre, il manque environ 35 instructions POWER au processeur 604 :
les chances dmulation sont plus leves.
Ce phnomne dinstruction mule se produit avec des applications qui nont t
compiles en mode commun sous AIX version 3 et sont excutes sur un processeur 601
ou 604 sans recompilation pralable. Si lapplication a t compile sous AIX version 4.1,
loption de compilation par dfaut est common, aussi seules des instructions communes
tous les processeurs sont intgrs lexcutable. Les instructions mules peuvent
galement apparatre sur un processeur 601 ou 604 si une application a t compile pour
une architecture spcifique, POWER ou POWER2, par exemple.
La solution est de recompiler lapplication, sous AIX version 4.1 ou sous AIX version 3.2.5,
en spcifiant loption qarch=com. Pour effectuer une compilation en mode commun sous
AIX version 3.2.5, il vous faut un APAR qui introduise ce code commun.
Le paramtre Interval spcifie le dlai (en secondes) entre chaque compte rendu. Le
premier compte rendu contient des statistiques concernant la dure coule depuis le
lancement du systme. Les comptes rendus suivants contiennent des statistiques
collectes au cours de lintervalle coul depuis le compte rendu prcdent. Si vous ne
spcifiez pas le paramtre Interval, la commande emstat gnre un seul rapport, puis
quitte.
Le paramtre Count ne peut tre spcifi quassoci au paramtre Interval. Sil est spcifi,
le paramtre Count dtermine le nombre de rapports gnrs. Si le paramtre Interval est
spcifi sans le paramtre Count, les rapports sont gnrs en continu. Le paramtre
Count ne peut tre affect de la valeur 0.
Sortie
La premire colonne est le nombre total dinstructions mules depuis le dernier
ramorage du systme. La deuxime colonne est le nombre dinstructions mules
pendant lintervalle spcifi.
A-5
Commande schedtune
Objet
Dfinit les paramtres de traitement du programmateur de CPU et du gestionnaire VMM
(Virtual Memory Manager).
Syntaxe
schedtune
D
d n
e n
f n
h n
m n
p n
r n
t n
w n
schedtune [ D | { [ d n ] [ e n ] [ f n ] [ h n ] [ m n ] [ p n ] [ r n ] [ t n ] [ w n ] } ]
Description
Paramtres de calcul de priorit
La priorit de la plupart des processus utilisateur varie en fonction du temps CPU
rcemment utilis par le processus. Les calculs de priorit du programmateur de CPU sont
bass sur deux paramtres dfinis via schedtune : r et d. Les valeurs de r et de d sont
exprimes en units de trente secondes (1/32) ; cest--dire que la formule utilise par le
programmateur pour calculer la quantit ajouter la priorit dun processus pour pnaliser
un usage rcent de CPU est la suivante :
pnalit CPU = (valeur de CPU rcemment utilise par le processus) * (r/32)
et le recalcul une fois par seconde de la valeur de CPU rcemment utilise par chaque
processus est effectu selon la formule :
nouvelle valeur de CPU rcemment utilise = (ancienne valeur) * (d/32)
Par dfaut, r et d ont tous deux la valeur 16 qui assure la comptabilit de la planification
de CPU avec les versions antrieures dAIX. Avant de tester ces valeurs, consultez la
section Optimisation du calcul de la priorit dun processus via schedtune, page 6-23.
A-6
Les processus priorit fixe de mme que les processus noyau ne peuvent tre
suspendus.
Le terme repages fait rfrence au nombre de pages appartenant au processus qui ont
t rclames et qui, trs vite, ont nouveau t rfrences par le processus.
Lutilisateur peut galement spcifier un niveau minimal de multiprogrammation via
lindicateur m. Ceci garantit lactivit dun minimum de processus pendant la priode de
suspension. Les processus sont dits actifs lorsquils sont excutables et quils sont en
attente dune E/S de page. Les processus en attente dvnements et les processus
suspendus ne sont pas considrs actifs, pas plus que le processus dattente.
Les processus suspendus peuvent tre rintgrs lorsque le systme est rest en de du
seuil de surcharge pendant n secondes, n tant spcifi par lindicateur w. Les processus
sont rintgrs au systme sur la base de leur priorit, puis de la dure de leur suspension.
Avant de tester ces valeurs, consultez la section Optimisation du contrle de charge de la
mmoire VMM, page 7-14.
A-7
Indicateurs
A dfaut dindicateurs, les valeurs courantes sont imprimes.
D
Restaure les valeurs par dfaut (d=16, e=2, f=10, h=6, m=2, p=4,
r=16, t=0, w=1).
d n
e n
f n
h n
m n
p n
r n
t n
w n
Voir aussi
La sous-routine fork.
Gestion de la mmoire relle.
Optimisation du calcul de la priorit des processus avec schedtune, page 6-23.
Optimisation du contrle de charge de la mmoire VMM, page 7-14.
A-8
Commande vmtune
Objet
Modifie les paramtres dexploitation du gestionnaire de mmoire virtuel (VMM) et dautres
composants dAIX.
Syntaxe
Description
Le gestionnaire de mmoire virtuelle (VMM) tient jour la liste de trames de page libres de
la mmoire relle. Ces trames sont disponibles pour les pages de mmoire virtuelle,
requises pour pallier un dfaut de page. Lorsque le nombre de pages de la liste des
disponibilits passe en dessous du seuil spcifi par le paramtre minfree, VMM commence
voler des pages pour les ajouter la liste des disponibilits. VMM continue voler des
pages jusqu ce la liste des disponibilits ait au moins le nombre de pages spcifi par le
paramtre maxfree.
Si le nombre de pages de fichier (pages permanentes) en mmoire est infrieur au nombre
spcifi par le paramtre minperm, VMM vole des trames aux pages de fichier ou calcules,
quels que soient les taux de pages dj rfrences (repages). Si ce nombre est
suprieur maxperm, VMM ne vole que des pages de fichier. Entre les deux, VMM ne vole
normalement que des trames de pages de fichier, mais si le taux de pages de fichier dj
rfrences est suprieur celui des pages calcules, les pages calcules sont galement
voles.
Si un processus lit un fichier squentiellement, la valeur de minpgahead dtermine le
nombre de pages lire par anticipation ds dtection de la condition. La valeur de
maxpgahead dfinit le nombre maximal de pages lues par anticipation, quel que soit le
nombre de lectures squentielles antrieures.
Sous la version 3.2.5, il est impossible de fixer plus de 80 % de la mmoire relle. Sous AIX
version 4.1, le paramtre maxpin permet de fixer le pourcentage limite de mmoire fixe.
AIX version 4.1 permet doptimiser le nombre de systmes de fichiers bufstructs
(numfsbuf) et la quantit de donnes traites par lalgorithme dcriture diffre (numclust).
Sous AIX version 4.1, vous pouvez galement modifier les seuils dterminant linsuffisance
despace de pagination. Le paramtre npswarn spcifie le nombre de pages de lespace de
pagination disponibles, partir duquel le systme commence avertir les processus que
lespace de pagination est presque satur. Le paramtre npskill spcifie le nombre de
A-9
pages de lespace de pagination partir duquel le systme commence tuer les processus
pour librer de lespace.
Seul lutilisateur root est habilit excuter vmune. Les modifications effectues par le
biais de la commande vmune ne restent en vigueur que jusqu la rinitialisation suivante
du systme. Pour modifier des paramtres VMM de faon permanente, placez la
commande vmune approprie dans inittab.
Attention : Mal utilise, cette commande peut induire une dtrioration des
performances ou une panne du systme dexploitation. Avant de modifier des
paramtres systme via vmtune, reportez-vous Performances du gestionnaire de
mmoire virtuelle (VMM), page 2-5 et Optimisation du remplacement de page VMM,
page 7-16.
Indicateurs
A-10
b numfsbuf
B numpbuf
c numclust
f minfree
F maxfree
k npskill
l lrubucket
M maxpin
N pd_npages
p minperm
P maxperm
r minpgahead
R maxpgahead
u lvm_bufcnt
w npswarn
W maxrandwrt
Voir aussi
Performances du gestionnaire de la mmoire virtuelle (VMM), page 2-5.
A-11
Script pdt_config
Objet
Contrle les oprations de loutil PDT (Performance Diagnostic Tool).
Syntaxe
pdt_config
Description
Le script pdt_config est interactif. Appel, il affiche le menu :
# /usr/sbin/perf/diag_tool/pdt_config
________________PDT customization menu__________________
1) show current PDT report recipient and severity level
2) modify/enable PDT reporting
3) disable
PDT reporting
4) modify/enable PDT collection
5) disable
PDT collection
6) deinstall
PDT
7) exit pdt_config
Please enter a number:
Pour slectionner une option, tapez son numro et appuyez sur Entre.
Si le rpertoire /usr/sbin/perf/diag_tool ne se trouve pas dans le chemin de recherche, le
script peut tre appel par /usr/sbin/perf/diag_tool/pdt_config.
Seul lutilisateur root est habilit excuter le script pdt_config.
Indicateurs
Aucun.
Voir aussi
Chapitre 12. Outil de diagnostic PDT.
A-12
Script pdt_report
Objet
Gnre un compte rendu PDT (Performance Diagnostic Tool) sur la base des informations
historiques actuelles.
Syntaxe
pdt_report
gravit
pdt_report [ severity ]
Description
PDT contrle rgulirement les performances du systme et ajoute les donnes une base
de donnes historique. Normalement, PDT gnre un rapport par jour, une heure dfinie.
Le script pdt_report cre ce compte rendu sur demande. Le compte rendu est crit sur
stdout. Les messages derreur sont dirigs vers stderr.
Les messages issus de PDT peuvent tre de gravit 1 3 (1 tant le niveau le plus lev).
Par dfaut, seuls les messages de gravit 1 sont intgrs au compte rendu. Mais vous
pouvez commander pdt_report dinclude des messages de moindre gravit.
Si le rpertoire /usr/sbin/perf/diag_tool ne se trouve pas dans le chemin de recherche, le
script peut tre appel par /usr/sbin/perf/diag_tool/pdt_report.
Indicateurs
gravit
Voir aussi
Chapitre 12. Outil de diagnostic PDT.
A-13
A-14
Fonction
getpri
getpriority
getrusage
nice
psdanger
setpri
setpriority
Voir aussi
Commandes de contrle et doptimisation des performances AIX
B-1
B-2
Prliminaire
Les sections qui suivent sadressent aux programmeurs soucieux de connatre limpact de
la mise en mmoire cache et de ladressage virtuel sur les performances de leurs
programmes. Les ingnieurs intresss par la logique lectronique et la conception prcise
du ESCALA ny trouveront sans doute pas leur compte : cette prsentation ne prtend pas
lexhaustivit et la distinction entre les architectures POWER, PowerPC et POWER2 en
est quasiment absente.
Adressage
La figure Transformations successives dune adresse mmoire (section Consultation du
cache) illustre les tapes par lesquelles une adresse 32 bits en mmoire virtuelle, gnre
par un programme, se transforme en adresse mmoire relle. Le nombre exact de bits varie
selon le modle. Les modles diffrent dans leurs dtails, mais pas dans le principe de leur
conception.
C-1
registre de segment 15
.
.
.
.
4 bits
(numro registre segment)
28 bits
(dcalage
dans
segment)
24 bits
(ID segment)
registre de segment 0
8 bits
adresse
virtuelle 52 bits
Consultation
cache de
donnes
N ligne tiquette
tiquette
8 bits
37 bits
7 bits
absence en
cache D
Consultation
cache L2
Accs
mmoire
relle
tiquette
N ligne
13 bits
7 bits
absence en
cache L2
adresse virtuelle 52 bits
tiquette TLB
32 bits
40 bits en
entre
12 bits
Consultation
du TLB
translation
dadresse
20 bits en
sortie
12 bits
C-2
Consultation du cache
Ladresse virtuelle 52 bits est utilise pour la consultation du cache de donnes, comme
illustr la figure Consultation dun cache de donnes. Les lignes du cache ayant une
longueur de 128 octets, les 7 bits infrieurs de ladresse reprsentent le dcalage
lintrieur de la ligne du cache. Le cache de donnes, qui contient 128 ko despace, est
associatif quatre voies. Chaque bloc du cache contient ainsi 256 lignes de 128 octets
(128 ko/(128*4) = 256), et les 8 bits suprieurs suivants reprsentent le numro de
ligne (0-255). Chaque bloc du cache possde une ligne portant ce numro, et les quatre
lignes dotes du mme numro forment une classe de congruence, cest--dire les quatre
emplacements possibles des donnes cherches. Il sagit dun cache associatif quatre
voies. Si la classe de congruence comportait deux membres, nous aurions parl dun cache
associatif deux voies. Sil y avait exactement une ligne de cache par adresse, le cache
serait dit en mappage direct.
adresse virtuelle 52 bits
tiquette
N ligne tiquette
37 bits
8 bits
7 bits
bloc 0
bloc 1
bloc 2
bloc 3
tiquette
tiquette
tiquette
tiquette
donnes
donnes
donnes
donnes
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
ligne 0
ligne 1
ligne 2
.
.
.
.
Classe de
congruence
ligne 253
ligne 254
ligne 255
consultation cache donnes
A chaque ligne du cache est associe une tiquette de 37 bits, constitue des bits
suprieurs de ladresse 52 bits partir de laquelle la ligne cache a t charge lorigine.
Si une des tiquettes des quatre lignes de lensemble de congruence correspond aux
37 bits suprieurs de ladresse virtuelle 52 bits qui vient dtre gnre, il y a prsence en
cache. Les donnes de la ligne sont charges dans le registre, et aucun accs RAM
(et donc aucune adresse relle) nest requis.
Si aucune des tiquettes de lensemble de congruence ne correspond ltiquette des
donnes charger, il y a absence de donnes en cache. Cette machine comporte un cache
L2 : la consultation dun cache est semblable celle effectue dans un cache de donnes.
La principale diffrence entre les deux consultations de caches est que le cache L2 est en
mappage direct. Les lignes ont une longueur de 128 octets, et le cache offre une capacit
de 1 Mo : il y a donc 8192 lignes. Les 7 bits infrieurs de ladresse 52 bits constituent
toujours le dcalage dans la ligne. Les 13 bits suivants constituent le numro de la ligne du
cache. A chaque ligne est associe une tiquette 32 bits unique. Si cette tiquette
correspond aux 32 bits suprieurs de ladresse 52 bits, il y a prsence en cache L2. Sinon,
ladresse relle des donnes doit tre dtermine et les donnes extraites de la RAM.
Diffrentes implantations des architectures POWER prsentent des caches de taille et de
gomtrie variables ; certaines sont dpourvues de cache L2, dautres sont dotes de
caches combinant instructions et donnes, dautres encore ont des longueurs de lignes
diffrentes. Taille et position des champs de ladresse 52 bits peuvent diffrer quelque peu,
mais les principes de consultation du cache restent les mmes.
C-3
Consultation du TLB
Le tampon de donnes TLB (translation lookaside buffer) est un cache dadresses.
Ltiquette TLB est constitue des 32 bits suprieurs de ladresse virtuelle 52 bits. Les 8 bits
suivants de cette adresse indiquent le numro de ligne dans le TLB, qui a 512 entres et
constitue un ensemble associatif deux voies (chaque bloc est ainsi constitu de
256 entres). Les 12 bits infrieurs de ladresse 52 bits dfinissent le dcalage dans la page
de 4096 octets. La partie donnes de chaque ligne du TLB constitue les 20 bits suprieurs
de ladresse de page relle 32 bits (voir la figure Consultation du TLB de donnes). Sil y a
prsence en TLB, les 20 bits suprieurs de lentre TLB sont combins avec les 12 bits
infrieurs du dcalage de page, pour former ladresse relle 32 bits des donnes.
adresse virtuelle 52 bits
N ligne
tiquette
32 bits
tiq0
page relle
adresse
tiq1
8 bits
dcal.
page
12 bits
page relle
adresse
.
Classe de
congruence
32 bits
20 bits
32 bits
20 bits
Accs RAM
Quel que soit le moyen utilis pour lobtenir, ladresse 32 bits relle des donnes sert
mettre une requte la RAM. Normalement, un dlai de latence dau moins huit cycles
processeur intervient entre lmission de la requte et le renvoi des 16 premiers octets de
donnes (128 bits, correspondant la largeur du bus mmoire), incluant les donnes en
cours de chargement. A ce stade, le processeur peut reprendre ses oprations. Laccs
RAM se poursuit pendant encore sept cycles processeur, pour charger la ligne complte de
cache (128 octets, par tranches de 16 octets). Ainsi, une absence en cache mobilise au
moins 16 cycles processeur. Ltiquette de la ligne de cache est mise jour via les 37 bits
suprieurs de ladresse des donnes. Le contenu initial de la ligne de cache est perdu.
C-4
Implications
Plusieurs types de schmas dadressage pathologique peuvent provoquer dincessantes
absences en cache ou en TLB, ralentissant notablement la vitesse dexcution. Si, par
exemple, le programme accde un tableau plus grand que le cache, lcart tant
dexactement 128 octets, une absence en cache aura lieu chaque accs. Si le programme
prsente au processeur une srie de requtes concernant le mme numro de ligne cache,
mais dans des pages diffrentes, une srie de collisions entre ensembles de congruence se
produiront, entranant de nombreuses absences en cache mme si celui-ci nest pas satur.
Le fait que le cache soit associatif quatre voies rend cette ventualit assez improbable,
mais il suffit dun choix malheureux de dcalages pour les lments de donnes pour
ralentir considrablement un programme.
Les grands tableaux peuvent galement tre lorigine de problmes. La figure
Stucture dun tableau en mmoire illustre le stockage de tableaux en C et en FORTRAN.
Les tableaux C sont bass sur les ranges, tandis que les tableaux FORTRAN le sont sur
les colonnes. Si une boucle interne dun programme C indexe par colonne (ou par range
pour un programme FORTRAN), un tableau assez grand (512 x 512 en virgule flottante
double prcision, par exemple) peut provoquer une absence en TLB sur chaque accs.
Pour en savoir plus sur ces phnomnes, reportez-vous Exemple thorique, page 6-10.
Tableau FORTRAN
colonne 1
colonne 2
colonne n
range n
Tableau C
range 1
range 2
C-5
C-6
Annexe D. Commande ld
Lditeur de liens AIX (appel ltape finale dune compilation ou directement via la
commande ld) offre des fonctions non proposes par lditeur de liens UNIX classique.
Il peut en rsulter un dlai ddition de liens plus long, si la puissance de lditeur AIX est
inexploite. Cette annexe prsente quelques techniques permettant de lexploiter au mieux.
Excutables rditables
La documentation de lditeur de liens fait rfrence sa capacit daccepter un excutable
(un module chargeable) comme entre. Cette fonction peut sensiblement amliorer les
performances dun systme o le dveloppement de logiciels constitue une part importante
de lactivit, ainsi que les temps de rponse des ld individuels.
Sur la majorit des systmes UNIX classiques, lentre de la commande ld est toujours
constitue dun ensemble de fichiers contenant du code objet, fichiers individuels .o ou
fichiers .o archivs en bibliothque. La commande ld rsout ensuite les rfrences externes
de ces fichiers et crit un excutable portant par dfaut le nom a.out. Le fichier a.out ne
peut tre quexcut. Si une erreur est dtecte dans lun des modules intgrs au fichier
a.out, il faut modifier et recompiler le code source dfectueux, puis rpter lintgralit du
processus ld, partir de lensemble complet de fichiers .o.
Sous AIX, lditeur de liens accepte en entre aussi bien les fichiers .o que les fichiers
a.out, car lditeur intgre les dictionnaires de rsolution ESD (External Symbol Dictionary)
et RLD (Relocation Dictionary), dans le fichier excutable. Ce qui signifie que lutilisateur
peut rditer les liens dun excutable existant pour remplacer un seul fichier .o modifi, au
lieu de reconstruire un nouvel excutable depuis le dbut. Le processus ddition
consommant des cycles processeur et de lespace de stockage en partie
proportionnellement au nombre de fichiers faisant lobjet dun accs et au nombre de
rfrences aux symboles rsoudre, rditer les liens dun excutable avec une nouvelle
version dun seul module est bien plus rapide que de repartir du dbut.
Commande ld
D-1
avec un nouveau fichier FORTRAN .o, pour simuler une correction derreur, le dlai est
pass environ 4 secondes.
Exemples
1. Pour prditer les liens dune bibliothque, lancez la commande suivante sur le fichier
archive :
ld r libfoo.a o libfooa.o
2. Compiler et diter les liens du programme FORTRAN something.f revient alors :
xlf something.f libfooa.o
Notez que la bibliothque prdite est traite comme un fichier dentre normal, et non
avec la syntaxe habituelle didentification des bibliothques (lfoo).
3. Pour recompiler le module et rditer les liens de lexcutable aprs correction dune
erreur, lancez :
xlf something.f a.out
4. Si, toutefois, la correction de lerreur a conduit lappel dune autre sous-routine de la
bibliothque, ldition de liens naboutira pas. Le script shell Korn suivant teste le retour
dun code derreur et y remdie :
# !/usr/bin/ksh
# Shell script for source file replacement bind
#
xlf something.f a.out
rc=$?
if [ $rc != 0 ]
then
echo New function added ... using libfooa.o
xlf something.o libfooa.o
fi
Voir aussi
Commande ld.
Format de fichier Objet XCOFF (a.out).
D-2
De temps en temps, le groupe Performance AIX se voit demander des prcisions sur la
surcharge occasionne par les outils de performance. Cest une question intressante,
dans la mesure o certains outils ont une rpercussion certaine sur la charge du systme.
Cest galement une question laquelle il est difficile de rpondre, car le cot induit par la
plupart des outils est souvent proportionnel un aspect particulier de la charge du systme.
Les sections suivantes proposent des considrations succintes et informelles sur la vitesse
et les ressources utilises par les principaux outils de contrle et doptimisation. Ces
considrations visent donner une ide du cot relatif des diffrents outils : elles ne
constituent pas une description rigoureuse des performances des outils.
filemon
fileplace
iostat
lsattr
lslv
netpmon
netstat
nfsstat
PDT
ps
svmon
Outils de performance
E-1
E-2
tprof
trace
vmstat
AIX a t dot, partir de la version 3.2, dun nouvel algorithme de gestion de la mmoire,
qui est rest en vigueur avec la version 4. Lalgorithme prcdent, largement exploit sur
les systmes UNIX, arrondissait la taille de toutes les requtes malloc la puissance de 2
immdiatement suprieure. Il en rsultait une fragmentation considrable de la mmoire
relle et virtuelle et un faible regroupement rfrentiel. Le nouvel algorithme affecte la
quantit exacte despace requis et est plus efficace pour ce qui concerne la rcupration
des blocs mmoire prcdemment utiliss.
Malheureusement, un certain nombre de programmes dapplication existants dpendent du
prcdent algorithme au niveau de leurs performances ou mme de leur fonctionnement.
Par exemple, si un programme dpend de lespace supplmentaire fourni par lopration
darrondi, car il dborde en ralit de la fin dun tableau, il chouera probablement avec la
version 3.2 de malloc.
Autre exemple : du fait de linefficacit de la rcupration despace de la routine de la
version 3.1, le programme dapplication reoit presque toujours de lespace qui a t
rinitialis zro (lorsquun processus touche une page donne de son segment de travail
pour la premire fois, cette page est dfinie zro). Lexcution des applications peut
dpendre de cet effet secondaire. En fait, la mise zro de lespace affect nest pas une
fonction propre malloc et entrane une pnalit non justifie au niveau des performances,
pour les programmes qui ninitialisent que lorsque requis et peut-tre pas zro.
La version 3.2 de malloc tant plus efficace au niveau de la rutilisation de lespace, les
programmes dpendant de la rception de malloc despace mis zro choueront
probablement avec les versions 3.2 et ultrieures du systme.
De mme, si un programme raffecte (via realloc) continuellement une structure dans une
zone de taille lgrement suprieure, dans la version 3.1, realloc peut ne pas avoir besoin
de dplacer souvent la structure. Souvent, realloc peut faire usage de lespace
supplmentaire fourni par lopration darrondi. Sous la version 3.2, realloc aura
gnralement dplacer la structure vers une zone lgrement plus grande, parce que
quelque chose dautre a t affect (via malloc) juste au-dessus. Ceci explique lapparente
dgradation des performances de realloc, alors quil sagit en ralit de lmergence dun
cot implicite dans la structure du programme dapplication.
Nous avons bien entendu prvu le cas o des programmes AIX existants, ou ports partir
dautres systmes UNIX, dpendent deffets secondaires de la version 3.1 de la
sous-routine malloc. Dans ces cas, lalgorithme de la version 3.1 peut tre rappel via :
MALLOCTYPE=3.1; export MALLOCTYPE
A partir de l, tous les programmes excuts par le shell utiliseront la version antrieure de
la sous-routine malloc. Donner MALLOCTYPE une valeur autre que 3.1 provoque le
retour la version 3.2.
Voir aussi
Sous-routines malloc et realloc.
F-1
F-2
Avantages et inconvnients
Partager une bibliothque signifie disposer dune seule copie des routines les plus utilises
et maintenir cette copie dans un segment partag unique. Ce qui peut rduire de faon
significative la taille des excutables, et conomiser ainsi de lespace disque. En outre,
dans la mesure o ces routines sont exploites par plusieurs processus dans un
environnement multi-utilisateur, une routine que vous appelez pour la premire fois peut
dj se trouver en mmoire relle : vous gagnez ainsi le temps de chargement
correspondant et conomisez la trame de page requise. Autre avantage, les routines ne
sont pas lies lapplication de faon statique, mais dynamiquement au chargement de
lapplication. Ce qui permet aux applications dhriter automatiquement des modifications,
sans recompilation ou rdition des liens.
Partager une bibliothque peut nanmoins prsenter quelques inconvnients. Du point de
vue des performances, un code collant est requis dans lexcutable pour accder au
segment partag. Ce code ajoute un nombre de cycles par appel un segment de
bibliothque partage. Plus subtile est la rduction du regroupement rfrentiel. Si seul un
nombre restreint de routines vous intressent, vous risquez de les trouver disperses dans
lespace dadressage virtuel de la bibliothque : le nombre de pages auxquelles vous devez
alors accder pour appeler les routines est notablement suprieur ce qui aurait t le cas
si les routines avaient t directement lies lexcutable. Une des consquences est que,
si vous tes le seul utilisateur de ces routines, vous vous heurterez davantage de dfauts
de page pour les charger toutes en mmoire relle. En outre, dans la mesure o davantage
de pages sont touches, la probabilit dune absence dinstruction en TLB
(translation lookaside buffer) est plus grande.
Bibliothques partages
G-1
Voir aussi
Shared Libraries and Shared Memory dans AIX General Programming Concepts : Writing
and Debugging Programs.
G-2
Les tentatives de mesure, sous AIX, dintervalles de temps minimes se heurtent souvent
lactivit darrire-plan intermittente du sytme dexploitation et la mobilisation de temps
de traitement par les routines du systme. Une solution ce problme consiste accder
directement lhorloge du processeur pour dterminer le dbut et la fin des mesures
interrompues, effectuer les mesures plusieurs fois et filtrer le rsultat pour liminer les
priodes coupes par des interruptions.
Dans les architectures POWER et POWER2, lhorloge du processeur est implante comme
paire de registres spciaux. Larchitecture PowerPC dfinit un registre 64 bits appel base
horaire. Ces registres ne sont accessibles quaux programmes en assembleur.
Attention : Les dures mesures par lhorloge du processeur correspondent des
temps absolus. Si une interruption se produit dans lintervalle, la dure calcule inclut
celle du traitement de cette interruption et, ventuellement, celle dautres processus,
avant que le contrle ne revienne au code chronomtr. Autrement dit, la dure issue de
lhorloge processeur est une dure brute, quil ne faut pas utiliser sans vrification.
Sous AIX version 4.1, une paire de sous-routines de bibliothque a t ajoute au systme
pour faciliter laccs ces registres et le rendre indpendant de larchitecture. Il sagit des
routines read_real_time et time_base_to_time. La sous-routine read_real_time extrait
lheure courante de la source ad hoc et la stocke sous forme de deux valeurs de 32 bits.
La sous-routine time_base_to_time vrifie que lheure est exprime en secondes et
nanosecondes, excutant au besoin les conversions ncessaires partir du format base
horaire. La sparation des deux fonctions (obtention de lheure et conversion) a pour but de
minimiser la charge dobtention de lheure.
Lexemple suivant illustre lutilisation de ces routines pour mesurer le dlai dexcution dune
portion spcifique de code :
#include <stdio.h>
#include <sys/time.h>
int main(void) {
timebasestruct_t start, finish;
int val = 3;
int w1, w2;
double time;
/* get the time before the operation begins */
read_real_time(&start, TIMEBASE_SZ);
/* begin code to be timed */
printf(This is a sample line %d \n, val);
/* end code to be timed
*/
/* get the time after the operation is complete
read_real_time(&finish, TIMEBASE_SZ);
/* call the conversion routines unconditionally, to ensure
*/
/* that both values are in seconds and nanoseconds regardless */
/* of the hardware platform.
*/
time_base_to_time(&start, TIMEBASE_SZ);
time_base_to_time(&finish, TIMEBASE_SZ);
/* subtract the starting time from the ending time */
w1 = finish.tb_high start.tb_high; /* probably zero */
w2 = finish.tb_low start.tb_low;
H-1
*/
*/
Pour rduire la charge dappel et de retour des routines dhorloge, lanalyste peut essayer
de lier les rfrences de jeux dessais non partages (voir Annexe G).
Sil sagit dvaluer des performances relles, vous pouvez excuter plusieurs fois le code
mesurer. Si vous avez chronomtr ensemble un certain nombre de rptitions
conscutives, vous pouvez calculer le temps moyen, sachant quil risque dinclure le temps
de traitement dinterruptions ou dautres activits. Si les rptitions ont t chronomtres
individuellement, tudiez les dlais pour valuer sil sont raisonnables, mais pensez que le
temps dexcution des routines de chronomtrage est inclus dans chaque mesure. Vous
pouvez utiliser les deux techniques et comparer les rsultats. En tout tat de cause, le choix
dune mthode dpend beaucoup de lobjectif des mesures.
H-2
.globl
.rtc_upper: mfspr
br
.rtc_upper
3,4
.globl
.rtc_lower: mfspr
br
.rtc_lower
3,5
= rtc_upper();
/* seconds
= rtc_lower();
/* nanoseconds
= rtc_upper();
/* Check for a carry from
(ts != tu)
/* the lower reg to the upper.
tl = rtc_lower();
/* Recover from the race condition.
return ( tu + (double)tl/1000000000 );
*/
*/
*/
*/
*/
}
La sous-routine second peut tre appele par une routine C ou FORTRAN.
Remarque : La prcision de second.c peut varier en fonction du temps coul depuis la
dernire rinitialisation du systme. Plus long est ce dlai, plus lev est le nombre de
bits de prcision consomme par la partie secondes entires du nombre. La technique
indique au dbut de cette annexe vite le problme en effectuant la soustraction
requise pour obtenir le dlai coul avant conversion en virgule flottante.
H-3
11
t1 = second()
my_favorite_subroutine()
t2 = second()
write(6,11) (t2 t1)
format(f20.12)
end
H-4
Le support AIX NLS (National Language Support) facilite lexploitation dAIX dans diffrents
environnements de langues. Lutilisation de NLS ntant pas sans consquence sur les
performances du systme, nous allons en prsenter les principales caractristiques.
NLS permet dadapter AIX en fonction de la langue et de lenvironnement culturel de
lutilisateur. Un environnement local, qui combine une langue et un ensemble de spcificits
gographiques ou culturelles, est identifi par un nom compos, tel que en_US
(anglais amricain). A chaque environnement local, sont associs un ensemble de
catalogues de messages, des tables de tri et dautres informations dfinissant les
spcificits de lenvironnement. A linstallation dAIX, ladministrateur systme dcide des
informations locales installer. Par la suite, les utilisateurs peuvent les adapter chaque
shell en modifiant les variables LANG et LC_ALL.
Le seul environnement local ne rpondant pas la structure ci-dessus est
lenvironnement C (ou POSIX). Il sagit de lenvironnement par dfaut (utilis si aucun autre
nest explicitement slectionn). Cest galement lenvironnement dans lequel est lanc
chaque processus nouvellement gnr. Une excution dans lenvironnement C quivaut
presque, sous AIX, une excution dans lenvironnement originel, unilingue, dUNIX.
Il nexiste pas de catalogues de messages C : les programmes qui tentent dobtenir un
message dun catalogue reoivent le message par dfaut compil dans le programme.
Certaines commandes, telle sort, reviennent leurs algorithmes dorigine, spcifiques de
leur jeu de caractres.
Selon nos mesures, les performances de NLS relvent de trois niveaux possibles.
Lenvironnement C est gnralement le plus rapide pour lexcution des commandes, suivi
des environnements mono-octets (alphabet latin), tels que en_US, les environnements
multioctets tant les plus lents.
I-1
(dans lequel le texte est rdig, enregistr sur disque ou saisi lcran) au format wchar_t,
est relativement coteuse. Il convient donc de ne recourir au type wchar_t que si lefficacit
du programme compense largement le cot de la conversion de et vers le format wchar_t.
Quelques rgles
Faute de connatre les quelques contraintes qui psent sur les jeux de caractres multioctet
et le minimum de fonctions dinternationalisation qui liminent le problme, vous risquez
dcrire un programme dune remarquable lenteur. Voici quelques conseils :
Dans tous les jeux de caractres pris en charge par BULL, les codes 0x00 0x3F sont
uniques et rservs aux caractres ASCII standard. Etre unique signifie ici que ces
combinaisons napparaissent jamais comme lment du codage dun caractre
multioctet. Le caractre nul faisant partie de ce jeu, les fonctions strlen, strcpy et strcat
sappliquent aux chanes multi- et mono-octet. Le programmeur ne doit pas oublier que la
fonction strlen renvoie le nombre doctets de la chane et non le nombre de caractres.
De mme, la fonction de chane standard strchr(foostr, /) fonctionne
correctement dans tous les environnements, dans la mesure o le signe / (barre oblique)
fait partie dun intervalle du code unique. En ralit, la plupart des dlimiteurs standard
appartiennent lintervalle 0x00 0x3F, et lessentiel de lanalyse peut tre effectu sans
recours aux fonctions dinternationalisation ou la conversion au format wchar_t.
La comparaison entre chanes conduit une de deux relations : galit ou ingalit. Pour
un test dgalit, optez pour la fonction standard strcmp. En crivant :
if (strcmp(foostr,a rose) == 0)
nous ne recherchons pas le nom rose, mais cette combinaison exacte de bits.
Si foostr contient ros, cela ne nous intresse pas.
Les relations dingalit sont testes lorsquil sagit dordonner des chanes selon lordre
de tri dfini pour lenvironnement local. Pour ce faire, nous utilisons :
if (strcoll(foostr,barstr) > 0)
en tant conscient du cot de lopration de tri sur chaque caractre.
Tout programme excut (via exec) est toujours dmarr dans lenvironnement local C.
Sil doit faire appel une ou plusieurs fonctions dinternationalisation, dont des accs aux
catalogues de message, il doit excuter :
setlocale(LC_ALL, );
pour passer lenvironnement local de son processus parent avant tout appel une
fonction dinternationalisation.
I-2
Voir aussi
Gestion des ressources AIX : gnralits.
Commande sort.
I-3
I-4
Cette annexe donne la liste des paramtres qui ont une incidence sur les performances.
Cette liste est classe dans lordre alphabtique.
Modification :
Diagnostics :
Optimisation :
Voir :
arpt_killc
Objet :
Valeurs :
Affichage :
Modification :
Diagnostics :
Optimisation :
Voir :
J-1
Valeurs :
Affichage :
Modification :
Diagnostics :
Optimisation :
Voir :
Compte biod
Objet :
Valeurs :
Affichage :
Modification :
Diagnostics :
Optimisation :
Voir :
J-2
Dcompte nfsd
Objet :
Valeurs :
Affichage :
Modification :
Diagnostics :
Optimisation :
Voir :
dog_ticks
Objet :
Valeurs :
Affichage :
Modification :
Diagnostics :
Optimisation :
Voir :
Diagnostics :
Optimisation :
Voir :
Dlai dattente avant relance dun fork ayant chou par manque
despace de pagination.
Par dfaut : 10 (impulsions dhorloge de 10 millisecondes). Intervalle :
10 n impulsions dhorloge.
schedtune
schedtune f nouvelle-valeur.
La modification est immdiate. La modification est effective jusqu
lamorage systme suivant. Pour un changement permanent, ajoutez
la commande schedtune /etc/inittab.
Si des processus ont t tus par manque despace de pagination,
surveillez la situation laide de la sous-routine sigdanger().
Si le manque despace de pagination est d des surcharges brves et
sporadiques, augmenter le delai de ressai peut entraner un
allongement du dlai dattente des processus permettant une libration
despace de pagination. Sinon, il convient dagrandir ces espaces.
N/A.
J-3
Intervalle syncd
Objet :
Valeurs :
Affichage :
Modification :
Diagnostics :
Optimisation :
Voir :
ipforwarding
Objet :
Valeurs :
Affichage :
Modification :
Diagnostics :
Optimisation :
Voir :
ipfragttl
Objet :
Valeurs :
Affichage :
Modification :
Diagnostics :
Optimisation :
Voir :
J-4
ipqmaxlen
Objet :
Valeurs :
Affichage :
Modification :
Diagnostics :
Optimisation :
Voir :
ipsendredirects
Objet :
Valeurs :
Affichage :
Modification :
Diagnostics :
Optimisation :
Voir :
Diagnostics :
Optimisation :
Voir :
J-5
Diagnostics :
Optimisation :
Voir :
Diagnostics :
Optimisation :
Voir :
Diagnostics :
Optimisation :
Voir :
J-6
Diagnostics :
Optimisation :
Voir :
Diagnostics :
Optimisation :
Voir :
Diagnostics :
Optimisation :
Voir :
J-7
maxbuf
Objet :
Valeurs :
Affichage :
Modification :
Diagnostics :
Optimisation :
Voir :
max_coalesce
Objet :
Valeurs :
Affichage :
Modification :
Diagnostics :
Optimisation :
Voir :
maxfree
Objet :
Valeurs :
Affichage :
Modification :
Diagnostics :
Optimisation :
Voir :
J-8
maxperm
Objet :
Valeurs :
Affichage :
Modification :
Diagnostics :
Optimisation :
Voir :
maxpgahead
Objet :
Valeurs :
Affichage :
Modification :
Diagnostics :
Optimisation :
Voir :
J-9
maxpout
Objet :
Valeurs :
Affichage :
Modification :
Diagnostics :
Optimisation :
Voir :
maxttl
Objet :
Valeurs :
Affichage :
Modification :
Diagnostics :
Optimisation :
Voir :
Diagnostics :
Optimisation :
Voir :
J-10
minfree
Objet :
Valeurs :
Affichage :
Modification :
Diagnostics :
Optimisation :
Voir :
minperm
Objet :
Valeurs :
Affichage :
Modification :
Diagnostics :
Optimisation :
Voir :
minpgahead
Objet :
Valeurs :
Affichage :
Modification :
Diagnostics :
Optimisation :
Voir :
J-11
minpout
Objet :
Valeurs :
Affichage :
Modification :
Diagnostics :
Optimisation :
Voir :
MTU
Objet :
Valeurs :
Affichage :
Modification :
Diagnostics :
Optimisation :
Voir :
J-12
Diagnostics :
Optimisation :
Voir :
Diagnostics :
Optimisation :
Voir :
J-13
Spcifie si NFS ignore les erreurs NFS dues des dfinitions dattributs
PC illgaux.
Par dfaut : Intervalle : 0 1
nfso a
nfso o nfs_setattr_error=nouvelle-valeur
La modification est immdiate.
La modification est effective jusqu lamorage systme suivant.
N/A.
N/A.
N/A.
Diagnostics :
Optimisation :
Voir :
J-14
nonlocsrcroute
Objet :
Valeurs :
Affichage :
Modification :
Diagnostics :
Optimisation :
Voir :
J-15
Valeurs :
Affichage :
Modification :
Diagnostics :
J-16
Optimisation :
Voir :
pd_npages
Objet :
Valeurs :
Affichage :
Modification :
Diagnostics :
Optimisation :
Voir :
rec_que_size
Objet :
Valeurs :
Affichage :
Modification :
Diagnostics :
Optimisation :
Voir :
rfc1122addrchk
Objet :
Valeurs :
Affichage :
Modification :
J-17
Diagnostics :
Optimisation :
Voir :
N/A.
Cette valeur ne doit pas tre modifie.
N/A.
Objet :
rfc1323
Valeurs :
Affichage :
Modification :
Diagnostics :
Optimisation :
Voir :
sb_max
Objet :
Valeurs :
Affichage :
Modification :
Diagnostics :
Optimisation :
Voir :
subnetsarelocal
Objet :
Valeurs :
Affichage :
Modification :
Diagnostics :
J-18
Optimisation :
Voir :
Valeurs :
Affichage :
Modification :
Diagnostics :
Optimisation :
Voir :
tcp_keepidle
Objet :
Valeurs :
Affichage :
Modification :
Diagnostics :
Optimisation :
Voir :
tcp_keepintvl
Objet :
Valeurs :
Affichage :
Modification :
Diagnostics :
J-19
Optimisation :
Voir :
tcp_mssdflt
Objet :
Valeurs :
Affichage :
Modification :
Diagnostics :
Optimisation :
Voir :
tcp_recvspace
Objet :
Valeurs :
Affichage :
Modification :
Diagnostics :
Optimisation :
Voir :
tcp_sendspace
Objet :
Valeurs :
Affichage :
Modification :
Diagnostics :
Optimisation :
Voir :
J-20
tcp_ttl
Objet :
Valeurs :
Affichage :
Modification :
Diagnostics :
Optimisation :
Voir :
thewall
Objet :
Valeurs :
Affichage :
Modification :
Diagnostics :
Optimisation :
Voir :
udp_recvspace
Objet :
Valeurs :
Affichage :
Modification :
Diagnostics :
Optimisation :
Voir :
J-21
udp_sendspace
Objet :
Valeurs :
Affichage :
Modification :
Diagnostics :
Optimisation :
Voir :
udp_ttl
Objet :
Valeurs :
Affichage :
Modification :
Diagnostics :
Optimisation :
Voir :
xmt_que_size
Objet :
Valeurs :
Affichage :
Modification :
Diagnostics :
Optimisation :
Voir :
J-22
Index
Symboles
#pragma isolated_call, 4-17
#pragma pour programme C, 4-16
A
activit systme, analyse avec lutilitaire de suivi,
11-1
affectation anticipe des emplacements despace
de pagination, 2-11
algorithme de remplacement de page, 2-8
optimisation, 7-16
anneau jeton
(16 Mo) conseils doptimisation, 9-24
(4 Mo) conseils doptimisation, 9-24
applications dpendantes du disque, 12-25
ATM, conseils doptimisation, 9-25
B
bibliothques, G-1
bibliothques de sousroutines, D-1
bibliothques partages, G-1
valuation de lutilisation de la CPU, 6-15
bote outils, disponibilit, A-1
Bote outils AIX, disponibilit, A-1
Bote outils Performance Toolbox (PTX), 12-16
disponibilit, A-1
C
cache
absence, 1-4
architecture, C-1
en mappage direct, C-3
prsence, 1-4
absence, C-3
utilisation efficace, 4-11
caractre, multioctet, I-1
cartes, conseils doptimisation, 9-13
charge dune station de travail, 1-7
charge de travail
multiutilisateur, 1-7
serveur, 1-7
charge de travail du serveur, 1-7
charge de travail multiutilisateur, 1-7
charge de travail., identification, 1-8
codage
prprocesseur et compilateur, 4-14
sousroutine string, 4-18
style C et C++ efficace, 4-19
style de code paginable, utilisation efficace,
4-21
utilisation efficace de la mmoire cache, 4-11
cohrence de lcriture miroir, 4-27
commande filemon, 8-8
disponibilit, 8-8
commande iostat
contrle des performances, 5-3
exemple de rapport rcapitulatif, 12-24
Index
X-1
D
dbit, 1-2
dcharger, 2-7
dfaut de page
exemple, 1-4
nouvelle, 2-7
repagination, 2-7
dfaut de page dj rfrence, 2-7
dmon biod, 9-36, J-2
dmon nfsd, 9-36, J-3
directive #pragma disjoint, 4-16
disque fixe, 4-24
disques
affectation de fragment, 8-17
commande filemon, 8-8
compression de systme de fichiers, 8-18
criture diffre, 2-15
espace de pagination, 4-26
valuation des performances avec iostat, 8-2
extension et amlioration de la configuration,
8-10
fichiers mapps, 2-15
fragmentation, 2-14
rduction, 8-5
gnralits sur la gestion, 2-13
groupe de volumes (VG), 2-13
lecture anticipe, 2-14
X-2
E
criture diffre, 2-15
diteur de liens, D-1
dition de liens des bibliothques de
sousroutines, D-1
emballement, limination, 7-14
entre a.out vers la commande ld, D-1
environnement local, I-1
espace de pagination, 2-6
affectation anticipe des emplacements, 2-11
espace de pagination insuffisant paramtre
de ressai, A-8, J-3
postaffectation des emplacements, 2-11
sousroutine psdanger(), 4-26
taille, J-19
taille et position, 4-26
essai comparatif, standard de lindustrie, 1-2
Ethernet, conseils doptimisation, 9-23
excution de la commande cc, 4-20
excution de la commande xlc, temps de latence,
4-20
exploitation par blocs, 4-14
F
FDDI, conseils doptimisation, 9-24
fichier excutable, D-1
fichiers, 2-15
files dattente de rception, 9-14
files dattente de rception , 9-14
files dattente de transmission, 9-13
fork, intervalle de ressai, J-3
fragment, systme de fichiers, 8-17
fragmentation, disque, 8-5
G
gestion de la charge de travail, 12-29
gestionnaire de mmoire virtuelle (VMM)
dfinition, 2-5
description, 1-6
Gestionnaire des volumes logiques (LVM), 1-6
grappe
description, 9-26
lowclust, 9-26
mb_cl_hiwat, 9-27
mbuf, 9-3
grappe mbuf, 9-3, 9-26
groupe de volumes (VG), 2-13
H
HIPPI, conseils doptimisation, 9-25
horloge (matrielle), accs, H-1
I
identification des ressources limitatives, 12-23
ILS (International Language Support), I-1
astuces de codage, I-2
variable denvironnement
LANG, I-2
LC_ALL, I-2
installation
conseils de configuration dinstallation, 4-23
conseils relatifs aux disques, 4-24
Interphase Network Coprocessor, 9-40
intervalle de scurit, 2-9
intervalle syncd, J-4
intrusion, des outils de performance, E-1
IP
conseils doptimisation, 9-23
flux denvoi, 9-10
flux de rception, 9-10
maxttl, J-10
paramtre ipforwarding, J-4
paramtre ipfragttl, J-4
paramtre ipqmaxlen, J-5
paramtre ipsendredirects, J-5
paramtre nonlocsrcroute, J-15
prsentation fonctionnelle, 9-10
ipqmaxlen, rcapitulatif, 9-33
iptrace
exemple de sortie, 9-61, 9-62
formatage du rapport, 9-61
lancement et arrt, 9-61
problmes de performances, 9-61
L
LANG, I-2
latence de recherche, 1-3
LC_ALL, I-2
ld (diteur de liens), D-1
lecture anticipe, 2-14, 8-11
lectures squentielles anticipes, 8-11
libc.a, 6-15
liste des disponibilits, 2-6
modification de la taille, 7-16
paramtre maxfree, J-8
paramtre minfree, J-11
M
malloc
affectation des emplacements de lespace de
pagination, 2-11
AIX 3.1 et AIX 3.2, F-1
perte de mmoire., 7-4
maxbuf, J-8
maxperm, J-9
modification, 7-17
prsentation, 2-8
maxpgahead, J-9
maxpout, J-10
mb_cl_hiwat, 9-27
mbuf
conseils doptimisation, 9-29
description, 9-26
gnralits sur la gestion, 9-3
lowclust, 9-26, J-6
lowmbuf, 9-26, J-7
mb_cl_hiwat, 9-27, J-10
vrification de la taille actuelle du pool, 9-30
mmoire
de calcul, 2-7
valuation des besoins dune application, 7-8
fichier, 2-7
rduction de la taille, 12-27
mmoire fixe, 4-22
minperm, J-11
modification, 7-17
prsentation, 2-8
minpgahead, J-11
minpout, J-12
MTU, 9-35, J-12
N
National Language Support (NLS), I-1
NFS
acclrateurs matriels, 9-40
cache dattribut de fichier, 9-38
compte biod, J-2
configuration du disque du serveur, 4-24
mise en cache de donnes, 9-39
montage logiciel et matriel, 9-37
nombre de biods et de nfsds, 9-36
paramtre nfs_chars, J-13
paramtre nfs_gather_threshold, J-13
paramtre nfs_portmon, J-13
paramtre nfs_repeat_messages, J-14
paramtre nfs_setattr_error, J-14
paramtre nfs_udpcksum, J-14
paramtre timeo, 9-38
prsentation, 9-36
relation avec les couches infrieures, 9-39
support ACL, 9-39
taille du tampon socket, 9-39
Index
X-3
O
optimisation
compilateur XL, 4-14
effet sur la vitesse du compilateur, 4-20
niveau, 4-18
propre une architecture, 4-15
optimisation de DFS, 10-1
optimisation des performances, tapes, 1-8
optimisation des performances du systme, tapes
du processus, 1-8
outil BigFoot, 7-5
outil STEM, exemple danalyse du flux de
commande, 6-17
outils doptimisation, A-3
outils de performance, A-1, A-3
outils de rapport et danalyse, A-1
P
pages, 2-5
paramtres, optimisables, rcapitulatif, J-1
paramtres AIX optimisables, rcapitulatif, J-1
paramtres doptimisation UDP, TCP/IP et mbuf,
9-31
partie active (dfinition), 4-12
partition logique (LP), 2-13
partition physique (PP), 2-13
performances de la sousroutine printf, 6-16
PerfPMR
capture des donnes, 13-4
diagnostic des performances, 12-21
installation, 13-3
pour AIX version 3, 13-2
rapport dun possible dfaut de performance
AIX, 13-1
pile de disques, 2-16
pilote de la carte LAN
flux denvoi, 9-11
flux de rception, 9-11
placement sur le disque, 8-3
points critiques de la CPU, recherche dans un
programme, 6-10
politique de planification, 2-2
porte concurrentielle, 2-2
porte concurrentielle globale, 2-2
porte concurrentielle locale, 2-2
position sur le disque, 8-3
postaffectation des emplacements despace de
pagination, 2-11
POWER (architecture), 4-15
pragma, 4-16
Prestoserve, 9-40
priorit
affichage via ps, 6-21
commande nice, 2-3
commande renice, 2-3
composant
minimum routine utilisateur, 2-3
utilisation de la CPU, 2-3
valeur nice, 2-3
excution dune commande avec nice, 6-20
fixe, 2-3
affichage via ps, 6-21
X-4
R
RAID, 2-16
RAM, mesur des besoins via rmss, 7-8
rec_que_size, J-17
rcapitulatif, 9-34
rdition des liens de fichiers excutables, D-1
registres de segment, C-2
regroupement rfrentiel, dfinition, 4-12
rgulation, 2-16
E/S disque, 8-13
rgulation des E/S, 2-16, 8-13
remplacement de page, A-9
rorganisation des donnes sur disque, 8-5
rpartition, 8-15
rpartition des volumes logiques, 8-15
rseau
commande netpmon, 9-59
iptrace, 9-61
paramtre arpt_killc, J-1
paramtre loop_check_sum, J-6
rsolution de chemins daccs, 9-42
rsolution de problmes de performances
communications, 9-1
CPU, 6-1
disque, 8-1
gnralits, 12-17
mmoire, 7-1
ressource
critique, 1-9
valuation, 4-3, 4-7
logique, 1-9
mesure, 4-4
relle, 1-9
supplmentaire, 1-11, 8-10
ressource critique, 1-9
rfc1122addrchk, J-17
rfc1323, J-18
rcapitulatif, 9-32
routine
politique de planification, 2-2
porte concurrentielle, 2-2
S
saturation de la file dentre IP, 9-23
saturation des files dentre IP, 9-23
sb_max, J-18
rcapitulatif, 9-32
script pdt_config, A-12
script pdt_report, A-13
script shell vmstatit, 12-25
segment, mmoire virtuelle, associatif quatre
voies, C-2
segment diffr
client, 2-6
de travail, 2-6
dcharger, 2-6
journalis, 2-6
persistant, 2-6, 2-14
SMIT
cration dun port TTY, 9-58
dfinition des paramtres de rgulation des
E/S disque, 8-13
nombre de dmons nfsd lanc au dmarrage,
9-47
SOCC, conseils doptimisation, 9-25
socket
cration, 9-4
flux denvoi, 9-4
flux de rception, 9-4
limite de la taille du tampon, 9-3
taille du tampon, 9-39
sockthresh, rcapitulatif, 9-31
sort, performance en environnement local C et non
C, I-1
sousroutine free
limination des pertes de mmoire, 7-4
utilisation inutile, 7-4
sousroutine fsync, 8-21
sousroutine psdanger(), 4-26
sousroutine realloc, 7-4, F-1
sousroutine setpri, 2-3
exemple, 6-20
sousroutine string, 4-18
sousroutine trcstart, 11-7
station de travail sans disque, 9-41
activit NFS pour excution dun programme
simple, 9-42
cart de performances avec les systmes
disque, 9-48
pagination via NFS, 9-44
remarques sur loptimisation, 9-46
ressources requises, 9-45
statistiques de pagination, 12-26
subnetsarelocal, J-18
surcharge, des outils de contrle, E-1
System Management Interface Tool, 9-47
systme de fichiers journalis (JFS), 2-14
T
tableaux
C, 6-13
structure du stockage, C-5
tableaux C, 6-13
tampon historique des pages dj rfrences, 2-7
tampon TLB (Translation Lookaside Buffer)
absence
RAM, 1-4
remplissage de ligne, C-4
prsence, C-4
TCP
conseils doptimisation, 9-12
fentre (illustration), 9-6
flux denvoi, 9-9
flux de rception, 9-9
prsentation fonctionnelle, 9-6
TCP/IP, 9-6, 9-10
illustration du flux de donnes, 9-2
iptrace, 9-61
tcp_keepidle, J-19
tcp_keepintvl, J-19
tcp_mssdflt, J-20
tcp_recvspace, J-20
rcapitulatif, 9-33
tcp_sendspace, J-20
rcapitulatif, 9-33
tcp_ttl, J-21
temps de latence
dfinition, 1-3
recherche, 1-3
rotationnelle, 1-3
temps de rponse, 1-2
thewall, J-21
rcapitulatif, 9-31
thewall (description), 9-27
TLB, 1-4
trace
ajout dvnements, 11-9
appels ioctl de contrle, 11-7
canaux, 11-9
commandes de contrle, 11-6
exemple dvnement utilisateur, 11-11
format article vnement, 11-9
ID vnement, 11-10
macros, 11-10
souscommande, 11-6
sousroutines de contrle, 11-7
syntaxe de la strophe de fichier de format,
11-13
utilitaire, 11-1
tranche horaire, 2-4
augmentation, J-1
effet, 2-4
modification via schedtune, 2-4, 6-25
U
UDP
conseils doptimisation, 9-12
flux denvoi, 9-6
flux de rception, 9-6
illustration du flux de donnes, 9-2
prsentation fonctionnelle, 9-5
udp_recvspace, J-21
rcapitulatif, 9-32
udp_sendspace, J-22
rcapitulatif, 9-32
udp_ttl, J-22
Index
X-5
V
valeur nice, 2-3
variable denvironnement
LANG, I-2
LC_ALL, I-2
MALLOCTYPE, F-1
PATH, 9-44
variable denvironnement MALLOCTYPE, F-1
X-6
X
xmt_que_size, J-22
rcapitulatif, 9-34
N Rfrence / Reference N :
86 F2 72AP 04
Dat / Dated :
Octobre 1999
NOM / NAME :
SOCIETE / COMPANY :
ADRESSE / ADDRESS :
Date :
Managers / Gestionnaires :
Mrs. / Mme :
C. DUMOULIN
Mr. / M :
L. CHERUBIN
+33 (0) 2 41 73 76 65
+33 (0) 2 41 73 63 96
FAX :
EMail / Courrier Electronique :
+33 (0) 2 41 73 60 19
srv.Cedoc@franp.bull.fr
CEDOC Reference #
No Rfrence CEDOC
Qty
Qt
CEDOC Reference #
No Rfrence CEDOC
Qty
Qt
CEDOC Reference #
No Rfrence CEDOC
__ __ ____ _ [__]
__ __ ____ _ [__]
__ __ ____ _ [__]
__ __ ____ _ [__]
__ __ ____ _ [__]
__ __ ____ _ [__]
__ __ ____ _ [__]
__ __ ____ _ [__]
__ __ ____ _ [__]
__ __ ____ _ [__]
__ __ ____ _ [__]
__ __ ____ _ [__]
__ __ ____ _ [__]
__ __ ____ _ [__]
__ __ ____ _ [__]
__ __ ____ _ [__]
__ __ ____ _ [__]
__ __ ____ _ [__]
__ __ ____ _ [__]
__ __ ____ _ [__]
__ __ ____ _ [__]
Qty
Qt
[ _ _ ] : no revision number means latest revision / pas de numro de rvision signifie rvision la plus rcente
NOM / NAME :
Date :
SOCIETE / COMPANY :
ADRESSE / ADDRESS :
TELEPHONE / PHONE :
FAX :
EMAIL :
86 F2 72AP 04
AIX
AIX 4.3
Guide
doptimisation
86 F2 72AP 04
AIX
AIX 4.3
Guide
doptimisation
86 F2 72AP 04
AIX
AIX 4.3
Guide
doptimisation
86 F2 72AP 04