一种cpu资源分配的方法、装置及电子设备的制造方法

文档序号:10624648阅读:312来源:国知局
一种cpu资源分配的方法、装置及电子设备的制造方法
【专利摘要】本申请公开了一种CPU资源分配的方法和装置以及一种电子设备。其中,所述CPU资源分配的方法用于多处理器设备,包括:获取所述多处理器设备中运行的各个进程组在预设时间范围内的CPU资源需求量,以及所述多处理器设备中各个CPU在所述预设时间范围内的空闲资源值;根据所述各个进程组在预设时间范围内的CPU资源需求量,以及所述各个CPU在所述预设时间范围内的空闲资源值,为每一个进程组分配其所需数量的处理器。采用本申请提供的方法,能够为每一个进程组动态分配CPU资源,使得CPU资源在多个进程组之间尽量平衡分配,有利于资源高效利用,从而达到改善系统整体性能的效果。
【专利说明】
-种CPU资源分配的方法、装置及电子设备
技术领域
[0001] 本申请设及计算机硬件领域,具体设及一种CPU资源分配的方法和装置。本申请 还具体设及一种电子设备。
【背景技术】
[0002] 服务器是网络中的重要设备,要接受少至几十人、多至成千上万人的访问,因此对 服务器具有大数据量的快速吞吐、超强的稳定性、长时间运行等严格要求。面对超大运算 量,部口级、企业级的服务器应支持CPU(Central Processing化it,中央处理器)并行处理 技术。并行处理是指一台服务器有多个CPU同时工作。并行处理能够大大提升服务器的数 据处理能力。目前,许多高端服务器器都配备多个CPU。
[0003] 一种典型的CPU并行处理技术应用场景,是在一台服务器上部署多个应用程序, 多个应用程序能够同时运行。在一台部署多个应用程序的服务器中,每个应用程序对应一 个进程组,该进程组可能包括一个或多个进程。多个进程组共享一台服务器中的硬件资源。 在多个应用程序同时运行过程中,为防止进程组之间相互影响和产生性能抖动,需要将各 个应用程序对应的进程组进行CPU资源隔离。在理想情况下,为每个进程组分配独占的CPU 资源,能够保证进程组之间CPU资源隔离。然而,独占 CPU资源的方法将导致部分CPU资源 不能被充分利用,因此造成CPU资源浪费。
[0004] 为了提高CPU资源利用率,通常将一个CPU分配给两个或更多的进程组使用,即某 些CPU会被多个进程组共享,即:资源超配。资源超配能够使得CPU资源在隔离性与资源利 用率上达到平衡。 阳0化]现有技术在使用资源超配的方法为进程组分配CPU资源时,是将进程组绑定到固 定的CPU集合上执行。由于不同的应用程序对于CPU的实际需求不同,并且同一个进程组 在不同时间段对于CPU资源的需求也不同,因此,运种固定绑定的方法,可能导致某些CPU 因为承载了多个忙碌的应用程序而满负载,而另外一些CPU负载较轻,即:各个CPU的利用 率不均衡。多进程环境中CPU资源被多个进程组共享使用,当一个或多个CPU负载较重时, 对应的应用程序的性能容易出现抖动。
[0006] 因此,现有技术存在进程并发环境下各个CPU的利用率不均衡的问题。

【发明内容】

