WO2024119988A1 - 多cpu环境下的进程调度方法、装置、电子设备和介质 - Google Patents

多cpu环境下的进程调度方法、装置、电子设备和介质 Download PDF

Info

Publication number
WO2024119988A1
WO2024119988A1 PCT/CN2023/122260 CN2023122260W WO2024119988A1 WO 2024119988 A1 WO2024119988 A1 WO 2024119988A1 CN 2023122260 W CN2023122260 W CN 2023122260W WO 2024119988 A1 WO2024119988 A1 WO 2024119988A1
Authority
WO
WIPO (PCT)
Prior art keywords
cpu
scheduling
task
relationship
task queue
Prior art date
Application number
PCT/CN2023/122260
Other languages
English (en)
French (fr)
Inventor
李力琼
于哲
Original Assignee
中科方德软件有限公司
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 中科方德软件有限公司 filed Critical 中科方德软件有限公司
Publication of WO2024119988A1 publication Critical patent/WO2024119988A1/zh

Links

Abstract

本申请实施例提供了一种多CPU环境下的进程调度方法、装置、电子设备和介质,其中的方法具体包括:接收第一进程针对第二进程的调度请求;在所述调度请求要求负载均衡、且所述第二进程对应进程创建行为或进程覆盖行为的情况下,判断第一进程与第二进程之间是否具备同步关系、以及判断第一进程所在第一CPU的任务队列中是否包含1个任务;在所述第一进程与所述第二进程之间具备同步关系、以及第一CPU的任务队列中包含1个任务的情况下,将所述第二进程放置在所述第一CPU中处理;第一进程与第二进程具备同步关系,表征所述第一进程在调度第二进程后将进入等待状态。本申请实施例可以提高第一进程与第二进程之间的交互性能。

Description

