Linux память потребляемая процессом

Как проверить использование памяти на Linux

Когда дело доходит до оптимизации производительности системы Linux, физическая память является самым важным фактором. Естественно, Linux предлагает множество вариантов, чтобы контролировать использование драгоценного ресурса памяти. Различные инструменты различаются с точки зрения их детализации мониторинга (например, в рамках всей системы, на процесс, на пользователя), интерфейса (например, графический, командной строки, ncurses) или режима работы (например, интерактивный, пакетный режим).

Вот неполный перечень программ с графическим интерфейсом или командной строкой, чтобы вам было из чего выбрать, для проверки используемой и свободной памяти на платформах Линукс.

1. /proc/meminfo

Самый простой способ проверить использование оперативной памяти — через /proc/meminfo. Этот динамично обновляемый виртуальный файл, на самом деле, источник отображаемой информации для многих других, связанных с памятью, инструментами, такими как free, top и ps tools. От количество доступной/физической памяти до количества буфера, ожидаемого для записи обратно на диск, /proc/meminfo имеет всё, что вы хотите знать об использовании системной памяти. Информация о памяти процессами также доступна из /proc/

2. atop

Команда atop — это основанная на интерфейсе ncurses интерактивная система и наблюдатель процессов для терминального окружения. Он показывает динамически обновляемую краткую информацию о системных источниках (процессор, память, сеть, ввод/вывод, ядро) с цветными предупреждениями в случае высокой загрузки системы. Он также может отсортировать процессы (или пользователей) в порядке наибольшего потребления ресурсов ими, так, что системный администратор может сказать, какой процесс или пользователь ответственен за загрузку системы. Отчёты по статистике памяти включают общую/свободную память, кэшированную/буферезированную память и информацию по виртуальной памяти.

3. free

Команда free — это быстрый и простой способ получить обзор использования памяти, почерпнутые из /proc/meminfo. Она показывает снимок общей/доступной физической памяти и подкачу системы также как используемое/свободное буферное пространство в ядре.

4. GNOME System Monitor

GNOME System Monitor — это графическое приложение, которое показывают краткую историю использования системных ресурсов для центрольного процессора, памяти, места подкачки и сети. Оно также предлагает процесс наблюдения за использования процессора и памяти.

5. htop

Команда htop — это основанный на ncurses интерактивный просмотрщик процессов, который показывает использование памяти по процессам в реальном времени. Он может сообщить размер занимаемой памяти процессом в основной памяти (RSS), общий размер программы в памяти, размер библиотеки, размер общей страницы, и размер грязной страницы (в кэше) для всех запущенных процессов. Вы можете горизонтально или вертикально промотать (отсортированный) список всех процессов.

6. KDE System Monitor

В то время как рабочий стол GNOME имеет GNOME System Monitor, рабочий стол KDE имеет свой собственный аналог: KDE System Monitor. Его функциональность преимущественно схожа с версией GNOME, т. е. Показ в реальном времени историю использования системных ресурсов, также как и потребление процессора/памяти отдельными процессами.

7. memstat

Утилита memstat — это полезный для выявления какой (какие) исполняемый(ые) процесс(ы) и разделяемые библиотеки потребляют виртуальную память. Получая ID процесса, memstat выявляет как много виртуальной памяти использовано связанными с этим процессом исполнимым кодом, данными и разделяемыми библиотеками.

8. nmon

Утилита nmon — это основанный на ncurses инструмент системного бенчмарка, который мониторит центральный процессор, память, дисковый ввод/вывод, ядро, файловую систему и сетевые источники в интерактивном режиме. По использованию памяти он может показать такую информацию как общую/свободную память, место подкачки, буферизованную/кэшированную память, статистику загруженной/выгруженной виртуальной памяти, это всё в реальном времени.

Читайте также:  Не всегда срабатывает левая кнопка мыши windows 10

Команда ps может показать использование памяти отдельными процессами в реальном времени. Отображаемая информация использования памяти включает %MEM (процент от используемой физической памяти), VSZ (общее количество используемой виртуальной памяти) и RSS (общее количество используемой физической памяти). Вы можете отсортировать список процессов, используя опцию «—sort». Например, для сортировки по убыванию RSS:

10. smem

Команда smem позволяет вам измерять использование физической памяти различными процессами и пользователями, основываясь на информации, доступной из /proc. Эта утилита использует метрику пропорционально установленного размера (PSS), для точной оценки использования процессами Linux размера эффективной памяти. Анализ использования памяти может быть экспортирован в графические диаграммы в виде столбиков и нарезанных на части кнугов.

