gpt4 book ai didi

linux - 跨 CPU 内核的 rdtsc 精度

转载 作者:IT老高 更新时间:2023-10-28 12:41:22 28 4
gpt4 key购买 nike

我从一个线程发送网络数据包,并在另一个 CPU 内核上运行的第二个线程接收回复。我的过程测量每个数据包的发送和接收之间的时间(类似于 ping)。我正在使用 rdtsc 来获得高分辨率、低开销的时序,这是我的实现所需要的。

所有测量结果看起来都很可靠。尽管如此,我还是担心跨内核的 rdtsc 准确性,因为我一直在阅读一些暗示 tsc 在内核之间不同步的文本。

我找到了以下关于 TSC in wikipedia 的信息

Constant TSC behavior ensures that the duration of each clock tick is uniform and supports the use of the TSC as a wall clock timer even if the processor core changes frequency. This is the architectural behavior moving forward for all Intel processors.

我仍然担心跨核心的准确性,这是我的问题

更多信息

  • 我在 Intel nehalem 机器上运行我的进程。
  • 操作系统是 Linux。
  • 为所有内核设置了“constant_tsc”cpu 标志。

最佳答案

X86_FEATURE_CONSTANT_TSC + X86_FEATURE_NONSTOP_TSC 位在 cpuid 中(edx=x80000007,位 #8;检查 Linux 内核的 unsynchronized_tsc function 以获得更多检查)

Intel 的 Designer 的 vol3b,第 16.11.1 节 Invariant TSC 它说如下

"16.11.1 Invariant TSC

The time stamp counter in newer processors may support an enhancement, referred to as invariant TSC. Processor's support for invariant TSC is indicated by CPUID.80000007H:EDX[8].

The invariant TSC will run at a constant rate in all ACPI P-, C-. and T-states. This is the architectural behavior moving forward. On processors with invariant TSC support, the OS may use the TSC for wall clock timer services (instead of ACPI or HPET timers). TSC reads are much more efficient and do not incur the overhead associated with a ring transition or access to a platform resource."

因此,如果 TSC 可用于挂钟,则可以保证它们是同步的。

关于linux - 跨 CPU 内核的 rdtsc 精度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3388134/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com