Bootstrap

cgroup--内存 限制内存测试

进入内存目录:

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 \n",count);
      	}
      	exit(0);
}

启动测试命令,当申请到最大内存的时候进程被killed,而不是通过malloc函数返回NULL的形式被终止:

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# 




;