Tôi đang cố gắng đo mức tiêu thụ bộ nhớ của một chương trình đang chạy trong Linux. Tôi đã viết một chương trình C để phân bổ bộ nhớ 1G, sau đó sử dụng thời gian để xuất ra "Kích thước thiết lập người cư trú tối đa":Kích thước bộ thường trú tối đa không có ý nghĩa
/usr/bin/time -f '%%%%%%'% './takeMem 1000000000
0.85u 0.81s 1.68r 3910016kB 0 ./takeMem 1000000000
Từ 'thời gian người đàn ông, tôi nên giải thích rằng "kích thước tập hợp lưu trú tối đa" cho chương trình như mất trí nhớ 3.9G mặc dù chương trình chỉ phân bổ bộ nhớ 1G. Nó chả có nghĩa gì cả.
Ai có thể biết điều gì đã xảy ra gây ra "Kích thước tập hợp người ở tối đa" cao không?
Mã C là khá đơn giản:
#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;
}
Đối với hệ thống RedHat/CentOS/Fedora này đã được vá trong gói 'thời gian 1.7-38': https://bugzilla.redhat.com/show_bug .cgi? id = 702826 – daharon