多CPU环境下的进程调度方法、装置、电子设备和介质
相关申请的交叉引用
本申请要求在2022年12月6日提交中国专利局、申请号为202211552730.3、名称为“多CPU环境下的进程调度方法、装置、电子设备和介质”的中国专利申请的优先权,其全部内容通过引用结合在本申请中。
技术领域
本申请实施例涉及计算机技术领域,特别是涉及一种多CPU环境下的进程调度方法、装置、电子设备和介质。
背景技术
随着计算机技术的发展,为了提高处理任务的能力,可以在设备中集成多个CPU。当设备中集成多个CPU的情况下,需要将CPU分配给进程,以使得进程对应的任务能够被高效的执行。
目前,在第一多CPU环境下的进程调度第二进程的情况下,通常根据负载均衡的原则,为第二进程分配最空闲的CPU。
在实际应用中,为第二进程分配最空闲的CPU,在有些情况下会导致第一进程与第二进程之间的交互性能下降。
发明内容
本申请实施例提供了一种多CPU环境下的进程调度方法,能够提高第一进程与第二进程之间的交互性能。
相应的,本申请实施例还提供了一种多CPU环境下的进程调度装置、一种电子设备和一种机器可读介质,用以保证上述方法的实现及应用。
第一方面,本申请实施例公开了一种多CPU环境下的进程调度方法,所述方法包括:
接收第一进程针对第二进程的调度请求;
在所述调度请求要求负载均衡、且所述第二进程对应进程创建行为或进程覆盖行为的情况下,判断第一进程与第二进程之间是否具备同步关系、以及判断第一进程所在第一CPU的任务队列中是否包含1个任务;
在所述第一进程与所述第二进程之间具备同步关系、以及所述第一CPU的任务队列中包含1个任务的情况下,将所述第二进程放置在所述第一CPU中处理;所述第一进程与所述第二进程具备同步关系,表征所述第一进程在调度第二进程后将进入等待状态。
第二方面,本申请实施例公开了一种多CPU环境下的进程调度装置,所述装置包括:
接收模块,用于接收第一进程针对第二进程的调度请求;
第一判断模块,用于在所述调度请求要求负载均衡、且所述第二进程对应进程创建 行为或进程覆盖行为的情况下,判断第一进程与第二进程之间是否具备同步关系、以及判断第一进程所在第一CPU的任务队列中是否包含1个任务;
第一调度模块,用于在所述第一进程与所述第二进程之间具备同步关系、以及所述第一CPU的任务队列中包含1个任务的情况下,将所述第二进程放置在所述第一CPU中处理;所述第一进程与所述第二进程具备同步关系,表征所述第一进程在调度第二进程后将进入等待状态。
可选地,所述装置还包括:
第一搜索模块,用于在所述第一进程与所述第二进程之间不具备同步关系、和/或、所述第一CPU的任务队列中包含多个任务的情况下,在多个CPU中搜索处于空闲状态的第二CPU;
第二调度模块,用于将所述第二进程放置在所述第二CPU中处理。
可选地,所述装置还包括:
第二判断模块,用于在所述调度请求要求负载均衡、且所述第二进程对应进程唤醒行为的情况下,判断第一进程与第二进程之间是否具备亲和关系;
第三判断模块,用于在所述第一进程与所述第二进程之间具备亲和关系的情况下,判断第一进程与第二进程之间是否具备同步关系、以及判断第一进程所在第一CPU的任务队列中是否包含1个任务;
第三调度模块,用于在所述第一进程与所述第二进程之间具备同步关系、以及所述第一CPU的任务队列中包含1个任务的情况下,将所述第二进程放置在所述第一CPU中处理。
可选地,所述第二判断模块包括:
共享判断模块,用于判断第一进程与第二进程之间是否涉及共享;和/或
唤醒次数判断模块,用于根据第一进程在预设时段内进行进程唤醒的次数,判断第一进程与第二进程是否具备亲和关系。
可选地,所述装置还包括:
第二搜索模块,用于在所述第一进程与所述第二进程之间不具备同步关系、和/或、所述第一CPU的任务队列中包含多个任务的情况下,在多个CPU中搜索邻近所述第一CPU且处于空闲状态的第三CPU;
第三调度模块,用于将所述第二进程放置在所述第三CPU中处理。
第三方面,本申请实施例公开了一种电子设备,包括:处理器;和存储器,其上存储有可执行代码,当所述可执行代码被执行时,使得所述处理器执行如本申请实施例所述的方法。
第四方面,本申请实施例公开了一种机器可读介质,其上存储有可执行代码,当所述可执行代码被执行时,使得处理器执行如本申请实施例所述的方法。
本申请实施例包括以下优点:
本申请实施例的技术方案中,在调度请求要求负载均衡、且第二进程对应进程创建行为或进程覆盖行为的情况下,会执行两个判断:判断A对应的判断第一进程与第二进程之间是否具备同步关系、以及判断B对应的判断第一进程所在第一CPU的任务队列中是否包含1个任务。其中,该第一进程与该第二进程具备同步关系,能够表征该第一进程在调度第二进程后将进入等待状态。第一进程所在第一CPU的任务队列中包含1个任务,能够表征第一CPU的任务队列中包含的是第一进程对应的任务。
由于本申请实施例在判断A的判断结果表征第一进程与该第二进程具备同步关系、以及判断B的判断结果表征该第一CPU的任务队列中包含1个任务的情况下,第一进程执行完第二进程的调度后即可进入等待状态,而第一进程进入等待状态后第一CPU可处于休闲状态;因此,本申请实施例在此种情况下将该第二进程放置在该第一CPU中处理,能够使第二进程被快速运行,也即能够降低第二进程的调度延迟。并且,由于第一进程和第二进程均运行在第一CPU上,而相同CPU环境下的进程间通信速度通常高于不同CPU环境下的进程间通信速度,因此,本申请实施例能够提高第一进程与第二进程之间的交互性能。
附图说明
图1是本申请一个实施例的多CPU环境下的进程调度方法的步骤流程示意图;
图2是本申请一个实施例的多CPU环境下的进程调度方法的步骤流程示意图;
图3是本申请一个实施例的多CPU环境下的进程调度方法的步骤流程示意图;
图4是本申请一个实施例的多CPU环境下的进程调度装置的结构示意图;
图5是本申请一个实施例提供的装置的结构示意图。
具体实施方式
为使本申请的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本申请作进一步详细的说明。
为使本领域技术人员更好地理解本申请实施例,以下对本申请实施例涉及的概念进行说明:
任务(task)可以指由软件完成的一个活动。一个任务既可以是一个进程,也可以是一个线程。简言之,它指的是一系列共同达到某一目的的操作。以“读取数据并将数据放入内存中”的任务为例,这个任务可以作为一个进程来实现,也可以作为一个线程来实现。
进程(process)是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位。例如,用户运行自己的程序,系统就创建一个进程,并为它分配资源,包括各种表格、内存空间、磁盘空间、I/O(输入/输出,Input/Output)设备等;然后,把该进程放入进程的就绪队列;多CPU环境下的进程调度程序选中它,为它分配CPU以及其它有关资源,该进程真正运行。所以,进程是系统中的并发执行的单位。
进程状态:进程状态可以包括:新建状态、运行状态、就绪状态、等待状态、终止 状态等。其中,运行状态可以指进程占有处理器正在运行的状态,进程已获得CPU,其对应的程序正在执行。就绪状态可以指进程具备运行条件,等待系统分配处理器以便运行的状态。
等待状态又称阻塞态或睡眠态,指进程不具备运行条件,正在等待某个时间完成的状态;例如,进程正在等待某一事件发生而暂时停止运行。
多CPU环境:如今CPU的核数从单核,到双核,再到4核、8核、甚至10核。多核架构还可以区分大小核。区分大小核,是因为它们之间的性能(算力)和功耗是不同的,而且它们又以cluster(集群)来区分(小核在一个cluster,大核在另一个cluster),而目前相同cluster内的CPU频率是同步调节的。
多CPU环境下的负载均衡:为了减少CPU之间的干扰,每个CPU上都有一个任务队列。在运行过程中,有的CPU处于忙碌状态,有的CPU处于空闲状态,于是便需要负载均衡。将任务从负载较重的CPU上转移到负载相对较轻的CPU上执行,这个过程就是负载均衡的过程。
CPU拓扑结构:内核使用调度域(sched_domain)来描述CPU之间的层次关系。
调度域:是一组CPU,它们共享属性和调度策略,并可以相互平衡。调度域是分层的;多级系统将具有多级域。每个调度域可以包含一个或多个CPU组(struct
sched_group)。
例如,一个4核的SOC(系统级芯片,System on Chip)包括:CPU0、CPU1、CPU2和CPU3。其中的CPU0、CPU1属于cluster0,共享L2cache(二级缓存);CPU2、CPU3属于cluster1,共享L2cache。cluster0或cluster1可以认为是一个调度域,一个调度域中有两个调度组,一个调度组中有一个CPU。当然在其他情况(如8核的SOC)下,一个调度组中可以包含两个或两个以上CPU。整个SOC可以认为是高一级别的调度域,其中有两个调度组,cluster0属于一个调度组,cluster1属于另一个调度组。
传统技术中,在第一多CPU环境下的进程调度第二进程的情况下,通常根据负载均衡的原则,为第二进程分配空闲的CPU。例如,在第二进程为fork(复制)出来的进程的情况下,传统技术使用慢速路径(find_idlest_cpu函数)找到最空闲的CPU,并将第二进程放置在最空闲的CPU上执行。其中,fork系统调用用于创建一个新进程,创建的新进程称为子进程。然而,在有些情况下,第一进程与第二进程需要经由管道等方式进行进程间通信,如果将第二进程放置在最空闲的任意CPU上执行,将会影响第一进程与第二进程之间的交互性能。
针对第一进程与第二进程之间的交互性能下降的技术问题,本申请实施例提供了一种多CPU环境下的进程调度方法,该方法具体包括:接收第一进程针对第二进程的调度请求;在该调度请求要求负载均衡、且该第二进程对应进程创建行为或进程覆盖行为的情况下,判断第一进程与第二进程之间是否具备同步关系、以及判断第一进程所在第一CPU的任务队列中是否包含1个任务;在该第一进程与该第二进程之间具备同步关系、 以及该第一CPU的任务队列中包含1个任务的情况下,将该第二进程放置在该第一CPU中处理;该第一进程与该第二进程具备同步关系,表征该第一进程在调度第二进程后将进入等待状态。
本申请实施例在调度请求要求负载均衡、且该第二进程对应进程创建行为或进程覆盖行为的情况下,会执行两个判断:判断A对应的判断第一进程与第二进程之间是否具备同步关系、以及判断B对应的判断第一进程所在第一CPU的任务队列中是否包含1个任务。其中,该第一进程与该第二进程具备同步关系,能够表征该第一进程在调度第二进程后将进入等待状态。第一进程所在第一CPU的任务队列中包含1个任务,能够表征第一CPU的任务队列中包含的是第一进程对应的任务。
由于本申请实施例在判断A的判断结果表征第一进程与该第二进程具备同步关系、以及判断B的判断结果表征该第一CPU的任务队列中包含1个任务的情况下,第一进程执行完第二进程的调度后即可进入等待状态,而第一进程进入等待状态后第一CPU可处于休闲状态;因此,本申请实施例在此种情况下将该第二进程放置在该第一CPU中处理,能够使第二进程被快速运行,也即能够降低第二进程的调度延迟。并且,由于第一进程和第二进程均运行在第一CPU上,而相同CPU环境下的进程间通信速度通常高于不同CPU环境下的进程间通信速度,因此,本申请实施例能够提高第一进程与第二进程之间的交互性能。
本申请实施例的第二进程对应进程创建行为可以适用于第一进程复制第二进程的情况,第二进程对应进程覆盖行为可以适用于第二进程覆盖第一进程的情况,本申请实施例可以在上述两种情况下降低第二进程的调度延迟。
需要说明的是,如果执行一个判断(判断A或判断B),可能存在第二进程的性能下降的风险。例如,如果执行判断A而不执行判断B,则在第一CPU的任务队列中包含多个任务的情况下,第二进程需要等待第一CPU执行完多个任务,仍然存在第二进程的调度延迟大的问题。又如,如果执行判断B而不执行判断A,则第一进程在调度第二进程后还可能执行其他操作、而不是在调度第二进程后将进入等待状态,此种情况下第二进程需要等待第一进程执行完其他操作,仍然存在第二进程的调度延迟大的问题。
方法实施例一
参考图1,示出了本申请一个实施例的多CPU环境下的进程调度方法的步骤流程示意图,该方法具体可以包括如下步骤:
步骤101、接收第一进程针对第二进程的调度请求;
步骤102、在该调度请求要求负载均衡、且该第二进程对应进程创建行为或进程覆盖行为的情况下,判断第一进程与第二进程之间是否具备同步关系、以及判断第一进程所在第一CPU的任务队列中是否包含1个任务;
步骤103、在该第一进程与该第二进程之间具备同步关系、以及该第一CPU的任务队列中包含1个任务的情况下,将该第二进程放置在该第一CPU中处理;该第一进程与 该第二进程具备同步关系,表征该第一进程在调度第二进程后将进入等待状态。
本申请实施例的方法可以应用于SOC的多CPU环境下,用于在降低第二进程的调度延迟的情况下,进行多CPU的负载均衡。
在步骤101中,第一进程可以调用进程调度函数,进程调度函数又会调用进程放置函数,针对进程放置函数的调用请求可以称为调度请求。进程放置函数可以根据该调度请求,执行本申请实施例的方法。
调度请求中可以包含调度参数。调度参数可以包括:调度场景参数。调度场景参数可以包含:负载均衡参数和第二进程场景参数等。其中,负载均衡参数可以表征调度请求要求负载均衡,第二进程场景参数可以表征第二进程的场景。例如,第二进程场景参数可以包括:进程创建参数或进程覆盖参数等,其中,进程创建参数可以表征第二进程对应进程创建行为,进程覆盖参数可以表征第二进程对应进程覆盖行为。
进程创建行为可以对应前述的fork调用。进程覆盖行为可以对应exec调用。exec调用以新进程去代替原来的进程。如果exec调用成功,原来的进程(调用进程)将被覆盖,然后从新进程的入口开始执行。这样就产生了一个新进程,但是新进程的进程标识符与调用进程相同。这就是说,exec没有建立一个与调用进程并发的新进程,而是用新进程取代了调用进程。
在实际应用中,负载均衡参数和第二进程场景参数可以作为单独的两个参数,单独设置;或者负载均衡参数和第二进程场景参数可以作为一个参数合并设置。以合并设置为例,一种调度场景参数可以既包含负载均衡参数,又包含第二进程场景参数。
进程调度函数可以根据第一进程针对进程调度函数的调用请求中携带的调用参数,确定调度请求中包含的调度参数。例如,调用参数中包含:第二进程场景参数等信息,则调度参数中也可以包含第二进程场景参数。
在步骤102中,可以对调度请求中包含的调度参数进行解析,以判断该调度请求是否要求负载均衡、且该第二进程是否对应进程创建行为或进程覆盖行为。
在具体实现中,若调度参数中包含负载均衡对应的字符串,则可以认为该调度请求要求负载均衡。若调度参数中包含进程创建行为或进程覆盖行为对应的字符串,则可以认为该第二进程是否对应进程创建行为或进程覆盖行为。
在该调度请求要求负载均衡、且该第二进程对应进程创建行为或进程覆盖行为的情况下,本申请实施例会执行两个判断:判断A对应的判断第一进程与第二进程之间是否具备同步关系、以及判断B对应的判断第一进程所在第一CPU的任务队列中是否包含1个任务。
对于判断A而言,可以根据第一进程与第二进程之间的同步标志位,判断第一进程与第二进程之间是否具备同步关系。例如,同步标志位的数值为1,可以表征第一进程与第二进程之间具备同步关系;同步标志位的数值为0,可以表征第一进程与第二进程之间不具备同步关系。
在实际应用中,操作系统的内核可以对同步标志位的数值进行维护。进程调度函数在调用进程放置函数的情况下,可以在对应的调用请求中传入同步标志位的数值。当然,进程放置函数也可以具备同步标志位的数值的获取能力。
对于判断B而言,可以访问第一进程所在第一CPU的任务队列,并判断第一CPU的任务队列是否包含1个任务,若是,则可以认为第一CPU的任务队列包含的1个任务是第一进程对应的任务。
在步骤103中,在该第一进程与该第二进程之间具备同步关系、以及该第一CPU的任务队列中包含1个任务的情况下,将该第二进程放置在该第一CPU中处理,以使第二进程利用第一CPU的资源执行对应的任务。
在本申请实施例的其他实现方式中,在所述第一进程与所述第二进程之间不具备同步关系、和/或、所述第一CPU的任务队列中包含多个任务的情况下,可以在多个CPU中搜索处于空闲状态的第二CPU,并将所述第二进程放置在所述第二CPU中处理。
在具体实现中,可以根据CPU的拓扑结构,在多个CPU中搜索处于空闲状态的第二CPU。例如,可以在调度域中寻找处于空闲状态的调度组,然后在空闲状态的调度组选择处于空闲状态的第二CPU。本申请实施例可以根据任务队列中的任务数量,确定空闲状态。例如,任务队列中的任务数量为0,可以表征CPU处于空闲状态。因此,本申请实施例的第二CPU可以是任务数量为0的CPU。
需要说明的是,本申请实施例的调度域可以为多级调度域。如果在第(i+1)级调度域中未找到处于空闲状态的第二CPU,则可以在第i级调度域中寻找处于空闲状态的调度组,然后在空闲状态的调度组选择处于空闲状态的第二CPU,i可以为正整数。
例如,一个4核的SOC包括:CPU0、CPU1、CPU2和CPU3,该SOC包括两个级别的调度域,第一级别的调度域包括:cluster0和cluster1两个调度组,第二级别的调度域包括:cluster0或cluster1对应的调度组。则在第二级别的调度域中未找到处于空闲状态的第二CPU的情况下,可以在第一级调度域中寻找处于空闲状态的调度组,然后在空闲状态的调度组选择处于空闲状态的第二CPU。
综上,本申请实施例的多CPU环境下的进程调度方法,在调度请求要求负载均衡、且该第二进程对应进程创建行为或进程覆盖行为的情况下,在判断A的判断结果表征第一进程与该第二进程具备同步关系、以及判断B的判断结果表征该第一CPU的任务队列中包含1个任务的情况下,第一进程执行完第二进程的调度后即可进入等待状态,而第一进程进入等待状态后第一CPU可处于休闲状态;因此,本申请实施例在此种情况下将该第二进程放置在该第一CPU中处理,能够使第二进程被快速运行,也即能够降低第二进程的调度延迟。并且,由于第一进程和第二进程均运行在第一CPU上,而相同CPU环境下的进程间通信速度通常高于不同CPU环境下的进程间通信速度,因此,本申请实施例能够提高第一进程与第二进程之间的交互性能。
方法实施例二
参考图2,示出了本申请一个实施例的多CPU环境下的进程调度方法的步骤流程示意图,该方法具体可以包括如下步骤:
步骤201、接收第一进程针对第二进程的调度请求;
步骤202、在该调度请求要求负载均衡、且该第二进程对应进程创建行为或进程覆盖行为的情况下,判断第一进程与第二进程之间是否具备同步关系、以及判断第一进程所在第一CPU的任务队列中是否包含1个任务;
步骤203、在该第一进程与该第二进程之间具备同步关系、以及该第一CPU的任务队列中包含1个任务的情况下,将该第二进程放置在该第一CPU中处理;该第一进程与该第二进程具备同步关系,表征该第一进程在调度第二进程后将进入等待状态;
相对于图1所示方法实施例一,本实施例的方法还可以包括:
步骤204、在该调度请求要求负载均衡、且该第二进程对应进程唤醒行为的情况下,判断第一进程与第二进程之间是否具备亲和关系;
步骤205、在该第一进程与该第二进程之间具备亲和关系的情况下,判断第一进程与第二进程之间是否具备同步关系、以及判断第一进程所在第一CPU的任务队列中是否包含1个任务;
步骤206、在该第一进程与该第二进程之间具备同步关系、以及该第一CPU的任务队列中包含1个任务的情况下,将该第二进程放置在该第一CPU中处理。
本申请实施例的第二进程对应进程创建行为可以适用于第一进程复制第二进程的情况,第二进程对应进程覆盖行为可以适用于第二进程覆盖第一进程的情况,第二进程对应进程唤醒行为可以适用于第二进程唤醒第一进程的情况。
本申请实施例的步骤204至步骤206,可用于在第二进程唤醒第一进程的情况下,降低第二进程的调度延迟。
步骤204在该调度请求要求负载均衡、且该第二进程对应进程唤醒行为的情况下,会判断第一进程与第二进程之间是否具备亲和关系,对应的判断方式可以包括:
判断方式1、判断第一进程与第二进程之间是否涉及共享;和/或
判断方式2、根据第一进程在预设时段内进行进程唤醒的次数,判断第一进程与第二进程是否具备亲和关系。
对于判断方式1,第一进程与第二进程之间的共享可以是环境变量、内存空间等资源的共享。例如,第一进程与第二进程之间共享数据管道,可以认为第一进程与第二进程之间具备亲和关系。反之,若第一进程与第二进程之间不涉及共享,则可以认为第一进程与第二进程之间不具备亲和关系。
对于判断方式2,在第一进程在预设时段内进行进程唤醒的次数超过次数阈值的情况下,可以认为第一进程唤醒进程的行为过于频繁,可以认为第一进程与第二进程不具备亲和关系。反之,在第一进程在预设时段内进行进程唤醒的次数不超过次数阈值的情况下,可以认为第一进程与第二进程具备亲和关系。
步骤205在该第一进程与该第二进程之间具备亲和关系的情况下,会执行两个判断:判断A对应的判断第一进程与第二进程之间是否具备同步关系、以及判断B对应的判断第一进程所在第一CPU的任务队列中是否包含1个任务。其中,该第一进程与该第二进程具备同步关系,能够表征该第一进程在调度第二进程后将进入等待状态。第一进程所在第一CPU的任务队列中包含1个任务,能够表征第一CPU的任务队列中包含的是第一进程对应的任务。
由于本申请实施例在判断A的判断结果表征第一进程与该第二进程具备同步关系、以及判断B的判断结果表征该第一CPU的任务队列中包含1个任务的情况下,第一进程执行完第二进程的调度后即可进入等待状态,而第一进程进入等待状态后第一CPU可处于休闲状态;因此,本申请实施例在此种情况下将该第二进程放置在该第一CPU中处理,能够使第二进程被快速运行,也即能够降低第二进程的调度延迟。并且,由于第一进程和第二进程均运行在第一CPU上,而相同CPU环境下的进程间通信速度通常高于不同CPU环境下的进程间通信速度,因此,本申请实施例能够提高第一进程与第二进程之间的交互性能。
在本申请的其他实现方式中,在所述第一进程与所述第二进程之间不具备同步关系、和/或、所述第一CPU的任务队列中包含多个任务的情况下,可以在多个CPU中搜索邻近所述第一CPU且处于空闲状态的第三CPU,并将所述第二进程放置在所述第三CPU中处理。
在具体实现中,可以第一CPU为中心,进行第三CPU的搜索,以获得距离第一CPU最近、且处于空闲状态的第三CPU。
例如,一个4核的SOC包括:CPU0、CPU1、CPU2和CPU3,假设第一CPU为CPU0,则可以首先在CPU0对应的调度域中寻找第三CPU,假设CPU1处于空闲状态,则可以将CPU1作为放置第二进程的CPU。由于CPU0与CPU1共享L2cache,故在CPU1上执行第二进程的任务的过程中,可以从CPU0与CPU1共同的L2cache中读取数据,因此能够提高第二进程的任务处理效率。
综上,本申请实施例的多CPU环境下的进程调度方法,在该调度请求要求负载均衡、且该第二进程对应进程唤醒行为的情况下,判断第一进程与第二进程之间是否具备亲和关系。第一进程与第二进程之间具备亲和关系可以表明第一CPU对应的缓存等资源对第二进程而言是有意义的。因此,第一进程与第二进程之间是否具备亲和关系的判断,能够在第一CPU上执行第二进程的任务的过程中,可以从第一CPU的缓存中读取数据,因此能够提高第二进程的任务处理效率。
进一步,在第一进程与第二进程之间具备亲和关系的情况下,执行判断A和判断B。在判断A的判断结果表征第一进程与该第二进程具备同步关系、以及判断B的判断结果表征该第一CPU的任务队列中包含1个任务的情况下,第一进程执行完第二进程的调度后即可进入等待状态,而第一进程进入等待状态后第一CPU可处于休闲状态;因 此,本申请实施例在此种情况下将该第二进程放置在该第一CPU中处理,能够使第二进程被快速运行,也即能够降低第二进程的调度延迟。并且,由于第一进程和第二进程均运行在第一CPU上,而相同CPU环境下的进程间通信速度通常高于不同CPU环境下的进程间通信速度,因此,本申请实施例能够提高第一进程与第二进程之间的交互性能。
方法实施例三
参考图3,示出了本申请一个实施例的多CPU环境下的进程调度方法的步骤流程示意图,该方法具体可以包括如下步骤:
步骤301、接收第一进程针对第二进程的调度请求;
步骤302、判断该调度请求是否要求负载均衡、且该第二进程是否对应进程创建行为或进程覆盖行为或进程唤醒行为,若是,则执行步骤303;
步骤303、判断第一进程与第二进程之间是否具备亲和关系,若是,则执行步骤304;
步骤304、判断第一进程与第二进程之间是否具备同步关系、以及判断第一进程所在第一CPU的任务队列中是否包含1个任务,若是,则执行步骤305;
步骤305、判断该第二进程是否对应进程创建行为或进程覆盖行为,若是,则执行步骤306,否则执行步骤307;
步骤306、将该第二进程放置在该第一CPU中处理;
步骤307、判断第一CPU是否空闲,若是则执行步骤306,否则执行步骤308;
步骤308、执行判断A和判断B,具体而言,判断第一进程与第二进程之间是否具备同步关系、以及判断第一进程所在第一CPU的任务队列中是否包含1个任务,若是,则执行步骤306,否则执行步骤309;
步骤309、在多个CPU中搜索邻近所述第一CPU且处于空闲状态的第三CPU,并将所述第二进程放置在所述第三CPU中处理。
步骤303判断第一进程与第二进程之间是否具备亲和关系,在第一进程与第二进程之间具备亲和关系的情况下,通过进一步的判断,将该第二进程放置在该第一CPU中处理。第一进程与第二进程之间具备亲和关系可以表明第一CPU对应的缓存等资源对第二进程而言是有意义的。因此,第一进程与第二进程之间是否具备亲和关系的判断,能够实现:在第一CPU上执行第二进程的任务的过程中,第二进程的任务可以从第一CPU的缓存中读取数据;因此,本申请实施例能够提高第二进程的任务处理效率。
步骤304首次执行判断A和判断B,步骤308再次执行判断A和判断B,可以适应第一CPU的任务队列的变化。例如,在第一CPU的任务队列中新增任务的情况下,步骤308可以及时地捕捉对应的变化。
综上,本申请实施例的多CPU环境下的进程调度方法,在该调度请求要求负载均衡、且该第二进程对应进程创建行为或进程覆盖行为或者进程唤醒行为的情况下,判断第一进程与第二进程之间是否具备亲和关系。第一进程与第二进程之间具备亲和关系可以表 明第一CPU对应的缓存等资源对第二进程而言是有意义的。因此,第一进程与第二进程之间是否具备亲和关系的判断,能够在第一CPU上执行第二进程的任务的过程中,可以从第一CPU的缓存中读取数据,因此能够提高第二进程的任务处理效率。
进一步,在第一进程与第二进程之间具备亲和关系的情况下,执行判断A和判断B。在判断A的判断结果表征第一进程与该第二进程具备同步关系、以及判断B的判断结果表征该第一CPU的任务队列中包含1个任务的情况下,第一进程执行完第二进程的调度后即可进入等待状态,而第一进程进入等待状态后第一CPU可处于休闲状态;因此,本申请实施例在此种情况下将该第二进程放置在该第一CPU中处理,能够使第二进程被快速运行,也即能够降低第二进程的调度延迟。并且,由于第一进程和第二进程均运行在第一CPU上,而相同CPU环境下的进程间通信速度通常高于不同CPU环境下的进程间通信速度,因此,本申请实施例能够提高第一进程与第二进程之间的交互性能。
需要说明的是,对于方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请实施例并不受所描述的动作顺序的限制,因为依据本申请实施例,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作并不一定是本申请实施例所必须的。
在上述实施例的基础上,本实施例还提供了一种多CPU环境下的进程调度装置,参照图4,该装置具体可以包括:接收模块401、第一判断模块402和第一调度模块403。
其中,接收模块401,用于接收第一进程针对第二进程的调度请求;
第一判断模块402,用于在所述调度请求要求负载均衡、且所述第二进程对应进程创建行为或进程覆盖行为的情况下,判断第一进程与第二进程之间是否具备同步关系、以及判断第一进程所在第一CPU的任务队列中是否包含1个任务;
第一调度模块403,用于在所述第一进程与所述第二进程之间具备同步关系、以及所述第一CPU的任务队列中包含1个任务的情况下,将所述第二进程放置在所述第一CPU中处理;所述第一进程与所述第二进程具备同步关系,表征所述第一进程在调度第二进程后将进入等待状态。
可选地,所述装置还可以包括:
第一搜索模块,用于在所述第一进程与所述第二进程之间不具备同步关系、和/或、所述第一CPU的任务队列中包含多个任务的情况下,在多个CPU中搜索处于空闲状态的第二CPU;
第二调度模块,用于将所述第二进程放置在所述第二CPU中处理。
可选地,所述装置还可以包括:
第二判断模块,用于在所述调度请求要求负载均衡、且所述第二进程对应进程唤醒行为的情况下,判断第一进程与第二进程之间是否具备亲和关系;
第三判断模块,用于在所述第一进程与所述第二进程之间具备亲和关系的情况下, 判断第一进程与第二进程之间是否具备同步关系、以及判断第一进程所在第一CPU的任务队列中是否包含1个任务;
第三调度模块,用于在所述第一进程与所述第二进程之间具备同步关系、以及所述第一CPU的任务队列中包含1个任务的情况下,将所述第二进程放置在所述第一CPU中处理。
可选地,所述第二判断模块可以包括:
共享判断模块,用于判断第一进程与第二进程之间是否涉及共享;和/或
唤醒次数判断模块,用于根据第一进程在预设时段内进行进程唤醒的次数,判断第一进程与第二进程是否具备亲和关系。
可选地,所述装置还可以包括:
第二搜索模块,用于在所述第一进程与所述第二进程之间不具备同步关系、和/或、所述第一CPU的任务队列中包含多个任务的情况下,在多个CPU中搜索邻近所述第一CPU且处于空闲状态的第三CPU;
第三调度模块,用于将所述第二进程放置在所述第三CPU中处理。
综上,本申请实施例的多CPU环境下的进程调度装置,在该调度请求要求负载均衡、且该第二进程对应进程创建行为或进程覆盖行为的情况下,在判断A的判断结果表征第一进程与该第二进程具备同步关系、以及判断B的判断结果表征该第一CPU的任务队列中包含1个任务的情况下,第一进程执行完第二进程的调度后即可进入等待状态,而第一进程进入等待状态后第一CPU可处于休闲状态;因此,本申请实施例在此种情况下将该第二进程放置在该第一CPU中处理,能够使第二进程被快速运行,也即能够降低第二进程的调度延迟。并且,由于第一进程和第二进程均运行在第一CPU上,而相同CPU环境下的进程间通信速度通常高于不同CPU环境下的进程间通信速度,因此,本申请实施例能够提高第一进程与第二进程之间的交互性能。
本申请实施例提供了一种非易失性可读存储介质,该存储介质中存储有一个或多个模块(programs),该一个或多个模块被应用在设备时,可以使得该设备执行本申请实施例中各方法步骤的指令(instructions)。
本申请实施例提供了一个或多个机器可读介质,其上存储有指令,当由一个或多个处理器执行时,使得电子设备执行如上述实施例中一个或多个所述的方法。本申请实施例中,所述电子设备包括终端设备、服务器(集群)等各类型的设备。
本公开的实施例可被实现为使用任意适当的硬件,固件,软件,或及其任意组合进行想要的配置的装置,该装置可包括:终端设备、服务器(集群)等电子设备。图5示意性地示出了可被用于实现本申请中所述的各个实施例的示例性装置1100。
对于一个实施例,图5示出了示例性装置1100,该装置具有一个或多个处理器1102、被耦合到(一个或多个)处理器1102中的至少一个的控制模块(芯片组)1104、被耦合到控制模块1104的存储器1106、被耦合到控制模块1104的非易失性存储器(NVM)/存储设 备1108、被耦合到控制模块1104的一个或多个输入/输出设备1110,以及被耦合到控制模块1104的网络接口1112。
处理器1102可包括一个或多个单核或多核处理器,处理器1102可包括通用处理器或专用处理器(例如图形处理器、应用处理器、基频处理器等)的任意组合。在一些实施例中,装置1100能够作为本申请实施例中所述终端设备、服务器(集群)等设备。
在一些实施例中,装置1100可包括具有指令1114的一个或多个计算机可读介质(例如,存储器1106或NVM/存储设备1108)以及与该一个或多个计算机可读介质相合并被配置为执行指令1114以实现模块从而执行本公开中所述的动作的一个或多个处理器1102。
对于一个实施例,控制模块1104可包括任意适当的接口控制器,以向(一个或多个)处理器1102中的至少一个和/或与控制模块1104通信的任意适当的设备或组件提供任意适当的接口。
控制模块1104可包括存储器控制器模块,以向存储器1106提供接口。存储器控制器模块可以是硬件模块、软件模块和/或固件模块。
存储器1106可被用于例如为装置1100加载和存储数据和/或指令1114。对于一个实施例,存储器1106可包括任意适当的易失性存储器,例如,适当的DRAM。在一些实施例中,存储器1106可包括双倍数据速率类型四同步动态随机存取存储(DDR4SDRAM)。
对于一个实施例,控制模块1104可包括一个或多个输入/输出控制器,以向NVM/存储设备1108及(一个或多个)输入/输出设备1110提供接口。
例如,NVM/存储设备1108可被用于存储数据和/或指令1114。NVM/存储设备1108可包括任意适当的非易失性存储器(例如,闪存)和/或可包括任意适当的(一个或多个)非易失性存储设备(例如,一个或多个硬盘驱动器(HDD)、一个或多个光盘(CD)驱动器和/或一个或多个数字通用光盘(DVD)驱动器)。
NVM/存储设备1108可包括在物理上作为装置1100被安装在其上的设备的一部分的存储资源,或者其可被该设备访问可不必作为该设备的一部分。例如,NVM/存储设备1108可通过网络经由(一个或多个)输入/输出设备1110进行访问。
(一个或多个)输入/输出设备1110可为装置1100提供接口以与任意其他适当的设备通信,输入/输出设备1110可以包括通信组件、音频组件、传感器组件等。网络接口1112可为装置1100提供接口以通过一个或多个网络通信,装置1100可根据一个或多个无线网络标准和/或协议中的任意标准和/或协议来与无线网络的一个或多个组件进行无线通信,例如接入基于通信标准的无线网络,如WiFi(无线保真,Wireless Fidelity)、2G(第二代手机通信技术规格,2-Generation wireless telephone technology)、3G(第三代移动通信技术,3rd-Generation Mobile Communication Technology)、4G(第四代移动通信技术,4th Generation Mobile Communication Technology)、5G(第五代移动通信技术,5th Generation Mobile Communication Technology)等,或它们的组合进行无线通信。
对于一个实施例,(一个或多个)处理器1102中的至少一个可与控制模块1104的一个或多个控制器(例如,存储器控制器模块)的逻辑封装在一起。对于一个实施例,(一个或多个)处理器1102中的至少一个可与控制模块1104的一个或多个控制器的逻辑封装在一起以形成系统级封装(SiP,System In a Package)。对于一个实施例,(一个或多个)处理器1102中的至少一个可与控制模块1104的一个或多个控制器的逻辑集成在同一模具上。对于一个实施例,(一个或多个)处理器1102中的至少一个可与控制模块1104的一个或多个控制器的逻辑集成在同一模具上以形成片上系统(SoC)。
在各个实施例中,装置1100可以但不限于是:服务器、台式计算设备或移动计算设备(例如,膝上型计算设备、手持计算设备、平板电脑、上网本等)等终端设备。在各个实施例中,装置1100可具有更多或更少的组件和/或不同的架构。例如,在一些实施例中,装置1100包括一个或多个摄像机、键盘、液晶显示器(LCD,Liquid Crystal Display)屏幕(包括触屏显示器)、非易失性存储器端口、多个天线、图形芯片、专用集成电路(ASIC,Application Specific Integrated Circuit)和扬声器。
其中,检测装置中可采用主控芯片作为处理器或控制模块,传感器数据、位置信息等存储到存储器或NVM/存储设备中,传感器组可作为输入/输出设备,通信接口可包括网络接口。
对于装置实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
本申请实施例是参照根据本申请实施例的方法、终端设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理终端设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理终端设备的处理器执行的指令产生用于实现在流程图的一个流程或多个流程和/或方框图的一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理终端设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图的一个流程或多个流程和/或方框图的一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理终端设备上,使得在计算机或其他可编程终端设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程终端设备上执行的指令提供用于实现在流程图的一个流程或多个流程和/或方框图的一个方框或多个方框中指定的功能的步骤。
尽管已描述了本申请实施例的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本申请实施例范围的所有变更和修改。
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者终端设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者终端设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者终端设备中还存在另外的相同要素。
以上对本申请所提供的一种多CPU环境下的进程调度方法和装置、一种电子设备和一种机器可读介质,进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。

