我正在尝试模拟Max-Min和Min-Min调度算法,并在模拟中自己编写代码。但是不要真正理解如何实现它们在代码中的工作方式。
例如,在FCFS算法中,我使用3个服务器(vms),每个服务器比另一个服务器快,5个任务具有不同的到达时间。因此,第一个任务将检查第一个服务器并将在那里安排,第二个任务在第一个尚未完成时到达,将检查可用性并安排到第二个服务器。如果所有3个服务器都被占用,则下一个任务将被安排到具有最小剩余执行时间的任务。
现在对于Min-Min和Min-Max来说,这是理论背景:
Min-Min:阶段1:首先计算每台机器上每项任务的完成时间,然后为每项任务选择在最短的时间内处理任务的机器。阶段2:在Meta任务的所有任务中,选择具有最小完成时间的任务,并将其分配给期望最小执行时间的机器。该任务将从Meta Task列表中删除,并且该过程将继续,直到Meta Task列表为空。
Max-Min:阶段1:首先计算每台机器上每个任务的完成时间,然后为每个任务选择在最短时间内处理任务的机器阶段2:在Meta Task中的所有任务中,具有最长完成时间的任务被选中并被分配给机器。该任务将从Meta Task列表中删除,并且该过程将继续,直到Meta Task列表为空。
我得到两个算法的阶段1,我需要检查任务的突发时间和服务器的加速 - >突发/加速=执行时间。我会为每项任务找到最好的服务器。但我无法理解第2阶段。对于Min-Min,我必须每次都选择最快的任务,当我找到它时,我将不得不将它安排到更快的服务器上。但是工作量将是不平衡的,因为我说3台服务器并且至少有一台服务器速度更快,比如ID为1的服务器,所以每次将任务安排到这台服务器时,我还需要其他2台工作。
与Max-Min相同的问题,找到最糟糕的任务,将其安排到最差的服务器,但只有一台服务器是最差的,所以其他2台将无法正常工作。我怎么想进行平衡并考虑到任务在不同时间到达?
如果您还需要更多信息,请提前告知我们并提前致谢!
你可以在A Comparative Analysis of Min-Min and Max-Min Algorithms based on the Makespan Parameter找到两种算法的很好的描述:
我在这里粘贴Min-Min的伪代码。 ETij是资源Rj上的任务ti的执行时间。 rj是Rj的准备时间。
这是真的,你可以有不平衡的负载,因为所有小任务将首先执行。 Max-Min算法克服了这个缺点。
Max-Min算法执行与Min-Min算法相同的步骤,但主要区别在于第二阶段,其中选择任务ti,其具有最小完成时间而不是最小完成时间,如min-min并分配给资源Rj,它给出了最短的完成时间。