所以我的问题是:
我有几个不同配置的服务器。我有不同的计算(作业);我可以预测计算每个作业大约需要多长时间。此外,我也有优先考虑的事项。我的问题是如何保持所有机器99-100%的负载,并以最好的方式安排作业。
每台机器一次可以做几次计算。作业被推送到机器上。中央机器知道每台机器的当前负载。此外,我想在这里分配一些机器学习,因为我将知道每个作业的统计数据(开始、完成、cpu负载等)。
如何以尽可能好的方式分配作业(计算),同时牢记优先级?
有什么建议、想法或算法吗?
仅供参考:我的平台.NET。
发布于 2010-06-15 15:15:53
发布于 2011-07-01 22:23:42
作为另一种方法,您可以使用每台机器的峰值性能比估计值来调度作业。只有在考虑负载平衡系统的CPU运行时性能时,这才是非常有效的。这种方法忽略了I/O、集群大小、网络性能、内存模型类型等问题。看一看http://dx.doi.org/10.1145/1513895.1513901
一种更精确(接近负载平衡的作业分配)方法的建议将是算法-计算机体系结构相关的方法。在这种情况下,可以将优先级较高的作业调度到满足其要求的最佳服务器上-但您需要首先确定作业到服务器的最佳映射。您还可以在多处理器(而不是单处理器)上应用操作系统调度算法的一些方法。希望这篇文章对你有所帮助。
发布于 2010-06-15 14:58:23
看起来这跟.NET没什么关系。
但是把你的机器想象成“工作线程”,在可用的CPU (或其他重要资源)上建立一个可用机器的“池”,然后使用你对每个任务的知识将每个作业推送到最适合的机器上。
如果你预先知道所有的作业,你可能会使用“最佳匹配”算法在正确的机器上以正确的顺序调度它们。你也可以看看“削减库存”算法;http://en.wikipedia.org/wiki/Cutting_stock_problem ...
https://stackoverflow.com/questions/3043033
复制相似问题