linux-kernel – 如何在Linux内核(Samsung Exynos5422)中实现异构多处理(HMP)调度?

有谁知道如何在 Linux内核调度程序中实现异构多处理(HMP)调度?

这已在ODROID-XU3板提供的内核中实现.
(https://github.com/hardkernel/linux.git -b odroidxu3-3.10.y-android)

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

解决方法

码:

检查#ifdef CONfig_SCHED_HMP下的源代码主要在kernel/sched/core.c
之内

A(不是那样)简要概述:

big.LITTLE cpu可以配置为2种操作模式:

> IKS – 内核切换器(也称为cpu迁移)
> GTS – 全局任务调度(也称为big.LITTLE MP)

GTS是异构的操作形式,即HMP.

在最抽象的级别,HMP目前仅通过扩展DVFS和SMP负载平衡来支持.这两者都充分了解大核(通过LITTLE核心)的性能优势,并相应地安排高优先级,cpu密集型前台任务.

Dynamic voltage and frequency scaling (DVFS) is used to adapt to instantaneous changes in required performance. The migration modes of big.LITTLE extends this concept by enabling a transition to “big” cpu cores above the highest DVFS operating point of the LITTLE cores. The migration takes about 30 microseconds. By contrast,the DVFS driver evaluates the performance of the OS and the individual cores typically every 50 milliseconds,although some implementations sample slightly more frequently. It takes about 100 microseconds to change voltage and frequency. Because the time taken to migrate a cpu or a cluster is shorter than the DVFS change time and an order of magnitude shorter than the OS evaluation period for DVFS changes,big.LITTLE transitions will enable the processors to run at lower operating points,more frequently,and further,be completely invisible to the user.

In the Global Task Scheduling model,the DVFS mechanisms are still in operation,but the operating system kernel scheduler is aware of the big and LITTLE cores in the system and seeks to load balance high performance threads to high performance cores,and low performance or memory bound threads to the high efficiency cores. This is similar to SMP load balancers today,that automatically balance threads across the cores available in the system,and idle unused cores. In big.LITTLE Global Task Scheduling,the same mechanism is in operation,but the OS keeps track of the load history of each thread and uses that history plus real-time performance sampling to balance threads appropriately among big and LITTLE cores.

参考:community.arm.com : Ten Things to Know About big.LITTLE

相关文章

在Linux上编写运行C语言程序,经常会遇到程序崩溃、卡死等异...
git使用小结很多人可能和我一样,起初对git是一无所知的。我...
1. 操作系统环境、安装包准备 宿主机:Max OSX 10.10.5 虚拟...
因为业务系统需求,需要对web服务作nginx代理,在不断的尝试...
Linux模块机制浅析 Linux允许用户通过插入模块,实现干预内核...
一、Hadoop HA的Web页面访问 Hadoop开启HA后,会同时存在两个...