Мои (виртуальные) серверы Ubuntu Linux ежедневно запускают rdiff-backup, который просматривает все метаданные файлов, чтобы определить, что нужно скопировать, замедляя его. Это происходит каждый день, хотя большинство файлов не меняются. Я бы хотел сохранить эти данные в кеше. С этой целью я экспериментировал с /proc/sys/vm/vfs_cache_pressure
, в настоящее время установлено на 20.
Например, один виртуальный сервер имеет 35% используемых inode:
Это составляет 1057350. Размер индекса равен 256. Означает ли это, что мне нужно (1057350 * 256) = 258 МБ? Изменить: по-видимому, нет, см. Ниже.
А для дентри? На этом сервере 225510 каталогов, большинство из них размером 4 КБ. Означает ли это, что мне нужно 225510 * 4096 = 880 МБ кеш-памяти?
Означает ли это, что когда я установил vfs_cache_pressure
до 1 и иметь, скажем, 2 ГБ свободной памяти, все метаданные будут сохраняться в кеше?
И как я могу увидеть, как используется мой текущий кеш; что такое метаданные и что такое данные?
Изменить: я только что нашел slabtop
инструмент. Верхние строчки:
OBJS ACTIVE USE OBJ SIZE SLABS OBJ/SLAB CACHE SIZE NAME
1656144 1655632 99% 0.19K 78864 21 315456K dentry
1207269 1207269 100% 0.76K 57489 21 919824K ext3_inode_cache
246909 246909 100% 0.10K 6331 39 25324K buffer_head
232640 232400 99% 0.06K 3635 64 14540K kmalloc-64
69776 60491 86% 0.55K 2492 28 39872K radix_tree_node
51896 49740 95% 0.61K 1996 26 31936K proc_inode_cache
37376 21915 58% 0.01K 73 512 292K kmalloc-8
Итак, кеш-память inode уже составляет 1 ГБ. И кеш каталогов намного меньше, чем я.
Однако я до сих пор не могу точно определить, сколько используется кеш страниц.