プログラムのパフォーマンスについて、Ubuntu10.10マシン上の複数のソースからプログラムでデータを収集しようとしています。他のすべてのソースについては、RDTSC x86命令を使用してそれらを収集し、gettimeofdayを使用してそれらをスケーリングして、絶対時間の秒に変換することができました。ただし、これらのデータソースを/ sys / kernel / debug / traceingでsched_switchトレースを実行する出力と調整しようとすると、問題が発生します。これは、表示されている出力が不明な時間から数秒とマイクロ秒であるためです。
すでに行った手順:
1。Linuxカーネルも内部でRDTSCを使用していると判断しましたが、収集したオフセットを追加しましたが、取得する機能がないようです。これはコアごとにも行われます。つまり、4つのコアすべてを試して、最適なコアを決定する必要があります。これは、この問題の解決策としては不十分なようです。
2.ロギングをオンにしてRDTSC時間を変換して、少なくとも変換自体が一貫しているかどうか(つまり、一定のオフセットがあるかどうか)を確認しましたが、実行中はスケールが一定に保たれていないようです。
3. clock_gettime(CLOCK_MONOTONIC、...)は非常によく似た値を持っているように見えますが、常に例外のない量(約0.5秒)ずれており、完全に一貫しているようにも見えません。
他のデータソースが時間を収集する方法を必要なものに変更できる場合(パフォーマンスを重視しない場合)、トレースの時間と収集する時間の間で調整するために、どのように時間を収集する必要がありますか?出力をRDTSCに変更する何らかの方法があるので、それを使用できますか、それとも、トレースに出力されているものと同じ時間を取得するために実行できるシステムコールがありますか?助けてくれてありがとう。