硬件选型基础: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 选型 频率 ≥ 5GHz 核心数 8-16 核 L3缓存 ≥ 30MB 内存选型 DDR5-6000 CL30 时序 CL14/CL30 容量 32-64GB 网卡选型 Solarflare X2522 Mellanox ConnectX-6 延迟 < 1.5 μs 选型核心原则 1. 低延迟优先:单核频率 > 核心数,时序 > 容量 2. 稳定性至上:7x24小时运行,硬件质量第一 3. 匹配交易所:网卡选型需与交易所技术栈对齐

嗯,硬件选型这块,说到底就是平衡。你要在延迟、成本、稳定性之间找到最适合自己的点。没有完美的方案,只有最适合的方案。

我个人建议,先确定交易所的技术要求,再选网卡;根据网卡选CPU;最后配内存。这个顺序能帮你少走很多弯路。

最后说一句

硬件选型不是一劳永逸的事。市场在变,技术在变,你的系统也在变。我每年都会重新评估一次硬件配置,看看有没有更好的选择。保持开放心态,别被过去的经验束缚。

专注资料整理