У меня есть сервер с 16 ГБ ОЗУ, на котором работает несколько виртуальных машин Linux (около 10), которые выполняют несколько разных задач. Эти машины с конфигурацией по умолчанию будут заполнять память, которую я им даю, кешем по максимуму.
Несмотря на то, что это желательное поведение для физических хостов, в моей настройке этот кеш фактически потребляет реальную оперативную память хоста, которая не может быть освобождена от хоста, и вынуждает меня устанавливать относительно небольшое количество оперативной памяти для виртуальных машин (не более (16 - host cache)/number of vms
). Это крайне нежелательно, поскольку система теряет гибкость, что делает невозможным обработку спорадических запросов оперативной памяти от конкретных виртуальных машин.
Единственный подход, который приходит мне в голову, - это ограничить объем оперативной памяти, которую ядро может использовать для кеширования (или сделать так, чтобы срок кеширования истек раньше), но я не нашел никакой документации о том, как это сделать. Большинство сообщений на форуме относятся к linuxatemyram.com или тому подобному, и мне кажется, что в / proc / sys / vm / тоже нет соответствующих параметров.
Может быть, кто-то может предложить какие-то идеи по этому поводу? Я был бы очень благодарен.
Вы можете изменить значение /proc/sys/vm/vfs_cache_pressure
на значение больше 100 (значение по умолчанию). Если значение больше 100, ядро предпочитает восстановить дентри и иноды.