首页> 中国专利> 一种基于异构多核体系的CPU调度方法、装置和系统

一种基于异构多核体系的CPU调度方法、装置和系统

摘要

本发明公开了一种基于异构多核的CPU调度方法、装置和系统,涉及计算机系统的CPU调度技术领域,用以实现对异构多核体系的CPU调度,合理使用资源,提高系统性能,充分发挥异构多核体系的优势。所述基于异构多核的CPU调度方法包括:接收处理设备发送的应用程序的性能类型信息;根据所述应用程序的性能类型信息,为所述应用程序调度CPU。

著录项

  • 公开/公告号CN103645954A

    专利类型发明专利

  • 公开/公告日2014-03-19

    原文格式PDF

  • 申请/专利权人 华为技术有限公司;

    申请/专利号CN201310594340.7

  • 发明设计人 陆成刚;

    申请日2013-11-21

  • 分类号G06F9/50(20060101);

  • 代理机构11274 北京中博世达专利商标代理有限公司;

  • 代理人申健

  • 地址 518129 广东省深圳市龙岗区坂田华为总部办公楼

  • 入库时间 2024-02-19 22:53:23

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2018-12-14

    授权

    授权

  • 2014-04-16

    实质审查的生效 IPC(主分类):G06F9/50 申请日:20131121

    实质审查的生效

  • 2014-03-19

    公开

    公开

说明书

技术领域

本发明涉及计算机系统的CPU调度技术领域,尤其涉及一种基于 异构多核体系的CPU调度方法、装置和系统。

背景技术

目前,主流操作系统调度器支持的是同构多核体系,例如对称多 处理器体系(Symmetrical Multi-Processing,简称SMP)。而异构 多核体系是指处理器中所有核是不全都一样的架构,例如像 big.LITTLE架构的非对称多处理器体系,基于异构多核体系的操作系 统主要采用以下两种方式对中央处理器(Central Processing Unit, 简称CPU)进行调度。

一种方式为:通过在硬件架构上将高性能的CPU核和低功耗的CPU 核分别作为一个处理器簇。操作系统使用其自身提供的频率调节模块, 并根据系统性能功耗需求进行处理器簇间的切换。根据性能功耗需求 进行处理器簇切换,同一时间只有一个处理器簇运行,并不能充分发 挥异构多核cpu架构优势;系统运行过程中,处在性能切换点时,可 能出现两个处理簇间的频繁切换,造成性能损失。

另一种方式为:利用现有操作系统的CPU调度技术,将CPU划分 到不同的调度域(同一调度域为同构CPU),并根据任务优先级及任务 负载历史信息,将任务放到不同的调度域调度。这种CPU调度技术, 对任务的分组决策不准确,不能准确的分配到相应的调度域。

发明内容

本发明的实施例提供了一种基于异构多核体系的CPU调度方法、 装置和系统,以实现对异构多核体系的CPU调度。

为达到上述目的,本发明的实施例采用如下技术方案:

第一方面,本发明实施例提供了一种基于异构多核体系的CPU调 度方法,包括:

接收处理设备发送的应用程序的性能类型信息;

根据所述应用程序的性能类型信息,为所述应用程序调度CPU。

在第一方面的第一种可能的实现方式中,所述接收处理设备发送 的应用程序的性能类型信息之前,所述方法还包括:

采集所述应用程序的运行信息;

发送所述应用程序的运行信息给处理设备,以使得所述处理设备 根据所述应用程序的运行信息确定所述应用程序的性能类型信息。

在第一方面的第一种可能的实现方式中,还提供了第一方面的第 二种可能的实现方式,所述采集应用程序的运行信息包括:

按照预设的时间间隔、利用预设的采集工具采集所述应用程序的 运行信息。

在第一方面的前两种任一可能的实现方式中,还提供了第一方面 的第三种可能的实现方式,所述发送所述应用程序的运行信息给处理 设备,以使得所述处理设备根据所述应用程序的运行信息确定所述应 用程序的性能类型信息,包括:

发送所述应用程序的运行信息给处理设备,以使得所述处理设备 对所述应用程序的运行信息进行统计分析,得到所述应用程序的性能 类型信息。

第二方面,本发明实施例提供了一种基于异构多核体系的CPU调 度方法,包括:

接收终端设备发送的应用程序的运行信息,所述应用程序的运行 信息为所述终端设备采集得到的;

根据所述应用程序的运行信息,确定所述应用程序的性能类型信 息;

发送所述应用程序的性能类型信息给所述终端设备,以使得所述 终端设备根据所述应用程序的性能类型信息为所述应用程序调度CPU。

在第二方面的第一种可能的实现方式中,所述应用程序的运行信 息为所述终端设备采集得到的包括:

所述应用程序的运行信息为所述终端设备按照预设的时间间隔、 利用预设的采集工具采集得到。

在第二方面或第二方面的第一种可能的实现方式中,还提供了第 二方面的第二种可能的实现方式,所述根据所述应用程序的运行信息, 确定所述应用程序的性能类型信息包括:

对所述应用程序的运行信息进行统计分析,确定所述应用程序的 性能类型信息。

第三方面,本发明实施例提供了一种终端设备,包括:

接收模块,用于接收处理设备发送的应用程序的性能类型信息;

调度模块,用于根据所述接收模块得到的所述应用程序的性能类 型信息,为所述应用程序调度CPU。

在第三方面的第一种可能的实现方式中,所述接收模块接收处理 设备发送的应用程序的性能类型信息之前,所述终端设备还包括:

采集模块,用于采集所述应用程序的运行信息;

发送模块,用于发送所述采集模块得到的所述应用程序的运行信 息给处理设备,以使得所述处理设备根据所述应用程序的运行信息确 定所述应用程序的性能类型信息。

在第三方面的第一种可能的实现方式中,还提供了第三方面的第 二种可能的实现方式,所述采集模块具体用于按照预设的时间间隔、 利用预设的采集工具采集所述应用程序的运行信息。

在第三方面的前两种任一可能的实现方式中,还提供了第三方面 的第三种可能的实现方式,所述发送模块具体用于发送所述应用程序 的运行信息给处理设备,以使得所述处理设备对所述应用程序的运行 信息进行统计分析,得到所述应用程序的性能类型信息。

