マルチコアプロセッサでマイクロベンチマークを実行する方法を探しています。
コンテクスト:
ほぼ同時に、デスクトッププロセッサは、パフォーマンスの予測を困難にするアウトオブオーダー実行を導入しましたが、偶然ではないかもしれませんが、非常に正確なタイミングを取得するための特別な命令も導入しました。これらの手順の例はrdtsc
、x86およびrftb
PowerPCにあります。これらの指示により、システムコールで許可されるよりも正確なタイミングが得られ、プログラマーは、良くも悪くも、自分の心をマイクロベンチマークすることができました。
いくつかのコアを備えたさらに最新のプロセッサでは、一部はスリープ状態になることがあり、カウンタはコア間で同期されません。rdtsc
ベンチマークに使用するのはもはや安全ではないと言われていますが、代替ソリューションについて説明されたとき、私は居眠りをしていたに違いありません。
質問:
一部のシステムでは、パフォーマンスカウンターを保存および復元し、適切な合計を読み取るためのAPI呼び出しを提供する場合があります。この呼び出しがオペレーティングシステムに対して何であるかを知っている場合は、回答でお知らせください。
一部のシステムでは、コアをオフにして、1つだけを実行したままにすることができます。Mac OS X Leopardは、開発者ツールから適切な設定ペインがインストールされている場合に機能することを知っています。rdtsc
これで安全に再利用できると思いますか?
その他のコンテキスト:
マイクロベンチマークを実行しようとするときに、自分が何をしているのかを知っていると仮定してください。アプリケーション全体のタイミングで最適化のゲインを測定できない場合は、最適化する価値がないという意見がある場合は、同意しますが、
代替データ構造が完成するまで、アプリケーション全体の時間を計ることができません。これには長い時間がかかります。実際、マイクロベンチマークが有望でない場合は、今すぐ実装をあきらめることにすることができます。
締め切りを管理できない出版物で提供する数字が必要です。