2021华为软件精英挑战杯总结

2021华为软件精英挑战杯总结

首先说一下最终成绩:武长赛区复赛正式赛第十六名

经过20多天的比赛,或多或少对比赛有些体会,最大的感觉就是其实这比赛也没什么特别难的。第一次参加这种比赛刚看到题目有些摸不着头脑,不过看了个同学开源的baseline后就对题目有了清晰的理解,这里非常感谢开源的同学。

1. 先讲一讲这次比赛的题目

就是一个资源调度的问题,根据用户的需求选择空间的大小,服务器节点的分配。如何购买服务器、如何选择虚拟机部署的服务器、如何选择节点、如何利用迁移重新科学规划服务器的资源分布这些决策都影响最终的成本。

最终的成本包括:购买服务器的耗费,未关机服务器的能耗费用

2. 我们使用的策略

我们将整个问题分解为:购买服务器、部署虚拟机、迁移虚拟机这三个小问题

2.1 如何购买服务器

经过多次更新,我们复赛训练阶段使用的策略是:

  1. 在需要购买服务器的时候,统计当前需求的虚拟机及其后若干的虚拟机的总资源比例(CPU/RAM),找到资源比例在该比例附近的服务器。预估每个服务器产生的耗费,预估费用的公式为:

    preCost = reqNum * ( BuyCost + remainDaysNum * dailyCost)

    reqNum = max( CPUtotal * n / CPUserver , RAMtotal * n/RAMserver)

    其中n是一个比1大的系数,简而言之就是假设之后只买一种服务器,预估每个服务器能够满足之后若干需求所需要的耗费。

  2. 和1策略一样,不过是每天选择一种服务器,然后选择预估费用最低的服务器。复赛当天选择的是这种策略,并且直接放弃用资源比例去找服务器,而是直接用预估费用寻找服务器。放弃利用比例这个决定让我的成本直接下降了将近2亿。

购买策略写的很不稳定,也是我觉得做的很不好的地方,在初赛以及复赛训练阶段时候用的很好的策略到了复试当天直接放弃确实挺离谱的。

2.2 如何部署虚拟机

  1. 我们选择去计算虚拟机和每个服务器之间的距离,选择距离最小的服务器节点进行部署,距离公式为:

    distance = ((CPUserver - CPUvir)*n)^2+((RAMserver - RAMvir)(1-n))^2

    我们调整距离公式里cpu和ram的权重,发现n=0.75时效果最好

  2. 我们没有做负载均衡,虽然考虑到这样会导致服务器两个节点不均衡进而放不下双节点的虚拟机,但是尝试了以后效果特别差。可能是因为不做负载均衡时,不均衡的服务器反而更能够满足一些大容量的单节点虚拟机的需求。

  3. 此外我还尝试过利用资源利用率进行部署的方法,即尽量使服务器资源利用率达到最高。效果比距离稍微差点,但在复试当天差的比较多,没有采用。

部署策略写的非常简陋,这也是我感觉后期程序优化最无力的地方,在复试训练集上总资源的利用率一直只有70左右,感觉应该算比较低的,说明部署还是不够好的。

2.3 如何进行迁移的

这个问题是我觉得我有较大的误解的地方,比赛期间我一直把迁移的目的当作使服务器空出来,节省能耗。但是实际上迁移是在每天决策的开始做的,而服务器空出来后,如果其他服务器放不下来,虚拟机还是得部署在上面,最终就是服务器就空不出来。也就是说迁移真正目的应该不是节省能耗,而是使当天的服务器资源分布更加科学,更能够满足当天的需求。不过当我这么想的时候比赛已经快结束了,没啥时间改了。还是说说比赛时我用的策略:

  1. 为了使服务器尽量空出来节省能耗,我们对已有服务器根据剩余资源的大小进行从大到小的排序。然后正序选择迁出服务器。毕竟剩余资源越大越容易空出(我们也试过按剩余资源的比例排序,但是效果并不好。后面猜测由于迁移是每天一开始做的,空出一台服务器实际上也就相当于购买了一台新服务器,所以这台服务器并不是容量越小越好)。
  2. 剩余资源的公式为:remainResource = (cpuA+cpuB)x0.85+(ramA+ramB)x0.15 ; 我也不懂为什么当CPU权重这么大时效果会最好,只是试出来就是这样。
  3. 与部署一样,选择距离最近的服务器对虚拟机做重新部署。但是不部署到空的服务器上。实际上本来使用的限定条件是“不部署到虚拟机比源服务器更少的服务器上”,该限定条件很耗时,效果也很好,复赛当天利用该限定条件时耗时80s迁移次数20万次的效果和不用该条件耗时30s迁移70万次的效果仅仅差不多。

迁移其实还挺多优化思路,可惜最后没有时间慢慢调,思路比如:

  1. 根据当天的需求资源分布选择迁出服务器;
  2. 根据当天需求的虚拟机单双节点比例选择对已有服务器做负载均衡或不均衡

3. 比赛经验总结

总结一句话:珍惜时间,远离调参

初赛训练阶段第十八,初赛正式赛第二十七;

复赛训练阶段第八,正式赛第十六;

总的来说我的策略受数据集影响特别大,训练阶段花了很多时间去调参,当正式赛换了一个数据集后又要重新花很长时间去调参,而真正的大佬丝毫不受数据集的影响。

所以有时间调参,不如多调整策略,有几个好队友多交流开拓思路的话是最好的,自己一个人很容易钻进牛角尖。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值