cgroup-メモリ制限メモリテスト

1161 ワード

メモリディレクトリへ:
root@ubuntu:/sys/fs/cgroup# cd memory/
root@ubuntu:/sys/fs/cgroup/memory#

メモリ上限を設定するには:
root@ubuntu:/sys/fs/cgroup/memory/test# echo 400M > memory.limit_in_bytes 
root@ubuntu:/sys/fs/cgroup/memory/test# echo 400M > memory.memsw.limit_in_bytes

次のコードでテストします.
#include <stdio.h>
#include <stdlib.h>

#define MEGABYTE (1024*1024)

int main(int argc, char *argv[])
{
	void *myblock = NULL;
      	int count = 0;
	int i;	
      	while (1)
      	{
              	myblock = (void *) malloc(MEGABYTE);
              	if (!myblock) 
	       		break;
	      	for(i = 0;i < MEGABYTE / 4;i ++)	///  , 
		{			///  , 。
			((unsigned int*)myblock)[i]	= i;
		}
              	count++;
 			printf("%d 
",count); } exit(0); }

テストコマンドを起動し、malloc関数でNULLを返すのではなく、最大メモリを申請したときにプロセスがkilledされます.
root@ubuntu:~/TestDir/mem# cgexec -g memory:test ./a.out
1 
2 
3 
4 
5 
6 
7 
8 
9 
10 
11 
12 
/********** ********/
395 
396 
397 
398 
Killed
root@ubuntu:~/TestDir/mem#