Page 347 - 《软件学报》2020年第9期
P. 347
2968 Journal of Software 软件学报 Vol.31, No.9, September 2020
2.2 负载均衡异构适配问题
在异构多核处理器环境中,使用传统同构环境的负载均衡算法会导致执行效率问题.其原因是:异构多核处
[8]
理器是一个相对复杂的架构设计,每种类型的核之间的微架构存在差异 ,包括流水线设计、缓存设计等差异.
以 ARM big.LITTLE 设计(包括 ARM Cortex A15 和 A7)为例,这两种类型核在微架构方面存在显著差异.A7(小
核)主要用于低功耗处理,采用 8~10 级顺序(in-order)流水线设计;A15(大核)主要用于性能处理,采用 15~24 级乱
序(out-of-order)流水线设计.微架构设计的不同,导致 A15 和 A7 的处理能力大不相同,在运行处理器运算能力基
[4]
准程序 Dhrystone 的情况下,A15 可以达到 A7 的 1.9 倍 .此外,不同的任务类型适合运行的核类型也不同.例如:
计算密集型任务更适合在乱序窗口、取指宽度大的乱序核上运行,因此在 A15 上受益明显,更适合迁移到大核
上运行;访存密集型任务由于访存延时无法充分利用流水线的并发设计,更适合在小核上运行.因此,基于 CPU
和任务对称性假设下的传统负载均衡,在异构多核处理器上会产生不准确的负载均衡决策.
在目前主流的 Linux 操作系统中,针对异构处理器环境下负载均衡问题,有如图 1 所示两种(Sys1,Sys2)常见
的系统状态.
• 一是图中 Sys1 所描述思路,即继续使用为同构环境设计的经典调度器;这些调度器可以在异构处理器
环境下正常运行,但由于未针对异构环境进行适配,可能出现前文所述的低效情况.因此,操作系统中常
用的调度算法,比如先进先出(FCFS)、时间片轮转(RR)、最高优先级(HPF)、完全公平(CFS)等,在异构
处理器环境都同样面临着异构适配的问题;
• 二是图中 Sys2 所述系统状态,即使用异构处理器专用调度器,其优点是对异构环境的适配较好,其缺点
是缺乏通用性.
在以上背景下,本研究认为:为异构处理器环境的负载均衡提供系统级的支持,是一种可行的、更为通用的
方案.其思路如图 1 中 Sys3 所示,使用专用定制的系统级接口以及参数,传统调度器也可以有效地与异构硬件环
境进行适配,且可以保留原有操作系统调度机制的通用性.
Fig.1 Load balancing problem in heterogeneous multi-core environment
图 1 异构多核环境下负载均衡的适配问题
3 S-Bridge
本文从系统层面提出了一种负载均衡的增强代理机制 S-Bridge,其主要思路是:基于针对任务在不同架构
类型核上相关执行信息的学习,实现独立于调度算法的异构感知层.S-Bridge 在系统层面提供接口和参数,通过
负载扩展因子对线程的基础负载进行动态适配,协助调度器的负载均衡进行决策的优化,将任务分配到更加合
适的核上运行.
3.1 系统设计
S-Bridge 的主要思想是:在系统中设计实现一种增强代理层,在不修改现有负载均衡算法的前提下,设计一
系列异构感知的接口和参数,供调度器使用,协助负载均衡进行异构感知和适配.为了保证 S-Bridge 架构无关性,
设计独立的模块与硬件交互获取任务性能事件(performance monitoring counter,简称 PMC [29] )信息.S-Bridge 总