“MLFQ是利用历史服务作分类的一种启发式,不保证准确预测剩余工作,也不是按指定权重分配CPU的合同。若主要诉求是“持续繁忙时A拿两份、B拿一份”,应转向彩票或步幅调度的份额模型。”
两项持续繁忙的任务,一项应取得另一项两倍的CPU时间,可以怎样实现?彩票调度给前者两倍的票,每次从所有有效票中等概率抽一张,让中签者运行一片。权重决定的是机会比例;一轮运行里实际拿到了多少,还要用概率与服务账本核对。
形式陈述
先把权重写成没有空洞的票区间
固定三个始终可运行的任务A、B、C,票数为3、2、1。每次胜者运行完整1毫秒,切换零成本,任务在本实验的12次分配内都不结束、不阻塞。总票数
| 任务 | 票区间 | 一次中签概率 |
|---|---|---|
| A | 0、1、2 | |
| B | 3、4 | |
| C | 5 |
实际CPU服务按服务账本理路CPU服务、就绪与时间账本CPU service accounting · CPU burst · Ready time · Preemptive scheduling model用实际服务量、剩余量和就绪等待刻画单核调度,固定同刻事件顺序,并把墙钟时间分成运行、阻塞和等待。累计:只有RUNNING区间才增加,未中签的等待不增加服务。
每次独立、均匀地产生整数
一般地,每个当前可运行者持正整数
直觉
十二次实际抽签并不必然恰好按比例
给定下面一条用于复算的票序列。它是明确输入,不把它称为来自某个未记录的随机种子:
依区间映射,胜者为
A取得7片,B取得3片,C取得2片,累计服务就是7、3、2毫秒。目标比例对应12片中的6、4、2,因此这次偏差为
要复现实验,应保存抽签输出或精确的伪随机算法、种子和调用次序。只保存“使用随机调度”不足以重现某一张时间表。
例子与边界
期望份额与有限窗口误差
保持资格集合和票数固定,每片等长且抽签独立。令
二项分布理路二项分布Binomial distribution固定次数独立同概率 Bernoulli 试验中成功总数的离散分布。是这里分析重复抽签的工具。它不参与调度器选人的代码;即使不计算方差,也可以执行上述票区间算法。
在12片实验中,A的期望为6,方差为3;B的期望为4,方差为
份额
正概率不等于有确定等待上界
C一次不中签的概率为
所以“平均每6次中1次”绝不等于“最多等6次”。若希望在当前固定模型下,至少一次选到C的概率不低于95%,需要
对固定
若票比例随着到达不断下降,则固定
分配次数与实际服务要分开
前面的份额推导依赖每片长度相同。若A、B各有一张票,而A每次运行1毫秒、B每次只运行0.25毫秒就让出,即使两者长期胜出次数接近,A取得的CPU服务也会约为B的四倍。按“中了几次”记账会高估B的服务。
原始彩票调度提出补偿票等机制处理短片:按消耗比例临时调整后续竞争权重。本页不把补偿规则混入固定独立抽签实验;一旦权重随上次运行改变,前面简单的二项分布就不是整段运行的直接模型。步幅调度理路步幅调度与虚拟服务账本Stride scheduling · Proportional-share stride scheduler · Virtual pass按票数倒数设置步幅,每次运行最小pass者并按实际服务推进,复算十二片序列,证明固定成员下的有界虚拟差并说明加入和短片边界。可以直接把实际片长计入虚拟服务增量,提供另一个对照。
休眠任务也不积累一张“以后补回所有错失CPU”的欠条。本页的份额只在共同参与竞争的时间里定义;若要支持额度积累或预约,需要另行规定配额周期与上限。
推论与应用
谁能分票,也是政策的一部分
假如系统只约定“每个进程给100票”,一个用户创建十个进程就能获得1000票。若想保护用户之间的份额,应先给用户固定总预算,再由其内部拆分,或采用原论文的票券货币/层次结构。
一个简单例子是用户U、V各有6张全局票。U把其中4给U1、2给U2,V全部给V1。三任务概率为
线性扫描
参考资料
- Carl A. Waldspurger、William E. Weihl,“Lottery Scheduling: Flexible Proportional-Share Resource Management”,OSDI 1994,§2.1–2.2(资源权利与抽签)、§3.3–3.4(货币与补偿票)、§4.1–4.2(随机数与实现)。
- Arpaci-Dusseau与Arpaci-Dusseau,OSTEP, Ch.9, §§9.1–9.4:比例份额调度入门。票序列、12片账本与95%阈值为本页独立计算。