2021年11月1日 星期一

tspubtm 壓測工具

tspubtm 壓測工具的測試模型, 如下:

tspubtm(send)  ---tcp-->  MDC ---tcp-->  tspubtm(recv)

 ※ tspubtm(send) /  tspubtm(recv) 須為同設備

      為了更精確的計算時差, 採用主機時間戳記


測試流程, 如下:

1. tspubtm(recv) 先啟動並連到 MDC, 以及訂閱行情

    連線訂閱完成後, 會在無收取壓測資料 5秒後, 列表數據

2. tspubtm(send) 於 1. 啟動後的連線都完成後, 以及5秒退出前

    開始發行假行情, 並且列表所發行的數量與耗時


參數與畫面 說明:  以下假設 MDC IP 在本機 127.0.0.1 若為跨機, 需修改



tspubtm(send)

例1:  模擬發行 50 商品, 1個成交, 伴隨4個委託簿, 委託簿深度5
         每 10000us(10ms) 發行一次, 重複 50
         因此總發行量為 50 * (1+4) * 50 = 12,500 筆
          ./tspubtm S 127.0.0.1 50 1 4 5 10000 50 
         ※ 發行有權限問題, 因此無法指定 Port 統一走 9888, 因此跨機測試防火要注意

例2:  模擬發行 100 商品, 1個成交, 伴隨4個委託簿, 委託簿深度5
         每 1000us(1ms) 發行一次, 重複 100
         因此總發行量為 100 * (1+4) * 100 = 50,000 筆
          ./tspubtm S 127.0.0.1 100 1 4 5 1000 100 
         ※ 使用此例, 要小心, mdc 預設保護上限 20,480 很容易發生, 而使測試失真


Publish L1+L2: 表示總筆數 5萬筆


tspubtm(recv)

例1: 模擬 10 個連線, 訂閱 50 個商品(L1+L2)
          ./tspubtm R 127.0.0.1:443 10 50 

例2: 模擬 50 個連線, 訂閱 100 個商品(L1+L2)
          ./tspubtm R 127.0.0.1:443 50 100 

 
Sess[#] 表示連線號
L1(max: 最大延遲us   min: 最小延遲us   avg:平均延遲us)
L2(max: 最大延遲us   min: 最小延遲us   avg:平均延遲us)
( Drop 數(非0表示有保護發動) / 合併封包表頭數量 / 總傳輸量(bytes))


這些數據, 還會因以下參數, 而有效率上的起伏
所以在調校時, 您可以調整 mdctsd 的參數, 來最佳化
TS.CompressLength 壓縮
TS.PacketLimitCount 行情包保護上限
TS.SplitProcessL2  L2 是否合併 L1 發行
TS.SendBufferKb  socket 底層的傳送緩衝區



tspubtm 壓測工具

tspubtm 壓測工具的測試模型, 如下: tspubtm(send)  ---tcp-->  MDC ---tcp-->  tspubtm(recv)  ※ tspubtm(send) /  tspubtm(recv) 須為同設備       為了更精確的計算時差...