第二章 硬件选型:CPU、网卡、交换机、FPGA的延迟特性与选型策略

做高频交易,说白了就是跟时间赛跑。硬件选型这件事,我见过太多团队在这上面栽跟头。有人花大价钱买了顶级CPU,结果网卡拖了后腿;有人迷信FPGA万能,却忽略了交换机内部的排队延迟。今天咱们就把这四块硬件的延迟特性掰开揉碎,讲讲我的选型经验。

2.1 CPU:核心频率与缓存延迟的博弈

CPU选型,很多人第一反应是看主频。嗯,这没错,但不够。高频交易场景下,CPU的延迟瓶颈往往不在计算,而在数据搬运。

核心频率:我个人习惯选4.0GHz以上的型号。为什么?因为交易信号处理通常是单线程的,频率越高,单次指令执行越快。但要注意,高频CPU往往伴随着高功耗和散热问题。我在项目中遇到过,一台服务器因为散热不足导致CPU降频,延迟从5微秒直接飙到15微秒,那叫一个惨。

缓存大小:L3缓存至少20MB起步。你想想看,如果行情数据频繁在L3和内存之间交换,每次访问内存就是60-100纳秒的延迟。而L3缓存命中,只需要10纳秒左右。差距是数量级的。

NUMA架构:这个坑我踩过。多路服务器中,CPU访问本地内存和远端内存的延迟差了一倍。我建议把交易进程绑定在同一个NUMA节点上,并且用numactl工具固定内存分配。

选型建议:Intel Xeon W系列或AMD EPYC系列,主频4.0GHz+,L3缓存30MB+,单路或双路配置即可。别贪多路,NUMA跨节点访问的延迟会让你哭。

2.2 网卡:从10G到100G的延迟差异

网卡是数据进入服务器的第一道关卡。我见过有人用消费级网卡跑交易,结果UDP包乱序、丢包,延迟抖动大得离谱。

PCIe通道数:100G网卡至少需要PCIe 3.0 x16或PCIe 4.0 x8。通道数不够,网卡带宽会被卡脖子。我记得有一次,客户用PCIe 3.0 x8插槽跑100G网卡,实际吞吐量只有60G,延迟还翻倍了。

硬件时间戳:这个功能必须有。没有硬件时间戳,你根本不知道数据包是什么时候到的。软件时间戳的误差在微秒级,而硬件时间戳可以做到纳秒级。我建议选Solarflare或Mellanox的网卡,它们的PTP(精确时间协议)支持做得最好。

DPDK支持:说白了,DPDK就是让网卡绕过内核协议栈,直接把数据送到用户态。延迟能从几十微秒降到几微秒。我习惯用DPDK 20.11 LTS版本,稳定且社区支持好。

网卡型号 速率 硬件时间戳 DPDK支持 典型延迟(DPDK模式)
Mellanox ConnectX-6 100G 1.2μs
Solarflare X2522 25G 0.8μs
Intel E810 100G 1.5μs

避坑指南:我曾经用Intel X710网卡跑DPDK,结果发现它的硬件队列数只有4个,多线程场景下根本不够用。后来换了Mellanox,64个硬件队列,舒服多了。

2.3 交换机:交换延迟与缓冲区大小

交换机是网络中的瓶颈点。很多人只关注端口速率,忽略了交换延迟和缓冲区大小。

交换延迟:我建议选Cut-through模式的交换机。Store-and-forward模式会把整个包收完再转发,延迟多了几百纳秒。Cut-through模式只要读到目标MAC地址就开始转发,延迟能控制在1微秒以内。

缓冲区大小:这个参数很关键。缓冲区太小,突发流量会导致丢包;缓冲区太大,又会导致排队延迟增加。我个人的经验是,交易网络中的交换机缓冲区控制在4-8MB就够了。太大反而不好,因为排队延迟会吃掉你的低延迟优势。

端口密度:别买太便宜的交换机。我见过一台48口交换机,内部背板带宽只有80Gbps,结果所有端口共享带宽,延迟抖动大得没法用。建议选背板带宽大于端口总带宽的型号。

注意:有些交换机宣称支持PTP,但实际精度只有微秒级。一定要实测,别信宣传。我曾经被某厂商的"纳秒级PTP"忽悠过,结果实测误差200纳秒,根本不能用。

2.4 FPGA:可编程硬件的延迟优势

FPGA是高频交易领域的终极武器。它的延迟可以做到几十纳秒级别,比CPU快两个数量级。但FPGA不是万能的,它有自己的适用场景。

适合场景:行情解析、订单校验、简单的策略逻辑。这些任务逻辑固定,数据流清晰,用FPGA实现可以做到极低延迟。

不适合场景:复杂的机器学习模型、动态策略调整。这些任务需要频繁更新逻辑,FPGA的重新编译时间(几小时到几天)会让你崩溃。

选型建议:Xilinx(现AMD)的Kintex或Virtex系列,或者Intel的Arria系列。我习惯用Xilinx的VU9P,它的DSP资源和BRAM都够用,而且生态成熟。

开发工具:Vivado或Quartus。我个人更推荐Vivado,它的HLS(高层次综合)工具可以把C代码转成硬件描述,虽然效率不如手写Verilog,但开发速度快很多。

我的经验:FPGA开发一定要做时序约束。我曾经因为没做约束,导致FPGA在高温下时序违规,行情数据解析出错,直接亏了十几万。从那以后,我每次上板前都会跑一遍静态时序分析。

2.5 硬件选型综合策略

选型不是堆料,而是平衡。我总结了一个简单的策略:

  1. 先定网卡:根据行情数据量和延迟要求,确定网卡速率和型号。100G是当前主流,25G是性价比之选。
  2. 再定CPU:根据网卡速率,选择能喂饱网卡的CPU。100G网卡至少需要4核高频CPU来处理数据。
  3. 交换机居中:根据服务器数量和拓扑,选择交换延迟最低的交换机。如果预算充足,可以考虑Arista或Cisco的Nexus系列。
  4. FPGA做加速:如果延迟要求低于1微秒,考虑用FPGA做行情解析或订单校验。否则,CPU+DPDK就够用了。
硬件选型决策流程 延迟要求 < 1μs? 是:加入FPGA加速 否:CPU+DPDK方案 选择网卡:100G/25G,硬件时间戳 选择CPU:4.0GHz+,大缓存 选择交换机:Cut-through,低延迟

最后说一句:硬件选型没有银弹。我见过用FPGA做全流程的团队,结果开发周期太长,错过了市场机会。也见过只用CPU的团队,通过优化DPDK和内核参数,把延迟压到了2微秒以内。关键是找到适合你场景的平衡点。

专注资料整理