第四方面,本发明实施例提供了一种处理设备,包括:

接收模块,用于接收终端设备发送的应用程序的运行信息,所述 应用程序的运行信息为所述终端设备采集得到的;

确定模块,用于根据所述接收模块接收到的所述应用程序的运行 信息,确定所述应用程序的性能类型信息;

发送模块,用于发送所述确定模块得到的所述应用程序的性能类 型信息给所述终端设备,以使得所述终端设备根据所述应用程序的性 能类型信息为所述应用程序调度CPU。

在第四方面的第一种可能的实现方式中,所述确定模块具体用于 对所述应用程序的运行信息进行统计分析,确定所述应用程序的性能 类型信息。

第五方面,本发明实施例提供了一种基于异构多核体系的CPU调 度系统,包括:第三方面或第三方面中任一可能的实现方式中所述的 终端设备,以及第四方面或第四方面中任一可能的实现方式中所述的 处理设备。

本发明的实施例提供了一种基于异构多核体系的CPU调度方法、 装置和系统,通过采集应用程序的运行信息,并将所述应用程序的运 行信息发送给处理设备,处理设备根据所述应用程序的运行信息确定 所述应用程序的性能类型信息,并将所述应用程序的性能类型信息发 送给终端设备,终端设备根据所述应用程序的性能类型信息为所述应 用程序调度CPU,也就是说,通过终端设备与处理设备之间的交互,终 端设备获取应用程序的性能类型信息,并根据所述应用程序的性能类 型信息实现对异构多核体系的CPU调度,以合理使用资源,提高系统 性能,充分发挥异构多核体系的优势。

附图说明

为了更清楚地说明本发明实施例的技术方案,下面将对实施例描 述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附 图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不 付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本发明实施例提供的一种基于异构多核的CPU调度方法的 示意图;

图2为本发明实施例提供的另一种基于异构多核的CPU调度方法 的示意图;

图3为本发明实施例提供的另一种基于异构多核的CPU调度方法 的示意图;

图4为本发明实施例提供的一种基于异构多核的CPU调度方法的 流程示意图;

图5为本发明实施例一提供的一种基于异构多核的CPU调度方法 的流程示意图;

图6为本发明实施例二提供的一种基于异构多核的CPU调度方法 流程示意图;

图7为本发明实施例提供的一种终端设备的结构示意图;

图8为本发明实施例提供的另一种终端设备的结构示意图;

图9为本发明实施例提供的一种处理设备的结构示意图;

图10为本发明实施例提供的一种终端设备的实体结构示意图;

图11为本发明实施例提供的一种处理设备的实体结构示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方 案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部 分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普 通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例, 都属于本发明保护的范围。

本发明提供了一种基于异构多核体系的CPU调度方法,如图1所 示,包括:

S101、接收处理设备发送的应用程序的性能类型信息。

S102、根据所述应用程序的性能类型信息,为所述应用程序调度 CPU。

可选的,在步骤S101之前,所述CPU调度方法还包括:

采集所述应用程序的运行信息;

发送所述应用程序的运行信息给处理设备,以使得所述处理设备 根据所述应用程序的运行信息确定所述应用程序的性能类型信息。

可选的,在步骤S101之后,步骤S102之前,所述方法还包括:

将所述应用程序的性能类型信息存储在内存中。

进一步的,所述终端设备根据存储的所述应用程序的性能类型信 息,为所述应用程序调度CPU。

针对上述基于异构多核体系的CPU调度方法,如图2所示,本发 明实施例提供了一种具体的基于异构多核体系的CPU调度方法,包括:

S201、采集应用程序的运行信息。

其中,所述采集应用程序的运行信息可以按照预设的时间、利用 预设的采集工具采集所述应用程序的运行信息。

所述应用程序的运行信息可以为应用程序的CPU消耗信息、IO消 耗信息,也可以为应用程序的功耗信息,当然不限于此。

所述预设的时间间隔可以为在后台服务程序中编写具有定时器功 能的程序代码,该时间间隔可以根据不同的终端设备进行合理的设置, 可以为2秒或者5秒,当然不限于此。

所述预设的采集工具可以为操作系统中现有的采集工具,比如在 Linux操作系统中Linux内核提供的top、sar、iostat等工具;也可 以为用户设计的新的采集工具,当然不限于此。

S202、发送所述应用程序的运行信息给处理设备,以使得所述处 理设备根据所述应用程序的运行信息确定所述应用程序的性能类型信 息。

其中,所述处理设备根据所述应用程序的运行信息确定所述应用 程序的性能类型信息包括:所述处理设备对所述应用程序的运行信息 进行统计分析,得到所述应用程序的性能类型信息。

所述统计分析可以为应用程序运行在不同的场景下,处理设备利 用统计算法,对不同场景下的运行信息进行处理分析,以得到所述应 用程序的性能类型信息。

由所述处理设备所确定的所述应用程序的性能类型信息,可以为 由所述应用程序的CPU消耗信息和IO消耗信息进行分析得到的分析结 果,该分析结果可以指示所述应用程序为CPU密集型应用还是IO密集 型应用,或者既是CPU密集型应用又是IO密集型应用。其中,若所述 应用程序为CPU密集型应用,则表示所述应用程序的性能较高;若所 述应用程序为IO密集型应用,则表示所述应用程序的性能较低;若所 述应用程序既是CPU密集型应用又是IO密集型应用,则所述应用程序 的性能高低由实际情况而定。

所述处理设备也可以称为第三方系统,该处理设备可以为本地的 服务进程,也可以为远程的服务端或者云端,当然不限于此。

S203、接收所述处理设备发送的所述应用程序的性能类型信息。

S204、将所述应用程序的性能类型信息存储在内存中。

S205、根据存储的所述应用程序的性能类型信息,为所述应用程 序调度CPU。

其中,可以根据不同的分配机制对CPU进行划分,得到不同的CPU 调度域,终端设备根据存储的所述应用程序的性能类型信息,将所述 应用程序分配到合适的CPU调度域,以便所述应用程序在分配的CPU 调度域内的CPU运行所述应用程序。

