А вот не подскажет ли глубокоуважаемая общественность как управлять размерами кэша inode/dentry?
Задача у меня такая - есть средних размеров дерево (137424 файлов в 11953 каталогах) и нужно суметь быстро его обойти и вызвать stat для каждого файла. Если подробнее, то это будет делать это будет rsync и время этого обхода - суть время нашего даунтайма, так что хочется побыстрее. Данные меняются редко, памяти много, так что кэш inode/dentry замечательно работает на приблизительно четверти этого дерева (то есть первый обход занимает ~15 минут, а второй и последующие - около секунды). Увы, с полным деревом такой трюк уже не проходит: не помещаемся в кэш. Обыск гугля подсказал, что 1. размеры ядерных кешей в можно посмотреть в /proc/slabinfo. там же можно подкрутить некие не сильно внятные tunable parameters <limit>, <batchcount> и <sharedfactor> 2. сбросить интересующие меня кеши можно командой "echo 2 > /proc/sys/vm/drop_caches" (это работает, последующие проходы занимают час снова). 3. есть slabtop, который показывает информацио о slab-ах чуть-чуть поудобнее. 4. есть /proc/sys/vm/vfs_cache_pressure, с помощью которого можно сказать что в случае выбрасывания кэшей сначала надо выбросить page cache, а потом inode/dentry cache - или наоборот. В общем, я могу смотреть на состояние кэшей, сбрасывать их и подкручивать параметры сбрасывания. Не могу только сказать "ребята, у меня 4G памяти - и вот сейчас мне не жалко 1G на этот кэш". Отсюда вопрос: не подскажет ли глубокоуважаемая общественность как управлять размерами кэша inode/dentry? Ядро 2.6.18.