交易系统CPU亲和性绑定技巧

📚 共计 30 章节
01
为什么交易系统需要CPU亲和性
延迟敏感型应用的痛点 · 上下文切换代价 · 缓存命中率与性能
延迟上下文切换
02
CPU架构基础
NUMA与SMP区别 · L1/L2/L3缓存 · 超线程与物理核心识别
NUMA缓存
03
Linux CPU信息查看
lscpu详解 · /proc/cpuinfo · cpuinfo_cur_freq监控
lscpu监控
04
taskset命令实战
基本用法 · 绑定核心/范围 · 查看进程亲和性
taskset命令行
05
sched_setaffinity系统调用
C语言接口 · cpu_set_t · 绑定线程而非进程
系统调用C
06
Python os.sched_setaffinity
Python绑定示例 · 多线程绑定 · GIL关系
Python多线程
07
Go GOMAXPROCS与亲和性
Go调度器模型 · P/M绑定 · GOMAXPROCS技巧
GoGoroutine
08
Java Thread Affinity
jna/jaffinity · Netty IO线程绑定 · JVM GC隔离
JavaNetty
09
DPDK与CPU隔离
轮询模式 · isolcpus · housekeeping核心
DPDK隔离
10
内核启动参数配置
isolcpus/nohz_full/rcu_nocbs · GRUB实战
内核参数GRUB
11
cpuset cgroup控制
cpuset子系统 · 创建隔离cgroup · 移入进程
cgroupcpuset
12
中断亲和性(IRQ Affinity)
/proc/irq · smp_affinity · 网卡中断绑定
中断IRQ
13
网卡多队列与RSS
RSS原理 · 队列数与核心匹配 · ethtool配置
RSS网卡
14
RPS/RFS软中断优化
RPS/RFS · 软中断负载均衡
RPSRFS
15
XDP与eBPF加速
XDP绑定 · eBPF map · 绕过内核协议栈
XDPeBPF
16
用户态协议栈
OpenOnload · VMA · DPDK l2fwd
用户态协议栈
17
内存分配与NUMA
numactl · mbind · 避免跨NUMA访问
NUMA内存
18
大页内存(HugePages)
2MB/1GB大页 · 关闭THP · DPDK大页分配
HugePagesTHP
19
CPU频率与节能策略
cpufreq governor · performance · intel_pstate
频率节能
20
性能监控工具
perf stat · mpstat · pidstat线程迁移
perf监控
21
火焰图分析
perf record · FlameGraph · 识别迁移热点
火焰图perf
22
基准测试方法
cyclictest · trafficgen · 抖动分析
基准测试延迟
23
交易系统架构设计
主备线程 · 读写分离 · 事件驱动+亲和性
架构设计模式
24
订单处理流水线
接收-校验-撮合-风控-发送绑定 · 核心隔离
流水线隔离
25
行情数据解析
行情网关绑定 · 多路合并 · 低延迟解码
行情低延迟
26
风控与合规线程
风控核心隔离 · 日志落盘 · 避免干扰交易
风控隔离
27
数据库与持久化
Redis绑定 · InfluxDB绑定 · 本地文件系统优化
数据库持久化
28
容器化环境亲和性
Docker --cpuset-cpus · K8s CPU Manager · Kubelet静态
容器Kubernetes
29
云环境与裸金属
AWS EC2专用 · 阿里云弹性裸金属 · 物理机vs虚拟机
裸金属
30
综合案例:低延迟交易服务器
从零搭建 · 性能调优checklist · 常见问题排查
实战checklist