【发布时间】:2011-02-02 21:55:39
【问题描述】:
为什么我可以找到很多关于“工作窃取”的信息,而没有找到关于“工作耸肩”作为动态负载平衡策略的信息?
“工作耸耸肩”我的意思是 将多余的工作从繁忙的处理器推到负载较轻的邻居,而不是让空闲的处理器拉繁忙的邻居的工作(“工作——偷窃”)。
我认为这两种策略的总体可扩展性应该相同。但是,我认为,就延迟和功耗而言,在肯定有工作要做时唤醒空闲处理器会更有效,而不是让所有空闲处理器定期轮询所有邻居以寻找可能的工作。
无论如何,快速谷歌并没有在“工作耸耸肩”或类似标题下显示任何内容,因此欢迎任何指向现有技术和该策略的行话的指针。
澄清
我实际上设想工作提交处理器(可能是也可能不是目标处理器)负责查看首选目标处理器的直接位置(基于数据/代码位置)以决定是否应该将新工作交给近邻,因为他们没有那么多工作要做。
我认为决策逻辑只需要原子读取此处的直接(通常为 2 到 4 个)邻居的估计 q 长度。我不认为这比盗贼从他们的邻居那里轮询和偷窃所暗示的耦合更多。 (我在这两种策略中都假设“无锁、无等待”队列)。
分辨率
似乎我的意思(但只是部分描述!)“工作耸耸肩”策略属于“正常”的前期调度策略领域,这些策略恰好对处理器、缓存和内存忠诚度以及可扩展性很聪明。
我发现很多参考文献都在搜索这些术语,其中一些看起来很可靠。当我确定一个最符合(或破坏!)我对“工作耸肩”定义的逻辑时,我会发布一个参考。
【问题讨论】:
-
你加“tm”有什么用?? SO 不是营销培训场
-
这不是社区 wiki 问题;这里有一个正确的答案。
-
@Andres:社区 Wiki 并不意味着“没有正确答案”——它的意思是“社区可以编辑”。
-
触摸!我现在更快乐了。 :-)
标签: terminology scheduling load-balancing scheduled-tasks multiprocessor