Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 那么,tsc的时间戳不是timeval?_Linux_Sockets_Network Programming - Fatal编程技术网

Linux 那么,tsc的时间戳不是timeval?

Linux 那么,tsc的时间戳不是timeval?,linux,sockets,network-programming,Linux,Sockets,Network Programming,从中可以看出,可以使用SO_TIMESTAMP和setsockopt来 测量Linux内核将接收到的网络数据包转交给用户空间所需的时间 这里对该功能有很好的描述: 在内核收到数据包时,有没有办法读取tsc而不是timeval 它是特定于平台的 TSC可以在某些(P4时代)处理器上更改频率,并且在历史上没有在内核之间进行同步(一些现代CPU在同一封装中的内核之间进行同步) 理想情况下,您希望数据包无论如何都由网卡加上时间戳;通常需要这样才能达到其目标精度 最合理的要求是CLOCK\u MONO

从中可以看出,可以使用
SO_TIMESTAMP
setsockopt
来 测量Linux内核将接收到的网络数据包转交给用户空间所需的时间

这里对该功能有很好的描述:

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

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

最合理的要求是
CLOCK\u MONOTONIC
时基中的
struct timespec
。我认为它不存在,但添加起来也不太困难。

如果您采集了很多样本,您的准确度将低于美国标准。