Page 345 - 《软件学报》2020年第9期
P. 345

2966                                 Journal of Software  软件学报 Vol.31, No.9,  September 2020

             性能非对称性异构多核处理器(asymmetric multicore processors,简称 AMPs)在同一处理器中集成不同微架
         构设计的 CPU 核心(core),这些核心具有不同的特性,比如高性能、低功耗,可以协同工作提供良好的性能功耗
                                                   [4]
         比(能效)  [1−3] .目前,典型的代表是 ARM 的 big.LITTLE 架构设计(例如高通骁龙 855 和华为麒麟 980),普遍应用
                                                   [5]
         在移动终端场景下,可以根据手机上不同应用的需求 选择不同的 CPU 核心处理,以便达到性能与功耗的平衡.
                                                                                   [1]
             然而,异构多核处理器设计在提供高能效的同时,也为操作系统的任务调度带来诸多挑战 .任务调度作为
                                             [6]
         提高多核系统性能和资源利用率的重要手段 ,其中一个重要的问题是 CPU 调度的负载均衡                               [7,8] .由于传统负载
         均衡主要是针对同构多核处理器设计,其基本思想是保证负载在各个核之间均匀分布,当分布不均时,需要将任
         务从高负载核心迁移到低负载核心             [9,10] .然而在异构环境中,不同核之间的微架构存在差异,相同任务在不同类
         型核上运行的相对负载不尽相同,无法再以任务的平均分布情况作为负载均衡的单一判别标准.同时,由于不同
         类型任务对于 CPU 核的利用情况差异显著             [2,3] ,传统的负载均衡会导致不合理的决策.
             基于此问题,已有研究工作是面向异构环境进行调度模块本身的设计和优化                            [7,11−15] ,为异构环境提供了可
         用的调度和负载均衡方案.然而,由于缺乏平台级的改进,无法对传统环境下已有的调度器形成支持,因而降低
         了系统调度机制适配的可扩展特性.在上述背景下,本文提出一种新的负载均衡机制 S-Bridge,在系统层实现对
         CPU 微架构和任务异构性的感知;继而对所有调度器提供相应开发接口,协助调度器进行异构感知的负载均衡.
             本文的主要贡献如下:
             (1)  提出一种新的负载均衡机制 S-Bridge,在不修改调度算法的前提下,在系统层面实现接口和参数,进行
                 处理器核心和工作负载的异构性的适配.S-Bridge 最显著的贡献是:在异构环境下,可以协助没有异构
                 支持的调度器进行快速适配和性能优化;
             (2)  提出一种新的负载度量模型,在传统负载度量方法的基础上进行扩展,基于对任务运行性能的经验分
                 析,为负载均衡决策提供感知决策;
             (3)  在不同的内核版本上,针对不同的调度算法实现 S-Bridge,验证 S-Bridge 的有效性和通用性.
             本文第 1 节介绍异构调度的相关工作.第 2 节描述异构多核环境下的负载均衡问题.第 3 节详细介绍
         S-Bridge 的设计与实现.第 4 节介绍相关实验及结果讨论.第 5 节是结论及展望.

         1    相关工作

                                                                             [1]
             异构多核处理器最主要的优势是,不同类型的核心可以满足不同特定应用的需求 .因此,在任务调度时,需
         要感知异构所带来的计算能力的差异性和任务特性,为任务选择更合适的核心.近年,异构支持的调度优化出现
         很多研究工作,主要从满足性能           [7,11−14,16−21] 、能效 [22−26] 、公平性 [15,27,28] 等优化目标提出调度算法.由于本文主要
         是性能为主要优化目标,下面将重点介绍已有研究工作.
             HASS [18] 是静态调度算法,在调度之前,借助编译器的反馈优化技术提前对程序进行分析,并在二进制文件
         中保存架构签名,主要包括程序在不同配置核上的访存信息,作为程序是否受益大核的依据.文献[7,11,19]根据
         应用的运行时状态(比如性能事件信息)进行调度策略的优化,文献[19]通过将线程分配到不同类型核上运行一
         段时间,周期性地进行 IPC 的采样,根据在大核和小核上运行的 IPC 加速比进行线程的迁移.为了避免 IPC 变化
         所带来的频繁迁移,调度决策依据历史 IPC 和当前 IPC 的加权平均.文献[7]建立 CPI 栈模型,由核内阻塞、核外
         阻塞和真正执行占用的周期数组成,通过在不同核上采样证明:当线程 CPI 栈以执行周期为主时,线程具有大核
         偏好(BIAS);反之则具有小核偏好.在系统不均衡的情况下,选择最合适的任务迁移到目标核上.文献[11]根据周
         期性地统计性能事件(包括 LLC 缺失数、指令数、指令之间的依赖距离分布等)建立栈模型,结合硬件的架构参
         数进行 MLP 和 ILP 的预测,并根据预测结果做出调度决策.文献[20]提出一种异构感知的负载均衡策略,保证核
         上运行的负载与核功耗成比例,并通过优先使用大核的策略提升系统执行性能,通过在线监控线程的常驻工作
         集预测线程迁移的代价,并根据迁移代价进行线程迁移的优化.文献[21]采用跟文献[20]相类似的大核优先的调
         度策略和类似的效果,两者的主要区别是,文献[20]在提升性能的同时保证公平性.文献[12]基于间隔分析
         (interval analysis)理论模型,通过动态获取程序性能数据构建 CPI 栈来统计线程在不同核上的 IPC,并形成以不
   340   341   342   343   344   345   346   347   348   349   350