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内核NUMA机制

Linux 内核 内存管理物理内存组织结构 ① ( 多处理器体系结构 | SMP/UMA 对称多处理器结构 | NUMA 非一致内存访问结构 )

比较smp 、ssmp 、cc -numa 、基于集群的mpp 及dsm 在体系结构的异同点?

Hyper-V 性能加速之NUMA

CPU 架构SMP/NUMA,调优

服务器体系(SMP, NUMA, MPP)与共享存储器架构(UMA和NUMA)