Linux kernel 如何在Linux内核(三星Exynos5422)中实现异构多处理(HMP)调度?

Linux kernel 如何在Linux内核(三星Exynos5422)中实现异构多处理(HMP)调度?,linux-kernel,scheduling,smp,odroid,hmp,Linux Kernel,Scheduling,Smp,Odroid,Hmp,有人知道Linux内核调度器是如何实现异构多处理(HMP)调度的吗 这已经在ODROID-XU3板提供的内核中实现。 () 我大致知道它计算某个进程的负载,并根据该负载重新调度到更快或更慢的CPU。 我正在寻找更详细的解释,如果可能的话,还有实现此功能的函数的代码位置。代码: 在#ifdef CONFIG_SCHED_HMP下签出源代码,主要在 (并非如此)简要概述: 大。小CPU可配置为两种操作模式: IKS–内核内切换器(也称为CPU迁移) GTS-全局任务调度(也称为big.LITTL

有人知道Linux内核调度器是如何实现异构多处理(HMP)调度的吗

这已经在ODROID-XU3板提供的内核中实现。 ()

我大致知道它计算某个进程的负载,并根据该负载重新调度到更快或更慢的CPU。 我正在寻找更详细的解释,如果可能的话,还有实现此功能的函数的代码位置。

代码: 在
#ifdef CONFIG_SCHED_HMP
下签出源代码,主要在


(并非如此)简要概述: 大。小CPU可配置为两种操作模式:

  • IKS–内核内切换器(也称为CPU迁移)
  • GTS-全局任务调度(也称为big.LITTLE MP)
GTS是一种异构的操作形式,即HMP

在最抽象的层次上,HMP目前仅通过扩展DVFSSMP负载平衡来支持。这两者都充分意识到了大内核(相对于小内核)的性能优势,并相应地安排了高优先级、cpu密集型的前台任务

动态电压和频率缩放(DVFS)用于适应所需性能的瞬时变化。big.LITTLE的迁移模式扩展了这一概念,允许在小内核的最高DVFS操作点之上过渡到“大”CPU内核。迁移大约需要30微秒。相比之下,DVFS驱动程序通常每50毫秒评估一次操作系统和单个内核的性能,尽管有些实现的采样频率稍高一些。改变电压和频率大约需要100微秒。由于迁移CPU或群集所需的时间比DVFS更改时间短,并且比DVFS更改的操作系统评估周期短一个数量级,因此大的转换和小的转换将使处理器能够在较低的操作点上运行,更频繁,而且用户完全看不见

在全局任务调度模型中,DVFS机制仍在运行,但操作系统内核调度器知道系统中的大小内核,并寻求高性能线程与高性能内核之间的负载平衡,以及低性能或内存限制线程与高效内核之间的负载平衡。这类似于今天的SMP负载平衡器,它自动平衡系统中可用内核之间的线程,并空闲未使用的内核。在big.LITTLE全局任务调度中,相同的机制正在运行,但操作系统会跟踪每个线程的负载历史,并使用该历史加上实时性能采样,在大小内核之间适当地平衡线程

参考资料: