跨内核的纳秒时序?

时间:2011-12-08 22:21:27

标签: c linux unix kernel latency

我打算直接将一些软件写入FPGA网卡,以捕获传入的自定义网络数据包。

最终我相信我会将获得的数据发送到内核或用户应用程序。这是针对延迟关键的交易研究项目。

由于所需的准确度,我可以使用哪种纳秒计时仪器,以及我计算PCI-E网卡接收和内核接收之间的持续时间这一事实?

这将在Linux上,用C语言写的“驱动程序”代码(我可能会将用户应用程序置于此级别以减少延迟)。

3 个答案:

答案 0 :(得分:1)

在linux上访问CPU时钟滴答是通过tsc等效于Windows QueryPerformanceCOunter

答案 1 :(得分:1)

clock_gettime使用HPET(如果可用),它既简单又好又可靠。

如果HPET 可用,那么你无论如何都没有可靠的计时器,所以不幸的是clock_gettime的分辨率会更差,但这就是它的本质,并且没有你可以做很多事情。

任何其他来源,包括tsc,要么分辨率较低,要么不可靠或两者兼而有之。

答案 2 :(得分:0)

在软件中,每件事都发生在系统时钟的倍数上。我认为你可以使用任何时间测量函数来返回经过的时钟滴答数,clock()例如应该给你足够的准确度。