Claims (10)

  1. 一种多CPU环境下的进程调度方法,其特征在于,所述方法包括:
    接收第一进程针对第二进程的调度请求;
    在所述调度请求要求负载均衡、且所述第二进程对应进程创建行为或进程覆盖行为的情况下,判断第一进程与第二进程之间是否具备同步关系、以及判断第一进程所在第一CPU的任务队列中是否包含1个任务;
    在所述第一进程与所述第二进程之间具备同步关系、以及所述第一CPU的任务队列中包含1个任务的情况下,将所述第二进程放置在所述第一CPU中处理;所述第一进程与所述第二进程具备同步关系,表征所述第一进程在调度第二进程后将进入等待状态。
  2. 根据权利要求1所述的方法,其特征在于,所述方法还包括:
    在所述第一进程与所述第二进程之间不具备同步关系、和/或、所述第一CPU的任务队列中包含多个任务的情况下,在多个CPU中搜索处于空闲状态的第二CPU,并将所述第二进程放置在所述第二CPU中处理。
  3. 根据权利要求1所述的方法,其特征在于,所述方法还包括:
    在所述调度请求要求负载均衡、且所述第二进程对应进程唤醒行为的情况下,判断第一进程与第二进程之间是否具备亲和关系;
    在所述第一进程与所述第二进程之间具备亲和关系的情况下,判断第一进程与第二进程之间是否具备同步关系、以及判断第一进程所在第一CPU的任务队列中是否包含1个任务;
    在所述第一进程与所述第二进程之间具备同步关系、以及所述第一CPU的任务队列中包含1个任务的情况下,将所述第二进程放置在所述第一CPU中处理。
  4. 根据权利要求3所述的方法,其特征在于,所述判断第一进程与第二进程是否具备亲和关系,包括:
    判断第一进程与第二进程之间是否涉及共享;和/或
    根据第一进程在预设时段内进行进程唤醒的次数,判断第一进程与第二进程是否具备亲和关系。
  5. 根据权利要求3所述的方法,其特征在于,所述方法还包括:
    在所述第一进程与所述第二进程之间不具备同步关系、和/或、所述第一CPU的任务队列中包含多个任务的情况下,在多个CPU中搜索邻近所述第一CPU且处于空闲状态的第三CPU,并将所述第二进程放置在所述第三CPU中处理。
  6. 一种多CPU环境下的进程调度装置,其特征在于,所述装置包括:
    接收模块,用于接收第一进程针对第二进程的调度请求;
    第一判断模块,用于在所述调度请求要求负载均衡、且所述第二进程对应进程创建行为或进程覆盖行为的情况下,判断第一进程与第二进程之间是否具备同步关系、以及 判断第一进程所在第一CPU的任务队列中是否包含1个任务;
    第一调度模块,用于在所述第一进程与所述第二进程之间具备同步关系、以及所述第一CPU的任务队列中包含1个任务的情况下,将所述第二进程放置在所述第一CPU中处理;所述第一进程与所述第二进程具备同步关系,表征所述第一进程在调度第二进程后将进入等待状态。
  7. 根据权利要求6所述的装置,其特征在于,所述装置还包括:
    第一搜索模块,用于在所述第一进程与所述第二进程之间不具备同步关系、和/或、所述第一CPU的任务队列中包含多个任务的情况下,在多个CPU中搜索处于空闲状态的第二CPU;
    第二调度模块,用于将所述第二进程放置在所述第二CPU中处理。
  8. 根据权利要求6所述的装置,其特征在于,所述装置还包括:
    第二判断模块,用于在所述调度请求要求负载均衡、且所述第二进程对应进程唤醒行为的情况下,判断第一进程与第二进程之间是否具备亲和关系;
    第三判断模块,用于在所述第一进程与所述第二进程之间具备亲和关系的情况下,判断第一进程与第二进程之间是否具备同步关系、以及判断第一进程所在第一CPU的任务队列中是否包含1个任务;
    第三调度模块,用于在所述第一进程与所述第二进程之间具备同步关系、以及所述第一CPU的任务队列中包含1个任务的情况下,将所述第二进程放置在所述第一CPU中处理。
  9. 一种电子设备,其特征在于,包括:处理器;和
    存储器,其上存储有可执行代码,当所述可执行代码被执行时,使得所述处理器执行如权利要求1-5中任一项所述的方法。
  10. 一种机器可读介质,其上存储有可执行代码,当所述可执行代码被执行时,使得处理器执行如权利要求1-5中任一项所述的方法。