[0007] 本申请提供一种CPU资源分配的方法和装置,W解决现有技术存在进程并发环境 下各个CPU的利用率不均衡的问题。本申请另外提供一种电子设备。
[0008] 本申请提供一种CPU资源分配的方法,用于多处理器设备,包括:
[0009] 获取所述多处理器设备中运行的各个进程组在预设时间范围内的CPU资源需求 量,W及所述多处理器设备中各个CPU在所述预设时间范围内的空闲资源值;
[0010] 根据所述各个进程组在预设时间范围内的CPU资源需求量,W及所述各个CPU在 所述预设时间范围内的空闲资源值,为每一个进程组分配其所需数量的处理器。
[0011] 可选的,所述进程组在预设时间范围内的CPU资源需求量,是指所述预设时间范 围内所述进程组在每个CPU上的运行时间之和。
[0012] 可选的,所述进程组在预设时间范围内的CPU资源需求量,采用如下步骤获取:
[0013] 获取所述预设时间范围内所述进程组在每个CPU上的运行时间;
[0014] 将所述预设时间范围内所述进程组在每个CPU上的运行时间求和,作为所述进程 组在预设时间范围内的CPU资源需求量。
[0015] 可选的,所述预设时间范围内所述进程组在每个CPU上的运行时间,采用如下方 式获取:
[0016] 读取cgroup目录下cpuacct. usage_pe;r_cpu,获取预设时间范围内所述进程组在 每个CPU上的运行时间。
[0017] 可选的,所述CPU在预设时间范围内的空闲资源值,是指所述预设时间范围内的 CPU空闲时间长度。
[0018] 可选的,所述CPU在预设时间范围内的空闲资源值,采用如下步骤获取:
[0019] 获取所述预设时间范围内所述CPU处于运行状态的时间;
[0020] 将所述预设时间范围和所述预设时间范围内所述CPU处于运行状态的时间之差, 作为所述CPU在所述预设时间范围内的空闲资源值。
[0021] 可选的,通过性能监测工具,获取所述预设时间范围内所述CPU处于运行状态的 时间;所述性能监测工具包括vmstat、ps或top。
[0022] 可选的,所述根据所述各个进程组在预设时间范围内的CPU资源需求量,W及所 述各个CPU在所述预设时间范围内的空闲资源值,为每一个进程组分配其所需数量的处理 器,包括:
[0023] 根据所述各个进程组在预设时间范围内的CPU资源需求量,W及所述各个CPU在 所述预设时间范围内的空闲资源值,生成CPU资源分配方案;
[0024] 配置所述CPU资源分配方案,将每一个进程组绑定到为其分配的处理器。
[00巧]可选的,所述根据所述各个进程组在预设时间范围内的CPU资源需求量,W及所 述各个CPU在所述预设时间范围内的空闲资源值,生成CPU资源分配方案,包括:
[00%] 根据所述各个进程组在预设时间范围内的CPU资源需求量,W所述进程组的CPU 资源需求量的降序方式,对所述进程组排序,获得进程组序列;W及,根据所述各个CPU在 所述预设时间范围内的空闲资源值,W所述CPU的空闲资源值的降序方式,对各个CPU进行 排序,获得CPU序列;
[0027] 将所述进程组序列中排在第一位的进程组作为当前进程组;
[002引根据所述当前进程组需要的CPU数量,在所述CPU序列中,从排在第一位的CPU开 始,依次选取所述当前进程组所需数量的CPU,并将被选取的CPU分配给所述当前进程组;
[0029] 根据所述当前进程组在每个CPU上的运行时间,更新被分配的CPU的空闲资源 值;
[0030] 重新根据各个CPU的空闲资源值,W所述CPU的空闲资源值的降序方式,更新所述 CPU序列;
[0031] 判断所述当前进程组是否是所述进程组序列的最后一个进程组;
[0032] 若是,则所述CPU资源分配方案生成完毕;
[0033] 若否,则根据所述进程组排序,重新确定所述当前进程组后一位的进程组为当前 进程组;并返回所述根据所述当前进程组需要的CPU数量,在所述CPU序列中,从排在第一 位的CPU开始,依次选取所述当前进程组所需数量的CPU,并将被选取的CPU分配给所述当 前进程组的步骤。
[0034] 可选的,当预设的执行条件成立时,执行所述CPU资源分配的方法。
[0035] 可选的,所述预设的执行条件,采用如下条件:
[0036] 当前时间与上次执行所述CPU资源分配的方法的时间间隔大于预设的时间间隔。
[0037] 可选的,所述预设的执行条件,采用如下条件:
[0038] 各个CPU的CPU利用率的最大值大于预设阔值。
[0039] 可选的,所述预设的执行条件,采用如下条件:
[0040] 各个CPU的CPU利用率的最大值大于各个CPU的CPU利用率的最小值的N倍。
[0041] 可选的,所述预设的执行条件,采用如下条件:
[0042] 各个CPU的CPU利用率的最大值大于预设阔值;并且各个CPU的CPU利用率的最 大值大于各个CPU的CPU利用率的最小值的N倍。
[0043] 相应的,本申请还提供一种CPU资源分配的装置,包括:
[0044] 获取单元,用于获取所述多处理器设备中运行的各个进程组在预设时间范围内的 CPU资源需求量,W及所述多处理器设备中各个CPU在所述预设时间范围内的空闲资源值;
[0045] 分配单元,用于根据所述各个进程组在预设时间范围内的CPU资源需求量,W及 所述各个CPU在所述预设时间范围内的空闲资源值,为每一个进程组分配其所需数量的处 理器。
[0046] 可选的,所述获取单元包括:
[0047] 第一获取子单元,用于获取所述各个进程组在预设时间范围内的CPU资源需求 量;
[0048] 所述第一获取子单元包括:
[0049] 监测子单元,用于获取所述预设时间范围内所述各个进程组在每个CPU上的运行 时间;
[0050] 计算子单元,用于将所述预设时间范围内所述各个进程组在每个CPU上的运行时 间W进程组为单位分别求和,作为所述各个进程组在预设时间范围内的CPU资源需求量。
[0051] 可选的,所述获取单元包括:
[0052] 第二获取子单元,用于获取所述各个CPU在预设时间范围内的空闲资源值;
[0053] 所述第二获取子单元包括:
[0054] 监测子单元,用于获取所述预设时间范围内所述各个CPU处于运行状态的时间;
[0055] 计算子单元,用于将所述预设时间范围和所述预设时间范围内所述各个CPU处于 运行状态的时间之差,作为所述各个CPU在所述预设时间范围内的空闲资源值。
[0056] 可选的,所述分配单元包括:
[0057] 生成子单元,用于根据所述各个进程组在预设时间范围内的CPU资源需求量,W 及所述各个CPU在所述预设时间范围内的空闲资源值,生成CPU资源分配方案;
[0058] 配置子单元,用于配置所述CPU资源分配方案,将每一个进程组绑定到为其分配 的处理器。
[0059] 可选的,所述生成子单元包括:
[0060] 初始排序子单元,用于根据所述各个进程组在预设时间范围内的CPU资源需求 量,W所述进程组的CPU资源需求量的降序方式,对所述进程组排序,获得进程组序列;W 及,根据所述各个CPU在所述预设时间范围内的空闲资源值,W所述CPU的空闲资源值的降 序方式,对各个CPU进行排序,获得CPU序列;
[0061] 第一定位子单元,用于将所述进程组序列中排在第一位的进程组作为当前进程 组;
[0062] 分配子单元,用于根据所述当前进程组需要的CPU数量,在所述CPU序列中,从排 在第一位的CPU开始,依次选取所述当前进程组所需数量的CPU,并将被选取的CPU分配给 所述当前进程组;
[0063] 更新子单元,用于根据所述当前进程组在每个CPU上的运行时间,更新被分配的 CPU的空闲资源值;
[0064] 重新排序子单元,用于重新根据各个CPU的空闲资源值,W所述CPU的空闲资源值 的降序方式,更新所述CPU序列; 阳〇化]判断子单元,用于判断所述当前进程组是否是所述进程组序列的最后一个进程 组;
[0066] 结束子单元,用于若上述判断结果为是,则所述CPU资源分配方案生成完毕;
[0067] 第二定位子单元,用于若上述判断结果为否,则根据所述进程组排序,重新确定所 述当前进程组后一位的进程组为当前进程组;并返回所述根据所述当前进程组需要的CPU 数量,在所述CPU序列中,从排在第一位的CPU开始,依次选取所述当前进程组所需数量的 CPU,并将被选取的CPU分配给所述当前进程组的步骤。
[0068] 可选的,所述装置还包括:
[0069] 启动单元,用于当预设的执行条件成立时,执行所述CPU资源分配的方法。
[0070] 此外,本申请还提供一种电子设备,所述电子设备包括: W71] 存储器;化及
[0072] 多个处理器,在所述多个处理器中运行多个进程组,所述进程组被所述多个处理 器执行时,采用如下方式为各个进程组分配处理器资源:
[0073] 获取所述电子设备中运行的各个进程组在预设时间范围内的CPU资源需求量,W 及所述电子设备中各个CPU在所述预设时间范围内的空闲资源值;
[0074] 根据所述各个进程组在预设时间范围内的CPU资源需求量,W及所述各个CPU在 所述预设时间范围内的空闲资源值,为每一个进程组分配其所需数量的处理器。
[00巧]与现有技术相比,本申请具有W下优点:
[0076] 本申请提供的CPU资源分配的方法、装置及电子设备,通过获取多处理器设备中 运行的各个进程组在预设时间范围内的CPU资源需求量,W及各个CPU在预设时间范围内 的空闲资源值;根据各个进程组在预设时间范围内的CPU资源需求量,W及各个CPU在预设 时间范围内的空闲资源值,为每一个进程组分配其所需数量的处理器。由于本申请提供的 方法是根据各个进程组的CPU资源需求量和各个CPU的当前空闲资源值,为每一个进程组 动态分配CPU资源,使得CPU资源在多个进程组之间尽量平衡分配,均衡了各个CPU的资源 利用率,保证各个应用程序的性能表现,有利于资源高效利用,从而达到改善系统整体性能 的效果。
【附图说明】
[0077] 图1是本申请的CPU资源分配的方法实施例的流程图;
[0078] 图2是本申请的CPU资源分配的方法实施例多处理器设备的示意图;
[0079] 图3是本申请的CPU资源分配的方法实施例获取进程组在预设时间范围内的CPU 资源需求量的具体流程图;
[0080] 图4是本申请的CPU资源分配的方法实施例获取CPU在预设时间范围内的空闲资 源值的具体流程图;
[0081] 图5是本申请的CPU资源分配的方法实施例步骤S1031的具体流程图;
[0082] 图6是本申请的CPU资源分配的装置实施例的示意图;
[0083] 图7是本申请的CPU资源分配的装置实施例获取单元101的具体示意图;
[0084] 图8是本申请的CPU资源分配的装置实施例分配单元103的具体示意图;
[00化]图9是本申请的CPU资源分配的装置实施例生成子单元1031的具体示意图;
[0086] 图10是本申请的CPU资源分配的装置实施例的具体示意图;
[0087] 图11是本申请的电子设备实施例的示意图。
【具体实施方式】
[008引在下面的描述中阐述了很多具体细节W便于充分理解本申请。但是本申请能够W 很多不同于在此描述的其它方式来实施,本领域技术人员可W在不违背本申请内涵的情况 下做类似推广,因此本申请不受下面公开的具体实施的限制。
[0089] 在本申请中,提供了一种CPU资源分配的方法和装置,W及一种电子设备。在下面 的实施例中逐一进行详细说明。
[0090] 本申请提供的CPU资源分配的方法,是基于运样一种设计构思,即:对于在多处 理器设备中运行的多个进程组,根据各个进程组在预设时间范围内的CPU资源需求量,W 及各个CPU在预设时间范围内的当前空闲资源值,为每一个进程组分配其所需数量的处理 器。由于本申请提供的方法是根据各个处理器的当前空闲资源,W及各个进程组的CPU资 源需求量,为各个进程组分配处理器资源,因此本申请提供的方法是一种动态的CPU资源 分配方法。
[0091] 请参考图1,其为本申请的CPU资源分配的方法实施例的流程图。所述方法用于多 处理器设备,包括如下步骤:
[0092] 步骤S101 :获取所述多处理器设备中运行的各个进程组在预设时间范围内的CPU 资源需求量,W及所述多处理器设备中各个CPU在所述预设时间范围内的空闲资源值。
[0093] 请参考图2,其为本申请的CPU资源分配的方法实施例多处理器设备的示意图。多 处理器设备是指包含两台或多台功能相近的处理器,处理器之间彼此可W交换数据,所有 处理器共享内存,I/O设备,控制器,及外部设备,整个硬件系统由统一的操作系统控制,在 处理器和程序之间实现作业、任务、程序、数组及其元素各级的全面并行。采用多处理器设 备,能够提高设备的可靠性及处理能力。
[0094] 本申请实施例所述的多处理器设备包括但不限于具有多个处理器的计算机、PAD、 iPad等终端设备,还包括具有多个处理器的移动通讯设备。W计算机为例,多处理器结构已 成为各档计算机流行的设计方法,高档个人电脑采用2~4个处理器,大型机可使用多达数 十个处理器,巨型计算机则可能采用上百甚至成千上万个处理器。
[0095] 多处理器设备是专为并行处理技术设计的。并行处理是计算机系统中能同时执行 两个或更多个处理器的一种计算方法。处理器可同时工作于同一程序的不同方面,例如:为 了节省大型和复杂问题的解决时间,对同一程序进行并行化处理,也就是说将工作各部分 分配到不同处理器中,经过并行化处理的同一程序的各个部分在运行过程中分别对应各自 的进程。在多处理器设备中,一般将一组业务相关的进程分为一组,因此上述同一程序对应 一个进程组。采用并行处理技术,使得一个在η个处理器上执行的程序速度可能会是在单 一处理器上执行的速度的η倍。
[0096] 相对于上述处理器可同时工作于同一程序的不同方面,处理器还可W同时工作于 不同的程序,其中的每一个程序分别对应各自不同的进程组。可见,多处理器设备工作在一 个进程并发的环境中,多个进程共享一个多处理器设备中的硬件资源。
[0097] 本申请实施例所述的进程是操作系统结构的基础;是一次程序的执行;是一个程 序及其数据在处理器上顺序执行时所发生的活动。多道程序在执行时,需要共享系统资源, 从而导致各程序在执行过程中出现相互制约的关系,程序的执行表现出间断性的特征。运 些特征都是在程序的执行过程中发生的,是动态的过程,而传统的程序本身是一组指令的 集合,是一个静态的概念,无法描述程序在内存中的执行情况,即我们无法从程序的字面上 看出它何时执行,何时停顿,也无法看出它与其它执行程序的关系,因此,程序运个静态概 念已不能如实反映程序并发执行过程的特征。为了深刻描述程序动态执行过程的性质,人 们引入"进程"概念。
[0098] 本申请实施例所述的进程组包括一个或多个进程,通常将一组业务相关的进程分 为一组。由于多处理器设备可W同时工作于不同的程序,一个程序对应一个进程组,为了隔 离各个程序,本申请实施例提供的CPU资源分配的方法是W进程组为单位进行CPU资源分 配的,W达到不同程序之间CPU资源隔离的目的。
[0099] 由于本申请提供的方法是根据多处理器设备中运行的各个进程组在预设时间范 围内的CPU资源需求量,W及各个CPU在预设时间范围内的空闲资源值,为每一个进程组分 配其所需数量的处理器。因此,要实施本申请提供的方法,首先要获取多处理器设备中运行 的各个进程组在预设时间范围内的CPU资源需求量,W及多处理器设备中各个CPU在预设 时间范围内的空闲资源值两方面数据。
[0100] 本申请实施例所述的进程组在预设时间范围内的CPU资源需求量,是指在预设时 间范围内进程组在每个CPU上的运行时间之和。其中,预设时间范围是一个预先设置好的 用于观察CPU运行状况的时间范围值。预设时间范围的取值与启动CPU资源分配方法的时 间间隔有关,预设时间范围过小,则启动CPU资源分配方法的时间间隔可W越短;反之则越 长。在实际应用中,可W根据具体的应用需求,设置时间范围值。 阳101] 请参考图3,其为本申请的CPU资源分配的方法实施例获取进程组在预设时间范 围内的CPU资源需求量的具体流程图。在本实施例中,获取进程组在预设时间范围内的CPU 资源需求量,包括: 阳102] 步骤S1011 :获取所述预设时间范围内所述进程组在每个CPU上的运行时间。 阳103] 要获取进程组在预设时间范围内的CPU资源需求量,首先需要获取预设时间范围 内进程组在每个CPU上的运行时间数据。通过使用多处理器设备上运行的操作系统提供 的监测工具,可W获得在预设时间范围内的各个进程组在每个CPU上的运行时间数据。W Linux操作系统为例,该系统默认情况下不提供直接获取各个进程组在每个CPU上的运行 时间数据的工具,为此可W通过对Linux内核打补下的方法来收集该数据。
[0104] 在本实施例中,所述获取预设时间范围内所述进程组在每个CPU上的运行时间, 采用如下方式: 阳1〇5] 读取cgroup目录下cpuacct. usage_pe;r_cpu,获取预定时间范围内所述进程组在 每个CPU上的运行时间数据。 阳1〇6] cgroup是control groups的缩写,是Linux内核提供的一种可W限制、记录、隔离 进程组所使用的物理资源(例如:cpu,memcxry,I/O等等)的机制。最初由google的工程 师提出,后来被整合进Linux内核。cgroup也是LXC(Linux Container, Linux容器工具) 为实现虚拟化所使用的资源管理手段,可W说没有cgroups就没有LXC。 阳107] 步骤S1012 :将所述预设时间范围内所述进程组在每个CPU上的运行时间求和,作 为所述进程组在预设时间范围内的CPU资源需求量。
[0108] 通过步骤S1011获取到预设时间范围内所述进程组在每个CPU上的运行时间后, 将它们求和,就得到本申请实施例所述的进程组的CPU资源需求量。 阳109] 本申请实施例所述的CPU在预设时间范围内的当前空闲资源值,是指预设时间范 围内的CPU空闲时间长度。请参考图4,其为本申请的CPU资源分配的方法实施例获取CPU 在预设时间范围内的空闲资源值的具体流程图。在本实施例中,获取CPU在预设时间范围 内的当前空闲资源值,包括:
[0110] 步骤sioir :获取所述预设时间范围内所述CPU处于运行状态的时间。 阳111] Linux操作系统默认环境下提供了性能监测工具,通过性能监测工具,能够获取预 设时间范围内的各个CPU处于运行状态的时间。常见的性能监测工具包括vmstat,ps和top 等。其中,监测工具vmstat命令报告关于内核线程、虚拟内存、磁盘、陷阱和CPU活动的统 计信息。由vmstat命令生成的报告可W用于平衡系统负载活动。监测工具PS和top命令 是系统分析最常用的基本命令,PS命令提供了一个正在运行的进程的列表,列出进程的数 量取决于命令所附加的参数。例如:ps-A命令列出所有进程和它们相应的进程ID (PID), 进程的PID是使用其他一些工具之前所必须了解的,例如pmap或者renice。
[0112] 步骤S1012':将所述预设时间范围和所述预设时间范围内所述CPU处于运行状态 的时间之差,作为所述CPU在所述预设时间范围内的空闲资源值。
[0113] 在本实施例中,计算CPU在所述预设时间范围内的空闲资源值,采用如下计算公 式:TV, = T - T 1,,其中T为预设时间范围,T。为处理器P j在预设时间范围T内处于运行状 态的时间,了2,为处理器P ,在预设时间范围T内的空闲资源值。
[0114] 通过上述步骤获取到多处理器设备中运行的各个进程组在预设时间范围内的CPU 资源需求量,W及多处理器设备中各个CPU在预设时间范围内的空闲资源值两方面数据 后,就可W继续执行步骤S103,为每一个进程组分配其所需数量的处理器。
[0115] 步骤S103 :根据所述各个进程组在预设时间范围内的CPU资源需求量,W及所述 各个CPU在所述预设时间范围内的空闲资源值,为每一个进程组分配其所需数量的处理 器。
[0116] 本申请实施例提供的CPU资源分配方法是一个CPU资源的动态分配方法。在实际 应用中,可W采用两种【具体实施方式】实施本申请实施例提供的方法,分别为:方式一、首先 生成一个包括所有进程组的CPU资源分配的整体方案,然后再统一配置该方案;方式二、为 一个进程组分配CPU资源后,立即通过配置工具将该进程组绑定到为其所分配的CPU,然后 再对其它进程组做同样的处理,即:分配一个就配置一个。上述两种不同的方式只是具体实 施方式的变更,都不偏离本申请的核屯、,因此都在本申请的保护范围之内。
[0117] 在本实施例中,采用上述方式一将每一个进程组绑定到为其分配的处理器。步骤 S103具体包括:
[0118] 步骤S1031 :根据所述各个进程组在预设时间范围内的CPU资源需求量,W及所述 各个CPU在所述预设时间范围内的空闲资源值,生成CPU资源分配方案。
[0119] 根据各个进程组在预设时间范围内的CPU资源需求量,W及各个CPU在预设时间 范围内的空闲资源值,生成CPU资源分配方案,可W采用多种【具体实施方式】。不同的实施方 式将得到不同的CPU资源分配方案。各种不同的方式都只是【具体实施方式】的变更,都不偏 离本申请的核屯、,因此都在本申请的保护范围之内。
[0120] 不同的CPU资源分配方案对CPU资源的动态均衡效果不同。评估一种CPU资源分 配方案的动态均衡效果可W采用多种指标,包括均方差等指标。理论上,一个绝对均衡的 CPU资源分配方案应该满足两个条件:1)满足各个进程组的实际CPU资源需求量;2)各个 CPU的利用率相互之间最接近,只有满足上述两个条件的CPU资源分配方案才是一个最佳 方案。下面W均方差指标为例,用均方差来代表各个CPU利用率的均衡度,说明一个CPU资 源分配方案的动态均衡效果。 阳12U 均方差公式为
,其中η为CPU数量,Vi= Τ/Γ,Ti为第i个 CPU在预设时间范围T内处于运行状态的时间,Vi为第i个CPU在预设时间范围T内的CPU 利用率,
为η个CPU的CPU利用率的均值,mse为均方差。
[0122] 理论上,在各种CPU资源分配方案中存在一种方案,该方案对应的上述均方差值 最小,记为msemi。,msemi。所对应的CPU分配方案为最优解,即:满足上述两个条件。在实际 应用中,出于效率的考虑,不可能遍历所有的CPU资源分配方案,本实施例提供一种具体实 施方式可W得到一个近似最佳的CPU资源分配方案。
[0123] 请参考图5,其为本申请的CPU资源分配的方法实施例步骤S1031的具体流程图。 步骤S1031包括:
[0124] 步骤S10311 :根据所述各个进程组在预设时间范围内的CPU资源需求量,W所述 进程组的CPU资源需求量的降序方式,对所述进程组排序,获得进程组序列;W及,根据所 述各个CPU在所述预设时间范围内的空闲资源值,W所述CPU的空闲资源值的降序方式,对 各个CPU进行排序,获得CPU序列。
[01巧]本申请实施例提供的CPU资源分配的方法,作为一种动态资源分配方法,基于运 样一种设计构思,即:对于在多处理器设备中运行的多个进程组,按照各个进程组在预设 时间范围内的CPU资源需求量的从大到小的顺序,为每一个进程组分配其所需数量的处理 器。在具体为一个进程组分配CPU资源时,按照各个CPU在预设时间范围内的空闲资源值 的从大到小的顺序,为一个进程组分配其所需数量的处理器。因此,要实施本申请实施例提 供的方法,首先要获得:1) W进程组的CPU资源需求量的降序方式,排序后的进程组序列; 2) W CPU的空闲资源值的降序方式,排序后的CPU序列。
[01%] 通过步骤S10311获取到排序后的进程组序列和CPU序列后,就可W继续执行后续 步骤,为每一个进程组分配其所需数量的处理器。
[0127] 步骤S10312 :将所述进程组序列中排在第一位的进程组作为当前进程组。
[0128] 步骤S10313:根据所述当前进程组需要的CPU数量,在所述CPU序列中,从排在第 一位的CPU开始,依次选取所述当前进程组所需数量的CPU,并将被选取的CPU分配给所述 当前进程组。
[0129] 在具体为一个进程组分配CPU资源时,按照各个CPU的空闲资源值的从大到小的 顺序,为一个进程组分配其所需数量的处理器。
[0130] 步骤S10314 :根据所述当前进程组在每个CPU上的运行时间,更新被分配的CPU 的空闲资源值。 阳131] 为当前进程组分配了 CPU资源,因此被分配给当前进程组的CPU的当前空闲资源 值发生了变化,需要根据当前进程组在每个CPU上的运行时间数据,更新被分配的CPU的空 闲资源值。其中,获取当前进程组在每个CPU上的运行时间数据在步骤S1011中已经进行 了详细说明,此处不再寶述。 阳13引步骤S10315 :重新根据各个CPU的空闲资源值,W所述CPU的空闲资源值的降序 方式,更新所述CPU序列。
[0133] 为当前进程组分配了 CPU资源后,还需要继续为进程组序列中排在当前进程组后 的下一个进程组分配CPU资源。因此,首先需要根据步骤S10314更新的被分配的CPU的空 闲资源值,W及其他CPU的空闲资源值,重新对各个CPU进行排序,更新CPU序列,W便总能 够将最空闲的CPU分配给进程组。
[0134] 步骤S10316 :判断所述当前进程组是否是所述进程组序列的最后一个进程组。
[0135] 在为进程组序列中排在当前进程组后的下一个进程组分配CPU资源前,首先要判 断当前进程组是否是进程组序列的最后一个进程组,如果是,则进入步骤S10317, CPU资 源分配方案生成完毕;否则,进入步骤S10318,确定要处理的下一个进程组,并返回到步骤 S10313,为下一个进程组分配CPU资源。
[0136] 步骤S10317 :若是,则所述CPU资源分配方案生成完毕;
[0137] 步骤S10318 :若否,则根据所述进程组排序,重新确定所述当前进程组后一位的 进程组为当前进程组;并返回所述根据所述当前进程组需要的CPU数量,在所述CPU序列 中,从排在第一位的CPU开始,依次选取所述当前进程组所需数量的CPU,并将被选取的CPU 分配给所述当前进程组的步骤。
[0138] 通过上述步骤S10311至S10318生成CPU资源分配方案后,就可W进入步骤S1032 配置该方案。
[0139] 步骤S1032 :配置所述CPU资源分配方案,将每一个进程组绑定到为其分配的处理 器。
[0140] 在通过步骤S1031生成CPU资源分配方案后,还需要根据CPU资源分配方 案,将各个进程组和为其分配的CPU进行绑定操作。在Linux操作系统中,将进程和 CPU绑定的方法包括taskset命令和cgroup功能的cpuset的子系统,还包括nice和 renice等命令。其中,使用taskset命令启用进程时可W指定执行进程的CPU,例如: $taskset-C<cpunr〉<command〉。使用cgroup的cpuset子系统可W指定执行进程的CPU编 号,例如:#echo 0, 2, 4, 6〉/cg;roup/<进程组名Vcpuset. cpus,表示该进程组只允许使用 编号为0, 2,4,6的CPU。 阳141] 在本实施例中,CPU资源分配方案包括每一个进程组和为其分配的CPU资源之间 的对应关系。根据CPU资源分配方案,逐个为每一个进程组和为其分配的CPU资源进行绑 定,完成整个方案的配置处理。 阳142] 上述实施例为采用方式一的具体实现过程,方式二是每为一个进程组分配CPU资 源后,立即通过配置工具将该进程组绑定到为其所分配的CPU,然后再对其它进程组做同样 的处理。方式二与方式一的区别仅在于将该进程组绑定到为其所分配的CPU的时间不同, 因此对方式二与方式一的相同之处不再寶述,详见方式一的实施例的相关部分。
[0143] 由于本申请实施例提供的CPU资源分配方法是动态分配方法,考虑到各个程序运 行中的动态性特点,因此在多处理器设备运行过程中,需要预先设定启动执行本申请提供 的方法的条件。当预设的执行条件成立时,执行所述CPU资源分配的方法。执行条件可W 采用多种具体条件,本实施例给出四种可选的执行条件。
[0144] 执行条件一:当前时间与上次执行所述CPU资源分配的方法的时间间隔大于预设 的时间间隔。
[0145] 采用执行条件一,设定每隔固定时间间隔执行一次本申请实施例提供的方法,使 得多处理器设备一直处于各个CPU资源较为均衡的状态。在实际应用中,通常将预设的时 间间隔设定为分钟级的时间,通常将时间间隔设定在1至5分钟之间。 阳146] 执行条件二:各个CPU的CPU利用率的最大值大于预设阔值。 阳147] 采用执行条件二,判断各个CPU的CPU利用率的最大值是否大于预设阔值;若上述 判断结果为是,则所述预设的执行条件成立。执行条件二为不固定期启动执行本申请实施 例提供的方法,为了避免不必要的CPU资源均衡动作,同时还要保证执行条件具有一定的 敏感度,因此需要将预设阔值设定一个适当的值。
[0148] 本申请实施例所述的预设阔值是经过大量试验后确定的一个经验值。预设阔值用 来表示当一个CPU的利用率超过某个上限时,说明该CPU已经或接近满负荷运行,应该进行 CPU资源均衡操作。通常,对于开启了超线程的多处理器设备,预设阔值设置为60%左右; 对于未开启超线程的多处理器设备,预设阔值设置为80%左右。
[0149] 执行条件Ξ :各个CPU的CPU利用率的最大值大于各个CPU的CPU利用率的最小 值的N倍。
[0150] 采用执行条件Ξ,判断各个CPU的CPU利用率的最大值是否大于各个CPU的CPU 利用率的最小值的N倍;若上述判断结果为是,则所述预设的执行条件成立。 阳151] 执行条件四:各个CPU的CPU利用率的最大值大于预设阔值;并且各个CPU的CPU 利用率的最大值大于各个CPU的CPU利用率的最小值的N倍。
[0152] 执行条件四综合考虑了上述执行条件二和执行条件Ξ,只有两个条件同时满足 时,才执行本申请提供的CPU资源配置方法。 阳153] 在实际应用中,根据具体需求选择采用上述执行条件之一。执行条件一是固定时 间间隔启动执行本申请实施例提供的方法;执行条件二至四均为根据多处理器设备具体运 行状况,不固定期启动执行本申请实施例提供的方法,即:允许出现CPU资源不均衡的状 态。设置该执行条件二至四的理论依据是:如果没有CPU处于满负载的现象,各个程序的 CPU资源需求量也均能够得到满足,则程序的性能表现能够得到保证,因此无需进行CPU资 源均衡操作。
[0154] 在本实施例中,采用执行条件四,控制启动执行本申请实施例提供的方法,进行 CPU资源均衡操作。具体情况为:假设在被多个进程组共享的CPU中,CPU利用率最大值为 X,CPU利用率最小值为y ;当X大于预设阔值,并且X与y的关系满足x〉ny时,则执行本申 请实施例提供的方法。在本实施例中,将η设置为2,即:当CPU利用率最大值大于两倍的 CPU利用率最小值时,则判定当前CPU资源配置不均衡。
[0155] 在上述的实施例中,提供了一种CPU资源分配的方法,与之相对应的,本申请还提 供一种CPU资源分配的装置。该装置是与上述CPU资源分配的方法的实施例相对应。 阳156] 请参看图6,其为本申请的CPU资源分配的装置实施例的示意图。由于装置实施例 基本相似于方法实施例,所W描述得比较简单,相关之处参见方法实施例的部分说明即可。 下述描述的装置实施例仅仅是示意性的。 阳157] 本实施例的一种CPU资源分配的装置,包括:
[0158] 获取单元101,用于获取所述多处理器设备中运行的各个进程组在预设时间范围 内的CPU资源需求量,W及所述多处理器设备中各个CPU在所述预设时间范围内的空闲资 源值;
[0159] 分配单元103,用于根据所述各个进程组在预设时间范围内的CPU资源需求量,W 及所述各个CPU在所述预设时间范围内的空闲资源值,为每一个进程组分配其所需数量的 处理器。
[0160] 请参看图7,其为本申请的CPU资源分配的装置实施例获取单元101的具体示意 图。可选的,所述获取单元101包括: 阳161] 第一获取子单元1011,用于获取所述各个进程组在预设时间范围内的CPU资源需 求量;
[0162] 所述第一获取子单元1011包括:
[0163] 监测子单元10111,用于获取所述预设时间范围内所述各个进程组在每个CPU上 的运行时间;
[0164] 计算子单元10112,用于将所述预设时间范围内所述各个进程组在每个CPU上的 运行时间W进程组为单位分别求和,作为所述各个进程组在预设时间范围内的CPU资源需 求量。 阳1化]可选的,所述获取单元101包括: 阳166] 第二获取子单元1012,用于获取所述各个CPU在预设时间范围内的空闲资源值;
[0167] 所述第二获取子单元1012包括:
[0168] 监测子单元10121,用于获取所述预设时间范围内所述各个CPU处于运行状态的 时间;
[0169] 计算子单元10122,用于将所述预设时间范围和所述预设时间范围内所述各个 CPU处于运行状态的时间之差,作为所述各个CPU在所述预设时间范围内的空闲资源值。 [0170] 请参看图8,其为本申请的CPU资源分配的装置实施例分配单元103的具体示意 图。可选的,所述分配单元103包括: 阳171] 生成子单元1031,用于根据所述各个进程组在预设时间范围内的CPU资源需求 量,W及所述各个CPU在所述预设时间范围内的空闲资源值,生成CPU资源分配方案;
[0172] 配置子单元1032,用于配置所述CPU资源分配方案,将每一个进程组绑定到为其 分配的处理器。
[0173] 请参看图9,其为本申请的CPU资源分配的装置实施例生成子单元1031的具体示 意图。可选的,
[0174] 所述生成子单元1031包括:
[01巧]初始排序子单元10311,用于根据所述各个进程组在预设时间范围内的CPU资源 需求量,W所述进程组的CPU资源需求量的降序方式,对所述进程组排序,获得进程组序 列;W及,根据所述各个CPU在所述预设时间范围内的空闲资源值,W所述CPU的空闲资源 值的降序方式,对各个CPU进行排序,获得CPU序列;
[0176] 第一定位子单元10312,用于将所述进程组序列中排在第一位的进程组作为当前 进程组; 阳177] 分配子单元10313,用于根据所述当前进程组需要的CPU数量,在所述CPU序列中, 从排在第一位的CPU开始,依次选取所述当前进程组所需数量的CPU,并将被选取的CPU分 配给所述当前进程组;
[0178] 更新子单元10314,用于根据所述当前进程组在每个CPU上的运行时间,更新被分 配的CPU的空闲资源值; 阳179] 重新排序子单元10315,用于重新根据各个CPU的空闲资源值,W所述CPU的空闲 资源值的降序方式,更新所述CPU序列;
[0180] 判断子单元10316,用于判断所述当前进程组是否是所述进程组序列的最后一个 进程组; 阳181] 结束子单元10317,用于若上述判断结果为是,则所述CPU资源分配方案生成完 毕; 阳182] 第二定位子单元10318,用于若上述判断结果为否,则根据所述进程组排序,重新 确定所述当前进程组后一位的进程组为当前进程组;并返回所述根据所述当前进程组需要 的CPU数量,在所述CPU序列中,从排在第一位的CPU开始,依次选取所述当前进程组所需 数量的CPU,并将被选取的CPU分配给所述当前进程组的步骤。 阳183] 请参看图10,其为本申请的CPU资源分配的装置实施例的具体示意图。可选的,所 述装置还包括:
[0184] 所述装置还包括: 阳化5] 启动单元201,用于当预设的执行条件成立时,执行所述CPU资源分配的方法。
[0186] 本申请还提供一种电子设备,请参看图11,其为本申请的电子设备实施例的示意 图。本申请提供的电子设备包括: 阳187] 存储器301;化及
[0188] 多个处理器302,在所述多个处理器302中运行多个进程组,所述进程组被所述多 个处理器302执行时,采用如下方式为各个进程组分配处理器资源:
[0189] 获取所述电子设备中运行的各个进程组在预设时间范围内的CPU资源需求量,W 及所述电子设备中各个CPU在所述预设时间范围内的空闲资源值;
[0190] 根据所述各个进程组在预设时间范围内的CPU资源需求量,W及所述各个CPU在 所述预设时间范围内的空闲资源值,为每一个进程组分配其所需数量的处理器。 阳191] 本申请提供的CPU资源分配的方法、装置及电子设备,通过获取多处理器设备中 运行的各个进程组在预设时间范围内的CPU资源需求量,W及各个CPU在预设时间范围内 的空闲资源值;根据各个进程组在预设时间范围内的CPU资源需求量,W及各个CPU在预设 时间范围内的空闲资源值,为每一个进程组分配其所需数量的处理器。由于本申请提供的 方法是根据各个进程组的CPU资源需求量和各个CPU的当前空闲资源值,为每一个进程组 动态分配CPU资源,使得CPU资源在多个进程组之间尽量平衡分配,均衡了各个CPU的资源 利用率,保证各个应用程序的性能表现,有利于资源高效利用,从而达到改善系统整体性能 的效果。
[0192] 本申请虽然W较佳实施例公开如上,但其并不是用来限定本申请,任何本领域技 术人员在不脱离本申请的精神和范围内,都可W做出可能的变动和修改,因此本申请的保 护范围应当W本申请权利要求所界定的范围为准。
[0193] 在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、 网络接口和内存。
[0194] 内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/ 或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质 的示例。
[0195] 1、计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可W由任何 方法或技术来实现信息存储。信息可W是计算机可读指令、数据结构、程序的模块或其 他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储 器(SRAM)、动态随机存取存储器值RAM)、其他类型的随机存取存储器(RAM)、只读存储器 (ROM)、电可擦除可编程只读存储器巧EPROM)、快闪记忆体或其他内存技术、只读光盘只读 存储器(CD-ROM)、数字多功能光盘值VD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或 其他磁性存储设备或任何其他非传输介质,可用于存储可W被计算设备访问的信息。按照 本文中的界定,计算机可读介质不包括非暂存电脑可读媒体(transitory media),如调制 的数据信号和载波。 阳196] 2、本领域技术人员应明白,本申请的实施例可提供为方法、系统或计算机程序产 品。因此,本申请可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例 的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用 存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的 形式。
【主权项】
1. 一种CPU资源分配的方法,用于多处理器设备,其特征在于,包括: 获取所述多处理器设备中运行的各个进程组在预设时间范围内的CPU资源需求量,以 及所述多处理器设备中各个CPU在所述预设时间范围内的空闲资源值; 根据所述各个进程组在预设时间范围内的CPU资源需求量,以及所述各个CPU在所述 预设时间范围内的空闲资源值,为每一个进程组分配其所需数量的处理器。2. 根据权利要求1所述的CPU资源分配的方法,其特征在于,所述进程组在预设时间范 围内的CPU资源需求量,是指所述预设时间范围内所述进程组在每个CPU上的运行时间之 和。3. 根据权利要求2所述的CPU资源分配的方法,其特征在于,所述进程组在预设时间范 围内的CPU资源需求量,采用如下步骤获取: 获取所述预设时间范围内所述进程组在每个CPU上的运行时间; 将所述预设时间范围内所述进程组在每个CPU上的运行时间求和,作为所述进程组在 预设时间范围内的CPU资源需求量。4. 根据权利要求3所述的CPU资源分配的方法,其特征在于,所述预设时间范围内所述 进程组在每个CPU上的运行时间,采用如下方式获取: 读取cgroup目录下cpuacct. usage_per_cpu,获取预设时间范围内所述进程组在每个 CPU上的运行时间。5. 根据权利要求1所述的CPU资源分配的方法,其特征在于,所述CPU在预设时间范围 内的空闲资源值,是指所述预设时间范围内的CPU空闲时间长度。6. 根据权利要求5所述的CPU资源分配的方法,其特征在于,所述CPU在预设时间范围 内的空闲资源值,采用如下步骤获取: 获取所述预设时间范围内所述CPU处于运行状态的时间; 将所述预设时间范围和所述预设时间范围内所述CPU处于运行状态的时间之差,作为 所述CPU在所述预设时间范围内的空闲资源值。7. 根据权利要求6所述的CPU资源分配的方法,其特征在于,通过性能监测工具,获取 所述预设时间范围内所述CPU处于运行状态的时间;所述性能监测工具包括vmstat、ps或 top〇8. 根据权利要求1所述的CPU资源分配的方法,其特征在于,所述根据所述各个进程组 在预设时间范围内的CPU资源需求量,以及所述各个CPU在所述预设时间范围内的空闲资 源值,为每一个进程组分配其所需数量的处理器,包括: 根据所述各个进程组在预设时间范围内的CPU资源需求量,以及所述各个CPU在所述 预设时间范围内的空闲资源值,生成CPU资源分配方案; 配置所述CPU资源分配方案,将每一个进程组绑定到为其分配的处理器。9. 根据权利要求8所述的CPU资源分配的方法,其特征在于,所述根据所述各个进程组 在预设时间范围内的CPU资源需求量,以及所述各个CPU在所述预设时间范围内的空闲资 源值,生成CPU资源分配方案,包括: 根据所述各个进程组在预设时间范围内的CPU资源需求量,以所述进程组的CPU资源 需求量的降序方式,对所述进程组排序,获得进程组序列;以及,根据所述各个CPU在所述 预设时间范围内的空闲资源值,以所述CPU的空闲资源值的降序方式,对各个CPU进行排 序,获得CPU序列; 将所述进程组序列中排在第一位的进程组作为当前进程组; 根据所述当前进程组需要的CPU数量,在所述CPU序列中,从排在第一位的CPU开始, 依次选取所述当前进程组所需数量的CPU,并将被选取的CPU分配给所述当前进程组; 根据所述当前进程组在每个CPU上的运行时间,更新被分配的CPU的空闲资源值; 重新根据各个CPU的空闲资源值,以所述CPU的空闲资源值的降序方式,更新所述CPU 序列; 判断所述当前进程组是否是所述进程组序列的最后一个进程组; 若是,则所述CPU资源分配方案生成完毕; 若否,则根据所述进程组排序,重新确定所述当前进程组后一位的进程组为当前进程 组;并返回所述根据所述当前进程组需要的CPU数量,在所述CPU序列中,从排在第一位的 CPU开始,依次选取所述当前进程组所需数量的CPU,并将被选取的CPU分配给所述当前进 程组的步骤。10. 根据权利要求1-9任一项所述的CPU资源分配的方法,其特征在于,当预设的执行 条件成立时,执行所述CPU资源分配的方法。11. 根据权利要10所述的CPU资源分配的方法,其特征在于,所述预设的执行条件,采 用如下条件: 当前时间与上次执行所述CPU资源分配的方法的时间间隔大于预设的时间间隔。12. 根据权利要求10所述的CPU资源分配的方法,其特征在于,所述预设的执行条件, 采用如下条件: 各个CPU的CPU利用率的最大值大于预设阈值。13. 根据权利要求10所述的CPU资源分配的方法,其特征在于,所述预设的执行条件, 采用如下条件: 各个CPU的CPU利用率的最大值大于各个CPU的CPU利用率的最小值的N倍。14. 根据权利要求10所述的CPU资源分配的方法,其特征在于,所述预设的执行条件, 采用如下条件: 各个CPU的CPU利用率的最大值大于预设阈值;并且各个CPU的CPU利用率的最大值 大于各个CPU的CPU利用率的最小值的N倍。15. -种CPU资源分配的装置,其特征在于,包括: 获取单元,用于获取所述多处理器设备中运行的各个进程组在预设时间范围内的CPU 资源需求量,以及所述多处理器设备中各个CPU在所述预设时间范围内的空闲资源值; 分配单元,用于根据所述各个进程组在预设时间范围内的CPU资源需求量,以及所述 各个CPU在所述预设时间范围内的空闲资源值,为每一个进程组分配其所需数量的处理 器。16. 根据权利要求15所述的CPU资源分配的装置,其特征在于,所述获取单元包括: 第一获取子单元,用于获取所述各个进程组在预设时间范围内的CPU资源需求量; 所述第一获取子单元包括: 监测子单元,用于获取所述预设时间范围内所述各个进程组在每个CPU上的运行时 间; 计算子单元,用于将所述预设时间范围内所述各个进程组在每个CPU上的运行时间以 进程组为单位分别求和,作为所述各个进程组在预设时间范围内的CPU资源需求量。17. 根据权利要求15所述的CPU资源分配的装置,其特征在于,所述获取单元包括: 第二获取子单元,用于获取所述各个CPU在预设时间范围内的空闲资源值; 所述第二获取子单元包括: 监测子单元,用于获取所述预设时间范围内所述各个CPU处于运行状态的时间; 计算子单元,用于将所述预设时间范围和所述预设时间范围内所述各个CPU处于运行 状态的时间之差,作为所述各个CPU在所述预设时间范围内的空闲资源值。18. 根据权利要求15所述的CPU资源分配的装置,其特征在于,所述分配单元包括: 生成子单元,用于根据所述各个进程组在预设时间范围内的CPU资源需求量,以及所 述各个CPU在所述预设时间范围内的空闲资源值,生成CPU资源分配方案; 配置子单元,用于配置所述CPU资源分配方案,将每一个进程组绑定到为其分配的处 理器。19. 根据权利要求18所述的CPU资源分配的装置,其特征在于,所述生成子单元包括: 初始排序子单元,用于根据所述各个进程组在预设时间范围内的CPU资源需求量,以 所述进程组的CPU资源需求量的降序方式,对所述进程组排序,获得进程组序列;以及,根 据所述各个CPU在所述预设时间范围内的空闲资源值,以所述CPU的空闲资源值的降序方 式,对各个CPU进行排序,获得CPU序列; 第一定位子单元,用于将所述进程组序列中排在第一位的进程组作为当前进程组; 分配子单元,用于根据所述当前进程组需要的CPU数量,在所述CPU序列中,从排在第 一位的CPU开始,依次选取所述当前进程组所需数量的CPU,并将被选取的CPU分配给所述 当前进程组; 更新子单元,用于根据所述当前进程组在每个CPU上的运行时间,更新被分配的CPU的 空闲资源值; 重新排序子单元,用于重新根据各个CPU的空闲资源值,以所述CPU的空闲资源值的降 序方式,更新所述CPU序列; 判断子单元,用于判断所述当前进程组是否是所述进程组序列的最后一个进程组; 结束子单元,用于若上述判断结果为是,则所述CPU资源分配方案生成完毕; 第二定位子单元,用于若上述判断结果为否,则根据所述进程组排序,重新确定所述当 前进程组后一位的进程组为当前进程组;并返回所述根据所述当前进程组需要的CPU数 量,在所述CPU序列中,从排在第一位的CPU开始,依次选取所述当前进程组所需数量的 CPU,并将被选取的CPU分配给所述当前进程组的步骤。20. 根据权利要求15-19任一项所述的CPU资源分配的装置,其特征在于,所述装置还 包括: 启动单元,用于当预设的执行条件成立时,执行所述CPU资源分配的方法。21. -种电子设备,其特征在于,所述电子设备包括: 存储器;以及 多个处理器,在所述多个处理器中运行多个进程组,所述进程组被所述多个处理器执 行时,采用如下方式为各个进程组分配处理器资源: 获取所述电子设备中运行的各个进程组在预设时间范围内的CPU资源需求量,以及所 述电子设备中各个CPU在所述预设时间范围内的空闲资源值; 根据所述各个进程组在预设时间范围内的CPU资源需求量,以及所述各个CPU在所述 预设时间范围内的空闲资源值,为每一个进程组分配其所需数量的处理器。
【文档编号】G06F9/50GK105988872SQ201510055803
【公开日】2016年10月5日
【申请日】2015年2月3日
【发明人】周知远
【申请人】阿里巴巴集团控股有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1