Для меня звучит довольно контрпродуктивно, чтобы кэшировать подкачанные страницы. Если вы меняете страницы, что является преимуществом для того, чтобы сначала кэшировать их в памяти, только для того, чтобы переместить их в нужное место? Даже если страницы меняются местами с упреждением, не имеет ли больше смысла «просто» обменивать их? Разве кеширование на самом деле не является пустой тратой ресурсов?
kernel
swap
cache
algorithms
txwikinger
источник
источник
Ответы:
После еще одного исследования я обнаружил, что термин SwapCached в
/proc/meminfo
вводит в заблуждение. Фактически, это относится к числу байтов, которые одновременно находятся в памяти и подкачке, так что, если эти страницы не загрязнены, их не нужно выгружать.источник
Никогда даже не слышал об этом, и для меня это тоже не имеет большого смысла. Я все еще думаю, что старое доброе правило быть уверенным, что оно вообще не поменяется местами (за исключением, конечно, оговорок), является лучшим. Теоретически, кеширование содержимого в памяти с прямым доступом, которое занимает некоторое время для загрузки с чего-то такого медленного, как диск, имеет очевидное преимущество. Но если вы можете кешировать подлежащие обмену страницы, зачем снова менять местами?
источник
Смысл дублирования страниц между подкачкой и оперативной памятью состоит в том, чтобы избежать ожидания диска, если либо:
Что-то нужно читать из них
Их нужно выселить, чтобы освободить место для чего-то другого
Если бы они были только в свопе, случай 1. означал бы ожидание их входа с диска; если бы они были только в ОЗУ, случай 2. означал бы ожидание их выхода на диск.
(Конечно, случай 2 на самом деле немного сложнее, поскольку, очевидно, дешевле удалять такие страницы, поэтому ядро, вероятно, вытесняет их преимущественно, но суть должна быть ясна.)
источник