Назад | Перейти на главную страницу

Храните метаданные файловой системы в кеше с помощью vfs_cache_pressure

Мои (виртуальные) серверы 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 ГБ. И кеш каталогов намного меньше, чем я.

Однако я до сих пор не могу точно определить, сколько используется кеш страниц.