硬件选型与配置:CPU、内存与网卡
做高频交易,硬件就是你的枪。枪不好,再好的策略也打不中目标。
这一章,我重点聊聊CPU、内存和网卡这三个核心部件。说白了,它们决定了你的交易系统能跑多快、多稳。我这些年踩过的坑不少,今天一并倒出来给你。
CPU:高频核心的选择与调优
CPU是交易系统的大脑。但很多人一上来就盯着核心数,觉得越多越好。其实不然。
高频交易,拼的是单核性能,不是多核。
你想想看,一个订单从收到行情到发出指令,中间就那么几微秒。如果CPU要花时间在核心之间切换数据,那黄花菜都凉了。
核心选择:高频核心优先
我个人习惯,首选Intel的Xeon W系列或者AMD的Ryzen Threadripper Pro系列。为什么?
- 单核频率高:基础频率4.0GHz以上,睿频能到5.0GHz更好
- 缓存大:L3缓存至少30MB以上,减少内存访问次数
- 核心数适中:8到16个物理核心就够了,太多反而增加延迟
睿频与超线程:该关就关
这里有两个关键设置,很多人会忽略。
第一,关掉睿频(Turbo Boost)。
为什么?睿频虽然能临时提高频率,但它是动态的。当温度升高或功耗超标时,频率会突然降下来。这种波动对交易系统是致命的。你想想,上一笔交易跑了2微秒,下一笔突然变成3微秒,策略还怎么玩?
第二,关掉超线程(Hyper-Threading)。
超线程让一个物理核心模拟成两个逻辑核心。听起来不错,但实际上两个逻辑核心会争抢缓存和执行单元。在高频场景下,这反而增加了延迟的不确定性。
在BIOS中,你可以这样设置:
// BIOS设置示例
Intel Turbo Boost Technology: Disabled
Hyper-Threading Technology: Disabled
C-States: Disabled
SpeedStep: Disabled
内存:DDR5 vs DDR4 与时序优化
内存是数据的临时仓库。仓库门开得快不快,直接影响交易速度。
DDR5 vs DDR4:选谁?
我直接说结论:如果预算允许,选DDR5。
DDR5的优势很明显:
- 频率更高:DDR5起步就是4800MHz,DDR4顶多3200MHz
- 带宽更大:单条DDR5带宽是DDR4的两倍左右
- 延迟更低:虽然DDR5的CL值看起来高,但实际访问延迟因为频率提升反而更低
但要注意,DDR5目前价格还是偏高。如果你的交易系统对延迟不是极端敏感,DDR4也够用。
| 参数 | DDR4-3200 | DDR5-4800 | DDR5-5600 |
|---|---|---|---|
| 频率 | 3200 MHz | 4800 MHz | 5600 MHz |
| 带宽 | 25.6 GB/s | 38.4 GB/s | 44.8 GB/s |
| CL延迟 | CL16 (10ns) | CL40 (16.7ns) | CL36 (12.9ns) |
| 实际访问延迟 | 约 60-70ns | 约 50-60ns | 约 45-55ns |
时序优化:别小看这几个数字
内存时序(CL、tRCD、tRP、tRAS)直接影响延迟。我建议:
- CL值越低越好:CL是列地址访问延迟,直接影响首次访问速度
- tRCD尽量低:行地址到列地址的延迟,影响随机访问性能
- tRAS不要太大:行激活时间,太大浪费,太小不稳定
举个例子,DDR5-5600 CL36 比 CL46 在订单处理上能快5-8%。别小看这点差距,在微秒级别的竞争中,这就是胜负手。
网卡:Solarflare与Mellanox的低延迟配置
网卡是交易系统的咽喉。数据进出的速度,全看它。
为什么选Solarflare或Mellanox?
普通网卡延迟在10-20微秒,而Solarflare和Mellanox能做到1-2微秒。差距就在这里。
- Solarflare SFN8522:支持OpenOnload,用户态网络栈,延迟极低
- Mellanox ConnectX-5/6:支持RDMA,零拷贝传输,CPU负载低
我个人更倾向Solarflare,因为它的OpenOnload技术可以直接绕过内核,让应用程序直接访问网卡。说白了,就是省去了操作系统那一堆繁琐的协议栈处理。
配置要点
拿到网卡后,别急着插上就用。有几个关键配置必须做:
- 关闭中断合并:网卡收到数据包后立即通知CPU,不要攒一批再通知
- 设置RSS队列:多队列接收,每个CPU核心处理一个队列,避免争抢
- 启用硬件时间戳:精确记录每个数据包的到达时间,精度可达纳秒级
- 调整Ring Buffer大小:根据流量调整,太大浪费内存,太小丢包
// Solarflare网卡配置示例
# 关闭中断合并
ethtool -C eth0 rx-usecs 0 tx-usecs 0
# 设置RSS队列(假设4个核心)
ethtool -L eth0 combined 4
# 启用硬件时间戳
ethtool -T eth0
# 调整Ring Buffer
ethtool -G eth0 rx 4096 tx 4096
知识体系总览
下面这张图,把硬件选型的核心逻辑串起来了。你可以对照着看,心里有个谱。
硬件选型不是一锤子买卖。我建议你搭建一个测试环境,把不同配置跑一遍,用延迟测试工具(比如Solarflare的sfptest)验证效果。只有数据说话,才是真的。
嗯,这一章就到这里。记住,硬件是基础,但光有硬件不够。下一章我们会聊操作系统层面的调优,那才是真正拉开差距的地方。
公众号:蓝海数据掘金营,微信deep3321