0
  1. 假设我可以购买 X 代币的容量。当我购买代币时,我一次购买它们三个月。
  2. 一项工作可以要求一个或多个令牌(通常最多 16 个)。
  3. 一项工作可能需要很长时间才能完成(几天),也可能需要很短的时间(几分钟)。
  4. 在开始使用之前,我必须购买一定数量 (X) 的代币。
  5. 有些工作比其他工作更重要,即应该优先考虑一些工作以快速完成。
  6. 我想随时使用尽可能少的令牌。这样我就可以购买更少的代币并省钱。
  7. 可以暂停和恢复作业。暂停作业时,令牌可用于其他作业。
  8. 用户创建工作,并选择优先级。该算法将选择何时运行哪些作业。
  9. *可能有更多的快速完成工作比长时间完成工作。
  10. *需要很长时间才能完成的工作可能会被给予较低的优先级。

(*这些规则可能有例外)

我需要制作一个调度系统,使 X 尽可能小。


一个(非常小的)例子:

作业 A 花费 4 个代币并且具有低优先级,并且需要 5 天完成。作业 B 花费 2 个代币并具有高优先级,需要 1 天才能完成。作业 C 花费 2 个代币并具有高优先级,需要 2 天才能完成。

作业 A 在作业 B 之前启动,作业 B 在作业 C 之前启动。

解决方案:暂停作业 A,让 B 和 C 运行。B 将首先完成,C 第二。然后恢复 A 并让它完成。

使用的令牌总数:4。

与我们一次运行所有作业(这将花费 8 个令牌)相比,这将花费 50%。


我应该如何制作这个调度程序/优先级?

4

0 回答 0