跳轉到

系統架構

Tapio 在純 C/C++ 軟體上達成接近硬體 FPGA 的延遲穩定性,並非依賴單一技術,而是六項獨立工程決策的累積結果。本章說明這些決策的內容與設計理由;對應的延遲數字見效能數據

同一條熱路徑上同時完成的事前風控設計,見風控機制


1. Kernel bypass(核心繞過)

TCPDirect 讓封包從 NIC DMA 直接送進 userspace buffer,完全不碰 OS TCP stack。消除了 kernel context switch、socket buffer copy、skb 記憶體配置這三大傳統 kernel 路徑的開銷。CPU 上的處理時間因此被壓到極低,是高速版相對於通用版最主要的延遲縮減來源。

2. Dedicated core isolation(專用核心隔離)

NetThread 獨佔一顆 CPU core,透過 Linux 的 isolcpus / nohz_full / rcu_nocbs 核心參數完全隔離;BIOS 把實體 CPU 鎖到較少核心(4 顆 active),讓這顆 hot core 拿到更高的 turbo bin。在量測期間,這顆 core 上沒有任何 context switch 發生。沒有 OS 排程插隊,延遲曲線因此可預測。

熱路徑只占用 1 顆隔離核心;CalcThread 與其他 system / helper threads 共用剩餘核心,由 kernel scheduler 自行排程,不再額外隔離。

對應的安裝設定見安裝前系統調校 — GRUB 開機參數IRQ Affinity

3. Lock-free system design(無鎖設計)

NetThread 熱路徑上沒有任何 mutex 或 condition variable。CalcThread 與 NetThread 之間透過 SPSC(single-producer single-consumer)queue 傳遞訊息, 無共享鎖、無 cache line bouncing。這讓多核心架構在高吞吐下也不會互相干擾。

4. Hot path fits in L1 cache(熱路徑塞進 L1)

從收到下單請求到送出 R01(委託輸入)的整條處理路徑——解析、風控計算、建構回應、發送——所有 instruction 都塞進 CPU L1 instruction cache(L1i);關鍵資料結構對齊 cache line,L1 data cache(L1d)命中率接近 100%。熱路徑上 zero L3 cache miss。每筆下單的 CPU 時間因此穩定,不受記憶體延遲波動影響。

5. Kernel & hardware tuning(核心與硬體調校)

調校項目 效果
mlockall(MCL_CURRENT \| MCL_FUTURE) 記憶體頁全部預鎖,page fault = 0
nohz_full + idle=poll 消除 CPU C-state wakeup latency
BIOS 鎖核 hot core 跑滿較高的 turbo bin,且 L3 contention 減半
jemalloc 取代 glibc allocator,降低 arena lock 與 brk 延遲
-march=native build flags AVX2 指令集對齊硬體,最大化 scalar 密度
NIC firmware 最佳化 TCPDirect 自編 release build

完整的部署調校步驟見部署與調校 — 安裝章節。

6. Full-path pre-warm(全鏈路預熱)

熱路徑再優化,第一筆下單仍可能因 cold-start 產生尖峰——instruction cache 尚未填充、資料結構尚未進 L1d、連線狀態尚未就緒。Tapio 支援全鏈路 pre-warm:正式交易前透過暖機封包觸發完整下單路徑,確保 L1i、L1d、連線狀態全部就緒,讓第一筆正式下單就能以穩態延遲執行,而不是付出 cold-start 代價。效能數據所有量測數字均為 pre-warm 後的穩態數值。


整體效應

這六項決策的累積效果,是把延遲抖動壓到接近多核硬體物理底線的水準(核心硬體量測見硬體 baseline)——意味著要再往下,瓶頸已不在軟體。