cpu cgroup 的作用是什么?
限制cgroup 下的进程的cpu的使用额度
cpu cgroup 的使用方式
对cpu cgroup 相关的配置文件进行配置。
1: cpu 资源是如何被抽象的?
自己的理解:使用 时间 来对cpu进行抽象。
2: cpu cgroup 相关的配置文件
cpu.cfs_period_us 单位是微秒,一个cpu周期的时间长度
cpu.cfs_quota_us 单位是微秒,在一个cpu周期内占据的时间长度。
cpu.shares 使用相对值来设置cpu的使用率
cpu.stat cpu使用状况的信息。
3: 如何限制进程对于cpu的使用率。
cpu.cfs_period_us
cpu.cfs_quota_us
使用这两个配置文件对cgroup 之中的进程的cpu使用资源进行限制。
4: 需要一个大量占据cpu的程序。
while :; do echo test > /dev/null; done
5: cpu.stat 文件之中的参数解析
nr_periods 经过的cpu周期总数
nr_throttled 在经过的cpu周期总数之中,有多少次是被阻塞的(进程花光了分配的cpu的配额)
throttled_time cgroup中的进程被限制使用CPU持续了多长时间(纳秒)
5: docker 对cpu 资源的限制,背后的实现原理是什么?
实验:
目的:验证cpu cgroup 的功能。使一个原本会占据一个cpu 100%的程序,只会占据20%的cpu使用。
步骤:
1: 创建一个 cpu cgroup test
mkdir /sys/fs/cgroup/cpu/test
2: 设置cpu的配额为 单个cpu的20%
echo 10000 > /sys/fs/cgroup/cpu/test/cpu.cfs_period_us
echo 2000 > /sys/fs/cgroup/cpu/test/cpu.cfs_quota_us
3: 将当前进程号 写入到 cgroup.procs 文件之中。
echo $$ > /sys/fs/cgroup/cpu/test/cgroup.procs
4:执行 导致单个cpu 使用率 100%的程序。
while :; do echo test > /dev/null; done