В выводе top есть два поля, помеченных как «buff / cache» и «util Mem» в строках памяти и подкачки:
Что означают эти два поля?
Я пробовал гуглить их, но результаты приводят только к общим статьям сверху, и они не объясняют, что означают эти поля.
top
«S не страница руководства описывает поля, но free
» s делает:
буферы
Память, используемая буферами ядра (
Buffers
в/proc/meminfo
)кэш
Память, используемая страницей кеша и слябов (
Cached
иSReclaimable
в/proc/meminfo
)бафф / кэш
Сумма буферов и кеша
имеется в наличии
Оценка того, сколько памяти доступно для запуска новых приложений, без подкачки. В отличии от данных , предоставляемых в кэше или свободных полей, это поле занимает в кэш учетной записи страницы , а также , что не все плиты памяти возмещению будет утилизированы из - за предметы , находящихся в эксплуатации (
MemAvailable
в/proc/meminfo
, доступны на ядрах 3.14, эмулировать на ядрах 2.6.27+ в остальном тоже самое что и бесплатно)
По сути, «buff / cache» подсчитывает память, используемую для данных, которые находятся на диске или должны скоро оказаться там, и в результате потенциально могут использоваться (соответствующая память может быть сделана доступной немедленно, в случае кеша или при наличии достаточного времени, в случае буферов - последние в любом случае должны оставаться небольшими); «Available» измеряет объем памяти, который может быть выделен и использован без дополнительной подкачки (см. Как я могу получить объем доступной памяти для разных распределений? Для более подробной информации).
Просто для пояснения, буферы ссылаются на записываемые данные - эта память не может быть восстановлена до завершения записи.
Кэш относится к данным, которые были прочитаны - он хранится в случае необходимости повторного чтения, но может быть немедленно восстановлен, поскольку его всегда можно перечитать с диска.
источник
/proc/meminfo
имеет поле дляWriteback
конкретно. Существует отдельное полеBuffers
, и это то , что проявляется какbuffers
вfree -w
. Типичная причинаBuffers
использования памяти показана здесь: « 30% оперативной памяти составляют« буферы ». Что это? »Buffers
является (сейчас) частью кеша страниц; это не учитываетсяCached
, но считается частьюActive(file) + Inactive(file)
. Смотрите комментарии к ответу Стивена Китта.Dirty
является частью кэша страниц, в которую была записана запись, и поэтому в конечном итоге необходимо выполнить обратную запись на диск.Writeback
не включаетDirty
. Следовательно,Writeback
не является частью стоимостиBuffers
.Buffers
самом деле означает кеш страниц, связанный с блочным устройством. Некоторые файловые системы используют это внутренне; другие не используют его вообще. / исправляет мой ответ на вопрос «30% моей оперативной памяти - буферы».Каноническим источником этой информации является /usr/src/linux/Documentation/filesystems/proc.txt
Вы также можете найти более подробную информацию здесь .
Или анализ исходного кода, как это .
Количество
buffers
является возвращаемым значением функцииnr_blockdev_pages(void)
Количество
cached
:источник