Linux 最大驻留集大小没有意义
我试图测量Linux中正在运行的程序的内存消耗。我编写了一个C程序来分配1G内存,然后用时间输出它的“最大驻留集大小”:Linux 最大驻留集大小没有意义,linux,memory,Linux,Memory,我试图测量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代码非
/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代码非常简单:
#包括
#包括
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了。
您可能需要检查:
对于RedHat/CentOS/Fedora系统,这是在包
time-1.7-38
中修补的: