Вопрос или проблема
Недавно я заметил, что моя сервер Ubuntu 18.04 LTS
имеет высокое использование памяти buff/cache.
free -mh
total used free shared buff/cache available
Mem: 7.8G 1.5G 4.4G 109M 1.9G 5.9G
Swap: 8.0G 0B 8.0G
Это после перезагрузки сервера, до этого было 5GB
.
top - 09:39:07 up 18 min, 1 user, load average: 0.09, 0.28, 0.58
Tasks: 161 total, 1 running, 104 sleeping, 0 stopped, 0 zombie
%Cpu(s): 0.3 us, 0.1 sy, 0.0 ni, 99.1 id, 0.5 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem : 8153548 total, 4574140 free, 1534508 used, 2044900 buff/cache
KiB Swap: 8388604 total, 8388604 free, 0 used. 6202180 avail Mem
После выполнения echo 3 > /proc/sys/vm/drop_caches
, чтобы освободить его, он снова начал расти.
Как я могу определить, кто потребляет больше всего buff/cache и стоит ли мне беспокоиться, если он так высок?
Стоит ли мне беспокоиться, если он так высок?
Нет. В Linux кеширование имеет низкий приоритет и автоматически и легко освобождается. https://www.linuxatemyram.com/
На самом деле, если половина памяти свободна, это означает, что у вас в два раза больше ОПП, чем “необходимо” при этой нагрузке; половина не используется. Проведите планирование пропускной способности, чтобы проверить, увеличится ли нагрузка на этот хост. Если нет, вы можете уменьшить и перераспределить его память. Например, снизив выделение ОПП для ВМ до 6 или 4 ГБ.
После выполнения
echo 3 > /proc/sys/vm/drop_caches
, чтобы освободить его, он снова начал расти.
Не используйте drop_caches, это не имеет оперативной цели и замедляет вещи. Хорошие сценарии использования этого ограничены холодным запуском бенчмарков.
Добавляю больше легко усваиваемой информации, чтобы помочь новичкам в будущем:
Память buff/cache на сервере — это количество памяти, используемой ядром Linux для кеширования и буферизации дисков. Это не “используемая” память в традиционном понимании; это способ, которым система эффективно использует ОПП, кешируя часто запрашиваемые данные.
Когда вашему серверу потребуется больше памяти для запуска приложений или других задач, ядро автоматически освободит память buff/cache, так что не нужно беспокоиться о том, что это уменьшит вашу доступную память.
Надеюсь, это поможет.
Ответ или решение
Когда вы заметили высокое использование памяти buff/cache на вашем сервере под управлением Ubuntu 18.04 LTS, важно понять, что это не обязательно свидетельствует о проблемах. Давайте разберем это подробнее и предоставим важные рекомендации.
Что такое buff/cache память?
Память buff/cache в Linux используется ядром для кэширования данных, которые часто используются или недавно запрашивались. Это позволяет ускорить доступ к данным на диске, поскольку система может хранить их в оперативной памяти вместо того, чтобы постоянно считывать их с диска. Таким образом, buff/cache память помогает повысить производительность системы.
Ваши наблюдения
Из вывода команд free -mh
и top
видно следующее:
- Общий объем памяти: 7.8 ГГц
- Использование памяти: 1.5 ГГц
- Сват: 0 Б
- buff/cache: 1.9 ГГц
- Свободная память: 4.4 ГГц
Это показывает, что почти 2 ГГц памяти используется под кеширование. Когда вы перезагрузили сервер и выполнили команду echo 3 > /proc/sys/vm/drop_caches
, память снова была освобождена, но затем начала использоваться для кеширования. Данная ситуация нормальна и ожидаема.
Нужно ли беспокоиться о высоком использовании buff/cache?
Нет, в этом нет повода для беспокойства. Как уже упоминалось, память buff/cache имеет низкий приоритет и легко освобождается при необходимости. Фактически, если больше половины памяти свободно (как в вашем случае), это говорит о том, что сервер не загружен и у вас достаточно ресурсов.
Как обнаружить, что потребляет buff/cache память?
Чтобы узнать, какие процессы могут потреблять buff/cache память, вы можете использовать несколько инструментов, таких как:
top
илиhtop
: Эти инструменты показывают потребление ресурсов в реальном времени и могут помочь выявить интенсивные по использованию памяти процессы.iotop
: Если вас интересует, какие процессы потребляют много I/O,iotop
может дать полезную информацию.vmstat
: Этот инструмент также помогает отслеживать различные метрики производительности, включая кеширование. Чаще всего вам будет интересна колонкаbuff
иcache
.
Рекомендации по управлению памятью
-
Не удаляйте кеш: Команда
echo 3 > /proc/sys/vm/drop_caches
не рекомендуется использовать в постоянной практике. Она имеет ограниченное применение, например, при проведении бенчмарков. Частое удаление кеша может привести к ухудшению производительности системы. -
Мониторинг загруженности: Проводите регулярный мониторинг работы вашей системы, чтобы отслеживать нагрузку и производительность. Используйте инструменты мониторинга, такие как Prometheus, Grafana или другие для построения графиков использования ресурсов.
-
Планирование ёмкости: Если вы не предполагаете значительного увеличения рабочей нагрузки, возможно, имеет смысл рассмотреть возможность уменьшения объема выделенной памяти (например, до 6 или 4 ГГц). Это поможет освободить ресурсы для других виртуальных машин или приложений.
Заключение
В заключение, высокое использование памяти buff/cache на вашем сервере – это нормальное явление для Linux-систем. Это свидетельствует о том, что ваша операционная система эффективно использует доступные ресурсы. Главное – следить за производительностью и не беспокоиться о незначительных колебаниях в использовании памяти. При правильном управлении и мониторинге ваша система будет работать без сбоев и производительно.