В выводе top есть два поля, помеченных как «buff / cache» и «util Mem» в строках памяти и подкачки:
Что означают эти два поля?
Я пробовал гуглить их, но результаты приводят только к общим статьям сверху, и они не объясняют, что означают эти поля.
В выводе 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
Буферы : Относительно временное хранилище для блоков сырых дисков не должно быть очень большим (20 МБ или около того). Кэширование : кэш в памяти для файлов, считываемых с диска (кэш страниц). Не включает SwapCached.
Вы также можете найти более подробную информацию здесь .
Linux Page Cache (« Cached :» от meminfo) является крупнейшим потребителем оперативной памяти на большинстве систем. Каждый раз, когда вы выполняете read () из файла на диске, эти данные считываются в память и помещаются в кеш страниц (1.).
Буферный кеш (" Buffers :" в meminfo) близок по отношению к кэшам dentry / inode.
Или анализ исходного кода, как это .
Количество buffers
является возвращаемым значением функцииnr_blockdev_pages(void)
long nr_blockdev_pages(void)
{
struct block_device *bdev;
long ret = 0;
spin_lock(&bdev_lock);
list_for_each_entry(bdev, &all_bdevs, bd_list) {
ret += bdev->bd_inode->i_mapping->nrpages;
}
spin_unlock(&bdev_lock);
return ret;
}
Количество cached
:
global_page_state(NR_FILE_PAGES) – total_swapcache_pages – i.bufferram