Red Hat Enterprise Linux 3: Introduction à l'administration système | ||
---|---|---|
Précédent | Chapitre 4. Mémoire physique et mémoire virtuelle | Suivant |
En raison de la complexité inhérente à un système d'exploitation doté d'une mémoire virtuelle paginée à la demande, le contrôle des ressources associées à la mémoire peut être quelque peu déroutant sous Red Hat Enterprise Linux. Il est par conséquent préférable de commencer avec les outils simples et d'avancer progressivement.
À l'aide de la commande free, il est possible d'obtenir un aperçu concis (bien que simpliste) de l'utilisation de la mémoire et du swap, comme le montre l'extrait ci-dessous :
total used free shared buffers cached Mem: 1288720 361448 927272 0 27844 187632 -/+ buffers/cache: 145972 1142748 Swap: 522104 0 522104 |
Notez que ce système ne dispose que de 1,2 Go de mémoire vive (RAM) dont seulement 350 Mo sont en fait utilisés. Comme on peut le supposer avec un système doté d'une telle quantité de RAM libre, aucune partie des 500 Mo de la partition swap n'est utilisée.
Comparez maintenant l'exemple ci-dessus avec celui qui suit :
total used free shared buffers cached Mem: 255088 246604 8484 0 6492 111320 -/+ buffers/cache: 128792 126296 Swap: 530136 111308 418828 |
Ce système dispose d'environ 256 Mo de RAM dont la majorité est utilisée, ne laissant qu'environ 8 Mo de libre. Plus de 100 Mo des 512 Mo de la partition swap sont utilisés. Bien que le système en question soit certainement plus limité en termes de mémoire que le système de notre premier exemple, il est nécessaire d'examiner la situation plus en profondeur afin de déterminer si la limitation de mémoire entraîne des problèmes de performance.
Bien que la commande vmstat soit plus énigmatique que free, elle a l'avantage de fournir plus d'informations que les seules statistiques sur l'utilisation de la mémoire. Ci-après figure la sortie de la commande vmstat 1 10:
procs memory swap io system cpu r b w swpd free buff cache si so bi bo in cs us sy id 2 0 0 111304 9728 7036 107204 0 0 6 10 120 24 10 2 89 2 0 0 111304 9728 7036 107204 0 0 0 0 526 1653 96 4 0 1 0 0 111304 9616 7036 107204 0 0 0 0 552 2219 94 5 1 1 0 0 111304 9616 7036 107204 0 0 0 0 624 699 98 2 0 2 0 0 111304 9616 7052 107204 0 0 0 48 603 1466 95 5 0 3 0 0 111304 9620 7052 107204 0 0 0 0 768 932 90 4 6 3 0 0 111304 9440 7076 107360 92 0 244 0 820 1230 85 9 6 2 0 0 111304 9276 7076 107368 0 0 0 0 832 1060 87 6 7 3 0 0 111304 9624 7092 107372 0 0 16 0 813 1655 93 5 2 2 0 2 111304 9624 7108 107372 0 0 0 972 1189 1165 68 9 23 |
Dans cet extrait de 10 secondes, la quantité de mémoire libre (le champ free) change quelque peu et il y a une certaine activité d'E/S associée au swap (les champs si et so), mais d'une manière générale, ce système fonctionne bien. Ceci étant, il est difficile de connaître l'importance de la charge de travail supplémentaire que le système pourrait accepter, étant donné l'utilisation actuelle de mémoire.
Lors de toute recherche de problème en relation avec la mémoire, il est souvent nécessaire de déterminer comment le sous-système de mémoire virtuelle de Red Hat Enterprise Linux utilise la mémoire du système. À l'aide de la commande sar, il est possible d'examiner cet aspect de la performance du système de manière plus détaillée.
En parcourant le rapport sar -r suivant, il est possible d'examiner l'utilisation de la mémoire et du swap en détail :
Linux 2.4.20-1.1931.2.231.2.10.ent (pigdog.example.com) 07/22/2003 12:00:01 AM kbmemfree kbmemused %memused kbmemshrd kbbuffers kbcached 12:10:00 AM 240468 1048252 81.34 0 133724 485772 12:20:00 AM 240508 1048212 81.34 0 134172 485600 … 08:40:00 PM 934132 354588 27.51 0 26080 185364 Average: 324346 964374 74.83 0 96072 467559 |
Les champs kbmemfree et kbmemused fournissent des statistiques typiques sur la mémoire libre et la mémoire utilisée, le pourcentage de la mémoire utilisée apparaissant dans le champ %memused. Les champs kbbuffers et kbcached quant à eux indiquent la quantité de kilo-octets de mémoire allouée aux tampons (ou buffers) et au cache de données de tout le système.
Le champ kbmemshrd affiche toujours un zéro pour des systèmes (tels que Red Hat Enterprise Linux) utilisant un noyau Linux 2.4.
Notez que les lignes de ce rapport ont été tronquées afin de tenir sur la page. Ci-après figure la partie restante de chaque ligne à laquelle l'horodatage a été ajouté, afin de faciliter la lecture :
12:00:01 AM kbswpfree kbswpused %swpused 12:10:00 AM 522104 0 0.00 12:20:00 AM 522104 0 0.00 … 08:40:00 PM 522104 0 0.00 Average: 522104 0 0.00 |
Pour l'utilisation du swap, les champs kbswpfree et kbswpused précisent en kilo-octets la quantité d'espace swap libre et utilisé, le champ %swpused lui, exprimant en pourcentage la quantité d'espace swap utilisé.
Pour en savoir plus sur l'activité d'échange de mémoire (ou swapping) se produisant, consultez le rapport sar -W dont un exemple figure ci-après :
Linux 2.4.20-1.1931.2.231.2.10.entsmp (raptor.example.com) 07/22/2003 12:00:01 AM pswpin/s pswpout/s 12:10:01 AM 0.15 2.56 12:20:00 AM 0.00 0.00 … 03:30:01 PM 0.42 2.56 Average: 0.11 0.37 |
Comme vous pouvez le remarquer, il y avait trois fois moins de pages provenant de swap (pswpin/s) qu'il n'y en avait allant vers swap (pswpout/s).
Pour mieux comprendre comment les pages sont utilisées, reportez-vous au rapport sar -B suivant :
Linux 2.4.20-1.1931.2.231.2.10.entsmp (raptor.example.com) 07/22/2003 12:00:01 AM pgpgin/s pgpgout/s activepg inadtypg inaclnpg inatarpg 12:10:00 AM 0.03 8.61 195393 20654 30352 49279 12:20:00 AM 0.01 7.51 195385 20655 30336 49275 … 08:40:00 PM 0.00 7.79 71236 1371 6760 15873 Average: 201.54 201.54 169367 18999 35146 44702 |
Il est possible de déterminer ici le nombre de blocs paginés en mémoire par seconde depuis le disque (pgpgin/s) et celui des blocs paginés sur le disque depuis la mémoire (pgpgout/s). Ces statistiques sont utilisées comme baromètre de l'activité globale de la mémoire virtuelle.
Toutefois, il est possible d'obtenir plus d'informations en examinant les autres champs de ce rapport. Le noyau de Red Hat Enterprise Linux identifie toutes les pages comme étant soit actives, soit inactives. Comme le nom l'indique, des pages actives sont d'une manière ou d'une autre en cours d'utilisation (en temps que pages de processus ou tampon par exemple) alors que des pages inactives ne le sont pas. Notre exemple de rapport montre que la liste des pages actives (le champ activepg) est en moyenne de 660 Mo[1].
Le reste des champs contenus dans ce rapport se concentrent sur la liste des pages inactives — des pages qui pour une raison ou une autre n'ont pas été récemment utilisées. Le champ inadtypg indique le nombre de pages inactives qui sont sales (ou dirty, c'est-à-dire qui ont été modifiées) et peuvent être enregistrées sur le disque. Le champ inaclnpg d'autre part, spécifie le nombre de pages inactives qui sont propres (ou clean, c'est-à-dire qui n'ont pas été modifiées) et ne doivent par conséquent pas être enregistrées sur disque.
Le champ inatarpg indique la taille souhaitée de la liste de pages inactives. Cette valeur, calculée par le noyau Linux, est déterminée de sorte que la liste des pages inactives demeure suffisamment grande pour servir de réserve en cas de remplacement de pages.
Pour obtenir des informations supplémentaires sur l'état (et plus particulièrement sur la fréquence à laquelle les pages changent d'état), consultez le rapport sar -R dont un exemple figure ci-après :
Linux 2.4.20-1.1931.2.231.2.10.entsmp (raptor.example.com) 07/22/2003 12:00:01 AM frmpg/s shmpg/s bufpg/s campg/s 12:10:00 AM -0.10 0.00 0.12 -0.07 12:20:00 AM 0.02 0.00 0.19 -0.07 … 08:50:01 PM -3.19 0.00 0.46 0.81 Average: 0.01 0.00 -0.00 -0.00 |
Les statistiques apparaissant dans le rapport sar ci-dessus sont uniques dans le sens où les valeurs sont positives, négatives ou équivalentes à zéro. Lorsque la valeur est positive, elle indique le taux selon lequel des pages de ce type augmentent. Lorsqu'elle est négative, elle indique le taux selon lequel des pages de ce type diminuent. Finalement, une valeur de zéro indique que des pages de ce type n'augmentent ni ne diminuent.
Dans cet exemple, le dernier échantillon montre qu'une quantité légèrement supérieure à trois pages par seconde est allouée dans la liste des pages libres (le champ frmpg/s et que presque une page par seconde est ajoutée au cache de pages (le champ campg/s). La liste des pages utilisées comme tampons (le champ bugpg/s) a augmenté d'environ une page toutes les deux secondes, alors que la liste des pages de mémoire partagée (le champ shmpg/s) n'a elle, ni augmenté, ni diminué en nombre.
[1] | Sous Red Hat Enterprise Linux sur un système x86 utilisé dans cet exemple, la taille de la page est de 4096 octets. Il est fort possible que des systèmes basés sur d'autres architectures aient des tailles de pages différentes. |
Précédent | Sommaire | Suivant |
Implications de la mémoire virtuelle au niveau de la performance | Niveau supérieur | Ressources supplémentaires |