代码是在Singularity0104老哥的baseline上修改的,然后导致违规被取消了比赛资格,老哥实在对不住了!
下面分享一下我们的思路
(daily_requests)
我们现在的每天请求处理核心思路(daily_requests),是根据del的位置,划分为多段,再对每一段按CPU+内存由大到小进行排序,然后按排序后请求的顺序尝试调用check_and_add函数将虚拟机添加到已有服务器,如果当前所有服务器放不下虚拟机,那就调用find_fit_server寻找合适的服务器进行购买,将该虚拟机放到新服务器中。 这个过程有一个问题,就是购买的服务器顺序可能和输出的顺序不一样,比如可能线下购买服务器的顺序是0:A,1:B,2:A,输出的顺序应该是 (A,2)(B,1),相应的顺序是0:A,1:A,2:B。所以我们加了一个计算购买服务器顺序与输出顺序的映射,将本地的服务器顺序调整为输出的顺序,同样也修改每个请求的目标服务器。
我们每天请求处理这个方法可以实时处理删除虚拟机请求,腾出空间给当天后面的请求。
(migration_vm)
我们按服务器总使用率对服务器进行小到大排序,尽量把总使用率小的服务器的虚拟机迁移到总使用率大的服务器上,通过abs