プロセスのメモリ使用量を監視し、このデータをログに記録したい。そのようなツールは存在しますか?
プロセスのメモリ使用量を監視し、このデータをログに記録したい。そのようなツールは存在しますか?
回答:
私は書かれているまさにこれを行うためのスクリプトを。基本的ps
に特定の間隔でサンプリングし、特定のプロセスのプロファイルを作成します。プロセスは、監視ツール自体で起動することも、独立したプロセス(pidまたはコマンドパターンで指定)にすることもできます。
sar
sysstatパッケージの(System Activity Reporter)は、このような場合の友達です。
別の方法は、Munin、pnp4nagios、rrdtoolsなどの履歴データと組み合わせて監視することです。
sar
1つのプロセスだけに焦点を合わせることができますか?ほとんどの場合、システム全体を監視するようです
pidstat
、sysstatパッケージのコマンドは、単一プロセスの統計をレポートするための非常に優れたインターフェイスを提供します。
Valgrindを試すことができます。
Valgrindは、動的分析ツールを構築するための計測フレームワークです。多くのメモリ管理とスレッドのバグを自動的に検出し、プログラムを詳細にプロファイリングできるValgrindツールがあります。Valgrindを使用して新しいツールを構築することもできます。
現在Valgrindディストリビューションには、メモリエラー検出器、2つのスレッドエラー検出器、キャッシュおよび分岐予測プロファイラー、コールグラフ生成キャッシュおよび分岐予測プロファイラー、ヒーププロファイラーの 6つの生産品質ツールが含まれています。
私はスリダールの単純な答えが好きですが、私は彼を試す前に自分のものを転がしました:
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.somethingが壊れた_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}]