硬件选型基础:CPU、内存与网卡
做市商系统对硬件的敏感度,说实话,比大多数交易系统都要高。你想想看,别人报价比你快1微秒,订单就飞走了。我这些年折腾下来,发现硬件选型其实就三个核心:CPU怎么挑、内存怎么配、网卡怎么选。咱们一个一个聊。
CPU选型:频率、核心数、缓存
CPU是做市商系统的大脑。但这里有个误区——很多人以为核心越多越好。其实不然。
频率优先
做市商的核心逻辑是低延迟。我个人习惯,先看单核频率。为什么?因为大部分做市策略是串行的——你收到行情、计算报价、发送订单,这一串动作必须在一个线程里跑完。核心再多,单线程慢就是慢。
我建议选5GHz以上的CPU。比如Intel的i9-13900K或Xeon W系列,单核睿频能到5.8GHz。AMD的Ryzen 9 7950X也能到5.7GHz。别小看这0.1GHz的差距,在微秒级竞争中,这就是胜负手。
核心数够用就行
核心数不是越多越好。做市商系统通常分几个模块:行情处理、策略计算、订单管理、风控。每个模块分配1-2个核心就够了。我见过有人用64核的EPYC,结果大部分核心闲着,还增加了NUMA延迟。
我个人建议8-16核就够了。比如Intel的i9-13900K是8大核+16小核,大核跑关键任务,小核跑日志、监控等辅助任务。AMD的Ryzen 9 7950X是16核32线程,也够用。
缓存越大越好
缓存这东西,越大越好。做市商策略经常要访问大量数据——订单簿、历史行情、风险参数。如果数据在L3缓存里,延迟只有10纳秒左右;如果跑到内存里,那就是100纳秒以上。差了一个数量级。
我建议选L3缓存30MB以上的CPU。Intel的i9-13900K有36MB L3缓存,AMD的Ryzen 9 7950X有64MB。嗯,这里要注意:AMD的缓存架构是CCD+IOD,跨CCD访问延迟会高一些。所以做市商系统最好把关键线程绑定在同一个CCD上。
避坑指南
我曾经在一个项目中,用了双路Xeon Platinum 8380,40核80线程,结果延迟反而比单路i9-13900K高。后来发现是NUMA问题——两个CPU之间的通信延迟太大。从那以后,做市商系统我坚决不用双路,单路高频才是正道。
内存选型:DDR4 vs DDR5、时序
内存这块,很多人只看容量,不看速度和时序。其实内存延迟对做市商系统的影响,比你想的大得多。
DDR4 vs DDR5
DDR5刚出来时,我其实不太看好。为什么?因为DDR5的时序太高了。DDR4的CL14、CL16很常见,DDR5起步就是CL30、CL32。时序高意味着延迟大。
但后来我发现,DDR5的频率优势可以弥补时序的不足。DDR5-6000的实际延迟和DDR4-3600 CL16差不多。而且DDR5的带宽更高,对大量数据访问的场景更友好。
我个人建议:如果预算充足,直接上DDR5。选DDR5-6000 CL30或DDR5-6400 CL32。如果预算有限,DDR4-3600 CL14也是不错的选择。
| 内存类型 | 频率 | 时序 | 实际延迟 | 带宽 |
|---|---|---|---|---|
| DDR4 | 3600 MHz | CL14 | ~7.8 ns | 28.8 GB/s |
| DDR4 | 4000 MHz | CL16 | ~8.0 ns | 32.0 GB/s |
| DDR5 | 6000 MHz | CL30 | ~10.0 ns | 48.0 GB/s |
| DDR5 | 6400 MHz | CL32 | ~10.0 ns | 51.2 GB/s |
时序是关键
选内存时,时序比频率更重要。我习惯看CL值(CAS Latency)。CL值越低,延迟越小。DDR4的CL14比CL16好,DDR5的CL30比CL34好。
但要注意,时序不是越低越好。有些内存厂商为了压低CL值,会牺牲稳定性。做市商系统7x24小时运行,稳定性比那1-2纳秒的延迟更重要。
我的经验
我建议选知名品牌的内存,比如海盗船、芝奇、金士顿。它们的XMP/EXPO配置文件经过验证,稳定性有保障。别为了省几百块钱买杂牌内存,系统崩溃一次损失就大了。
容量怎么定
做市商系统的内存容量,主要看订单簿深度和历史数据缓存。我个人建议32GB起步,64GB比较稳妥。如果做高频做市,可能需要128GB。
但容量不是越大越好。内存越大,寻址延迟越高。所以够用就行,别贪多。
网卡选型:Solarflare vs Mellanox
网卡是做市商系统的咽喉。行情数据从网卡进来,订单从网卡出去。网卡选不好,前面CPU和内存再快也没用。
Solarflare
Solarflare(现在叫Xilinx,被AMD收购了)是做市商领域的传统选择。它的优势是低延迟和精准时间戳。
Solarflare的SFN系列网卡,延迟可以做到1微秒以下。而且它支持PTP(精确时间协议),可以做纳秒级的时间同步。这对做市商来说很重要——你需要知道行情数据到达的精确时间,才能判断市场状态。
我个人习惯用Solarflare X2522系列。它支持25GbE,延迟极低,而且有硬件时间戳功能。配合OpenOnload内核旁路技术,可以绕过内核协议栈,进一步降低延迟。
Mellanox
Mellanox(现在叫NVIDIA Networking)是另一个选择。它的优势是RDMA(远程直接内存访问)和RoCE(RDMA over Converged Ethernet)。
Mellanox的ConnectX系列网卡,支持RoCE v2,可以实现零拷贝数据传输。行情数据直接从网卡到应用程序内存,不经过CPU。这对降低延迟和CPU占用率很有帮助。
我建议用Mellanox ConnectX-6 Dx系列。它支持25GbE/50GbE,延迟也很低。而且NVIDIA的软件生态比较完善,有MLNX_OFED驱动和libibverbs库。
| 特性 | Solarflare X2522 | Mellanox ConnectX-6 Dx |
|---|---|---|
| 带宽 | 25GbE | 25/50/100GbE |
| 延迟 | <1 μs | <1.5 μs |
| 时间戳 | 硬件PTP | 硬件PTP |
| 内核旁路 | OpenOnload | RDMA/RoCE |
| 价格 | 中等 | 较高 |
怎么选
说实话,Solarflare和Mellanox都是好网卡。选哪个,主要看你的技术栈和交易所要求。
如果交易所支持Solarflare的OpenOnload,我建议用Solarflare。OpenOnload的配置比较简单,而且延迟优化做得很好。我见过不少做市商团队用Solarflare,效果都不错。
如果交易所支持RDMA/RoCE,或者你需要做跨机房数据传输,Mellanox更合适。RDMA的零拷贝特性,对大数据量传输很有优势。
注意
我曾经在一个项目中,选了Mellanox网卡,但交易所只支持Solarflare的OpenOnload。结果我们不得不自己写驱动适配,折腾了两个月。所以选网卡前,一定要先确认交易所的技术要求。
知识体系总览
下面这张图,把CPU、内存、网卡的选型要点串起来了。你可以看到,每个组件都有几个关键指标,而且它们之间是相互影响的。
嗯,硬件选型这块,说到底就是平衡。你要在延迟、成本、稳定性之间找到最适合自己的点。没有完美的方案,只有最适合的方案。
我个人建议,先确定交易所的技术要求,再选网卡;根据网卡选CPU;最后配内存。这个顺序能帮你少走很多弯路。
最后说一句
硬件选型不是一劳永逸的事。市场在变,技术在变,你的系统也在变。我每年都会重新评估一次硬件配置,看看有没有更好的选择。保持开放心态,别被过去的经验束缚。