可选的,可以按照CPU功耗性能将CPU划分为高功耗的处理器簇 和低功耗的处理器簇,则CPU调度域为高功耗的处理器簇和低功耗的 处理器簇;对于在Linux操作系统中,CPU调度域称为cpuset,其中, cpuset与cgroup(control groups,系统资源控制分组)一一对应。 因此,可以根据所述应用程序的性能类型信息为所述应用程序分配 cgroup。

其中,cgroup是Linux中一种通过树结构的管理方式来控制一个 或者多个进程使用系统物理资源的机制,主要包括对CPU、内存 (memory)、硬盘输入/输出(disk I/O,disk input/output)、网 络类(network class)等资源向系统中各个进程分配的方法。cpuset 为包含至少一个CPU的处理器簇。

示例的,假设在Linux系统中,该Linux系统包含有四个CPU,其 中编号为0,1的两个CPU为高性能CPU,编号为2,3的两个CPU为低 功耗CPU,在操作系统启动时,可以通过cpuset将编号为0,1的两个 CPU分配给cgroupA,编号为2,3的两个CPU分配给cgroupB,那么, cgroupA中的进程只能运行在编号为0,1的两个CPU上,cgroupB中 的进程只能运行在编号为2,3的两个CPU上。此时,可以采用cgroup、 cpuset技术,根据所述应用程序为CPU密集型还是IO密集型,将应用 程序分配到不同的cgroup中。

或者可选的,终端设备根据所述应用程序的性能类型信息为所述 应用程序设置需要调度的处理器簇。具体的,操作系统可以预存有应 用程序的性能类型信息与处理器簇之间的对应关系,此步骤中,终端 设备根据得到的所述应用程序的性能类型信息,查询对应关系,就可 以得到为所述应用程序分配的处理器簇。

示例的,假定计算机系统中的多个CPU分为两个处理器簇,其中 一个为高性能的,另一个为低性能的。此时,当应用程序为CPU密集 型应用时,根据对应关系操作系统将所述应用程序分配到高性能的处 理器簇上进行CPU调度;当应用程序为IO密集型的应用时,根据对应 关系操作系统将所述应用程序分配到低性能的处理器簇上进行CPU调 度;对于既是CPU密集型又同时是IO密集型的应用程序,为达到最佳 的用户体验,处理设备可以根据所述应用程序运行时每小时的耗电量 数据,以及所述应用程序的运行信息对用户体验产生的影响,确定将 所述应用程序放到合适的CPU调度域进行调度执行。

本发明的实施例提供了一种基于异构多核体系的CPU调度方法, 通过采集应用程序的运行信息,并将所述应用程序的运行信息发送给 处理设备,以使得所述处理设备根据所述应用程序的运行信息确定所 述应用程序的性能类型信息,接收所述处理设备发送的所述应用程序 的性能类型信息,并根据所述应用程序的性能类型信息,为所述应用 程序调度CPU以实现对异构多核体系的CPU调度,合理使用资源,提 高系统性能,充分发挥异构多核体系的优势。

本本发明实施例提供了一种基于异构多核体系的CPU调度方法, 如图3所示,包括:

S301、接收终端设备发送的应用程序的运行信息,所述应用程序 的运行信息为所述终端设备采集得到的。

其中,所述应用程序的运行信息为所述终端设备采集得到的包括: 所述应用程序的运行信息为所述终端设备按照预设的时间间隔、利用 预设的采集工具采集所述应用程序的运行信息得到。

所述应用程序的运行信息可以为应用程序的CPU消耗信息、IO消 耗信息,也可以为应用程序的功耗信息,当然不限于此。

所述预设的时间间隔可以为在后台服务程序中编写具有定时器功 能的程序代码,该时间间隔可以根据不同的终端设备进行合理的设置, 可以为2秒或者5秒,当然不限于此。

所述预设的采集工具可以为操作系统中现有的采集工具,比如在 Linux操作系统中Linux内核提供的top、sar、iostat等工具;也可 以为用户设计的新的采集工具,当然不限于此。

S302、根据所述应用程序的运行信息,确定所述应用程序的性能 类型信息。

其中,根据所述应用程序的运行信息,确定所述应用程序的性能 类型信息包括:对所述应用程序的运行信息进行统计分析,确定所述 应用程序的性能类型信息。

所述统计分析可以为应用程序运行在不同的场景下,处理设备利 用统计算法,对不同场景下的运行信息进行处理分析,以得到所述应 用程序的性能类型信息。

由所述处理设备所确定的所述应用程序的性能类型信息,可以为 由所述应用程序的CPU消耗信息和IO消耗信息进行分析得到的分析结 果,该分析结果可以指示所述应用程序为CPU密集型应用还是IO密集 型应用,或者既是CPU密集型应用又是IO密集型应用。其中,若所述 应用程序为CPU密集型应用,则表示所述应用程序的性能较高;若所 述应用程序为IO密集型应用,则表示所述应用程序的性能较低;若所 述应用程序既是CPU密集型应用又是IO密集型应用,则所述应用程序 的性能高低由实际情况而定。

所述处理设备也可以称为第三方系统,该处理设备可以为本地的 服务进程,也可以为远程的服务端或者云端,当然不限于此。

S303、发送所述应用程序的性能类型信息给所述终端设备,以使 得所述终端设备根据所述应用程序的性能类型信息为所述应用程序调 度CPU。

可选的,在步骤S303中,发送所述应用程序的性能类型信息给所 述终端设备,以使得所述终端设备接收所述应用程序的性能类型信息, 并将所述应用程序的性能类型信息存储在内存中,根据存储的所述应 用程序的性能类型信息为所述应用程序调度CPU。

本发明的实施例提供了一种基于异构多核体系的CPU调度方法, 通过接收终端设备发送的应用程序的运行信息,并根据所述应用程序 的运行信息,确定所述应用程序的性能类型信息,同时将所述应用程 序的性能类型信息发送给所述终端设备,以使得所述终端设备根据所 述应用程序的性能类型信息为所述应用程序调度CPU,以实现对异构多 核体系的CPU调度,合理使用资源,提高系统性能,充分发挥异构多 核体系的优势。

