掌桥专利:专业的专利平台
掌桥专利
首页

一种操作系统中多进程动态绑定cpu核的方法

文献发布时间:2024-04-18 19:59:31


一种操作系统中多进程动态绑定cpu核的方法

技术领域

本发明属于cpu核绑定方法技术领域,尤其涉及一种操作系统中多进程动态绑定cpu核的方法及系统。

背景技术

在当前的应用实践中,虽然也有一些方法可用于实现对某个任务进行cpu绑核,但存在以下不足:

1.任务之间绑定的cpu核没有完全隔离,虽然某个任务固定在指定的cpu集上执行,解决了cpu亲和性的问题,但是仍然存在多个任务复用同一个cpu的情况。

2.任务分配的cpu集是固定的,当某些任务未启动时,繁忙的任务仍然只能在固定的cpu集上执行,从而造成了某些cpu繁忙,某些cpu空闲。

3.任务绑定的cpu集合不在同一个numa节点上,导致内存访问时延增大。

发明内容

为了克服现有cpu核绑定方法存在的上述缺陷,本发明提出了一种新的操作系统中多进程动态绑定cpu核的方法,通过本方法可对用户指定的任务集进行动态cpu绑核,充分利用每个cpu的计算力。

具体地,本发明提供了一种操作系统中多进程动态绑定cpu核的方法,本方法包括:

S1.在操作系统的配置中,对系统中期望进行绑核的cpu进行隔离;

S2.将期望绑核的任务信息注册到系统中,同时记录到配置文件file1中;

S3.启动后台绑核任务,后台绑核任务每隔1分钟执行一次,直至完成所有正在运行的任务进程的cpu核绑定。

进一步地,本发明操作系统中多进程动态绑定cpu核的方法步骤S1中所述的对系统中期望进行绑核的cpu进行隔离,针对linux系统,隔离步骤如下:

S11.打开/etc/default/grub文件,在GRUB_CMDLINE_LINUX参数中,增加isolcpus=x1-x2;其中,x1是起始cpu序号,x2是结束cpu序号,重启系统后生效;

S12.重启系统后,系统进程和用户进程均不会在序号为x1-x2的cpu上执行,序号为x1-x2的cpu将处于空闲状态。

进一步地,本发明操作系统中多进程动态绑定cpu核的方法步骤S2中所述的期望绑核的任务信息包括任务名称和该任务期望绑核的cpu数量。

进一步地,本发明操作系统中多进程动态绑定cpu核的方法步骤S3中所述的后台绑核任务,包括以下过程:

S31.获取通过步骤S2注册到系统中的任务列表,检查各任务是否正在执行,得到一个期望绑核且当前正在执行的任务列表ListA,解析file1,将期望绑核的任务信息加入ListA中;

S32.从系统中获取步骤S1隔离的cpu集合ListB,根据各cpu核所属的numa节点进行分组,得到MapA;

S33.后台进程遍历ListA,计算ListA中每个任务可分配的cpu核数量;

S34.为每个正在运行的任务进程选择相应数量的cpu核,然后执行绑核任务。

进一步地,本发明操作系统中多进程动态绑定cpu核的方法步骤S31中所述的期望绑核的任务信息包括任务名称和该任务期望绑核的cpu数量。

进一步地,本发明操作系统中多进程动态绑定cpu核的方法步骤S32中所述的根据各cpu核所属的numa节点进行分组,分组的key是该numa节点的id,value是该numa节点下隔离的cpu集合。

进一步地,本发明操作系统中多进程动态绑定cpu核的方法步骤S33中所述的计算ListA中每个任务可分配的cpu核数量,计算方式如下:

任务x1可分配的cpu核数量=隔离的cpu数量*(任务x1期望的cpu数量/(任务x1期望的cpu数量+…+任务xn期望的cpu数量))。

进一步地,本发明操作系统中多进程动态绑定cpu核的方法步骤S34中所述的执行绑核任务,还包括:

根据MapA,每个任务分配的cpu集合都在同一个numa节点下,选择cpu核后,将GIAcpu核从MapA中删除,然后通过taskset命令将cpu核绑定到该任务进程上。

另外,本发明还提供了一种计算机可读存储介质,所述存储介质上存储有计算机程序,所述程序被处理器执行时实现上述的操作系统中多进程动态绑定cpu核的方法的步骤。

另一方面,本发明还提供了一种操作系统中多进程动态绑定cpu核的系统,本系统包括:

隔离模块:用于在操作系统的配置中,对系统中期望进行绑核的cpu进行隔离;

