2013-02-11 95 views
0

我想知道schedule()函數的副本是在每個處理器上運行,還是僅爲每個處理器運行一個schedule()。NUMA和SMP上的Linux調度程序

如果在每個處理器/內核上運行schedule()的副本,那麼這些進程如何調度到特定的CPU/CPU runqueue。這是負載均衡器的工作嗎?是否只有一個負載平衡器針對所有CPU運行,或者是使用標誌/通信方法以分佈式方式完成的?

ps-我知道調度類的工作等,但我很難搞清楚各種runqueue之間的過程分佈。

回答

0

如何將進程分派到特定的CPU/CPU運行隊列。這是負載均衡器的工作嗎?

是的。在多處理器系統中,負載平衡器定期檢查CPU負載是否不平衡;如果是這樣,處理器會執行任務的跨CPU平衡。

是否只有一個負載均衡器爲所有CPU運行,或者是使用標誌/通信方法以分佈式方式執行?

是的。在SMP調度中,只有一個調度()和一個負載平衡來管理多個內核之間的多任務。請參閱:Inside the Linux scheduler