Потребление памяти процессом Linux
Обновлено: 21.11.2024
Причудливая страсть (CC0)
Существует множество инструментов для просмотра использования памяти в системах Linux. Некоторые из них являются широко используемыми командами, такими как free и ps, в то время как другие представляют собой инструменты, такие как top, которые позволяют отображать статистику производительности системы различными способами. В этом посте мы рассмотрим некоторые команды, которые могут оказаться наиболее полезными для определения пользователей и процессов, использующих больше всего памяти.
Вот некоторые из них, которые касаются использования памяти процессом.
Использование top
Одна из лучших команд для просмотра использования памяти — top. Один чрезвычайно простой способ увидеть, какие процессы используют больше всего памяти, — начать сначала, а затем нажать Shift+M, чтобы изменить порядок показанных процессов, чтобы ранжировать их по проценту используемой памяти. После того, как вы введете shift+m, ваш верхний вывод должен переупорядочить записи задач, чтобы они выглядели примерно так:
Обратите внимание на рейтинг %MEM. Список будет ограничен размером вашего окна, но процессы, наиболее важные с точки зрения использования памяти, будут отображаться вверху списка процессов.
Использование PS
Команда ps содержит столбец, в котором отображается использование памяти для каждого процесса. Однако, чтобы получить наиболее полезный вид для просмотра основных пользователей памяти, вы можете передать вывод ps из этой команды в команду sort. Вот пример очень полезного отображения:
В приведенном выше примере (усеченном для этого поста) сортировка используется с параметрами -r (обратный), -n (числовой) и -k (ключевой), которые указывают команде сортировать вывод в обратный числовой порядок на основе четвертого столбца (использование памяти) в выводе ps. Если мы сначала отобразим заголовок для вывода ps, его будет немного легче увидеть.
Если вам нравится эта команда, вы можете установить ее как псевдоним с командой, подобной приведенной ниже. Не забудьте добавить его в файл ~/.bashrc, если хотите сделать его постоянным.
Вот некоторые команды, которые показывают использование памяти пользователем.
Использование top
Изучение использования памяти пользователем несколько сложнее, потому что вам нужно найти способ сгруппировать все процессы пользователя в один общий показатель использования памяти.
Если вы хотите сосредоточиться на одном пользователе, top можно использовать так же, как и выше. Просто добавьте имя пользователя с опцией -U, как показано ниже, и нажмите клавиши Shift+M, чтобы упорядочить по использованию памяти:
Использование PS
Вы также можете использовать команду ps для ранжирования процессов отдельного пользователя по использованию памяти. В этом примере мы делаем это, выбирая процессы одного пользователя с помощью команды grep:
Использование ps вместе с другими командами
Сложнее становится, когда вы хотите сравнить использование памяти пользователями друг с другом. В этом случае создание общего количества по пользователям и их ранжирование — хороший метод, но он требует немного больше работы и использует ряд команд. В приведенном ниже сценарии мы получаем список пользователей с параметром ps aux | grep -v КОМАНДА | авк '' | команда sort -u. Сюда входят системные пользователи, такие как syslog. Затем мы собираем статистику для каждого пользователя и суммируем статистику использования памяти для каждой задачи с помощью awk. В качестве последнего шага мы отображаем сумму использования памяти каждым пользователем в числовом порядке (наибольшая первая).
Вывод этого скрипта может выглядеть следующим образом:
Существует множество способов сообщить об использовании памяти в Linux. Чтобы понять, какие процессы и пользователи потребляют больше всего памяти, можно воспользоваться несколькими тщательно продуманными инструментами и командами.
Присоединяйтесь к сообществам Network World на Facebook и LinkedIn, чтобы комментировать самые важные темы.
Сандра Генри-Стокер занимается администрированием систем Unix более 30 лет. Она описывает себя как «USL» (Unix как второй язык), но помнит достаточно английского, чтобы писать книги и покупать продукты. Она живет в горах в Вирджинии, где, когда не работает с Unix и не пишет о ней, отгоняет медведей от своих кормушек для птиц.
Linux проверяет использование памяти для каждого процесса. как проверить, какой процесс использует больше памяти в Linux. Linux сколько памяти использует процесс. Linux отслеживает использование памяти процессом с течением времени. linux проверить использование памяти на процесс в мб. Linux проверка памяти. Linux показывает использование памяти. Linux смотрите использование памяти. информация об использовании памяти Linux. использование памяти процессом Linux. как проверить использование памяти в Linux.
Существует несколько показателей для проверки использования памяти каждым процессом в Linux. Я начну с двух, которые проще всего получить
- размер виртуального набора (vss)
- размер резидентной памяти (rss)
оба доступны в большинстве реализаций команд ps и top.
-
Vss: называется VSZ в команде ps и VIRT в top и представляет собой общий объем памяти, отображаемый процессом. Это сумма всех регионов, показанных в /proc/
Использование top и ps для проверки использования памяти процессом (VSS и RSS)
Команда ps показывает Vss (VSZ) и Rss (RSS) с параметрами -Aly и пользовательским форматом, включающим vsz и rss, как показано здесь
Аналогичным образом free и top также показывают сводку свободной памяти и использования памяти для каждого процесса:
Эти простые команды дают представление об использовании памяти и дают первое указание на утечку памяти, когда вы видите, что Rss процесса продолжает увеличиваться. Однако они не очень точны в абсолютных измерениях использования памяти.
Использование smem для проверки использования памяти процессом
В 2009 году Мэтт Макколл начал изучать проблему учета общих страниц при измерении памяти процесса и добавил две новые метрики: размер уникального набора, или Uss , и размер пропорционального набора, или Pss.
- Uss: объем памяти, выделенный для физической памяти и уникальный для процесса; он не делится ни с кем другим. Это объем памяти, который будет освобожден, если процесс завершится.
- Pss: разделяет учет общих страниц, зафиксированных в физической памяти, между всеми процессами, для которых они сопоставлены. Например, если область библиотечного кода имеет длину 12 страниц и совместно используется шестью процессами, каждый из них будет накапливать две страницы в Pss. Таким образом, если вы добавите числа Pss для всех процессов, вы получите фактический объем памяти, используемый этими процессами. Другими словами, Pss — это число, которое мы искали.
Информация доступна в /proc/
/smaps , который содержит дополнительную информацию для каждого из сопоставлений, показанных в /proc/
/карты . Вот один раздел из такого файла, в котором содержится информация о сопоставлении сегмента кода libc:
Обратите внимание, что Rss составляет 58,7 МБ, но, поскольку он совместно используется многими другими процессами, Pss составляет всего 56,4 МБ.
Существуют различные фильтры, которые можно применять с помощью smem, как показано ниже, в последней доступной версии (1.4) на момент написания этой статьи
Чтобы проверить общее использование памяти для каждого процесса, мы можем выполнить следующую команду
Это даст вам подробную информацию об использовании памяти каждым процессом, активным в вашей системе.
Чтобы получить данные об использовании памяти одним процессом, мы можем выбрать процесс из списка
Здесь, как вы видите, мы получаем те же результаты, что и выше, с /proc/31768/smaps и инструментом smem. Таким образом, фактическое использование памяти amsHelper составляет 56,4 МБ
Наконец, я надеюсь, что шаги из статьи по проверке использования памяти для каждого процесса в Linux были полезны. Итак, дайте мне знать ваши предложения и отзывы, используя раздел комментариев.
Похожие сообщения
Не нашли то, что искали? Выполните быстрый поиск в GoLinuxCloud
Если мои статьи о GoLinuxCloud помогли вам, пожалуйста, купите мне кофе в знак признательности.
Для любых других отзывов или вопросов вы можете использовать раздел комментариев или форму обратной связи.
Спасибо за поддержку!!
5 мыслей на тему «Как проверить использование памяти для каждого процесса в Linux»
Определенно многое нужно знать об этой
проблеме. Мне очень нравятся все ваши замечания.
Я счастлив, что заметил этот сайт, именно ту информацию, которую я искал! .
Спасибо! Отличный отзыв!
Но я бы добавил это со страницы руководства smem: USS и PSS включают только использование физической памяти. Они не включают в себя память, которая была выгружена на диск».
Я бы также отметил, что было бы быстрее и проще выбрать процесс с опцией -P:
smem -k -P amsHelper< /p>
Спасибо, что поделились этой дополнительной информацией.
Круто! Спасибо за полные флаги ps для перечисления многих видов параметров памяти, а также за совет о просмотре файла /proc/PID/smaps для получения дополнительной информации. Я пытался выяснить, сколько памяти потребляет один из моих процессов, но, увы, в моем дистрибутиве Linux (работающем на встроенной системе) нет возможности установить smem или другой популярный инструмент pmap. Я просто использовал старый добрый топ для этого, но ваша статья дала мне множество других предложений! Большое спасибо за это 🙂
Как вы измеряете использование памяти приложением или процессом в Linux?
Из статьи блога Понимание использования памяти в Linux, ps не является подходящим инструментом для использования в этих целях.
Почему ps "неправильный"
В зависимости от того, как вы на это смотрите, ps не сообщает о реальном использовании памяти процессами. На самом деле он показывает, сколько реальной памяти занял бы каждый процесс, если бы он был единственным запущенным процессом. Конечно, на типичной Linux-машине в любой момент времени запущено несколько десятков процессов, а это означает, что номера VSZ и RSS, сообщаемые ps, почти наверняка неверны.
(Примечание: этот вопрос рассматривается здесь очень подробно.)
В настоящее время этот вопрос, вероятно, принадлежит serverfault.com, хотя он говорит мне, что он «слишком стар для переноса». Хотя на самом деле не нужно закрывать его.
На самом деле ps не показывает даже этого — он показывает количество виртуальной и резидентной памяти, где виртуальная — это максимальный объем памяти, который теоретически мог бы использовать процесс, если бы он был единственным процессом (никогда), использовал бы каждую выделенную им страницу (никогда не бывает) и не отображал и не удалял какие-либо страницы (маловероятно). В то время как резидент показывает, сколько виртуальной памяти отображено на физическую прямо сейчас. Обычно virt > использование > res, однако в 64-битной системе virt ~= res*10 это очень широкий диапазон.
Отрывок из связанной статьи — полная чепуха. RSS — это фактически используемая физическая память, а VSZ может транслироваться или не транслироваться в использование физической памяти, даже если процесс был единственным запущенным процессом.
32 Ответа 32
С помощью ps или подобных инструментов вы получите только количество страниц памяти, выделенных этим процессом. Это число правильное, но:
не отражает фактический объем памяти, используемый приложением, а только объем памяти, зарезервированный для него
может ввести в заблуждение, если страницы совместно используются, например, несколькими потоками или с использованием динамически подключаемых библиотек
Если вы действительно хотите знать, какой объем памяти на самом деле использует ваше приложение, вам нужно запустить его в профилировщике. Например, Valgrind может дать вам представление об объеме используемой памяти и, что более важно, о возможных утечках памяти в вашей программе. Инструмент Valgrind для профилирования кучи называется массивом:
Massif — это профилировщик кучи. Он выполняет подробное профилирование кучи, делая регулярные снимки кучи программы. Он создает график, показывающий использование кучи с течением времени, включая информацию о том, какие части программы отвечают за наибольшее выделение памяти. График дополняется текстовым или HTML-файлом, который содержит дополнительную информацию для определения того, где выделяется больше всего памяти. Massif запускает программы примерно в 20 раз медленнее, чем обычно.
Как поясняется в документации по Valgrind, программу необходимо запускать через Valgrind:
Очень важно, чтобы ваша система Linux работала на оптимальном уровне. Несколько простых команд терминала обеспечивают доступ ко всей необходимой информации и помогают отслеживать статистику использования памяти.
В этом руководстве вы узнаете о пяти мощных командах для проверки использования памяти в Linux.
Мы также предоставляем подробные объяснения того, что они делают, и, что более важно, как интерпретировать результаты. Команды будут работать практически со всеми дистрибутивами Linux. В данном случае команды и результаты представлены с использованием Ubuntu 18.04.
- Доступ к командной строке/терминалу
- Пользователь с правами sudo
- Менеджер пакетов apt
Команды для проверки использования памяти в Linux
Команда cat для отображения информации о памяти Linux
Ввод cat /proc/meminfo в вашем терминале открывает файл /proc/meminfo.
Это виртуальный файл, в котором сообщается об объеме доступной и используемой памяти. Он содержит информацию в режиме реального времени об использовании системной памяти, а также о буферах и разделяемой памяти, используемых ядром. Результат может незначительно отличаться в зависимости от используемой архитектуры и операционной системы.
Это пример того, как выглядит файл /proc/meminfo в Ubuntu 18.04:
Терминал отображает информацию в килобайтах.
free команда для отображения объема физической памяти и памяти подкачки
Набрав free в командном терминале, вы получите следующий результат:
Данные представляют собой объем используемой/доступной памяти и объем памяти подкачки в килобайтах.
Подробное описание, приведенное ниже, содержит объяснение каждого значения на случай, если вам понадобится помощь в анализе результатов.
- Процессы
- r: количество процессов, ожидающих выполнения.
- b: количество процессов в непрерывном спящем режиме.
- swpd: объем используемой виртуальной памяти.
- свободно: объем свободной памяти.
- buff: объем памяти, используемый в качестве буферов.
- кеш: объем памяти, используемый в качестве кеша.
- si: память, загруженная с диска (/s).
- итак: память заменена на диск (/s).
- bi: количество блоков, полученных от блочного устройства (блоков в секунду).
- bo: количество блоков, отправленных на блочное устройство (блоков в секунду).
- in: количество прерываний в секунду, включая часы.
- cs: количество переключений контекста в секунду.
- нас: время, потраченное на выполнение кода, отличного от ядра. (время пользователя, включая приятное время)
- sy: время, потраченное на выполнение кода ядра. (системное время)
- id: время простоя. До Linux 2.5.41 это включает время ожидания ввода-вывода.
- wa: время, затраченное на ожидание ввода-вывода. До Linux 2.5.41 включался в режим ожидания.
- st: Время, украденное у виртуальной машины. До Linux 2.6.11 неизвестно.
команда top для проверки использования памяти
Команда top полезна для проверки использования памяти и ЦП для каждого процесса. Он отображает информацию о:
- время работы
- средняя нагрузка
- задачи выполняются
- количество пользователей, вошедших в систему
- количество ЦП/загрузка ЦП
- системные процессы памяти/подкачки
Данные постоянно обновляются, что позволяет вам следить за процессами в режиме реального времени.
Помимо предоставления важной информации о памяти, команда top предоставляет ограниченный интерактивный интерфейс. Можно управлять операциями и настраивать их с помощью параметров командной строки.
Команда man в Linux man top предоставляет полный список всех доступных вариантов.
Команда htop для поиска загрузки памяти каждого процесса
Информация, которую предоставляет команда htop, аналогична команде top. Однако реальным преимуществом команды htop является ее удобная среда и улучшенные элементы управления.
Эта команда использует цвет для вывода, предоставляет полные командные строки для процессов, а также возможность прокрутки как по вертикали, так и по горизонтали.
Появляется следующий вывод:
- В верхнем сегменте представлена сводная информация, а также графические и текстовые счетчики.
- Нижний раздел структурирует подробные данные для каждого процесса. Это позволяет с легкостью выполнять действия над отдельными процессами.
- Ярлыки, перечисленные в нижней части экрана, позволят вам управлять процессами и настраивать их быстро и без необходимости вводить определенные команды.
Примечание. Если при попытке запустить команду htop появляется сообщение «Команда ‘htop’ не найдена», вам необходимо сначала установить функцию htop:
В качестве альтернативы используйте следующую команду:
Проверка использования памяти в Linux с помощью графического интерфейса
Использование графического интерфейса для администрирования сервера не является общепринятой практикой. Однако некоторые наборы данных намного нагляднее благодаря визуальному представлению использования памяти.
Для доступа к системному монитору:
- Перейдите к Показать приложения.
- Введите системный монитор в строке поиска и получите доступ к приложению.
- Выберите вкладку "Ресурсы".
- Отображается графический обзор потребления памяти в режиме реального времени, включая историческую информацию.
В этом руководстве представлено несколько вариантов проверки использования памяти в вашей системе Linux. Мы узнали, что одна команда предоставляет множество ценных данных для будущего анализа. Очень важно научиться правильно интерпретировать информацию.
Читайте также: