問題タブ [massif]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
valgrind - Valgrind Massif ツール出力グラフィカル インターフェイス?
Valgrind 3.3.1 とMassifツールを使用して C++ アプリケーションのヒープをプロファイルしていますが、テキスト出力ファイル ファイルを調べるためのグラフィカル ツールがあるかどうか疑問に思っています。
提案をありがとう。
memory - valgrindを使用したパイプコマンドのメモリ使用量の追跡
私が書いたツールを実行しているいくつかのプロセスがパイプで結合されており、それらの収集されたメモリ使用量をで測定したいと思いますvalgrind
。これまでのところ、私は次のようなことを試しました:
ここmyProcesses.script
で、私のツールに相当するものをfoo
2回実行します。例:
Valgrindは、私が期待する方法で、これの収集されたメモリ使用量をキャプチャしていないようです。これを追跡するために使用する場合top
、(議論のために)最初に10%のメモリ使用量を取得し、次に、完了する前にfoo
別の10%が2番目に収集します。これは私が測定したい種類のものです:両方のプロセスの使用量。代わりに、Valgrindは次のエラーを返します。foo
myProcesses.script
パイプ方式で(を使用して)使用しているコマンドのメモリ使用量データを収集する方法はありますvalgrind
か?または、これらの測定を正確に自動化するために使用できる同様のツールですか?
ポーリング中に返される数値はtop
、私には手に負えないように見えます。私は正確で再現性のある測定値を求めています。代替ツールの提案があれば、それらも歓迎します。
編集valgrind
-オプション付きのタイプミスを修正しました。
編集2-何らかの理由で、このオプション--pages-as-heap
は、テストしているバイナリに問題を引き起こしているようです。あなたの例はうまくいきます。インライン化されていない関数を入力するたびに、新しいページが作成されます(スタックオーバーフロー-heh)。それらを数えたかったのですが、テストしているメモリ使用量の規模では比較的小さいものです。(またはに関数呼び出しがない可能性がありますls
かless
?)削除--pages-as-heap
すると、テストが再び機能するようになりました。多大な支援をしてくれたMrGomezに感謝します。
c - Massif ツールはマルチスレッド アプリケーションで正しく動作しますか?
実行時に大量のメモリを割り当てるように見えるマルチスレッド アプリケーションを開発しています。すべてのメモリは実行の最後に解放されるため、valgrind はメモリ リークを示しません。何が起こっているのかを調べるためにmassifツールを使用しようとしましたが、ms_printはメインスレッドに関する情報しか表示しないようです。ただし、メモリの大部分は子スレッドに割り当てられていると思います。Massif にそれらに関する情報を表示させることは可能ですか?
valgrind - valgrind ツール スイートの動作
サンプルのデーモン プログラムで valgrind を実行しました。親は 1000B のチャンクを割り当てた後に終了しますが、バックグラウンドで実行される子は、2 秒ごとに malloc を介してヒープに 200B のメモリを割り当て続けます。
私の質問は次のとおりです。valgrind は実際のプロセッサでプログラムを実行しますか、それとも合成 CPU で実行しますか?
実際のヒープまたは存在しない合成 RAm にメモリを割り当てますか?
プログラムをかなり長時間実行させたので、子供はヒープに2GBのメモリを割り当てました。massif でプログラムを実装すると、親の出力ファイルが 1 つ得られ、デーモン プロセスを強制終了すると、別の massif.out が得られました。ヒープ上のメモリの割り当てを示した子の場合。
memory - 「killed 9」であるプロセスでmassifを使用する
メモリを大量に消費し、OS (FreeBSD) によってシグナル 9 で強制終了されるプログラムのメモリ プロファイリングを実行しようとしています。これは特定のデータで発生するため、別の (より小さな) データセットでプロファイリングしてもあまり役に立ちません。プログラムが強制終了されると、massif はまったく出力を生成しません。この状況でメモリのプロファイリングを行うにはどうすればよいでしょうか?
c++ - Valgrind の massif ツールがアプリケーションをプロファイリングしない
CentOS リポジトリの標準 gcc 4.4 パッケージを使用して、64 ビット CentOS 5.8 で静的にリンクされた 64 ビット C++ アプリケーションを開発しています。予想以上にメモリを使用しているように見えるので、massif を使用してメモリ使用量をプロファイリングしてみました。デバッグ情報をコンパイルして実行しました
valgrind --tool=massif ./MyProg
MyProg が存在するディレクトリから。次の massif.out.XXXX の例以外の結果は生成されません。
これはファイルの内容全体であり、私のプログラムは何分間も実行できることに注意してください。
valgrind と massif にさまざまなオプションを試しましたが、役に立ちませんでした。念のため、MyProg への絶対パスを使用してみました。valgrind の最新の安定バージョン (3.8.1) をダウンロードしてコンパイルして実行しようとしましたが (CentOS は 3.5.0 を使用しているため)、同じ結果が得られました。健全性チェックとして実行しました
valgrind --tool=massif ls -l
また、予想どおり、ゼロ以外のメモリ使用量で複数のスナップショットを作成しました。
考えられるあらゆるキーワードの組み合わせを使用してオンラインで検索してみましたが、同様の問題は見つかりませんでした。
余談ですが、valgrind のデフォルトの memcheck ツールを使用して、アプリケーションのプロファイルを正常に作成できます。これが役立つ情報である場合に備えてです。
massif がアプリケーションのプロファイリングに失敗する理由を知っている人はいますか?
profiling - valgrind massif が関数名やコード参照を報告しないのはなぜですか?
予想外に大量のヒープ (約 3GB) を使用しているプログラムがあります。すべてのヒープメモリにまだ到達可能であると主張して、リークがないことを報告した valgrind memcheck を実行しました。
そこで、デバッグ オプションを使用してすべてのライブラリを再構築し、valgrind massif を介してプログラムを実行しました。私は Valgrind-3.8.1 を使用しています。これは、今日ダウンロードして自分のボックスにビルドしたばかりです。コマンドラインは次のとおりです。
Valgrind はエラーや警告を生成しませんでした。結果の出力ファイルは、割り当てられたすべてのメモリを報告していますが、大規模な割り当てのすべてのスタック トレースは、関数名またはコードの場所を特定できません。たとえば、次のようになります。
私は今少し立ち往生しています。私が構築したライブラリで実際にデバッグが有効になっていないかどうか疑問に思いましたが、gdb でコードを実行すると、すべてのデバッグ情報が含まれているように見えます。また、コードからの関数名と場所を識別する massif 出力には、他にもいくつかの (はるかに小さい) メモリ割り当ての結果があります。
これらの結果は、システムまたは外部ライブラリのスタック トレースを示していますか? だから情報がないの?これらの割り当てを追跡する方法を誰か提案できますか?
c++ - massif と top のメモリ使用量の違い
オブジェクトが使用しているメモリの量を追跡しています。オブジェクトをインスタンス化して削除するだけの簡単なプログラムがあります。
massif の出力を見るか、仮想メモリを上から見ると、まったく異なる結果が得られます。あなたはなにか考えはありますか?top を使用するときはcin >> a
、プログラムを一時停止するためだけに a を追加しました。
c++ - Windowsでメモリ割り当てを担当するコードの場所を見つける方法
400MB のヒープを使用する C++ アプリケーションがあり、その割り当てに最も貢献した cpp ファイル/行番号を知りたいです。
Linux では、この目的のために Massif をうまく使用しました。
メモリ リークを検出する方法を知りたいわけではありません。これらの割り当てはすべて到達可能です。