针对上述所述的基于异构多核体系的CPU调度方法,本发明实施 例提供了一种具体的基于异构多核体系的CPU调度方法,如图4所示, 包括:

S401、终端设备系统启动,同时启动用户空间的后台服务程序。

其中,所述用户空间的后台服务程序可以为在异构多核体系中, 在用户空间已经内置的后台服务程序;该后台程序为用户不可直接接 触的程序,其区别于应用程序。

一般而言,操作系统将自身划分为两部分,一部分为核心软件, 也称为内核空间,另一部分为普通应用程序,也可称为用户空间;用 户空间中的普通应用程序的代码运行在较低的特权级别上,只能允许 其使用部分系统资源,而不能使用某些特定的系统功能,也不能直接 访问内核空间和硬件设备,以及其他一些具体的使用限制。

S402、用户空间的后台服务程序获取应用程序的性能类型信息。

所述应用程序是指为了完成某项或某几项特定任务而被开发运行 于操作系统之上的计算机程序;应用程序运行在用户空间,可以和用 户进行交互,一般具有可视的用户界面。

所述应用程序的性能类型信息是指按照性能的高低该应用程序所 分属的类型。

此步骤S402具体可以包括:

(1)用户空间的后台服务程序采集应用程序的运行信息。

示例的,所述应用程序的运行信息可以为应用程序的CPU消耗信 息、IO消耗信息,也可以为应用程序的功耗信息,当然不限于此。

具体的,所述用户空间的后台服务程序采集应用程序的运行信息 包括:用户空间的后台服务程序按照预设的时间间隔、利用预设的采 集工具采集应用程序的运行信息。

所述预设的时间间隔可以为在后台服务程序中编写具有定时器功 能的程序代码,该时间间隔可以根据不同的终端设备进行合理的设置, 可以为2秒或者5秒,当然不限于此。

所述预设的采集工具可以为操作系统中现有的采集工具,比如在 Linux操作系统中Linux内核提供的top、sar、iostat等工具;也可 以为用户设计的新的采集工具。

示例的,假设采用Linux操作系统,则当后台服务程序在运行过 程中,可以利用Linux内核提供的top采集工具,每2秒采集一次当 前应用程序的CPU消耗信息和IO消耗信息。

(2)用户空间的后台服务程序获取由所述应用程序的运行信息所 确定的所述应用程序的性能类型信息。

由所述应用程序的运行信息所确定的应用程序的性能类型信息, 可以为由所述应用程序的CPU消耗信息和IO消耗信息进行分析得到的 分析结果,该分析结果可以指示该应用程序为CPU密集型应用还是IO 密集型应用,或者既是CPU密集型应用又是IO密集型应用。其中,若 应用程序为CPU密集型应用,则表示该应用程序的性能较高;若应用 程序为IO密集型应用,则表示该应用程序的性能较低;若应用程序既 是CPU密集型应用又是IO密集型应用,则该应用程序的性能的高低由 实际情况而定。

可选的,此步骤(2)可以是该后台服务程序根据所述应用程序的 运行信息分析得到所述应用程序的性能类型信息。

或者可选的,此步骤(2)包括:用户空间的后台服务程序将所述 应用程序的运行信息发送给处理设备,所述处理设备根据所述应用程 序的运行信息确定所述应用程序的性能类型信息;用户空间的后台服 务程序接收所述处理设备发送的所述应用程序的性能类型信息。

所述处理设备也可以称为第三方系统,该处理设备可以为本地的 服务进程,也可以为远程的服务端或者云端,当然不限于此。

所述处理设备根据所述应用程序的运行信息确定所述应用程序的 性能类型信息包括:所述处理设备对所述应用程序的运行信息进行统 计分析得到所述应用程序的性能类型信息。

所述统计分析可以为应用程序运行在不同的场景下,处理设备利 用统计算法,对不同场景下的运行信息进行处理分析,以得到所述应 用程序的性能类型信息。例如:对于一个应用程序的CPU消耗信息来 讲,在处理设备的服务器上可以得到该应用程序在不同场景下的CPU 空闲率,从大量的数据统计来看,若该应用程序的CPU空闲率均值非 常大,则该应用程序为IO密集型应用,表明该应用程序应该放到性能 低的CPU调度域上调度执行;若该应用程序的CPU空闲率均值非常小, 则该应用程序为CPU密集型应用,表明该应用程序应该放到性能高的 CPU调度域上调度执行。

示例的,在Linux操作系统下,内置于用户空间的后台服务程序 将当前运行的应用程序的CPU消耗信息和IO消耗信息传送给云端,云 端对接收到的所述应用程序的CPU消耗信息和IO消耗信息进行统计分 析,以确定所述应用程序为CPU密集型应用还是IO密集型应用,或者 既是CPU密集型应用又是IO密集型应用;云端在得到当前运行的应用 程序的性能类型信息后,将该应用程序的性能类型信息传送给后台服 务程序,后台服务程序接收云端传送的最新的应用程序的性能类型信 息。

S403、用户空间的后台服务程序将所述应用程序的性能类型信息 存储在内存中。

示例的,在Linux操作系统下,内置于用户空间的后台服务程序 将云端传送的应用程序是属于CPU密集型应用,还是IO密集型应用, 或者既是CPU密集型应用又是IO密集型应用的性能类型信息存储在内 存中,以使得当操作系统加载所述应用程序时,可以获取到该应用程 序的性能类型信息,以便操作系统将该应用程序进程放到不同的调度 域执行。

S404、当应用程序开始执行时,用户空间的后台加载程序通过用 户空间的后台服务程序获取所述应用程序的性能类型信息。

示例的,当一个应用程序开始执行时,用户空间的后台加载程序 通过用户空间的后台服务程序获取到该应用程序的性能类型信息,即 获取该应用程序为CPU密集型应用,还是IO密集型应用。

S405、操作系统加载所述应用程序时,用户空间的后台加载程序 调用操作系统接口,向操作系统发送所述应用程序的性能类型信息; 相应的,操作系统接收所述应用程序的性能类型信息。

