web-dev-qa-db-ja.com

メモリ使用量を監視するにはどうすればよいですか?

topを使用して、現在のメモリ使用量を確認しました。しかし、メモリの使用状況を一定期間監視したいと思います。たとえば、監視を開始してからいくつかのコマンドを実行し、最後に監視を停止して、期間中に使用されたメモリ量を確認します。

Ubuntu Serverでこれを行うにはどうすればよいですか?

5秒ごとにcronジョブを開始し、現在のメモリ使用量をテキストファイルに記録するコマンドを呼び出すことができると思います。しかし、現在のメモリ使用量をテキストファイルに簡単に記録できる形式で取得するには、どのコマンドを使用する必要がありますか?

260
Jonas

以前の回答を組み合わせることをお勧めします

watch -n 5 free -m

Linuxは ハードドライブブロックのキャッシュ に追加のメモリを使用することを好みます。したがって、無料のMemだけを見たくありません。 -/+ buffers/cache:行のfree列を確認します。これは、アプリケーションで使用可能なメモリ量を示します。だから私はfree -mを実行し、これを得た:

             total       used       free     shared    buffers     cached
Mem:          3699       2896        802          0        247       1120
-/+ buffers/cache:       1528       2170
Swap:         1905         62       1843

私は1528 MBを使用しており、2170 MBの空きがあることを知っています。

注:このwatchサイクルを停止するには、 Ctrl+C

321
Justin Force

htopが最善の解決策だと思います。

  • Sudo apt-get install htop

これにより、どのプログラムがほとんどのRAMを使用しているかがわかります。必要に応じて簡単に終了できます。これがスクリーンショットです!

210
Alvar

実行中の各プロセスで使用されるメモリのニースの内訳を探している場合、ps_mem.py(found here pixelbeat.orgで)。

上記のコメントで、freeからの1行のスナップショットが必要であると述べましたが、他の人がこれが役立つと思うかもしれません。

出力例:

user@system:~$ Sudo ps_mem.py
[Sudo] password for user:
 Private  +   Shared  =  RAM used       Program

  4.0 KiB +   7.5 KiB =  11.5 KiB       logger
  4.0 KiB +   8.0 KiB =  12.0 KiB       mysqld_safe
  4.0 KiB +  10.0 KiB =  14.0 KiB       getty
  4.0 KiB +  42.0 KiB =  46.0 KiB       saslauthd (5)
 48.0 KiB +  13.0 KiB =  61.0 KiB       init
 56.0 KiB +  27.5 KiB =  83.5 KiB       memcached
 84.0 KiB +  26.5 KiB = 110.5 KiB       cron
120.0 KiB +  50.0 KiB = 170.0 KiB       master
204.0 KiB + 107.5 KiB = 311.5 KiB       qmgr
396.0 KiB +  94.0 KiB = 490.0 KiB       tlsmgr
460.0 KiB +  65.0 KiB = 525.0 KiB       rsyslogd
384.0 KiB + 171.0 KiB = 555.0 KiB       Sudo
476.0 KiB +  83.0 KiB = 559.0 KiB       monit
568.0 KiB +  60.0 KiB = 628.0 KiB       freshclam
552.0 KiB + 259.5 KiB = 811.5 KiB       pickup
  1.1 MiB +  80.0 KiB =   1.2 MiB       bash
  1.4 MiB + 308.5 KiB =   1.7 MiB       fail2ban-server
888.0 KiB +   1.0 MiB =   1.9 MiB       sshd (3)
  1.9 MiB +  32.5 KiB =   1.9 MiB       munin-node
 13.1 MiB +  86.0 KiB =  13.2 MiB       mysqld
147.4 MiB +  36.5 MiB = 183.9 MiB       Apache2 (7)
---------------------------------
                        208.1 MiB
=================================

 Private  +   Shared  =  RAM used       Program

私が気に入らない唯一の部分は、スクリプトがルート特権を必要とすると主張するという事実です。なぜそうなのかを正確に知る機会はまだありません。

40
Jason Mock

free コマンドを使用します。たとえば、これはfree -mの出力です。

             total       used       free     shared    buffers     cached
Mem:          2012       1666        345          0        101        616
-/+ buffers/cache:        947       1064
Swap:         7624          0       7624

free -m | grep /+は2行目のみを返します。

-/+ buffers/cache:        947       1064
24
Isaiah

watch コマンドが役立つ場合があります。 watch -n 5 freeを試して、5秒ごとの更新でメモリ使用量を監視します。

11
mgunes

cat /proc/meminfoを使用して実行できます。

MemTotal:        4039160 kB
MemFree:          309796 kB
MemAvailable:    3001052 kB
Buffers:          345636 kB
Cached:          2341288 kB
SwapCached:            8 kB
Active:          1725160 kB
Inactive:        1551652 kB
Active(anon):     538404 kB
Inactive(anon):    70076 kB
Active(file):    1186756 kB
Inactive(file):  1481576 kB
Unevictable:          32 kB
Mlocked:              32 kB
SwapTotal:       4194300 kB
SwapFree:        4194044 kB
Dirty:                 0 kB
Writeback:             0 kB
AnonPages:        589988 kB
Mapped:           255972 kB
Shmem:             18596 kB
Slab:             374888 kB
SReclaimable:     310496 kB
SUnreclaim:        64392 kB
KernelStack:        6976 kB
PageTables:        26452 kB
NFS_Unstable:          0 kB
Bounce:                0 kB
WritebackTmp:          0 kB
CommitLimit:     6213880 kB
Committed_AS:    3589736 kB
VmallocTotal:   34359738367 kB
VmallocUsed:           0 kB
VmallocChunk:          0 kB
HardwareCorrupted:     0 kB
AnonHugePages:         0 kB
ShmemHugePages:        0 kB
ShmemPmdMapped:        0 kB
CmaTotal:              0 kB
CmaFree:               0 kB
HugePages_Total:       0
HugePages_Free:        0
HugePages_Rsvd:        0
HugePages_Surp:        0
Hugepagesize:       2048 kB
DirectMap4k:      147392 kB
DirectMap2M:     4046848 kB
7
Amir

全体のRAM使用量を視覚的に監視するために Byob を使用すると、端末の右下隅でメモリ使用量が維持され、任意の場所にいるときに実行されますターミナルセッション。

スクリーンショットからわかるように、私の仮想マシンは1h3mのアップタイム、0.00の負荷、2.8GHz(仮想)プロセッサ、およびシステムで利用可能な994MB(21%)のRAMを備えています。

Byobu in use

4
bafromca

単一行のソリューションと出力:

free -m | grep "Mem:"

予想される出力の例を次に示します。

Mem:           3944         652         302          18        2990        2930
3
Tim

メモリ使用量の監視

メモリ使用量を監視するための優れた方法としてCactiについて言及した前述の投稿の1つともっと一致しています。ただし、サボテンは主流ではもはや人気がないようであるため、Graphiteと呼ばれる代替のグラフ作成アプリケーションがあります。

Graphiteは、ubuntuサーバーに比較的簡単にインストールでき、インストールも簡単です このリンクをチェックしてください インストール手順に従うのが簡単です。

グラファイトがインストールされた後、任意の間隔でメモリメトリックを送信できます。 5秒ごと、1分ごと、1時間ごとなど。

以前の投稿で既に提案したように、メモリメトリックをグラフ化するには、システムツールを使用して必要なメモリ情報を収集する独自のスクリプトを作成します。または、事前に作成されたsnmpプラグインを使用して、すべての作業を実行できます。

独自のメモリスクリプトを記述したい場合は、使用済みメモリを計算する際にバッファメモリとキャッシュメモリを考慮するのが賢明です。そうしないと、誤ったデータを収集することになります。

代わりに必要なすべての計算をすでに実行しているsnmpプラグインを代わりに使用したい場合は、うまく機能するものへのリンクがあります: checkMemoryviaSNMP

SNMPの長所:

監視するすべてのリモートノードにsnmpがインストールされています。これにより、リモートノードにプラグインをコピーまたは配置することなく、1つの中央サーバーからすべてのシステムを監視できます

SNMPの短所:

メモリを監視したい各リモートノードにsnmp agentがインストールされていることを確認する必要があります。ただし、このインストールは1回限りです。ご使用の環境でシェフやパペットなどの自動化ツールまたは類似のツールを使用している場合、これはまったく問題ありません。

リモートノードのSNMPエージェントの構成:

Snmpエージェントをインストールしたら、単に/etc/snmpd/snmpd.confファイルをviにして、次の行を追加します。

rocommunity  (specify-a-community-string-aka-password-here)

次に、次を使用してsnmpdエージェントを再起動します。

/etc/init.d/snmpd restart

次に、中央サーバーで、代わりに他のすべてのサーバーを監視するために、次のコマンドを実行できます。

$ time ./checkMemoryviaSNMP -v2 public gearman001.phs.blah.com 30 90 graphite,10.10.10.10,2003,typical
WARNING: Used = [ 3.26154 GB ], Installed = [ 5.71509 GB ], PCT.Used = [ 57.069% ], Available.Memory = [ 2.00291 GB ]. Buffer = [ 137.594 MB ], Cached = [ 1.3849 GB ]. Thresholds: [ W=(30%) / C=(90%) ].  System Information = [ Linux gearman001.phs.blah.com 2.6.32-504.30.3.el6.x86_64 #1 SMP Thu Jul 9 15:20:47 EDT 2015 x86_64 ].

real    0m0.23s
user    0m0.03s
sys     0m0.02s
1
SimplisticSpeed

Cacti を使用します。これにより、一定期間のメモリ使用量などがグラフ化され、Webブラウザを使用して使用量を確認できます。

1
Matt