在运行队列负载平衡中,推式迁移和拉式迁移有什么区别?



我现在正在研究Linux内核中的CFS调度器代码以供学习。在我的课上,我听说有两种负载平衡CFS和O(1)调度器。一种是Push迁移,另一种是pull迁移。(检查这个。这不是我的课堂网站,但谁可能需要一些解释…)

然而,我找不到任何理由来不同地打电话。因为函数load_balance()只在执行平衡的cpu最空闲的情况下做一些平衡的事情,所以,总是平衡代码将从另一个cpu的任务中"拉"任务。

为什么他们创造了像push &拉?我认为推送迁移应该意味着将我的任务交付给另一个cpu。对此有什么想法或证据吗?

谢谢。

要理解这个问题的答案,只需概括地思考。

Push Migration is nothing but something force you to leave the place

PULL migration is nothing but something attracts you to go that place

所以在内存处理方面,操作系统检查并验证队列中的进程数。如果进程的数量会更多,那么为了平衡负载,一些进程将被移动到另一个类似的,如果Scheduler发现运行队列中没有进程,那么它会突击另一个处理器的运行队列,并将一个进程转移到自己的队列中,这样它就有东西可以运行。

最新更新