🔴 [H2] can_reset_vm_hwm 查询权限时会重置 VmHWM 污染内存峰值 #34

Closed
opened 2026-06-05 11:53:22 +08:00 by dailz · 0 comments
Owner

问题

MetricsCollector::can_reset_vm_hwm() 名义上用于检查是否能重置 VmHWM,但实现直接写 /proc/self/clear_refs

fs::write("/proc/self/clear_refs", "5").is_ok()

main.rs 在 benchmark 开始前调用该函数,导致一次"权限检查"已经重置了当前进程的 VmHWM。

修复

Commit: 83f633a

fs::write 替换为 OpenOptions::new().write(true).open() — 仅打开文件获取 write fd,不写入数据。内核仅在 write 时重置 VmHWM,open 操作无副作用。

验证:独立测试程序确认 open probe 后 VmHWM 不变(delta=0 kB),cargo test -p log-viewer-bench 16/16 通过。

## 问题 `MetricsCollector::can_reset_vm_hwm()` 名义上用于检查是否能重置 VmHWM,但实现直接写 `/proc/self/clear_refs`: ```rust fs::write("/proc/self/clear_refs", "5").is_ok() ``` `main.rs` 在 benchmark 开始前调用该函数,导致一次"权限检查"已经重置了当前进程的 VmHWM。 ## 修复 **Commit**: 83f633a 将 `fs::write` 替换为 `OpenOptions::new().write(true).open()` — 仅打开文件获取 write fd,不写入数据。内核仅在 write 时重置 VmHWM,open 操作无副作用。 验证:独立测试程序确认 open probe 后 VmHWM 不变(delta=0 kB),`cargo test -p log-viewer-bench` 16/16 通过。
dailz closed this issue 2026-06-05 13:34:10 +08:00
dailz added reference 83f633a 2026-06-05 13:37:26 +08:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: dailz/logViewer#34