【问题标题】:Max-Min and Min-Min algorithms implementationMax-Min 和 Min-Min 算法实现
【发布时间】:2023-03-19 00:38:01
【问题描述】:

我正在尝试模拟 Max-Min 和 Min-Min 调度算法,并在模拟中自己编写代码。但并不真正了解如何在代码中实现它们的工作方式。

例如,在 FCFS 算法中,我使用 3 个服务器(vms),每个服务器都比另一个服务器快,并且有 5 个到达时间不同的任务。因此,第一个任务将检查第一个服务器并安排在那里,如果第二个任务到达而第一个尚未完成,将检查可用性并安排到第二个服务器。如果所有 3 台服务器都被占用,则下一个任务将被安排到剩余执行时间最短的那个。

现在对于 Min-Min 和 Min-Max,这是理论背景:

最小-最小: 阶段 1:首先计算每台机器上每项任务的完成时间,然后为每项任务选择以尽可能短的时间处理任务的机器。 阶段 2:在 Meta task 的所有任务中,选择完成时间最短的任务,并分配给期望执行时间最短的机器。该任务从 Meta Task 列表中删除,并继续执行该过程,直到 Meta Task 列表为空。

最大-最小: 阶段 1:首先计算每台机器上每项任务的完成时间,然后为每项任务选择在最短可能时间内处理任务的机器 阶段 2:在 Meta Task 的所有任务中,选择完成时间最长的任务并分配给机器。该任务从 Meta Task 列表中删除,并继续执行该过程,直到 Meta Task 列表为空。

我得到了两种算法的第一阶段,我需要检查任务的突发时间和服务器的加速 -> 突发/加速 = 执行时间。我会为每项任务找到最好的服务器。 但我无法理解第 2 阶段。对于 Min-Min,我必须每次选择最快的任务,当我找到它时,我必须将其安排到更快的服务器上。但是工作量会不平衡,正如我所说的 3 台服务器,至少一台速度更快,假设 ID 为 1 的服务器,所以每次将任务安排到这台服务器时,我还需要另外 2 台工作。

Max-Min 也有同样的问题,找到最差的任务,把它安排到最差的服务器上,但是只有一台服务器是最差的,所以另外两台不能工作。我应该如何进行平衡并考虑到任务在不同的时间到达?

如果您需要更多信息,请提前告诉我并感谢您!

【问题讨论】:

    标签: algorithm scheduling jobs


    【解决方案1】:

    您可以在A Comparative Analysis of Min-Min and Max-Min Algorithms based on the Makespan Parameter 中找到这两种算法的精彩描述:

    我在此处粘贴 Min-Min 的伪代码。 ETij 是任务 ti 在资源 Rj 上的执行时间。而rj是Rj的就绪时间。

    确实可以有不平衡的负载,因为所有小任务都会首先执行。 Max-Min算法克服了这个缺点。

    Max-Min 算法执行与 Min-Min 算法相同的步骤,但主要区别在于第二阶段,其中选择了具有最长完成时间而不是最短完成时间的任务 ti以 min-min 为单位的完成时间并分配给资源 Rj,它给出了最短完成时间。

    【讨论】:

    • 好吧,这帮了很多忙,但我们仍然假设 Min-Min 最快的任务会选择最快的服务器,所以第一个服务器将被这个服务器占用。第二个快速任务应该等待此服务器完成,还是应该安排到下一个快速可用的服务器?所以其他 2 台服务器也可以工作。
    • @Sentinel 有两个不同的概念:执行时间(ET)和完成时间(CT)。您分配给具有最小 CT 的服务器。然后你重新计算CT,刚刚分配任务的服务器上的CT会增加。所以,下次你可能会在另一台服务器上找到最小的 CT。
    • 所以到达时间只对计算这些算法的等待和周转时间有用吗?因为伪代码谈到了元任务队列中的任务。这意味着直到最后一个任务都到达并且它们正在等待被安排,所以我们现在不关心到达时间,对吧?所以让我们说任务 1 突发 6 到达 0,任务 2 突发 4 到达 1。所以任务 2 应该安排到服务器 1,因为 CT 4 而不是任务 1,即使更早到达这里,对吗?就像这个算法让所有人排队然后为他们服务,不在乎谁之前在这里对吧?
    • @Sentinel 是的,我们不关心到达时间。在任何时候,我们只关心已经在队列中的任务。在您的示例中,时间 0 时我们只有一个任务在队列中,因此该任务已被安排。
    • VM 是服务器。感谢您的提议,我会考虑并可能会做出一些改变。我会按照回答结束这个问题,你帮了很多忙。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-12
    • 2017-09-05
    • 2012-08-26
    • 2017-08-06
    • 2017-09-23
    • 1970-01-01
    相关资源
    最近更新 更多