11. top

Команда top предлагает наблюдение за запущенными процессами в реальном времени вместе с различными статистиками процессов использования ресурсов. Связанная с памятью информация включает %MEM (процент используемой памяти), VIRT (общее количество используемой виртуальной памяти), SWAP (количество подкаченной виртуальной памяти), CODE (количество физической памяти, выделенной для исполнения кода), DATA (количество физической памяти выделенной для не-исполнимых данных), RES (общее количество используемой физической памяти, CODE+DATA) и SHR (количество потенциально разделённой памяти с другими процессами). Вы можете отсортировать список процессов, основываясь на использование памяти или размере.

12. vmstat

Утилита командной строки vmstat отображает немедленную и среднюю статистику различных системных активностей, включая центральный процессор, память, прерывания и дисковый ввод/вывод. Как источник информации по памяти, эта команда показывает не только использование физической памяти (например, общей/используемой памяти и буфер/кэш памяти), но также статистику виртуальной памяти (например, память загруженных/выгруженных страниц, подгруженную/загруженную).

Источник

Smem – Отчеты о распределении памяти между процессами и пользователями в Linux

И снова здравствуйте. Друзья, хотим поделиться с вами переводом полезного материала о мониторинге использования памяти в Linux. Данный материал подготовлен специально для студентов курса «Администратор Linux».

Управление памятью в вопросах мониторинга ее использования – одна из самых важных областей в вашей Linux системе. В различных дистрибутивах Linux существует великое множество инструментов для мониторинга использования памяти. Работают они тоже по разному, но в этой статье мы рассмотрим установку и использования такого инструмента как smem.

Smem – это инструмент предоставления отчетов в командной строке, который выдает пользователю различные сводки по использованию памяти в системе Linux. В smem есть одна уникальная вещь, которая отличает его от традиционных инструментов мониторинга памяти. Дело в том, что smem сообщает вам PSS (Proportional Set Size), то есть он дает более полноценное представление о распределении памяти между приложениями и библиотеками в настройках виртуальной памяти.

Существующие традиционные инструменты сосредоточена главным образом на считывании RSS (Resident Set Size), т.е. на стандартной мере мониторинга использования памяти в физической схеме памяти, которая тем не менее имеет тенденцию переоценивать использование памяти приложениями.

С другой стороны PSS рационально оценивает использование памяти, определяя справедливое ее распределение между приложениями и библиотеками в схеме виртуальной памяти.

Вы можете обратиться к этому руководству (о PSS и RSS памяти), чтобы понять механизм потребления памяти в системе Linux. А теперь давайте перейдем к рассмотрению некоторых особенностей smem.
Особенности Smem:

  • Листинг обзора системы;
  • Листинг и фильтрация по процессам, маппингам и пользователям;
  • Использование данных из файловой системы /proc;
  • Настраиваемые столбцы листинга для нескольких источников данных;
  • Конфигурируемые блоки вывода и процентные показатели;
  • Простота настройки заголовков и итогов в списках;
  • Использование моментальных снимков из зеркал каталогов или сжатых tar файлов;
  • Встроенный механизм генерации диаграмм;
  • Облегчённый инструмент захвата, используемый во встроенных системах.

Как установить Smem – инструмент мониторинга памяти в Linux

Перед тем, как приступить к установке smem, необходимо убедиться, что ваша система удовлетворяет следующим параметрам:

  • Современное ядро (версия от 2.6.27);
  • Актуальная версия Python (поддерживается от 2.4);
  • Опционально библиотека matplotlib для генерации диаграмм.

Большинство дистрибутивов Linux на сегодняшний день поставляются с последней версией ядра с поддержкой Python 2 или 3, поэтому единственным требованием по сути может быть только установка matplotlib для отрисовки красивых графиков.

Читайте также:  Windows открываются окна браузера

На системах RHEL, CentOS и Fedora

Для начала включите репозиторий EPEL (Extra Packages for Enterprise Linux), затем установите следующее:

На системах Debian и Ubuntu

На Linux Mint

На Arch Linux

Как использовать Smem

Чтобы увидеть отчет по использованию памяти системой, всеми пользователями системы, введите следующую команду:

Когда стандартный пользователь запускает smem, то отображается использование памяти процессом, который инициировал этот пользователь. Процессы организованы по возрастанию PSS.
Взгляните на пример вывода для моей системы. Здесь показано использование памяти для процессов, инициированных пользователем aaronkilik:

