硬件基础设施选型:服务器、网卡与时钟同步

做低延迟交易系统,硬件选型是地基。地基没打好,上层软件再优化也白搭。今天咱们聊聊服务器选型、网卡选型,还有时钟同步这几个核心问题。

服务器选型:CPU主频、缓存与NUMA架构

先说说CPU。我个人习惯,选CPU时第一个看的是主频。为什么?因为交易策略本质上是一连串的数学计算,主频越高,单线程跑得越快。我见过不少团队为了省钱买低频多核的CPU,结果延迟反而上不去。

核心观点:低延迟交易场景,单核性能比核数更重要。

举个例子,Intel的Xeon Platinum 8280有28核,但基础频率只有2.7GHz。而Xeon W-3175X虽然只有28核,但全核睿频能到3.8GHz。你说哪个更适合做交易?当然是后者。我在项目中遇到过,同样的策略,3.8GHz比2.7GHz快了将近30%。

缓存也很关键。L1、L2、L3三级缓存,每一级都影响数据访问速度。L1缓存最快,但容量最小,只有32KB左右。L2缓存稍大,256KB到1MB不等。L3缓存最大,几十MB。你想想看,如果数据在L1缓存里,访问延迟只有几个纳秒。如果跑到内存里,那就是几十纳秒。差了十倍不止。

缓存级别典型大小访问延迟
L132KB~1ns
L2256KB-1MB~4ns
L310-30MB~10ns
内存几十GB~50ns

嗯,这里要注意。缓存不是越大越好,关键是命中率。我见过有人买大缓存CPU,但代码写得稀烂,数据到处乱飞,缓存命中率低得可怜。所以选型时,要结合你的策略特点。如果策略数据局部性好,大缓存就很有用。如果数据访问随机性很强,那缓存再大也救不了你。

NUMA架构,说白了就是CPU和内存的物理连接方式。每个CPU有自己的本地内存,访问本地内存快,访问远端内存慢。这个差异在低延迟场景下很致命。我曾经踩过一个坑:程序跑在CPU0上,但内存分配到了CPU1的本地内存上,结果每次访问都要跨NUMA节点,延迟直接翻倍。

避坑指南:我曾经在NUMA架构上吃过亏。后来学乖了,用numactl绑定CPU和内存,确保线程和它使用的内存在同一个NUMA节点上。这个操作能省下10-20微秒的延迟。

网卡选型:Solarflare vs Mellanox

网卡是交易系统的咽喉。数据从交易所到你的服务器,第一站就是网卡。选错了,后面全白费。

Solarflare和Mellanox是两大主流。Solarflare的优势在于它的低延迟特性,特别是它的onload技术,能把网络协议栈绕过去,直接在用户态处理网络数据。我习惯用Solarflare做高频交易,因为它延迟稳定,抖动小。

Mellanox呢,它的优势是带宽大,适合做数据回放和批量处理。但说实话,在纯低延迟场景下,Solarflare更胜一筹。我在项目中做过对比测试,同样的行情数据,Solarflare的延迟比Mellanox低了大概200纳秒。别小看这200纳秒,在纳秒级竞争里,这就是天壤之别。

选型建议:如果做高频交易,优先考虑Solarflare。如果做中低频或者需要大带宽,Mellanox也是不错的选择。

另外,网卡的固件和驱动也很重要。我见过有人买了顶级网卡,但驱动没调优,结果延迟比普通网卡还高。所以选型时,一定要确认厂商是否提供低延迟驱动和固件支持。

时钟同步:PTP与gPTP

时钟同步,说白了就是让所有机器的时钟保持一致。在交易系统里,这个太重要了。你想想看,如果A机器和B机器的时间差了1毫秒,那你在A机器上看到的行情和B机器上看到的行情,时间戳就对不上。做回测时,数据全乱套了。

PTP(Precision Time Protocol)是目前最常用的时钟同步协议。它能做到微秒级的同步精度。gPTP是PTP的增强版,专门为以太网设计的,精度更高,能达到纳秒级。

我个人习惯,在交易系统里用gPTP。为什么?因为它的精度更高,而且支持硬件时间戳。硬件时间戳是什么意思?就是网卡在收到数据包时,直接打上时间戳,不经过CPU。这样能避免软件处理带来的延迟和抖动。

警告:不要用NTP做交易系统的时钟同步。NTP的精度只有毫秒级,而且抖动很大。我曾经见过有人用NTP,结果两台机器的时间差了十几毫秒,回测数据完全没法用。

部署gPTP时,要注意网络拓扑。最好用支持gPTP的交换机,这样能实现端到端的硬件时间戳。如果交换机不支持,那精度会大打折扣。我在项目中遇到过,用了普通交换机,结果gPTP的精度从纳秒级降到了微秒级,效果还不如PTP。

知识体系总览

下面这张图,把咱们刚才聊的内容串起来了。你可以看到,服务器、网卡、时钟同步这三块,是相互关联的。选型时不能只看单一指标,要综合考虑。

低延迟交易系统硬件选型 服务器选型 • CPU主频:越高越好 • 缓存:L1/L2/L3 • NUMA架构:绑定CPU和内存 • 单核性能 > 核数 网卡选型 • Solarflare:低延迟 • Mellanox:大带宽 • 驱动和固件调优 • 用户态协议栈 时钟同步 • PTP:微秒级 • gPTP:纳秒级 • 硬件时间戳 • 支持gPTP的交换机 选型核心原则 1. 服务器:主频优先,缓存命中率是关键 2. 网卡:高频交易选Solarflare,大带宽选Mellanox 3. 时钟同步:gPTP + 硬件时间戳 + 支持gPTP的交换机 4. 三者协同:NUMA绑定 + 网卡中断亲和性 + 时钟同步

好了,硬件选型这块就聊到这儿。记住,选型不是买最贵的,而是买最适合你策略的。下一章咱们聊聊操作系统和内核调优,那又是另一番天地了。

专注资料整理