一种多处理器调度优化方法与系统与流程

allin2023-04-09  125



1.本发明涉及计算机领域,尤其涉及一种多处理器调度优化方法与系统。


背景技术:

2.计算机应用业务的快速发展对处理能力的需求日益增强,计算机平台的多处理器应用已经很普遍,将多个处理器设置在同一主板上,多个处理器共同工作,能大幅度提高应用请求的处理速度。
3.多个处理器之间必然需要进行数据交互。由于现有的多路服务器中处理器之间的传输带宽相比于处理器内部的带宽较窄,因此,在多个处理器之间进行数据交互的速率较慢,进而影响了整个多路服务器的处理速度,不能发挥多个处理器的优势。此外,将一个应用与处理器进行随机绑定的方式,虽然能够避免处理器之间的数据交互过多的问题,但缺乏合适的动态调度机制,使得处理器的实际应用情况不能适应实际应用环境的变化。


技术实现要素:

4.针对上述现有技术中存在的缺陷,本发明提供一种多处理器调度优化方法,能够在满足处理器与特定应用进行映射匹配,并能根据实际使用情况,动态调整匹配关系。
5.所述方法包括以下步骤:步骤s1,对当前多处理器环境中各个处理器进行编号;步骤s2,当一个新进程启动时用以下方式为其分配处理器:在当前多处理器环境对应的操作系统中向处理器调度数据表增加一条新增记录;其中所述调度数据表中包括如下字段:pid,pu_idx,bind_duration,operate_total,operate_latest;其中pid表示进程id,标识正在运行的进程的pid,其作为表的唯一索引字段;pu_idx表示处理器编号,是步骤s1中某一处理器的编号,表示pid代表的进程的任务将交由pu_idx代表的处理器执行;bind_duration表示绑定时长,是pid代表的进程与pu_idx代表的处理器绑定的持续时间,单位为秒;operate_total表示累计运算次数,是bind_duration代表的持续时间内pu_idx代表的处理器在pid代表的进程上的运算执行次数;operate_latest表示pu_idx代表的处理器在最近一个时间周期t1内在pid代表的进程上的运算执行次数;新记录的pu_idx确定方式为:以pu_idx为索引,计算当前处理器调度数据表所有记录中具有相同pu_idx的记录的operate_latest之和op_sum,对于实际存在但未出现在处理器调度数据表中的处理器编号,对应处理器编号的operate_latest记为0,取和值op_sum最小的pu_idx作为待新增记录的pu_idx,如果有多个处理器编号对应的和值op_sum相等且为最小,则在这多个处理器中随机取用一个处理器编号值作为待新增记录的pu_idx;新增记录的bind_duration,operate_total,operate_latest初始值设置为0;步骤s3,当有进程任务时,查找处理器调度数据表中该进程pid对应的记录,获取记录对应的处理器编号,将进程任务交给该编号的处理器执行;
步骤s4,以t1为周期统计处理器调度数据表中每个pid对应的进程的数据情况,更新bind_duration,operate_total,operate_latest字段信息。
6.上述方法的步骤s3中,当所述处理器调度数据表中没有找到对应的pid记录时,则根据处理器调度数据表的增加新记录的规则直接向处理器调度数据表中增加一条新的记录;当有应用进程结束时,删除处理器调度数据表中与应用进程pid对应的记录。
7.每隔一个时间周期t2,统计所述处理器调度数据表中当前每条记录的operate_total/bind_duration的值,针对该值与预设第一阈值相比较,删除小于第一阈值的记录,以便清除任务量小的闲置进程对处理器调度的影响。
8.时间周期t1的单位为秒,t1取5以下的正整数值。
9.时间周期t2的单位为秒,t2取t1的正整数倍数值。
10.上述方法的步骤s2中,以pu_idx为索引,当前处理器调度数据表所有记录中具有相同pu_idx的记录的operate_latest之和op_sum,具体包括,在处理器调度数据表每条记录中,先计算的值,如果wave的值大于第二阈值或者小于第三阈值,则将该条记录的operate_latest修正为,然后计算和值op_sum,如果wave的值小于等于第二阈值且大于等于第三阈值,则不必修正operate_latest。
11.所述第二阈值为10以上的正整数,第三阈值为第二阈值的倒数。
12.所述处理器调度数据表的生命期与操作系统运行的生命期同步。
13.所述处理器调度数据表的增删改查方法在操作系统的内核态执行。
14.本发明还提供了一种多处理器调度优化系统,包括多处理器环境,运行于多处理器环境下的操作系统,操作系统运行时对启动的进程进行任务调度管理,通过处理器调度数据表动态管理进程与处理器的调用绑定关系,进而实现如前述任一方法的步骤。
15.本发明还提供了一种计算机可读储存介质,所述计算机可读存储介质上存储有程序代码,该程序代码被处理器运行时执行前述任一方法的步骤。
16.本发明的优点在于:通过设置和维护处理器调度数据表,能够在满足处理器与特定应用进行映射匹配,并能根据实际使用情况,动态调整匹配关系。
附图说明
17.通过参考附图阅读下文的详细描述,本公开示例性实施方式的上述以及其他目的、特征和优点将变得易于理解。在附图中,以示例性而非限制性的方式示出了本公开的若干实施方式,并且相同或对应的标号表示相同或对应的部分,其中:图1是示出根据本发明实施例的一种多处理器调度优化方法流程图;以及图2是示出根据本发明实施例的一种多处理器调度优化系统的示意图。
具体实施方式
18.为了使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明作进一步地详细描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
19.在本发明实施例中使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本发明。在本发明实施例和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义,“多种”一般包含至少两种。
20.应当理解,尽管在本发明实施例中可能采用术语第一、第二、第三等来描述
……
,但这些
……
不应限于这些术语。这些术语仅用来将
……
区分开。例如,在不脱离本发明实施例范围的情况下,第一
……
也可以被称为第二
……
,类似地,第二
……
也可以被称为第一
……

