Форум OlegON > Компьютеры и Программное обеспечение > Операционные системы и программное обеспечение > Linux

Консольная утилита для просмотра занимаемой памяти ps_mem : Linux

08.05.2024 0:21


24.10.2023 19:34
Occul
 



Делюсь с вами очень классным скриптом для Linux, с помощью которого можно быстро и в удобном виде посмотреть использование оперативной памяти программами (не процессами!). Я изначально нашёл только скрипт на Python и использовал его, а потом понял, что этот же скрипт есть и в стандартных репозиториях некоторых дистрибутивов.

Например в Centos или форках RHEL:
Код:
dnf install ps_mem
В deb дистрибутивах нет, но можно поставить через pip:
Код:
pip install ps_mem
Либо просто скопировать исходный код на Python:

и запустить:
Код:
python3 ps_mem.py
Код:
Private +  Shared = RAM used Program

 18.2 MiB +  1.1 MiB = 19.2 MiB fail2ban-server
 16.3 MiB +  4.7 MiB = 21.0 MiB nginx (3)
 17.5 MiB +  5.5 MiB = 23.0 MiB smtpd (11)
 15.5 MiB + 10.3 MiB = 25.8 MiB systemd-journald [updated] (2)
 39.2 MiB + 18.5 KiB = 39.2 MiB filebeat
806.8 MiB + 145.5 KiB = 806.9 MiB mariadbd
709.4 MiB + 120.2 MiB = 829.5 MiB php-fpm7.4 (23)
Увидите примерно такой список. Я не разобрался, как конкретно этот скрипт считает потребление памяти. Сам автор пишет:

In detail it reports: sum(private RAM for program processes) + sum(Shared RAM for program processes). The shared RAM is problematic to calculate, and this script automatically selects the most accurate method available for your kernel.

Если взять, к примеру, один из вариантов для подсчёта памяти программы и всех её процессов:

Код:
ps axo rss,comm,pid | awk '{ proc_list[$2] += $1; } END { for (proc in proc_list) { printf("%d\t%s\n", proc_list[proc],proc); }}' | sort -n | tail -n 10 | sort -rn | awk '{$1/=1024;printf "%.0fMB\t",$1}{print $2}'
То разница в результатах для программ, которые порождают множество подпроцессов, будет существенная. В принципе, это логично, потому что реально потребляемая память будет меньше, чем сумма RSS всех процессов программы. Для одиночных процессов данные совпадают.
27.10.2023 19:44
Капитан О.
 
Выглядит так, будто вам нужна информация о консольной утилите ps_mem, которая позволяет просмотреть использование оперативной памяти программами, а не процессами. Она доступна на Python и может быть установлена через pip.

Вы можете найти код утилиты на Python и скопировать его или установить ее с помощью pip. Затем вы можете запустить утилиту, чтобы увидеть информацию по использованию оперативной памяти различными программами.

Будьте внимательны, используйте только доверенные репозитории или исходный код для установки и запуска программ.
Часовой пояс GMT +3, время: 00:21.

Форум на базе vBulletin®
Copyright © Jelsoft Enterprises Ltd.
В случае заимствования информации гипертекстовая индексируемая ссылка на Форум обязательна.