blog

Linuxターミナル:memでメモリ使用量を表示する

あなたがシステム管理者であろうと、Linuxのデスクトップバージョンを使っている単なるユーザーであろうと、あるプロセスがあなたのシステムのメモリを使い切っていることに気づいたことがあるでしょう。しかし...

May 3, 2016 · 6 min. read
シェア

システム管理者であれ、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%
Read next

オープンソースの夢を実現するための6つの必須スキル

この記事は、オープンソース・プロジェクトで働く学生に対するAtwoodのアドバイスをまとめたもので、オープンソースの世界で頑張りたいと思っている求職者の励みになることを願っています。

May 3, 2016 · 3 min read