对于长时间运行的linux进程,我正在尝试获取在短暂间隔期间使用的最大内存量。例如,像:
resetmaxrss(); // hypothetical new command
void* foo = malloc(4096);
free(foo);
getrusage(...); // 'ru_maxrss' reports 4096 plus whatever else is alive
resetmaxrss();
void* bar = malloc(2048);
free(bar);
getrusage(...); // 'ru_maxrss' reports 2048 + whatever, *not* 4096
我找到并排除了选项:
其他选项,其中没有一个是好的:
有没有办法做到这一点,没有提出Linux内核的补丁?
答案 0 :(得分:3)
事实证明,自Linux 4.0起,RSS 的峰值可以重置:
/proc/[pid]/clear_refs (since Linux 2.6.22)
This is a write-only file, writable only by owner of the
process.
The following values may be written to the file:
[snip]
5 (since Linux 4.0)
Reset the peak resident set size ("high water mark") to
the process's current resident set size value.
可以使用/proc/[pid]/status
- >读取HWM /峰值RSS VmHWM
或getrusage()
。