Algorithm 一种高效的作业调度算法

Algorithm 一种高效的作业调度算法,algorithm,job-scheduling,Algorithm,Job Scheduling,我主持一个视频编码服务。我的客户提交一些视频进行编码。目前,我只是以先进先出的方式对它们进行编码。我想改变它,让每个客户都能分享我的服务 我想考虑以下因素:BR/> 1.FIFO-首先提交作业的优先级更高 2.如果客户提交了大量视频,我想降低他的优先级 通过设置数据库中的属性,我可以控制客户端的优先级,但不能控制每个视频。 我怎样才能更好地控制所有视频并有效地安排它们 PS:如果需要,我可以重新设计数据库。这里有一种对客户公平的方法:不要对作业排队,而是将提交作业的客户排队到FIFO中。当每个客

我主持一个视频编码服务。我的客户提交一些视频进行编码。目前,我只是以先进先出的方式对它们进行编码。我想改变它,让每个客户都能分享我的服务

我想考虑以下因素:
BR/> 1.FIFO-首先提交作业的优先级更高
2.如果客户提交了大量视频,我想降低他的优先级

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


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

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

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


请求大请求的客户端将不得不等待较小的请求得到处理,但最终会得到足够小的分数以进行计划。

为什么不使用云来简单地根据需要增加编码器的数量,在不需要时减少编码器的数量,那么就不存在这个问题。我使用的是AWS云,我在固定数量的ec2实例上运行编码服务(节省成本)。当前的视频需要脱机编码。我可以根据需要扩展ec2实例,但我认为目前不需要它,因为我没有很多客户机。但我希望有一个高效的算法来安排任务,这是聪明的。但是,在未来,我可能希望有其他参数,如视频大小等。