==================
Credit Scheduler
===================
目的:为在SMP之间平均分配CPU时间的调度器
其他选择:SEDF/BVT仍在实验阶段
描述:
每个domain(包括host),都分配一个weight和cap
weight:权重,1~65535,按照从大到小分配
cap:一个domain中最大占用CPU的比率,一个CPU=100份 (在BIOS中设置的降频,会影响cap的表项)
SMP负载均衡:
Credit Scheduler在SMP host上,默认将VCPU的负载平摊到PCPU
但也可将VCPU pin到指定PCPU
Scheduler Rate 限制
ratelimit_us:微秒数(默认1000us=1ms)
作用:当VM1运行时,若VM2被唤醒 & 优先级(VM2)>优先级(VM1),VM1至少运行 ratelimit_us * 微秒,之后才会让出运行权
设置方法:
xen的命令 sched_retelimit_us
或
xl sched-credit -r [n]
显示当前情况(xm/xl都可以)
xl sched-credit
xm sched-credit -d <domain>
xm sched-credit -d <domain> -w <weight>
xm sched-credit -d <domain> -c <cap>
xm sched-credit -d <domain> -w <weight>
xm sched-credit -d <domain> -c <cap>
调度算法:
1.运行前
* 每个PCPU有一个本地VCPU队列,按照VCPU优先级排序
* VCPU的优先级有两个:over/under,表示该VCPU在当前周期,是否使用超过其被分配的资源份额
* 新插入的VCPU,被放在相同优先级队尾
2.运行时
* 从队头取要执行的VCPU
* VCPU的运行,消耗credits
* 当VCPU消耗完其credits,其优先级为under
3.运行完
* 当CPU找不到任何under的VCPU,它会向其他CPU查询
* 当CPU变为idle,它向其他CPU查询可运行的VCPU(保证,整个系统中有要执行的VCPU时,不会有CPU idle)