/proc/slabinfo - Statistiques sur les données noyaux allouées.
Les objets fréquemment utilisés dans le noyaux Linux (têtes de buffer,
i-noeuds, entrées de répertoire...) ont leur propres caches.
Le fichier
/proc/slabinfo
fourni des statistiques. Par exemple :
-
$ cat /proc/slabinfo
slabinfo - version: 1.1
kmem_cache 60 78 100 2 2 1
blkdev_requests 5120 5120 96 128 128 1
mnt_cache 20 40 96 1 1 1
inode_cache 7005 14792 480 1598 1849 1
dentry_cache 5469 5880 128 183 196 1
filp 726 760 96 19 19 1
buffer_head 67131 71240 96 1776 1781 1
vm_area_struct 1204 1652 64 23 28 1
...
size-8192 1 17 8192 1 17 2
size-4096 41 73 4096 41 73 1
...
Il fournit pour chaque élément, le nom du cache, le nombre d'objet
actuellement actifs, le nombre total d'objets disponibles, la taille
de l'objet en octets, le nombre de pages avec au moins un objet
actif, le nombre total de pages allouées, et le nombre
de page par élément.
Notez qu'à cause de l'alignement des objets et du surcoût dû au cache,
les objets ne sont pas accolés dans les pages. Les pages avec
un seul objet en utilisation sont considérées comme utilisées et ne
peuvent pas être libérées.
Les noyaux compilés avec les statistiques d'utilisation du cache affichent
"(statistics") dans la première ligne, et proposent cinq colonnes
supplémentaires : la limite supérieure d'objets actifs, le nombre
de fois que les objets ont été alloués, le nombre de fois où le
cache a grandit (nouvelles pages ajoutées au cache), le nombre de fois
où le cache a été réduit (pages inutilisées retirées),
et le nombre d'erreur d'allocation de nouvelles pages dans le
cache. Si les statistiques ne sont pas validée dans le
noyau, ces colonnes ne sont pas affichées.
Les systèmes SMP ont également "(SMP)" dans la première ligne de sortie,
et deux colonnes supplémentaires, indiquant la politique d'allication
pour le cache local ay CPU (pour réduire le besoin de synchronisation
entre CPU lors d'allocation d'objet depuis le cache). La première colonne
est la limite par CPU : le nombre maximal
d'objets mis dans le cache pour chaque CPU.
La seconde colonne est un compte global :
le nombre maximum d'objets libres dans le cache global qui seront
transférés au cache par CPU s'il est vide, ou le nombre d'objets qui
set renvoyé dans le cache global si le cache par CPU est
plein.
Si les statistiques et le SMP sont définis simultanément, il y aura
quatre colonnes suppplémentaires, indiquant les statistiques du
cache par CPU. Les deux premières comptent les réussites et échecs des
allocations dans le cache par CPU : le nombre de fois où un objet était
ou n'était pas disponible pour allocation depuis le cache par CPU.
Les deux suivantes sont les réussites et échecs des libérations vers
le cache par CPU : le nomnbre de fois où un objet libéré a pu ou non
tenir dans les limites du cache par CPU, avant
de renvoyer les objets vers le cache global.
Il est possible d'ajuster les limites du cache par CPU et du transfert
vers le cache global avec :
echo "nom_cache limite batchcount" > /proc/slabinfo
Christophe Blaess, 2003.