MetricsCollector::can_reset_vm_hwm() 名义上用于检查是否能重置 VmHWM,但实现直接写 /proc/self/clear_refs:
MetricsCollector::can_reset_vm_hwm()
/proc/self/clear_refs
fs::write("/proc/self/clear_refs", "5").is_ok()
main.rs 在 benchmark 开始前调用该函数,导致一次"权限检查"已经重置了当前进程的 VmHWM。
main.rs
Commit: 83f633a
83f633a
将 fs::write 替换为 OpenOptions::new().write(true).open() — 仅打开文件获取 write fd,不写入数据。内核仅在 write 时重置 VmHWM,open 操作无副作用。
fs::write
OpenOptions::new().write(true).open()
验证:独立测试程序确认 open probe 后 VmHWM 不变(delta=0 kB),cargo test -p log-viewer-bench 16/16 通过。
cargo test -p log-viewer-bench
No dependencies set.
The note is not visible to the blocked user.
问题
MetricsCollector::can_reset_vm_hwm()名义上用于检查是否能重置 VmHWM,但实现直接写/proc/self/clear_refs: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-bench16/16 通过。