首页 / 专利库 / 物理 / 频率依赖性 / 负载均衡方法及装置

负载均衡方法及装置

阅读:373发布:2020-05-13

专利汇可以提供负载均衡方法及装置专利检索,专利查询,专利分析的服务。并且本 发明 实施例 提供一种负载均衡方法及装置。该方法包括:源CPU判断第一 进程 对应的远程内存依赖性是否大于本地内存依赖性;若所述远程内存依赖性大于所述本地内存依赖性,且判断获知所述第二内存是非独占内存或者大于预设 阈值 的独占内存,则所述源CPU将所述第一进程与所述第一内存联合迁移到所述目标CPU,以使所述目标CPU依据所述第一内存和所述第二内存执行所述第一进程,所述预设阈值是所述源CPU依据所述远程内存依赖性设定的值。本发明实施例在CPU执行进程造成 访问 远程内存的 频率 大于访问本地内存的频率时,通过将进程与本地内存联合迁移到远程内存所在的CPU,避免了CPU频繁访问远程内存,提高了NUMA系统性能。,下面是负载均衡方法及装置专利的具体信息内容。

1.一种负载均衡方法,其特征在于,包括:
源CPU判断第一进程对应的远程内存依赖性是否大于本地内存依赖性;其中,所述第一进程是所述源CPU中运行状态的进程,所述本地内存依赖性用于标识所述源CPU执行所述第一进程时访问第一内存的频率,所述第一内存是所述源CPU中与所述第一进程对应的内存,所述远程内存依赖性用于标识所述源CPU执行所述第一进程时访问第二内存的频率,所述第二内存是所述目标CPU中与所述第一进程对应的内存;
若所述远程内存依赖性大于所述本地内存依赖性,且判断获知所述第二内存是非独占内存或者大于预设阈值的独占内存,则所述源CPU将所述第一进程与所述第一内存联合迁移到所述目标CPU,以使所述目标CPU依据所述第一内存和所述第二内存执行所述第一进程,所述预设阈值是所述源CPU依据所述远程内存依赖性设定的值。
2.根据权利要求1所述的方法,其特征在于,还包括:
若所述远程内存依赖性大于所述本地内存依赖性,且判断获知所述第二内存是小于所述预设阈值的独占内存,则所述源CPU将所述第二内存迁移到源CPU本地。
3.根据权利要求1所述的方法,其特征在于,所述源CPU将所述第一进程与所述第一内存联合迁移到所述目标CPU包括:
所述源CPU若判断获知所述目标CPU的负载小于所述源CPU的负载,则将所述第一进程与所述第一内存联合迁移到所述目标CPU;
所述源CPU若判断获知所述目标CPU的负载大于所述源CPU的负载,则触发所述目标CPU执行进程迁出,再将所述第一进程与所述第一内存联合迁移到所述目标CPU;
其中,所述目标CPU的负载用于标识所述目标CPU中运行状态的进程数量或者所述目标CPU中多个进程分别对应的远程内存依赖性和本地内存依赖性之和,所述源CPU的负载用于标识所述源CPU中运行状态的进程数量或者所述源CPU中多个进程分别对应的远程内存依赖性和本地内存依赖性之和。
4.根据权利要求3所述的方法,其特征在于,所述触发所述目标CPU执行进程迁出包括:
触发所述目标CPU选出所述目标CPU中远程内存依赖性和本地内存依赖性之和最小的第二进程,并将所述第二进程和所述目标CPU中与所述第二进程对应的内存联合迁移到最空闲的CPU。
5.根据权利要求1-4任一项所述的方法,其特征在于,还包括:
所述源CPU中运行状态的进程数量减少,且NUMA系统中运行状态的进程总数大于CPU总数,则所述源CPU从负载最高的CPU中将第三进程和第三内存联合迁移到本地,所述第三进程是所述负载最高的CPU中远程内存依赖性和本地内存依赖性之和最小的进程,所述第三内存是所述负载最高的CPU中与所述第三进程对应的内存,所述NUMA系统包括所述源CPU、所述目标CPU、所述最空闲的CPU和所述负载最高的CPU。
6.一种负载均衡方法,其特征在于,包括:
目标CPU接收第一进程与第一内存,所述第一进程与所述第一内存是所述源CPU判断获知所述第一进程对应的远程内存依赖性大于本地内存依赖性,且第二内存是非独占内存或者大于预设阈值的独占内存时向所述目标CPU联合迁移的,其中,所述第一进程是所述源CPU执行的运行状态的进程,所述本地内存依赖性用于标识所述源CPU执行所述第一进程时访问第一内存的频率,所述第一内存是所述源CPU中与所述第一进程对应的内存,所述远程内存依赖性用于标识所述源CPU执行所述第一进程时访问第二内存的频率,所述第二内存是所述目标CPU中与所述第一进程对应的内存;
所述目标CPU依据所述第一内存和所述第二内存执行所述第一进程。
7.根据权利要求6所述的方法,其特征在于,所述目标CPU接收第一进程与第一内存包括:
若所述目标CPU的负载小于所述源CPU的负载,所述目标CPU接收所述第一进程与所述第一内存;
若所述目标CPU的负载大于所述源CPU的负载,所述目标CPU执行进程迁出后接收所述第一进程与所述第一内存;
其中,所述目标CPU的负载用于标识所述目标CPU中运行状态的进程数量或者所述目标CPU中多个进程分别对应的远程内存依赖性和本地内存依赖性之和,所述源CPU的负载用于标识所述源CPU中运行状态的进程数量或者所述源CPU中多个进程分别对应的远程内存依赖性和本地内存依赖性之和。
8.根据权利要求7所述的方法,其特征在于,所述目标CPU执行进程迁出包括:
所述目标CPU选出所述目标CPU中远程内存依赖性和本地内存依赖性之和最小的第二进程,并将所述第二进程和所述目标CPU中与所述第二进程对应的内存联合迁移到最空闲的CPU。
9.根据权利要求6-8任一项所述的方法,其特征在于,还包括:
所述目标CPU中运行状态的进程数量减少,且NUMA系统中运行状态的进程总数大于CPU总数,则所述目标CPU从负载最高的CPU中将第三进程和第三内存联合迁移到本地,所述第三进程是所述负载最高的CPU中远程内存依赖性和本地内存依赖性之和最小的进程,所述第三内存是所述负载最高的CPU中与所述第三进程对应的内存,所述NUMA系统包括所述源CPU、所述目标CPU、所述最空闲的CPU和所述负载最高的CPU。
10.一种负载均衡方法,其特征在于,包括:
源CPU判断执行第一进程是否需要访问IO源,所述第一进程是所述源CPU中运行状态的进程,所述IO源在目标CPU中;
若所述源CPU需要访问所述IO源,则所述源CPU将所述第一进程与第一内存联合迁移到所述目标CPU,以使所述目标CPU依据所述第一内存和所述IO源执行所述第一进程,所述第一内存是所述源CPU中与所述第一进程对应的内存。
11.一种负载均衡方法,其特征在于,包括:
目标CPU接收第一进程与第一内存,所述第一进程与所述第一内存是源CPU判断获知执行所述第一进程需要访问IO源时向所述目标CPU联合迁移的,所述第一进程是所述源CPU中运行状态的进程,所述第一内存是所述源CPU中与所述第一进程对应的内存,所述IO源在所述目标CPU中;
所述目标CPU依据所述第一内存和所述IO源执行所述第一进程。
12.一种源CPU,其特征在于,包括:
判断模,用于判断第一进程对应的远程内存依赖性是否大于本地内存依赖性;其中,所述第一进程是所述源CPU中运行状态的进程,所述本地内存依赖性用于标识所述源CPU执行所述第一进程时访问第一内存的频率,所述第一内存是所述源CPU中与所述第一进程对应的内存,所述远程内存依赖性用于标识所述源CPU执行所述第一进程时访问第二内存的频率,所述第二内存是所述目标CPU中与所述第一进程对应的内存;
迁移模块,用于若所述远程内存依赖性大于所述本地内存依赖性,且所述判断模块判断获知所述第二内存是非独占内存或者大于预设阈值的独占内存,则将所述第一进程与所述第一内存联合迁移到所述目标CPU,以使所述目标CPU依据所述第一内存和所述第二内存执行所述第一进程,所述预设阈值是所述源CPU依据所述远程内存依赖性设定的值。
13.根据权利要求12所述的源CPU,其特征在于,所述迁移模块还用于若所述远程内存依赖性大于所述本地内存依赖性,且所述判断模块判断获知所述第二内存是小于所述预设阈值的独占内存,则将所述第二内存迁移到源CPU本地。
14.根据权利要求12所述的源CPU,其特征在于,所述迁移模块具体用于若所述判断模块判断获知所述目标CPU的负载小于所述源CPU的负载时,将所述第一进程与所述第一内存联合迁移到所述目标CPU;
所述源CPU还包括触发模块,用于若所述判断模块判断获知所述目标CPU的负载大于所述源CPU的负载时,触发所述目标CPU执行进程迁出,所述迁移模块再将所述第一进程与所述第一内存联合迁移到所述目标CPU;
其中,所述目标CPU的负载用于标识所述目标CPU中运行状态的进程数量或者所述目标CPU中多个进程分别对应的远程内存依赖性和本地内存依赖性之和,所述源CPU的负载用于标识所述源CPU中运行状态的进程数量或者所述源CPU中多个进程分别对应的远程内存依赖性和本地内存依赖性之和。
15.根据权利要求14所述的源CPU,其特征在于,所述触发模块具体用于触发所述目标CPU选出所述目标CPU中远程内存依赖性和本地内存依赖性之和最小的第二进程,并将所述第二进程和所述目标CPU中与所述第二进程对应的内存联合迁移到最空闲的CPU。
16.根据权利要求12-15任一项所述的源CPU,其特征在于,所述迁移模块还用于所述源CPU中运行状态的进程数量减少,且NUMA系统中运行状态的进程总数大于CPU总数时,从负载最高的CPU中将第三进程和第三内存联合迁移到本地,所述第三进程是所述负载最高的CPU中远程内存依赖性和本地内存依赖性之和最小的进程,所述第三内存是所述负载最高的CPU中与所述第三进程对应的内存,所述NUMA系统包括所述源CPU、所述目标CPU、所述最空闲的CPU和所述负载最高的CPU。
17.一种目标CPU,其特征在于,包括:
接收模块,用于接收第一进程与第一内存,所述第一进程与所述第一内存是所述源CPU判断获知所述第一进程对应的远程内存依赖性大于本地内存依赖性,且第二内存是非独占内存或者大于预设阈值的独占内存时向所述目标CPU联合迁移的,其中,所述第一进程是所述源CPU执行的运行状态的进程,所述本地内存依赖性用于标识所述源CPU执行所述第一进程时访问第一内存的频率,所述第一内存是所述源CPU中与所述第一进程对应的内存,所述远程内存依赖性用于标识所述源CPU执行所述第一进程时访问第二内存的频率,所述第二内存是所述目标CPU中与所述第一进程对应的内存;
执行模块,用于依据所述第一内存和所述第二内存执行所述第一进程。
18.根据权利要求17所述的目标CPU,其特征在于,所述接收模块具体用于若所述目标CPU的负载小于所述源CPU的负载时,接收所述第一进程与所述第一内存;若所述目标CPU的负载大于所述源CPU的负载时,所述执行模块还用于执行进程迁出,所述执行模块执行进程迁出后所述接收模块接收所述第一进程与所述第一内存;
其中,所述目标CPU的负载用于标识所述目标CPU中运行状态的进程数量或者所述目标CPU中多个进程分别对应的远程内存依赖性和本地内存依赖性之和,所述源CPU的负载用于标识所述源CPU中运行状态的进程数量或者所述源CPU中多个进程分别对应的远程内存依赖性和本地内存依赖性之和。
19.根据权利要求18所述的目标CPU,其特征在于,所述执行模块具体用于选出所述目标CPU中远程内存依赖性和本地内存依赖性之和最小的第二进程,并将所述第二进程和所述目标CPU中与所述第二进程对应的内存联合迁移到最空闲的CPU。
20.根据权利要求17-19任一项所述的目标CPU,其特征在于,还包括迁移模块,用于所述目标CPU中运行状态的进程数量减少,且NUMA系统中运行状态的进程总数大于CPU总数时,从负载最高的CPU中将第三进程和第三内存联合迁移到本地,所述第三进程是所述负载最高的CPU中远程内存依赖性和本地内存依赖性之和最小的进程,所述第三内存是所述负载最高的CPU中与所述第三进程对应的内存,所述NUMA系统包括所述源CPU、所述目标CPU、所述最空闲的CPU和所述负载最高的CPU。
21.一种源CPU,其特征在于,包括:
判断模块,用于判断执行第一进程是否需要访问IO源,所述第一进程是所述源CPU中运行状态的进程,所述IO源在目标CPU中;
迁移模块,用于若所述源CPU需要访问所述IO源时,将所述第一进程与第一内存联合迁移到所述目标CPU,以使所述目标CPU依据所述第一内存和所述IO源执行所述第一进程,所述第一内存是所述源CPU中与所述第一进程对应的内存。
22.一种目标CPU,其特征在于,包括:
接收模块,用于接收第一进程与第一内存,所述第一进程与所述第一内存是源CPU判断获知执行所述第一进程需要访问IO源时向所述目标CPU联合迁移的,所述第一进程是所述源CPU中运行状态的进程,所述第一内存是所述源CPU中与所述第一进程对应的内存,所述IO源在所述目标CPU中;
执行模块,用于依据所述第一内存和所述IO源执行所述第一进程。
23.一种负载均衡系统,其特征在于,包括多个如权利要求12-16任一项所述的源CPU,以及多个如权利要求17-20任一项所述的目标CPU。
24.一种负载均衡系统,其特征在于,包括多个如权利要求21所述的源CPU,以及多个如权利要求22所述的目标CPU。

