cpu cgroup

395 阅读1分钟

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