Docker通过Cgroup来控制容器使用的资源配额,包括 CPU、内存、磁盘三大方面,基本覆盖了常见的资源配颡和使用量控制。
Cgoup 是CotrolGroups 的缩写,是Linux 内核提供的一种可以限制、记录、隔高进程组所使用的物理资源(如CPU、内存、磁盘 IO 等等)的机制,被LXC、docker等很多项目用于实现进程资源控制。cgroup 本身是提供将进程进行分组化管理的功能和接口的基础结构,IO或内存的分配控制等具体的资源管理是通过该功能来实现的。
目录
一、CPU资源限制
1.设置CPU使用率上限
Linux通过CFS(Completely Fair Scheduler,完全公平调度器)来调度各个进程对CPU的使用。CFS默认的调度周期是10ms。我们可以设置每个容器进程的调度周期,以及在这个周期内各个容器最多能使用多少CPU 时间。
--cpu-period #设置调度周期,数值范围是1000~1000000
--cpu-guota #设置在每个周期内容器能使用的CPU时间,值必须>=1000
--cpu-period,CPU分配的周期(微秒,所以文件名中用us表示)默认为100000。
--cpu-guota,表示该cgroups限制占用的时间(微秒),默认为-1,表示不限制。如果设为50000表示占用50000/100000=50%的CPU。
创建时限制cpu,然后随便执行一个死循环,在另一个终端进入容器执行top命令,查看发现cpu跑满只有30%了。