05|容器CPU(1):怎么限制容器的CPU使用?
该思维导图由 AI 生成,仅供参考
- 深入了解
- 翻译
- 解释
- 总结
本文深入介绍了如何在Kubernetes平台中限制容器的CPU使用,以及Linux系统中的CPU使用分类和CPU Cgroup的工作原理。文章详细讲解了CPU Cgroup中的三个重要参数"cpu.cfs_quota_us"、"cpu.cfs_period_us"和"cpu.shares"的作用,以及如何通过这些参数来限制容器的CPU使用。通过实际例子和操作步骤,读者可以快速了解如何在容器中限制CPU使用,并对CPU Cgroup的工作原理有了深入的了解。文章还提出了思考题,引发读者思考和讨论。整体而言,本文内容丰富,涵盖了CPU资源管理的关键知识点,适合技术人员深入学习和交流。
《容器实战高手课》,新⼈⾸单¥59
全部留言(36)
- 最新
- 精选
- Action为什么说“云平台里呢,大部分程序都不是实时调度的进程,而是普通调度(SCHED_NORMAL)类型进程”?这块不是很明白
作者回复: 进程如果设置为SCHED_FIFO 或者SCHED_RR实时调度类型,那么只要进程任务不结束,就不会把cpu资源让给SCHED_NORMAL进程。这种实时的进程,在实时性要比较高的嵌入式系统中会用到,但是云平台中提供互联网服务的应用中不太会去用实时调度。
2020-12-2513 - 海盗船长老师,不太明白 “Request CPU就是无论其他容器申请多少 CPU 资源,即使运行时整个节点的 CPU 都被占满的情况下,我的这个容器还是可以保证获得需要的 CPU 数目”,这句话改怎么理解呢?当节点cpu都被占满的情况下,我的这个容器会去抢占吗? 另外cpu.shares是个权重,如何去保证Request CPU的数量?
作者回复: 首先这个容器已经在节点上运行了,并且其他的容器也都配置了cpu.shares。 比如shares比例, group4: group3=3:1, 在一个4个CPU的节点上,我们先不用考虑limit, 对于group4,如果没有group3的程序运行,那么group4里的4个线程运行的时候可以占用4个CPU。当group3里的2个线程也运行起来了,即使2个线程最大可以消耗2个CPU,但是由于有了shares比例分配,那么group4里的线程仍然可以保证有3个CPU, 而分配给group3的只有1个CPU。 cpu.shares是个相对值,但是在Linux节点上一般的约定是以值1024为1个CPU的比例,当所有的配置都遵守这个约定的时候,那么给值N*1024, 就表示N个CPU的数量了。
2020-11-2525 - 言希请问老师,我在环境上遇到 cpu.cfs_quota_us 取值为 -1 的,这种是不是代表的不限制CPU的使用 ?
作者回复: 对的,不限制。
2021-04-293 - Action老师,假如我有10个节点,每个节点的cpu核心数是40,只是调度pod,那么limit.cpu 可以设置为400吧?
作者回复: 一个pod只能在一个节点上运行,如果一个节点上的cpu是40, 那么limit.cpu最大只能是40
2020-12-253 - 兜兜请问下关于wa和hi/si的问题: 1. 例子中,wa是等待磁盘IO的状态,那等待网络IO时,是不是wa呢? 2. 例子中,hi/si是收到网卡中断,那收到磁盘中断时,是不是也是hi/si?
作者回复: 网络I/O 没有wa状态部分。 hi/si 对于磁盘都是有的。
2020-11-293 - 谦寻老师,您好,如果一个容器里面有多个进程,这个限制是针对所有进程,还是只是pid是1的进程?
作者回复: 一般对于容器,是一个cgroup控制组里限制容器中的所有进程。
2020-12-072 - 不二请问老师,cpu.rt_runtime_us一般是不是用不上,Linux系统中哪些程序会被配置为实时调度程序呢?如果没有实时调度程序这个参数也就没有了存在的必要吧
作者回复: 一些嵌入式实时的程序需要实时调度的
2021-01-141 - *老师, threads-cpu这个脚本能提供吗
作者回复: 文稿里有链接的。 https://github.com/chengyli/training/tree/main/cpu/cgroup_cpu
2022-02-272 - Geek_ce0af4评论区太精彩
编辑回复: 后面高能更多~加油
2021-08-30 - 马成软中断我理解就是内部中断,系统调用是其中的一种。那么sy内核时间指的是系统调用时间么?si软中断时间包含系统调用时间么?我被搞糊涂了……
作者回复: softirq 指 bottom half of interrupt, 是中断处理的一部分, 和系统调用是两个概念。 可以找一本Linux kernel的书籍看一下,比如Linux kernel development.
2021-07-222