> 文档中心 > Linux CFS进程组带宽控制

Linux CFS进程组带宽控制

 

1. linux CFS带宽控制_cgroups控制进程cpu配额

CFS带宽控制是一个CONFIG_FAIR_GROUP_SCHED扩展,它允许指定一个组或层次的最大CPU带宽。

一个组允许的带宽是用配额和周期指定的。在每个给定的”周期“(微秒)内,一个任务组被分配多
达“配额”微秒的CPU时间。当cgroup中的线程可运行时,该配额以时间片段的方式被分配到每个cpu
运行队列中。一旦所有的配额被分配,任何额外的配额请求将导致这些线程被限流。被限流的线程将不
能再次运行,直到下一个时期的配额得到补充。

1.1 查看系统的配额

root@mouse:/sys/fs/cgroup/cpu# cat cpu.cfs_period_us100000

表示将cpu时间片分成100000份。

root@mouse:/sys/fs/cgroup/cpu# cd /sys/fs/cgroup/cpuroot@mouse:/sys/fs/cgroup/cpu# cat cpu.cfs_quota_us-1root@mouse:/sys/fs/cgroup/cpu#

cpu.cfs_quota_us的值为-1表示该组没有任何带宽限制,这样的组被描述为无限制的带宽组。

1.2 实践手动配额

  1. 编写一个c文件,让该进程一直暂用cpu。
root@mouse:~# cat 1.cint main(void){ while (1) { }return 0;}root@mouse:~# gcc 1.croot@mouse:~# ./a.out
  1. 查看该进程cpu占用率3在这里插入图片描述
    该a.out 执行程序进程ID:1316暂用cpu高达90%以上。
  2. cpu 配额
root@mouse:/sys/fs/cgroup/cpu#  cd /sys/fs/cgroup/cpuroot@mouse:/sys/fs/cgroup/cpu# mkdir streamroot@mouse:/sys/fs/cgroup/cpu# cd stream/root@mouse:/sys/fs/cgroup/cpu/stream# lscgroup.clone_children  cpuacct.usage_percpu_sys   cpu.sharescgroup.procs    cpuacct.usage_percpu_user  cpu.statcpuacct.stat    cpuacct.usage_sys   cpu.uclamp.maxcpuacct.usage   cpuacct.usage_user  cpu.uclamp.mincpuacct.usage_all      cpu.cfs_period_us   notify_on_releasecpuacct.usage_percpu   cpu.cfs_quota_us    tasksroot@mouse:/sys/fs/cgroup/cpu/stream#
  1. 将5000写入cpu.cfs_quota_us,表示希望CPU占用率控制在(5000/100000=5%)以内
root@mouse:/sys/fs/cgroup/cpu/stream#  echo 5000 > cpu.cfs_quota_usroot@mouse:/sys/fs/cgroup/cpu/stream# echo 1316 >> tasks
  1. 再次查看该进程CPU使用率
    Linux CFS进程组带宽控制
    可以看到该进程的cpu使用率为5%

这好神奇 😕

2. 总结

  • cpu配额,控制cpu对进程时间分配。



进入linux大门可以看这个视屏:https://ke.qq.com/course/4032547?flowToken=1042701
学习还是得靠自己。❤️


2.1 技术参考

参考链接1:使用cgroups控制进程cpu配额