【发布时间】:2011-03-24 05:18:11
【问题描述】:
我从一个线程发送网络数据包,并在另一个 CPU 内核上运行的第二个线程接收回复。我的过程测量每个数据包的发送和接收之间的时间(类似于 ping)。我正在使用 rdtsc 来获得高分辨率、低开销的时序,这是我的实现所需要的。
所有测量结果看起来都很可靠。尽管如此,我还是担心跨内核的 rdtsc 准确性,因为我一直在阅读一些暗示 tsc 在内核之间不同步的文本。
我找到了关于TSC in wikipedia的以下信息
恒定的 TSC 行为确保 每个时钟滴答的持续时间是 统一并支持使用 TSC 作为挂钟定时器,即使 处理器内核改变频率。这 建筑行为是否在移动 转发所有英特尔处理器。
我仍然担心跨核心的准确性,这是我的问题
更多信息
- 我在 Intel nehalem 机器上运行我的进程。
- 操作系统是 Linux。
- 为所有内核设置了“constant_tsc”cpu 标志。
【问题讨论】:
-
您考虑过使用 HPET 吗?
-
我不知道 HPET。我刚刚读到它,它似乎是一种高精度计时器(基于中断)而不是时钟。我需要能够根据需要读取高分辨率时钟(例如:网络数据包到达时)