资源组的实际资源是如何分配的?

cpu_core_limit 是 资源组在当前 BE 节点可使用的 CPU 核数软上限,实际使用的 CPU 核数会根据节点资源空闲程度按比例弹性伸缩,那么是如何按照比例伸缩的呢?
比如BE有16个Core,我设置了3个资源组 rg1、rg2、rg3, cpu_core_limit 分别设置为 268,官网上说:
当rg1 rg2 rg3 都满载时,rg1、rg2、rg3 分别分到的CPU核数为 16 * (2/16) = 2个,6个 和8个CPU核数,那么当 rg1 满载, rg2和r3不满载, 即r2用了30%,rg3用了60%,这种情况 怎么计算每个资源组分配多少核数呢?
怎么实时的查看 每个资源组 分配了多少核数?

cpu_core_limit 并不是核数的软限制,是 cpu 使用的权重。您这个例子里如果都满载就是按 1:3:4 分配 cpu 时间片的使用。如果 rg1 没有满载,当 rg1 使用完 cpu 资源后,rg2 和 rg3 按 3:4 分配 cpu 使用时间。

@dongyingting 那么当rg1没有满载,但是也没有空载呢?rg2 和 rg3是满载。这个时刻怎么分配 CPU呢

一个调度周期内是按比例分配的,比如 CPU 时间片按 200ms 划分。一个调度周期包含8个时间分片。rg1运行的查询假设只需要10ms,那一个调度周期内rg1还是占用200ms,rg2 占用600ms,rg3占用800ms。到下一个调度周期 rg1就不占用CPU的时间分片了。按3:4分配给rg2和rg3.

明白了 谢谢 董老师

请问下,这个参数到底be使用的的cores的核数上限,还是权重?如果是权重,我就一个资源组,40core,能设置成36core吗