21.应当理解,本文中使用的术语“和/或”仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,a和/或b,可以表示:单独存在a,同时存在a和b,单独存在b这三种情况。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系。
22.取决于语境,如在此所使用的词语“如果”、“若”可以被解释成为“在
……
时”或“当
……
时”或“响应于确定”或“响应于检测”。类似地,取决于语境,短语“如果确定”或“如果检测(陈述的条件或事件)”可以被解释成为“当确定时”或“响应于确定”或“当检测(陈述的条件或事件)时”或“响应于检测(陈述的条件或事件)”。
23.还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的商品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种商品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括所述要素的商品或者装置中还存在另外的相同要素。
24.下面结合附图详细说明本发明的可选实施例。
25.实施例一、本发明的方法应用环境可以是常规的pc硬件平台,也可以是具备多处理器环境的各类嵌入式硬件平台。
26.图1是本发明的多处理器调度方法流程图,如图1所示,所述方法包括:步骤s1,对当前多处理器环境中各个处理器进行编号;步骤s2,当一个新进程启动时用以下方式为其分配处理器:在当前多处理器环境对应的操作系统中向处理器调度数据表增加一条新增记录;其中所述调度数据表中包括如下字段:pid,pu_idx,bind_duration,operate_total,operate_latest;其中pid表示进程id,标识正在运行的进程的pid,其作为表的唯一索引字段;pu_idx表示处理器编号,是步骤s1中某一处理器的编号,表示pid代表的进程的任务将交由pu_idx代表的处理器执行;bind_duration表示绑定时长,是pid代表的进程与pu_idx代表的处理器绑定的持续时间,单位为秒;operate_total表示累计运算次数,是bind_duration代表的持续时间内pu_idx代表的处理器在pid代表的进程上的运算执行次数;operate_latest表示pu_idx代表的处理器在最近一个时间周期t1内在pid代表的进程上的
运算执行次数;新记录的pu_idx确定方式为:以pu_idx为索引,计算当前处理器调度数据表所有记录中具有相同pu_idx的记录的operate_latest之和op_sum,对于实际存在但未出现在处理器调度数据表中的处理器编号,对应处理器编号的operate_latest记为0,取和值op_sum最小的pu_idx作为待新增记录的pu_idx,如果有多个处理器编号对应的和值op_sum相等且为最小,则在这多个处理器中随机取用一个处理器编号值作为待新增记录的pu_idx;新增记录的bind_duration,operate_total,operate_latest初始值设置为0;步骤s3,当有进程任务时,查找处理器调度数据表中该进程pid对应的记录,获取记录对应的处理器编号,将进程任务交给该编号的处理器执行;步骤s4,以t1为周期统计处理器调度数据表中每个pid对应的进程的数据情况,更新bind_duration,operate_total,operate_latest字段信息。
27.上述方法的步骤s3中,当所述处理器调度数据表中没有找到对应的pid记录时,则根据处理器调度数据表的增加新记录的规则直接向处理器调度数据表中增加一条新的记录;由于处理器调度数据表是动态更新的,某个闲置进程可能由于一段时间内任务量较少而被清理出处理器调度数据表,当任务量变大时会被重新加入处理器调度数据表。
28.实施例二、当有新的应用进程启动时,根据所述处理器调度数据表的数据新增规则向处理器调度数据表插入一个新的记录;当有应用进程结束时,删除处理器调度数据表中与应用进程pid对应的记录。
29.也就是说,每个活动的应用进程,根据进程pid都能在处理器调度数据表中找到对应的表记录,进而获取处理器编号,将任务分派给处理器编号对应的处理器处理。
30.而处理器与进程之间的关系不是固定的,主要体现在以下2个方面:一是进程启动时,如果当前处理器调度数据表为空,则则随机取用一个处理器与进程绑定;如果非空,则统计当前表记录中各pu_idx相同的所有记录的operate_latest之和,取和值最小的pu_idx作为目标处理器与进程绑定;二是每隔一个时间周期t2,统计当前处理器调度数据表中每条记录的operate_total/bind_duration的值,针对该值与预设第一阈值相比较,删除小于第一阈值的记录,以便清除任务量小的闲置进程对处理器调度的影响。
31.当该记录被删除后,此时,虽然进程还存在,但由于其任务活跃度太低使得其与处理器的绑定关系也被删除了,这样做的好处是避免某个编号的处理器被过多的进程绑定导致bind_duration,operate_total字段的数据影响其它活跃进程的调度。
32.时间周期t1单位为秒,t1取5以下的正整数值。时间周期t2单位为秒,t2取t1的正整数倍数值。
33.每隔一个时间周期t2,统计所述处理器调度数据表中当前每条记录的operate_total/bind_duration的值,针对该值与预设第一阈值相比较,删除小于第一阈值的记录,以便清除任务量小的闲置进程对处理器调度的影响。
34.时间周期t2的单位为秒,t2取t1的正整数倍数值。
35.比如,有4个处理器,当前处理器调度数据表有4个应用进程对应的记录,具体数据
如表1所示:表1此时,如果有新的应用进程启动,则根据处理器调度数据表的数据新增规则,统计当前表记录中各pu_idx相同的所有记录的operate_latest之和,分别是:pu_idx=1对应为21100;pu_idx=2对应为9870;pu_idx=3对应为5890;pu_idx=4对应为0;因此新进程选取的处理器编号为和值最小的0对应的4。
36.此时,如果进程7796有任务需要执行,则根据pid=7796的记录,得到其处理器编号为2,即交给编号为2的处理器执行任务。
37.此时,如果每隔1s更新一次处理器调度数据表,每隔5s统计历史运算负荷情况,则表1中数据当前的历史负荷为:pid=3217对应为28999855/1629=17802;pid=5782对应为2837989/278=10208;pid=7796对应为18293782/2698=6803;pid=8759对应为89752/879=102;根据历史负荷数据,假设预设活跃指数第一阈值为1000,则由于pid=8759对应记录的活跃指数102小于1000,因此删除该条记录。
38.所述处理器调度数据表的生命期与操作系统运行的生命期同步。
39.所述处理器调度数据表的增删改查方法在操作系统的内核态执行。
40.实施例三考虑到在有的线程运行当中可能会出现突然的运算峰值或者谷值,此时用其operate_latest来代表该处理器的负荷程度从长期来看就是不全面的。因此,该实施例在此前技术方案的基础上作了相应改进,考虑在operate_latest对应的t1之前的处理器负荷情况,以较长的统计周期对此刻的波峰波谷进行平滑从而获得考虑先验知识下对operate_latest进行修正后的修正值。
41.如实施例一或二的步骤s2中,以pu_idx为索引,当前处理器调度数据表所有记录中具有相同pu_idx的记录的operate_latest之和op_sum,具体包括,在处理器调度数据表
每条记录中,先计算的值,如果wave的值大于第二阈值或者小于第三阈值,则将该条记录的operate_latest修正为,然后计算和值op_sum,如果wave的值小于等于第二阈值且大于等于第三阈值,则不必修正operate_latest。
42.所述第二阈值为10以上的正整数,第三阈值为第二阈值的倒数,第二阈值也可设置为20、50或100。
43.实施例四如图2所示,本发明还提出了一种多处理器调度优化系统,其特征在于,包括多处理器环境,运行于多处理器环境下的操作系统,操作系统运行时对启动的进程进行任务调度管理,通过处理器调度数据表动态管理进程与处理器的调用绑定关系,进而实现如实施例1或2中方法的步骤。
44.一个进程在某个处理器上运行时,会在该处理器的缓存中维护许多状态。后续该进程在相同处理器上运行时,由于缓存中的数据而执行得更快。相反,在不同的处理器上执行,会由于需要重新加载数据而很慢。因此,多处理器环境下的系统运行时,通过动态调度让特定进程尽量使用同一处理器执行任务,有利于提高处理器执行效率。本实施例中的多处理器调度优化系统可以应用于不同的硬件平台,只要满足多处理器底层硬件框架和具备上层应用系统。
45.实施例五、本公开实施例提供了一种非易失性计算机存储介质,所述计算机存储介质存储有计算机可执行指令,该计算机可执行指令可执行如上实施例所述的方法步骤。
46.需要说明的是,本公开上述的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、光纤、便携式紧凑磁盘只读存储器(cd-rom)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本公开中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本公开中,计算机可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读信号介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:电线、光缆、rf(射频)等等,或者上述的任意合适的组合。
47.上述计算机可读介质可以是上述电子设备中所包含的;也可以是单独存在,而未装配入该电子设备中。
48.可以以一种或多种程序设计语言或其组合来编写用于执行本公开的操作的计算机程序代码,上述程序设计语言包括面向对象的程序设计语言—诸如java、smalltalk、c++,还包括常规的过程式程序设计语言—诸如“c”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(an)或广域网(wan)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
49.附图中的流程图和框图,图示了按照本公开各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,该模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
50.描述于本公开实施例中所涉及到的单元可以通过软件的方式实现,也可以通过硬件的方式来实现。其中,单元的名称在某种情况下并不构成对该单元本身的限定。
51.以上介绍了本发明的较佳实施方式,旨在使得本发明的精神更加清楚和便于理解,并不是为了限制本发明,凡在本发明的精神和原则之内,所做的修改、替换、改进,均应包含在本发明所附的权利要求概括的保护范围之内。