说明书全文

负载均衡方法及装置

技术领域

[0001] 本发明实施例涉及通信技术,尤其涉及一种负载均衡方法及装置。

背景技术

[0002] 非统一内存访问(Non Uniform Memory Access Achitecture,简称NUMA)系统包括多个中央处理器(Central Processing Unit,简称CPU),每个CPU可执行多个进程,多个CPU在执行多个进程的过程中可能出现部分CPU执行进程多,部分CPU执行进程少,现有技术采用调度域负载均衡技术解决多个CPU执行进程不均衡的情况。
[0003] 调度域负载均衡技术针对调度域进行处理,调度域的结构如图1所示,从上到下依次分成NUMA域、物理域、Core域和CPU四个层级,且每个上级域包含若干个下级域。各CPU按不同间隔定时响应操作系统产生的调度中断并执行中断函数,CPU执行中断函数具体为遍历调度域,寻找最繁忙的CPU,从最繁忙的CPU的运行队列中选出待迁移进程,并将待迁移进程迁移到该CPU的运行队列中。
[0004] 现有技术可能造成源CPU中对本地内存访问频率较高的进程被迁移到目标CPU,使目标CPU在执行该进程的过程中频繁访问源CPU中的内存,最终导致NUMA系统性能下降。

发明内容

[0005] 本发明实施例提供一种负载均衡方法及装置,以提高NUMA系统性能。
[0006] 本发明实施例的一个方面是提供一种负载均衡方法,包括:
[0007] 源CPU判断第一进程对应的远程内存依赖性是否大于本地内存依赖性;其中,所述第一进程是所述源CPU中运行状态的进程,所述本地内存依赖性用于标识所述源CPU执行所述第一进程时访问第一内存的频率,所述第一内存是所述源CPU中与所述第一进程对应的内存,所述远程内存依赖性用于标识所述源CPU执行所述第一进程时访问第二内存的频率,所述第二内存是所述目标CPU中与所述第一进程对应的内存;
[0008] 若所述远程内存依赖性大于所述本地内存依赖性,且判断获知所述第二内存是非独占内存或者大于预设阈值的独占内存,则所述源CPU将所述第一进程与所述第一内存联合迁移到所述目标CPU,以使所述目标CPU依据所述第一内存和所述第二内存执行所述第一进程,所述预设阈值是所述源CPU依据所述远程内存依赖性设定的值。
[0009] 本发明实施例的另一个方面是提供一种负载均衡方法,包括:
[0010] 目标CPU接收第一进程与第一内存,所述第一进程与所述第一内存是所述源CPU判断获知所述第一进程对应的远程内存依赖性大于本地内存依赖性,且第二内存是非独占内存或者大于预设阈值的独占内存时向所述目标CPU联合迁移的,其中,所述第一进程是所述源CPU执行的运行状态的进程,所述本地内存依赖性用于标识所述源CPU执行所述第一进程时访问第一内存的频率,所述第一内存是所述源CPU中与所述第一进程对应的内存,所述远程内存依赖性用于标识所述源CPU执行所述第一进程时访问第二内存的频率,所述第二内存是所述目标CPU中与所述第一进程对应的内存;
[0011] 所述目标CPU依据所述第一内存和所述第二内存执行所述第一进程。
[0012] 本发明实施例的另一个方面是提供一种负载均衡方法,包括:
[0013] 源CPU判断执行第一进程是否需要访问IO源,所述第一进程是所述源CPU中运行状态的进程,所述IO源在目标CPU中;
[0014] 若所述源CPU需要访问所述IO源,则所述源CPU将所述第一进程与第一内存联合迁移到所述目标CPU,以使所述目标CPU依据所述第一内存和所述IO源执行所述第一进程,所述第一内存是所述源CPU中与所述第一进程对应的内存。
[0015] 本发明实施例的另一个方面是提供一种负载均衡方法,包括:
[0016] 目标CPU接收第一进程与第一内存,所述第一进程与所述第一内存是源CPU判断获知执行所述第一进程需要访问IO源时向所述目标CPU联合迁移的,所述第一进程是所述源CPU中运行状态的进程,所述第一内存是所述源CPU中与所述第一进程对应的内存,所述IO源在所述目标CPU中;
[0017] 所述目标CPU依据所述第一内存和所述IO源执行所述第一进程。
[0018] 本发明实施例的另一个方面是提供一种源CPU,包括:
[0019] 判断模,用于判断第一进程对应的远程内存依赖性是否大于本地内存依赖性;其中,所述第一进程是所述源CPU中运行状态的进程,所述本地内存依赖性用于标识所述源CPU执行所述第一进程时访问第一内存的频率,所述第一内存是所述源CPU中与所述第一进程对应的内存,所述远程内存依赖性用于标识所述源CPU执行所述第一进程时访问第二内存的频率,所述第二内存是所述目标CPU中与所述第一进程对应的内存;
[0020] 迁移模块,用于若所述远程内存依赖性大于所述本地内存依赖性,且所述判断模块判断获知所述第二内存是非独占内存或者大于预设阈值的独占内存,则将所述第一进程与所述第一内存联合迁移到所述目标CPU,以使所述目标CPU依据所述第一内存和所述第二内存执行所述第一进程,所述预设阈值是所述源CPU依据所述远程内存依赖性设定的值。
[0021] 本发明实施例的另一个方面是提供一种目标CPU,包括:
[0022] 接收模块,用于接收第一进程与第一内存,所述第一进程与所述第一内存是所述源CPU判断获知所述第一进程对应的远程内存依赖性大于本地内存依赖性,且第二内存是非独占内存或者大于预设阈值的独占内存时向所述目标CPU联合迁移的,其中,所述第一进程是所述源CPU执行的运行状态的进程,所述本地内存依赖性用于标识所述源CPU执行所述第一进程时访问第一内存的频率,所述第一内存是所述源CPU中与所述第一进程对应的内存,所述远程内存依赖性用于标识所述源CPU执行所述第一进程时访问第二内存的频率,所述第二内存是所述目标CPU中与所述第一进程对应的内存;
[0023] 执行模块,用于依据所述第一内存和所述第二内存执行所述第一进程。
[0024] 本发明实施例的另一个方面是提供一种源CPU,包括:
[0025] 判断模块,用于判断执行第一进程是否需要访问IO源,所述第一进程是所述源CPU中运行状态的进程,所述IO源在目标CPU中;
[0026] 迁移模块,用于若所述源CPU需要访问所述IO源时,将所述第一进程与第一内存联合迁移到所述目标CPU,以使所述目标CPU依据所述第一内存和所述IO源执行所述第一进程,所述第一内存是所述源CPU中与所述第一进程对应的内存。
[0027] 本发明实施例的另一个方面是提供一种目标CPU,包括:
[0028] 接收模块,用于接收第一进程与第一内存,所述第一进程与所述第一内存是源CPU判断获知执行所述第一进程需要访问IO源时向所述目标CPU联合迁移的,所述第一进程是所述源CPU中运行状态的进程,所述第一内存是所述源CPU中与所述第一进程对应的内存,所述IO源在所述目标CPU中;
[0029] 执行模块,用于依据所述第一内存和所述IO源执行所述第一进程。
[0030] 本发明实施例的另一个方面是提供一种负载均衡系统,包括多个所述的源CPU和多个所述的目标CPU。
[0031] 本发明实施例提供的负载均衡方法及装置,在CPU执行进程造成访问远程内存的频率大于访问本地内存的频率时,通过将进程与本地内存联合迁移到远程内存所在的CPU,避免了CPU频繁访问远程内存,提高了NUMA系统性能。附图说明
[0032] 图1为现有技术中NUMA系统调度域的结构图;
[0033] 图2为本发明实施例提供的负载均衡方法流程图
[0034] 图3为本发明另一实施例提供的负载均衡方法流程图;
[0035] 图4为本发明另一实施例提供的负载均衡方法流程图;
[0036] 图5为本发明另一实施例提供的负载均衡方法流程图;
[0037] 图6A为本发明另一实施例提供的负载均衡方法适用的信令图;
[0038] 图6B为本发明另一实施例提供的负载均衡方法适用的信令图;
[0039] 图7为本发明实施例提供的负载均衡方法流程图;
[0040] 图8为本发明实施例提供的源CPU的结构图;
[0041] 图9为本发明另一实施例提供的源CPU的结构图;
[0042] 图10为本发明实施例提供的目标CPU的结构图;
[0043] 图11为本发明另一实施例提供的目标CPU的结构图;
[0044] 图12为本发明另一实施例提供的源CPU的结构图;
[0045] 图13为本发明另一实施例提供的目标CPU的结构图;
[0046] 图14为本发明另一实施例提供的负载均衡系统的结构图。

