Вопрос или проблема
Я пытаюсь понять вывод команды free -hm. Я знаю о столбцах, кроме “shared”. Shared занимает 50% моей ОЗУ, и я не смог найти много полезной информации о том, что это такое и для чего оно нужно. Я использую Ubuntu 16.10.
Будет полезно, если кто-то сможет объяснить это 🙂
total used free shared buff/cache available
Mem: 7,7G 2,2G 498M 3,7G 5,0G 1,5G
Swap: 3,9G 352M 3,6G
free:
Отображает общее количество свободной и использованной физической и своп-памяти в системе, а также буферы и кэши, используемые ядром. Информация собирается путем анализа /proc/meminfo.
Отображаемые столбцы:
total:
- Всего установленной памяти (MemTotal и SwapTotal в /proc/meminfo)
used:
- Используемая память (вычисляется как total - free - buffers - cache)
free:
- Неиспользуемая память (MemFree и SwapFree в /proc/meminfo)
shared Memory:
- используется (в основном) tmpfs (Shmem в /proc/meminfo, отображается как ноль, если недоступно)
buffers:
- Память, используемая буферами ядра (Buffers в /proc/meminfo)
cache:
- Память, используемая кэшем страниц и слэбами (Cached и Slab в /proc/meminfo)
buff/cache: Сумма буферов и кэша
Источник: см. man free
ubuntu@tryhackme:~/Desktop$ free fire hack
total used free shared buff/cache available
Mem: 1978128 604552 482396 9608 891180 1186136
Swap: 0 0 0
ubuntu@tryhackme:~/Desktop$ gerena free fire max
gerena: команда не найдена
ubuntu@tryhackme:~/Desktop$ ffmax
ffmax: команда не найдена
ubuntu@tryhackme:~/Desktop$
Ответ или решение
Команда free -hm
в операционной системе Ubuntu позволяет получить ясное представление о состоянии оперативной и виртуальной памяти. Рассмотрим каждый столбец данного вывода, уделяя особое внимание столбцу "shared", который вызывает ваши вопросы.
Описание выводимых колонок
-
total (всего): Общий объем оперативной и своп-памяти, установленной на системе. Эти данные берутся из
/proc/meminfo
. -
used (используемая): Объем использованной памяти, который рассчитывается как
total - free - buffers - cache
. -
free (свободная): Незанятая память, которая может быть использована, берется из
MemFree
иSwapFree
в/proc/meminfo
. -
shared (общая): Этот столбец показывает объем памяти, который используется для общего доступа между процессами. Как правило, эта память в основном резервируется для временных файловых систем (tmpfs), что отображается в
Shmem
в/proc/meminfo
. Общая память, как правило, используется для хранения данных, которые должны быть доступны нескольким процессам одновременно, например, для общих библиотек или кешей. -
buff/cache (буферы/кеш): Совокупный объем памяти, используемой ядром для буферов и кеша. Это важно, так как оперативная память, используемая для кеширования, может быть освобождена по мере необходимости для других процессов, что помогает поддерживать производительность системы.
-
available (доступно): Объем памяти, который подходит для новых приложений без необходимости использования своп-памяти.
Почему "shared" может занимать 50% вашего ОП?
Если в вашем выводе столбец "shared" показывает объем в 3,7 Гб (50% от общей физической памяти), возможно, это связано с тем, что у вас запущено множество процессов, использующих общие ресурсы. Примеры:
- Общие библиотеки: Повторное использование кода через статические и динамические библиотеки.
- Кеширование: Программы, такие как браузеры или офисные приложения, могут кэшировать данные для ускорения работы.
- Процессы: Некоторые процессы в Linux могут создавать временные файловые системы, которые используют общую память, например, для хранения временных данных.
Что делать с "shared" памятью?
Если вы переживаете по поводу объема "shared" памяти, вы можете попытаться:
- Оптимизировать запущенные процессы: Используйте инструменты, такие как
top
илиhtop
, для мониторинга ресурсов, которые потребляют ваши процессы и может ли их использование быть сократили. - Понимать, что не всегда следует паниковать по поводу высокой процентной доли "shared" памяти: В современных системах, где много процессов используют общие ресурсы, это нормальная практика и может отражать эффективное использование памяти.
В заключение, команды и данные, которые вы видите, являются частью нормального функционирования системы. Память, выделяемая под "shared", в значительной степени управляется ядром, и ее использование может указывать на рабочие процессы в системе, а не на проблемы.