Generated by Answer me with HTML 0.5.11 · 2026-11-10 14:32 · ★ Star on GitHub
运行内存账本与优化清单
物理 1708MB · 可用 480MB · 网关基线 597MB,重启无效
结论
物理内存 1708MB,已用 1227MB,可用 480MB。 文件缓存 581MB 已经算在可用里,清缓存只让 free 数字变大。 网关 597MB 是结构性基线。13:43 刚重启,14:24 又到 577MB。 真正能压的只有进程对象,合计 150–250MB,且都要付功能代价。
- 物理内存
- 1708 MB
- 已用
- 1227 MB
- 可用
- 480 MB
- 文件缓存
- 581 MB
- Swap 已用
- 571 MB
- 内存压力
- 0.18 %
进程账本
| 进程 | RSS | 占比 | 可动性 |
|---|---|---|---|
| hermes 网关 | 597 MB | 35.0 % | 结构性,只能减功能 |
| hy-memory | 237 MB | 13.9 % | 可压缩,需重建索引 |
| 飞书卡片 runner | 92 MB | 5.4 % | 可关,损失卡片 |
| mihomo | 45 MB | 2.6 % | 必需 |
| caddy | 24 MB | 1.4 % | 必需 |
| 系统与内核 slab | 73 MB | 4.3 % | 多数不可回收 |
| 合计 | 1068 MB | 62.6 % | 缺口为页表与共享内存 |
hy-memory 另有 148MB 在 swap 里,工作集约 385MB。 它 13:40 触发过一次记忆预取超时 8 秒,就是换入延迟。
网关 597MB 拆解
- 最大单块匿名映射
- 145 MB
- Python heap 主区
- 112 MB
- 库文件映射合计
- 83 MB
- 线程数
- 51
- 打开文件描述符
- 72
- state.db 打开句柄
- 9
匿名内存约 520MB,是 Python 运行时对象。 不是数据库缓存:state.db 的 mmap_size 为 0,每连接缓存仅 2MB。 也不是库太重:Python 与依赖映射合计只有 83MB。 所以只能减对象,也就是减插件、减工具、减会话。
启用插件 7 个:disk-cleanup、feishu-card、hfc 依赖、hy-memory、mcp-serve、feishu、web。 技能共 227 个,已禁用 82 个,仍有 145 个参与索引。
可优化项
| 措施 | 预期效果 | 代价 | 风险 | 优先级 |
|---|---|---|---|---|
| 重建 hy-memory 向量集合 | 省 40–70 MB | 检索短暂变慢 | 中,先备份 | P1 |
| 清 8 月 pipeline_logs 8297 条 | 省 5–10 MB | 无 | 低 | P1 |
| 关 disk-cleanup / mcp-serve | 省 20–40 MB | 失去对应功能 | 低,需重启 | P1 |
| 飞书卡片 runner 改纯文本 | 省 92 MB | 失去卡片 | 中,体验降级 | P2 |
| state.db VACUUM | 磁盘省大于 100 MB | 需停网关 | 中,内存几乎不变 | P2 |
| 关 at-spi / polkitd | 省 5 MB | 无 | 可忽略 | P3 |
| 清 inode 与 dentry 缓存 | free 增 30–45 MB | 不增可用内存 | 低,IO 抖动 | 可不做 |
| agent_cache 阈值 500→300 | 仅多会话生效 | 冷启动变慢 | 低,当前单会话无效 | 可不做 |
hy-memory 存了 2946 条向量却占 106MB,平均 36KB 一条。 bge-m3 的 1024 维向量只需 4KB,超出部分是索引与冗余。 这是全表里唯一能省两位数、又不砍功能的项。
swap 已用 571MB,可用内存只有 480MB。 执行 swapoff 会把这 571MB 拉回物理内存,直接触发 OOM。 当前压力 0.18%,swap 抖动不构成问题。
执行顺序
- 已确认网关基线597MB 属结构性,重启无效
- P1配置瘦身关两个插件,清旧日志,省 25–50MB
- P2数据重建备份后重建向量集合,省 40–70MB
- P3功能取舍飞书卡片改纯文本,省 92MB