4

C ++で記述され、Linuxで実行されている内部アプリケーションを調べるように依頼されましたが、いくつかの問題があります。定期的に大量の主要なページフォールト(〜200k)が発生し、壁掛け時計の実行時間が10倍以上増加しますが、一部の実行では発生しません。

コードのさまざまな部分を分離しようとしましたが、テスト時にページフォールトエラーを繰り返すのに苦労しています。

主要なページフォールトについて、アプリケーション/ Linuxからさらに情報を取得するための提案はありますか?私が持っているのは本当に合計です。

4

1 に答える 1

3

ホームページで次のように説明されているValgridを検討することをお勧めします。

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

具体的には、ValgrindにはMassifと呼ばれるツールが含まれており、そのための次の(言い換えられた)概要がマニュアルに記載されています。

Massifはヒーププロファイラーです。プログラムが使用するヒープメモリの量を測定します。[..]

ヒーププロファイリングは、プログラムが使用するメモリの量を減らすのに役立ちます。仮想メモリを備えた最新のマシンでは、これには次の利点があります。

  • それはあなたのプログラムをスピードアップすることができます-より小さなプログラムはあなたのマシンのキャッシュとより良く相互作用し、ページングを避けます。

  • プログラムが大量のメモリを使用する場合、マシンのスワップスペースを使い果たす可能性が低くなります。

于 2010-11-24T16:42:06.390 に答える