NUMA 和 SMP 上的 Linux 调度程序
Posted
技术标签:
【中文标题】NUMA 和 SMP 上的 Linux 调度程序【英文标题】:Linux Scheduler on NUMA and SMP 【发布时间】:2013-02-11 11:17:58 【问题描述】:我想知道 schedule() 函数的副本是否在每个处理器上运行,或者它只是为每个处理器运行一个 schedule()。
如果在每个处理器/内核上运行 schedule() 的副本,进程如何分派到特定的 CPU/cpu 运行队列。它是负载均衡器的工作吗?是只为所有 CPU 运行一个负载均衡器,还是使用标志/通信方法以分布式方式完成?
ps- 我知道调度类等的工作,但我很难弄清楚各种运行队列之间的进程分布。
【问题讨论】:
【参考方案1】:进程如何分派到特定的 CPU/cpu 运行队列。是负载均衡器的工作吗?
是的。在多处理器系统中,负载均衡器会定期检查 CPU 负载是否不均衡;如果是,则处理器执行跨 CPU 的任务平衡。
是否只有一个负载均衡器为所有 CPU 运行,还是使用标志/通信方法以分布式方式完成?
是的。在 SMP 调度中,只有一个 schedule() 和一个负载均衡来管理多个内核之间的多任务处理。
参考:Inside the Linux scheduler。
【讨论】:
以上是关于NUMA 和 SMP 上的 Linux 调度程序的主要内容,如果未能解决你的问题,请参考以下文章
Linux 内核 内存管理物理内存组织结构 ① ( 多处理器体系结构 | SMP/UMA 对称多处理器结构 | NUMA 非一致内存访问结构 )