Meus servidores Ubuntu Linux (virtuais) executam o rdiff-backup diariamente, que examina todos os metadados do arquivo para determinar o que precisa ser armazenado em backup, diminuindo a velocidade. Ele faz isso todos os dias, mesmo que a maioria dos arquivos não mude. Eu gostaria de manter esses dados no cache. Para este fim, tenho experimentado com /proc/sys/vm/vfs_cache_pressure
, atualmente definido como 20.
Como exemplo, um servidor virtual tem 35% de seus inodes em uso:
Isso equivale a 1057350. O tamanho do inode é 256. Isso significa que eu preciso (1057350 * 256) = 258 MB? Edit: aparentemente não, veja abaixo.
E para dentries? Este servidor tem 225510 dirs, a maioria deles 4k grande. Isso significa que preciso 225510 * 4096 = 880 MB de cache?
Isso significa que quando eu defino vfs_cache_pressure
para 1 e tenho, digamos, 2 GB de memória livre, ele reterá todos os metadados no cache?
E como posso ver como meu cache atual é usado? o que são metadados e o que são dados?
Edit: Acabei de encontrar a ferramenta slabtop
. As linhas principais são:
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
Portanto, já há 1 GB de cache de inode. E o cache de diretórios é muito menor do que eu.
Ainda não consigo deduzir o quanto de cache de páginas é usado.