На моем сервере интенсивно используется nfs_inode_cache = 11G, я пытаюсь понять, что все это потребляет, я уже знаю, что некоторые java-приложения ищут и просматривают каталоги с большим количеством записей и глубокими структурами каталогов.
Есть ли способ заглянуть в кеш-память dentry, чтобы узнать, что это за память (какие пути кэшируются)?
Вот моя команда slabtop:
OBJS ACTIVE USE OBJ SIZE SLABS OBJ/SLAB CACHE SIZE NAME
8603424 8603424 100% 1.01K 2867808 3 11471232K nfs_inode_cache
3080826 3080737 99% 0.21K 171157 18 684628K dentry_cache
24717 12515 50% 0.52K 3531 7 14124K radix_tree_node
11365 11108 97% 0.74K 2273 5 9092K ext3_inode_cache
Вот мое давление кеша: cat / proc / sys / vm / vfs_cache_pressure 100
У вас возникли проблемы? Как выглядит использование вашей оперативной памяти? (например, free -m
)
Для Linux совершенно нормально использовать любую доступную для кэширования оперативную память - часть ее будет отображаться через slabtop (dentries, inodes и т. Д.), А остальное через free -m
кэшированная память (pagecache / swapcache).
/proc/sys/vm/vfs_cache_pressure
контролирует пропорции, в которых ядро освободит их. 100 - это "справедливое" значение по умолчанию. Уменьшение этого значения способствует сокращению кеша страниц (т. Е. Содержимого файла), а увеличение - сокращению метаданных файловой системы (индексных дескрипторов и т. Д.). В любом случае очистка кеша будет происходить только под давлением памяти; если у вас много неиспользуемой памяти, ядро будет использовать ее для кэширования.
Вероятно, гораздо более важным параметром является vm.swappiness
- этот контролирует поведение ядра при замене памяти вместо освобождения кэш-памяти. Значение по умолчанию подходит в большинстве случаев, но если вы видите, что процессы зависают / отключаются во время периодов интенсивного ввода-вывода с гораздо большим количеством кэшированной оперативной памяти, чем вам нужно, вы, скорее всего, захотите уменьшить это значение. Кроме того, если у вас огромный объем памяти и довольно старое ядро, вам может потребоваться настроить один из этих параметров (либо * байтов, либо * отношения, но не обоих!):
Все эти настройки полностью задокументированы здесь: https://www.kernel.org/doc/Documentation/sysctl/vm.txt
Однако, если вы не испытываете каких-либо проблем, зависания процессов, чрезмерной замены и т. Д., Я предлагаю не изменять значения по умолчанию.