0

我是 PaaS/IaaS 开发人员。我正在尝试引入新算法来设计放置登录或资源管理逻辑。例如:我正在为用户创建 linux 实例,我想考虑内存 cpu 使用率 heapsize 所有这些因素并设计我的放置机制。如果实例失败,我也想重试。设计这个有什么帮助吗?

4

2 回答 2

1

正如 nmahee 建议的那样,您应该使用具有以下约束的 BinPacking 求解器: 1. 支持多个维度(CPU、内存、磁盘空间等) 2. 支持从当前分布开始的增量算法,结果为一个新的分布。与假设您从零开始的经典装箱不同。3. 最佳解决方案与现有分布的最小变化之间的权衡。例如,如果添加了新资源,您是否应该移动现有资源以获得最佳解决方案?(在 PaaS 中,答案通常是否定的)。

对于通用 BinPacking 求解器,请查看 Drools。

对于(非常特别的)求解器,您可以查看 Cloudify 使用的引擎。当我们有时间时,我们可能会用流口水重写它。 https://github.com/OpenSpaces/OpenSpaces/blob/master/src/main/java/org/openspaces/grid/gsm/machines/BinPackingSolver.java

这个求解器主要查看每台机器的可用容量、已用容量和所需容量的变化(容量是 cpu/memory/disk 的抽象 - 参见上面的 1)。使用的容量是现有的解决方案(见上面的 2)。该算法的另一个特点是它完全忽略了这台机器上的其他资源。如果这台机器上有其他资源,则由较小的可用容量值反映。基本上,我们为每个资源分别调用求解器,每次通过减少可用容量来屏蔽机器上的其余资源(参见上面的 3)

于 2012-10-21T09:03:11.987 回答
0

看看装箱问题。它通常是一个 NP-Complete 复杂性问题。

于 2012-07-19T22:09:11.597 回答