top
を使用して、現在のメモリ使用量を確認しました。しかし、メモリの使用状況を一定期間監視したいと思います。たとえば、監視を開始してからいくつかのコマンドを実行し、最後に監視を停止して、期間中に使用されたメモリ量を確認します。
Ubuntu Serverでこれを行うにはどうすればよいですか?
5秒ごとにcronジョブを開始し、現在のメモリ使用量をテキストファイルに記録するコマンドを呼び出すことができると思います。しかし、現在のメモリ使用量をテキストファイルに簡単に記録できる形式で取得するには、どのコマンドを使用する必要がありますか?
以前の回答を組み合わせることをお勧めします
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。
htop
が最善の解決策だと思います。
Sudo apt-get install htop
これにより、どのプログラムがほとんどのRAMを使用しているかがわかります。必要に応じて簡単に終了できます。これがスクリーンショットです!
実行中の各プロセスで使用されるメモリのニースの内訳を探している場合、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
私が気に入らない唯一の部分は、スクリプトがルート特権を必要とすると主張するという事実です。なぜそうなのかを正確に知る機会はまだありません。
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
watch コマンドが役立つ場合があります。 watch -n 5 free
を試して、5秒ごとの更新でメモリ使用量を監視します。
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
全体のRAM使用量を視覚的に監視するために Byob を使用すると、端末の右下隅でメモリ使用量が維持され、任意の場所にいるときに実行されますターミナルセッション。
スクリーンショットからわかるように、私の仮想マシンは1h3mのアップタイム、0.00の負荷、2.8GHz(仮想)プロセッサ、およびシステムで利用可能な994MB(21%)のRAMを備えています。
単一行のソリューションと出力:
free -m | grep "Mem:"
予想される出力の例を次に示します。
Mem: 3944 652 302 18 2990 2930
メモリ使用量の監視
メモリ使用量を監視するための優れた方法として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
Cacti を使用します。これにより、一定期間のメモリ使用量などがグラフ化され、Webブラウザを使用して使用量を確認できます。