Slab Memory leeren

Das Speichermanagement des Linux Kernels möchte den freien Arbeitsspeicher immer sinnvoll nutzen. Inodes und Dentries werden im weniger bekannten Slab Cache zwischengelagert.

Der Slab allocator ist ein Verfahren zur Verwaltung von Arbeitsspeicher, das viele Betriebssysteme und auch Anwendungen verwenden. Der Algorithmus hat zum Ziel, dass bei der häufig vorkommenden Reservierung kleiner Speicherbereiche der vorhandene Arbeitsspeicher möglichst effizient, also mit wenig Verschwendung, genutzt wird.

Punkt 1: Kernel Verhalten ändern

Der Kernel gibt standardmäßig 100% des Slab Caches automatisch frei. Man kann diese System Variable jedoch prozentual in der Datei /etc/sysctl.conf verändern.

vm.vfs_cache_pressure = 100

Punkt 2: Slab Belegung anzeigen

Mittels slabtop kann man sich ähnlich wie bei top die Belegung anzeigen lassen.

 Active / Total Objects (% used)    : 12604895 / 13198553 (95,5%)
 Active / Total Slabs (% used)      : 1786010 / 1786049 (100,0%)
 Active / Total Caches (% used)     : 132 / 248 (53,2%)
 Active / Total Size (% used)       : 6154229,64K / 6201434,19K (99,2%)
 Minimum / Average / Maximum Object : 0,02K / 0,47K / 4096,00K

  OBJS ACTIVE  USE OBJ SIZE  SLABS OBJ/SLAB CACHE SIZE NAME
5755712 5755674  99%    0,85K 1438928        4   5755712K ext3_inode_cache
3329841 3312702  99%    0,22K 195873       17    783492K dentry
2771522 2770043  99%    0,10K  74906       37    299624K buffer_head
651832 142356  21%    0,06K  11048       59     44192K size-64

Der genutzte Slab Memory wird auch in /proc/meminfo sichtbar.

# cat /proc/meminfo
MemTotal:       32936116 kB
MemFree:          705256 kB
Buffers:         8605412 kB
Cached:         12437288 kB
SwapCached:        91360 kB
MemCommitted:   14155776 kB
VirtualSwap:           0 kB
Active:         10881568 kB
Inactive:       13995968 kB
Active(anon):    3079848 kB
Inactive(anon):  1039892 kB
Active(file):    7801720 kB
Inactive(file): 12956076 kB
Unevictable:        3868 kB
Mlocked:            3868 kB
SwapTotal:        999992 kB
SwapFree:         701920 kB
Dirty:             29772 kB
Writeback:             0 kB
AnonPages:       3755592 kB
Mapped:           392560 kB
Shmem:            283252 kB
Slab:            7148612 kB
SReclaimable:    7038152 kB
SUnreclaim:       110460 kB
KernelStack:       12376 kB
PageTables:        97284 kB
NFS_Unstable:          0 kB
Bounce:                0 kB
WritebackTmp:          0 kB
CommitLimit:    17468048 kB
Committed_AS:   20669952 kB
VmallocTotal:   34359738367 kB
VmallocUsed:       86268 kB
VmallocChunk:   34359520216 kB
HardwareCorrupted:     0 kB
AnonHugePages:         0 kB
HugePages_Total:       0
HugePages_Free:        0
HugePages_Rsvd:        0
HugePages_Surp:        0
Hugepagesize:       2048 kB
DirectMap4k:        7872 kB
DirectMap2M:    33538048 kB

Punkt 3: Slab Cache leeren

Sollte der Kernel einmal nicht schnell genug den Slab Cache freigeben, kann man dies auch erzwingen.

sync
echo 3 > /proc/sys/vm/drop_caches
echo 0 > /proc/sys/vm/drop_caches
Dominion

Dominion

Linux Systemadministrator

Das könnte Dich auch interessieren …

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.