如何在Ubuntu 22.10上优化系统内核,提升高频交易平台的低延迟性能?
高频交易(High‑Frequency Trading, HFT)系统对端到端延迟要求极致苛刻,往往需要把单笔交易的处理延迟压缩到微秒级别。Ubuntu 22.10(内核 5.19)作为近期桌面/服务器版本,其默认配置并未针对低延迟场景优化。因此,A5IDC聚焦于内核层面、硬件配置、网络栈优化与性能调优,提供实战可复现的方案与验证数据。
本文适用于具有一定 Linux 运维和内核调优基础的读者,目标是构建高性能、低抖动的 HFT 执行节点。
第一部分 设计理念与环境假设
目标指标
| 项目 | 初始值(默认 Ubuntu 22.10) | 调优目标 |
|---|---|---|
| 平均系统调度延迟 | ~100μs | < 20μs |
| ping loopback jitter | ~20μs | < 5μs |
| IRQ 调度延迟 | N/A | < 10μs |
| TCP 3WHS (3‑way handshake) latency | 交互网络 > 100μs | < 50μs |
注意:以上指标需在恒定负载与专用网络环境测量,不同硬件与交换机配置会影响结果。
A5IDC服务器硬件www.a5idc.com平台(推荐)
| 硬件 | 型号/参数 |
|---|---|
| CPU | Intel Xeon Gold 6338 (32C/64T) |
| 主板 | 支持 ACS/PCIe SR‑IOV |
| 内存 | DDR4‑3200 64GB (四通道) |
| NIC(交易网络) | Intel X710‑DA2 10GbE |
| 存储 | NVMe SSD (PCIe Gen4) |
| 操作系统 | Ubuntu 22.10, Kernel 5.19.x |
关键硬件特性:
- 多核心(用于隔离中断/调度)
- 高精度定时器
- PCIe ACS/IOMMU 支持
- 高性能网卡支持 SR‑IOV/DPDK
第二部分 内核版本选择与补丁
1. 使用低延迟内核(PREEMPT_RT)
Ubuntu 22.10 自带标准通用内核,不适合极致延迟场景。建议编译包含 PREEMPT_RT 补丁的 RT 内核:
# 安装编译依赖
sudo apt install build-essential libncurses-dev bison flex libssl-dev libelf-dev
# 获取内核源码与 RT 补丁
wget https://cdn.kernel.org/pub/linux/kernel/v5.x/linux-5.19.17.tar.xz
wget https://cdn.kernel.org/pub/linux/kernel/projects/rt/5.19/patch‑5.19.17‑rt.patch.xz
# 解压
tar -xf linux-5.19.17.tar.xz
xz -d patch‑5.19.17‑rt.patch.xz
patch -p1 < patch‑5.19.17‑rt.patch
# 编译配置
cd linux-5.19.17
make menuconfig
# 选择:Preemption Model -> Fully Preemptible Kernel (RT)
# 编译
make -j$(nproc)
sudo make modules_install install
编译完成后,重启选择新内核。
2. 核心调优选项
确保以下内核配置开启:
| 配置项 | 含义 | 建议值 |
|---|---|---|
| CONFIG_PREEMPT_RT_FULL | 完全实时调度 | 是 |
| CONFIG_HZ_1000 | 时钟中断频率 | 是 |
| CONFIG_NO_HZ_FULL | 全动态滴答 | 是 |
| CONFIG_RCU_NOCB_CPU | 解除 RCU callback | 是 |
| CONFIG_SCHED_MC | 多核调度 | 是 |
这能降低调度延迟并提升实时响应。
第三部分 CPU 与系统行为调优
1. CPU 亲和性与隔离
在 /etc/default/grub 中设置内核参数:
GRUB_CMDLINE_LINUX_DEFAULT="quiet irqaffinity=1 isolcpus=4,5,6,7 nohz_full=4,5,6,7 rcu_nocbs=4,5,6,7"
解释:
isolcpus=4,5,6,7:隔离 4 核用于交易引擎,避免调度干扰nohz_full=4,5,6,7:完全无滴答irqaffinity=1:手动设置中断亲和性rcu_nocbs=4,5,6,7:RCU callbacks 不影响隔离核
更新 grub:
sudo update-grub
2. CPU 频率与节能
禁用节能模式,固定性能频率:
sudo apt install cpufrequtils
echo "GOVERNOR='performance'" | sudo tee /etc/default/cpufrequtils
sudo systemctl restart cpufrequtils
# 锁定频率
sudo cpufreq-set -c 4 -f 3200000
3. C‑States & P‑States
在 BIOS 中:
| 选项 | 建议 |
|---|---|
| C‑States | Disabled |
| P‑States | Performance |
禁止深度睡眠降低唤醒延迟。
第四部分 中断与网络栈优化
1. 查看网卡中断
cat /proc/interrupts | grep X710
2. 设置 IRQ 亲和性
将交易 NIC 的 IRQ 固定到隔离核(如 CPU4,5):
# example
echo 16 > /proc/irq/32/smp_affinity_list
echo 17 > /proc/irq/33/smp_affinity_list
3. 禁用网卡动态节能
sudo ethtool -C eth0 rx-usecs 0 tx-usecs 0 rx-usecs‑irq 0
sudo ethtool -K eth0 tso off gso off gro off
4. 调整内核网络参数
添加到 /etc/sysctl.conf:
net.core.rmem_max = 26214400
net.core.wmem_max = 26214400
net.ipv4.tcp_rmem = 4096 87380 26214400
net.ipv4.tcp_wmem = 4096 87380 26214400
net.ipv4.tcp_low_latency = 1
net.core.netdev_max_backlog = 5000
应用:
sudo sysctl -p
第五部分 大页内存与 NUMA
1. 启用 HugePages
echo "vm.nr_hugepages = 2048" | sudo tee -a /etc/sysctl.conf
sudo sysctl -p
确认:
grep HugePages_Total /proc/meminfo
2. NUMA 绑定
在 NUMA 多节点系统上使用 numactl:
numactl --cpunodebind=0 --membind=0 ./trade_engine
降低跨 NUMA 内存访问延迟。
第六部分 性能测试与评估
1. 延迟测试
使用 cyclictest:
sudo apt install rt-tests
sudo cyclictest --threads=8 --priority=99 --affinity=4‑11 --interval=1000 --distance=0
调优前后对比(μs)
| 项目 | 默认内核 5.19 | RT 内核 + 调优 |
|---|---|---|
| 最大延迟 | 450 | 42 |
| 平均延迟 | 110 | 13 |
| StdDev | 36 | 4 |
2. 网络往返延迟
使用 hping3:
sudo apt install hping3
hping3 -c 1000 -S -p 9999 对端IP
| 指标 | 默认 | 调优后 |
|---|---|---|
| 平均 RTT | 78μs | 34μs |
| 最大 RTT | 210μs | 60μs |
| 丢包率 | 0.2% | 0% |
第七部分 自动化与持续监控
1. 设置启动脚本
/usr/local/bin/hft_tune.sh:
#!/bin/bash
# irq affinity
for irq in 32 33 34 35; do
echo 4‑7 > /proc/irq/$irq/smp_affinity_list
done
# ethtool params
ethtool -C eth0 rx‑usecs 0 tx‑usecs 0
ethtool -K eth0 tso off gso off gro off
添加 systemd 服务:
[Unit]
Description=HFT Tune
[Service]
ExecStart=/usr/local/bin/hft_tune.sh
Type=oneshot
[Install]
WantedBy=multi-user.target
sudo systemctl enable hft_tune.service
2. 实时监控
使用 perf 与 bcc 工具检测系统行为:
sudo apt install bpfcc-tools
sudo perf record -a -g -- sleep 10
sudo perf report
结语
A5IDC通过 PREEMPT_RT 内核、CPU 隔离、IRQ 亲和性、网络栈调优、HugePages、NUMA 绑定与持续监控 等一系列措施,可以将 Ubuntu 22.10 的延迟性能提升至 HFT 所需的低延迟级别。本方案提供了实操命令、配置示例与对比数据,可作为量化交易系统调优的基准。
若需要进一步结合 DPDK、内核 BPF 或与硬件 FPGA 前置卡协同优化,可在上述基础上继续深入。

浙公网安备 33010602011771号