Docker 之 Linux CGroup
基本概念 Linux CGroup 全称 Linux Control Group, 是 Linux 内核的一个功能,用来限制,控制与分离一个进程组群的资源(如 CPU、内存、磁盘输入输出等)。 主要提供了如下功能: Resource limitation: 限制资源使用,比如内存使用上限以及文件系统的缓存限制。 Priority control : 优先级控制,比如:CPU 利用和磁盘 IO 吞吐。 Accounting: 一些审计或一些统计,主要目的是为了计费。 Control: 挂起进程,恢复执行进程。 一些基本的资源子系统: Block IO(blkio):限制块设备(磁盘、SSD、USB 等)的 IO 速率 CPU Set(cpuset):限制任务能运行在哪些 CPU 核上 CPU Accounting(cpuacct):生成 cgroup 中任务使用 CPU 的报告 CPU (CPU):限制调度器分配的 CPU 时间 Devices (devices):允许或者拒绝 cgroup 中任务对设备的访问 Freezer (freezer):挂起或者重启 cgroup 中的任务 Memory (memory):限制 cgroup 中任务使用内存的量,并生成任务当前内存的使用情况报告 Network Classifier(net_cls):为 cgroup 中的报文设置上特定的 classid 标志,这样 tc 等工具就能根据标记对网络进行配置 Network Priority (net_prio):对每个网络接口设置报文的优先级 perf_event:识别任务的 cgroup 成员,可以用来做性能分析 CPU 限制 创建 cgroup 首先,直接在 cgroup 对应的子资源目录下, 用 mkdir 创建一个目录,就会自动包含必要文件 ...