docker cgroup资源分配与TLS

docker cgroup资源分配

Cgroup资源配置方法

  Docker通过Cgroup来控制容器使用的资源配额,包括CPU、内存、磁盘三大方面,基本覆盖了常见的资源配额和使用量控制。

  Cgroup是Control Groups的缩写,是Linux内核提供的一种可以限制、记录、隔离进程组所使用的物理资源(如CPU、内存、磁盘I0等等)的机制,被LXC、docker等很多项目用于实现进程资源控制。Cgroup本身是提供将进程进行分组化管理的功能和接口的基础结构,I/O或内存的分配控制等具的资源管理是通过该方法进行分配
  这些具体的资源管理功能称为Cgroup子系统,有以下几大子系统实现:

  • blkio:设置限制每个块设备的输入输出控制。例如:磁盘,光盘以及usb等等。
  • CPU:使用调度程序为cgroup任务提供CPU的访问。
  • cpuacct:产生cgroup任务的CPU 资源报告。
  • devices:允许或拒绝cgroup任务对设备的访问。
  • freezer:暂停和恢复cgroup任务。
  • memory:设置每个cgroup 的内存限制以及产生内存资源报告。
  • net_cls:标记每个网络包以供cgroup方便使用。
  • ns:命名空间子系统,对一个组的资源进行分配,如分配给一个组的资源为百分之50那么组内的所有成员所用资源不能超过百分之50
  • perf_event:增加了对每个group 的监测跟踪的能力,可以监测属于某个特定的group 的所有线程以及运行在特定CPU上的线程。
  • cpuset:如果是多核心的CPU,这个子系统会为cgroup任务分配单独的CPU和内存。

配置示例

使用stress工具测试CPU和内存

下面开始利stress压力测试来测试CPU和内存使用状况.
使用Dockerfile来创建一个基于centos的stress工具镜像

[root@client ~]# mkdri /opt/stress
[root@client ~]# vim /opt/stress/Dockerfile
FROM centos:7
MAINTAINER cpu fenpei
RUN yum install -y wget
#epel源拓展的软件包
RUN wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
RUN yum install -y stress
[root@client stress]# docker build -t centos:stress .

使用–cpu-shares参数来分配CPU使用权值,stress是用来创建进程进行压力测试的

[root@client stress]# docker run -itd --name cpu512 --cpu-shares 512 cnetos:stress stress -c 10

进入容器使用top命令查看进程

你可能感兴趣的:(docker,cgroup,TLS,资源分配)