1

gprof関数ごとに、プログラムの実行中に費やされた時間を計算するために使用 しています。

先週、CPU 使用率が 100% に達したとき、プログラムを起動することさえできないことに気付きました。

  • コードはほぼ 1 日実行されましたが、何も変わりませんでした。
  • 場合によっては CPU 使用率が 100% に達するのは避けられません。特に、システムに負荷をかけ、最大限のリソースを使用している間にプログラムをテストしたい場合は、" stress" ツールを使用します: http://weather.ou .edu/~apw/projects/stress/

私はスレッドを読みました:

gprof の代替

Mike Dunlavey の回答を読んでください。

それほど局所化されていない問題はどうですか? それらは問題ではありませんか?主張されていない gprof に期待しないでください。これは単なる測定ツールであり、CPU バウンド操作専用です。

また、スコアが高かったノーマン・ラムジーの応答:

Valgrind has an instruction-count profiler with a very nice visualizer called KCacheGrind. As Mike Dunlavey recommends, Valgrind counts the fraction of instructions for which a procedure is live on the stack, although I'm sorry to say it appears to become confused in the presence of mutual recursion. But the visualizer is very nice and light years ahead of gprof.

しかし、スレッドが閉鎖されているため、非建設的であるため、これが良い方向性であるかどうか疑問に思っていました

前もって感謝します

PS Google検索を使用しているときに、次のような質問をしたときに関連するものが見つかりませんでした

「CPU が 100% に達したときに gprof が機能しない理由」

前もって感謝します

4

1 に答える 1

1

100% とは、ハングしており、I/O を実行していないことを意味します。

で実行するとプログラムがハングすると言っていますが、gprofそうでない場合はそうではありませんか?

それは奇妙ですが、私はわざわざそれを理解しようとはしません。

何度も言っきたように、いくつかのスタック サンプルを手動で取得します。次に、任意のルーチンで使用される時間の割合は、多かれ少なかれ、それが表示されるサンプルの一部に過ぎません。高精度の測定が必要だと思われる場合は、ZoomOProfileなどのスタック サンプラーを試してください。

于 2013-06-04T12:11:04.893 に答える