任何人都可以解释这个算法的条件吗?

S11*_*S11 -4 java cloud algorithm

input: hostList, utilThreshold

hostList.sortDecreasingUtilization()
lastIndex = hostList.indexOfLastNonZeroHostUtilization()
for i := lastIndex downto 1
  for j := 1 to i - 1
    if hostList[j].currentUtil() + hostList[i].currentUtil() <= utilThreshold
      vmList = hostList[i].getAllVms()
      host[i].deleteAllVms()
      host[j].addVms(vmList)
      break
Run Code Online (Sandbox Code Playgroud)

这个伪代码来自

绿色云计算:用于虚拟机迁移和整合的贪婪算法,以优化数据中心的能耗

Rasoul Beik伊斯兰阿萨德大学 - Khomeinishahr分支,伊斯法罕,伊朗

一些研究论文.我读了这篇论文,但他们对这个算法没有任何解释.

这是论文的描述:

此算法是最小主机利用率选择,最大主机利用率分配(MinMax_HU)

在该算法中,主机根据其使用情况定期分类; 如果高效主机的利用率不超过算法中定义的利用率阈值,则效率较低的主机中的VM将移至更高效的主机.

任何人都可以逐行解释这个算法吗?我不明白if条件.

And*_*ner 6

它所做的只是将VM移动到具有足够容量来容纳两台主机当前VM集的主机上,这将释放其中一台主机所需的资源.

忘记主人和虚拟机:想象你正在搬家,而且你有太多的纸箱装在车里.每个纸箱都可以容纳一些最大数量的书籍:你可以从一个纸箱中取出所有书籍并将它们放在另一个纸箱中; 那么你将需要更少的盒子.

所以,算法基本上是:

for box1 in boxes:
  for box2 in (boxes without box1):
    if (# books in box1 + # books in box2) < (max # books in a box):
      move all books from box1 to box2
      throw away box1
Run Code Online (Sandbox Code Playgroud)

那里也有一些排序的东西,只是为了让算法很好地利用可用的空间:它通过降低利用率来排序(参见每个方框中的书数); 内循环中的迭代顺序意味着您将尝试组合主机(cf框)以保留之后的最小剩余空间.