- Как понять на что расходуется память в linux?
- Linux, кто съел всю память?
- 5 команд для проверки использования памяти на Linux
- Использование памяти
- 1. Команда free
- 2. /proc/meminfo
- 3. vmstat
- 4. команда top
- 5. Команда htop
- Информация памяти (RAM)
- Резюме
- Как узнать оперативную память Linux
- Как узнать оперативную память Linux
- 1. Файл /proc/meminfo
- 2. atop
- 3. free
- 4. Системный монитор Gnome
- 5. htop
- 6. KDE System Monitor
- 7. memstat
- 8. nmon
- 10. smem
- 11. top
- 12. vmstat
- 13. dmidecode
- 14. lshw
- Выводы
- Оцените статью:
- Об авторе
- 9 комментариев
Как понять на что расходуется память в linux?
Есть процесс, который по данным top потребляет 13,3% оперативной памяти. Однако по данным free используется памяти — 87,1%. Как понять куда ушла остальная память?
Ниже скриншот вывода top с сортировкой по RES, на котором видно, что процесс flussonic потребляет 13,3%, потребление памяти всеми остальными процессами — незначительное и не может влиять на значение Used, также я на всякий случай сделал в top сортировку по VIRT и обнаружил ещё один процесс, запрашивающий большие объёмы виртуальной памяти — Flussonic-thumb, но резидентная память у него всего 0,1%
Дополнение. Чтобы не возникал вопрос «как сопоставить отображаемую разными утилитами информацию про использование памяти», при дальнейшем исследовании проблемы я решил не использовать утилиты free, top и smem, а информацию получал из /proc, для процессов flussonic и flussonic-thumbnailer я получал данные об используемой резидентной и виртуальной памяти из /proc/»$PID»/status, данные получались каждые 5 минут и по ним строился график.
Сейчас, спустя месяц дополняю вопрос. По графику видно, что есть некая внутидневная динамика, используемая резидентная память процесса flussonic в зависимости от дневной нагрузки сервера колеблется от 3.5 до 5 Гбайт, но на более долгих временных прмежутках видно что ухода за эти пределы нет. А вот значение Used, которое вычислялось из данных в /proc за это же время увеличилось с 24 до 28 Гбайт, а если взять график за 3 месяца, то видно, что Used увеличилось с 12 до 28 Гбайт, память «течёт», причём графики процессов flussonic и flussonic-thumbnailer доказывают, что текут вовсе не самые нагруженные процессы, тогда что течёт, ядро? Как решить эту задачу?
Источник
Linux, кто съел всю память?
Столкнулся с проблемой, а точнее, некоторым моим не пониманием работы Linux систем. Зайдя на один из серверов я увидел следующее:
В этой картине меня привлекло значение потребляемой памяти. А именно написано, что из 16 Гб оперативки используется 14 Гб. Но на сервере крутится всего один маленький сайтик, и он не может съедать столько памяти.
Дальше я проверил этот результат командой:
и получил такую же картину:
Это было очень подозрительно.. Чтобы определить какие процессы, сколько съедают памяти я использовал следующую команду (описание тут: Как узнать какой процесс ест больше всего памяти в Linux):
Результатом, я остался не доволен, потому что, в совокупности все процессы, съедали, что-то около 2-х Гб:
Тогда я полез в поиск и нашел скрипт ps_mem.py, который подсчитывает кол-во памяти по процессам. Скрипт написан на питоне, пост про него тут: Подсчет потребляемой памяти процеcсами в Linux. Но он так же показывал, что все вместе процессы, не потребляют столько памяти.
Дальше я подумал, что проблема именно с ядром, и полез искать инфу, по ключевику: «linux ram size is not correct«, долго ли коротко, но нашел я вот такой ответ, на одно из сообщений:
As I understand it, on Linux ‘used’ memory is split into ‘active’ and ‘inactive’.
Active memory is memory which is currently allocated to a process and in use by it.
Inactive is memory that has been allocated to a process but is no longer in use by it (it has been freed). The allocator puts this memory on one side for later use, but doesn’t empty it. If the same data that is in that memory block is requested again it just re-allocates that memory block to the process. If a block of memory is requested and there is no ‘clean’ memory left it starts re-allocating this ‘dirty’ memory.
Examining /proc/meminfo can show you how much of your ‘used’ memory is active and how much is inactive.
Вкратце написано следующее: в Linux системах память делится на активную и неактивную. Неактивная это та, что выделена процессу, но больше не используется им. Allocator ( выделятор 🙂 ) оставляет эту память для дальнейшего использования, и не очищает её. Если данные расположенные в этой памяти понадобятся он их сразу вернет. Если же другому процессу, потребуется эта память и не будет «чистой памяти», то тогда будет распределятся неактивная память.
Другими словами, используется оптимизация, и данные без надобности не выкидываются из памяти, но при необходимости, эта память будет выделена процессам. Отсюда делаем соответствующий вывод: если большая часть памяти, является неактивной, то, все ок.
Проверить кол-во неактивной памяти можно так:
Источник
5 команд для проверки использования памяти на Linux
Главное меню » Операционная система Linux » 5 команд для проверки использования памяти на Linux
Использование памяти
Часто важно проверить использование общей памяти и памяти, используемой в процессе на серверах, а так же неиспользуемые ресурсы. Если вы работаете на веб-сервере, то сервер должен иметь достаточно памяти, чтобы обслуживать посетителей сайта. Если такого не будет, то сайт станет очень медленным или даже стать недоступным, когда будет всплеск трафика, просто потому, что памяти будет не хватать. Тоже самое, как и то, что происходит на настольном компьютере.
1. Команда free
Команда free является самой простой и легкой в использовании командой, чтобы проверить использование памяти на Linux. Вот краткий пример
Опция -m отображает все данные в мегабайтах. Общий общий объем оперативной памяти ОС Linux 7976 МБ, установленной в системе, то есть 8 Гб. Колонка used показывает объем оперативной памяти, которая может быть использована на Linux, в нашем случае составит около 6,4 Гб. Загвоздкой здесь является колонки cached и buffers. Вторая строка говорит, что 4,6 Гб свободно. Это свободная память в первой строке с добавлением буферов и объема памяти кэша.
Linux имеет привычку кэшировать для повышения производительности, так что память может быть освобождена и использована при необходимости.
Последняя строка, это подкачка памяти (swap), который в этом случае полностью свободна.
2. /proc/meminfo
Следующий способ проверить использование памяти, прочитать файл /proc/meminfo. Знайте, что файловая система /proc не содержит реальных файлов. Они являются виртуальными файлами, которые содержат динамическую информацию о ядре и системы.
Проверьте значения MemTotal, MemFree, Buffers, Cached, SwapTotal и SwapFree. Они указывают на одни и те же значения, использования памяти в команде free.
3. vmstat
Команда vmstat с опцией -s, показывает статистику использования памяти почти как команда Proc. Вот пример
Верхние несколько строк указывают общий объем памяти, объем свободной памяти и т.д., и так далее.
4. команда top
Команда top обычно используется для проверки памяти и процессора для каждого процесса. Тем не менее она также сообщает общее использование памяти и может быть использована для контроля общего использования памяти. Вывод результата имеет необходимую информацию. Вот пример вывода
Проверьте KiB Mem и KiB Swap в заголовке. Они указывают на общую, используемую и свободную объем памяти. Информация буфера и кэша присутствует здесь тоже, как и команды free.
5. Команда htop
Подобно команды free, команда htop также показывает использование памяти наряду с другими деталями.
Заголовок в верхней части показывает использование центрального процессора вместе с оперативной памятью и использование своп с соответствующими цифрами.
Информация памяти (RAM)
Чтобы узнать аппаратную информацию об установленной оперативной памяти, используйте команду dmidecode. Команда выводит детальную информацию об установленной оперативной памяти.
Информация включает в себя размер (2048MB), тип (DDR2), скорость (667 МГц) и т.д.
Резюме
Все вышеперечисленные команды работают с терминала и не имеют графического интерфейса. При работе на рабочем столе с графическим интерфейсом, гораздо проще в использовании графический инструмент с графическим выводом. Наиболее распространенные инструменты gnome-system-monitor в gnome и
KSysguard в KDE. Оба предоставляют информацию об использовании ресурсов о CPU, RAM, обмена и пропускной способности сети в графическом режиме и легко понятном визуальном выводы.
Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.
Источник
Как узнать оперативную память Linux
Когда дело доходит до оптимизации производительности системы Linux оперативная память — один из самых важных факторов, на которые нужно обратить внимание. В Linux есть множество утилит для контроля использования этого драгоценного ресурса. Инструменты отличаются друг от друга видом и детальностью предоставляемой информации (например для системы в целом, отдельного процесса или отдельного пользователя) интерфейсом (консольный интерфейс или графический) и режимом работы (интерактивный или пассивный режим).
Ниже представлен небольшой список консольных и графических утилит для проверки количества свободной и используемой оперативной памяти для платформы Linux.
Как узнать оперативную память Linux
1. Файл /proc/meminfo
Простейший способ проверить использование оперативной памяти — посмотреть /proc/meminfo. Это автоматически обновляемый файл, который является источником для таких утилит как free, ps и top. Кроме количества свободной и использованной памяти в /proc/meminfo есть все что можно узнать о памяти. Информация о памяти для конкретного процесса находится по адресу /proc/pid/statm или /proc/pid/status.
2. atop
Утилита atop — основана на ncurses и представляет из себя интерактивный монитор ресурсов. Она показывает в динамическом режиме такие системные параметры: CPU, память, нагрузка на сеть и другие. Также есть подсветка цветом при перегрузке системы. Можно посмотреть топ процессов или пользователей по использованию ими ресурсов, таким образом системный администратор может понять какие процессы или пользователи перегружают систему. Из памяти можно отобразить свободную, кэш, буферизированную и виртуальную. Утилиту сначала надо установить:
sudo apt install atop
И только потом можно использовать:
3. free
Команда free — это быстрый и простой способ посмотреть оперативную память linux получив информацию о её использовании из файла /proc/meminfo. Будет показано общее количество и количество свободной физической памяти и файла подкачки, а также буфера ядра.
4. Системный монитор Gnome
GNOME System Monitor — это приложение с графическим интерфейсом, которое показывает краткую статистику использования системных ресурсов — памяти, процессора, подкачки и сети. Также есть информация по использованию процессора и памяти для каждого процесса. Запустите утилиту и откройте вкладку Ресурсы:
5. htop
Программа htop — основанный на ncurses монитор процессов, который показывает использование процессора и памяти для каждого процесса по отдельности в реальном времени. Здесь можно посмотреть количество резидентной памяти, общий объем памяти для программы, размер библиотек, размер страниц, и количество памяти для всех запущенных процессов. Также на удобной псевдографической диаграмме можно посмотреть сколько памяти занято Linux:
6. KDE System Monitor
Как и у Gnome у KDE есть свое решение, которое помогает узнать использование оперативной памяти Linux. Программа KDE System Monitor очень похожа по функцональности на свой аналог в Gnome. Есть просмотр статистики использования системных ресурсов, а также отображение потребления памяти и процессора напротив каждого процесса.
7. memstat
Утилита memstat полезна для определения какой исполняемый файл, процесс или библиотека использует много оперативной памяти. Утилита определяет количество использованных ресурсов по PID идентификатору процесса. Эту утилиту тоже надо установить:
sudo apt install memstat
8. nmon
Программа nmon — представляет из себя ncurses инструмент для тестирования системы. Можно тестировать центральный процессор, память, диск, ввод\вывод, ядро, файловую систему и сетевые ресурсы в интерактивном режиме. Что касается памяти то можно посмотреть размер оперативной памяти Linux, количество свободной памяти, размер раздела подкачки, кэширование и виртуальную память. И все это в реальном времени. Для установки выполните:
sudo apt install nmon
Чтобы утилита отобразила память поле её запуска надо нажать клавишу M:
Команда ps может показать использование памяти для каждого процесса в реальном времени. Показывается процент используемой памяти (MEM), общее количество виртуальной памяти (VSZ) общий объем физической памяти (RSS) Вы также можете отсортировать список процессов с помощью опции —sort. Например, для сортировки по убыванию rss используйте:
ps aux —sort -rss
10. smem
Команда smem позволяет измерить количество памяти используемое различными процессами и пользователями на основе информации взятой из /proc. Она показывает количество ресурсов в процентном соотношении. Для установки выплните:
sudo apt install smem
Данные могут быть экспортированы в виде диаграмм, таких как круговые графики:
sudo smem —pie name -c «pss»
11. top
Команда top выводит список запущенных процессов в режиме реального времени, а также различные статистические данные для каждого из них. Вы можете сортировать список процессов по использованию памяти.
12. vmstat
Утилита командной строки vmstat отображает статистические данные по использованию CPU, памяти, прерываний и ввода вывода на диск. Команда показывает не только физическую память (всего, использовано, кэшировано, буферизировано), но и статистику по виртуальной памяти (количество страниц в подкачке и т д)
13. dmidecode
Утилита dmideocde позволяет просматривать информацию об аппаратном обеспечении подключенном к материнской плате компьютера, в том числе и об оперативной памяти. Это чуть ли не единственный способ узнать количество слотов для памяти, количество установленных планок, а также здесь отображается напряжение питания и частота оперативной памяти. Для просмотра информации именно про память выполните:
sudo dmidecode -t 17
14. lshw
Команда lshw тоже позволяет просматривать информацию об оборудовании компьютера, выводит практически аналогичные данные, что и dmidecode, только по русски и в более удобном формате:
sudo lshw -class memory
Выводы
Из этой статьи вы узнали множество способов как узнать оперативную память Linux, как видите, существует просто огромное количество методов в зависимости от ваших потребностей. Я, обычно, смотрю свободную память с помощью утилиты free. А какие инструменты используете вы? Напишите в комментариях!
Оцените статью:
Об авторе
Основатель и администратор сайта losst.ru, увлекаюсь открытым программным обеспечением и операционной системой Linux. В качестве основной ОС сейчас использую Ubuntu. Кроме Linux, интересуюсь всем, что связано с информационными технологиями и современной наукой.
9 комментариев
Ваш сайт все интереснее от стать к статье.
Возможно не совсем в тему. Подскажите пожалуйста почему Linux Mint 17, может не видеть оперативную память? В биосе определяется 2 Гб, Win XP, установленная на этом же компьютере, тоже определяет 2 Гб, Mint, упорно показывает 1. В какую сторону думать?
Даже не знаю. попробуйте поспрашивать на специализированных форумах по аппаратному обеспечению.
Я грешу на опцию ядра highmem, но как проверить не знаю. Может попробывать другую версию ядра, сейчас стоит 3.13.0.24, не подскажите какое ядро лучше поставить?
Ставьте 4.4 или 4.6. Обычно во всех современных дистрибутивах ядро собрано с поддержкой highmem, но можете попробовать пересобрать. Также можно попробовать указать количество памяти в параметрах загрузки ядра с помощью опции mem (в мегабайтах)
Это в файле /boot/grub/grub.cfg?
Здравствуйте! Почему используется виртуальная память, когда ещё физической (озу) достаточно?
В sysctl.conf добавил
vm.swappiness = 10
vm.vfs_cache_pressure = 1000
ОЗУ 8ГБ, при 1-1,5ГБ уже используется swap, хотя должен при 10% свободной. Linux Debian 8. На Ubuntu Server 14.04 LTS эти же настройки работали.
Сервер на debian 14.04
на борту MySQL и nginx с виртуальными хостами
Ужасно тормозят сайты использующие локальную БД (одна страница может открываться до 60 секунд)
При таком раскладе это нормально (дело в нехватки ОЗУ? ведь в кэше 2549976 kB) или ковырять конфиги MySQL?
MemTotal: 4043988 kB
MemFree: 246324 kB
MemAvailable: 2816676 kB
Buffers: 217996 kB
Cached: 2549976 kB
SwapCached: 0 kB
Active: 2036160 kB
Inactive: 1559340 kB
Active(anon): 442784 kB
Inactive(anon): 453880 kB
Active(file): 1593376 kB
Inactive(file): 1105460 kB
Unevictable: 0 kB
Mlocked: 0 kB
SwapTotal: 8388604 kB
SwapFree: 8388352 kB
Dirty: 100 kB
Writeback: 0 kB
AnonPages: 827528 kB
Mapped: 100952 kB
Shmem: 69136 kB
Slab: 166384 kB
SReclaimable: 149268 kB
SUnreclaim: 17116 kB
KernelStack: 2608 kB
PageTables: 11508 kB
NFS_Unstable: 0 kB
Bounce: 0 kB
WritebackTmp: 0 kB
CommitLimit: 10410596 kB
Committed_AS: 1655292 kB
VmallocTotal: 34359738367 kB
VmallocUsed: 0 kB
VmallocChunk: 0 kB
HardwareCorrupted: 0 kB
AnonHugePages: 690176 kB
CmaTotal: 0 kB
CmaFree: 0 kB
HugePages_Total: 0
HugePages_Free: 0
HugePages_Rsvd: 0
HugePages_Surp: 0
Hugepagesize: 2048 kB
DirectMap4k: 58944 kB
DirectMap2M: 4132864 kB
total used free shared buffers cached
Mem: 3.9G 3.6G 232M 67M 213M 2.4G
-/+ buffers/cache: 1.0G 2.9G
Swap: 8.0G 252K 8.0G
Источник