2017-06-02 45 views
0

我有一台配有两个PCIe RS-485卡的Linux机器(XR17V354 & XR17V352)。我将其中一个卡上的一个端口硬连线到另一个卡上的一个端口。这些卡由通用串行驱动程序(serial8250)驱动。如何测量硬件中断和相关系统调用之间的延迟?

我正在运行测试和测量延迟。我有一个Linux进程从端口发送两个字节,然后侦听两个传入的字节。另一个进程接收两个字节并立即发回两个字节。

我正在测量这个往返延迟约为1500微秒,标准偏差约为40微秒。我试图了解这种延迟的来源。具体来说,我想了解一下硬件IRQ触发信号数据的准备时间以及字节提供给用户空间进程的时间差异。

我知道ftrace功能,但我不确定如何最好地利用它,或者如果有其他更合适的工具。谢谢。

回答

0

这是什么样的驱动程序?我认为它是内核空间中的驱动程序,而不是UIO。 独立于您的问题,您可以开始查看从硬件中断到内核驱动程序以及从那里到用户空间需要多长时间。

这里[1]是一些古老的测试用例,它可以被黑客入侵,因此您可以将中断延迟与“标准”Linux,抢占补丁Linux以及Xenomai等进行比较(尽管Xenomai解决方案需要你重写你的驱动程序)。

你可能想看看[2],cyclictest和朋友,也许试着用perf进行钻取以查看系统范围内的更多细节。

最后但并非最不重要的看看LTTng [3],它使您能够测试代码,并且它已经有很多测试点。

[1] http://www.denx.de/wiki/DULG/AN2008_03_Xenomai_gpioirqbench

[2] http://cgit.openembedded.org/openembedded-core/tree/meta/recipes-rt/rt-tests/

[3] http://lttng.org/

相关问题