3

从套接字手册页中可以看出,可以使用SO_TIMESTAMPwithsetsockopt来测量 Linux 内核将接收到的网络数据包交给用户空间所花费的时间。

这里有一个很好的描述这个功能:测量内核和用户空间之间的 Linux 网络堆栈的延迟

有没有办法在内核收到数据包时读取tsc而不是读取?timeval

4

1 回答 1

1

不。

  • 它是特定于平台的。
  • TSC 可以在某些(P4 时代)处理器上改变频率,并且在历史上没有在内核之间同步(一些现代 CPU 在同一封装中的内核之间进行同步)。
  • 理想情况下,无论如何您都希望数据包由网卡加上时间戳;PTP通常需要这样才能实现其目标精度。

您可以合理要求的最多是struct timespecCLOCK_MONOTONIC基。我不认为它存在,但添加它不会太难。

于 2013-03-07T04:47:32.593 回答