|
|
1
2
|
|
|
2
1
作为一种替代方法,您可以使用每台机器的峰值性能比估计值来安排作业。只有在考虑负载平衡系统的CPU运行时性能时,这才是非常有效的。这种方法忽略了I/O、集群大小、网络性能、内存模型类型等问题。看一看 http://dx.doi.org/10.1145/1513895.1513901 更精确(近负载平衡作业分配)方法的建议将是算法-依赖于计算机体系结构的方法。在这种情况下,更高优先级的作业可能被安排到满足其需求的最佳服务器上,但是您首先需要确定作业到服务器的最佳映射。您也可以在多处理器(而不是单处理器)上应用一些操作系统调度算法的方法。希望你会觉得这有帮助。 |
|
|
3
0
看起来这和.NET没有什么关系。 但是把你的机器想象成“工作线程”,在可用的CPU(或其他重要资源)上创建一个可用机器的“池”,然后利用你对每个任务的了解将每个任务推送到最适合的机器上。 如果您事先知道所有的作业,那么您可能会使用“最佳匹配”算法在正确的机器上按正确的顺序安排它们。你也可以看看“削减库存”的算法; http://en.wikipedia.org/wiki/Cutting_stock_problem … |
|
|
4
0
Microsoft最近发布了 paper 在他们的昆西调度器上。如果您只是在优化CPU利用率,那么一个非常简单的解决方案可以找到全局最优。如果需要跨多个轴进行优化,那么问题空间显然会更复杂。 你的集群有多大?如何处理围绕失败案例的优化?它们重要吗?有IO吗?数据是否具有磁盘相关性?是否有多个地方可以管理一份工作?所有的事情都要考虑。 |