注册模块:用于将期望绑核的任务信息注册到系统中,同时记录到配置文件file1中;

绑核模块:用于执行后台绑核任务,后台绑核任务每隔1分钟执行一次,直至完成所有正在运行的任务进程的cpu核绑定。

各模块按照上述的操作系统中多进程动态绑定cpu核的方法实施运行。

综上,本发明操作系统中多进程动态绑定cpu核的方法具有以下优点:

(1)本发明方法能够保证某个cpu被某个任务进程所独占,避免了多个任务复用同一个cpu的情况。

(2)本发明方法能够根据任务数量,动态调整任务绑定的cpu核,保证了cpu核的充分利用。

(3)本发明方法保证了一个任务进程绑定的cpu核都处在同一个numa节点上,缩短了内存访问时延。

附图说明

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

图1为本发明方法的实施流程示意图。

图2为本发明系统的结构组成示意图。

具体实施方式

为使本发明的目的、技术方案和优点更加清楚,下面将结合具体实施例及相应的附图对本发明的技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本发明一部分实施例,而不是全部的实施例,本发明还可以通过另外不同的具体实施方式加以实施或应用,本说明书中的各项细节也可以基于不同观点与应用,在没有背离本发明的精神下进行各种修饰或改变。

同时,应理解,本发明的保护范围并不局限于下述特定的具体实施方案;还应当理解,本发明实施例中使用的术语是为了描述特定的具体实施方案,而不是为了限制本发明的保护范围。

实施例1:一种操作系统中多进程动态绑定cpu核的方法

如图1所示,本方法包括下述步骤:

步骤1.在操作系统的配置中,将后续用于指定任务的cpu集隔离出来;隔离步骤如下(以linux为例):

a.打开/etc/default/grub文件,在GRUB_CMDLINE_LINUX参数中,增加isolcpus=x1-x2;其中,x1是起始cpu序号,x2是结束cpu序号,然后重启系统后生效;

b.重启系统后,系统进程和用户进程不会到步骤a中隔离的cpu上执行,隔离cpu将处于空闲状态。

步骤2.将需要绑核的任务,通过命令注册到系统中,记录到配置文件file1中,命令包括任务名称、该任务期望的cpu数量。

步骤3.启动后台任务,该后台任务每隔1分钟执行一次,该后台任务负责的工作是:

a.获取通过步骤2已经注册到系统中的任务列表,检查各任务是否正在执行,得出一个需要绑核且当前正在执行的任务列表ListA,解析file1,将期望绑核的任务信息(任务名称和该任务期望的cpu数量)加入ListA中;

b.从系统中获取已隔离的cpu集合ListB,根据cpu核所属的numa节点进行分组,分组的key是numa节点的id,value是该numa下隔离的cpu集合,从而得到MapA;

c.后台进程遍历ListA,计算每个任务可分配的cpu(核)数量,计算方式如下:

任务x1可分配的cpu数量=隔离的cpu数量*(任务x1期望的cpu数量/(任务x1期望的cpu数量+…+任务xn期望的cpu数量));

d.为每个正在运行的任务进程选择相应数量的cpu核(cpu核数量通过步骤c得出),然后执行绑核;

根据MapA,每个任务分配的cpu集合尽量都在同一个numa节点下,选择cpu核后,将GIAcpu核从MapA中删除,然后通过taskset命令将cpu核绑定到该进程上。

实施例2:一种操作系统中多进程动态绑定cpu核的系统

如图2所示,本系统包括下述模块:

隔离模块:用于在操作系统的配置中,对系统中期望进行绑核的cpu进行隔离;

注册模块:用于将期望绑核的任务信息注册到系统中,同时记录到配置文件file1中;

绑核模块:用于执行后台绑核任务,后台绑核任务每隔1分钟执行一次,直至完成所有正在运行的任务进程的cpu核绑定。

以上各模块按照实施例1所述的操作系统中多进程动态绑定cpu核的方法实施运行。

以上所述,仅是本发明的较佳实施例而已,并非对本发明作任何形式上的限制,任何熟悉本专业的技术人员,在不脱离本发明技术方案范围内,当可利用上述揭示的技术内容作出些许更动或修饰获得等同变化的等效实施例,但凡是未脱离本发明技术方案的内容,依据本发明的技术实质对以上实施例所作的任何简单修改、等同变化与修饰,均应包含在本发明的权利要求保护范围之内。

相关技术
  • 一种基于互联网的协同办公系统
  • 一种高校协同办公系统
  • 一种高校教学评估方法及基于边缘智能的高校教学评估系统
技术分类

06120116520136