最大驻留集大小没有意义

我试图测量Linux中正在运行的程序的内存消耗。我编写了一个C程序来分配1G内存,然后用时间输出它的“最大驻留集大小”:

/usr/bin/time-f“%Uu%Ss%er%MkB%x%C”。/takeMem 100000000
0.85u 0.81s 1.68r**3910016kB**0./takeMem 100000000

人工时间,我应该解释这样的程序的“最大驻留集大小”需要3.9G内存,尽管该程序只分配了1G内存。这没有道理

有谁知道是什么导致了“最大驻留集大小”如此之高

C代码非常简单:

\include<标准h>
#包括<stdlib.h>
int main(int argc,char*argv[])
{
int memLength=atoi(argv[1]);
fprintf(标准,“分配%d内存…”,memLength);
无符号字符*p=新的无符号字符[memLength];
fprintf(stderr,“完成”\n);
while(true){
int i=rand()%memLength;
char v=rand()%256;
p[i]=v;
}
返回0;
}

我刚才偶然发现了这个。这是GNU时间中的一个bug,值太大了4倍,因为它假设页面的大小并将其转换为kB,即使它首先已经是kB了。
您可能需要检查:

http://groups.google.com/group/gnu.utils.help/browse_thread/thread/bb530eb072f86e18/83599c4828de175b

http://forums.whirlpool.net.au/archive/1693957

发表评论