LINUX.ORG.RU

История изменений

Исправление AEP, (текущая версия) :

А я и не путаю, смотри первоисточник (в данном случае - /proc/meminfo и man 5 proc). Linux использует ОЗУ не только для приложений, но и как дисковый кеш, чтобы не читать два раза одно и то же и чтобы не читать то, что сам же и записал. В google по фразе «linux ate my ram» есть много хороших объяснений. Еще можно почитать про Page Cache, это он и есть.

Собственно, весь тред про то, что htop показывает циферками только память, занятую приложениями, т.е. ту, которую ядро при всем желании освободить не сможет, кроме как путем выгрузки в swap. Page Cache в эти циферки не входит, хотя тоже находится в памяти, рядом с приложениями. Память, занятая Page Cache, не является свободной: если там будет сбойный бит, есть риск получить неверные данные при повторном чтении «с диска» того, что на самом деле закешировано. Но память, занятая Page Cache, может быть быстро освобождена под другие цели, когда понадобится, и поэтому с точки зрения пользователя практически равноценна свободной. Тогда как с точки зрения системы виртуализации, память, которую хоть раз трогали с любой целью и после этого не пометили, как свободную, через balloon, является занятой.

Касательно мусора, согласен, обычно об этом не пишут, поскольку в контексте, отличном от виртуализации, это просто свободная память, которую операционная система не почистила, и про которую система виртуализации знать не может, что она свободна. И общепринятого термина для этого дела (памяти, которая раньше использовалась, а сейчас с точки зрения операционной системы, но не с точки зрения оборудования, не используется, и прочитать которую можно только через /dev/mem или /proc/kmem) на самом деле нет. Это не java-мусор. Но с моей XML-кой ядро сообщает гипервизору через balloon, что память не используется, и поэтому мусор не накапливается.

Исходная версия AEP, :

А я и не путаю, смотри первоисточник (в данном случае - /proc/meminfo и man 5 proc). Linux использует ОЗУ не только для приложений, но и как дисковый кеш, чтобы не читать два раза одно и то же и чтобы не читать то, что сам же и записал. В google по фразе «linux ate my ram» есть много хороших объяснений. Еще можно почитать про Page Cache, это он и есть.

Собственно, весь тред про то, что htop показывает циферками только память, занятую приложениями, т.е. ту, которую ядро при всем желании освободить не сможет, кроме как путем выгрузки в swap. Page Cache в эти циферки не входит, хотя тоже находится в памяти, рядом с приложениями. Память, занятая Page Cache, не является свободной: если там будет сбойный бит, есть риск получить неверные данные при повторном чтении «с диска» того, что на самом деле закешировано. Но память, занятая Page Cache, может быть быстро освобождена под другие цели, когда понадобится, и поэтому с точки зрения пользователя практически равноценна свободной. Тогда как с точки зрения системы виртуализации, память, которую хоть раз трогали с любой целью и после этого не пометили, как свободную, через balloon, является занятой.

Касательно мусора, согласен, обычно об этом не пишут, поскольку в контексте, отличном от виртуализации, это просто свободная память, которую операционная система не почистила, и про которую система виртуализации знать не может, что она свободна. И общепринятого термина для этого дела (памяти, которая раньше использовалась, а сейчас с точки зрения операционной системы, но не с точки зрения оборудования, не используется, и прочитать которую можно только через /dev/mem или /proc/kmem) на самом деле нет. Это не java-мусор.