2014/02/10(月)mallocはどのメモリを消費するのか

メモリ使用状況は、それぞれどのように見えているのか。
x86-64bit, v3.5では、AnonPagesに使用され、buddyinfoでは切り崩されていく様子が見える。
psコマンドでRSSが肥大化していることもわかるので、トレースできている。
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>

#define BLKSIZE 4096
#define BLKCOUNT (1024 * 1024 * 1024 / BLKSIZE)

int main()
{
int i;
int* p;

	fprintf(stderr, "We will allocate 1GB...\n");
	sleep(30);
	for (i=0; i<BLKCOUNT; ++i) {
		p = (int*)malloc(BLKSIZE);
		*p = 0;
	}

	fprintf(stderr, "allocated BLKSIZE=%d, count=%d\n", BLKSIZE, i);

	sleep(30);

	fprintf(stderr, "exit...\n");
return 0;
}


/*


sudo sh -c 'echo 3 > /proc/sys/vm/drop_caches \
 && free > free.before \
 && cat /proc/meminfo > meminfo.before \
 && cat /proc/slabinfo  > slabinfo.before \
 && cat /proc/buddyinfo > buddyinfo.before \
 && cat /proc/$(pgrep a.out)/smaps > smaps.before \
 && cat /proc/$(pgrep a.out)/maps > maps.before'
ps -eFwl


sudo sh -c 'echo 3 > /proc/sys/vm/drop_caches \
 && free > free.after \
 && cat /proc/meminfo   > meminfo.after \
 && cat /proc/slabinfo  > slabinfo.after \
 && cat /proc/buddyinfo > buddyinfo.after \
 && cat /proc/$(pgrep a.out)/smaps > smaps.after \
 && cat /proc/$(pgrep a.out)/maps > maps.after'

ps -eFwl
*/