Когда я захожу на системный монитор в Ubuntu, используется около 75% памяти и 45% подкачки. Почему подкачка используется, даже когда доступна память? Разве Linux не перемещает данные из раздела подкачки в память?
Это Можно перенести его в память. На самом деле, вы можете полностью отключить своп, ИЛИ установить «предел».
Это так называемый swappiness ».
Информация: http://www.linuxvox.com/2009/10/what-is-the-linux-kernel-parameter-vm-swappiness/
Как проверить свои: cat /proc/sys/vm/swappiness
ИЛИ ЖЕ
sysctl -n vm.swappiness
Как установить это значение: echo "10" > /proc/sys/vm/swappiness
Чем больше Swappiness вы установите, тем больше ядро поменяется местами. Так что установите НИЗКУЮ сумму, если хотите использовать своп только тогда, когда он необходимый ,
(Примечание: когда вы устанавливаете лимит, вы должны быть пользователем root!)
Linux любит хранить данные как в подкачке, так и в кеше в памяти одновременно, когда память доступна. Если вы посмотрите в правильном месте, то обнаружите, что большинство, если не все, «выгруженные» данные также кэшируются в основной памяти.
Зачем? Свободная память не дает никакой пользы, но, сохраняя кэширование подкачки, ядро приобретает большую гибкость:
Нужно ли больше реальной памяти? ОК, просто перераспределить кешированный блок. Он уже хранится в swap, поэтому сначала нужно записать его на диск.
Нужен ли замененный блок? Хорошо, он уже кэширован в памяти, поэтому мы можем просто изменить состояние кэшированной копии с «кэшированного» на «активный» и сделать недействительной замененную копию без необходимости вообще касаться диска.
Почему система перемещает данные из раздела подкачки в память, если к этим данным не обращались и, возможно, никогда не получат доступ? Это потребовало бы бессмысленного дискового ввода-вывода и растраты физической памяти.