您的位置:首页 > 运维架构 > Docker

Docker容器资源管理cgroups功能测试

2015-10-25 13:17 801 查看
2015-10-25 wcdj

Docker创建的容器通过Linux内核的cgroups功能(2.6.24)实现资源的分配和控制。本文使用docker 1.5版本进行测试。

root@gerryyang:/sys/fs/cgroup# ls
blkio/	cpu/  cpuacct/	cpuset/  devices/  freezer/  hugetlb/  memory/	perf_event/  systemd/
例如,我们运行了一个容器,可以制定容器的资源使用情况。



测试:memory.limit_in_bytes

# cd /sys/fs/cgroup/memory/docker/16780
# echo “100003840” > memory.limit_in_bytes
# docker stats 1678
# docker attach 1678

在容器里执行内存分配的测试程序

#include<stdio.h>  
#include<malloc.h>  
#include <string.h>
int main()  
{  
	char *p = NULL;  
	const int bs = 10 * 1024 * 1024;

	for (;;) {
		p = (char *)malloc(bs);  
		if (p) {  
			sleep(1);
			memset(p, 0x1, bs);
			//printf("Memory allocated at: %x/n", p); 
		} else {  
			printf("Not enough memory!/n");
		}
	}

	return 0;  
}


通过在宿主机执行docker stats命令可以查看某个容器的资源使用情况。



在容器运行后,通过修改容器的memory.limit_in_bytes配置,可以实时的控制容器的内存分配情况,当我们的测试程序的内存使用量超过配置的内存限额后会被系统kill掉。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: