私はUbuntu 10.10マシン上の複数のソースからプログラムのパフォーマンスについてプログラム的にデータを収集しようとしています。他のすべてのソースについて、私はRDTSC x86命令を使ってそれらを集め、gettimeofdayを使って絶対時間で秒に変換することができました。しかし、これらのデータソースと、/ sys/kernel/debug/tracingでのsched_switchトレースの出力を調整しようとすると、何か不明な時間から、私が見ている出力は秒とマイクロ秒です。/sys/kernel/debug/tracing from Ubuntu
手順私は既に行っています:
1. Linuxカーネルは内部的にRDTSCも使用していると判断しましたが、収集するオフセットを追加しましたが、取り出せる能力がないようです。これはコア単位でも行います。つまり、4つのコアすべてを試して、最適なものを決定しなければならないということです。これは、この問題の解決策のように思われます。
2.少なくとも変換自体が一貫しているかどうか(つまり一定のオフセットがあるかどうか)を確認するため、RDTSCの変換を試みましたが、スケールは実行中一定ではないようです。
3. clock_gettime(CLOCK_MONOTONIC、...)は非常によく似た値を持つようですが、常に不安定な量(約0.5秒)で消えてしまいます。
他のデータソースが必要なものに時間を集める方法を変更することができれば、トレースの時間と収集している時間を調整するために時間を収集する必要があります?出力をRDTSCに変更する方法はありますか?それでは、それを使うことができますか、または出力するものと同じ時間を得るためのシステムコールがありますか?助けを前にありがとう。
ここでの問題はRDTSCではなく、実際には数秒の間に数マイクロ秒の精度でそれを得ることができました。ソースコードを見た後、ログの時刻は実際にはRDTSCに基づいているので、これは問題ではありません。 –