所述操作系统接口,可以采用操作系统现有的接口,例如:Linux 系统提供给用户空间的系统资源控制分组(cgroup,control groups) 配置接口,也可以是自行实现的接口。

S406、根据所述应用程序的性能类型信息获取所述应用程序的CPU 调度信息。

其中,CPU调度域为根据不同的分配机制对CPU进行划分所得到的 不同区域集合。例如,对于在进行硬件架构时,可以按照CPU功耗性 能将CPU划分为高功耗的处理器簇和低功耗的处理器簇,则CPU调度 域为高功耗的处理器簇和低功耗的处理器簇;对于在Linux操作系统 中,CPU调度域称为cpuset,其中,cpuset与cgroup(control groups, 系统资源控制分组)一一对应。

可选的,操作系统可以根据所述应用程序的性能类型信息为所述 应用程序分配cgroup。

示例的,在Linux操作系统中,利用cgroup和cpuset(cpu set, 系统资源集合)技术,其中,cgroup是Linux中一种通过树结构的管 理方式来控制一个或者多个进程使用系统物理资源的机制,主要包括 对CPU、内存(memory)、硬盘输入/输出(disk I/O,disk input/output)、 网络类(network class)等资源向系统中各个进程分配的方法。cpuset 为包含至少一个CPU的处理器簇。

假设该Linux操作系统包含有四个CPU,其中编号为0,1的两个 CPU为高性能CPU,编号为2,3的两个CPU为低功耗CPU,在操作系统 启动时,可以通过cpuset将编号为0,1的两个CPU分配给cgroupA, 编号为2,3的两个CPU分配给cgroupB,cgroupA中的进程只能运行 在编号为0,1的两个CPU上,cgroupB中的进程只能运行在编号为2, 3的两个CPU上。

此时,操作系统可以采用cgroup、cpuset技术,根据所述应用程 序为CPU密集型还是IO密集型,将应用程序分配到不同的cgroup中。

或者可选的,操作系统根据所述应用程序的性能类型信息为所述 应用程序设置需要调度的处理器簇。

具体的,操作系统可以预存有应用程序的性能类型信息与处理器 簇之间的对应关系,此步骤中,操作系统根据得到的所述应用程序的 性能类型信息,查询对应关系,就可以得到为所述应用程序分配的处 理器簇。

示例的,假定计算机系统中的多个CPU分为两个处理器簇,其中 一个为高性能的,另一个为低性能的。此时,当应用程序为CPU密集 型应用时,根据对应关系操作系统将该应用程序分配到高性能的处理 器簇上进行CPU调度;当应用程序为IO密集型的应用时,根据对应关 系操作系统将该应用程序分配到低性能的处理器簇上进行CPU调度; 对于既是CPU密集型又同时是IO密集型的应用程序,为达到最佳的用 户体验,处理设备可以根据应用程序运行时每小时的耗电量数据,以 及应用程序的运行信息对用户体验产生的影响,确定将应用程序放到 合适的CPU调度域进行调度执行。

S407、将所述应用程序的CPU调度信息存储到进程数据结构中。

可选的,若操作系统可以根据所述应用程序的性能类型信息为所 述应用程序分配cgroup,则将为所述应用程序分配的cgroup作为应用 程序的CPU调度信息写入所述进程数据结构中。

或者可选的,若操作系统根据所述应用程序的性能类型信息为所 述应用程序设置需要调度的处理器簇,则将为所述应用程序所分配的 处理器簇作为应用程序的CPU调度信息写入所述进程数据结构中。

S408、根据所述进程数据结构中所述应用程序的CPU调度信息所 指示的CPU调度域调度执行所述应用程序。

可选的,操作系统在所述应用程序所分配的cgroup中与之相对应 的cpuset中进行调度执行所述应用程序。

或者可选的,若当前正在运行的为第一处理器簇,则根据所述应 用程序的CPU调度信息判断是否需要进行切换到第二处理器簇;若需 要切换,则切换到第二处理器簇,若不需要切换,则继续在第一处理 器簇运行。

需要说明的是,用户空间的后台服务程序、用户空间的后台加载 程序、以及操作系统均属于终端设备,在实际的过程中为终端设备与 处理设备之间的交互。

本发明的实施例提供了一种基于异构多核体系的CPU调度方法, 通过终端设备中的用户空间的后台服务程序与处理设备云端之间的应 用程序之间信息的交互,获取应用程序的性能类型信息,并通过终端 设备中的用户空间的后台加载程序使得终端设备中的操作系统根据该 应用程序性能类型信息为该应用程序调度CPU,以实现对异构多核体系 的CPU调度,合理使用资源,提高系统性能,充分发挥异构多核体系 的优势。

下面,本发明还提供了具体实例,对上述异构多核体系的CPU进 行调度。在各个具体实例中,以手持终端设备采用Linux操作系统为 例,该设备中包含有四个CPU,其中编号0,1的CPU为同构CPU,且为 高性能(即高功耗)的CPU;编号为3,4的CPU为同构CPU,且为低性 能(即低功耗)的CPU。

实施例一、

针对基于异构多核体系中的CPU进行调度,本发明提供了一种具 体的实施方案。

如图5所示,基于异构多核体系中CPU调度方法具体包括以下步 骤:

步骤501、Linux操作系统启动,利用cgroup和cpuset技术对CPU 进行配置,同时开启用户空间的后台服务程序。

所述利用cgroup和cpuset技术对CPU进行配置包括:根据CPU 的结构,利用cpuset技术对多个CPU进行cpuset的划分,将结构相 同的CPU划分到同一个cpuset;同时建立与所划分的cpuset相同个数 的cgroup,一个cgroup对应一个cpuset,并且cgroup中的任务只能 在相对应的cpuset中调度CPU。

在本具体实施例中,将编号为0,1的CPU(如图5中CPU0和CPU1) 划分为cpuset1,编号为3,4的CPU(如图5中CPU2和CPU3)划分为 cpuset2,同时建立两个cgroup,包括cgroupA和cgroupB,其中cgroupA 与cpuset1相对应,cgroupB与cpuset2相对应,如图5所示,并且 cgroupA中的任务只能在cpuset1中的CPU上运行,cgroupB中的任务 只能在cpuset2中的CPU上运行。

