gpt4 book ai didi

python - master/worker 是否扩展?

转载 作者:太空宇宙 更新时间:2023-11-04 01:41:57 25 4
gpt4 key购买 nike

我有一个用单独的 python 进程实现的主/工作模型。主进程持有受互斥锁保护的作业/结果列表。许多 worker 在许多机器上运行(大约 200 个工作进程)。

我注意到,在每台机器上,工作人员往往比其他工作进程多做或少做 0-20% 的工作,而机器比其他机器多做或少做 0-20% 的工作。最快/最慢的 worker 和机器每天都不同。

这是 master/worker 模型的概念性问题,它是否暗示了一个有问题的实现或者一切都很好?

最佳答案

对于 +/- 20% 的最简单解释是您遇到了负载平衡问题;一些 worker 的工作量只比他们的一些同龄人多 20%。这可能代表一个实现问题,或者它可能只是离散性;如果你有 200 个工作进程,但有 1040 个大致相等的工作要做,那么 1/5 的工作进程将有额外 20% 的工作要做,除非你可以分割工作,否则没有什么可做的更精细。

Master/worker 扩展(并且处理这些负载平衡问题与其他任何事情一样容易)直到主进程中对共享资源的争用开始变得不平凡。您可以通过将关键部分(受互斥锁保护的部分)减少到绝对最小值来稍微向前推进缩放;通过聚合工作单元以减少请求(但请注意,这与改善负载平衡的方向相反);或拥有多个主人(可能是主人的层次结构)。如果这不起作用,您必须开始考虑更多的点对点工作调度算法,不再有单一瓶颈。 master/worker 的点对点模拟称为 work stealing ,这是(恕我直言)在有人向您展示之前似乎不应该起作用的事情之一;它最近被 Cilk 普及了.这个想法是每个人都有一份任务 list ,如果同伴需要更多的工作,他们会随机地从彼此那里偷走,然后继续忙碌直到他们完成。实现起来比master/worker更复杂,但是避免了单master的瓶颈。

关于python - master/worker 是否扩展?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4015348/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com