Bug#452931: linux-image-2.6.18-5-686: too much memory for EXT3 inode-cache in slab
Package: linux-image-2.6.18-5-686
Version: 2.6.18.dfsg.1-13etch4
Severity: important
On two very different systems (a desktop system and one running a
database application) running debian kernel 2.6.18-5 I'm observing the
following behaviour:
System accumulates *large* amounts of slab-memory in EXT3 Inode-Cache,
example-output from the command "slabtop":
Active / Total Objects (% used) : 1559187 / 1578880 (98.8%)
Active / Total Slabs (% used) : 135874 / 135878 (100.0%)
Active / Total Caches (% used) : 94 / 140 (67.1%)
Active / Total Size (% used) : 529040.32K / 531151.94K (99.6%)
Minimum / Average / Maximum Object : 0.01K / 0.34K / 128.00K
OBJS ACTIVE USE OBJ SIZE SLABS OBJ/SLAB CACHE SIZE NAME
907400 905957 99% 0.49K 113425 8 453700K ext3_inode_cache
565964 565089 99% 0.13K 19516 29 78064K dentry_cache
62064 56390 90% 0.05K 862 72 3448K buffer_head
7756 7752 99% 0.27K 554 14 2216K radix_tree_node
6313 2673 42% 0.06K 107 59 428K size-64
As you can see, this system has accumulated more that 400MB of
Slab-Memory (on a system with 1GB of memory, i.e. half of the whole
memory of the system just for caching inodes!). This memory is not
freed, even in an out-of-memory situation, the system rather invokes the
out-of-memory-killer (OOM-Killer) before freeing this memory.
The only way I can reclaim this memory is running
echo 2 > /proc/sys/vm/drop_caches
After issuing this command, slab-usage goes back to sane values:
Active / Total Objects (% used) : 87942 / 117616 (74.8%)
Active / Total Slabs (% used) : 3532 / 3542 (99.7%)
Active / Total Caches (% used) : 96 / 140 (68.6%)
Active / Total Size (% used) : 10961.59K / 13940.84K (78.6%)
Minimum / Average / Maximum Object : 0.01K / 0.12K / 128.00K
OBJS ACTIVE USE OBJ SIZE SLABS OBJ/SLAB CACHE SIZE NAME
61632 52088 84% 0.05K 856 72 3424K buffer_head
8874 2227 25% 0.13K 306 29 1224K dentry_cache
8302 7748 93% 0.27K 593 14 2372K radix_tree_node
6254 2533 40% 0.06K 106 59 424K size-64
3780 3752 99% 0.04K 45 84 180K sysfs_dir_cache
2806 2790 99% 0.08K 61 46 244K vm_area_struct
2712 2647 97% 0.03K 24 113 96K size-32
2028 892 43% 0.02K 12 169 48K dm_io
1696 568 33% 0.49K 212 8 848K ext3_inode_cache
On the desktop-system the time until the inode-cache is using so much
memory takes several days. On the database server I'm doing a nightly
backup that copies 200000 files -- after the copying the inode-cache is
using more than 400MB of memory as in the above output of slabtop.
Is this a bug present in upstream-kernels too or something seen only in
debians build?
Is anybody else seeing this?
-- System Information:
Debian Release: 4.0
APT prefers stable
APT policy: (500, 'stable')
Architecture: i386 (i686)
Shell: /bin/sh linked to /bin/bash
Kernel: Linux 2.6.18-5-686
Locale: LANG=en_US.ISO-8859-15, LC_CTYPE=en_US.ISO-8859-15 (charmap=ISO-8859-15)
Versions of packages linux-image-2.6.18-5-686 depends on:
ii coreutils 5.97-5.3 The GNU core utilities
ii debconf [debconf-2.0] 1.5.11 Debian configuration management sy
ii initramfs-tools [linux-initra 0.85h tools for generating an initramfs
ii module-init-tools 3.3-pre4-2 tools for managing Linux kernel mo
Versions of packages linux-image-2.6.18-5-686 recommends:
pn libc6-i686 <none> (no description available)
-- debconf information:
linux-image-2.6.18-5-686/postinst/create-kimage-link-2.6.18-5-686: true
linux-image-2.6.18-5-686/postinst/old-system-map-link-2.6.18-5-686: true
linux-image-2.6.18-5-686/preinst/elilo-initrd-2.6.18-5-686: true
linux-image-2.6.18-5-686/postinst/bootloader-test-error-2.6.18-5-686:
linux-image-2.6.18-5-686/postinst/depmod-error-2.6.18-5-686: false
* linux-image-2.6.18-5-686/preinst/already-running-this-2.6.18-5-686:
linux-image-2.6.18-5-686/preinst/bootloader-initrd-2.6.18-5-686: true
linux-image-2.6.18-5-686/postinst/old-dir-initrd-link-2.6.18-5-686: true
linux-image-2.6.18-5-686/postinst/old-initrd-link-2.6.18-5-686: true
linux-image-2.6.18-5-686/preinst/failed-to-move-modules-2.6.18-5-686:
linux-image-2.6.18-5-686/preinst/abort-install-2.6.18-5-686:
linux-image-2.6.18-5-686/prerm/would-invalidate-boot-loader-2.6.18-5-686: true
linux-image-2.6.18-5-686/postinst/bootloader-error-2.6.18-5-686:
linux-image-2.6.18-5-686/preinst/lilo-initrd-2.6.18-5-686: true
linux-image-2.6.18-5-686/preinst/overwriting-modules-2.6.18-5-686: true
shared/kernel-image/really-run-bootloader: true
linux-image-2.6.18-5-686/postinst/depmod-error-initrd-2.6.18-5-686: false
linux-image-2.6.18-5-686/prerm/removing-running-kernel-2.6.18-5-686: true
linux-image-2.6.18-5-686/preinst/initrd-2.6.18-5-686:
linux-image-2.6.18-5-686/preinst/lilo-has-ramdisk:
linux-image-2.6.18-5-686/postinst/kimage-is-a-directory:
linux-image-2.6.18-5-686/preinst/abort-overwrite-2.6.18-5-686:
Reply to: