量化延时法时间测量_「交易技术前沿」交易系统低延时测试与分析
本文選自 《交易技術前沿》總第三十三期文章(2018年12月)
證券期貨行業測試中心(中金所) 魏暢 陳冬嚴 張鴻曄
摘要:訂單延時(Latency)是衡量交易系統性能的重要指標。本文利用交換機端口流量鏡像功能(Port Mirroring)和低延時交換機產生的納秒級時間戳,實現了高精度的交易系統逐筆訂單延時測量。通過分析逐筆訂單延時數據,驗證了交易系統性能微笑曲線,獲得了交易系統的最佳表現區間(舒適區),同時也對比了逐筆訂單延時與現有日志采樣方案的優勢。
關鍵詞:低延時交換機;時間戳;交易系統;逐筆訂單延時
1 前言
證券期貨交易系統具有交易時間相對集中、交易指令和數據密集的特點,對交易系統處理速度具有很高的要求[1]。近年來,全球各大交易所都在不斷對交易系統升級改造,其中“低延時”成為各大交易所競爭的核心[2]。幾所典型國外交易所交易系統性能數據如表1[3]所示,可見交易系統延時競爭已經進入微秒量級。目前,國內交易所交易系統延時性能與國外頂級交易系統還存在一定的差距,需要進一步加大投入進行研發、建設。在建設“低延時”交易系統過程中,也就必然少不了對交易系統“低延時”性能的測試。
2 方案介紹
交易系統延時有多種維度定義,參照Cinobber 公司白皮書[4],定義端到端(End-to-end)、門到門(Door-to-door)、撮合器(Business logic)三個延時指標,參見圖1。對于交易所,重點關注的是門到門(Door-to-door)延時指標,以及整個門到門鏈路上的分段延時指標,分段延時指標不是本文討論的重點,故不做具體講解、分析。后文涉及的交易延時指標,如果不作具體說明,都是指門到門(Door-to-door)延時指標。交易延時指報單進入交易前置,經交易系統處理,返回交易系統接入點的總時長。交易延時反映了交易系統處理報單的速度,延時越小,訂單處理越快,性能越好。
2.1 軟件時間打戳
軟件時間打戳通常采用嵌入式時間統計代碼或者基于Weblogic等中間件記錄時間戳。該方案實施簡單,缺點也很明顯,比如精度差,會增加系統負擔從而增加系統延時波動幅度等。目前,很多交易所通過在交易系統中直接加入探針,對交易指令進行采樣計算延時,通過系統日志輸出,從而得到訂單延時。但是,通過該方法獲得延時存在一些問題,比如:時間戳取自服務器,導致精度無法滿足測量需求;只能獲得少量采樣訂單延時,具有一定的偶然性,不能完全反映采樣周期內全部訂單延時性能。因此,無法滿足交易系統“低延時”性能測試的需求。
2.2 硬件時間打戳
硬件時間打戳顧名思義是利用硬件打時間戳,目前主流網絡流量采集、打時間戳和分析的解決方案有三種:交換機打時間戳、專用采集卡打時間戳、網卡打時間戳。
2.2.1 交換機打時間戳
交換機打時間戳方法是在網絡包通過交換機時采用SPAN技術(交換機端口鏡像方法)將網絡包實時異步鏡像至可以打精準時間戳的交換機,然后將帶有時間戳的網絡數據轉發給分析服務器,網絡拓撲圖如圖3所示。該方案優點是部署簡單、靈活,對現有拓撲結構和系統環境影響小[5];缺點是成本高,需要特定低延時交換機支持,比如Cisco Nexus 3548交換機就是典型的帶硬件時間戳的低延時交換機。
2.2.2 專用采集卡打時間戳
專用采集卡打時間戳方法直接將專用網絡采集卡部署在分析服務器上,交換機將網絡包鏡像至采集卡后,由采集卡完成打時間戳和解包分析等工作,網絡拓撲圖如圖4所示。該方案的優點是部署簡單,可容納吞吐量大,能夠實時分析和觀測;其缺點是需要綁定廠商的采集卡,通用性不強,擴展性較差,受到廠商限制[5]。
2.2.3 網卡打時間戳
該方案使用專用網卡打時間戳并旁路路由至分析服務器,網絡拓撲圖如圖5所示。優點在于更精確的應用延時分析(除去了網絡延時),但是也存在每臺主機必須部署專用網卡、多網卡間需PTP精確對時等問題[5]。
綜上所述,幾種延時度量方法優缺點比較,參見表2。
我司對項目需求進行詳細分析,包括擬度量的網絡和業務時間段,度量所需的技術和難度,對現有系統的影響大小,項目成本,以及項目后續可能存在的需求,結合上述方案的比較,最終選擇了交換機打戳的方案。該方案結合我們的應用場景,有如下優點:
1) 高精度,如采用超低延時交換機,精度可提高1-2個數量級;
2) 逐筆測量,而現有監控系統/性能測試的結果采集采用日志采樣方式獲取;
3) 旁路測量,對交易系統無侵入;
4) 通過訂單的關聯,可以實現前置以及撮合核心的分段延時統計。
3 方案實施
通過上節的對比,本次交易系統低延時測試最終確定為交換機打戳方案。
3.1 部署架構
網絡拓撲圖如圖6所示,客戶端為壓力服務器,用其進行報單發壓力;交易前置是外界連接交易的“窗口”,客戶端通過交易前置連接交易系統;交易核心是交易系統最重要的部分,用來處理客戶訂單;交易總線交換機是一臺萬兆交換機,負責客戶端、交易前置以及交易核心三臺服務器之間的數據交換;延時度量交換機選擇的是Cisco Nexus 3548,將交易總線交換機鏡像過來的數據打上高精度時間戳,然后分發給分析服務器;通過分析服務器上的應用程序對數據進行解析、處理,實現訂單的逐筆追蹤以及各個節點的延時度量。
客戶端、交易前置、交易核心以及分析服務器四臺服務器硬件配置,參見表3。
3.2 數據流向
訂單數據流如圖7所示,客戶端、交易前置以及交易核心通過交易總線傳輸交易數據。
1) 客戶端申報訂單首先進入交易前置,再到交易核心,交易核心處理完畢后,再將訂單的處理結果信息發送至前置。
2) 部署的另外一臺延時度量交換機,它將交易總線上的交易數據打上精準時間戳,然后轉發至分析服務器上。
3) 分析服務器上部署了用于解析交易數據包的應用程序,從而實現訂單的逐筆追蹤以及各個節點的延時度量。
4 測試案例與結果分析
本節共進行兩個案例的測試與分析:1)尋找交易系統最佳表現區間;2)對比采樣方式和逐筆方式的結果差異。本文數據都已做了脫敏處理,不代表真實結果。
4.1 最佳表現區間
交易系統存在一個舒適區,即延時最佳表現是一個區間。當報單速率從小到大遞增的過程中,交易系統由冷變熱,由熱變燙,交易系統的延時也由大變小,再由小變大。
測試方法:用報單工具在某一合約下以同一價格重復報“買賣開平”單,所有訂單均被成交,且價格無變化。報單速率從1筆/秒逐步上升至20k筆/秒,逐筆延時數據采用穩定報單后60秒的報單數據。
根據獲取的不同報單速度下的延時數據,繪制相應速度下的交易系統延時帕累托圖,如圖8、圖9所示。根據圖8、圖9可以看出,在測試環境下,交易系統延時最佳表現在1k筆/秒的報單速率下。
根據獲取的不同報單速率下的延時數據,繪制各報單速率下的交易系統延時分位圖,如圖10。從圖10中可以看出,在測試環境下,交易系統的最佳表現區間如表4所示。從表4中可知,報單速度在100筆/秒~3k筆/秒時,符合三種分位數要求,表現最優。
4.2 與采樣方式對比
采樣方式獲取延時存在一些問題,但以往都是從定性方面來分析,本案例將從定量方面來比較采樣方式和逐筆方式的結果差異,證明采樣方式的局限性。
測試方法:用報單工具在某一合約下以同一價格重復報“買賣開平”單,所有訂單均被成交,且價格無變化。報單速率保持在10k筆/秒,逐筆延時數據采用穩定報單后60秒的報單數據;采樣數據選取該段時間對應的Syslog里面的延時數據。
根據獲取的逐筆延時數據和采樣數據,繪制相應交易系統延時帕累托圖,如圖11。根據圖11可以看出,測試環境中,在10K筆/秒報單速度下,通過Syslog獲取到的采樣數據顯著比逐筆的數據要小,特別是延時小于100us時,延時越大,差距越大,表示采樣數據失真度越大。
根據獲取的逐筆延時數據和采樣數據,繪制相應交易前置延時分布分位圖,如圖12。根據圖12可以看出,50分位下,Syslog采樣數據比逐筆數據小10us;99分位下的數據要小55us。
根據獲取的逐筆延時數據和采樣數據,統計分析得到小于200us和小于210us的數據占比如表5所示。從表中可以看出,通過采樣方式獲取到毛刺數據不全,在10K筆/秒報單速率下,采樣得到的最大延時在200us以內,遺漏了1%左右的大于200us的訂單。
4.3 結論
根據前面兩個案例,可以得到以下三點結論:
1) 交易系統存在一個最佳報單速率,此速率下系統延時狀況最佳;
2) 根據對交易系統不同的延時要求,存在不同最佳表現區間,要求越嚴格,最佳表現區間范圍越小;
3) 采樣數據和逐筆數據對比,存在失真的情況,因此只能用來粗略了解系統運行狀況;想要全面掌握系統運行狀態,需要通過逐筆數據來觀測。
5 展望
本文在多種延時度量方案中選擇了一種相對較好的方案,針對交易系統進行了兩個案例的低延時測試,獲得了一些測試結果。雖然該項工作是圍繞交易系統進行的,但是該方法具有一定的普適性。同時,本次測試是在測試環境下進行的,絕對數據存在一定的失真,希望以后能在生產環境進行嘗試,獲取更加真實的數據給開發運維同事提供一定的參考。
參考文獻
[1]徐廣斌, 武劍鋒, 白碩. 低延時證券交易系統關鍵技術研究[J]. 計算機工程, 2011, 37(18):28-31.
[2]楊明秋. 論全球證券交易系統七大發展趨勢[J]. 世界經濟研究, 2010(11):31-38.
[3]徐廣斌. 高效率證券市場基礎架構研究[J]. 交易技術前言 201506:4-10.
[4].Cinober 公司. A Cinnober white paper on: latency. 2009
[5]章慶. 使用交換機度量系統超低延時的實踐[J]. 測試技術與質量管理 201706:58-62.
總結
以上是生活随笔為你收集整理的量化延时法时间测量_「交易技术前沿」交易系统低延时测试与分析的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: js list添加元素_JS基础与常用函
- 下一篇: 需要使用新应用以打开此steam链接_s