如何精確測量該系統?
首頁 > 公司 > 新聞 > 如何精確測量該系統?
高頻交易者在系統延遲方面的競爭已經達到了10微秒以下的水平,更進一步,對訊息包傳輸時間的追求也達到了納秒級。當你寫出/設計出這套系統時,你完成了一項激動人心的傑作,準備在戰場上大顯身手。你是否曾想過,你設計的這些「武器」真的能夠經得起市場的殘酷考驗?事實上,大多數時候,戰場會因為你不了解自己手中的「武器」究竟是什麼,以及它的真實表現而將你擊倒。這絕非一位訓練有素的程式設計師所樂見的結局。
如何確保你設計的系統在投入生產前功能完善、有效率運作?如何確認你製造的武器值得信賴?其實並不難。你需要的是一套精準的測試框架和測試方法。
高頻交易公司在延遲測量方面通常遇到的問題是:
- 計量單位不夠精確。
- 如何在不干擾主系統資源的情況下進行測量?
- 如何選擇測試工具?
在程式碼中插入日誌記錄時間戳記來計算延遲是一種很常見的做法。
這種方法在開發初期是可行的,可以幫助開發者評估程式碼的有效性,但是,由於作業系統中時間戳的準確性值得懷疑,因此它並不是實現精確測量的好方法。此外,如果將時間戳資訊插入軟體程式中,則必然會與軟體共享資源,進而影響主程式的效能,例如 CPU 快取。
由於系統抖動、程式錯誤或作業系統本身的準確性等多種因素的影響,作業系統層面的時間戳很可能不準確。為了獲得準確可靠的時間戳,您可以遵循以下幾個關鍵點:
- 充分利用硬體時間戳功能,許多品牌網路卡提供此功能,例如 Solarflare、Exablaze ExaNIC[1]。
- 為了不影響主程式的資源,使用一個獨立的主機來收集時間戳資料包,並根據接收到的資料包計算延遲。
- 測試行為,甚至資料包的長度,都應該盡可能地與生產環境保持一致。
如何建構用於測量延遲的環境?
案例1:測量主機上資料包輸入/輸出所花費的時間。
如圖 1 所示,光纖分路器用於將傳入和傳出的封包分別傳送給測試物件和 TS 分析主機(時間戳分析器)。光纖分路器不會造成效能延遲,因此 TS 主機接收的資料包與測試物件的傳入/傳出資料包幾乎相同,TS 主機可以透過擷取的資料包計算出時間差。
TS主機必須配備具有時間戳功能的網路卡。通常,程式設計師會使用程式來記錄時間戳,但這裡不建議這樣做,因為這種方法會導致時間戳失真且計量單位不足。本文介紹的這種結構可以有效地避免對被測對象造成乾擾。

案例2:從同一結構測量網卡性能。
類似的架構也可用於網卡效能測試。在這種架構下,作業系統幾乎不做任何操作,最多只是將接收到的資料包傳送到目標位址。被測網卡必須安裝在被測主機上。

案例3:高頻交易業者通常使用什麼品牌的設備?
NIC[2]:Solarflare、Exablaze、ExaNIC、Mellanox
交換器:思科 N3K、ExaLINK Fusion、Arista 7130 一級交換機
[1] [1] Exablaze 現在是 Cisco 的一部分,產品名稱為:Nexus X10、Nexus X25、Nexus X40、Nexus X100。
[2] 一些高頻交易公司使用 FPGA 進行延遲測量,因為 FPGA 可以實現最佳精度,但是 FPGA 設計的門檻更高,這就是為什麼我們在本文中使用 NIC 的原因。








