CN104657222B - 一种面向smp调度系统的优化方法 - Google Patents

一种面向smp调度系统的优化方法 Download PDF

Info

Publication number
CN104657222B
CN104657222B CN201510110212.XA CN201510110212A CN104657222B CN 104657222 B CN104657222 B CN 104657222B CN 201510110212 A CN201510110212 A CN 201510110212A CN 104657222 B CN104657222 B CN 104657222B
Authority
CN
China
Prior art keywords
transfer
cpu
index
processor
numbering
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201510110212.XA
Other languages
English (en)
Other versions
CN104657222A (zh
Inventor
周恒钊
刘璧怡
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Inspur Cloud Information Technology Co Ltd
Original Assignee
Inspur Group Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Inspur Group Co Ltd filed Critical Inspur Group Co Ltd
Priority to CN201510110212.XA priority Critical patent/CN104657222B/zh
Publication of CN104657222A publication Critical patent/CN104657222A/zh
Application granted granted Critical
Publication of CN104657222B publication Critical patent/CN104657222B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Multi Processors (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

本发明公开了一种面向SMP调度系统的优化方法,其具体实现过程为:当第一个获得转移指标的进程使用完之后,在释放转移指标的同时获取它所在的CPU编号,所述转移指标用于保护进程间共享资源;当存在等待此转移指标的队列时,就让队列中的任务记录当前CPU的编号,唤醒同样持有该转移指标的进程并将其呼唤到该处理器上来,使持有相同转移指标的进程运行在同一个处理器上。该一种面向SMP调度系统的优化方法与现有技术相比,有效提高系统性能,损耗小,对应用透明,实用性强,易于推广。

Description

一种面向SMP调度系统的优化方法
技术领域
本发明涉及处理器技术领域,具体地说是一种实用性强、面向SMP调度系统的优化方法。
背景技术
随着技术的发展,计算机科学也在不断前进,而 CPU 作为计算机最昂贵的资源,发展的速度很快,体积骤减和频率剧增,但是单核处理器的架构越来越繁琐、复杂,不仅给设计带来了相当大的困难,而且还使得 CPU 得不到最大化的使用,再加上体积变小,功耗却没有降下来,散热也成了问题,很难使得处理器的设计与实现以及频率的提升能够顺利的进行下去。
所以转向多核处理器是发展的需要。片上多核处理器CMP(Chip Multi-Processor)就是在那个关键的时刻被提出的,它在一个处理器芯片上封装了多个核心,各个核心能并行地运行各自的任务,非常接近传统的对称多处理器系统(SymmetricMultiprocessors,SMP)。多核处理器中的每个核都可视为一个独立的单元,并且它的实现起来相对容易,对以后的研发也便于扩展,并且发热也没有比单核处理器少。多核处理器在频率不变的情况下通过并行运行多个任务来实现性能的提升,也使得CPU得到了充分的利用。
但系统中的处理器增多了,在多处理器环境进行任务调度,使得系统的性能最大化变成非常关键的问题。原先,系统中只有一个处理器,进程的分配不用考虑处理器的环节,只要根据其他的标准作出判断既可,但是现在又有一个非常重要的因素加入,原先的标准就必须作出调整以适应新的架构。并且在处理器间出现某些CPU闲着、某些超载时,要进行适当的调整,让整个系统的CPU利用率最大化,使得Cache得到更多的利用。基于此,现提供一种从调度上使系统的性能最优、面向SMP调度系统的优化方法。
发明内容
本发明的技术任务是针对以上不足之处,提供一种实用性强、面向SMP调度系统的优化方法。
一种面向SMP调度系统的优化方法,其具体实现过程为:
当第一个获得转移指标的进程使用完之后,在释放转移指标的同时获取它所在的CPU编号,所述转移指标用于保护进程间共享资源;
当存在等待此转移指标的队列时,就让队列中的任务记录当前CPU的编号,唤醒同样持有该转移指标的进程并将其呼唤到该处理器上来,使持有相同转移指标的进程运行在同一个处理器上,其具体呼唤转移过程为:
进程收到输入的唤醒信号,该进程对应执行的cpu的编号为n,并将被唤醒进程的进程控制块中的属性字段赋值为n;
当本地CPU编号为n时,进程继续执行;
当本地CPU编号不为n时,在进行下次负载平衡时,把该进程转移到编号为n的CPU运行队列中,然后进程继续执行。
所述转移指标、转移进程所需要的转移函数、进程与CPU匹配时的转移阀值共同组成转移因子,其中
转移指标,用于保护进程间共享资源,并把若干个耦合度高的进程关联起来;
转移函数,用来确定任务转移的目的端,确认第一个持有转移指标的进程具体执行时的处理器,并对征用该转移指标的进程进行标记赋值,记录下要转移到的处理器;
转移阀值,用于对进程和CPU进行最佳匹配,即当要进行任务的转移时,转移函数得到的结果等于某个阀值时,就把该任务优先转移到与该转移阀值对应的CPU上执行。
所述属性字段为一个整型的属性字段cpuindex,其用于表示进程最适合运行的cpu编号,并添加到进程控制块中。
在创建进程时,cpuindex属性初始化成-1;当系统运行到某个进程,并发现该进程需要申请使用完转移指标后,释放该转移指标时,如果发现有竞争存在,就通过函数接口来获得当前的CPU编号并记录在它的cpuindex中,再把它作为参数传递给唤醒函数,让它在唤醒进程的同时把CPU的编号也一起传过去,并把被唤醒的进程的cpuindex字段设置为传递的CPU编号,释放转移指标并唤醒等待该转移指标的进程,此时,如果被唤醒的进程所在的CPU等于它的 进程控制块中的cpuindex变量,则不需要进行转移操作;否则,就把被唤醒的进程转移到编号为cpuindex的CPU上去。
当调度系统查看当前的负载状况时,如果发现有负载不平衡时,通过调用 函数进行负载平衡,该负载平衡的过程为:找到调度域中最忙的一个组,再从最忙的组中找到负载最忙的处理器,并选择其中的负载,把它们转移到本地处理器上来。
本发明的一种面向SMP调度系统的优化方法,具有以下优点:
该发明的一种面向SMP调度系统的优化方法
提出一种面向SMP调度系统的优化方法,以 Linux 内核为基础进行了源码修改和实现,通过做实验得出的结果来验证方案的正确性,能够有效提高系统性能,提高高速缓存利用率;有效提高系统性能,损耗小,对应用透明,实用性强,易于推广。
附图说明
附图1为本发明的采样流程图。
附图2为本发明的唤醒进程处理流程图。
具体实施方式
下面结合附图和具体实施例对本发明作进一步说明。
系统中的处理器增多了,在多处理器环境进行任务调度,使得系统的性能最大化变成非常关键的问题。本发明提出了一种面向SMP调度系统的优化方法,能够有效的提高高速缓存的利用率。
本发明的目的是这样实现的,为了提高系统的资源利用率和整体性能,充分利用高速缓存,在进行任务的转移时,要考虑多种要素,而标准的 Linux 内核中的 SMP在进行任务的转移时,没有对运行队列中的任务属性的不同进行区别的对待,所以要想进一步提升高速缓存的利用率,主要是通过对转移的任务进行选择,让共享资源多的进程尽量分配到同一个处理器上执行。
一种面向SMP调度系统的优化方法,在原有的内核基础上,借助FUTEX锁机制,对优化方案进行了设计,针对SMP调度系统的优化,设计了基于唤醒信号的优化方案,进一步的提升高速缓存的利用率。通过对转移的任务进行选择,让共享资源多的进程尽量分配到同一个处理器上执行。本发明设计了利用唤醒信号的反馈模块,当第一个进程获得该锁并使用完之后,在唤醒的同时也把持有该锁的其他进程呼唤到它的处理器上来。
如附图1、图2所示,其具体实现过程为:
首先对Linux内核的负载均衡调度模型进行了改进,使用四维向量<P,T,M,S>表示。其中:
P(Processor):指的是系统中的处理器;
T(Task):指的是系统的任务集;
M(Migrate):指的是系统进行转移的依据,即转移因子;
S(Strategy):指的是系统的负载均衡策略。
在选择转移的对象时,针对提升Cache利用率,需添加一个转移因子,该转移因子包括转移指标、转移函数和转移阀值,其中:
转移指标:要想让共享资源多的进程分配到一起执行,即特征是共享资源,而为了保护共享资源的安全性,在访问这些资源时要先取得保护该资源的锁,所以可以通过利用该锁来把多个耦合度高的进程关联起来,所以转移指标设置为保护进程间共享资源的锁。
转移函数:该函数的功能主要是用来确定任务转移的目的端,既然想让共享同一把锁的进程运行在同一个处理单元上,那么需要首先知道第一个持有锁的进程在哪个处理器上执行,并对征用该锁的进程进行标记赋值,记录下要转移到的处理器。
转移阀值:
结合原有调度系统的基础上,对某些进程和CPU进行最佳匹配,当要进行任务的转移时,利用各个CPU的编号作为阀值,当转移函数得到的结果等于某个阀值时,就把该任务优先转移到对应的CPU上执行。
Linux的调度系统在分配任务时没有考虑到各个任务之间的联系,如果将两个需要经常进行通信的进程分配到不同的CPU上,就在一定程度上降低了高速缓冲区的利用率,而且在进行负载平衡进行任务转移时,也需要考虑这方面的影响。
为了让持有相同锁的进程运行在同一个处理器上,当第一个获得该锁并使用完之后,在唤醒的同时也把持有该锁的进程呼唤到它的处理器上来,如附图1所示,利用唤醒信号反馈的优化方法架构图中,调度系统在第一次执行时按照原来的调度系统流程进行,但在调度完成后,开始采集一些信息,反馈模块对这些信息进行处理后,反馈给调度系统,进而影响调度系统的执行流程,从而达到优化的目的。
当第一个征用该锁的进程运行完成后,在释放锁的同时获取它所在的CPU编号,当存在等待此锁的队列时,就让队列中的任务记录当前CPU的编号,以便于将来对把该任务转移到此处理器上去执行。 因为SMP系统中的CPU是维护在一个数组中,所以只要知道数组的下标就能唯一确定该 CPU。而要标示一个进程最合适运行的 CPU,需要添加一个整型的属性字段cpuindex。因为它是标示进程的属性,所以将它添加到进程控制块task_struct中。
如附图2所示,在创建进程时,就把cpuindex属性初始化成-1。当系统运行到进程a,并发现它需要申请使用完futex锁后,当释放该锁时,如果发现有竞争存在,就通过函数接口task_cpu()来获得当前的CPU编号(数组的下标值)并记录在它的cpuindex中,再把它作为参数传递给唤醒函数,让它在唤醒进程的同时把CPU的编号也一起传过去,并把被唤醒的进程的cpuindex字段设置为传递的CPU编号,释放futex锁并唤醒等待该锁的进程。
此时,如果被唤醒的进程所在的CPU等于它的task_struct中的cpuindex 变量,则不需要进行转移操作;否则,就尽量把被唤醒的进程转移到编号为cpuindex的CPU上去。当调度系统查看当前的负载状况时,如果发现有负载不平衡时,会通过调用load_balance()进行负载平衡。首先它会找到调度域中最忙的一个组,再从最忙的组中找到负载最忙的处理器,并选择其中的一些负载,把它们转移到本地处理器上来。
上述具体实施方式仅是本发明的具体个案,本发明的专利保护范围包括但不限于上述具体实施方式,任何符合本发明的一种面向SMP调度系统的优化方法的权利要求书的且任何所述技术领域的普通技术人员对其所做的适当变化或替换,皆应落入本发明的专利保护范围。

Claims (4)

1.一种面向SMP调度系统的优化方法,其特征在于,其具体实现过程为:
当第一个获得转移指标的进程使用完之后,在释放转移指标的同时获取它所在的CPU编号,所述转移指标用于保护进程间共享资源;
当存在等待此转移指标的队列时,就让队列中的任务记录当前CPU的编号,唤醒同样持有该转移指标的进程并将其呼唤到该处理器上来,使持有相同转移指标的进程运行在同一个处理器上,其具体呼唤转移过程为:
进程收到输入的唤醒信号,该进程对应执行的cpu的编号为n,并将被唤醒进程的进程控制块中的属性字段赋值为n,所述属性字段为一个整型的属性字段cpuindex,其用于表示进程最适合运行的cpu编号,并添加到进程控制块中;
当本地CPU编号为n时,进程继续执行;
当本地CPU编号不为n时,在进行下次负载平衡时,把该进程转移到编号为n的CPU运行队列中,然后进程继续执行。
2.根据权利要求1所述的一种面向SMP调度系统的优化方法,其特征在于,所述转移指标、转移进程所需要的转移函数、进程与CPU匹配时的转移阀值共同组成转移因子,其中
转移指标,用于保护进程间共享资源,并把若干个耦合度高的进程关联起来;
转移函数,用来确定任务转移的目的端,确认第一个持有转移指标的进程具体执行时的处理器,并对征用该转移指标的进程进行标记赋值,记录下要转移到的处理器;
转移阀值,用于对进程和CPU进行最佳匹配,即当要进行任务的转移时,转移函数得到的结果等于某个阀值时,就把该任务优先转移到与该转移阀值对应的CPU上执行。
3.根据权利要求1所述的一种面向SMP调度系统的优化方法,其特征在于,在创建进程时,cpuindex属性初始化成-1;当系统运行到某个进程,并发现该进程需要申请使用完转移指标后,释放该转移指标时,如果发现有竞争存在,就通过函数接口来获得当前的CPU编号并记录在它的cpuindex中,再把它作为参数传递给唤醒函数,让它在唤醒进程的同时把CPU的编号也一起传过去,并把被唤醒的进程的cpuindex字段设置为传递的CPU编号,释放转移指标并唤醒等待该转移指标的进程,此时,如果被唤醒的进程所在的CPU等于它的 进程控制块中的cpuindex变量,则不需要进行转移操作;否则,就把被唤醒的进程转移到编号为cpuindex的CPU上去。
4.根据权利要求3所述的一种面向SMP调度系统的优化方法,其特征在于,当调度系统查看当前的负载状况时,如果发现有负载不平衡时,通过调用 函数进行负载平衡,该负载平衡的过程为:找到调度域中最忙的一个组,再从最忙的组中找到负载最忙的处理器,并选择其中的负载,把它们转移到本地处理器上来。
CN201510110212.XA 2015-03-13 2015-03-13 一种面向smp调度系统的优化方法 Active CN104657222B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201510110212.XA CN104657222B (zh) 2015-03-13 2015-03-13 一种面向smp调度系统的优化方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201510110212.XA CN104657222B (zh) 2015-03-13 2015-03-13 一种面向smp调度系统的优化方法

Publications (2)

Publication Number Publication Date
CN104657222A CN104657222A (zh) 2015-05-27
CN104657222B true CN104657222B (zh) 2017-11-21

Family

ID=53248395

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201510110212.XA Active CN104657222B (zh) 2015-03-13 2015-03-13 一种面向smp调度系统的优化方法

Country Status (1)

Country Link
CN (1) CN104657222B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107357662A (zh) * 2017-07-21 2017-11-17 郑州云海信息技术有限公司 一种服务端信息采集任务的负载均衡方法及系统
CN115617494B (zh) * 2022-12-06 2023-03-14 中科方德软件有限公司 多cpu环境下的进程调度方法、装置、电子设备和介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1268688A (zh) * 1999-03-25 2000-10-04 国际商业机器公司 异步更新共享资源的接口系统和方法
CN1910554A (zh) * 2004-02-20 2007-02-07 索尼计算机娱乐公司 多处理器系统中处理器任务迁移的方法与装置
US20080276240A1 (en) * 2007-05-04 2008-11-06 Brinda Ganesh Reordering Data Responses
CN101446910A (zh) * 2008-12-08 2009-06-03 哈尔滨工程大学 基于smp的aedf任务调度方法

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105524077B (zh) * 2015-11-18 2019-03-01 江苏康缘药业股份有限公司 银杏内酯k晶k型及制备方法和其组合物与用途

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1268688A (zh) * 1999-03-25 2000-10-04 国际商业机器公司 异步更新共享资源的接口系统和方法
CN1910554A (zh) * 2004-02-20 2007-02-07 索尼计算机娱乐公司 多处理器系统中处理器任务迁移的方法与装置
US20080276240A1 (en) * 2007-05-04 2008-11-06 Brinda Ganesh Reordering Data Responses
CN101446910A (zh) * 2008-12-08 2009-06-03 哈尔滨工程大学 基于smp的aedf任务调度方法

Also Published As

Publication number Publication date
CN104657222A (zh) 2015-05-27

Similar Documents

Publication Publication Date Title
CN103365726B (zh) 一种面向gpu集群的资源管理方法和系统
CN103516536B (zh) 基于线程数量限制的服务器业务请求并行处理方法及系统
CN102752198B (zh) 多核报文转发方法、多核处理器及网络设备
CN102446158B (zh) 多核处理器及多核处理器组
CN103646006B (zh) 一种处理器的调度方法、装置和系统
CN101779189A (zh) 并行计算机中的主动电力管理
CN103200128A (zh) 一种网络包处理的方法、装置和系统
CN104572279B (zh) 一种支持节点绑定的虚拟机动态调度方法
CN102023844A (zh) 并行处理器及其线程处理方法
CN101604264A (zh) 超级计算机的任务调度方法及系统
CN103019838A (zh) 一种基于多dsp处理器平台的分布式实时多任务操作系统
CN107943584A (zh) 批量交易请求的处理方法及装置
CN104657222B (zh) 一种面向smp调度系统的优化方法
CN105607956B (zh) 一种计算机中的任务分配方法及系统
US8532129B2 (en) Assigning work from multiple sources to multiple sinks given assignment constraints
CN103019848B (zh) 一种pci总线非向量中断实现方法
CN117971906B (zh) 一种多卡协同数据库查询方法、装置、设备及存储介质
CN105446812A (zh) 一种多任务调度配置方法
CN105653243B (zh) 一种通用图形处理器多任务并发执行的任务派发方法
EP2759927B1 (en) Apparatus and method for sharing function logic between functional units, and reconfigurable processor thereof
CN105471770B (zh) 一种基于多核处理器的报文处理方法及装置
CN104008178B (zh) 一种数据的动态加载处理方法及系统
CN111653317B (zh) 基因比对加速装置、方法及系统
CN103077081B (zh) 资源调整的方法及装置
CN106462360A (zh) 一种资源调度方法以及相关装置

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
TR01 Transfer of patent right

Effective date of registration: 20180807

Address after: 250100 S06 tower, 1036, Chao Lu Road, hi tech Zone, Ji'nan, Shandong.

Patentee after: Shandong wave cloud Mdt InfoTech Ltd

Address before: No. 1036, Shandong high tech Zone wave road, Ji'nan, Shandong

Patentee before: Inspur Group Co., Ltd.

TR01 Transfer of patent right
CP03 Change of name, title or address

Address after: 250100 No. 1036 Tidal Road, Jinan High-tech Zone, Shandong Province, S01 Building, Tidal Science Park

Patentee after: Inspur cloud Information Technology Co., Ltd

Address before: 250100 Ji'nan science and technology zone, Shandong high tide Road, No. 1036 wave of science and Technology Park, building S06

Patentee before: SHANDONG LANGCHAO YUNTOU INFORMATION TECHNOLOGY Co.,Ltd.

CP03 Change of name, title or address