第三章 硬件选型与部署:CPU vs FPGA vs GPU、网卡与交换机选型、托管机房与Co-location
做高频交易,说白了就是跟时间赛跑。你算法再牛,策略再精,硬件跟不上,一切都是白搭。这一章,咱们聊聊硬件的那些事儿。
3.1 CPU vs FPGA vs GPU:谁才是速度之王?
很多人问我,做高频到底该用啥?CPU、FPGA还是GPU?我的回答是:看场景。没有银弹,只有最合适的工具。
3.1.1 CPU:通用但不够快
CPU是万金油,啥都能干。但它的弱点也很明显——指令流水线、分支预测、缓存未命中,这些都会带来不确定的延迟。我见过不少团队,一上来就用CPU做纳秒级交易,结果发现延迟抖动大得离谱。
为什么会这样?因为CPU要处理中断、上下文切换,还有操作系统的调度。你想想看,一个网络包进来,先要经过内核协议栈,再拷贝到用户态,这一来一回,几十微秒就没了。在高频交易里,这简直是灾难。
核心观点:CPU适合做策略逻辑复杂、对延迟不敏感的场景。比如做市商的中频策略,或者风控计算。
3.1.2 FPGA:硬核玩家的选择
FPGA就不一样了。它用硬件逻辑实现数据处理,没有操作系统,没有中断,一切都是确定的。我在项目中遇到过,用FPGA做行情解析,从网线到应用层,延迟可以控制在100纳秒以内。
但FPGA也有门槛。开发周期长,调试困难,而且一旦流片,改起来很麻烦。我记得有一次,一个客户要求修改行情解码逻辑,我们花了整整两周才完成验证。
我的建议:如果你的策略是纯信号驱动的,比如价差套利、做市商,FPGA是首选。但如果你需要频繁调整策略,还是老老实实用CPU吧。
3.1.3 GPU:并行计算的王者
GPU呢?它擅长并行计算,适合做大规模矩阵运算。但在高频交易里,GPU的延迟并不理想。为什么?因为数据要从CPU传到GPU,再从GPU传回来,这个PCIe传输本身就有几微秒的延迟。
说白了,GPU更适合做回测,或者中低频的策略优化。我见过有人用GPU做实时风险计算,效果还不错,但那是分钟级别的,不是纳秒级的。
| 硬件 | 延迟 | 灵活性 | 开发成本 | 适用场景 |
|---|---|---|---|---|
| CPU | 微秒级 | 高 | 低 | 策略逻辑、风控 |
| FPGA | 纳秒级 | 低 | 高 | 行情解析、订单处理 |
| GPU | 毫秒级 | 中 | 中 | 回测、中低频策略 |
3.2 网卡与交换机选型:网络是命脉
硬件选完了,接下来是网络。高频交易里,网络延迟每增加一纳秒,可能就是几百万的损失。所以网卡和交换机的选型,绝对不能马虎。
3.2.1 网卡:Solarflare还是Mellanox?
网卡这块,主流就两家:Solarflare和Mellanox。我个人习惯用Solarflare,因为它的低延迟特性做得特别好。尤其是SFN8522系列,支持硬件时间戳和用户态网络栈,延迟可以做到1微秒以内。
Mellanox也不错,特别是ConnectX系列,支持RDMA和GPUDirect,适合跟GPU配合使用。但要注意,Mellanox的驱动配置比较复杂,我曾经踩过坑,因为驱动版本不匹配,导致网络丢包,排查了整整一天。
避坑指南:我曾经因为网卡固件版本太旧,导致硬件时间戳不准,回测数据全废了。所以,拿到网卡第一件事,升级固件到最新版。
3.2.2 交换机:低延迟是硬指标
交换机这块,思科和Arista是主流。但高频交易圈子里,更多人用Arista。为什么?因为它的延迟更低,而且支持端口到端口的直通转发。
我记得有一次,我们测试两台交换机,一台思科Nexus,一台Arista 7050。同样的流量,Arista的延迟比思科低了200纳秒。别小看这200纳秒,在套利策略里,这就是胜负手。
选交换机时,有几个关键指标要注意:
- 端口到端口延迟:越低越好,最好在500纳秒以内。
- 抖动:延迟的稳定性,比延迟本身更重要。
- 丢包率:万分之一以下的丢包率是底线。
3.3 托管机房与Co-location:离交易所越近越好
硬件选好了,网络搭好了,接下来就是选址。高频交易里,物理距离就是金钱。你离交易所的撮合引擎越近,你的订单就越快到达。
3.3.1 托管机房:为什么必须托管?
很多人觉得,我租个云服务器不就行了?不行。云服务器的网络延迟是毫秒级的,而且你无法控制物理位置。托管机房就不一样了,你可以把服务器直接放在交易所的机房里,甚至跟撮合引擎放在同一个机柜。
我见过最极端的案例,一家做市商把服务器放在交易所的机房里,用光纤直连撮合引擎,延迟做到了10微秒以内。而另一家用了云服务器,延迟是50毫秒,差了5000倍。
核心观点:托管机房是高频交易的标配。如果你不做托管,就别谈什么高频了。
3.3.2 Co-location:共享机柜的艺术
Co-location,说白了就是跟别人共享机柜。这听起来有点low,但其实很实用。因为交易所的机柜资源有限,而且价格昂贵。通过Co-location,你可以跟其他交易商共享一个机柜,分摊成本。
但要注意,共享机柜也有风险。我曾经遇到过,隔壁机柜的服务器散热不好,导致我们这边的温度飙升,差点宕机。所以,选Co-location服务商时,一定要考察他们的散热和电力保障能力。
我的建议:如果你预算充足,尽量租用独立的机柜。如果预算有限,Co-location也是个不错的选择,但一定要签好SLA,明确电力、散热、网络带宽的保障。
3.3.3 光纤直连:终极方案
如果你真的追求极致延迟,那就用光纤直连。直接把服务器用光纤连到交易所的撮合引擎,中间不经过任何交换机。这样延迟可以做到个位数纳秒。
但光纤直连也有代价。成本高,维护难,而且一旦光纤断了,恢复起来很麻烦。我记得有一次,我们的一根光纤被老鼠咬断了,整整花了4个小时才修好,那4个小时里,我们损失了上百万。
所以,光纤直连虽然好,但一定要有备份方案。比如,同时保留一条以太网链路,作为备用。
3.4 总结:硬件选型的黄金法则
说了这么多,总结一下我的经验:
- CPU做策略逻辑,FPGA做行情解析,GPU做回测。
- 网卡选Solarflare或Mellanox,交换机选Arista。
- 托管机房是必须的,Co-location是性价比之选。
- 光纤直连是终极方案,但别忘了备份。
硬件选型没有标准答案,只有最适合你的方案。希望这一章能帮你少走一些弯路。下一章,咱们聊聊操作系统和内核优化,那又是另一番天地了。