Skip to content

方法Method

彩票调度与随机服务份额

Lottery scheduling · Proportional-share lottery scheduling · Lottery tickets

用均匀抽签把正权重转成时间片选择概率,精算有限样本服务份额和连续未中签概率,区分概率无饥饿与确定等待界。

两项持续繁忙的任务,一项应取得另一项两倍的CPU时间,可以怎样实现?彩票调度给前者两倍的票,每次从所有有效票中等概率抽一张,让中签者运行一片。权重决定的是机会比例;一轮运行里实际拿到了多少,还要用概率与服务账本核对。

形式陈述 ​

先把权重写成没有空洞的票区间 ​

固定三个始终可运行的任务A、B、C,票数为3、2、1。每次胜者运行完整1毫秒,切换零成本,任务在本实验的12次分配内都不结束、不阻塞。总票数 W=6,编号从0到5:

任务 票区间 一次中签概率
A 0、1、2 3/6=1/2
B 3、4 2/6=1/3
C 5 1/6

实际CPU服务按服务账本累计:只有RUNNING区间才增加,未中签的等待不增加服务。

每次独立、均匀地产生整数 u∈{0,…,5}。顺序累加票数,选择累计和第一次严格大于 u 的任务。例如 u=3 时,A累计3不大于3,继续到B累计5才选B。把“大于”写成“大于等于”,会把边界票错误分给前一个任务。

一般地,每个当前可运行者持正整数 wi,总票数为 W=∑iwi,选择概率为 pi=wi/W。只有有资格运行的任务参加抽签,BLOCKED者的票不能抽中后再浪费一整片等待I/O。

直觉

十二次实际抽签并不必然恰好按比例 ​

给定下面一条用于复算的票序列。它是明确输入,不把它称为来自某个未记录的随机种子:

0,5,2,3,1,0,4,2,5,0,1,3.

依区间映射,胜者为

A,C,A,B,A,A,B,A,C,A,A,B.

A取得7片,B取得3片,C取得2片,累计服务就是7、3、2毫秒。目标比例对应12片中的6、4、2,因此这次偏差为 (+1,−1,0)。偏离均值不表示抽签算法错误,也不能只因C恰好取得2就说该轨迹“完全公平”。

同一权重下随机与确定服务账本

要复现实验,应保存抽签输出或精确的伪随机算法、种子和调用次序。只保存“使用随机调度”不足以重现某一张时间表。

例子与边界

期望份额与有限窗口误差 ​

保持资格集合和票数固定,每片等长且抽签独立。令 Xi 为 m 次抽签中任务 i 的胜出次数,那么每次“是否胜出”是成功概率 pi 的二值试验,故

Xi∼Binomial(m,pi),E[Xi]=mpi,Var(Xi)=mpi(1−pi).

二项分布是这里分析重复抽签的工具。它不参与调度器选人的代码;即使不计算方差,也可以执行上述票区间算法。

在12片实验中,A的期望为6,方差为3;B的期望为4,方差为 8/3;C的期望为2,方差为 5/3。不同任务的次数不是相互独立,因为它们相加恒为12,一项多拿必有其他项少拿。

份额 Xi/m 的方差为 pi(1−pi)/m,因此增加窗口能降低份额波动的尺度。不过“长期接近”没有给出每个短窗口恰好按比例的承诺,任意一个固定有限窗口里都可能出现明显偏差。

正概率不等于有确定等待上界 ​

C一次不中签的概率为 5/6,连续12次不中签的概率为

(5/6)12≈0.11216.

所以“平均每6次中1次”绝不等于“最多等6次”。若希望在当前固定模型下,至少一次选到C的概率不低于95%,需要

1−(5/6)m≥0.95.

m=16时尚不够,m=17时才达到要求;它仍是概率保证,不是第17次一定会中的硬截止期。

对固定 pi>0,limm→∞(1−pi)m=0,因此无限重复独立抽签时,某个持续可运行任务永远不中签的概率为0。有限多个任务都无限次取得机会也可由同样的后缀论证得到。这种“几乎必然”结论没有给所有可能样本路径统一的有限等待界,与确定有界等待不同。

若票比例随着到达不断下降,则固定 pi 的计算不再适用;若伪随机序列有偏或相关,也不能直接套独立二项分布。必须先检查随机性与资格集合的假设,再报告概率。

分配次数与实际服务要分开 ​

前面的份额推导依赖每片长度相同。若A、B各有一张票,而A每次运行1毫秒、B每次只运行0.25毫秒就让出,即使两者长期胜出次数接近,A取得的CPU服务也会约为B的四倍。按“中了几次”记账会高估B的服务。

原始彩票调度提出补偿票等机制处理短片:按消耗比例临时调整后续竞争权重。本页不把补偿规则混入固定独立抽签实验;一旦权重随上次运行改变,前面简单的二项分布就不是整段运行的直接模型。步幅调度可以直接把实际片长计入虚拟服务增量,提供另一个对照。

休眠任务也不积累一张“以后补回所有错失CPU”的欠条。本页的份额只在共同参与竞争的时间里定义;若要支持额度积累或预约,需要另行规定配额周期与上限。

推论与应用

谁能分票,也是政策的一部分 ​

假如系统只约定“每个进程给100票”,一个用户创建十个进程就能获得1000票。若想保护用户之间的份额,应先给用户固定总预算,再由其内部拆分,或采用原论文的票券货币/层次结构。

一个简单例子是用户U、V各有6张全局票。U把其中4给U1、2给U2,V全部给V1。三任务概率为 1/3,1/6,1/2,U两个任务合计仍为 1/2。若U可以无条件额外铸票,这个用户级保证就消失。

线性扫描 n 个任务选择区间,最坏为 O(n);维护累计权重树可把抽样查找与单项权重更新做到 O(log⁡n)。还要计随机数生成、票数溢出和无偏区间采样的成本,不能用带模偏差的随机整数取余悄悄改变票概率。

参考资料
关系图谱5 个相邻概念 · 3 类关系

拖动节点调整位置。

显示关系

显示:依赖

  1. 前置三跳
  2. 前置二跳
  3. 前置一跳
  4. 当前条目
  5. 后续一跳
  6. 后续二跳
  7. 后续三跳
文字版关系按与当前条目的最短距离分组
类型化关系