システム管理者であれ、Linuxのデスクトップ・バージョンを使っている単なるユーザーであれ、あるプロセスがシステムのメモリを使い切っていることに気づいたことがあるでしょう。
freeコマンドを実行した後、出力が正しく読めないという報告をユーザーから複数受けました。要するに、もしLinuxカーネルが原因なら、心配しないでください。カーネルがメモリを使い、ファイルをキャッシュしているのです。
Linuxカーネル開発者は、ファイルをキャッシュし、プロセスが必要としたときにメモリ領域を解放する優れたアルゴリズムを見つける能力は、あなたや私よりも高いので、このようなコマンドを実行するタスクをスケジュールされたタスクに入れるように私に頼まないでください:
echo 3 > /proc/sys/vm/drop_caches
もちろん、その後、システム上の空きメモリは増えますが、システムはディスクからすべてのファイルを再読み込みしなければならないので、パフォーマンスに関する限り、通常は悪い動きです:
しかし今のところ、どのプロセス/ユーザーがシステムのメモリを大量に消費しているかを見つけるのに役立つ、気の利いたプログラムを見る価値はあります。
ツール mem は、Linux システムのメモリ消費に関する数多くのレポートを提供します。既存のツールとは異なり、mem は実際に使用されている物理メモリをレポートすることができます。これは、仮想メモリシステム内のライブラリやアプリケーションによってどれだけのメモリが使用されているかを示す、より有意義な指標となります。
ほとんどの物理メモリは通常、複数のアプリケーション間で共有されているため、Actual Physical Memory Usedと呼ばれる標準的なメモリ消費量の測定は、メモリ消費量を大幅に過大評価することになります。PSS
memには多くの機能的な特徴があります:
- システムプロファイルのリスト
- プロセス、マッピング、ユーザー別のリスト
- ユーザー、マップ、またはユーザーによるフィルタリング
- 複数のデータソースから設定可能なカラム
- 設定可能な出力単位とパーセンテージ
- 設定可能な見出しと合計
- procからのアクティビティデータの読み込み
- ディレクトリイメージまたは圧縮パッケージファイルからのデータスナップショットの読み込み
- 組込みシステム用軽量キャプチャツール
- 内蔵チャート生成
取付
Debian、Ubuntu、Mintを使っている場合は、以下のコマンドを使って公式リポジトリから直接memをインストールできます:
$ sudo apt-get install smem
Arch Linux ユーザーは Arch User Software Library からパッケージをインストールすることができます。
Red Hat / Fedora / CentOS / SuSEユーザーは、公式ウェブサイトから直接ダウンロードしたコンパイル済みバイナリコードを使用できます。便利なように、これらのコマンドをコピーしてカット・アンド・ペーストすると、/usr/local/bin フォルダに smen コマンドが配置されます:
cd /tmp/
wget http://..com/smem/download/smem-...gz
tar xvf smem-1.3.tar.gz
sudo cp /tmp/smem-1.3/smem /usr/local/bin/
sudo chmod +x /usr/local/bin/smem
基本的な使い方
smemは物理メモリ使用量を報告し、共有メモリページを考慮します。非共有メモリは、そのプロセスだけが占有する物理メモリとして報告されます。共有メモリは、そのメモリを共有する複数のプロセス間で均等に分割されます。非共有メモリとプロセスの共有メモリの割合は、実際に使用された物理メモリとして報告されます。ディスクに退避されたメモリは含まれません。
基本的な使い方では、実行中のプロセスの数と、それらが使用しているメモリの量が表示されます。これがどのようなものかを見るには、memコマンドをオプションなしで実行すると、次のような出力が得られます:
つまり、この例では、より多くのメモリを消費するプロセスはFirefoxで、2番目にメモリを消費するプロセスはThunderbirdです。
uは、各ユーザーが消費するメモリの総量を表示する便利なオプションです:
このコマンドに-pを追加すると、パーセント値が表示されます:
また、システム全体のメモリ使用量を見たい場合は、-wオプションを使います:
wといえば、さらに-R REALMEMという物理メモリ量を示すオプションを使うことをお勧めします。これにより、mem はシステム全体の出力から、ファームウェア/ハードウェアが使用しているメモリ量を知ることができます。また、このオプションが提供されている場合は、使用されている総メモリサイズのパーセンテージとして使用することもできます。
smenを使ったLinuxメモリのグラフィカル表示
mem(これもmatplotlibライブラリがあります)の助けを借りて、棒グラフや円グラフを生成することができます。
pss "と "uss "の列を持つ棒グラフを表示します:
#smem --bar pid -c "pss uss"
実行中のシステムで「k」で始まるプロセスを示す円グラフを作成してください:
#smem -P '^k' --pie=name
結語
smemは使いやすいツールで、メモリを大量に消費するプロセスを探しているときに、役に立つ情報を簡単に得ることができ、それをグラフィカルに表示することも簡単です。
# smem
PID User Command Swap USS PSS RSS
....
4223 linuxaria /usr/lib/chromium-browser/c 0 9144 11696 29132
14280 root python ./smem 0 11580 11839 13680
2180 linuxaria /usr/bin/python /usr/share/ 0 12956 14691 24392
2144 linuxaria python /usr/lib/linuxmint/m 0 20252 22337 35648
2121 linuxaria Thunar --daemon 0 13316 23122 44404
2123 linuxaria xfdesktop 0 24004 24924 36032
13095 linuxaria /usr/lib/chromium-browser/c 0 27536 30996 53328
2577 linuxaria /usr/bin/python /usr/lib/ub 0 34192 35112 41300
2127 linuxaria /home/riccio/copy/x86_64/Co 0 40268 41081 52248
10720 linuxaria /usr/lib/chromium-browser/c 0 38684 42107 63928
10561 linuxaria /usr/lib/chromium-browser/c 0 43956 48137 71644
10579 linuxaria /usr/lib/chromium-browser/c 0 46276 50290 73484
5605 linuxaria transmission-gtk /tmp/[kick 0 48616 51508 65148
8938 linuxaria /usr/lib/firefox/plugin-con 0 48960 55428 71132
2186 linuxaria /home/linuxaria/.dropbox-dist/ 0 55524 56061 64820
1722 root /usr/bin/X :0 -audit 0 -aut 0 52360 73110 96008
10623 linuxaria /usr/lib/chromium-browser/c 0 114224 121888 149236
4171 linuxaria chromium-browser --disable- 0 131044 140415 165780
7050 linuxaria /usr/lib/thunderbird/thunde 0 253428 256803 273152
2644 linuxaria /usr/lib/firefox/firefox 0 528420 537423 #smem -u
User Count Swap USS PSS RSS
daemon 1 0 196 197 368
rtkit 1 0 300 312 1396
nobody 1 0 428 442 1600
mdm 2 0 600 695 1808
avahi 2 0 568 806 2420
syslog 1 0 1032 1043 1884
messagebus 1 0 1124 1207 2048
root 40 0 96568 123002 203372
linuxaria 83 0 1539864 1640378 #smem -u -p
User Count Swap USS PSS RSS
daemon 1 0.00% 0.00% 0.00% 0.00%
rtkit 1 0.00% 0.00% 0.00% 0.02%
nobody 1 0.00% 0.01% 0.01% 0.02%
mdm 2 0.00% 0.01% 0.01% 0.02%
avahi 2 0.00% 0.01% 0.01% 0.03%
syslog 1 0.00% 0.01% 0.01% 0.02%
messagebus 1 0.00% 0.01% 0.01% 0.03%
root 40 0.00% 1.18% 1.47% 2.41%
linuxaria 83 0.00% 19.29% 20.48% 27.58%#smem -w -p
Area Used Cache Noncache
firmware/hardware 0.00% 0.00% 0.00%
kernel image 0.00% 0.00% 0.00%
kernel dynamic memory 64.55% 62.42% 2.13%
userspace memory 22.12% 3.00% 19.12%
free memory 13.33% 13.33% 0.00%#smem -R 8G -w -p
Area Used Cache Noncache
firmware/hardware 2.83% 0.00% 2.83%
kernel image 0.00% 0.00% 0.00%
kernel dynamic memory 63.02% 60.95% 2.07%
userspace memory 21.60% 2.91% 18.68%
free memory 12.56% 12.56% 0.00%



