Generated by Answer me with HTML 0.5.7 · 2026-10-23 11:37 · ★ Star on GitHub

重启后的 A/B 中期结果

参数确认生效,但收益预期要下调,判据交给采样器

source实测 /proc · 采样器首点 11:35 · 2026-10-23
先说要下调的预期
  • 三个 MALLOC 参数已确认在网关进程里生效。
  • 但新网关 13 分钟就到 494 MB,老网关跑 9.8 小时才 530 MB。
  • 网关大头是启动即分配的对象,不是长期累积的碎片。
  • 所以收益从预期 80 到 120 MB 下调到可能只有 40 到 60 MB。
A

前后对比

项目 调优前 调优后 是否可比
网关 RSS 530 MB 494 MB 否,运行时长差 45 倍
网关运行时长 9 小时 47 分 13 分钟 否
匿名块总数 157 个 185 个 反直觉
大于 4 MB 的块 32 个 39 个 反直觉
最大单块 110 MB 152 MB 变化大
线程数 40 36 大体一致
MALLOC 环境变量 无 三个全在 已确认
反直觉的地方

块数和大块数都没降,最大单块反而从 110 MB 涨到 152 MB。说明那块 152 MB 是一次性大分配,不是 arena 碎片,调 arena 上限管不到它。

B

关键反证

0100200300400500600530老网关9.8 小时494新网关13 分钟
数据
老网关 9.8 小时530
新网关 13 分钟494
  • 如果内存是碎片累积,新进程 13 分钟不该接近 500 MB。
  • 老进程跑了近 10 小时才 530 MB,说明它一开始就在 500 MB 附近。
  • 结论:网关的常驻主体是启动即载入的对象,分配器调优只能修剪边角。
C

判据交给采样器

采样脚本
/root/.hermes/scripts/mem_ab_sampler.py
输出
/root/.hermes/data/mem_tune_ab_20261023.csv
频率
每 5 分钟
时长
4 小时,48 个点
首点
网关 495 MB,匿名 465 MB,大块 39 个
  • 判据一:4 小时后网关稳态是否低于老进程的 530 到 558 MB。
  • 判据二:匿名大块数量是否随时间增长,增长慢于老进程才算有效。
  • 判据三:系统可用内存是否稳定不低于 500 MB。
  • 只跑 13 分钟就下结论会错,因为两边的运行时长根本不可比。
D

D hy-memory 侧的新情况

指标 调优前 现在
阈值 350 MB 450 MB
冷却 20 分钟 45 分钟
当前 RSS — 398 MB,运行 46 分钟
实测涨速 — 约 6.8 MB/分
阈值 450 在高负载下收益有限

这轮对话写入密集,hy-memory 从 90 MB 涨到 398 MB 只用了 46 分钟。按这个速度,450 的阈值只比 350 多撑约 15 分钟。真正省的是空闲时段,那时不涨就不重启。

  • 内存没有硬上限,系统已用 1182 MB,可用 525 MB,空闲 72 MB。
  • 空闲偏低但有 621 MB 页缓存可回收,不构成风险。 AM_EOF