----- Original Message -----
Hi,
With a ramdump of a system with 386MB of available memory, "kmem -s"
shows something like this
CACHE NAME OBJSIZE ALLOCATED TOTAL SLABS
SSIZE
dd801c00 kmalloc-2048 2048 670869 670960
41935 32k
The memory occupied by objects go beyond the total system memory if we
use the above numbers to calculate that. I think the output is wrong
because with SLUB, slabs can be of different sizes depending on the
order of allocation. And here objects are calculated considering slabs
are of fixed size.
The attached patch worked for me.
Thanks,
Vinayak
Something's not adding up, literally, when I compare the old values
with those shown by your patch.
For examples, without your patch, check just the caches with a single slab page,
like the nfs_commit_data, fuse_inode and bio-2 caches:
crash> kmem -s
CACHE NAME OBJSIZE ALLOCATED TOTAL SLABS SSIZE
ffff880467c36300 nf_conntrack_ffff880065dd8000 312 0 0 0 8k
ffff88046751f900 nf_conntrack_ffff880465411200 312 0 0 0 8k
ffff8804608db000 nfs_direct_cache 352 0 0 0 8k
ffff8804608daf00 nfs_commit_data 680 23 23 1 16k <=
ffff8804608dae00 nfs_read_data 872 447 576 16 32k
ffff8804608dad00 nfs_inode_cache 1048 1315 1364 44 32k
ffff8804608dac00 fscache_cookie_jar 80 256 276 6 4k
ffff88040b958000 fuse_inode 728 21 21 1 16k <=
ffff88046751f800 btrfs_delayed_data_ref 96 0 0 0 4k
ffff88046751f700 btrfs_delayed_ref_head 160 0 0 0 4k
ffff88046751f600 btrfs_delayed_node 304 0 0 0 8k
ffff88046751f500 btrfs_ordered_extent 424 0 0 0 16k
ffff88046751f400 bio-2 320 25 25 1 8k <=
...
Taking their respective object sizes into account:
nfs_commit_data has an object size of 680, and the 16k slab can hold 23 objects:
23 * 680 = 15640
fuse_inode has an object size of 728, and the 16k slab can hold 21 objects:
21 * 728 = 15288
bio-2 has an object size of 320, and the 8k slab can hold 25 objects:
25 * 320 = 8000
With your patch applied, note that those caches show double the number above, or
46, 42 and 50 respectively:
crash> kmem -s
CACHE NAME OBJSIZE ALLOCATED TOTAL SLABS SSIZE
ffff880467c36300 nf_conntrack_ffff880065dd8000 312 0 0 0 8k
ffff88046751f900 nf_conntrack_ffff880465411200 312 0 0 0 8k
ffff8804608db000 nfs_direct_cache 352 0 0 0 8k
ffff8804608daf00 nfs_commit_data 680 46 46 1 16k
ffff8804608dae00 nfs_read_data 872 684 724 15 32k
ffff8804608dad00 nfs_inode_cache 1048 1534 1534 43 32k
ffff8804608dac00 fscache_cookie_jar 80 532 532 6 4k
ffff88040b958000 fuse_inode 728 42 42 1 16k
ffff88046751f800 btrfs_delayed_data_ref 96 0 0 0 4k
ffff88046751f700 btrfs_delayed_ref_head 160 0 0 0 4k
ffff88046751f600 btrfs_delayed_node 304 0 0 0 8k
ffff88046751f500 btrfs_ordered_extent 424 0 0 0 16k
ffff88046751f400 bio-2 320 50 50 1 8k
...
What am I missing?
Dave