2017-06-02 47 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/

相關問題