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

时间:2014-05-02 13:10:54

标签: linux linux-kernel scheduler

我现在正在Linux内核中研究CFS调度程序代码以供学习。在我的课堂上,我听说CFS和O(1)调度程序都有两种负载均衡。一个是推送迁移,另一个是拉迁移。(check this.这不是我的类网站,但可能需要一些解释..)

但是,我找不到任何理由以不同的方式打电话。因为函数load_balance()只在执行平衡的cpu最自由的情况下才做一些平衡的事情,所以,总是平衡代码会“拉”'来自另一个cpu任务的任务。

为什么他们这样的术语如push& amp;拉?我认为推送迁移应该意味着将我的任务交给另一个cpu。有任何想法或证据吗?

感谢。

1 个答案:

答案 0 :(得分:0)

要理解这个问题的答案只是以一般的方式思考。

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发现运行队列中没有进程,则某些进程将被移动到另一个进程,因此它会突袭另一个处理器的运行队列并将进程转移到它自己的队列中,这样它就会有要跑的东西。