картина
Всем привет, меня зовут Лян Сюй.
Сегодня я поделюсь с вами артефактом управления памятью в системе Linux: smem.
smemЭто инструмент командной строки, который может генерировать различные отчеты о потреблении памяти в системах Linux. В отличие от существующих инструментов, он smemможет сообщать PSS [Proportional Set Size (размер пропорционального набора)], что является более значимым показателем. Может измерять объем памяти, используемый библиотеками и приложениями системы виртуальной памяти.
Поскольку большая часть физической памяти часто совместно используется несколькими приложениями, эта стандартная метрика потребления памяти, называемая Размер резидентного набора (RSS), сильно завышает потребление памяти. Параметр PSS вместо этого измеряет «справедливое распределение» каждого приложения в каждой области общей памяти, давая реалистичную оценку.

1. Установите инструмент smem

Если вы используете Fedora 19+, она smem  по умолчанию находится в репозитории, поэтому вы yumможете :
$ sudo yum установить smem
Для пользователей Ubuntu его можно установить с помощью apt-getкоманды   smem:
$ sudo apt-get установить smem
Если его невозможно установить обычным образом, вы можете загрузить исходный код и установить его напрямую по адресу: https://www.selenic.com/smem/download/.

2. Обычное использование инструмента smem

По умолчанию smem  будут отображаться каждый запущенный процесс и используемая память. Здесь вы можете заметить размер RSS по сравнению с USS и PSS, и вы можете видеть, что он значительно выше, чем у двух других.
$смем
картина
Кроме того, smem  можно отобразить память, используемую каждой библиотекой. Этот результат долго и может занять некоторое время, в зависимости от вашей системы.
$ смем -м
Эта команда дает слишком много результатов. Если мы хотим увидеть использование памяти определенным приложением, например Firefox, мы можем использовать его с grepкомандой и использовать -pпараметр для просмотра использования памяти в процентах.
$ smem -m -p | grep firefox
картина
smem  Команда также может отображать использование памяти каждым пользователем с помощью опции:-u
$ смем -у -р
картина
Вы также можете использовать -wпараметр просмотра использования системной памяти:
$ smem -w -p
картина

3. Вывод визуализации результата

В конце концов, отображение чисел не является интуитивно понятным, мы также можем использовать smemего для создания графических диаграмм, чтобы с первого взгляда показать использование памяти. Чтобы достичь этого, нам нужно использовать Python, который может делать все, кроме отсутствия потомков.
Но одного Python недостаточно, нужно еще установить matplotlibбиблиотеку .
Пользователи Fedora могут установить его, запустив:
$ sudo yum установить python-matplotlib
Пользователи Ubuntu могут получить его, запустив:
$ sudo apt-get установить python-matplotlib
После установки библиотеки теперь можно визуализировать достигнутое использование памяти в виде гистограммы или круговой диаграммы.

3.1 Круговая диаграмма

Используйте smemдля просмотра использования памяти в виде круговой диаграммы со --pieследующим параметром:
$ smem --имя пирога -s pss
После запуска команды будет создана круговая диаграмма. Обратите внимание, что мы также добавили эту команду, чтобы -s pssпоказать использование памяти PSS. Чтобы получить круговую диаграмму для USS и RSS, просто замените pss на uss или rss в команде.
картина
картина
На двух круговых диаграммах видно, что RSS сообщает о 41,74% неиспользуемой памяти, а PSS сообщает о 53,02% неиспользуемой памяти. Видно, что доступная память, отображаемая RSS, относительно невелика, но на самом деле памяти достаточно.

3.2 Гистограмма

smem  Еще одна интересная особенность заключается в том, что он выдает результат в виде гистограммы. С помощью этой функции вы можете просматривать данные об использовании памяти, сообщаемые USS, PSS и RSS, за один раз.
Чтобы реализовать эту функцию, вам нужно добавить --barопцию :
$ smem --bar pid -c  "pss uss rss"
Приведенная выше команда выдаст информацию об использовании памяти с идентификационным номером процесса. Если вы хотите увидеть имя процесса, вы можете pidзаменить его на name.
После запуска команды можно создать гистограмму, показанную на следующем рисунке.
картина


Все посты в этом официальном аккаунте организованы в каталог. Пожалуйста, ответьте на " m " в официальном аккаунте, чтобы получить его!

Рекомендуемое чтение:

Объяснение сленга Linux: что такое upstream и downstream?

Резюме знаний по оптимизации ввода-вывода, которые должны знать фоновые разработчики Linux

Нечеткие запросы MySQL больше не нуждаются в +%!


Технические ресурсы 5T освобождены! Включая, но не ограничиваясь: C/C++, Linux, Python, Java, PHP, искусственный интеллект, микроконтроллер, Raspberry Pi и т. д. Ответьте на " 1024 " в официальном аккаунте, чтобы получить его бесплатно!