あるスレッドからネットワーク パケットを送信し、別の CPU コアで実行される 2 番目のスレッドで応答を受信しています。私のプロセスは、各パケットの送信と受信の間の時間を測定します (ping と同様)。rdtsc を使用して、実装に必要な高解像度、低オーバーヘッドのタイミングを取得しています。
すべての測定値は信頼できるように見えます。それでも、tsc がコア間で同期されていないことを示唆するテキストを読んでいるので、コア間の rdtsc の精度が心配です。
ウィキペディアでTSCに関する次の情報を見つけました
一定の TSC 動作により、各クロック ティックの持続時間が一定になり、プロセッサ コアの周波数が変化した場合でも TSC をウォール クロック タイマーとして使用できるようになります。これは、すべての Intel プロセッサで前進するアーキテクチャ上の動作です。
それでもコア全体の精度が心配です。これが私の質問です
より詳しい情報
- Intel nehalem マシンでプロセスを実行しています。
- オペレーティング システムは Linux です。
- すべてのコアに対して「constant_tsc 」CPU フラグが設定されます。