Когда я захожу на системный монитор в Ubuntu, используется около 75% памяти и 45% подкачки. Почему подкачка используется, даже когда память доступна? Разве Linux не перемещает данные из раздела подкачки в память?
3 ответа
Это может переместить это в память. На самом деле, вы можете полностью отключить своп, ИЛИ установить "предел".
Это так называемая « перестановка ».
Информация: 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, поэтому сначала нужно записать его на диск.
Нужен ли замененный блок? Хорошо, он уже кэширован в памяти, поэтому мы можем просто изменить состояние кэшированной копии с "кэшированной" на "активную" и сделать недействительной замененную копию без необходимости вообще касаться диска.