我必须找到一个问题的解决方案,我不知道从哪里开始。
假设我有一个包含 n 个容器和 m 个进程的列表。每个进程都已驻留在容器中,并具有 4 个属性,例如:cpu、内存、IO 和网络利用率。
一个主机内所有进程的每个属性类型的总和不能超过该主机的资源物理限制,例如:一个主机内消耗10%cpu的5个进程可以一起在一个主机内,但15个不能。
我想找到将这些进程分配给具有以下限制的主机的最佳(或好的)解决方案:
- 尽可能使用最少的容器/主机。
- 尽量减少从一台主机到另一台主机的进程交换,如果一个进程已经在一个主机中,那么它最好留在那里。
- 进程属性可以动态变化,但可能存在基于时间或先前行为的趋势。
- 最大化主机 CPU 利用率
- 最大化内存利用率
- 最大限度地减少主机内的 IO 利用率,使进程不会相互冲突。
- 最小化网络利用率。
我已经看到了这个问题的更简单版本的建议解决方案(仅使用 CPU 属性),使用马尔可夫链评估 CPU 利用率的过去值。
我首先想到的是应用多目标背包方法。
请提供任何帮助。
谢谢。