Есть множество опций, которые вы можете вызвать во время использования smem, например, чтобы просмотреть потребление памяти в масштабах системы, выполните следующую команду:

Также вы можете просмотреть использование памяти маппингами:

У smem есть параметры фильтрации выходных данных. Сейчас мы взглянем на два примера.
Фильтрация вывода по имени пользователя (username) осуществляется вызовом опций -u или —userfilter=»regex» , как в примере ниже:

Чтобы отфильтровать выходные данные по имени процесса, включите опцию -P или —processfilter=»regex» :

Форматирование вывода может быть крайне полезным, поэтому smem предоставляет параметры, которые помогут вам форматировать отчеты об использовании памяти. Далее мы рассмотрим пару примеров.

Чтобы отображать в отчете только необходимые столбцы, используйте -c или –columns , как показано ниже:

Вы можете использовать параметр -p , чтобы выводить отчет об использовании памяти в процентном соотношении:

Следующая команда будет выводить итоговые показатели в конце каждого столбца выходных данных:

Кроме того, есть специальные опции для графических сводок, которые вы также можете использовать. В этой секции мы их и рассмотрим.

Вы можете создать гистограмму процессов и их PSS и RSS значений. В приведенном ниже примере мы создаем гистограмму процессов, принадлежащих пользователю root.

Вы имеете возможность создать круговую диаграмму, отражающую процессы и потребление памяти ими на основе PSS или RSS значений. Команда ниже выводит круговую диаграмму для процессов, принадлежащих пользователю root, отражающую ключевые значения.
— — pie означает метку по имени, а опция -s помогает сортировать по значению PSS.

Существует множество других полей помимо PSS и RSS, используемых для маркировки диаграмм.

Чтобы увидеть справку, просто введите smem -h или обратитесь к документации.

Сейчас мы остановимся в smem на этом этапе. Если вы хотите получше разобраться с этим инструментом, посетите страницу руководства.

Источник

Мониторинг потребления системных ресурсов Linux

Введение

Данные о системных ресурсах можно получить из виртуальных файлов в директории

1 18 21 31279 43 629 acpi kallsyms self 10 18349 22 32 44 659 asound kcore slabinfo 1051 18421 23 327 45 660 buddyinfo keys softirqs 1055 19 2375 33 46 662 bus key-users stat 11 19194 24 368 482 675 cgroups kmsg swaps 11527 19359 2400 369 4925 676 cmdline kpagecount sys 11529 19402 2402 379 499 680 consoles kpageflags sysrq-trigger 11532 19570 279 380 517 684 cpuinfo loadavg sysvipc 11762 19711 282 393 5677 686 crypto locks timer_list 11764 2 283 394 571 7 devices mdstat timer_stats 11765 20 284 395 575 8 diskstats meminfo tty 11818 20027 285 396 577 8413 dma misc uptime 11819 20182 2858 397 579 8419 driver modules version 13 20311 287 398 581 8790 execdomains mounts vmallocinfo 14 20374 289 399 583 8815 fb mtrr vmstat 14600 20415 291 4 5834 8817 filesystems net zoneinfo 15 20475 292 400 5836 9 fs pagetypeinfo 16 20518 29343 401 585 9214 interrupts partitions 1672 20712 2996 402 588 9250 iomem sched_debug 1694 20839 30 403 6 9251 ioports schedstat 17 20840 31 41 60 97 irq scsi

meminfo содержит информацию о памяти

MemTotal: 8009160 kB MemFree: 5474752 kB MemAvailable: 7043488 kB Buffers: 2108 kB Cached: 1830824 kB SwapCached: 0 kB Active: 1191552 kB Inactive: 907404 kB Active(anon): 310848 kB Inactive(anon): 45940 kB Active(file): 880704 kB Inactive(file): 861464 kB Unevictable: 0 kB Mlocked: 0 kB SwapTotal: 2097148 kB SwapFree: 2097148 kB …

Читайте также:  Линукс минт настройка рабочего стола

cpu содержит информацию о процессоре

processor : 0 vendor_id : GenuineIntel cpu family : 6 model : 142 model name : Intel(R) Core(TM) i7-10510U CPU @ 1.80GHz stepping : 12 cpu MHz : 2304.012 cache size : 8192 KB …

В Linux есть удобная программа top которая может в реальном времени показывать данные из этих виртуальных файлов, а также утилита free которая показывает свободные системные ресурсы.

