В Linux у меня есть два способа получить память, используемую ext4_inode_cache
. Первый — использовать slabtop
команду, которая также выдает мне информацию о «РАЗМЕРЕ КЭША»:
# slabtop -o -s c | grep -E '(ext4_inode_cache|NAME)'
OBJS ACTIVE USE OBJ SIZE SLABS OBJ/SLAB CACHE SIZE NAME
118794 114631 96% 1.16K 9138 13 146208K ext4_inode_cache
Во-вторых, чтение /proc/slabinfo
не дает мне вычисленного «РАЗМЕРА КЭША»:
# grep -E '(pagesperslab|ext4_inode_cache)' /proc/slabinfo
# name <active_objs> <num_objs> <objsize> <objperslab> <pagesperslab> : tunables <limit> <batchcount> <sharedfactor> : slabdata <active_slabs> <num_slabs> <sharedavail>
ext4_inode_cache 114631 118794 1184 13 4 : tunables 0 0 0 : slabdata 9138 9138 0
Как мне рассчитать это из приведенных выше чисел? В исходном коде slaptop есть некая формула:
Но я наверняка делаю что-то неправильно, поскольку результат, который я получаю после моих вычислений, не совпадает с выводом «CACHE SIZE» slaptop.
решение1
Ничего, я понял:
"CACHE SIZE" = <pagesperslab> * <batchcount> * PAGE_SIZE
PAGE_SIZE обычно равен 4k