Generated by Answer me with HTML 0.5.7 · 2026-10-23 11:37 · ★ Star on GitHub
重启后的 A/B 中期结果
参数确认生效,但收益预期要下调,判据交给采样器
先说要下调的预期
- 三个 MALLOC 参数已确认在网关进程里生效。
- 但新网关 13 分钟就到 494 MB,老网关跑 9.8 小时才 530 MB。
- 网关大头是启动即分配的对象,不是长期累积的碎片。
- 所以收益从预期 80 到 120 MB 下调到可能只有 40 到 60 MB。
前后对比
| 项目 | 调优前 | 调优后 | 是否可比 |
|---|---|---|---|
| 网关 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 上限管不到它。
关键反证
数据
| 老网关 9.8 小时 | 530 |
|---|---|
| 新网关 13 分钟 | 494 |
- 如果内存是碎片累积,新进程 13 分钟不该接近 500 MB。
- 老进程跑了近 10 小时才 530 MB,说明它一开始就在 500 MB 附近。
- 结论:网关的常驻主体是启动即载入的对象,分配器调优只能修剪边角。
判据交给采样器
- 采样脚本
- /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 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