/proc/slabinfo
Inhaltsverzeichnis
Der Slab-Allocator wird zur effizienten internen Speicherverwaltung genutzt. Er verwaltet häufig genutzte Kernelobjekte und stellt diese bei Bedarf schon vorinitialisiert zur Verfügung.
Beispiel
# cat /proc/slabinfo slabinfo - version: 2.1 # name <active_objs> <num_objs> <objsize> <objperslab> <pagesperslab> : tunables <limit> <batchcount> <sharedfactor> : slabdata <active_slabs> <num_slabs> <sharedavail> nfs_direct_cache 0 0 136 28 1 : tunables 120 60 8 : slabdata 0 0 0 nfs_write_data 36 40 896 4 1 : tunables 54 27 8 : slabdata 10 10 0 nfs_read_data 32 36 832 9 2 : tunables 54 27 8 : slabdata 4 4 0 nfs_inode_cache 17742 19113 1032 3 1 : tunables 24 12 8 : slabdata 6371 6371 0 nfs_page 0 0 128 30 1 : tunables 120 60 8 : slabdata 0 0 0 rpc_buffers 8 8 2048 2 1 : tunables 24 12 8 : slabdata 4 4 0 rpc_tasks 20 20 384 10 1 : tunables 54 27 8 : slabdata 2 2 0 rpc_inode_cache 16 25 768 5 1 : tunables 54 27 8 : slabdata 5 5 0 ip_fib_alias 9 118 64 59 1 : tunables 120 60 8 : slabdata 2 2 0 ip_fib_hash 9 118 64 59 1 : tunables 120 60 8 : slabdata 2 2 0 bio_map_info 100 105 1064 7 2 : tunables 24 12 8 : slabdata 15 15 0 dm_mpath 0 0 1064 7 2 : tunables 24 12 8 : slabdata 0 0 0 dm_uevent 0 0 2608 3 2 : tunables 24 12 8 : slabdata 0 0 0 dm_tio 0 0 24 144 1 : tunables 120 60 8 : slabdata 0 0 0 dm_io 0 0 48 77 1 : tunables 120 60 8 : slabdata 0 0 0 jbd_4k 0 0 4096 1 1 : tunables 24 12 8 : slabdata 0 0 0 scsi_cmd_cache 2 20 384 10 1 : tunables 54 27 8 : slabdata 2 2 0 [...]
Aufbau
- Erste Zeile
Version der Implementierung und ggf. der Hinweis zusätzliche statistische Informationen ((statistics))
- Zweite Zeile
- Bezeichnung der einzelnen Tabellenspalten
- Spalte 1 - name
- Name des Caches
- Spalte 2 - active_objs
- Anzahl der gegenwärtig aktiven Objekte
- Spalte 3 - num_objs
- Gesamtzahl der verfügbaren Objekte (belegt und unbelegt)
- Spalte 4 - objsize
- Größe jedes Objektes in Bytes
- Spalte 5 - objperslab
- Objekte pro Slab
- Spalte 6 - pagesperslab
- Pages pro Slab
- Spalten 7 und 8 - ": tunables"
- Anfang des Abschnitts mit veränderbaren Einstellungen
- Spalte 9 - limit
- Maximale Objektanzahl pro CPU-Cache
- Spalte 10 - batchcount
- Maximal Anzahl von Objekten, die gleichzeitig zwischen globalen und CPU-Cache verschobene werden.
- Die Objekte werden vom globalen in den CPU-Cache verschoben, wenn dieser leer ist.
- Ist ein CPU-Cache voll, werden die Objekte zurück in den globalen Cache verschoben
- Dieser Wert beschreibt wahrscheinlich auch die maximale Anzahl der Objekte, die auf einmal angelegt bzw. freigegeben werden.
- Spalte 11 - sharedfactor
- Dieser Parameter steuert die Verteilung auf SMP-Systemen
- Spalten 12 und 13 - ": slabdata"
- Spalte 14 - active_slabs
- Aktive Slabs - Slabs mit mindestens einem aktiven Objekt
- Spalte 15 - num_slabs
- Gesamtzahl der Slabs in diesem Cache
- Spalte 16 - sharedavail
- Zeigt wahrscheinlich, ob die Verteilung von Slabs auf SMP-Systemen aktiv oder inaktiv ist
Informationen in Echtzeit anzeigen
Mit slabtop lassen sich Slab-Statistiken analog zu top in Echtzeit anzeigen. Details zur Sortierung der Einträge enthält die Manpage.
# slabtop Active / Total Objects (% used) : 575599 / 663892 (86.7%) Active / Total Slabs (% used) : 50177 / 50182 (100.0%) Active / Total Caches (% used) : 92 / 143 (64.3%) Active / Total Size (% used) : 210801.75K / 225399.89K (93.5%) Minimum / Average / Maximum Object : 0.02K / 0.34K / 128.00K OBJS ACTIVE USE OBJ SIZE SLABS OBJ/SLAB CACHE SIZE NAME 330600 267264 80% 0.09K 8265 40 33060K buffer_head 123552 122385 99% 0.21K 6864 18 27456K dentry_cache 90105 90086 99% 0.74K 18021 5 72084K ext3_inode_cache [...]
Einstellungen ändern
Die Slab-Einstellungen mit dem folgende Kommando ändern:
# echo "<name> <limit> <batchcount> <sharedfactor>" > /proc/slabinfo
Wenn der Kernel mit Unterstützung für Slab Cache Statistiken kompiliert wurde, stehen noch weitere Spalten mit zusätzliche Informationen bereit.
Weitere Informationen
- Kern-Technik
- Linux Magazin 2005/06 Seite 82 ff
- Sven Krohlas, "Der Slab-Allocator"
- Jeff Bonwick, "The Slab Allocator"
Usenix 1994 http://www.usenix.org/publications/library/proceedings/bos94/full_papers/bonwick.ps
- Jeff Bonwick, "Extending the Slab Allocator to May CPUs and Arbitrary Resources"
http://www.usenix.org/events/usenix01/full_papers/bonwick/bonwick.pdf
- Slabinfo Manpage
- M. Tim Jones - Anatomy of the Linux slab allocator
http://www.ibm.com/developerworks/linux/library/l-linux-slab-allocator/