技术特征:
1.一种多处理器调度优化方法,其特征在于,包括如下步骤:步骤s1,对当前多处理器环境中各个处理器进行编号;步骤s2,当一个新进程启动时用以下方式为其分配处理器:在当前多处理器环境对应的操作系统中向处理器调度数据表增加一条新增记录;其中所述调度数据表中包括如下字段:pid,pu_idx,bind_duration,operate_total,operate_latest;其中pid表示进程id,标识正在运行的进程的pid,其作为表的唯一索引字段;pu_idx表示处理器编号,是步骤s1中某一处理器的编号,表示pid代表的进程的任务将交由pu_idx代表的处理器执行;bind_duration表示绑定时长,是pid代表的进程与pu_idx代表的处理器绑定的持续时间,单位为秒;operate_total表示累计运算次数,是bind_duration代表的持续时间内pu_idx代表的处理器在pid代表的进程上的运算执行次数;operate_latest表示pu_idx代表的处理器在最近一个时间周期t1内在pid代表的进程上的运算执行次数;新记录的pu_idx确定方式为:以pu_idx为索引,计算当前处理器调度数据表所有记录中具有相同pu_idx的记录的operate_latest之和op_sum,对于实际存在但未出现在处理器调度数据表中的处理器编号,对应处理器编号的operate_latest记为0,取和值op_sum最小的pu_idx作为待新增记录的pu_idx,如果有多个处理器编号对应的和值op_sum相等且为最小,则在这多个处理器中随机取用一个处理器编号值作为待新增记录的pu_idx;新增记录的bind_duration,operate_total,operate_latest初始值设置为0;步骤s3,当有进程任务时,查找处理器调度数据表中该进程pid对应的记录,获取记录对应的处理器编号,将进程任务交给该编号的处理器执行;步骤s4,以t1为周期统计处理器调度数据表中每个pid对应的进程的数据情况,更新bind_duration,operate_total,operate_latest字段信息。2.根据权利要求1所述的多处理器调度优化方法,其特征在于,步骤s3中,当所述处理器调度数据表中没有找到对应的pid记录时,则根据处理器调度数据表的增加新记录的规则直接向处理器调度数据表中增加一条新的记录。3.根据权利要求1所述的多处理器调度优化方法,其特征在于,当有应用进程结束时,删除处理器调度数据表中与应用进程pid对应的记录。4.根据权利要求1所述的多处理器调度优化方法,其特征在于,每隔一个时间周期t2,统计所述处理器调度数据表中当前每条记录的operate_total/bind_duration的值,针对该值与预设第一阈值相比较,删除小于第一阈值的记录,以便清除任务量小的闲置进程对处理器调度的影响。5.根据权利要求4所述的多处理器调度优化方法,其特征在于,时间周期t1的单位为秒,t1取5以下的正整数值。6.根据权利要求4所述的多处理器调度优化方法,其特征在于,时间周期t2的单位为秒,t2取t1的正整数倍数值。7.根据权利要求1所述的多处理器调度优化方法,其特征在于,步骤s2中,以pu_idx为索引,当前处理器调度数据表所有记录中具有相同pu_idx的记录的operate_latest之和op_sum,具体包括,在处理器调度数据表每条记录中,先计算
的值,如果wave的值大于第二阈值或者小于第三阈值,则将该条记录的operate_latest修正为,然后计算和值op_sum,如果wave的值小于等于第二阈值且大于等于第三阈值,则不必修正operate_latest。8.根据权利要求7所述的多处理器调度优化方法,其特征在于,所述第二阈值为10以上的正整数,第三阈值为第二阈值的倒数。9.根据权利要求1所述的多处理器调度优化方法,其特征在于,所述处理器调度数据表的生命期与操作系统运行的生命期同步。10.根据权利要求1所述的多处理器调度优化方法,其特征在于,所述处理器调度数据表的增删改查方法在操作系统的内核态执行。11.一种多处理器调度优化系统,其特征在于,包括多处理器环境,运行于多处理器环境下的操作系统,操作系统运行时对启动的进程进行任务调度管理,通过处理器调度数据表动态管理进程与处理器的调用绑定关系,进而实现如权利要求1-10任一项所述方法的步骤。12.一种计算机可读储存介质,所述计算机可读存储介质上存储有程序代码,该程序代码被处理器运行时执行权利要求1-10任一项方法的步骤。

技术总结
本发明公开了一种多处理器调度优化方法与系统,涉及计算机领域,由当前处理器环境对应的操作系统生成处理器调度数据表,当有新的应用进程启动时,根据处理器调度数据表的数据新增规则向处理器调度数据表插入新的记录,根据各处理器的运算负荷分配对应处理器,将当前应用进程的计算任务分配到记录对应的处理器执行。本方案能够解决现有技术中进程与处理器绑定不当造成的数据交互过多或者难以调整问题,通过合理有效的处理器动态调度策略,提高处理器的使用效率。处理器的使用效率。处理器的使用效率。


技术研发人员:王嘉诚 张少仲 张栩
受保护的技术使用者:中诚华隆计算机技术有限公司
技术研发日:2022.05.17
技术公布日:2022/7/5
转载请注明原文地址: https://www.8miu.com/read-9748.html

最新回复(0)