4

統計実行プロファイラーOProfileを使用してCアプリケーションのコールグラフプロファイルを視覚化すると、次の警告が複数回含まれます。警告は私にはかなり不可解です:

warning: dropping hyperspace sample at offset 1af9 >= 2be8 for binary /home/myuser/mybinary

私は次のようなXen仮想化環境でOProfileを使用しています:

modprobe oprofile timer=1
opcontrol --no-vmlinux
opcontrol --start
(wait for profiling data to accumulate)
opcontrol --stop
opreport --session-dir=/var/lib/oprofile --exclude-dependent --demangle=smart \
--symbols /home/myuser/mybinary --callgraph

最後のコマンドからの完全な出力は次のとおりです。

Overflow stats not available
CPU: CPU with timer interrupt, speed 0 MHz (estimated)
Profiling through timer interrupt
warning: dropping hyperspace sample at offset 84d0 >= 79a0 for binary /home/myuser/mybinary
warning: dropping hyperspace sample at offset 7ac0 >= 79a0 for binary /home/myuser/mybinary
warning: dropping hyperspace sample at offset 7d90 >= 79a0 for binary /home/myuser/mybinary
warning: dropping hyperspace sample at offset 7ac0 >= 79a0 for binary /home/myuser/mybinary
warning: dropping hyperspace sample at offset 7d90 >= 79a0 for binary /home/myuser/mybinary
warning: dropping hyperspace sample at offset 8210 >= 79a0 for binary /home/myuser/mybinary
samples  %        symbol name
-------------------------------------------------------------------------------

その後、もっともらしいコールグラフデータを印刷します。

「ハイパースペース」警告とはどういう意味ですか?何が原因ですか?プロファイリングの結果に影響しますか?どうすれば修正できますか?

4

1 に答える 1

5

Maynard Johnsonは、この警告をメーリングリストへのメッセージで説明しています。

特にサンプルレートが非常に高い場合、またはコールグラフプロファイリングを実行している場合(高いサンプルレートのようにコールグラフプロファイリングも結果として生じるため)、oprofileカーネルドライバーによって記録されたサンプルが間違ったバイナリに起因するように見える場合が報告されています。 oprofileカーネルドライバーの非常に高いオーバーヘッドとその内部サンプルバッファーのオーバーフロー)。それがあなたが遭遇していることだと思います。残念ながら、これは非常に陰湿なバグであり、根本的な原因をまだ見つけることができていません。カーネルドライバーはその内部バッファーのオーバーフローカウントを報告し、oprofiledログはそれらを出力します。便宜上、oprofile 0.9.5以降、opreportは、ゼロ以外のオーバーフローカウントを検出したときに警告を出力し、サンプリング間隔を短くすることを提案します。

/var/lib/oprofile/samples/oprofiled.logを調べて、上記のプロファイル実行のオーバーフロー統計を見つけることをお勧めします(ログエントリにはタイムスタンプが付けられます)。数パーセントまたはごくわずかなパーセンテージ(たとえば、3%未満)しか表示されない場合は、異常を無視することができます。一般に、この種のことを回避/制限するには、特にコールグラフのプロファイリングを行う場合は、実用的な最低のサンプリングレートでプロファイリングする必要があります。では、「実用的」とはどういう意味ですか?他のサンプルベースのプロファイラーと同様に、oprofileは本質的に統計的です。また、データポイントが多いほど、データに対する信頼性が高まります。したがって、100%の信頼性を得るには、(理論的には)カウント値が「1」のプロファイルを作成する必要があります。しかし、あまり実用的ではありません。実行されている作業のほとんどがサンプルの記録であるため、マシンがロックされているように見える場合があるためです。サイクルイベントプロファイリングの場合、おそらく数百万程度のカウント値を使用でき(今日のプロセッサでは)、それでもデータにかなり自信があります。他のイベントの場合、それは実際にそれらの発生頻度に依存します。

于 2012-03-17T23:57:11.037 に答える