高效的作业调度算法



我提供视频编码服务。我的客户提交一些视频来编码。目前,我以FIFO的方式对它们进行编码。我想改变它,这样每个客户都能得到我服务的一部分费用。

我想考虑以下因素:

1. FIFO -首先提交作业的优先级更高。
2. 如果客户提交了大量的视频,我想把他的优先级降下来。

我可以通过设置数据库中的属性来控制客户端的优先级,但不能控制每个视频。我怎样才能对所有的视频有更多的控制和有效地安排他们?

如果需要的话,我可以重新设计数据库。

这是一种对客户端公平的方法:不是将作业排队,而是将提交作业的客户端排队到FIFO中。当每个客户端到达队列前面时,对它们的第一个作业进行编码,如果该客户端有更多作业,则将该客户端放回队列末尾。

您可以计算编码的成本(基于大小和/或质量),并将其除以请求的年龄(当前时间减去请求发出的时间加上一些阻尼常数)。然后,您将使用此分数按递增顺序将请求排队。

等待大请求的客户端将不得不等待较小的请求来处理,但最终会得到一个足够小的分数来调度。

最新更新