- 假设我可以购买X代币的容量。当我购买代币时,我一次购买它们三个月。
- 工作可以声明一个或多个令牌(通常最多16个)。
- 一份工作可能需要很长时间才能完成(几天),或者很短的时间才能完成(几分钟)。
- 在开始使用之前,我必须购买一定数量(X)的代币。
- 有些工作比其他工作更重要,即应优先考虑一些工作以快速完成。
- 我想在任何时候使用尽可能少的令牌。通过这种方式,我可以购买更少的代币并节省资金。
- 可以暂停和恢复作业。当作业暂停时,令牌可用于其他工作。
- 用户创建作业,并选择优先级。该算法将选择何时运行哪些作业。
- *可能比长期整理工作更快速完成工作。
- *需要很长时间才能完成的工作可能会被赋予低优先级。
醇>
(*这些规则可能有例外)
我需要建立一个调度系统,以便X尽可能小。
一个(非常小的)例子:
工作A需要4个代币且优先级较低,需要5天完成。
工作B花费2个代币并具有高优先级,需要1天才能完成。
工作C需要2个代币且具有高优先级,并且需要2天才能完成。
作业A在作业B之前启动,作业C在作业C之前启动。
解决方案:
暂停作业A并让B和C运行。
B将首先完成,C秒。然后恢复A并让它完成。
使用的令牌总数:4。
如果我们一次性运行所有工作(这将花费8个代币),则成本为50%。
我应该如何制作此调度程序/优先顺序?