web-dev-qa-db-ja.com

メモリ使用量のロギングを可能にするツールはありますか?

プロセスのメモリ使用量を監視し、このデータをログに記録したい。そのようなツールは存在しますか?

18
tshepang

私は これを正確に行うスクリプト と書きました。基本的に、特定のプロセスのプロファイルを作成するために、特定の間隔でpsをサンプリングします。プロセスは、監視ツール自体によって起動することも、独立したプロセス(pidまたはコマンドパターンで指定)にすることもできます。

8
Jeet

sarSystem Activity Reportersysstat パッケージのパッケージは、このような場合に便利です。

別の方法は、履歴データと組み合わせて監視することです。 Munin、pnp4nagios、rrdtools、...

7
Christian

前述のsarに加えて、 atop をお勧めします。後で閲覧できるバイナリログが保存され、メモリ以外にも多くの情報が保存されます。

4
rsuarez

Valgrind を試すことができます。

Valgrindは、動的分析ツールを構築するための計測フレームワークです。多くのメモリ管理とスレッド化のバグを自動的に検出し、プログラムを詳細にプロファイリングできるValgrindツールがあります。 Valgrindを使用して新しいツールを構築することもできます。

Valgrindディストリビューションには現在、6つの本番品質のツールが含まれています:メモリエラー検出器、2つのスレッドエラー検出器、キャッシュおよび分岐予測プロファイラー、呼び出しグラフ生成キャッシュとブランチ予測プロファイラー、およびヒーププロファイラー

2
andcoz

私はSridharの単純な答えが好きですが、彼を試す前に自分で答えました。

_import json, psutil, datetime, time

with open('log.txt', 'w') as f:
  while True:
    json.dump((datetime.datetime.now().isoformat(),
               psutil.Process(7274).memory_info()._asdict()), f)
    f.write('\n')
    f.flush()
    time.sleep(1)
_

基本的に、構造化された出力が必要な場合にのみ役立ちます。必要に応じて7274を変更します。また、Python 3.5。何かが壊れた_asdict()なので、Python 2。

出力ファイルは次のようになります。

_["2019-03-19T11:21:53.784670", {"rss": 220389376, "vms": 538984448, "shared": 15724544, "text": 303104, "lib": 0, "data": 221364224, "dirty": 0}]
["2019-03-19T11:21:54.786136", {"rss": 220438528, "vms": 539119616, "shared": 15724544, "text": 303104, "lib": 0, "data": 221499392, "dirty": 0}]
["2019-03-19T11:21:55.787555", {"rss": 220495872, "vms": 539119616, "shared": 15724544, "text": 303104, "lib": 0, "data": 221499392, "dirty": 0}]
["2019-03-19T11:21:56.788754", {"rss": 220528640, "vms": 539119616, "shared": 15724544, "text": 303104, "lib": 0, "data": 221499392, "dirty": 0}]
_
0
Robert Fleming