CN113254186A - 一种进程调度方法、调度器及存储介质 - Google Patents
一种进程调度方法、调度器及存储介质 Download PDFInfo
- Publication number
- CN113254186A CN113254186A CN202110659418.3A CN202110659418A CN113254186A CN 113254186 A CN113254186 A CN 113254186A CN 202110659418 A CN202110659418 A CN 202110659418A CN 113254186 A CN113254186 A CN 113254186A
- Authority
- CN
- China
- Prior art keywords
- node
- process group
- target
- processes
- load
- 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.)
- Pending
Links
Images
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/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
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
本申请实施例提供一种进程调度方法、调度器及存储介质。在本申请实施例中,可响应于进程组创建指令,创建进程组,从硬件系统包含的至少一个非一致性内存访问NUMA节点中,为目标进程组选取倾向节点;在倾向节点包含的至少一个处理器中,分别为目标进程组包含的多个进程分配处理器。据此,本申请实施例中,可以进程组为单位执行调度操作,这使得同一进程组内的各个进程可被调度至同一NUMA节点上,因此,在同一进程组内的各进程进行数据交互的过程中,可更高概率从同一NUMA节点的cache或者内存中命中数据,而避免发生远端内存访问,这可有效提高进程处理效率。
Description
技术领域
本申请涉及计算机技术领域,尤其涉及一种进程调度方法、调度器及存储介质。
背景技术
目前,在操作系统的内核调度过程中,通常采用负载均衡的方式进行进程调度。这种调度方式下,大量进程需要进行远端内存访问才能实现与相关进程之间的数据交互,这大大影响了进程处理效率。
因此,亟需一种更加合理的进程调度方案,来改善进程处理效率。
发明内容
本申请的多个方面提供一种进程调度方法、调度器及存储介质,用以提高进程处理效率。
本申请实施例提供一种进程调度方法,包括:
响应于进程组创建指令,创建目标进程组,所述目标进程组包含多个相互关联的进程;
从硬件系统包含的至少一个非一致性内存访问NUMA节点中,为所述目标进程组选取倾向节点;
在所述倾向节点包含的至少一个处理器中,分别为所述目标进程组包含的多个进程分配处理器。
本申请实施例还提供一种调度器,包括:
创建模块,用于响应于进程组创建指令,创建目标进程组,所述目标进程组包含多个相互关联的进程;
选取模块,用于从硬件系统包含的至少一个非一致性内存访问NUMA节点中,为所述目标进程组选取倾向节点;
调配模块,用于在所述倾向节点包含的至少一个处理器中,分别为所述目标进程组包含的多个进程分配处理器。
本申请实施例还提供一种存储计算机指令的计算机可读存储介质,当所述计算机指令被一个或多个处理器执行时,致使所述一个或多个处理器执行前述的进程调度方法。
在本申请实施例中,可响应于进程组创建指令,创建进程组,从硬件系统包含的至少一个非一致性内存访问NUMA节点中,为目标进程组选取倾向节点;在倾向节点包含的至少一个处理器中,分别为目标进程组包含的多个进程分配处理器。据此,本申请实施例中,可以进程组为单位执行调度操作,这使得同一进程组内的各个进程可被调度至同一NUMA节点上,因此,在同一进程组内的各进程进行数据交互的过程中,可更高概率从同一NUMA节点的cache或者内存中命中数据,而避免发生远端内存访问,这可有效提高进程处理效率。
附图说明
此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
图1为本申请一示例性实施例提供的一种进程调配方法的流程示意图;
图2为本申请一示例性实施例提供的一种进程调配方案的逻辑示意图;
图3为本申请一示例性实施例提供的一种硬件系统的结构示意图;
图4为本申请另一示例性实施例提供的一种调配器的结构示意图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合本申请具体实施例及相应的附图对本申请技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
目前,采用负载均衡的方式进行进程调度,导致进程处理效率低。为此,本申请的一些实施例中:可响应于进程组创建指令,创建进程组,从硬件系统包含的至少一个非一致性内存访问NUMA节点中,为目标进程组选取倾向节点;在倾向节点包含的至少一个处理器中,分别为目标进程组包含的多个进程分配处理器。据此,本申请实施例中,可以进程组为单位执行调度操作,这使得同一进程组内的各个进程可被调度至同一NUMA节点上,因此,在同一进程组内的各进程进行数据交互的过程中,可更高概率从同一NUMA节点的cache或者内存中命中数据,而避免发生远端内存访问,这可有效提高进程处理效率。
以下结合附图,详细说明本申请各实施例提供的技术方案。
图1为本申请一示例性实施例提供的一种进程调度方法的流程示意图,图2为本申请一示例性实施例提供的一种进程调度方案的逻辑示意图。该方法可由调度器执行,该调度器可实现为软件和/或硬件的结合,该调度器可集成在计算设备中。参考图1,该方法包括:
步骤100、响应于进程组创建指令,创建目标进程组,目标进程组包含多个相互关联的进程;
步骤101、从硬件系统包含的至少一个非一致性内存访问NUMA节点中,为目标进程组选取倾向节点;
步骤102、在倾向节点包含的至少一个处理器中,分别为目标进程组包含的多个进程分配处理器。
本实施例提供的进程调度方法可应用于操作系统的内核调度场景中,其中,本实施例中的硬件系统中可包含多个处理器。操作系统运行过程中将产生若干进程,本实施例提供的进程调度方法可将进程调配至合适的处理器,以保证进程获得更佳的处理效率。
参考图1,在步骤100中,可响应于进程组创建指令,创建目标进程组。其中,目标进程组可以是一个或多个进程的集合,多个进程之间通常相互关联。实际应用中,每个进程组通常有一个组长进程,组长进程可以创建一个进程组、创建该组中的进程,也就是,进程组中的进程可以是动态增减的。可选地,本实施例中,可基于CGroup(Control Groups,控制组群)机制,来创建目标进程组。其中,CGroup是指操作系统内核提供的一种可以限制、记录、隔离进程组所使用的物理资源(例如CPU、存储介质、I/O等)的机制。CGROUP的限制、记录或隔离的对象为进程组,因此,在步骤100中,可基于CGroup机制,来创建目标进程组。当然,本实施例中并不限于此,还可根据其它规则来创建目标进程组,例如,可基于进程之间的父子关系等来对进程进行分组,以创建目标进程组。
图3为本申请实施例提供的一种硬件系统的结构示意图。参考图3,本实施例中,硬件系统可采用非一致性内存访问NUMA架构,NUMA架构中可包含至少一个NUMA节点,每个NUMA节点可包含至少一个处理器。值得说明的是,本实施例中所述的处理器可以是逻辑处理器。例如,一个NUMA节点可对应一个CPU Socket(CPU插座),一个CPU插座上可插设一个物理CPU,而一个CPU Socket可包含多个CPU Core(运算核心),而一个CPU Core中可包含多个逻辑CPU(对应于本案中的处理器)。当然,这仅是示例性的,本实施例中,NUMA节点的结构并不限于此。
基于此,在步骤101中,可从硬件系统包含的至少一个非一致性内存访问NUMA节点中,为目标进程组选取倾向节点。可选地,本实施例中,可根据硬件系统包含的至少一个NUMA节点的负载状态,来为目标进程组选取倾向节点。举例来说,可从硬件系统包含的至少一个NUMA节点中,选择负载最空闲的NUMA节点,作为目标进程组对应的倾向节点。可选地,本实施例中,还可根据硬件系统包含的至少一个NUMA节点之间的标识顺序,来为目标进程组选取倾向节点。举例来说,可按照至少一个NUMA节点之间的标识顺序以及目标进程组的上一个进程组所分配到的第一节点的标识,将第一节点的下一个节点作为目标进程组对应的倾向节点。这可有效避免进程组扎堆聚集到同一NUMA节点的问题。这是因为,进程组创建后,进程组内的进程可能并未开始运行,未运行进程所需的负载并未体现在NUMA节点的负载状态中,因此,根据负载状态进行倾向节点的选取可能导致进程组扎堆聚集,而本可选方案下,可有效避免进程组扎堆聚集。当然,本实施例中,为目标进程组选取倾向节点的实现方案并不限于此。
在确定出目标进程组对应的倾向节点后,在步骤102中,可在倾向节点包含的至少一个处理器中,分别为目标进程组包含的多个进程分配处理器。也即是,将目标进程组包含的一个或多个进程调配至倾向节点包含的至少一个处理器上。
继续参考图3,本实施例中,每个NUMA节点还可cache。其中,NUMA节点可采用多级cache,例如,图3所示的3级cache。基于此,NUMA节点包含的多个处理器可共享最后一级cache(例如,图3中的L3),基于共享的最后一级cache,NUMA节点包含的多个处理器上负载的进程之间可共享数据,也即是,在NUMA节点上负载的多个进程之间进行数据交互的过程中,基本可在最后一级cache中命中数据,这可大大提高cache命中率,从而提高数据访存速度。在更理想的情况下,进程组中的第一进程和第二进程被调配至图3中同一CPU Core(处理器组)中的两个逻辑CPU(处理器)上,则在第一进程和第二进程之间进行数据交互的过程中,若更快级别的cache(例如图3中的L1)数据,则可从该更快级别cache中命中数据。而对更快级别的cache的访存速度高于上述对后一级cache的访存速度,这种情况下可获得更快的数据访存速度。
继续参考图3,本实施例中,每个NUMA节点还可包含内存,NUMA节点包含的多个处理器可共享内存。在一些情况下,若在NUMA节点上负载的多个进程之间进行数据交互的过程中,未在cache中命中数据,则可从内存中命中数据。虽然,对内存的访存速度低于上述对cache的访存速度,但是,对内存的访存速度仍远高于远端内存访问(也即是跨节点的内存访问)的速度,因此,仍可获得比较理想的数据访存速度。
举例来说,参考图3,处理器1和处理器2可共享L1 cache,因此,若同一进程组中的第一进程和第二进程分别被分配至处理器1和处理器2上,则两个进程在数据交互过程中,可大概率从L1 cache中命中数据,获得非常高的数据访存速度;若第一进程和第二进程分别被分配至图3中的处理器1和处理器3,由于处理器1和处理器3可共享L3 cache,因此,两个进程在数据交互过程中,可大概率从L3 cache中命中数据,获得较高的数据访存速度。同理,两个进程还可能从内存中命中数据,也可获得比较高的数据访存速度。
发明人在研究过程中,发现NUMA节点的最后一级cache以及内存的存储空间已经足以承载NUMA节点上负载的所有进程所需的数据,因此,同一进程组内的各进程基本可避免远端内存访问。
据此,本实施例中,可响应于进程组创建指令,创建进程组,从硬件系统包含的至少一个非一致性内存访问NUMA节点中,为目标进程组选取倾向节点;在倾向节点包含的至少一个处理器中,分别为目标进程组包含的多个进程分配处理器。据此,本申请实施例中,可以进程组为单位执行调度操作,这使得同一进程组内的各个进程可被调度至同一NUMA节点上,因此,在同一进程组内的各进程进行数据交互的过程中,可更高概率从同一NUMA节点的cache或者内存中命中数据,而避免发生远端内存访问,这可有效提高进程处理效率。
在上述或下述实施例中,以目标进程组包含的一个或多个进程中的目标进程为例,在倾向节点包含的至少一个处理器中,分别为目标进程组包含的多个进程分配处理器的过程中,可从硬件系统包含的多个处理器中,为多个进程中的目标进程选取候选处理器;若候选处理器位于倾向节点上,则将候选处理器分配给目标进程。
本实施例中,可根据硬件系统包含的多个处理器的负载状态,来为目标进程选取候选处理器。举例来说,负载量高于预设负载阈值的处理器均可作为候选处理器,当然,这仅是示例性的。若当前选取的候选处理器位于倾向节点上,则可候选处理器分配给目标进程;而若当前选取的候选处理器未位于倾向节点上,则继续判断从硬件系统中为目标进程选取的其它候选处理器是否位于倾向节点上,直至获得位于倾向节点上的候选处理器为止。也即是,本实施例中,分配给目标进程的处理器,既要满足传统进程调配方案中对处理器的要求,还要位于本实施例中为目标进程确定的倾向节点上。
据此,本实施例中,可确保为目标进程组包含的各个进程所分配的处理器,均位于同一NUMA节点上,从而可保证目标进程组包含的各个进程被调配至同一NUMA 节点上。
在上述或下述实施例中,针对已经按照上述实施例完成进程调度的各个进程,可在进程运行期间进行进程迁移。
本实施例中,可监测至少一个NUMA节点上发生进程调度触发事件,其中,进程调度触发事件可以是NUMA节点发生超载、多个NUMA节点之间负载不均等事件,本实施例对此不作限定。若监测到进程调度触发事件,则可确定待调度进程;查找待调度进程所属的第一进程组;若至少一个NUMA节点存在可负载第一进程组中所有进程的目标节点,则将第一进程组中所有进程迁移至目标节点上。其中,待调度进程可以是能够环节进程调度触发事件的进程。例如,若进程调度触发事件为NUMA节点发生超载,则可将该NUMA节点上负载的其中一部分进程作为待调度进程。又例如,若进程调度触发事件为多个NUMA节点之间负载不均,则可将负载较高的NUMA节点上负载的其中一部分进程作为待调度进程。
本实施例中,可记录进程与进程组之间的从属关系,例如,可基于进程编号、进程组编号来构建编号之间的从属关系。这样,可基于该从属关系,查找待调度进程所属的第一进程组。基于本实施例提供的进程调度方案,第一进程组包含的所有进程均位于待调度进程当前所处的NUMA节点上,因此,可以第一进程组为单位进行进程迁移。
在对第一进程组进程迁移之前,可先判断至少一个NUMA节点中是否存在可负载第一进程组中所有进程的目标节点,如果存在,可将第一进程组中所有进程迁移至目标节点上,而如果不存在,则可不对第一进程组执行迁移操作。
除了判断至少一个NUMA节点中是否存在可负载第一进程组中所有进程的目标节点之外,本实施例中,还可加入多个NUMA节点之间的负载均衡维度,来为第一进程组选取目标节点。为此,在一种可选实现方案中,可通过判断相关NUMA节点在第一进程组迁移前后的负载压力变化情况,来选取目标节点。在该可选实现方案中:
可确定第一进程组的资源需求量以及待调度进程当前所处NUMA节点的第一负载量;
从其它NUMA节点中选取一候选节点,并确定候选节点的第二负载量。
基于资源需求量、第一负载量和第二负载量,计算待调度进程当前所处NUMA节点和候选节点在将第一进程组迁移至候选节点前后的负载压力差异;
若迁移操作后的负载压力差异小于迁移操作前的负载压力差异,则将候选节点确定为目标节点。
其中,候选节点可以是前文提及的可负载第一进程组中所有进程的NUMA节点。
在该可选实现方案中,可将第一负载量和第二负载量之间的差值,表征为迁移操作前的负载压力差异;将第一负载量减去资源需求量之后的第一剩余负载量和第二负载量加上资源需求量之后的第二剩余负载量之间的差值,表征为迁移操作后的负载压力差异。
据此,该可选方案可表示为如下逻辑式:
| S_busy-S_idle | > | (S_busy-S_group)-(S_idle+S_group) |
其中,S_busy表示上述的第一负载量,S_idle表示上述的第二负载量,S_group表示上述的资源需求量,基于此,| S_busy-S_idle |可表示上述的迁移操作前的负载压力差异,| (S_busy-S_group)-(S_idle+S_group) |则可表示上述的迁移操作后的负载压力差异。
本实施例中,在为第一进程组确定出目标节点后,可从目标节点包含的至少一个处理器中,分别为第一进程组中的各进程分配处理器,从而将第一进程组包含的所有进程迁移至目标节点包含的至少一个处理器上,以保证第一进程组包含的所有进程继续运行于同一NUMA节点上。
据此,本实施例中,可从负载能力和/或是否能够改善负载均衡的维度来为待调度进程确定可迁移至的目标节点,而且,可以待调度进程所属的进程组为单位,将该进程组包含的所有进程均迁移至目标节点。这保证了对运行中的进程进行迁移后,仍维持同一进程组内的所有进程位于同一NUMA节点上的状态,从而可有效保证进程处理效率。
在上述或下述实施例中,还可对进程组内新增的进程进行调度。
本实施例中,若目标进程组中出现新增进程,则从倾向节点包含的至少一个处理器中,为新增进程分配处理。
正如前文提及的,本实施例中,进程组内的进程是可以动态增减的。因此,但进程组内出现新增进程时,可将新增进程分配至其所属进程组所在的NUMA节点上,也即是,从其所属进程组所在的NUMA节点包含的至少一个处理器中,为该新增进程分配处理器。
据此,本实施例中,可在进程组内发生进程增减的情况下,仍维持同一进程组内的所有进程位于同一NUMA节点上的状态,从而可有效保证进程处理效率。
需要说明的是,上述实施例所提供方法的各步骤的执行主体均可以是同一设备,或者,该方法也由不同设备作为执行主体。比如,步骤100至步骤802的执行主体可以为设备A;又比如,步骤101和102的执行主体可以为设备A,步骤100的执行主体可以为设备B;等等。
另外,在上述实施例及附图中的描述的一些流程中,包含了按照特定顺序出现的多个操作,但是应该清楚了解,这些操作可以不按照其在本文中出现的顺序来执行或并行执行,操作的序号如101、102等,仅仅是用于区分开各个不同的操作,序号本身不代表任何的执行顺序。另外,这些流程可以包括更多或更少的操作,并且这些操作可以按顺序执行或并行执行。需要说明的是,本文中的“第一”、“第二”等描述,是用于区分不同的进程组、参数、模块等,不代表先后顺序,也不限定“第一”和“第二”是不同的类型。
图4为本申请另一示例性实施例提供的一种调度器的结构示意图。如图4所示,该调度器可包括:
创建模块40,用于响应于进程组创建指令,创建目标进程组,目标进程组包含多个相互关联的进程;
选取模块41,用于从硬件系统包含的至少一个非一致性内存访问NUMA节点中,为目标进程组选取倾向节点;
调配模块42,用于在倾向节点包含的至少一个处理器中,分别为目标进程组包含的多个进程分配处理器。
在一可选实施例中,调配模块42可用于:
从硬件系统包含的多个处理器中,为多个进程中的目标进程选取候选处理器;
若候选处理器位于倾向节点上,则将候选处理器分配给目标进程;
其中,目标进程为多个进程中的任意一个。
在一可选实施例中,调配模块42还可用于:
若候选处理器未位于倾向节点上,则继续判断从硬件系统中为目标进程选取的其它候选处理器是否位于倾向节点上,直至获得位于倾向节点上的候选处理器为止。
在一可选实施例中,调度模块42还用于:
若至少一个NUMA节点上发生进程调度触发事件,则确定待调度进程;
查找待调度进程所属的第一进程组;
若至少一个NUMA节点存在可负载第一进程组中所有进程的目标节点,则将第一进程组中所有进程迁移至目标节点上。
在一可选实施例中,调度模块42还用于:
若至少一个NUMA节点不存在可负载第一进程组中所有进程的目标节点,则禁止对待调度进程执行迁移操作。
在一可选实施例中,调度模块42还可用于:
从目标节点包含的至少一个处理器中,分别为第一进程组中的各进程分配处理器。
在一可选实施例中,调度模块42还可用于:
确定第一进程组的资源需求量以及待调度进程当前所处NUMA节点的第一负载量;
从其它NUMA节点中选取一候选节点,并确定候选节点的第二负载量;
基于资源需求量、第一负载量和第二负载量,计算待调度进程当前所处NUMA节点和候选节点在将第一进程组迁移至候选节点前后的负载压力差异;
若迁移操作后的负载压力差异小于迁移操作前的负载压力差异,则将候选节点确定为目标节点。
在一可选实施例中,调度模块42具体用于:
将第一负载量和第二负载量之间的差值,表征为迁移操作前的负载压力差异;
将第一负载量减去资源需求量之后的第一剩余负载量和第二负载量加上资源需求量之后的第二剩余负载量之间的差值,表征为迁移操作后的负载压力差异。
在一可选实施例中,调度模块42还可用于:
若目标进程组中出现新增进程,则从倾向节点包含的至少一个处理器中,为新增进程分配处理。
值得说明的是,上述关于调度器各实施例中的技术细节,可参考前述的方法实施例中的相关描述,为节省篇幅,在此不再赘述,但这不应造成本申请保护范围的损失。
相应地,本申请实施例还提供一种存储有计算机程序的计算机可读存储介质,计算机程序被执行时能够实现上述方法实施例中可由调度器执行的各步骤。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在一个典型的配置中,计算设备包括一个或多个处理器 (CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器 (RAM) 和/或非易失性内存等形式,如只读存储器 (ROM) 或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存 (PRAM)、静态随机存取存储器 (SRAM)、动态随机存取存储器 (DRAM)、其他类型的随机存取存储器 (RAM)、只读存储器 (ROM)、电可擦除可编程只读存储器 (EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘 (DVD) 或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体 (transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
以上所述仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。
Claims (11)
1.一种进程调度方法,其特征在于,包括:
响应于进程组创建指令,创建目标进程组,所述目标进程组包含多个相互关联的进程;
从硬件系统包含的至少一个非一致性内存访问NUMA节点中,为所述目标进程组选取倾向节点;
在所述倾向节点包含的至少一个处理器中,分别为所述目标进程组包含的多个进程分配处理器。
2.根据权利要求1所述的方法,其特征在于,所述在所述倾向节点包含的至少一个处理器中,分别为所述目标进程组包含的多个进程分配处理器,包括:
从所述硬件系统包含的多个处理器中,为所述多个进程中的目标进程选取候选处理器;
若所述候选处理器位于所述倾向节点上,则将所述候选处理器分配给所述目标进程;
其中,所述目标进程为所述多个进程中的任意一个。
3.根据权利要求2所述的方法,其特征在于,还包括:
若所述候选处理器未位于所述倾向节点上,则继续判断从所述硬件系统中为所述目标进程选取的其它候选处理器是否位于所述倾向节点上,直至获得位于所述倾向节点上的候选处理器为止。
4.根据权利要求1所述的方法,其特征在于,还包括:
若所述至少一个NUMA节点上发生进程调度触发事件,则确定待调度进程;
查找所述待调度进程所属的第一进程组;
若所述至少一个NUMA节点存在可负载所述第一进程组中所有进程的目标节点,则将所述第一进程组中所有进程迁移至所述目标节点上。
5.根据权利要求4所述的方法,其特征在于,还包括:
若所述至少一个NUMA节点不存在可负载所述第一进程组中所有进程的目标节点,则禁止对所述待调度进程执行迁移操作。
6.根据权利要求4所述的方法,其特征在于,所述将所述第一进程组中所有进程迁移至所述目标节点上,包括:
从所述目标节点包含的至少一个处理器中,分别为所述第一进程组中的各进程分配处理器。
7.根据权利要求4所述的方法,其特征在于,还包括:
确定所述第一进程组的资源需求量以及所述待调度进程当前所处NUMA节点的第一负载量;
从其它NUMA节点中选取一候选节点,并确定所述候选节点的第二负载量;
基于所述资源需求量、所述第一负载量和所述第二负载量,计算所述待调度进程当前所处NUMA节点和所述候选节点在将所述第一进程组迁移至所述候选节点前后的负载压力差异;
若迁移操作后的负载压力差异小于迁移操作前的负载压力差异,则将所述候选节点确定为所述目标节点。
8.根据权利要求7所述的方法,其特征在于,所述基于所述资源需求量、所述第一负载量和所述第二负载量,计算所述待调度进程当前所处NUMA节点和所述候选节点在将所述第一进程组迁移至所述候选节点前后的负载压力差异,包括:
将所述第一负载量和第二负载量之间的差值,表征为所述迁移操作前的负载压力差异;
将所述第一负载量减去所述资源需求量之后的第一剩余负载量和所述第二负载量加上所述资源需求量之后的第二剩余负载量之间的差值,表征为所述迁移操作后的负载压力差异。
9.根据权利要求1所述的方法,其特征在于,还包括:
若所述目标进程组中出现新增进程,则从所述倾向节点包含的至少一个处理器中,为所述新增进程分配处理。
10.一种调度器,其特征在于,包括:
创建模块,用于响应于进程组创建指令,创建目标进程组,所述目标进程组包含多个相互关联的进程;
选取模块,用于从硬件系统包含的至少一个非一致性内存访问NUMA节点中,为所述目标进程组选取倾向节点;
调配模块,用于在所述倾向节点包含的至少一个处理器中,分别为所述目标进程组包含的多个进程分配处理器。
11.一种存储计算机指令的计算机可读存储介质,其特征在于,当所述计算机指令被一个或多个处理器执行时,致使所述一个或多个处理器执行权利要求1-9任一项所述的进程调度方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110659418.3A CN113254186A (zh) | 2021-06-15 | 2021-06-15 | 一种进程调度方法、调度器及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110659418.3A CN113254186A (zh) | 2021-06-15 | 2021-06-15 | 一种进程调度方法、调度器及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113254186A true CN113254186A (zh) | 2021-08-13 |
Family
ID=77187842
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110659418.3A Pending CN113254186A (zh) | 2021-06-15 | 2021-06-15 | 一种进程调度方法、调度器及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113254186A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115964181A (zh) * | 2023-03-10 | 2023-04-14 | 之江实验室 | 一种数据处理的方法、装置、存储介质及电子设备 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6782410B1 (en) * | 2000-08-28 | 2004-08-24 | Ncr Corporation | Method for managing user and server applications in a multiprocessor computer system |
CN102834807A (zh) * | 2011-04-18 | 2012-12-19 | 华为技术有限公司 | 多处理器系统负载均衡的方法和装置 |
US20140237197A1 (en) * | 2013-02-20 | 2014-08-21 | Red Hat, Inc. | Non-uniform memory access (numa) resource assignment and re-evaluation |
CN104657195A (zh) * | 2015-01-05 | 2015-05-27 | 华为技术有限公司 | 一种资源绑定方法和装置 |
US20160085571A1 (en) * | 2014-09-21 | 2016-03-24 | Vmware, Inc. | Adaptive CPU NUMA Scheduling |
CN107436798A (zh) * | 2017-08-15 | 2017-12-05 | 深信服科技股份有限公司 | 一种基于numa节点的进程访问方法及装置 |
CN110928661A (zh) * | 2019-11-22 | 2020-03-27 | 北京浪潮数据技术有限公司 | 一种线程迁移方法、装置、设备及可读存储介质 |
CN112463349A (zh) * | 2021-01-28 | 2021-03-09 | 北京睿企信息科技有限公司 | 一种高效调度gpu能力的负载均衡方法及系统 |
-
2021
- 2021-06-15 CN CN202110659418.3A patent/CN113254186A/zh active Pending
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6782410B1 (en) * | 2000-08-28 | 2004-08-24 | Ncr Corporation | Method for managing user and server applications in a multiprocessor computer system |
CN102834807A (zh) * | 2011-04-18 | 2012-12-19 | 华为技术有限公司 | 多处理器系统负载均衡的方法和装置 |
US20140237197A1 (en) * | 2013-02-20 | 2014-08-21 | Red Hat, Inc. | Non-uniform memory access (numa) resource assignment and re-evaluation |
US20160085571A1 (en) * | 2014-09-21 | 2016-03-24 | Vmware, Inc. | Adaptive CPU NUMA Scheduling |
CN104657195A (zh) * | 2015-01-05 | 2015-05-27 | 华为技术有限公司 | 一种资源绑定方法和装置 |
CN107436798A (zh) * | 2017-08-15 | 2017-12-05 | 深信服科技股份有限公司 | 一种基于numa节点的进程访问方法及装置 |
CN110928661A (zh) * | 2019-11-22 | 2020-03-27 | 北京浪潮数据技术有限公司 | 一种线程迁移方法、装置、设备及可读存储介质 |
CN112463349A (zh) * | 2021-01-28 | 2021-03-09 | 北京睿企信息科技有限公司 | 一种高效调度gpu能力的负载均衡方法及系统 |
Non-Patent Citations (4)
Title |
---|
包键等: "《计算机组成原理》", 31 August 2004, 浙江科学技术出版社 * |
张昆藏: "《计算机系统结构教程》", 31 October 2002, 国防工业出版社 * |
缪东升: "《中国优秀硕士学位论文全文数据库 信息科技辑》 ", 《中国优秀硕士学位论文全文数据库》 * |
陈彬玫等: "进程迁移自适应动态负载平衡算法的研究与实现", 《成都信息工程学院学报》 * |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115964181A (zh) * | 2023-03-10 | 2023-04-14 | 之江实验室 | 一种数据处理的方法、装置、存储介质及电子设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11372869B2 (en) | Frequent pattern mining | |
CN107783734B (zh) | 一种基于超融合存储系统的资源分配方法、装置及终端 | |
US10356150B1 (en) | Automated repartitioning of streaming data | |
US11150949B2 (en) | Resource release method, resource allocation method, devices, and computer program products | |
US11074179B2 (en) | Managing objects stored in memory | |
US7418568B2 (en) | Memory management technique | |
CN111813805A (zh) | 一种数据处理方法及装置 | |
CN114265670B (zh) | 一种内存块整理方法、介质及计算设备 | |
US20170357537A1 (en) | Virtual machine dispatching method, apparatus, and system | |
CN109033365B (zh) | 一种数据处理方法及相关设备 | |
CN115421924A (zh) | 一种内存分配方法、装置及设备 | |
CN113254186A (zh) | 一种进程调度方法、调度器及存储介质 | |
CN109788013B (zh) | 分布式系统中作业资源分配方法、装置及设备 | |
CN111722908B (zh) | 一种虚拟机的创建方法、系统、设备以及介质 | |
CN117234691A (zh) | 任务调度方法及装置 | |
CN112631994A (zh) | 数据迁移方法及系统 | |
CN110008382B (zh) | 一种确定TopN数据的方法、系统及设备 | |
CN116501927A (zh) | 一种图数据处理系统、方法、设备及存储介质 | |
Singh et al. | IMSM: An interval migration based approach for skew mitigation in mapreduce | |
CN112000471B (zh) | 内存优化方法及装置 | |
CN114706628B (zh) | 基于一池多芯的分布式存储系统的数据处理方法和装置 | |
CN112433842B (zh) | 服务集群中主从节点的分配方法及设备 | |
CN113282382B (zh) | 任务处理方法、装置、计算机设备和存储介质 | |
WO2021254047A1 (zh) | 分布式数据库重分布的实现方法、数据库、服务器及介质 | |
CN113064557A (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 | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20210813 |
|
RJ01 | Rejection of invention patent application after publication |