PCT/CN2023/122260 2022-12-06 2023-09-27 多cpu环境下的进程调度方法、装置、电子设备和介质 WO2024119988A1 (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202211552730.3 2022-12-06

Publications (1)

Publication Number Publication Date
WO2024119988A1 true WO2024119988A1 (zh) 2024-06-13

Family

ID=

Similar Documents

Publication Publication Date Title
US11853809B2 (en) Systems, methods and devices for determining work placement on processor cores
JP6199477B2 (ja) ゲストオペレーティングシステムおよび仮想プロセッサとともにハイパーバイザを使用するシステムおよび方法
US9135126B2 (en) Multi-core re-initialization failure control system
US9135060B2 (en) Method and apparatus for migrating task in multicore platform
US8478926B1 (en) Co-processing acceleration method, apparatus, and system
US9697124B2 (en) Systems and methods for providing dynamic cache extension in a multi-cluster heterogeneous processor architecture
US10402223B1 (en) Scheduling hardware resources for offloading functions in a heterogeneous computing system
US9411649B2 (en) Resource allocation method
CN108549574B (zh) 线程调度管理方法、装置、计算机设备和存储介质
US10013264B2 (en) Affinity of virtual processor dispatching
US10048986B2 (en) Method and device for allocating browser processes according to a selected browser process mode
US20110219373A1 (en) Virtual machine management apparatus and virtualization method for virtualization-supporting terminal platform
US20130152100A1 (en) Method to guarantee real time processing of soft real-time operating system
WO2021022964A1 (zh) 一种基于多核系统的任务处理方法、装置及计算机可读存储介质
CN113590508B (zh) 动态可重构的内存地址映射方法及装置
US11640305B2 (en) Wake-up and timer for scheduling of functions with context hints
CN115617494B (zh) 多cpu环境下的进程调度方法、装置、电子设备和介质
US20210357339A1 (en) Efficient management of bus bandwidth for multiple drivers
CN110795323A (zh) 负载统计方法、装置、存储介质及电子设备
US11422857B2 (en) Multi-level scheduling
TW202107408A (zh) 波槽管理之方法及裝置
WO2024119988A1 (zh) 多cpu环境下的进程调度方法、装置、电子设备和介质
US10884477B2 (en) Coordinating accesses of shared resources by clients in a computing device
US9176910B2 (en) Sending a next request to a resource before a completion interrupt for a previous request
CN114443255A (zh) 一种线程调用方法和装置