结论先行
「加 2 核值不值」不能靠拍脑袋,应该拆成三组可复现的对照实验,用「P99 超标时长占比下降 × 硬件成本」量化。你现在的长尾根因已经定位到 softirq 在小核执行抢占大核(12ms 案例),所以加核的本质是给中断/软中断路径留出独立核,把控制回路和通信彻底隔离——不是「多核让单核更快」,而是「多核让噪声离开关键路径」。这个语义决定了加 2 核的收益上限 ≈ 消除 softirq 抢占的时长占比,而不是线性叠加算力。
一、加核的真实收益上限:先算「softirq 抢占占比」
在不动硬件的前提下,先做一组纯软件实验(这是加 2 核收益的上限估计):
- 用
perf record -e sched:sched_switch -C 0-3 --call-graph dwarf抓 30 分钟,统计控制线程(FOC 线程)被抢占的总时长、被抢占来源(softirq / 其他线程 / 中断):perf script | awk '/S<0>/ && /foc/ {print $NF}' | sort | uniq -c | sort -rn - 用
trace-cmd record -p function_graph -g irq_enter抓 softirq 路径,确认哪些 softirq 落到 A55。 - 算一个关键指标:softirq 抢占占比 = Σ(softirq 抢占控制线程的时长) / 观测窗口。
假设你抓出来是 0.8%,那么加 2 核的理论上限就是消除这 0.8% 的 P99 超标时长——如果当前 1.5% 超标里有 0.8% 是这个根因,加 2 核后超标率上限是 0.7%。这个数字直接决定要不要加。
二、加 2 核的标定实验(三组对照,每组跑 24h)
实验 A:基线(现状)
- 4 大核:控制线程绑 0-1,通信线程绑 2,softirq 默认
- 记录:P99、P99.9、超标时长占比(>8ms 的 ms 数 / 总 ms 数)、FOC 周期抖动分布(直方图分桶)
实验 B:软中断全绑大核(不加核,纯软件)
for i in /proc/irq/[0-9]*; do echo 1 > $i/smp_affinity_list; done(把中断源全绑核 0)- 或者更优雅:
irqbalance --banirq配合 isolcpus - 这一步是免费的收益上限——如果 B 组超标率降到 0.3%,加 2 核的边际收益就只剩 0.2%,直接可以否掉加核方案
实验 C:加 2 核(硬件到位后)
- 新核 4-5 分配:控制线程绑 0-1,通信线程绑 2,softirq/中断全绑 4-5(关键:让噪声核和关键核物理分离)
- 同时把
nohz_full=0-3扩到nohz_full=0-5,rcu_nocbs同步 - 记录同 A 组指标
判定标准(写进容量评审的可辩护数字):
- 如果 C 组超标率 < 0.3%(SLO 8ms 的余量 ≥ 2 倍)且 B 组已经能到 0.5% → 加 2 核不值,走软件方案
- 如果 C 组超标率 < 0.1% 而 B 组卡在 0.7% → 加 2 核值,但要看成本
- 如果 C 组和 B 组差距 < 0.1 个百分点 → 加 2 核不值,瓶颈不在核数
三、成本侧的量化
车规级域控制器的「加 2 核」通常意味着换 SoC 型号(从 4 大 4 小升到 6 大 4 小或 8 大 4 小),不是加一个 CPU。成本项:
- SoC 差价:问采购拿 6 大核 vs 4 大核同代 SoC 的 BOM 差价(通常 20%~40%)
- 认证成本:车规级 SoC 切换要重新走 AEC-Q100 / ISO 26262 认证,周期 6~12 个月,这是隐性大头
- SLO 收益的货币化:超标时长占比 × 单次超标的业务损失(车规场景通常是「召回风险」或「客户违约金」,问质量部门拿数字)
决策公式:
加核 ROI = (B 组超标率 - C 组超标率) × 单次超标损失 × 年运行时长
÷ (SoC 差价 × 年销量 + 认证摊销)
如果 ROI < 1,加核不划算;如果 > 3,加核划算;1~3 之间看认证周期能不能接受。
四、一个常被忽略的信号:FOC 周期抖动分布的形态
不要只看 P99 一个数,画 FOC 周期抖动(实际周期 - 2ms 目标)的直方图:
- 如果是双峰(一个峰在 0~50us、另一个峰在 10~15ms)→ 加核有效(消除第二峰)
- 如果是长尾连续分布(0.1ms 到 15ms 都有)→ 加核收益有限,根因是 cache miss / 内存带宽,加核解决不了
- 如果是单峰但位置偏移(比如集中在 3~5ms)→ 加核有效,且收益可预测
这个直方图比 P99 一个数能告诉你加 2 核到底能消除哪个峰,是写进评审报告里最有说服力的图。
五、落地清单(给老板的一页纸)
- 本周:跑实验 B(纯软件),24h 数据出 P99 / 超标率 / 抖动直方图
- 下周:拉 SoC 采购报价 + 认证周期评估
- 决策会:拿三组数据 + ROI 公式做判定
- 如果加核:新 SoC 到位后跑实验 C,48h 数据验收
- 如果软件方案:把 softirq 绑定固化到 systemd 或 containerd 配置里,加监控告警(
/proc/irq/*/smp_affinity_list漂移检测)
核心一句话:加核的收益上限是「消除 softirq 抢占」,不是「算力翻倍」;先用纯软件实验把上限摸出来,再决定要不要花钱买硬件。