步骤502、用户空间的后台服务程序采集应用程序的CPU消耗信息 和IO消耗信息。

示例的,后台服务程序可以利用内核提供的采集工具、每2秒采 集一次当前应用程序CPU消耗信息和IO消耗信息。

步骤503、后台服务程序在满足一定条件时,将采集的CPU消耗信 息和IO消耗信息发送给云端,发送完成后可以清理后台服务程序中的 历史信息,以释放内存资源。

所述一定条件可以是为采集的信息所设定的容量门限、或发送频 率等。

可选的,当后台服务程序采集的CPU消耗信息和IO消耗信息达到 后台服务程序中所设定的容量门限时,将CPU消耗信息和IO消耗信息 发送给云端。所述后台服务程序中所设定的容量限可以为当采集的CPU 消耗信息和IO消耗信息为2k时,后台服务程序将其发送给云端,该 容量门限可以根据不同的手持终端设备进行不同的设定,当然不限于 此。

或者可选的,后台服务程序根据后台服务程序中所设定的发送频 率,将CPU消耗信息和IO消耗信息发送给云端。示例的,所述后台服 务程序中所设定的发送频率将每10秒内采集的CPU消耗信息和IO消 耗信息发送给云端,该发送频率可以根据不同的手持终端设备进行不 同的设定,当然不限与此。

步骤504、云端接收后台服务程序发送的CPU消耗信息和IO消耗 信息,同时对接收的CPU消耗信息和IO消耗信息进行统计分析,得到 应用程序的性能类型信息。

步骤505、云端将应用程序的性能类型信息发送给用户空间的后台 服务程序,相应的,用户空间的后台服务程序保存应用程序的性能类 型信息,并更新到内存中。

步骤506、一个应用程序开始执行。

此步骤可以触发用户空间的后台服务程序执行步骤402-405,也就 是说,只要一个应用程序开始执行,用户空间的后台服务程序就能够 得到这一应用程序的性能类型信息,这就使得用户空间的后台服务程 序就保存了多个应用程序(包括当前执行的、以及之前执行过的应用 程序)的性能类型信息。

步骤507、用户空间的后台加载程序获取应用程序的性能类型信 息。

步骤508、操作系统加载应用程序时,用户空间的后台加载程序调 用操作系统的接口,向操作系统发送所述应用程序的性能类型信息; 相应的,操作系统接收所述应用程序的性能类型信息。

步骤509、操作系统根据应用程序的性能类型信息为应用程序分配 cgroup。

操作系统可以采用cgroup、cpuset技术,根据所述应用程序为CPU 密集型还是IO密集型,将所述应用程序分配到不同的cgroup中。

具体的,若所述应用程序是CPU密集型应用,则将所述应用程序 分配到cgroupA中;若所述应用程序是IO密集型应用,则将所述应用 程序分配到cgroupB中;若所述应用程序既是CPU密集型应用、又是 IO密集型应用,则根据所述应用程序运行时每小时的耗电量数据,以 及所述应用程序的运行信息对用户体验产生的影响,确定将所述应用 程序放到合适的CPU调度域进行调度执行。

步骤510、操作系统在所述应用程序分配的cgroup对应的cpuset 中调度执行所述应用程序。

具体的,若为所述应用程序分配在cgroupA中,由于cgroupA对 应cpuset1,则为该应用程序调度CPU0或CPU1,以执行所述应用程序; 若为所述应用程序分配在cgroupB中,由于cgroupB对应cpuset2,则 为该应用程序调度CPU2或CPU3,以执行所述应用程序;若所述应用程 序既是CPU密集型应用、又是IO密集型应用,则在已经确定的合适的 CPU调度域进行调度执行所述应用程序。

需要说明的是,用户空间的后台服务程序、用户空间的后台加载 程序、以及操作系统均属于终端设备,在实际的过程中为终端设备与 处理设备之间的交互。

本发明的实施例提供了一种基于异构多核体系的CPU调度方法, 通过终端设备中的用户空间的后台服务程序与处理设备云端之间的应 用程序之间信息的交互,获取应用程序的性能类型信息,并通过终端 设备中的用户空间的后台加载程序使得终端设备中的操作系统根据该 应用程序性能类型信息为该应用程序调度CPU,以实现对异构多核体系 的CPU调度,合理使用资源,提高系统性能,充分发挥异构多核体系 的优势。

实施例二、

下面将根据上述描述的设备,针对基于异构多核体系中的CPU进 行调度,提供了另一种具体的实施方案。

在本实施例中,采用和实施例一相同操作系统的手持终端设备, 也就是说,该手持中端设备采用Linux操作系统。其区别在于,本实 施例中操作系统根据用户空间提供的信息,采用处理器簇切换的方式 进行CPU调度。该手持终端设备在硬件架构上已经将高性能的CPU和 低性能的CPU进行划分,即已经将结构相同,编号为0、1的CPU划分 为一个处理器簇,该处理器簇为高性能的处理器簇;将结构相同,编 号为2、3的CPU划分为一个处理器簇,该处理器簇为低性能的处理器 簇。

在本实施例中,当应用程序开始执行时,前8个步骤可以参考实 施例一中的步骤501-508,即为本实施例中的步骤601-608,在此不加 赘述。其区别在于,本实施例中将CPU划分为两个处理器簇。如图6 所示,本实施例在完成前8个步骤后还包括:

步骤609、操作系统根据所述应用程序的性能类型信息为所述应用 程序分配处理器簇。

具体的,若所述应用程序是CPU密集型应用,则将所述应用程序 分配到高性能的处理器簇中;若所述应用程序是IO密集型应用,则将 所述应用程序分配到低性能的处理器簇中;若所述应用程序既是CPU 密集型应用、又是IO密集型应用,则根据所述应用程序运行时每小时 的耗电量数据,以及所述应用程序的运行信息对用户体验产生的影响, 确定将所述应用程序放到合适的CPU调度域进行调度执行。