具体实施方式

[0047] 图2为本发明实施例提供的负载均衡方法流程图。本发明实施例适用于解决NUMA系统中多个CPU执行进程不均衡的问题。具体的负载均衡方法步骤如下:
[0048] 步骤S201、源CPU判断第一进程对应的远程内存依赖性是否大于本地内存依赖性;其中,所述第一进程是所述源CPU中运行状态的进程,所述本地内存依赖性用于标识所述源CPU执行所述第一进程时访问第一内存的频率,所述第一内存是所述源CPU中与所述第一进程对应的内存,所述远程内存依赖性用于标识所述源CPU执行所述第一进程时访问第二内存的频率,所述第二内存是所述目标CPU中与所述第一进程对应的内存;
[0049] 源CPU在执行运行状态的第一进程时除了访问本地与第一进程对应的内存外,还可能访问其他CPU即目标CPU中与所述第一进程对应的内存,本发明实施例用本地内存依赖性标识所述源CPU执行所述第一进程时访问第一内存的频率,且第一内存是所述源CPU中与所述第一进程对应的内存;用远程内存依赖性标识所述源CPU执行所述第一进程时访问第二内存的频率,且所述第二内存是所述目标CPU中与所述第一进程对应的内存;本地内存依赖性或远程内存依赖性具体可以表示为R(p)=f(N),其中,p表示第一进程,N表示源CPU执行第一进程时访问本地内存或远程内存的次数,f表示N的一个函数,该函数使f(N)的值小于N,便于计算,本发明实施例中本地内存依赖性或远程内存依赖性R(p)的计算并不局限于上述一种表达式。
[0050] 所述源CPU在执行所述第一进程时判断第一进程对应的远程内存依赖性是否大于本地内存依赖性,即所述源CPU在执行所述第一进程时访问远程内存的频率是否大于访问本地内存的频率。
[0051] 步骤S202、若所述远程内存依赖性大于所述本地内存依赖性,且判断获知所述第二内存是非独占内存或者大于预设阈值的独占内存,则所述源CPU将所述第一进程与所述第一内存联合迁移到所述目标CPU,以使所述目标CPU依据所述第一内存和所述第二内存执行所述第一进程,所述预设阈值是所述源CPU依据所述远程内存依赖性设定的值。
[0052] 若源CPU判断获知所述远程内存依赖性大于所述本地内存依赖性,即所述源CPU在执行所述第一进程时访问远程内存的频率大于访问本地内存的频率,并且判断获知所述第二内存即远程内存是非独占内存或者大小大于预设阈值的独占内存,则所述源CPU将所述第一进程与本地中与第一进程对应的内存联合迁移到目标CPU,以使所述目标CPU依据所述第一内存和所述第二内存执行所述第一进程;其中,所述预设阈值T是与所述远程内存依赖性R(p)成正比的值,具体为T=F(K,R(p)),其中,K表示常数,F函数实现T与R(p)的正相关关系,且本发明实施例中所述预设阈值T的计算并不局限于上述一种表达式。
[0053] 本发明实施例在CPU执行进程造成访问远程内存的频率大于访问本地内存的频率时,通过将进程与本地内存联合迁移到远程内存所在的CPU,避免了CPU频繁访问远程内存,提高了NUMA系统性能。
[0054] 在上述实施例的基础上,步骤S202中还包括:若所述远程内存依赖性大于所述本地内存依赖性,且判断获知所述第二内存是小于所述预设阈值的独占内存,则所述源CPU将所述第二内存迁移到源CPU本地。
[0055] 当所述源CPU执行第一进程时,访问远程内存的频率大于访问本地内存的频率,且远程内存的大小小于上述实施例中的预设阈值T,即迁移远程内存的代价小于联合迁移第一进程和本地内存的代价,则所述源CPU将远程内存迁移到源CPU本地。
[0056] 步骤S202中,所述源CPU将所述第一进程与所述第一内存联合迁移到所述目标CPU包括:所述源CPU若判断获知所述目标CPU的负载小于所述源CPU的负载,则将所述第一进程与所述第一内存联合迁移到所述目标CPU;所述源CPU若判断获知所述目标CPU的负载大于所述源CPU的负载,则触发所述目标CPU执行进程迁出,再将所述第一进程与所述第一内存联合迁移到所述目标CPU;其中,所述目标CPU的负载用于标识所述目标CPU中运行状态的进程数量或者所述目标CPU中多个进程分别对应的远程内存依赖性和本地内存依赖性之和,所述源CPU的负载用于标识所述源CPU中运行状态的进程数量或者所述源CPU中多个进程分别对应的远程内存依赖性和本地内存依赖性之和。
[0057] 所述源CPU向目标CPU联合迁移第一进程和第一内存之前,比较目标CPU的负载与源CPU的负载大小,本发明实施例可以用所述目标CPU中运行状态的进程数量或者所述目标CPU中多个进程分别对应的远程内存依赖性和本地内存依赖性之和来衡量目标CPU的负载,用所述源CPU中运行状态的进程数量或者所述源CPU中多个进程分别对应的远程内存依赖性和本地内存依赖性之和来衡量源CPU的负载。
[0058] 当所述目标CPU的负载小于所述源CPU的负载时,所述源CPU将所述第一进程与所述第一内存直接联合迁移到所述目标CPU;当所述目标CPU的负载大于所述源CPU的负载时,所述源CPU触发所述目标CPU执行进程迁出,再将所述第一进程与所述第一内存联合迁移到所述目标CPU。
[0059] 所述触发所述目标CPU执行进程迁出包括:触发所述目标CPU选出所述目标CPU中远程内存依赖性和本地内存依赖性之和最小的第二进程,并将所述第二进程和所述目标CPU中与所述第二进程对应的内存联合迁移到最空闲的CPU。
[0060] 即所述目标CPU的负载大于所述源CPU的负载时,所述目标CPU要释放部分处理能及内存,以便接收源CPU联合迁移过来的第一进程和第一内存。
[0061] 本发明实施例通过判断远程内存的大小决定源CPU进行联合迁移或只迁移远程内存,通过对目标CPU、源CPU的负载大小比较,决定目标CPU是否需要释放进程和对应的内存,进一步提高了NUMA系统的性能。
[0062] 在上述实施例的基础上,步骤S202之后还包括:所述源CPU中运行状态的进程数量减少,且NUMA系统中运行状态的进程总数大于CPU总数,则所述源CPU从负载最高的CPU中将第三进程和第三内存联合迁移到本地,所述第三进程是所述负载最高的CPU中远程内存依赖性和本地内存依赖性之和最小的进程,所述第三内存是所述负载最高的CPU中与所述第三进程对应的内存,所述NUMA系统包括所述源CPU、所述目标CPU、所述最空闲的CPU和所述负载最高的CPU。
[0063] 当源CPU中包括第一进程在内的处于运行状态的进程消亡或者转为非运行状态时,且整个NUMA系统中运行状态的进程总数大于CPU总数,即源CPU空出了处理能力,则源CPU从负载最高的CPU中将第三进程和第三内存联合迁移到本地,所述第三进程是所述负载最高的CPU中远程内存依赖性和本地内存依赖性之和最小的进程,即所述第三进程是满足迁移代价最小的进程,所述第三内存是所述负载最高的CPU中与所述第三进程对应的内存。
[0064] 当源CPU中包括第一进程在内的处于运行状态的进程消亡或者转为非运行状态时,且整个NUMA系统中运行状态的进程总数小于CPU总数,即NUMA系统中的各CPU有足够的处理能力时,源CPU不进行处理,以免同一个进程在多个CPU之间来回切换。其中,所述NUMA系统包括所述源CPU、所述目标CPU、所述最空闲的CPU和所述负载最高的CPU。
[0065] 本发明实施例当源CPU中运行状态的进程数量减少时,通过从负载最高的CPU中将迁移代价最小的进程和其对应的内存联合迁移到源CPU本地,提高了NUMA系统资源利用率。
[0066] 图3为本发明另一实施例提供的负载均衡方法流程图。如图3所示,本发明实施例提供的负载均衡方法具体步骤如下:
[0067] 步骤S301、目标CPU接收第一进程与第一内存,所述第一进程与所述第一内存是所述源CPU判断获知所述第一进程对应的远程内存依赖性大于本地内存依赖性,且第二内存是非独占内存或者大于预设阈值的独占内存时向所述目标CPU联合迁移的,其中,所述第一进程是所述源CPU执行的运行状态的进程,所述本地内存依赖性用于标识所述源CPU执行所述第一进程时访问第一内存的频率,所述第一内存是所述源CPU中与所述第一进程对应的内存,所述远程内存依赖性用于标识所述源CPU执行所述第一进程时访问第二内存的频率,所述第二内存是所述目标CPU中与所述第一进程对应的内存;
[0068] 源CPU在执行运行状态的第一进程时除了访问本地与第一进程对应的内存外,还可能访问其他CPU即目标CPU中与所述第一进程对应的内存,本发明实施例用本地内存依赖性标识所述源CPU执行所述第一进程时访问第一内存的频率,且第一内存是所述源CPU中与所述第一进程对应的内存;用远程内存依赖性标识所述源CPU执行所述第一进程时访问第二内存的频率,且所述第二内存是所述目标CPU中与所述第一进程对应的内存。
[0069] 所述源CPU在执行所述第一进程时判断第一进程对应的远程内存依赖性是否大于本地内存依赖性,即所述源CPU在执行所述第一进程时访问远程内存的频率是否大于访问本地内存的频率,若源CPU判断获知所述远程内存依赖性大于所述本地内存依赖性,即所述源CPU在执行所述第一进程时访问远程内存的频率大于访问本地内存的频率,并且判断获知所述第二内存及远程内存是非独占内存或者大于预设阈值的独占内存,则所述源CPU将所述第一进程与本地中与第一进程对应的内存联合迁移到目标CPU。
[0070] 步骤S302、所述目标CPU依据所述第一内存和所述第二内存执行所述第一进程。
[0071] 所述目标CPU依据接收的所述第一内存和本地的所述第二内存执行源CPU迁移过来的第一进程。
[0072] 本发明实施例在CPU执行进程造成访问远程内存的频率大于访问本地内存的频率时,通过将进程与本地内存联合迁移到远程内存所在的CPU,避免了CPU频繁访问远程内存,提高了NUMA系统性能。
[0073] 在上述实施例的基础上,步骤S301中,所述目标CPU接收第一进程与第一内存包括:若所述目标CPU的负载小于所述源CPU的负载,所述目标CPU接收所述第一进程与所述第一内存;若所述目标CPU的负载大于所述源CPU的负载,所述目标CPU执行进程迁出后接收所述第一进程与所述第一内存;其中,所述目标CPU的负载用于标识所述目标CPU中运行状态的进程数量或者所述目标CPU中多个进程分别对应的远程内存依赖性和本地内存依赖性之和,所述源CPU的负载用于标识所述源CPU中运行状态的进程数量或者所述源CPU中多个进程分别对应的远程内存依赖性和本地内存依赖性之和。
[0074] 所述源CPU向目标CPU联合迁移第一进程和第一内存之前,比较目标CPU的负载与源CPU的负载大小,本发明实施例用所述目标CPU中运行状态的进程数量或者所述目标CPU中多个进程分别对应的远程内存依赖性和本地内存依赖性之和来衡量目标CPU的负载,用所述源CPU中运行状态的进程数量或者所述源CPU中多个进程分别对应的远程内存依赖性和本地内存依赖性之和来衡量源CPU的负载。
[0075] 当所述目标CPU的负载小于所述源CPU的负载时,所述源CPU将所述第一进程与所述第一内存直接联合迁移到所述目标CPU;当所述目标CPU的负载大于所述源CPU的负载时,所述源CPU触发所述目标CPU执行进程迁出,再将所述第一进程与所述第一内存联合迁移到所述目标CPU。
[0076] 所述目标CPU执行进程迁出包括:所述目标CPU选出所述目标CPU中远程内存依赖性和本地内存依赖性之和最小的第二进程,并将所述第二进程和所述目标CPU中与所述第二进程对应的内存联合迁移到最空闲的CPU。
[0077] 即所述目标CPU的负载大于所述源CPU的负载时,所述目标CPU要释放部分处理能力及内存,以便接收源CPU联合迁移过来的第一进程和第一内存。
[0078] 本发明实施例通过对目标CPU、源CPU的负载大小比较,决定目标CPU是否需要释放进程和对应的内存,进一步提高了NUMA系统的性能。
[0079] 在上述实施例的基础上,步骤S302之后,还包括:所述目标CPU中运行状态的进程数量减少,且NUMA系统中运行状态的进程总数大于CPU总数,则所述目标CPU从负载最高的CPU中将第三进程和第三内存联合迁移到本地,所述第三进程是所述负载最高的CPU中远程内存依赖性和本地内存依赖性之和最小的进程,所述第三内存是所述负载最高的CPU中与所述第三进程对应的内存,所述NUMA系统包括所述源CPU、所述目标CPU、所述最空闲的CPU和所述负载最高的CPU。
[0080] 当目的CPU中包括第一进程在内的处于运行状态的进程消亡或者转为非运行状态时,且整个NUMA系统中运行状态的进程总数大于CPU总数,即目的CPU空出了处理能力,则目的CPU从负载最高的CPU中将第三进程和第三内存联合迁移到本地,所述第三进程是所述负载最高的CPU中远程内存依赖性和本地内存依赖性之和最小的进程,即所述第三进程是满足迁移代价最小的进程,所述第三内存是所述负载最高的CPU中与所述第三进程对应的内存。
[0081] 当目的CPU中包括第一进程在内的处于运行状态的进程消亡或者转为非运行状态时,且整个NUMA系统中运行状态的进程总数小于CPU总数,即NUMA系统中的各CPU有足够的处理能力时,目的CPU不进行处理,以免同一个进程在多个CPU之间来回切换。其中,所述NUMA系统包括所述源CPU、所述目标CPU、所述最空闲的CPU和所述负载最高的CPU。
[0082] 本发明实施例当目的CPU中运行状态的进程数量减少时,通过从负载最高的CPU中将迁移代价最小的进程和其对应的内存联合迁移到目的CPU本地,提高了NUMA系统资源利用率。
[0083] 图4为本发明另一实施例提供的负载均衡方法流程图。本发明实施例提供的负载均衡方法具体步骤如下:
[0084] 步骤S401、源CPU判断执行第一进程是否需要访问IO源,所述第一进程是所述源CPU中运行状态的进程,所述IO源在目标CPU中;
[0085] 源CPU在执行运行状态的第一进程时除了访问本地与第一进程对应的内存即第一内存外,还可能需要访问其他CPU即目标CPU中的IO源,则源CPU判断是否需要访问IO源。
[0086] 步骤S402、若所述源CPU需要访问所述IO源,则所述源CPU将所述第一进程与第一内存联合迁移到所述目标CPU,以使所述目标CPU依据所述第一内存和所述IO源执行所述第一进程,所述第一内存是所述源CPU中与所述第一进程对应的内存。
[0087] 若源CPU判断获知执行第一进程需要访问所述IO源,则将所述第一进程与第一内存联合迁移到所述目标CPU,以使所述目标CPU依据所述第一内存和所述IO源执行所述第一进程,所述第一内存是所述源CPU中与所述第一进程对应的内存。
[0088] 本发明实施例提供的负载均衡方法可用于上述实施例提供的负载均衡方法中,即若NUMA系统中存在源CPU访问目标CPU上的IO源时,则不执行上述实施例提供的负载均衡方法流程,而按照本发明实施例的具体步骤执行。
[0089] 本发明实施例在执行进程需要访问远程的IO源时,将源CPU中的进程和其对应的内存联合迁移到目标CPU,避免源CPU频繁访问远程的IO源,提高了NUMA系统性能。
[0090] 图5为本发明另一实施例提供的负载均衡方法流程图。本发明实施例提供的负载均衡方法具体步骤如下:
[0091] 步骤S501、目标CPU接收第一进程与第一内存,所述第一进程与所述第一内存是源CPU判断获知执行所述第一进程需要访问IO源时向所述目标CPU联合迁移的,所述第一进程是所述源CPU中运行状态的进程,所述第一内存是所述源CPU中与所述第一进程对应的内存,所述IO源在所述目标CPU中;
[0092] 源CPU在执行运行状态的第一进程时除了访问本地与第一进程对应的内存即第一内存外,还可能需要访问其他CPU即目标CPU中的IO源,则源CPU判断是否需要访问IO源;若源CPU判断获知执行第一进程需要访问所述IO源,则将所述第一进程与第一内存联合迁移到所述目标CPU。
[0093] 步骤S502、所述目标CPU依据所述第一内存和所述IO源执行所述第一进程。
[0094] 所述目标CPU依据接收的第一内存和本地的IO源执行源CPU迁移过来的第一进程。
[0095] 本发明实施例在执行进程需要访问远程的IO源时,将源CPU中的进程和其对应的内存联合迁移到目标CPU,避免源CPU频繁访问远程的IO源,提高了NUMA系统性能。
[0096] 图6A为本发明另一实施例提供的负载均衡方法适用的信令图。本发明实施例采用事件触发的方式调整多CPU之间负载均衡,具体为确定可能引发CPU和内存访问负载不均衡的事件,采用相应的策略来消除各个不均衡事件的影响。
[0097] 本发明实施例确定的可能引发CPU和内存访问负载不均衡的事件包括如下:
[0098] S1、进程创建;
[0099] S2、进程消亡;
[0100] S3、进程的状态由运行状态转为非运行状态;
[0101] S4、进程的状态由非运行状态转为运行状态;
[0102] S5、CPU连续访问远程内存;
[0103] S6、进程从一个CPU迁往另一个CPU;
[0104] S7、QPI负荷超过阈值。
[0105] 对于S1-S3采用如图6A所示的处理方法,具体步骤如下:
[0106] 步骤S601、CPU1创建新进程;
[0107] 当S1事件发生时,选择负载最低的CPU例如CPU1,由CPU1创建并执行新进程。
[0108] 步骤S602、CPU3判断进程状态;
[0109] 各CPU均可判断进程状态,例如CPU3判断发生了事件S2或S3,则执行步骤S603。
[0110] 步骤S603、CPU3联合迁移进程和对应的内存。
[0111] CPU3确定负载最高的CPU例如为CPU N,从CPU N中选择迁移代价最小的进程,并将进程和其在CPU N中对应的内存联合迁移到CPU3本地,其中迁移代价用进程对应的远程内存依赖性和本地内存依赖性之和衡量。
[0112] 本发明实施例并不局限CPU1是负载最低的CPU、CPU N是负载最高的CPU,以及CPU3是检测到事件S2或S3的CPU。
[0113] 图6B为本发明另一实施例提供的负载均衡方法适用的信令图。在本发明实施例中,对于S4-S7采用如图6B所示的处理方法,具体步骤如下:
[0114] 步骤S701、CPU6判断进程状态;
[0115] 各CPU均可判断进程状态,例如CPU6判断发生了事件S4,则选择负载最低的CPU例如CPU4,执行步骤S702。
[0116] 步骤S702、CPU6向CPU4迁移进程;
[0117] CPU6将与事件S4对应的进程迁移到负载最低的CPU4。
[0118] 步骤S703、CPU4比较远程内存依赖性和本地内存依赖性;
[0119] CPU4执行进程一段时间后,若发生事件S5,则比较远程内存依赖性和本地内存依赖性,若远程内存依赖性大于本地内存依赖性,且远程内存是独占小内存,则执行步骤S704,若远程内存是非独占内存或者独占大内存,则执行步骤S705。
[0120] 步骤S704、CPU4从CPU6迁移独占小内存;
[0121] 步骤S705、CPU4判断CPU4和CPU6的负载;
[0122] 远程内存是非独占内存或者独占大内存,此时CPU4需要向CPU6联合迁移进程和内存,即进程从一个CPU迁往另一个CPU,此时发生事件S6,CPU4首先比较CPU4和CPU6的负载大小,若CPU4的负载大于CPU6的负载,则执行步骤S707,若CPU4的负载小于CPU6的负载,则先执行步骤S706,后执行步骤S707。
[0123] 步骤S706、CPU6将进程迁出到CPU M;
[0124] CPU6选择出迁移代价最小的进程,并将进程和CPU6中进程对应的内存联合迁移到负载最小的CPU例如CPU M。
[0125] 步骤S707、CPU4向CPU6联合迁移进程和内存;
[0126] 步骤S708、CPU4向CPU H联合迁移进程和内存;
[0127] 若事件S7发生,QPI负载增加是由于CPU4执行进程时访问远端如CPU H的IO源造成的,则CPU4将进程和进程对应的内存联合迁移到CPU H。
[0128] 本发明实施例并不限制CPU4和CPU M是负载最小的CPU,CPU H是IO源所在的CPU,CPU6是检测到事件S4的CPU。
[0129] 图7为本发明实施例提供的负载均衡方法流程图。如图7所示,本发明实施例提供的负载均衡方法是图6A、6B相结合的方法,事件S1-S7触发NUMA系统产生中断并调整多CPU之间负载均衡,对不同事件的处理方法不同,具体与图6A、6B中的方法一致,此处不再赘述。
[0130] 本发明实施例采用事件触发的方式调整多CPU之间负载均衡,在一定程度上节省了系统资源,进一步提高了NUMA系统的性能。
[0131] 图8为本发明实施例提供的源CPU的结构图。本发明实施例提供的源CPU可以执行负载均衡方法实施例提供的处理流程,如图8所示,源CPU80包括判断模块81和迁移模块82,其中,判断模块81用于判断第一进程对应的远程内存依赖性是否大于本地内存依赖性;其中,所述第一进程是所述源CPU中运行状态的进程,所述本地内存依赖性用于标识所述源CPU执行所述第一进程时访问第一内存的频率,所述第一内存是所述源CPU中与所述第一进程对应的内存,所述远程内存依赖性用于标识所述源CPU执行所述第一进程时访问第二内存的频率,所述第二内存是所述目标CPU中与所述第一进程对应的内存;迁移模块82用于若所述远程内存依赖性大于所述本地内存依赖性,且所述判断模块81判断获知所述第二内存是非独占内存或者大于预设阈值的独占内存,则将所述第一进程与所述第一内存联合迁移到所述目标CPU,以使所述目标CPU依据所述第一内存和所述第二内存执行所述第一进程,所述预设阈值是所述源CPU依据所述远程内存依赖性设定的值。
[0132] 本发明实施例提供的源CPU可以具体用于执行上述图2所提供的方法实施例,具体功能此处不再赘述。
[0133] 本发明实施例在CPU执行进程造成访问远程内存的频率大于访问本地内存的频率时,通过将进程与本地内存联合迁移到远程内存所在的CPU,避免了CPU频繁访问远程内存,提高了NUMA系统性能。
[0134] 图9为本发明另一实施例提供的源CPU的结构图。本发明实施例提供的源CPU可以执行负载均衡方法实施例提供的处理流程,在上述实施例的基础上,迁移模块82还用于若所述远程内存依赖性大于所述本地内存依赖性,且所述判断模块81判断获知所述第二内存是小于所述预设阈值的独占内存,则将所述第二内存迁移到源CPU本地。
[0135] 迁移模块82具体用于若所述判断模块81判断获知所述目标CPU的负载小于所述源CPU的负载时,将所述第一进程与所述第一内存联合迁移到所述目标CPU;源CPU80还包括触发模块83,触发模块83用于若所述判断模块81判断获知所述目标CPU的负载大于所述源CPU的负载时,触发所述目标CPU执行进程迁出,所述迁移模块82再将所述第一进程与所述第一内存联合迁移到所述目标CPU;其中,所述目标CPU的负载用于标识所述目标CPU中运行状态的进程数量或者所述目标CPU中多个进程分别对应的远程内存依赖性和本地内存依赖性之和,所述源CPU的负载用于标识所述源CPU中运行状态的进程数量或者所述源CPU中多个进程分别对应的远程内存依赖性和本地内存依赖性之和。
[0136] 所述触发模块83具体用于触发所述目标CPU选出所述目标CPU中远程内存依赖性和本地内存依赖性之和最小的第二进程,并将所述第二进程和所述目标CPU中与所述第二进程对应的内存联合迁移到最空闲的CPU。
[0137] 本发明实施例通过判断远程内存的大小决定源CPU进行联合迁移或只迁移远程内存,通过对目标CPU、源CPU的负载大小比较,决定目标CPU是否需要释放进程和对应的内存,进一步提高了NUMA系统的性能。
[0138] 在上述实施例的基础上,迁移模块82还用于所述源CPU中运行状态的进程数量减少,且NUMA系统中运行状态的进程总数大于CPU总数时,从负载最高的CPU中将第三进程和第三内存联合迁移到本地,所述第三进程是所述负载最高的CPU中远程内存依赖性和本地内存依赖性之和最小的进程,所述第三内存是所述负载最高的CPU中与所述第三进程对应的内存,所述NUMA系统包括所述源CPU、所述目标CPU、所述最空闲的CPU和所述负载最高的CPU。
[0139] 本发明实施例当源CPU中运行状态的进程数量减少时,通过从负载最高的CPU中将迁移代价最小的进程和其对应的内存联合迁移到源CPU本地,提高了NUMA系统资源利用率。
[0140] 图10为本发明实施例提供的目标CPU的结构图。本发明实施例提供的目标CPU可以执行负载均衡方法实施例提供的处理流程,如图10所示,目标CPU100包括接收模块101和执行模块102,其中,接收模块101用于接收第一进程与第一内存,所述第一进程与所述第一内存是所述源CPU判断获知所述第一进程对应的远程内存依赖性大于本地内存依赖性,且第二内存是非独占内存或者大于预设阈值的独占内存时向所述目标CPU联合迁移的,其中,所述第一进程是所述源CPU执行的运行状态的进程,所述本地内存依赖性用于标识所述源CPU执行所述第一进程时访问第一内存的频率,所述第一内存是所述源CPU中与所述第一进程对应的内存,所述远程内存依赖性用于标识所述源CPU执行所述第一进程时访问第二内存的频率,所述第二内存是所述目标CPU中与所述第一进程对应的内存;执行模块102用于依据所述第一内存和所述第二内存执行所述第一进程。
[0141] 本发明实施例提供的目标CPU可以具体用于执行上述图3所提供的方法实施例,具体功能此处不再赘述。
[0142] 本发明实施例在CPU执行进程造成访问远程内存的频率大于访问本地内存的频率时,通过将进程与本地内存联合迁移到远程内存所在的CPU,避免了CPU频繁访问远程内存,提高了NUMA系统性能。
[0143] 在上述实施例的基础上,接收模块101具体用于若所述目标CPU的负载小于所述源CPU的负载时,接收所述第一进程与所述第一内存;若所述目标CPU的负载大于所述源CPU的负载时,所述执行模块102还用于执行进程迁出,所述执行模块102执行进程迁出后所述接收模块101接收所述第一进程与所述第一内存;其中,所述目标CPU的负载用于标识所述目标CPU中运行状态的进程数量或者所述目标CPU中多个进程分别对应的远程内存依赖性和本地内存依赖性之和,所述源CPU的负载用于标识所述源CPU中运行状态的进程数量或者所述源CPU中多个进程分别对应的远程内存依赖性和本地内存依赖性之和。
[0144] 执行模块102具体用于选出所述目标CPU中远程内存依赖性和本地内存依赖性之和最小的第二进程,并将所述第二进程和所述目标CPU中与所述第二进程对应的内存联合迁移到最空闲的CPU。
[0145] 本发明实施例通过对目标CPU、源CPU的负载大小比较,决定目标CPU是否需要释放进程和对应的内存,进一步提高了NUMA系统的性能。
[0146] 图11为本发明另一实施例提供的目标CPU的结构图。本发明实施例提供的目标CPU可以执行负载均衡方法实施例提供的处理流程,如图11所示,在上述实施例的基础上,目标CPU100还包括迁移模块111,迁移模块111用于所述目标CPU中运行状态的进程数量减少,且NUMA系统中运行状态的进程总数大于CPU总数时,从负载最高的CPU中将第三进程和第三内存联合迁移到本地,所述第三进程是所述负载最高的CPU中远程内存依赖性和本地内存依赖性之和最小的进程,所述第三内存是所述负载最高的CPU中与所述第三进程对应的内存,所述NUMA系统包括所述源CPU、所述目标CPU、所述最空闲的CPU和所述负载最高的CPU。
[0147] 本发明实施例当目的CPU中运行状态的进程数量减少时,通过从负载最高的CPU中将迁移代价最小的进程和其对应的内存联合迁移到目的CPU本地,提高了NUMA系统资源利用率。
[0148] 图12为本发明另一实施例提供的源CPU的结构图。本发明实施例提供的源CPU可以执行负载均衡方法实施例提供的处理流程,如图12所示,源CPU120包括判断模块121和迁移模块122,其中,判断模块121用于判断执行第一进程是否需要访问IO源,所述第一进程是所述源CPU中运行状态的进程,所述IO源在目标CPU中;迁移模块122用于若所述源CPU需要访问所述IO源时,将所述第一进程与第一内存联合迁移到所述目标CPU,以使所述目标CPU依据所述第一内存和所述IO源执行所述第一进程,所述第一内存是所述源CPU中与所述第一进程对应的内存。
[0149] 本发明实施例提供的源CPU可以具体用于执行上述图4所提供的方法实施例,具体功能此处不再赘述。
[0150] 本发明实施例在执行进程需要访问远程的IO源时,将源CPU中的进程和其对应的内存联合迁移到目标CPU,避免源CPU频繁访问远程的IO源,提高了NUMA系统性能。
[0151] 图13为本发明另一实施例提供的目标CPU的结构图。本发明实施例提供的目标CPU可以执行负载均衡方法实施例提供的处理流程,如图13所示,目标CPU130包括接收模块131和执行模块132,其中,接收模块131用于接收第一进程与第一内存,所述第一进程与所述第一内存是源CPU判断获知执行所述第一进程需要访问IO源时向所述目标CPU联合迁移的,所述第一进程是所述源CPU中运行状态的进程,所述第一内存是所述源CPU中与所述第一进程对应的内存,所述IO源在所述目标CPU中;执行模块132用于依据所述第一内存和所述IO源执行所述第一进程。
[0152] 本发明实施例提供的目标CPU可以具体用于执行上述图5所提供的方法实施例,具体功能此处不再赘述。
[0153] 本发明实施例在执行进程需要访问远程的IO源时,将源CPU中的进程和其对应的内存联合迁移到目标CPU,避免源CPU频繁访问远程的IO源,提高了NUMA系统性能。
[0154] 图14为本发明另一实施例提供的负载均衡系统的结构图。本发明实施例提供的负载均衡系统可以执行负载均衡方法实施例提供的处理流程,如图14所示,负载均衡系统140包括上述实施例所述的源CPU80和上述实施例所述的目标CPU100。
[0155] 可选的,该负载均衡系统140包括上述实施例所述的源CPU120和上述实施例所述的目标CPU130,鉴于此时该负载均衡系统140和图14描述的负载均衡系统结构类似,因此,没有给出此种情况下该负载均衡系统140的结构附图。
[0156] 本发明实施例提供的负载均衡系统可以执行负载均衡方法实施例提供的处理流程。
[0157] 综上所述,本发明实施例在CPU执行进程造成访问远程内存的频率大于访问本地内存的频率时,通过将进程与本地内存联合迁移到远程内存所在的CPU,避免了CPU频繁访问远程内存,提高了NUMA系统性能;通过判断远程内存的大小决定源CPU进行联合迁移或只迁移远程内存,通过对目标CPU、源CPU的负载大小比较,决定目标CPU是否需要释放进程和对应的内存,进一步提高了NUMA系统的性能;当源CPU中运行状态的进程数量减少时,通过从负载最高的CPU中将迁移代价最小的进程和其对应的内存联合迁移到源CPU本地,提高了NUMA系统资源利用率;采用事件触发的方式调整多CPU之间负载均衡,在一定程度上节省了系统资源,进一步提高了NUMA系统的性能。
[0158] 在本发明所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
[0159] 所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
[0160] 另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。
[0161] 上述以软件功能单元的形式实现的集成的单元,可以存储在一个计算机可读取存储介质中。上述软件功能单元存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(processor)执行本发明各个实施例所述方法的部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
[0162] 本领域技术人员可以清楚地了解到,为描述的方便和简洁,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。上述描述的装置的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
[0163] 最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