gpt4 book ai didi

linux - 最大驻留集大小没有意义

转载 作者:IT老高 更新时间:2023-10-28 12:39:34 24 4
gpt4 key购买 nike

我正在尝试测量 Linux 中正在运行的程序的内存消耗。我写了一个C程序分配1G内存,然后用时间输出它的“Maximum resident set size”:

/usr/bin/time -f '%Uu %Ss %er %MkB %x %C' ./takeMem 1000000000

0.85u 0.81s 1.68r **3910016kB** 0 ./takeMem 1000000000

man time 来看,我应该解释为此类程序的“最大驻留集大小”占用 3.9G 内存,尽管该程序仅分配了 1G 内存。这没有意义。

任何人都知道发生了什么导致“最大驻留集大小”这么高吗?

C 代码很简单:

#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
int memLength = atoi(argv[1]);
fprintf(stderr, "Allocating %d memory...", memLength);
unsigned char* p = new unsigned char[memLength];
fprintf(stderr, "Done\n");
while (true) {
int i = rand() % memLength;
char v = rand() % 256;
p[i] = v;
}

return 0;
}

最佳答案

我不久前偶然发现了这个。这是 GNU 时代的一个错误,值太大了 4 倍,因为它假定页面大小并将其转换为 kB,即使它首先已经是 kB。你可能想检查一下:

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

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

关于linux - 最大驻留集大小没有意义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10035232/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com