高頻交易系統影響的因素很多,其中時延是影響交易速度最大的因素,而時延由很多環節影響,比如線路傳輸延遲,交易伺服器為了降低傳輸一般都部署在交易所附近的機房,有條件甚至跟交易所伺服器部署在同機房。而下單的延遲是底層IO,作業系統,任務排程,應用軟體演算法造成的。而傳統實時作業系統,網口收發資料處於核心態,透過中斷跟網口通訊,核心態到使用者態切換通訊都需要資料複製,而且當今都是多核系統,即使是實時作業系統,也存在核間任務切換,造成cpu的cache頻繁失效,這會大幅降低處理效能。一般為了降低這些環節的開銷,在追求極高效能吞吐量的場合,會採用高速網絡卡內建高效能fpga器件來實現交易演算法,這跟作業系統就沒有關係了。但fpga器件存在可程式設計性降低的問題,演算法升級需要模擬,時間人力成本較高。對於一般場景要求,會採用使用者態驅動來實現IO讀寫網口資料,使用者態直接透過訪問網口,用輪循方式替代中斷,實現資料零複製提高效能,而對於交易應用程式,採用綁核方式隔離排程開銷,這樣會大幅度提高處理效能。而對於交易應用程式,只集中於演算法處理,需要對於交易演算法做最佳化,也就是提高指令處理效能,儘量在儘量少的時鐘週期完成指令,需要透過cpu效能工具探測出程式碼熱點,然後對於某段程式碼做特殊最佳化,比如採用cpu的向量指令集,實現高效能的並行處理,甚至達到以前的十倍以上最佳化。
高頻交易系統影響的因素很多,其中時延是影響交易速度最大的因素,而時延由很多環節影響,比如線路傳輸延遲,交易伺服器為了降低傳輸一般都部署在交易所附近的機房,有條件甚至跟交易所伺服器部署在同機房。而下單的延遲是底層IO,作業系統,任務排程,應用軟體演算法造成的。而傳統實時作業系統,網口收發資料處於核心態,透過中斷跟網口通訊,核心態到使用者態切換通訊都需要資料複製,而且當今都是多核系統,即使是實時作業系統,也存在核間任務切換,造成cpu的cache頻繁失效,這會大幅降低處理效能。一般為了降低這些環節的開銷,在追求極高效能吞吐量的場合,會採用高速網絡卡內建高效能fpga器件來實現交易演算法,這跟作業系統就沒有關係了。但fpga器件存在可程式設計性降低的問題,演算法升級需要模擬,時間人力成本較高。對於一般場景要求,會採用使用者態驅動來實現IO讀寫網口資料,使用者態直接透過訪問網口,用輪循方式替代中斷,實現資料零複製提高效能,而對於交易應用程式,採用綁核方式隔離排程開銷,這樣會大幅度提高處理效能。而對於交易應用程式,只集中於演算法處理,需要對於交易演算法做最佳化,也就是提高指令處理效能,儘量在儘量少的時鐘週期完成指令,需要透過cpu效能工具探測出程式碼熱點,然後對於某段程式碼做特殊最佳化,比如採用cpu的向量指令集,實現高效能的並行處理,甚至達到以前的十倍以上最佳化。