[ps_mem] プログラムごとのメモリ使用量を調べるps_memの使い方

ps_memプログラムごとのメモリ使用量を表示するツールです。
https://github.com/pixelb/ps_mem
プロセスが使用するメモリは、psコマンドなどでも確認することができます。ps_memの特徴は、プログラムごとに利用しているメモリ使用量を表示してくれることです。httpdのプリフォークモデルのように多数の子プロセスがフォークされているプログラムのメモリ使用量をまとめて把握したい場合などに利用できます。また、privatesharedのメモリ使用量を分けて表示してくれるので、そのプログラムだけが専有しているメモリ(private)を簡単に把握することができます。
※以降の実行例は、Ubuntu17.10で確認しています。

1. インストール方法

ps_memはPythonで作成されています。pipコマンドでインストールすることができます。

pip install ps_mem

virtualenvで仮想環境を作成して、インストールをしてみます。

$ virtualenv ps_mem
...
Installing setuptools, pip, wheel...done.
$ cd ps_mem
$ source bin/activate
(ps_mem) $
(ps_mem) $ pip install ps_mem
Collecting ps_mem
Installing collected packages: ps-mem
Successfully installed ps-mem-3.6

2. 実行方法

ps_mem [option]...
オプション 説明
-h, --help ヘルプを表示します。
-p pid[,pid2,…pidN] 指定したPIDのプログラムだけ表示します。
-s, --split-args プログラムののコマンドライン引数を全て表示します。デフォルトではプログラム名のみ表示します。
-t, --total 総合計のみ表示します。プログラムごとのメモリ使用量は表示しません。
-w N N秒間隔で表示を行います。

ps_memの実行にはroot権限が必要です。

(ps_mem) $ ps_mem
Sorry, root permission required.

今回は、virtualenv環境にps_memをインストールしたので、sudoの実行パスでvirtualenvのパスを指定して起動します。

(ps_mem) $ sudo /your/virtualenv/directory/ps_mem/bin/ps_mem
 Private  +   Shared  =  RAM used       Program

128.0 KiB +  66.0 KiB = 194.0 KiB       atopacctd
232.0 KiB + 132.5 KiB = 364.5 KiB       atd
320.0 KiB + 108.0 KiB = 428.0 KiB       agetty
336.0 KiB + 228.5 KiB = 564.5 KiB       cron
452.0 KiB + 197.5 KiB = 649.5 KiB       lvmetad
612.0 KiB +  80.5 KiB = 692.5 KiB       lxcfs
820.0 KiB +  99.0 KiB = 919.0 KiB       apps.plugin
648.0 KiB + 661.5 KiB =   1.3 MiB       systemd-timesyncd
  1.2 MiB + 166.0 KiB =   1.4 MiB       systemd-udevd
  1.1 MiB + 328.5 KiB =   1.4 MiB       sudo
908.0 KiB + 707.0 KiB =   1.6 MiB       systemd-resolved
  1.5 MiB + 336.5 KiB =   1.8 MiB       dbus-daemon
  1.7 MiB + 127.0 KiB =   1.8 MiB       rsyslogd
  1.0 MiB + 940.0 KiB =   1.9 MiB       systemd-logind [updated]
  2.0 MiB + 431.5 KiB =   2.4 MiB       (sd-pam)
  1.5 MiB +   1.2 MiB =   2.7 MiB       bash (2)
  2.2 MiB + 820.0 KiB =   3.0 MiB       iscsid (2)
  1.7 MiB +   1.4 MiB =   3.1 MiB       systemd [updated]
  3.4 MiB + 891.0 KiB =   4.3 MiB       systemd
  4.7 MiB + 656.0 KiB =   5.4 MiB       systemd-journald
  5.1 MiB + 468.5 KiB =   5.6 MiB       atop
  1.8 MiB +   3.8 MiB =   5.6 MiB       sshd (3)
  6.8 MiB + 524.0 KiB =   7.4 MiB       snmpd
 17.0 MiB +  70.0 KiB =  17.1 MiB       snapd
 33.3 MiB + 619.5 KiB =  33.9 MiB       netdata
---------------------------------
                        105.4 MiB
=================================

bashやsshdなど復数のプロセスが起動しているプログラムも1つにまとめて表示してくれます。プログラム名の後の()内の数値は、起動しているプロセス数です。
 
以上、プログラムごとのメモリ使用量を調べるps_memの使い方の紹介でした。