KERNEL · BENCHMARK

Clash Meta 内核性能对比

mihomo 内核性能测试环境

📈 生产选型不能靠体感。在 Debian 12 旁路网关(Ryzen 7 / 32GB)上,用相同 12.4 万条规则集与 200 并发 HTTP CONNECT 对 mihomo 1.19.0sing-box 1.12.0Clash Premium 2023.08 做 10 分钟稳态压测。核心结论:mihomo 规则 P99 210µs(sing-box 268µs),稳态 RSS 186MB,为后续 GEOIP 调优出站协议选型 建立量化基线。

测试床与环境变量

硬件:AMD Ryzen 7 5800X / 32GB DDR4 / Samsung 980 Pro NVMe。系统:Debian 12,内核 6.1,net.core.somaxconn=65535。规则集:Loyalsoldier 合并版,约 12.4 万 DOMAIN-SUFFIX + GEOSITE 大类。出站:本地 loopback mock,排除真实节点 RTT 干扰。

负载模型

核心数据表

指标mihomo 1.19sing-box 1.12Clash Premium
冷启动 (s)4.23.15.8
稳态 RSS (MB)186142210
规则匹配 P50 (µs)384952
规则匹配 P99 (µs)210268295
10min 后 goroutine1,2048901,580

mihomo 特有配置的影响

unified-delay

开启 unified-delay: true 后,延迟探测从 TCP 握手改为 HTTP 首包,探测耗时增加约 15%,但 url-test 组选出的节点在 Web 场景更贴近真实体验。生产环境建议开启。

find-process-mode: strict

在 Linux 上读取 /proc 匹配 PROCESS-NAME 规则,CPU 占用上升 0.3–0.6%。若规则集未使用进程规则,设为 off 可节省开销。详见 规则优先级文

tcp-concurrent

对同一目标并发 IPv4/IPv6 拨号,在双栈网络下首包延迟降低 8%,但日志中会出现双倍连接尝试;排障时注意区分。

内存与 GC 行为

mihomo 在 geodata 加载阶段会出现单次 80MB+ 分配尖峰,来自 MMDB 解析;解析完成后回落至 180MB 左右。sing-box 使用相同 DAT 文件时峰值更低,因其 lazy-load 策略更激进。若部署在内存 <256MB 的路由器,建议:

  1. 裁剪规则集,移除未使用的 GEOSITE 类别
  2. 设置 GEODATA_MODE=memconservative(mihomo 环境变量)
  3. 考虑 sing-box 或 clash-rs 评估
⚠️ Clash Premium 已停更,仅作遗留对照。新部署请使用 mihomo,客户端获取见 下载页

复现命令

# 规则匹配微基准(需安装 hyperfine)
hyperfine --warmup 3 \
  'curl -s -o /dev/null -x http://127.0.0.1:7890 https://unique-test-{1..100}.example.com'

# RSS 采样
ps -o rss= -p $(pgrep mihomo) | awk '{print $1/1024 " MB"}'

结论与下一步

✅ mihomo 在规则匹配延迟上仍领先,适合大规则集桌面与网关场景;sing-box 内存更省,适合嵌入式。Premium 不应出现在 2026 年的新架构中。

读完本文后建议继续:GEOIP 优先级陷阱Hysteria2 弱网取舍9090 端口加固