作者回复: 进程如果设置为SCHED_FIFO 或者SCHED_RR实时调度类型,那么只要进程任务不结束,就不会把cpu资源让给SCHED_NORMAL进程。这种实时的进程,在实时性要比较高的嵌入式系统中会用到,但是云平台中提供互联网服务的应用中不太会去用实时调度。
作者回复: 首先这个容器已经在节点上运行了,并且其他的容器也都配置了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的数量了。
作者回复: 对的,不限制。
作者回复: 一个pod只能在一个节点上运行,如果一个节点上的cpu是40, 那么limit.cpu最大只能是40
作者回复: 网络I/O 没有wa状态部分。 hi/si 对于磁盘都是有的。
作者回复: 一般对于容器,是一个cgroup控制组里限制容器中的所有进程。
作者回复: 一些嵌入式实时的程序需要实时调度的
作者回复: 文稿里有链接的。 https://github.com/chengyli/training/tree/main/cpu/cgroup_cpu
编辑回复: 后面高能更多~加油
作者回复: softirq 指 bottom half of interrupt, 是中断处理的一部分, 和系统调用是两个概念。 可以找一本Linux kernel的书籍看一下,比如Linux kernel development.