В этом руководстве используются знания из следующих статей:

Мониторинг общего потребления памяти

Мониторить общее потребление памяти и процессора с помощью top

#!/bin/bash top -b | grep ‘%Cpu(s)\|KiB Mem’

Обратите внимание, на выдачу вашего top. В CentOS у вас может стоять по умолчанию KiB а в Ubuntu MiB

Если предполагается делать какие-то вычисления — нужно разобраться с тем, что же выдаёт top

top — 14:41:49 up 20:18, 2 users, load average: 0.51, 0.32, 0.22 Tasks: 386 total, 1 running, 385 sleeping, 0 stopped, 0 zombie %Cpu(s): 0.8 us, 1.0 sy, 0.0 ni, 98.0 id, 0.0 wa, 0.0 hi, 0.1 si, 0.0 st KiB Mem : 8008504 total, 4713352 free, 1021040 used, 2274112 buff/cache KiB Swap: 8257532 total, 8257532 free, 0 used. 6646096 avail Mem

Из руководства по top можно сделать следующие выводы:

  1. Использованная CPU это 100 минус значение id (idle)
  2. Использованная память это значение used в строке, которая начинается с KiB Mem
us, user time running un-niced user processes
sy, system time running kernel processes
ni, nice time running niced user processes
id, idle time spent in the kernel idle handler
wa, IO-wait time waiting for I/O completion
hi time spent servicing hardware interrupts
si time spent servicing software interrupts
st time stolen from this vm by the hypervisor

Исходя из этих соображений, можно воспользоваться sed , awk и bc чтобы вытащить из выдачи top нужные величины и вычислить расход ресурсов.

#!/bin/bash IDLE=$(top -b -n 1 | grep ‘%Cpu(s)’ | sed ‘s/id.*//;s/^.*\,//’) MEM=$(top -b -n 1 | grep ‘KiB Mem’ | awk ‘‘) CPU=$(echo «100-$IDLE» | bc -l) echo «$(date ‘+%Y-%m-%d %H:%M:%S.%3N’),$CPU, $MEM» >> log.txt

Комментарии к скрипту

  1. Строка 1: объявление bash скрипта
  2. Строка 2:
  3. Значение перед id нужно присвоить переменной IDLE
  4. top запускается в batch режиме (-b) один раз (-n 1)
  5. grep выделяет из выдачи top строку с %Cpu(s)
  6. Первое условие sed отбрасывается всё, что правее id, включая сам id
  7. Второе условие sed отбрасывает всё, что слева от последней запятой
  8. Строка 3:
  9. top запускается в batch режиме (-b) один раз (-n 1)
  10. awk находит нужный столбец
  11. Строка 4:
  12. bc помогает вычислить разность чисел
  13. Строка 5:
  14. Дата, расход ЦПУ и расход памяти записываются в log.txt

Потребление памяти отдельными процессами

Пример, скрипта, который в течении определённого количества секунд будет из показаний top выделять данные об использовании памяти и процессора несколькими определёнными процессами.

#!/bin/bash START=$(date +%s) DURATION=2 let COUNTER=$(date +%s)-$START while [ $COUNTER -lt $DURATION ]; do echo $(date ‘+Y-%m-%d %H:%M:%S,%3N’) >> log3.txt top -b -n 1 | grep ‘node\|postgres\|nginx’ | awk ‘‘ >> log.txt let COUNTER=$(date +%s)-$START done

По умолчанию top выводит столбцы в следующем порядке

PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND

Узнать количество свободной памяти можно с помощью команды free

total used free shared buff/cache available Mem: 32538152 7937972 19124512 423056 5475668 23841896 Swap: 2097148 0 2097148

Если совместить free с watch получится настоящий мониторинг

Every 2.0s: free -m Sun Jan 17 16:20:10 2021 total used free shared buff/cache available Mem: 7820 1121 4339 56 2359 6361 Swap: 8063 0 8063

Каждые две секунды значение будет обновляться

-h human readable format

Filesystem Size Used Avail Use% Mounted on devtmpfs 3.9G 0 3.9G 0% /dev tmpfs 3.9G 0 3.9G 0% /dev/shm tmpfs 3.9G 89M 3.8G 3% /run tmpfs 3.9G 0 3.9G 0% /sys/fs/cgroup /dev/mapper/centos-root 17G 9.1G 8.0G 54% / /dev/sda1 1014M 238M 777M 24% /boot tmpfs 783M 0 783M 0% /run/user/1000

Источник

Оцените статью