步骤610、操作系统在所述应用程序分配的处理器簇中对应的cpu 中进行调度执行。

具体的,当应用程序运行时,若当前正在运行的为第一处理器簇, 则根据所述应用程序的性能类型信息判断是否需要进行切换到第二处 理器簇;若需要切换,则调用操作系统内核空间提供的接口或者用户 自行设计的新接口切换到第二处理器簇,若不需要切换,则第一处理 器簇继续运行。

示例的,若操作系统根据接收所述应用程序的性能类型信息判断 所述应用程序为CPU密集型应用,而当前系统运行在低性能的处理器 簇上,则需要进行处理器簇间的切换,即由低性能处理器簇切换到高 性能处理器簇上运行,此时,为应用程序调度高性能处理器簇CPU0、 CPU1中的至少一个。

同样的,若操作系统根据接收所述应用程序的性能类型信息判断 所述应用程序为IO密集型应用,而当前系统运行在高性能的处理器簇 上,则需要进行处理器簇间的切换,即由高性能处理器簇上切换到低 性能处理器簇上运行,此时,为应用程序调度低性能处理器簇CPU2、 CPU3中的至少一个。

需要说明的是,用户空间的后台服务程序、用户空间的后台加载 程序、以及操作系统均属于终端设备,在实际的过程中为终端设备与 处理设备之间的交互。

本发明的实施例提供了一种基于异构多核体系的CPU调度方法, 通过终端设备中的用户空间的后台服务程序与处理设备云端之间的应 用程序之间信息的交互,获取应用程序的性能类型信息,并通过终端 设备中的用户空间的后台加载程序使得终端设备中的操作系统根据该 应用程序性能类型信息为该应用程序调度CPU,以实现对异构多核体系 的CPU调度,合理使用资源,提高系统性能,充分发挥异构多核体系 的优势。

本发明实施例提供了一种终端设备,该终端设备中各个功能模块 与上述以终端设备为执行主体的方法步骤相对应,在此不进行详细描 述。如图7所示,所述终端设备70包括:

接收模块701,用于接收处理设备发送的应用程序的性能类型信 息;

调度模块702,用于根据所述接收模块701得到的所述应用程序的 性能类型信息,为所述应用程序调度CPU。

可选的,如图8所示,在所述接收模块701接收处理设备发送的 应用程序的性能类型信息之前,所述终端设备还包括:

采集模块703,用于采集所述应用程序的运行信息;

发送模块704,用于发送所述采集模块703得到的所述应用程序的 运行信息给处理设备,以使得所述处理设备根据所述应用程序的运行 信息确定所述应用程序的性能类型信息。

可选的,所述采集模块703具体用于按照预设的时间间隔、利用 预设的采集工具采集所述应用程序的运行信息。

可选的,所述发送模块704具体用于发送所述采集模块703得到 的所述应用程序的运行信息给处理设备,以使得所述处理设备对所述 应用程序的运行信息进行统计分析,得到所述应用程序的性能类型信 息。

本发明的实施例提供了一种基于异构多核体系的CPU调度装置, 通过接收处理设备发送的应用程序的性能类型信息,根据所述接收模 块得到的所述应用程序的性能类型信息,为所述应用程序调度CPU,以 实现对异构多核体系的CPU调度,合理使用资源,提高系统性能,充 分发挥异构多核体系的优势。

本发明实施例提供了一种处理设备,该处理设备中各个功能模块 与上述以所述处理设备为执行主体的方法步骤相对应,在此不进行详 细描述。如图9所示,所述处理设备90包括:

接收模块901,用于接收终端设备发送的应用程序的运行信息,所 述应用程序的运行信息为所述终端设备采集得到的;

确定模块902,用于根据所述接收模块901接收到的所述应用程序 的运行信息,确定所述应用程序的性能类型信息;

发送模块903,用于发送所述确定模块902得到的所述应用程序的 性能类型信息给所述终端设备,以使得所述终端设备根据所述应用程 序的性能类型信息为所述应用程序调度CPU。

可选的,所述应用程序的运行信息为所述终端设备采集得到的包 括:所述应用程序的运行信息为所述终端设备按照预设的时间间隔、 利用预设的采集工具采集得到。

可选的,所述确定模块902具体用于对所述应用程序的运行信息 进行统计分析,确定所述应用程序的性能类型信息。

本发明的实施例提供了一种基于异构多核体系的CPU调度装置, 通过接收终端设备发送的应用程序的运行信息,并根据所述应用程序 的运行信息,确定所述应用程序的性能类型信息,同时将所述应用程 序的性能类型信息发送给所述终端设备,以使得所述终端设备根据所 述应用程序的性能类型信息为所述应用程序调度CPU,以实现对异构多 核体系的CPU调度,合理使用资源,提高系统性能,充分发挥异构多 核体系的优势。

本发明实施例还提供了一种基于异构多核体系的CPU调度系统, 包括:上述图7或图8所示的终端设备、以及上述图9所示的处理设 备。

如图10所示,本发明实施例提供了一种终端设备,所述终端设备 包括:存储器1001、处理器1002、发送器1003、接收器1004、以及 总线系统1005。

其中,存储器1001可以包括只读存储器1001和随机存取存储器 1001,并向处理器1002提供指令和数据。存储器1001的一部分还可 以包括非易失性随机存取存储器1001(NVRAM)。

存储器1001存储了如下的元素,可执行模块或者数据结构,或者 它们的子集,或者它们的扩展集:

操作指令:包括各种操作指令,用于实现各种操作。

操作系统:包括各种系统程序,用于实现各种基础业务以及处理 基于硬件的任务。

在本发明实施例中,所述处理器1002调用所述存储器1001存储 的操作指令,通过所述发送器1003和所述接收器1004执行如下操作: 接收处理设备发送的应用程序的性能类型信息;根据所述应用程序的 性能类型信息,为所述应用程序调度CPU。

可选的,所述处理器1002还用于在所述接收器1004接收处理设 备发送的应用程序的性能类型信息之前,采集所述应用程序的运行信 息;发送所述应用程序的运行信息给处理设备,以使得所述处理设备 根据所述应用程序的运行信息确定所述应用程序的性能类型信息。

