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)

Команда Free (свободная оперативная память) в Linux

В системах 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-logo

Прежде чем приступить к практике, сперва поговорим о буферизации и кэш памяти в операционных системах 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

Как посмотреть объём оперативной памяти и файла подкачки? Как узнать, сколько оперативной памяти используется в настоящее время системой, а сколько доступно для запуска новых приложений? Для этого есть в linux утилита free.

Описание утилиты free

Linux утилита 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 автоматически закончит свою работу.

Читайте также: