我是PaaS / IaaS开发人员。我正在尝试引入新算法来设计展示位置登录或资源管理逻辑。例如:我正在为用户创建linux实例我想考虑内存cpu使用情况所有这些因素和设计我的放置机制。如果实例失败,我想重试。有没有帮助设计这个?
答案 0 :(得分:1)
正如nmahee建议的那样,你应该使用具有以下约束的BinPacking求解器: 1.支持多个维度(CPU,内存,磁盘空间等) 2.支持以当前分布开始的增量算法,并使用新分布生成结果。不像经典的binpacking,假设你从一个干净的石板开始。 3.在最佳解决方案与现有分配的最小变更之间进行权衡。例如,如果添加了新资源,您是否应该移动现有资源以获得最佳解决方案? (在PaaS中,答案通常是否定的。)
对于一般用途,BinPacking求解器会查看Drools。
对于(非常特别的)解算器,您可以查看Cloudify使用的引擎。当我们有时间时,我们可能会用drools重写它。 https://github.com/OpenSpaces/OpenSpaces/blob/master/src/main/java/org/openspaces/grid/gsm/machines/BinPackingSolver.java
此解算器基本上查看每台机器的可用容量,已用容量和所需容量的变化(容量是cpu /内存/磁盘的抽象 - 见上文1)。使用容量是现有解决方案(见上文2)。该算法的另一个特点是它完全忽略了这台机器上的其他资源。如果此计算机上有其他资源,则会以较小的可用容量值反映出来。基本上我们分别为每个资源调用求解器,每次通过降低可用容量来屏蔽机器上的其余资源(参见上面的3)
答案 1 :(得分:0)
查看Bin Packing问题。它通常是NP-Complete复杂性问题。