可选的,所述处理器1002还用于按照预设的时间间隔、利用预设 的采集工具采集所述应用程序的运行信息。

可选的,所述处理器1002还用于发送所述应用程序的运行信息给 处理设备,以使得所述处理设备对所述应用程序的运行信息进行统计 分析,得到所述应用程序的性能类型信息。

其中,处理器1002可以是,例如CPU(Central Processing Unit, 中央处理单元)。存储器1001可以包括只读存储器1001和随机存取 存储器1001,并向处理器1002提供指令和数据。存储器1001的一部 分还可以包括非易失性随机存取存储器1001(NVRAM)。具体的应用中, 该基于异构多核体系的CPU调度系统中的各个组件通过总线系统1005 耦合在一起,其中总线系统1005除包括数据总线之外,还可以包括电 源总线、控制总线和状态信号总线等。但是为了清楚说明起见,在图 中将各种总线都标为总线系统1005。

上述本发明实施例揭示的方法可以应用于处理器1002中,或者由 处理器1002实现。处理器1002可能是一种集成电路芯片,具有信号 的处理能力。在实现过程中,上述方法的各步骤可以通过处理器1002 中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器 1002可以是通用处理器1002、数字信号处理器1002(DSP)、专用集 成电路(ASIC)、现成可编程门阵列(FPGA)或者其他可编程逻辑器 件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行 本发明实施例中的公开的各方法、步骤及逻辑框图。通用处理器1002 可以是微处理器1002或者该处理器1002也可以是任何常规的处理器 1002等。结合本发明实施例所公开的方法的步骤可以直接体现为硬件 译码处理器1002执行完成,或者用译码处理器1002中的硬件及软件 模块组合执行完成。软件模块可以位于随机存储器1001,闪存、只读 存储器1001,可编程只读存储器1001或者电可擦写可编程存储器 1001、寄存器等本领域成熟的存储介质中。该存储介质位于存储器 1001,处理器1002读取存储器1001中的信息,结合其硬件完成上述 方法的步骤。

如图11所示,本发明实施例提供了一种处理设备,所述处理设备 包括:存储器1101、处理器1102、发送器1103、接收器1104、以及 总线系统1105。

其中,存储器1101可以包括只读存储器1101和随机存取存储器 1101,并向处理器1102提供指令和数据。存储器1101的一部分还可 以包括非易失性随机存取存储器1101(NVRAM)。

存储器1101存储了如下的元素,可执行模块或者数据结构,或者 它们的子集,或者它们的扩展集:

操作指令:包括各种操作指令,用于实现各种操作。

操作系统:包括各种系统程序,用于实现各种基础业务以及处理 基于硬件的任务。

在本发明实施例中,处理器1102通过调用存储器1101存储的操 作指令,通过发送器1103和接收器1104执行如下操作:接收终端设 备发送的应用程序的运行信息,所述应用程序的运行信息为所述终端 设备采集得到的;根据所述应用程序的运行信息,确定所述应用程序 的性能类型信息;发送所述应用程序的性能类型信息给所述终端设备, 以使得所述终端设备根据所述应用程序的性能类型信息为所述应用程 序调度CPU。

可选的,所述处理器1102具体用于对所述应用程序的运行信息进 行统计分析,确定所述应用程序的性能类型信息。

其中,处理器1102可以是,例如CPU。存储器1101可以包括只读 存储器1101和随机存取存储器1101,并向处理器1102提供指令和数 据。存储器1101的一部分还可以包括非易失性随机存取存储器1101 (NVRAM)。具体的应用中,该基于异构多核体系的CPU调度系统中的 各个组件通过总线系统1105耦合在一起,其中总线系统1105除包括 数据总线之外,还可以包括电源总线、控制总线和状态信号总线等。 但是为了清楚说明起见,在图中将各种总线都标为总线系统1105。

上述本发明实施例揭示的方法可以应用于处理器1102中,或者由 处理器1102实现。处理器1102可能是一种集成电路芯片,具有信号 的处理能力。在实现过程中,上述方法的各步骤可以通过处理器1102 中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器 1102可以是通用处理器1102、数字信号处理器1102(DSP)、专用集 成电路(ASIC)、现成可编程门阵列(FPGA)或者其他可编程逻辑器 件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行 本发明实施例中的公开的各方法、步骤及逻辑框图。通用处理器1102 可以是微处理器1102或者该处理器1102也可以是任何常规的处理器 1102等。结合本发明实施例所公开的方法的步骤可以直接体现为硬件 译码处理器1102执行完成,或者用译码处理器1102中的硬件及软件 模块组合执行完成。软件模块可以位于随机存储器1101,闪存、只读 存储器1101,可编程只读存储器1101或者电可擦写可编程存储器 1101、寄存器等本领域成熟的存储介质中。该存储介质位于存储器 1101,处理器1102读取存储器1101中的信息,结合其硬件完成上述 方法的步骤。

在本申请所提供的几个实施例中,应该理解到,所揭露的系统,装 置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施 例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划 分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结 合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另 一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是 通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机 械或其它的形式。

所述作为分离部件说明的单元可以是或者也可以不是物理上分开 的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位 于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需 要选择其中的部分或者全部单元来实现本实施例方案的目的。

另外,在本发明各个实施例中的各功能单元可以集成在一个处理 单元中,也可以是各个单元单独物理包括,也可以两个或两个以上单 元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现, 也可以采用硬件加软件功能单元的形式实现。

上述以软件功能单元的形式实现的集成的单元,可以存储在一个 计算机可读取存储介质中。上述软件功能单元存储在一个存储介质中, 包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器, 或者网络设备等)执行本发明各个实施例所述方法的部分步骤。而前 述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory, 简称ROM)、随机存取存储器(Random Access Memory,简称RAM)、 磁碟或者光盘等各种可以存储程序代码的介质。

最后应说明的是:以上实施例仅用以说明本发明的技术方案,而 非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领 域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技 术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修 改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方 案的精神和范围。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号