Buff cache ubuntu что это
Обновлено: 06.07.2024
В выводе 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)
В системах Linux вы можете использовать free команду для получения подробного отчета об использовании памяти системой.
Команда free предоставляет информацию об общем объеме физической и подкачки памяти, а также о свободной и используемой памяти и пространстве подкачки в системе.
Как использовать Free команду
Синтаксис free команды следующий:
При использовании без какой-либо опции, free команда отобразит информацию о памяти и поменяет местами в кибибайтах. 1 кибибайт (КиБ) составляет 1024 байта.
Вывод будет включать три строки, заголовок, одну строку для памяти и одну для подкачки:
В старых версиях Linux выходные данные могут немного отличаться.
- total - это число представляет собой общий объем памяти, который может использоваться приложениями.
- used - использованная память Он рассчитывается как: used = total - free - buffers - cache
- free - Свободная / Неиспользуемая память.
- shared - этот столбец можно игнорировать, так как он не имеет смысла. Это здесь только для обратной совместимости.
- buff / cache - объединенная память, используемая буферами ядра, кешем страниц и слэбами. / эта память может быть восстановлена в любое время, если это необходимо приложениям. Если вы хотите, чтобы буферы и кеш отображались в двух отдельных столбцах, используйте эту -w опцию.
- available - оценка объема памяти, доступной для запуска новых приложений без замены.
Отображение использования памяти в удобочитаемом формате
Как мы видели в приведенном выше примере, по умолчанию free команда отображает информацию о памяти в кибибайтах. Чтобы просмотреть информацию в удобочитаемом формате (обычно мегабайты и гигабайты), используйте -h параметр:
Отображение использования памяти в других метриках
Команда free также позволяет указать единицу измерения памяти. Допустимые варианты:
- -b , --bytes - Вывести вывод в байтах.
- --kilo - Отображение вывода в килобайтах (1 КБ = 1000 байт).
- --mega - Показать вывод в мегабайтах.
- --giga - Отображение вывода в гигабайтах.
- --tera - Отображение вывода в терабайтах.
- -k , --kibi - Вывести вывод в кибибайтах. (1 КБ = 1024 байт). Это единица по умолчанию.
- -m , --mebi - выход дисплея в Mebibytes.
- -g , --gibi - выход дисплея в gibytes.
- --tebi - Отображать вывод в тебибайтах.
- --peti - Выводить вывод в пебибайтах.
- --si - Вместо 1024 используйте полномочия 1000. Например --mebi --si , равно --mega .
Например, чтобы показать вывод в мегабайтах, вы должны набрать:
Отображение итогов в столбце
Чтобы отобразить строку, отображающую итоги столбца, используйте -t параметр. Это даст вам сумму памяти и поменяет местами общие, использованные и свободные столбцы.
Постоянно печатать вывод
Для того, чтобы непрерывно отображать информацию о памяти об использовании экрана с -s , --seconds варианты с последующим номером , который определяет задержку.
Например, чтобы печатать информацию о памяти каждые пять секунд, вы должны выполнить:
Команда free будет продолжать отображать результат, пока вы не нажмете CTRL+C . Это похоже на поведение watch команды .
Для отображения результата для определенного числа раз использовать -c , --count вариант. В приведенном ниже примере команда напечатает результат десять раз:
Вывод
К настоящему времени вы должны хорошо понимать, как использовать и интерпретировать free команду. Для просмотра всех доступных параметров free командной строки введите man free в своем терминале.
Прежде чем приступить к практике, сперва поговорим о буферизации и кэш памяти в операционных системах Linux. Очистка кешей и буферов в Linux снижает производительность системы и в основном полезно только для бенчмаркинга.
Свободная память — неиспользуемая память — это потраченная память впустую.
Очистка кеша и буфер в Linux
Если вы хотите очистить в системе кеш и буфер, то вы можете использовать эту цепочку команд:
Вы можете сигнализировать ядру Linux, чтобы удалить различные аспекты кешированных элементов, изменив числовой аргумент на указанную выше команду.
- Чтобы освободить pagecache:
- Чтобы освободить иноды:
- Чтобы освободить pagecache, dentries и inodes:
ПРИМЕЧАНИЕ. Вышеупомянутые команды должны выполняться от root пользователя.
Если вы пытаетесь сделать это с помощью sudo , вам нужно немного изменить синтаксис, примерно так:
Либо в таком формате:
Увидеть, что находится в буферах и кеше
Посмотрите linux-ftools , если вы хотите анализировать содержимое буферов и кэша в вашей системе. В частности, если вы хотите посмотреть, какие файлы в настоящее время кэшируются.
fincore
С помощью этого инструмента вы можете видеть, какие файлы кэшируются в директории give.
Очистка swap в Linux
первым делом смотрим сколько занимает наш swap места:
В данном случае swap занимает 26 Мб из 8 Гб
Очистим swap следующей командой:
Затем используйте команду, чтобы посмотреть освободился ли swap:
Из вывода видно что swap теперь занимает 0 Мб.
Очистка memcached в Linux
Есть несколько путей очистить кеша memcached.
Первый — это очистка с помощью подключения через telnet. Используем следующие команды:
- localhost — хост где находится memcached (можно указывать и IP-адрес хоста).
- 11211 — порт который использует memcached.
Чтобы узнать порт и IP-адрес в терминале где установлен memcached наберите следующее:
Второй — перезапустить сервис memcached:
Третий — установить утилиту memcflush для очистки кешей:
Теперь очищаем кеш memcached
Если есть вопросы, то пишем в комментариях.
Также можете вступить в Телеграм канал, ВК или подписаться на Twitter. Ссылки в шапки страницы.
Заранее всем спасибо.
Как посмотреть объём оперативной памяти и файла подкачки? Как узнать, сколько оперативной памяти используется в настоящее время системой, а сколько доступно для запуска новых приложений? Для этого есть в linux утилита free.
Описание утилиты free
Linux утилита free показывает свободную и занятую память в системе. Данные получаются путем разбора /proc/meminfo.
При запуске без ключей Linux утилита free выведет на экран следующие данные:
Вывод содержит данные о физической памяти Mem и файле подкачки Swap. В столбцах указаны следующие параметры:
total – всего установленной памяти
used – использовано памяти (рассчитывается как total – free – buffers – cache)
free – свободно памяти
shared – разделенная память, используемая (в основном) tmpfs
buff/cache – память, используемая буферами ядра и кэшем страниц
available – доступно памяти для запуска новых приложений (без учета swap)
По умолчанию все значения перечисленных параметров указываются в кибибайтах (2 в степени 10 = 1024).
Linux утилита free: формат вывода
Для изменения формата вывода linux утилита free может принимать следующие ключи:
-b, –bytes – значения параметров памяти указываются в байтах
-k, –kibi – значения параметров памяти указываются в кибибайтах (используется по умолчанию)
-m, –mebi – значения параметров памяти указываются в мебибайтах
-g, –gibi – значения параметров памяти указываются в гибибайтах
–tebi – значения параметров памяти указываются в тебибайтах
–pebi– значения параметров памяти указываются в пебибайтах
Например, если мы хотим увидеть значения памяти в мебибайтах, используем ключ -m:
Аналогично, имеются опции –kilo, –mega, –giga, –tera, –peta. Однако, в отличии от описанных выше, которые при преобразовании используется множитель 1024, в данных ключах это множитель будет равен 1000.
–si – использует kilo, mega, giga и т.д. (множитель 1000) вместо kibi, mebi, gibi (множитель 1024).
-h, –human – значения памяти выводятся в удобном для человека представлении. Утилита автоматически подберет наиболее подходящий префикс (B, K, M, G, T, P с множителем 1024):
-w, –wide – переключение вывода в расширенный режим, который обеспечивает вывод более 80 символов в строке. В данном режиме параметры buffers и cache разделены на 2 колонки:
-l, –lohi – дополнительно выводит статистику по самым низким и высоким значениям:
-t, –total – дополнительно выводит данные по общему значению всей памяти (Mem + Swap):
-s, –seconds delay – постоянно обновлять данные с задержкой, указанной в секундах. Допускается использование микросекунд после точки. Например, установим обновление данных в 2.5 секунды:
Каждые 2.5 секунды на экране будет появляется новый вывод команды free с обновленными данными. Чтобы остановить выполнение команды нажмите Ctrl + C.
-c, –count count – выводить новые данные определенное число раз. Требуется указание параметра -s с временем задержки (если ключ опущен, будет использовано стандартное значение – 1 секунда).
Посмотрим изменение используемой памяти с разницей в 60 секунд:
При этом, после 60 секунд и второго вывода утилита free автоматически закончит свою работу.
Читайте также: