CN115098233B - 缓存分区感知的调度方法及系统 - Google Patents
缓存分区感知的调度方法及系统 Download PDFInfo
- Publication number
- CN115098233B CN115098233B CN202210724191.0A CN202210724191A CN115098233B CN 115098233 B CN115098233 B CN 115098233B CN 202210724191 A CN202210724191 A CN 202210724191A CN 115098233 B CN115098233 B CN 115098233B
- Authority
- CN
- China
- Prior art keywords
- task
- cache partition
- scheduler
- tasks
- core
- 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
Links
- 238000005192 partition Methods 0.000 title claims abstract description 215
- 238000000034 method Methods 0.000 title claims abstract description 19
- 238000013507 mapping Methods 0.000 claims abstract description 65
- 238000013508 migration Methods 0.000 claims abstract description 19
- 230000005012 migration Effects 0.000 claims abstract description 19
- 230000000694 effects Effects 0.000 claims description 12
- 230000007246 mechanism Effects 0.000 description 5
- 238000013461 design Methods 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 230000008901 benefit Effects 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 230000008447 perception Effects 0.000 description 2
- 230000002411 adverse Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000001427 coherent effect Effects 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 230000003111 delayed effect Effects 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
- 238000000638 solvent extraction Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5016—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5083—Techniques for rebalancing the load in a distributed system
- G06F9/5088—Techniques for rebalancing the load in a distributed system involving task migration
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本发明提供一种缓存分区感知的调度方法及系统,包括:在系统中分配一个全局映射数据结构,记录各个缓存分区中的相关任务数量;应用程序在启动时调用register_related_threads在操作系统中注册任务组,标识为相关任务,调度器依据此信息进行缓存分区感知的调度;为每个相关任务组分配一个任务映射数据结构,记录一个相关任务组中任务在各个缓存分区中的分布情况;内核调度器在为任务选核时参考任务映射记录的数据,将相关任务调度到同一缓存分区;内核调度器在为任务选核后进行任务映射的更新与全局映射的更新;内核调度器遍历全局映射,若发现缓存分区过载,则通知该缓存分区的任务进行任务迁移。本发明能够提升频繁访问共享变量的任务组的性能。
Description
技术领域
本发明涉及计算机技术领域,具体地,涉及一种缓存分区感知的调度方法及系统。
背景技术
服务器的内存架构不断演化,从单核系统到SMP系统再到NUMA系统,服务器的内存架构不断加深。服务器内存架构的加深,对操作系统的调度器提出了不同的需求。
在单核系统中,调度器只需考虑任务的优先级,通过使用分时复用的策略支持多任务同时运行。
随着多核系统的出现,服务器的计算能力大幅提高。作为多核系统,统一处理器的不同核心间的负载存在差异。某些核心可能处于空闲状态,而另一些核心处于超载状态。调度器需要开始承担负载均衡的任务,也即将处于超载状态的处理器上的任务迁移到处于空闲状态的处理器上。不同的多核系统对调度器的负载均衡能力提出不同需求。
在SMP系统中,理论上来说,为了实现负载均衡而进行的任务迁移不会产生额外的性能开销。这是因为公共总线为不同处理器提供一致性内存访问。任务在不同处理器上运行,都有相同的内存访问性能。然而迁移带来的缓存失效问题,使得任务迁移产生高昂的性能开销。在SMP系统中,每个处理器都有自己的高速缓存,高速缓存的大小一般仅为内存大小的千分之一,提供接近于处理器访问寄存器时的性能。当处理器访问内存时,处理器先会将数据从内存加载到高速缓存,再从高速缓存中读取数据。由于高速缓存是处理器私有的存储单元,因此同一份数据可能存在多个处理器的高速缓存中,为了保证数据一致性,当一个处理器对数据进行修改时,高速缓存的硬件机制会将其他处理器的高速缓存中的数据拷贝标记为失效。此时若其他处理器需要读取该数据,其他处理器需从内存中读取数据,该性能将比从高速缓存中读取慢近数十倍。在任务迁移场景中,当任务迁移到另一处理器后,数据仍存储在此前运行的处理器的高速缓存中,当前运行的处理器则需要从内存中读取数据,这即是任务迁移造成性能开销的原因。因此,主流操作系统为了减小高速缓存失效带来的开销,都提供对目标处理器选择的优化。调度器为任务选择处理器时优先选择该任务之前运行过的处理器,以减少跨处理器迁移,进而减少高速缓存失效带来的开销。
随着处理器数量不断增加,SMP系统中处理器通过相同内存总线访问相同内存资源,内存访问冲突的增加使得内存资源成为瓶颈。当内存资源成为瓶颈,处理器资源将无法被有效利用,造成可扩展性问题。为了解决SMP系统的可扩展性问题,NUMA系统提出本地内存的设计。NUMA架构包含多个NUMA节点,每个节点包含若干处理器、自有内存甚至还包括I/O子系统。每个节点嵌入自有内存控制器,提供对自有内存的访问。这种架构中,处理器不再通过相同内存总线访问相同内存资源,而是通过本地内存控制器访问本地内存与远端内存,从而减少了总线竞争,提升系统可扩展性。然而,本地内存与远端内存造成了处理器非一致性的内存访问,即处理器访问本地内存与远端内存的延迟不一致。这种不一致的内存访问意味着访问本地内存的任务将比访问远端内存的任务有着更佳的性能,也即任务与其访问内存的远近将会影响任务的性能,这对调度器提出了更高的要求。随着NUMA架构的广泛应用,主流操作系统都增加了对NUMA的支持。例如Linux操作系统为了支持NUMA架构,在2.6.7版本之后引入了调度域概念。调度域是硬件拓扑结构在调度器层面的抽象,每个调度域是具有相同属性的一组处理器的集合。一个系统中存在不同类型的调度域,他们根据SMT,SMP,NUMA这样的拓扑结构将处理器划分成不同的级别,不同级之间构成树状关系,同一调度域内的的处理器共享相同的调度策略。调度器有了硬件拓扑结构信息,可以采取更好的负载均衡策略,对不同层级的调度域采取细化调度策略。层级越低的调度域内的处理器共享的内存架构越多,因此调度器可以在底层的调度域中进行负载均衡,从而减小任务迁移带来的性能开销。
随着大数据对于服务器处理数据要求的进一步提高,服务器的内存架构愈发复杂化。目前主流指令集架构的服务器,例如x86服务器和ARM服务器,提出了缓存分区(cachegroup)架构。在该架构中,最后一级缓存被划分为多个分片,每个分片由一组处理器共享,这组处理器被称为缓存分区。同一缓存分区的处理器对于高速缓存中数据的修改不会触发缓存一致性协议,避免了缓存失效而造成的开销。要利用缓存分区的这种特性,需要实现缓存分区感知的调度器。然而,目前主流操作系统的调度器都没有提供对缓存分区感知的支持。
发明内容
针对现有技术中的缺陷,本发明提供一种缓存分区感知的调度方法及系统。
根据本发明提供的一种缓存分区感知的调度方法及系统,所述方案如下:
第一方面,提供了一种缓存分区感知的调度方法,所述方法包括:
步骤S1:为防止多个任务组运行在同一缓存分区造成缓存分区过载,本发明在系统中分配一个全局映射数据结构,该数据结构是一个数组,数组大小为系统中缓存分区的数量,其记录各个缓存分区中的相关任务数量(可能来自不同任务组),该操作系统启动时生效;
步骤S2:应用程序在启动时调用register_related_threads在操作系统中注册任务组,标识它们为相关任务,调度器依据此信息进行缓存分区感知的调度;
步骤S3:为每个相关任务组分配一个任务映射数据结构,该数据结构是一个数组,数组大小为系统中缓存分区的数量,其记录一个相关任务组中任务在各个缓存分区中的分布情况;该操作在调用register_related_threads时生效;
步骤S4:内核调度器在为任务选核时参考任务映射记录的数据,将相关任务调度到同一缓存分区;
步骤S5:内核调度器在为任务选核后进行任务映射的更新;
步骤S6:内核调度器在为任务选核后进行全局映射的更新;
步骤S7:内核调度器遍历全局映射,若发现缓存分区过载,则通知该缓存分区的任务进行任务迁移。
优选地,所述步骤S4在内核调度器为任务选核时生效,具体包括:
步骤S4.1:检查任务所属的任务映射,找到含有最多任务的缓存分区;
步骤S4.2:在所述缓存分区中找到负载最小的核作为目标核;
步骤S4.3:最后由调度器将该任务调度到目标核上运行。
优选地,所述步骤S5任务映射的更新包括:
步骤S5.1:在选核后,调度器获得任务此前运行的核标识号以及目标核标识号;
步骤S5.2:调度器将这两个核标识号转换为缓存分区标识号,将缓存分区标识号作为索引定位到该任务所对应任务映射的对应位置;
步骤S5.3:调度器对此前运行的缓存分区中任务数量做减一操作,对目标缓存分区中任务数量做加一操作。
优选地,所述步骤S6全局映射的更新包括:
步骤S6.1:在选核后,调度器获得任务此前运行的核标识号以及目标核标识号;
步骤S6.2:调度器将这两个核标识号转换为缓存分区标识号,将缓存分区标识号作为索引定位到全局映射的对应位置;
步骤S6.3:调度器对此前运行的缓存分区中任务数量做减一操作,对目标缓存分区中任务数量做加一操作。
优选地,所述步骤S7防止缓存分区过载的操作包括:
步骤S7.1:在完成对全局映射的更新后,调度器遍历全局映射以检测是否出现缓存分区过载;
步骤S7.2:若出现缓存分区过载,调度器选择一个相关任务组,将其中的任务标记为缓存分区迁移;
步骤S7.3:以后为该任务组任务进行选核时,选择另一个缓存分区中的核作为目标核,并将这些任务迁移到别的缓存分区。
第二方面,提供了一种缓存分区感知的调度系统,所述系统包括:
模块M1:为防止多个任务组运行在同一缓存分区造成缓存分区过载,本发明在系统中分配一个全局映射数据结构,该数据结构是一个数组,数组大小为系统中缓存分区的数量,其记录各个缓存分区中的相关任务数量(可能来自不同任务组),该操作系统启动时生效;
模块M2:应用程序在启动时调用register_related_threads在操作系统中注册任务组,标识它们为相关任务,调度器依据此信息进行缓存分区感知的调度;
模块M3:为每个相关任务组分配一个任务映射数据结构,该数据结构是一个数组,数组大小为系统中缓存分区的数量,其记录一个相关任务组中任务在各个缓存分区中的分布情况;该操作在调用register_related_threads时生效;
模块M4:内核调度器在为任务选核时参考任务映射记录的数据,将相关任务调度到同一缓存分区;
模块M5:内核调度器在为任务选核后进行任务映射的更新;
模块M6:内核调度器在为任务选核后进行全局映射的更新;
模块M7:内核调度器遍历全局映射,若发现缓存分区过载,则通知该缓存分区的任务进行任务迁移。
优选地,所述模块M4在内核调度器为任务选核时生效,具体包括:
模块M4.1:检查任务所属的任务映射,找到含有最多任务的缓存分区;
模块M4.2:在所述缓存分区中找到负载最小的核作为目标核;
模块M4.3:最后由调度器将该任务调度到目标核上运行。
优选地,所述模块M5任务映射的更新包括:
模块M5.1:在选核后,调度器获得任务此前运行的核标识号以及目标核标识号;
模块M5.2:调度器将这两个核标识号转换为缓存分区标识号,将缓存分区标识号作为索引定位到该任务所对应任务映射的对应位置;
模块M5.3:调度器对此前运行的缓存分区中任务数量做减一操作,对目标缓存分区中任务数量做加一操作。
优选地,所述模块M6全局映射的更新包括:
模块M6.1:在选核后,调度器获得任务此前运行的核标识号以及目标核标识号;
模块M6.2:调度器将这两个核标识号转换为缓存分区标识号,将缓存分区标识号作为索引定位到全局映射的对应位置;
模块M6.3:调度器对此前运行的缓存分区中任务数量做减一操作,对目标缓存分区中任务数量做加一操作。
优选地,所述模块M7防止缓存分区过载的操作包括:
模块M7.1:在完成对全局映射的更新后,调度器遍历全局映射以检测是否出现缓存分区过载;
模块M7.2:若出现缓存分区过载,调度器选择一个相关任务组,将其中的任务标记为缓存分区迁移;
模块M7.3:以后为该任务组任务进行选核时,选择另一个缓存分区中的核作为目标核,并将这些任务迁移到别的缓存分区。
与现有技术相比,本发明具有如下的有益效果:
1、本发明加速了访问共享变量的相关任务的访存速度,提高了应用程序的性能;同一缓存分区的处理器共享同一最后一级缓存分片,避免缓存失效而造成的开销;
2、本发明提出的缓存分区感知调度算法,可以将访问共享变量的相关任务调度到同一缓存分区中,提高相关任务的访存性能。同时本发明还提出防止缓存分区过载算法,保证多个相关任务组可以同时利用缓存分区提升性能。
附图说明
通过阅读参照以下附图对非限制性实施例所作的详细描述,本发明的其它特征、目的和优点将会变得更明显:
图1为应用程序注册任务组;
图2为任务映射示意图;
图3为全局映射示意图。
具体实施方式
下面结合具体实施例对本发明进行详细说明。以下实施例将有助于本领域的技术人员进一步理解本发明,但不以任何形式限制本发明。应当指出的是,对本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变化和改进。这些都属于本发明的保护范围。
本发明实施例提供了一种缓存分区感知的调度方法,该方法具体包括以下内容:
步骤S1:为防止多个任务组运行在同一缓存分区造成缓存分区过载,本发明在系统中分配一个全局映射数据结构,该数据结构是一个数组,数组大小为系统中缓存分区的数量,其记录各个缓存分区中的相关任务数量(可能来自不同任务组);该操作系统启动时生效。
步骤S2:应用程序在启动时调用“register_related_threads”(该处register_related_threads为系统调用,是应用程序使用操作系统提供服务的一种方式)在操作系统中注册任务组,标识它们为相关任务,调度器依据此信息进行缓存分区感知的调度。
步骤S3:为每个相关任务组分配一个任务映射数据结构,该数据结构是一个数组,数组大小为系统中缓存分区的数量,其记录一个相关任务组中任务在各个缓存分区中的分布情况;该操作在调用register_related_threads时生效。
步骤S4:内核调度器在为任务选核时参考任务映射记录的数据,将相关任务调度到同一缓存分区;具体包括:检查任务所属的任务映射,找到含有最多任务的缓存分区;在所述缓存分区中找到负载最小的核作为目标核;最后由调度器将该任务调度到目标核上运行。
步骤S5:内核调度器在为任务选核后进行任务映射的更新。任务映射的更新包括:在选核后,调度器获得任务此前运行的核标识号以及目标核标识号;调度器将这两个核标识号转换为缓存分区标识号,将缓存分区标识号作为索引定位到该任务所对应任务映射的对应位置;调度器对此前运行的缓存分区中任务数量做减一操作,对目标缓存分区中任务数量做加一操作。
步骤S6:内核调度器在为任务选核后进行全局映射的更新。全局映射的更新包括:在选核后,调度器获得任务此前运行的核标识号以及目标核标识号;调度器将这两个核标识号转换为缓存分区标识号,将缓存分区标识号作为索引定位到全局映射的对应位置;调度器对此前运行的缓存分区中任务数量做减一操作,对目标缓存分区中任务数量做加一操作。
步骤S7:内核调度器遍历全局映射,若发现缓存分区过载,则通知该缓存分区的任务进行任务迁移。防止缓存分区过载的操作包括:在完成对全局映射的更新后,调度器遍历全局映射以检测是否出现缓存分区过载;若出现缓存分区过载,调度器选择一个相关任务组,将其中的任务标记为缓存分区迁移;以后为该任务组任务进行选核时,选择另一个缓存分区中的核作为目标核,并将这些任务迁移到别的缓存分区。
接下来,对本发明进行更为具体的说明。
本发明实施例提供一种缓存分区感知的调度方法,该方法参照图1所示,定义一个新的系统调用register_related_threads,设计该系统调用以解决如何识别访问共享变量任务组的问题。图1中示例显示,应用程序中存在两个频繁访问同一共享变量的任务。将这两个任务调度到同一缓存分区可以提升它们访问的访存性能,因此应用程序可以利用系统调用register_related_threads将任务1和任务2注册到操作系统中,以标识它们为相关任务,调度器则依据此信息进行缓存分区感知的调度。
register_related_threads调用时使用的参数属于同一个相关任务组。在完成调用后,内核调度器可以识别它们为相关任务。目前的操作系统中尚未存在对于缓存分区感知的调度算法,因此本发明提供这一算法,以将相关任务调度到同一缓存分区,以提升它们访问共享变量的性能。为支持缓存分区感知算法,本发明为每个相关任务组分配一个“任务映射”数据结构,该数据结构是一个数组,数组大小为系统中缓存分区的数量,其记录该相关任务组中任务在各个缓存分区中的分布情况。该算法在内核调度器为任务选核时生效,其算法如下:首先检查该任务所属的任务映射,找到含有最多任务的缓存分区;在该缓存分区中找到负载最小的核作为目标核;最后由调度器将该任务调度到目标核上运行。参照图2所示,任务0运行在核0上,由于核0属于缓存分区0,因此其任务映射CG0索引处的数值为1。为任务1选核时,该算法检测到缓存分区0有任务在运行,因此选择同在缓存分区0的核1作为目标核;之后,该算法将核1返回给调度器,调度器将任务1调度到核1运行,使得同一相关任务组的任务0和任务1运行在缓存分区0中。
内核调度器在为任务选核后进行任务映射的更新。首先,在选核后,调度器可以获得任务此前运行的核标识号以及目标核标识号;调度器将这两个核标识号转换为缓存分区标识号,将缓存分区标识号作为索引定位到该任务所对应任务映射的对应位置;调度器对此前运行的缓存分区中任务数量做减一操作,对目标缓存分区中任务数量做加一操作。以上即完成对于“任务映射”的更新。
为了防止缓存分区出现负载不平衡的现象,本发明提出一种防止缓存分区过载机制,由于任务映射是相关任务组的私有数据结构,两个相关任务组在进行调度时可能导致它们的任务都在同一缓存分区中,导致缓存分区过载的情况出现。参照图3所示,经过缓存分区感知的调度算法,相关任务组0和相关任务组1的8个任务都被调度到缓存分区1中运行。然而,此时其他缓存分区都处于闲置状态,造成缓存分区0过载,其他缓存分区负载不均的情况出现。这可能对应用程序的性能造成不良影响。因此本发明提出“全局映射”的数据结构以解决负载不均的问题。全局映射为系统唯一的数据结构,它记录所有相关任务在缓存分区中的分布情况。如图3所示,由于两个相关任务组的4个任务都运行于缓存分区0中,因此全局映射中的缓存分区0中的任务数为8。本发明提供的防止缓存分区过载机制可以检测到这一负载不均的现象。检测到这一现象后,该机制选择一个相关任务组,将其中的任务标记为缓存分区迁移;在之后为该任务组任务进行选核时,会选择另一个缓存分区中的核作为目标核,将这些任务迁移到别的缓存分区从而达到负载均衡的目的。
内核调度器在为任务选核后进行全局映射的更新。首先,在选核后,调度器可以获得任务此前运行的核标识号以及目标核标识号;调度器将这两个核标识号转换为缓存分区标识号,将缓存分区标识号作为索引定位到全局映射的对应位置;调度器对此前运行的缓存分区中任务数量做减一操作,对目标缓存分区中任务数量做加一操作。以上即完成对于“全局映射”的更新。
本发明包含以下技术点:
1)设计内核接口供应用程序标识访问共享变量的任务。本发明在内核中新增一个系统调用。若应用程序包含频繁访问共享变量的任务,该应用程序可以通过该系统调用向内核注册这些任务,使得内核调度器可以将这些任务调度到同一缓存分区。
2)提出缓存分区感知调度算法。本发明为每个访问共享变量的任务组分配一个数据结构,以记录这些任务在缓存分区中的分布情况。在内核调度器为任务组内任务选核运行时,该缓存分区感知调度算法参考任务组内任务的分布情况,将当前任务迁移到运行有更多任务组内任务的缓存分区中,从而实现将任务组内任务聚集在同一缓存分区的目的。
3)对上述缓存分区感知调度算法进行负载均衡检查与管控。本发明为所有任务组分配同一的数据结构,以记录所有任务组的任务在缓存分区中的分布情况。在发现某一缓存分区中任务数量明显多于其他缓存分区后,本发明提供的算法会对该缓存分区中的任务进行迁移,从而达到负载均衡的目的。
本发明实施例提供了一种缓存分区感知的调度方法及系统,利用系统调用向内核注册相关任务,利用缓存分区感知算法将相关任务调度到同一缓存分区,利用防止缓存分区过载机制,避免多个相关任务组互相影响,提升多任务场景下的系统性能。
本领域技术人员知道,除了以纯计算机可读程序代码方式实现本发明提供的系统及其各个装置、模块、单元以外,完全可以通过将方法步骤进行逻辑编程来使得本发明提供的系统及其各个装置、模块、单元以逻辑门、开关、专用集成电路、可编程逻辑控制器以及嵌入式微控制器等的形式来实现相同功能。所以,本发明提供的系统及其各项装置、模块、单元可以被认为是一种硬件部件,而对其内包括的用于实现各种功能的装置、模块、单元也可以视为硬件部件内的结构;也可以将用于实现各种功能的装置、模块、单元视为既可以是实现方法的软件模块又可以是硬件部件内的结构。
以上对本发明的具体实施例进行了描述。需要理解的是,本发明并不局限于上述特定实施方式,本领域技术人员可以在权利要求的范围内做出各种变化或修改,这并不影响本发明的实质内容。在不冲突的情况下,本申请的实施例和实施例中的特征可以任意相互组合。
Claims (10)
1.一种缓存分区感知的调度方法,其特征在于,包括:
步骤S1:在系统中分配一个全局映射数据结构,该数据结构是一个数组,数组大小为系统中缓存分区的数量,其记录各个缓存分区中的相关任务数量,且该操作系统启动时生效;
步骤S2:应用程序在启动时调用register_related_threads在操作系统中注册任务组,标识它们为相关任务,调度器依据此信息进行缓存分区感知的调度;
步骤S3:为每个相关任务组分配一个任务映射数据结构,该数据结构是一个数组,数组大小为系统中缓存分区的数量,其记录一个相关任务组中任务在各个缓存分区中的分布情况,该操作在调用register_related_threads时生效;
步骤S4:内核调度器在为任务选核时参考任务映射记录的数据,将相关任务调度到同一缓存分区;
步骤S5:内核调度器在为任务选核后进行任务映射的更新;
步骤S6:内核调度器在为任务选核后进行全局映射的更新;
步骤S7:内核调度器遍历全局映射,若发现缓存分区过载,则通知该缓存分区的任务进行任务迁移。
2.根据权利要求1所述的缓存分区感知的调度方法,其特征在于,所述步骤S4在内核调度器为任务选核时生效,具体包括:
步骤S4.1:检查任务所属的任务映射,找到含有最多任务的缓存分区;
步骤S4.2:在所述缓存分区中找到负载最小的核作为目标核;
步骤S4.3:最后由调度器将该任务调度到目标核上运行。
3.根据权利要求1所述的缓存分区感知的调度方法,其特征在于,所述步骤S5任务映射的更新包括:
步骤S5.1:在选核后,调度器获得任务此前运行的核标识号以及目标核标识号;
步骤S5.2:调度器将这两个核标识号转换为缓存分区标识号,将缓存分区标识号作为索引定位到该任务所对应任务映射的对应位置;
步骤S5.3:调度器对此前运行的缓存分区中任务数量做减一操作,对目标缓存分区中任务数量做加一操作。
4.根据权利要求1所述的缓存分区感知的调度方法,其特征在于,所述步骤S6全局映射的更新包括:
步骤S6.1:在选核后,调度器获得任务此前运行的核标识号以及目标核标识号;
步骤S6.2:调度器将这两个核标识号转换为缓存分区标识号,将缓存分区标识号作为索引定位到全局映射的对应位置;
步骤S6.3:调度器对此前运行的缓存分区中任务数量做减一操作,对目标缓存分区中任务数量做加一操作。
5.根据权利要求1所述的缓存分区感知的调度方法,其特征在于,所述步骤S7防止缓存分区过载的操作包括:
步骤S7.1:在完成对全局映射的更新后,调度器遍历全局映射以检测是否出现缓存分区过载;
步骤S7.2:若出现缓存分区过载,调度器选择一个相关任务组,将其中的任务标记为缓存分区迁移;
步骤S7.3:以后为该任务组任务进行选核时,选择另一个缓存分区中的核作为目标核,并将这些任务迁移到别的缓存分区。
6.一种缓存分区感知的调度系统,其特征在于,包括:
模块M1:在系统中分配一个全局映射数据结构,该数据结构是一个数组,数组大小为系统中缓存分区的数量,其记录各个缓存分区中的相关任务数量,该操作系统启动时生效;
模块M2:应用程序在启动时调用register_related_threads在操作系统中注册任务组,标识它们为相关任务,调度器依据此信息进行缓存分区感知的调度;
模块M3:为每个相关任务组分配一个任务映射数据结构,该数据结构是一个数组,数组大小为系统中缓存分区的数量,其记录一个相关任务组中任务在各个缓存分区中的分布情况,该操作在调用register_related_threads时生效;
模块M4:内核调度器在为任务选核时参考任务映射记录的数据,将相关任务调度到同一缓存分区;
模块M5:内核调度器在为任务选核后进行任务映射的更新;
模块M6:内核调度器在为任务选核后进行全局映射的更新;
模块M7:内核调度器遍历全局映射,若发现缓存分区过载,则通知该缓存分区的任务进行任务迁移。
7.根据权利要求6所述的缓存分区感知的调度系统,其特征在于,所述模块M4在内核调度器为任务选核时生效,具体包括:
模块M4.1:检查任务所属的任务映射,找到含有最多任务的缓存分区;
模块M4.2:在所述缓存分区中找到负载最小的核作为目标核;
模块M4.3:最后由调度器将该任务调度到目标核上运行。
8.根据权利要求6所述的缓存分区感知的调度系统,其特征在于,所述模块M5任务映射的更新包括:
模块M5.1:在选核后,调度器获得任务此前运行的核标识号以及目标核标识号;
模块M5.2:调度器将这两个核标识号转换为缓存分区标识号,将缓存分区标识号作为索引定位到该任务所对应任务映射的对应位置;
模块M5.3:调度器对此前运行的缓存分区中任务数量做减一操作,对目标缓存分区中任务数量做加一操作。
9.根据权利要求6所述的缓存分区感知的调度系统,其特征在于,所述模块M6全局映射的更新包括:
模块M6.1:在选核后,调度器获得任务此前运行的核标识号以及目标核标识号;
模块M6.2:调度器将这两个核标识号转换为缓存分区标识号,将缓存分区标识号作为索引定位到全局映射的对应位置;
模块M6.3:调度器对此前运行的缓存分区中任务数量做减一操作,对目标缓存分区中任务数量做加一操作。
10.根据权利要求6所述的缓存分区感知的调度系统,其特征在于,所述模块M7防止缓存分区过载的操作包括:
模块M7.1:在完成对全局映射的更新后,调度器遍历全局映射以检测是否出现缓存分区过载;
模块M7.2:若出现缓存分区过载,调度器选择一个相关任务组,将其中的任务标记为缓存分区迁移;
模块M7.3:以后为该任务组任务进行选核时,选择另一个缓存分区中的核作为目标核,并将这些任务迁移到别的缓存分区。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210724191.0A CN115098233B (zh) | 2022-06-24 | 2022-06-24 | 缓存分区感知的调度方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210724191.0A CN115098233B (zh) | 2022-06-24 | 2022-06-24 | 缓存分区感知的调度方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115098233A CN115098233A (zh) | 2022-09-23 |
CN115098233B true CN115098233B (zh) | 2024-05-28 |
Family
ID=83292246
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210724191.0A Active CN115098233B (zh) | 2022-06-24 | 2022-06-24 | 缓存分区感知的调度方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115098233B (zh) |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103377078A (zh) * | 2012-04-11 | 2013-10-30 | 广州市地下铁道总公司 | 车载atp实时任务调度方法及其任务调度系统 |
CN103729248A (zh) * | 2012-10-16 | 2014-04-16 | 华为技术有限公司 | 一种基于缓存感知的确定待迁移任务的方法和装置 |
CN108897630A (zh) * | 2018-06-06 | 2018-11-27 | 郑州云海信息技术有限公司 | 一种基于OpenCL的全局内存缓存方法、系统及装置 |
US10198299B1 (en) * | 2017-10-30 | 2019-02-05 | Vmware, Inc. | Enabling live migration of virtual machines with passthrough PCI devices |
CN111078384A (zh) * | 2019-12-26 | 2020-04-28 | 深圳前海环融联易信息科技服务有限公司 | 核心数据迁移的方法、装置、计算机设备及存储介质 |
CN112559384A (zh) * | 2020-12-17 | 2021-03-26 | 南昌航空大学 | 一种基于非易失存储器的混合固态盘动态分区方法 |
CN112612744A (zh) * | 2020-12-14 | 2021-04-06 | 上海交通大学 | 一种基于数据流解耦的可重构阵列映射方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20210157651A1 (en) * | 2019-09-05 | 2021-05-27 | Nvidia Corporation | Techniques for configuring a processor to function as multiple, separate processors in a virtualized environment |
-
2022
- 2022-06-24 CN CN202210724191.0A patent/CN115098233B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103377078A (zh) * | 2012-04-11 | 2013-10-30 | 广州市地下铁道总公司 | 车载atp实时任务调度方法及其任务调度系统 |
CN103729248A (zh) * | 2012-10-16 | 2014-04-16 | 华为技术有限公司 | 一种基于缓存感知的确定待迁移任务的方法和装置 |
US10198299B1 (en) * | 2017-10-30 | 2019-02-05 | Vmware, Inc. | Enabling live migration of virtual machines with passthrough PCI devices |
CN108897630A (zh) * | 2018-06-06 | 2018-11-27 | 郑州云海信息技术有限公司 | 一种基于OpenCL的全局内存缓存方法、系统及装置 |
CN111078384A (zh) * | 2019-12-26 | 2020-04-28 | 深圳前海环融联易信息科技服务有限公司 | 核心数据迁移的方法、装置、计算机设备及存储介质 |
CN112612744A (zh) * | 2020-12-14 | 2021-04-06 | 上海交通大学 | 一种基于数据流解耦的可重构阵列映射方法 |
CN112559384A (zh) * | 2020-12-17 | 2021-03-26 | 南昌航空大学 | 一种基于非易失存储器的混合固态盘动态分区方法 |
Non-Patent Citations (3)
Title |
---|
"CPS: A Cooperative Para-virtualized Scheduling Framework for Manycore Machines";Yuxuan Liu;《Proceedings of the 28th ACM International Conference on Architectural Support for Programming Languages and Operating Systems》;20240207;第4卷;第43-56页 * |
"CIACP: A Correlation- and Iteration- Aware Cache Partitioning Mechanism to Improve Performance of Multiple Coarse-Grained Reconfigurable Arrays";Chen Yang;《IEEE Transactions on Parallel and Distributed Systems》;20160414;第28卷(第1期);第29-43页 * |
"基于混合互连架构的众核处理器设计";王萌;《中国优秀硕士学位论文全文数据库 信息科技辑》;20190815(第2019年08期);第I137-15页 * |
Also Published As
Publication number | Publication date |
---|---|
CN115098233A (zh) | 2022-09-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10552337B2 (en) | Memory management and device | |
US9411646B2 (en) | Booting secondary processors in multicore system using kernel images stored in private memory segments | |
US9430388B2 (en) | Scheduler, multi-core processor system, and scheduling method | |
US8812400B2 (en) | Managing a memory segment using a memory virtual appliance | |
US9229878B2 (en) | Memory page offloading in multi-node computer systems | |
US10187452B2 (en) | Hierarchical dynamic scheduling | |
CN112052068A (zh) | 一种Kubernetes容器平台CPU绑核的方法与装置 | |
GB2467435A (en) | Power management in virtual machine environment | |
US11886898B2 (en) | GPU-remoting latency aware virtual machine migration | |
US8954969B2 (en) | File system object node management | |
US20200409806A1 (en) | Virtual-machine-specific failover protection | |
CN111459622B (zh) | 调度虚拟cpu的方法、装置、计算机设备和存储介质 | |
CN115098233B (zh) | 缓存分区感知的调度方法及系统 | |
CN116578416B (zh) | 一种基于gpu虚拟化的信号级仿真加速方法 | |
US11182183B2 (en) | Workload placement using conflict cost | |
US20090320036A1 (en) | File System Object Node Management | |
CN116225693A (zh) | 元数据管理方法、装置、计算机设备及存储介质 | |
CN111949687B (zh) | 基于共享内存和多进程的分布式数据库架构及其实现方法 | |
US11579942B2 (en) | VGPU scheduling policy-aware migration | |
CN117785484B (zh) | 共享Cache资源分配方法、系统、计算机设备及介质 | |
Yang et al. | cacheSPM: a static partition for shared cache in mixed-time-sensitive system with balanced performance | |
Anadiotis et al. | A system design for elastically scaling transaction processing engines in virtualized servers | |
US20240248744A1 (en) | Systems and methods for offloading guest tasks to a host system | |
US20050050257A1 (en) | Nested locks to avoid mutex parking | |
CN117331669A (zh) | 基于锁语义实现应用透明的动态处理器缓存分区调度方法和系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |