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 实践手动配额
- 编写一个c文件,让该进程一直暂用cpu。
root@mouse:~# cat 1.cint main(void){ while (1) { }return 0;}root@mouse:~# gcc 1.croot@mouse:~# ./a.out
- 查看该进程cpu占用率3
该a.out 执行程序进程ID:1316暂用cpu高达90%以上。 - 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#
- 将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
- 再次查看该进程CPU使用率
可以看到该进程的cpu使用率为5%
这好神奇 😕
2. 总结
- cpu配额,控制cpu对进程时间分配。
进入linux大门可以看这个视屏:https://ke.qq.com/course/4032547?flowToken=1042701
学习还是得靠自己。❤️
2.1 技术参考
参考链接1:使用cgroups控制进程cpu配额