我正在从一个线程发送网络数据包,并在运行在不同 CPU 内核上的第二个线程上接收回复。我的过程测量每个数据包的发送和接收之间的时间(类似于 ping)。我正在使用 rdtsc 来获得高分辨率、低开销的时序,这是我的实现所需要的。
所有的测量看起来都很可靠。尽管如此,我还是担心跨内核的 rdtsc 准确性,因为我一直在阅读一些暗示 tsc 在内核之间不同步的文本。
我在维基百科中找到了以下关于TSC 的信息
恒定的 TSC 行为确保每个时钟滴答的持续时间是一致的,并支持将 TSC 用作挂钟计时器,即使处理器内核改变频率。这是面向所有英特尔处理器的架构行为。
我仍然担心跨核心的准确性,这是我的问题
更多信息
- 我在 Intel nehalem 机器上运行我的进程。
- 操作系统是Linux。
- 为所有内核设置了“ constant_tsc ” cpu 标志。