CN114461404B - 一种进程迁移方法、计算设备及可读存储介质 - Google Patents

一种进程迁移方法、计算设备及可读存储介质 Download PDF

Info

Publication number
CN114461404B
CN114461404B CN202210336534.6A CN202210336534A CN114461404B CN 114461404 B CN114461404 B CN 114461404B CN 202210336534 A CN202210336534 A CN 202210336534A CN 114461404 B CN114461404 B CN 114461404B
Authority
CN
China
Prior art keywords
cpu
migrating
last
target
affinity
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
CN202210336534.6A
Other languages
English (en)
Other versions
CN114461404A (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.)
Uniontech Software Technology Co Ltd
Original Assignee
Uniontech Software Technology 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 Uniontech Software Technology Co Ltd filed Critical Uniontech Software Technology Co Ltd
Priority to CN202210336534.6A priority Critical patent/CN114461404B/zh
Priority to CN202210619122.3A priority patent/CN115391026A/zh
Publication of CN114461404A publication Critical patent/CN114461404A/zh
Application granted granted Critical
Publication of CN114461404B publication Critical patent/CN114461404B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/505Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the load
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5083Techniques for rebalancing the load in a distributed system
    • G06F9/5088Techniques for rebalancing the load in a distributed system involving task migration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/544Buffers; Shared memory; Pipes
    • YGENERAL 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
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE 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/00Energy efficient computing, e.g. low power processors, power management or thermal management

Abstract

本发明公开了一种进程迁移方法、计算设备及可读存储介质,该方法包括:当第一进程唤醒第二进程时,确定第一进程所在的CPU是否处于空闲状态,第一进程为执行唤醒流程的进程,第二进程为被所述第一进程唤醒的进程;如果第一进程所在的CPU不处于空闲状态,则基于第一进程与第二进程的亲和性,将第二进程迁移到计算设备的目标CPU中。通过本发明的进程迁移方法提升了程序运行的性能。

Description

一种进程迁移方法、计算设备及可读存储介质
技术领域
本发明涉及计算机技术领域,尤其涉及一种进程迁移方法、计算设备及可读存储介质。
背景技术
当两个进程共享变量,共享内存,共享指令段,频繁竞争同一个锁时,那么这两个进程间拥有进程亲和性。共享的内容是其共有资源。对于共有资源是内存或变量或者指令段的进程,若运行在同一个CPU上,可以共享CPU私有cache,只需要加载一次即可。若运行在不同的CPU上,则需要多加载一次cache。且在一个CPU修改了共享变量或内存后,另一个CPU需要通过总线同步cache状态,付出的代价是比较大的。
在现有的进程迁移方法中,内核会优先选择负载小的CPU,并将wakee进程迁移到负载小的CPU中,导致具有亲和性的waker和wakee进程无法在同一个CPU上运行,运行效率低。现有的方案在将wakee进程迁移到waker进程所在的CPU上运行后,在运行负载均衡时,waker和wakee进程又马上迁移到不同的CPU上,导致性能大幅下降。
为此,需要一种进程迁移方法,以解决现有技术方案中存在的问题。
发明内容
为此,本发明提供一种进程迁移方法、系统、计算设备及可读存储介质,以解决或至少缓解上面存在的问题。
根据本发明的一个方面,提供一种进程迁移方法,在计算设备中执行,该方法包括:当第一进程唤醒第二进程时,确定第一进程所在的CPU是否处于空闲状态,第一进程为执行唤醒流程的进程,第二进程为被第一进程唤醒的进程;如果第一进程所在的CPU不处于空闲状态,则基于第一进程与第二进程的亲和性,将第二进程迁移到计算设备的目标CPU中。
可选地,在根据本发明的进程迁移方法中,基于第一进程与第二进程的亲和性,将第二进程迁移到目标CPU中的步骤,包括:判断第一进程与第二进程是否具有亲和性;如果第一进程与第二进程具有亲和性,则判断第一进程所在的CPU中的进程数是否小于等于1;如果第一进程所在的CPU中的进程数小于等于1,则将第二进程迁移到第一进程所在的CPU中;否则,基于第二进程上一次运行所在的CPU是否与第一进程所在的CPU共享末级高速缓存,将第二进程迁移到目标CPU中。
可选地,在根据本发明的进程迁移方法中,在判断第一进程与第二进程是否具有亲和性的步骤之后,还包括:如果第一进程与第二进程不具有亲和性,则基于第二进程上一次运行所在的CPU是否与第一进程所在的CPU共享末级高速缓存,将第二进程迁移到目标CPU中。
可选地,在根据本发明的进程迁移方法中,基于第二进程上一次运行所在的CPU是否与第一进程所在的CPU共享末级高速缓存,将第二进程迁移到目标CPU的步骤中,包括:判断第二进程上一次运行所在的CPU是否与第一进程所在的CPU共享末级高速缓存;如果是,则基于第二进程上一次运行所在的CPU是否处于空闲状态,将第二进程迁移到目标CPU中;否则,从下向上遍历计算设备的调度域,从中选择负载最小的CPU作为目标CPU,并将第二进程迁移到目标CPU中。
可选地,在根据本发明的进程迁移方法中,基于第二进程上一次运行所在的CPU是否处于空闲状态,将第二进程迁移到目标CPU中的步骤,包括:判断第二进程上一次运行所在的CPU是否处于空闲状态;如果是,则将第二进程迁移到其上一次运行所在的CPU中;否则,确定第二进程上一次运行所在的CPU与第一进程所在的CPU共享的末级高速缓存所在的域中是否存在处于空闲状态的CPU;如果存在,则选择一个处于空闲状态的CPU作为目标CPU,并将第二进程迁移到目标CPU中;否则,从下向上遍历计算设备的调度域,从中选择负载最小的CPU作为目标CPU,并将第二进程迁移到目标CPU中。
可选地,在根据本发明的进程迁移方法中,还包括:如果第一进程所在的CPU处于空闲状态,则从下向上遍历计算设备的调度域,从中选择负载最小的CPU作为目标CPU,并将第二进程迁移到目标CPU中。
可选地,在根据本发明的进程迁移方法中,还包括:如果目标CPU为第一进程所在的CPU,则在第二进程的进程描述符中进行标记,以便在执行负载均衡时,优先选择未标记的进程进行迁移。
可选地,在根据本发明的进程迁移方法中,还包括:当执行负载均衡时,选择未标记的进程进行迁移;若在执行负载均衡的次数达到预定值时,仍未达到负载均衡,则对标记的进程进行标记清除并进行迁移。
根据本发明的又一个方面,提供一种计算设备,包括:至少一个处理器;存储器,存储有程序指令,其中,程序指令被配置为适于由上述至少一个处理器执行,程序指令包括用于执行如上的方法的指令。
根据本发明的还有一个方面,提供一种存储有程序指令的可读存储介质,当该程序指令被计算设备读取并执行时,使得该计算设备执行如上的方法。
根据本发明的进程迁移方法,每当第一进程唤醒第二进程时,判断两进程之间的亲和性关系,通过第一进程与第二进程之间的亲和性,为第二进程确定目标CPU,以提升程序运行的性能。
进一步地,通过将与第一进程有亲和性的第二进程尽可能地迁移到同一个CPU或临近的CPU上运行,以便最大化提升了第二进程对应的程序的运行性能。而对于可能造成的轻微负载差异,则由负载均衡进行调整。另外,通过对迁移到第一进程所在的CPU的第二进程进行标记,在执行负载均衡时优先迁移未标记的进程,避免迁移亲和性进程导致性能的大幅下降,同时也避免了唤醒后的进程迁移和其他时刻的负载均衡出现乒乓现象。
上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。
附图说明
为了实现上述以及相关目的,本文结合下面的描述和附图来描述某些说明性方面,这些方面指示了可以实践本文所公开的原理的各种方式,并且所有方面及其等效方面旨在落入所要求保护的主题的范围内。通过结合附图阅读下面的详细描述,本公开的上述以及其它目的、特征和优势将变得更加明显。遍及本公开,相同的附图标记通常指代相同的部件或元素。
图1示出了根据本发明一个实施例的计算设备100的示意图;
图2示出了根据本发明一个实施例的进程迁移方法200的流程图;以及
图3示出了根据本发明另一个实施例的进程迁移方法300的流程图。
具体实施方式
下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
本发明的进程迁移方法在计算设备中执行。计算设备可以是任意具有存储和计算能力的设备,其例如可以实现为服务器、工作站等,也可以实现为桌面计算机、笔记本计算机等个人配置的计算机,或者实现为手机、平板电脑、智能可穿戴设备、物联网设备等终端设备,但不限于此。
图1示出了根据本发明一个实施例的计算设备100的示意图。需要说明的是,图1所示的计算设备100仅为一个示例,在实践中,用于实施本发明的进程迁移方法的计算设备可以是任意型号的设备,其硬件配置情况可以与图1所示的计算设备100相同,也可以与图1所示的计算设备100不同。实践中用于实施本发明的进程迁移方法的计算设备可以对图1所示的计算设备100的硬件组件进行增加或删减,本发明对计算设备的具体硬件配置情况不做限制。
如图1所示,在基本的配置102中,计算设备100典型地包括系统存储器106和一个或者多个处理器104。存储器总线108可以用于在处理器104和系统存储器106之间的通信。
取决于期望的配置,处理器104可以是任何类型的处理,包括但不限于:微处理器(µP)、微控制器(µC)、数字信息处理器(DSP)或者它们的任何组合。处理器104可以包括诸如一级高速缓存110和二级高速缓存112之类的一个或者多个级别的高速缓存、处理器核心114和寄存器116。示例的处理器核心114可以包括运算逻辑单元(ALU)、浮点数单元(FPU)、数字信号处理核心(DSP核心)或者它们的任何组合。示例的存储器控制器118可以与处理器104一起使用,或者在一些实现中,存储器控制器118可以是处理器104的一个内部部分。
取决于期望的配置,系统存储器106可以是任意类型的存储器,包括但不限于:易失性存储器(诸如RAM)、非易失性存储器(诸如ROM、闪存等)或者它们的任何组合。计算设备中的物理内存通常指的是易失性存储器RAM,磁盘中的数据需要加载至物理内存中才能够被处理器104读取。系统存储器106可以包括操作系统120、一个或者多个应用122以及程序数据124。在一些实施方式中,应用122可以布置为在操作系统上由一个或多个处理器104利用程序数据124执行指令。操作系统120例如可以是Linux、Windows等,其包括用于处理基本系统服务以及执行依赖于硬件的任务的程序指令。应用122包括用于实现各种用户期望的功能的程序指令,应用122例如可以是浏览器、即时通讯软件、软件开发工具(例如集成开发环境IDE、编译器等)等,但不限于此。当应用122被安装到计算设备100中时,可以向操作系统120添加驱动模块。
在计算设备100启动运行时,处理器104会从存储器106中读取操作系统120的程序指令并执行。应用122运行在操作系统120之上,利用操作系统120以及底层硬件提供的接口来实现各种用户期望的功能。当用户启动应用122时,应用122会加载至存储器106中,处理器104从存储器106中读取并执行应用122的程序指令。
计算设备100还包括储存设备132,储存设备132包括可移除储存器136和不可移除储存器138,可移除储存器136和不可移除储存器138均与储存接口总线134连接。
计算设备100还可以包括有助于从各种接口设备(例如,输出设备142、外设接口144和通信设备146)到基本配置102经由总线/接口控制器130的通信的接口总线140。示例的输出设备142包括图形处理单元148和音频处理单元150。它们可以被配置为有助于经由一个或者多个A/V端口152与诸如显示器或者扬声器之类的各种外部设备进行通信。示例外设接口144可以包括串行接口控制器154和并行接口控制器156,它们可以被配置为有助于经由一个或者多个I/O端口158和诸如输入设备(例如,键盘、鼠标、笔、语音输入设备、触摸输入设备)或者其他外设(例如打印机、扫描仪等)之类的外部设备进行通信。示例的通信设备146可以包括网络控制器160,其可以被布置为便于经由一个或者多个通信端口164与一个或者多个其他计算设备162通过网络通信链路的通信。
网络通信链路可以是通信介质的一个示例。通信介质通常可以体现为在诸如载波或者其他传输机制之类的调制数据信号中的计算机可读指令、数据结构、程序模块,并且可以包括任何信息递送介质。“调制数据信号”可以这样的信号,它的数据集中的一个或者多个或者它的改变可以在信号中编码信息的方式进行。作为非限制性的示例,通信介质可以包括诸如有线网络或者专线网络之类的有线介质,以及诸如声音、射频(RF)、微波、红外(IR)或者其它无线介质在内的各种无线介质。这里使用的术语计算机可读介质可以包括存储介质和通信介质二者。
在根据本发明的计算设备100中,操作系统120包括用于执行本发明的进程迁移方法的指令,该指令可以指示处理器104执行本发明的进程迁移方法。需要说明的是,本发明的方法所针对的操作系统可以是任一款操作系统,例如:Linux、Windows,本发明的进程迁移方法不受限于操作系统的具体种类。
图2示出了根据本发明一个实施例的进程迁移方法200的流程图。方法200涉及第一进程和第二进程,第一进程为执行唤醒流程的进程,也即发起唤醒的进程,通常被称为waker进程。第二进程为被第一进程唤醒的进程,通常被称为wakee进程。
如图2所示,方法200始于步骤S210。
在步骤S210中,当第一进程唤醒第二进程时,确定第一进程所在的CPU是否处于空闲状态。
随后,在步骤S220中,如果第一进程所在的CPU不处于空闲状态,则基于第一进程与第二进程的亲和性,将第二进程迁移到目标CPU中。
根据本发明的实施例,判断第一进程与第二进程是否具有亲和性,如果第一进程与第二进程具有亲和性,则判断第一进程所在的CPU中的进程数是否小于等于1,如果第一进程所在的CPU中的进程数小于等于1,则将第二进程迁移到第一进程所在的CPU中;否则,基于第二进程上一次运行所在的CPU是否与第一进程所在的CPU共享末级高速缓存,将第二进程迁移到目标CPU中。如果第一进程与第二进程不具有亲和性,则基于第二进程上一次运行所在的CPU是否与第一进程所在的CPU共享末级高速缓存,将第二进程迁移到目标CPU中。
为了更好的说明本发明的完整实现过程,下面对本发明的进程迁移方法进行详细说明。图3示出了根据本发明另一个实施例的进程迁移方法300的流程图,方法300适于在计算设备(例如图1所示的计算设备100)中执行。如图3所示,方法300始于步骤S301。
图3示出了根据本发明一个实施例的进程迁移方法300的流程图。方法300涉及第一进程和第二进程,第一进程为执行唤醒流程的进程,也即发起唤醒的进程,通常被称为waker进程。第二进程为被第一进程唤醒的进程,通常被称为wakee进程。
如图3所示,方法300始于步骤S301。
在步骤S301中,当第一进程唤醒第二进程时,确定第一进程所在的CPU是否处于空闲状态。
如果第一进程所在的CPU处于空闲状态,则执行步骤S302,则从下向上遍历计算设备的调度域,从中选择负载最小的CPU作为目标CPU,并将第二进程迁移到目标CPU中。
通常,第一进程在唤醒第二进程的过程中,第一进程仍在运行中,即第一进程的状态不为空闲状态。而当第一进程在唤醒第二进程的过程中发生了中断、软中断等非进程运行过程时,会导致第一进程所在的CPU中没有进程在运行,则这时会出现第一进程所在的CPU处于空闲状态的情况。
根据本发明的一个实施例,如果第一进程所在的CPU处于空闲状态,表示第一进程在非进程上下文,也就是说第一进程不在进程的执行环境,则从下向上遍历计算设备的调度域,确定是否存在处于空闲状态的CPU。如果存在,则选择一个处于空闲状态的CPU作为目标CPU,并将第二进程迁移到目标CPU中。否则,从调度域中,确定进程数最少的CPU作为目标CPU,并将第二进程迁移到目标CPU中。由于调度域中有多个层级的domain,同一个CPU可以属于多个不同的domain,domain的层级越靠下,CPU间共享的资源则越多,在domain里迁移进程的代价就越小。因此,通过从下向上遍历调度域,实现优先在迁移代价较小的domain中寻找CPU。
如果第一进程所在的CPU不处于空闲状态,则执行步骤S303,基于第一进程与第二进程的亲和性,将第二进程迁移到目标CPU中。
具体地,在步骤S303中,判断第一进程与第二进程之间是否具有亲和性。根据本发明的一个实施例,可以通过wake_wide()函数判断第一进程和第二进程是否满足亲和性关系,该函数判断waker进程近期是否已经频繁唤醒了很多不同的进程,并返回true或false,若wake_wide()函数返回false,则表示第一进程近期并未频繁唤醒不同进程,而第一进程唤醒了第二进程,说明第一进程与第二进程之间具有一定的亲缘关系。若该函数返回true,则表示第一进程与第二进程之间不具有亲和性。
根据本发明的另一个实施例,可以通过wakee_flips判断进程的亲和性,操作系统内核在wakee_flips中记录waker进程唤醒不同的wakee进程的次数,数值越大表明waker进程多次唤醒了不同的进程且唤醒越频繁。通过判断第一进程的wakee_flips是否大于第一阈值确定第一进程与第二进程之间是否具有亲和性,其中,第一阈值的选取可以为操作系统内核中共享末级高速缓存(Last Level Cache,简称LLC)的CPU的数量。如果第一进程的wakee_flips大于第一阈值,则表示第一进程与第二进程之间不具有亲和性,如果第一进程的wakee_flips小于等于第一阈值,则表示第一进程与第二进程之间具有亲和性。
如果第一进程与第二进程之间具有亲和性,则执行步骤S304,如果第一进程与第二进程之间不具有亲和性,则执行步骤S305。
在步骤S304中,判断在第一进程所在的CPU上运行的进程数是否小于等于1。若在第一进程所在的CPU上运行的进程数小于等于1,则执行步骤S306,否则,执行步骤S305。
在步骤S305中,基于第二进程上一次运行所在的CPU是否与第一进程所在的CPU共享末级高速缓存,将第二进程迁移到目标CPU中。
根据本发明的实施例,可以通过prev_cpu获得第二进程上一次运行所在的CPU,然后判断第二进程上一次运行所在的CPU是否与第一进程所在的CPU共享末级高速缓存。若第二进程上一次运行所在的CPU与第一进程所在的CPU共享末级高速缓存,则执行步骤S307,否则,执行步骤S308。
在步骤S306中,将第二进程迁移到第一进程所在的CPU中。
在步骤S307中,判断第二进程上一次运行所在的CPU是否处于空闲状态,如果第二进程上一次运行所在的CPU是否处于空闲状态,则执行步骤S309,否则,执行步骤S310。
在步骤S309中,将第二进程迁移到其上一次运行所在的CPU中。
在步骤S310中,确定第二进程上一次运行所在的CPU与第一进程所在的CPU共享的末级高速缓存所在的域中是否存在处于空闲状态的CPU。如果第二进程上一次运行所在的CPU与第一进程所在的CPU共享的末级高速缓存所在的域中存在处于空闲状态的CPU,则执行步骤S311,否则,执行步骤S308。
在步骤S311中,选择一个处于空闲状态的CPU作为目标CPU,并将第二进程迁移到目标CPU中。
在步骤S308中,从下向上遍历计算设备的调度域,从中选择负载最小的CPU作为目标CPU,并将第二进程迁移到目标CPU中。
根据本发明的实施例,从下向上遍历计算设备的调度域,确定是否存在处于空闲状态的CPU。如果存在,则执行步骤S312,选择一个处于空闲状态的CPU作为目标CPU,并将第二进程迁移到目标CPU中。否则,执行步骤S313,从调度域中,确定进程数最少的CPU作为目标CPU,并将第二进程迁移到目标CPU中。由于调度域中有多个层级的domain,同一个CPU可以属于多个不同的domain,domain的层级越靠下,CPU间共享的资源则越多,在domain里迁移进程的代价就越小。因此,通过从下向上遍历调度域,实现优先在迁移代价较小的domain中寻找CPU。
根据本发明的进程迁移方法,优先考虑第一进程和第二进程之间是否具有亲和性,尽可能将有亲和性的第二进程迁移到第一进程所在的CPU上,以便最大化提升第二进程对应的程序的运行效率。即使不能将第二进程迁移到第一进程所在的CPU上,遍历调度域,尽可能找到与第一进程所在的CPU接近的CPU且负载小,将第二进程迁移到负载小且接近的CPU上,最大化提升第二进程对应的程序的运行效率。根据本发明的一个实施例,将第二进程迁移到目标CPU后,如果目标CPU为第一进程所在的CPU,则在第二进程的进程描述符(即task_struct结构体)中进行标记,以便在执行负载均衡时,优先选择未标记的进程进行迁移。可选地,在第二进程的task_struct结构体中记录wake affine标志。对于执行根据本发明的进程迁移方法后,带来的轻微负载差异或负载所占CPU的比例不超过阈值的,则允许第二进程运行在第一进程所在的CPU上,同时记录亲缘关系,由唤醒时带来的不均衡将在负载均衡时恢复均衡。
根据本发明的实施例,在进行负载均衡时,例如:周期性负载均衡、idle负载均衡、NUMA balancing(Non-Uniform Memory Access Balancing,简称NUMA balancing),先迁移不具有亲和性的进程。在尝试若干次其他进程迁移完后依然不均衡,则迁移亲和性的进程,尽可能地保证了性能的稳定。具体地,在执行负载均衡时,先将未标记的进程进行迁移,若执行负载均衡完成后,仍未达到均衡,继续执行负载均衡,当执行负载均衡的次数达到预定值时,仍未达到负载均衡,则迁移具有亲和性的进程,即有标记的进程,对于需要迁移的亲和性进程,清除其标记并进行迁移。在执行负载均衡时优先迁移未标记的进程,避免迁移亲和性进程导致性能的大幅下降,同时也避免了唤醒后的进程迁移和其他时刻的负载均衡出现乒乓现象。
根据本发明的一个实施例,还可以为计算设备中的每个CPU构建一个记录亲和性的红黑树,按照亲和性关系的强弱对每个CPU上的进程进行排序。构造红黑树可以增加进程迁移时对亲和性程度判断的准确性。
根据本发明的进程迁移方法,每当第一进程唤醒第二进程时,判断两进程的亲和性关系,通过第一进程与第二进程之间的亲和性,为第二进程确定目标CPU,以提升第二进程对应的程序的运行性能。
进一步地,通过将与第一进程有亲和性的第二进程尽可能地迁移到同一个CPU或临近的CPU上运行,以便最大化提升了第二进程对应的程序的运行性能。而对于可能造成的轻微负载差异,则由负载均衡进行调整。另外,通过对迁移到第一进程所在的CPU的第二进程进行标记,在执行负载均衡时优先迁移未标记的进程,避免迁移亲和性进程导致性能的大幅下降,同时也避免了唤醒后的进程迁移和其他时刻的负载均衡出现乒乓现象。
这里描述的各种技术可结合硬件或软件,或者它们的组合一起实现。从而,本发明的方法和设备,或者本发明的方法和设备的某些方面或部分可采取嵌入有形媒介,例如可移动硬盘、U盘、软盘、CD-ROM或者其它任意机器可读的存储介质中的程序代码(即指令)的形式,其中当程序被载入诸如计算机之类的机器,并被所述机器执行时,所述机器变成实践本发明的设备。
在程序代码在可编程计算机上执行的情况下,移动终端一般包括处理器、处理器可读的存储介质(包括易失性和非易失性存储器和/或存储元件),至少一个输入装置,和至少一个输出装置。其中,存储器被配置用于存储程序代码;处理器被配置用于根据该存储器中存储的所述程序代码中的指令,执行本发明的进程迁移方法。
以示例而非限制的方式,可读介质包括可读存储介质和通信介质。可读存储介质存储诸如计算机可读指令、数据结构、程序模块或其它数据等信息。通信介质一般以诸如载波或其它传输机制等已调制数据信号来体现计算机可读指令、数据结构、程序模块或其它数据,并且包括任何信息传递介质。以上的任一种的组合也包括在可读介质的范围之内。
在此处所提供的说明书中,算法和显示不与任何特定计算机、虚拟系统或者其它设备固有相关。各种通用系统也可以与本发明的示例一起使用。根据上面的描述,构造这类系统所要求的结构是显而易见的。此外,本发明也不针对任何特定编程语言。应当明白,可以利用各种编程语言实现在此描述的本发明的内容,并且上面对特定语言所做的描述是为了披露本发明的最佳实施方式。
在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下被实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。
类似地,应当理解,为了精简本公开并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多特征。更确切地说,如下面的权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明的单独实施例。
本领域那些技术人员应当理解在本文所公开的示例中的设备的模块或单元或组件可以布置在如该实施例中所描述的设备中,或者可替换地可以定位在与该示例中的设备不同的一个或多个设备中。前述示例中的模块可以组合为一个模块或者此外可以分成多个子模块。
本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。
此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在下面的权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。
此外,所述实施例中的一些在此被描述成可以由计算机系统的处理器或者由执行所述功能的其它装置实施的方法或方法元素的组合。因此,具有用于实施所述方法或方法元素的必要指令的处理器形成用于实施该方法或方法元素的装置。此外,装置实施例的在此所述的元素是如下装置的例子:该装置用于实施由为了实施该发明的目的的元素所执行的功能。
如在此所使用的那样,除非另行规定,使用序数词“第一”、“第二”、“第三”等等来描述普通对象仅仅表示涉及类似对象的不同实例,并且并不意图暗示这样被描述的对象必须具有时间上、空间上、排序方面或者以任意其它方式的给定顺序。
尽管根据有限数量的实施例描述了本发明,但是受益于上面的描述,本技术领域内的技术人员明白,在由此描述的本发明的范围内,可以设想其它实施例。此外,应当注意,本说明书中使用的语言主要是为了可读性和教导的目的而选择的,而不是为了解释或者限定本发明的主题而选择的。因此,在不偏离所附权利要求书的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。对于本发明的范围,对本发明所做的公开是说明性的而非限制性的,本发明的范围由所附权利要求书限定。

Claims (9)

1.一种进程迁移方法,在计算设备中执行,所述方法包括:
当第一进程唤醒第二进程时,确定所述第一进程所在的CPU是否处于空闲状态;
如果所述第一进程所在的CPU不处于空闲状态,则基于所述第一进程与所述第二进程的亲和性,将所述第二进程迁移到所述计算设备的目标CPU中;
其中,所述基于所述第一进程与第二进程的亲和性,将所述第二进程迁移到目标CPU中的步骤,包括:
判断所述第一进程与所述第二进程是否具有亲和性;
如果所述第一进程与所述第二进程具有亲和性,则判断所述第一进程所在的CPU中的进程数是否小于等于1;
如果所述第一进程所在的CPU中的进程数小于等于1,则将所述第二进程迁移到所述第一进程所在的CPU中;
否则,基于所述第二进程上一次运行所在的CPU是否与所述第一进程所在的CPU共享末级高速缓存,将所述第二进程迁移到目标CPU中。
2.根据权利要求1所述的方法,其中,在所述判断所述第一进程与所述第二进程是否具有亲和性的步骤之后,还包括:
如果所述第一进程与所述第二进程不具有亲和性,则基于所述第二进程上一次运行所在的CPU是否与所述第一进程所在的CPU共享末级高速缓存,将所述第二进程迁移到目标CPU中。
3.根据权利要求1或2所述的方法,其中,所述基于所述第二进程上一次运行所在的CPU是否与所述第一进程所在的CPU共享末级高速缓存,将所述第二进程迁移到目标CPU的步骤中,包括:
判断所述第二进程上一次运行所在的CPU是否与所述第一进程所在的CPU共享末级高速缓存;
如果是,则基于所述第二进程上一次运行所在的CPU是否处于空闲状态,将所述第二进程迁移到目标CPU中;
否则,从下向上遍历所述计算设备的调度域,从中选择负载最小的CPU作为目标CPU,并将所述第二进程迁移到所述目标CPU中。
4.根据权利要求3所述的方法,其中,所述基于所述第二进程上一次运行所在的CPU是否处于空闲状态,将所述第二进程迁移到目标CPU中的步骤,包括:
判断所述第二进程上一次运行所在的CPU是否处于空闲状态;
如果是,则将所述第二进程迁移到其上一次运行所在的CPU中;
否则,确定所述第二进程上一次运行所在的CPU与所述第一进程所在的CPU共享的末级高速缓存所在的域中是否存在处于空闲状态的CPU;
如果存在,则选择一个处于空闲状态的CPU作为目标CPU,并将所述第二进程迁移到目标CPU中;
否则,从下向上遍历所述计算设备的调度域,从中选择负载最小的CPU作为目标CPU,并将所述第二进程迁移到所述目标CPU中。
5.根据权利要求1或2所述的方法,还包括:
如果所述第一进程所在的CPU处于空闲状态,则从下向上遍历所述计算设备的调度域,从中选择负载最小的CPU作为目标CPU,并将所述第二进程迁移到所述目标CPU中。
6.根据权利要求1或2所述的方法,还包括:
如果所述目标CPU为第一进程所在的CPU,则在所述第二进程的进程描述符中进行标记,以便在执行负载均衡时,优先选择未标记的进程进行迁移。
7.根据权利要求6所述的方法,还包括:
当执行负载均衡时,选择未标记的进程进行迁移;
若在执行负载均衡的次数达到预定值时,仍未达到负载均衡,则对标记的进程进行标记清除并进行迁移。
8.一种计算设备,包括:
至少一个处理器;以及
存储器,存储有程序指令,其中,所述程序指令被配置为适于由所述至少一个处理器执行,所述程序指令包括用于执行如权利要求1至7中任一项所述方法的指令。
9.一种存储有程序指令的可读存储介质,当所述程序指令被计算设备读取并执行时,使得所述计算设备执行如权利要求1至7中任一项所述方法。
CN202210336534.6A 2022-04-01 2022-04-01 一种进程迁移方法、计算设备及可读存储介质 Active CN114461404B (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN202210336534.6A CN114461404B (zh) 2022-04-01 2022-04-01 一种进程迁移方法、计算设备及可读存储介质
CN202210619122.3A CN115391026A (zh) 2022-04-01 2022-04-01 一种进程迁移方法、计算设备及可读存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210336534.6A CN114461404B (zh) 2022-04-01 2022-04-01 一种进程迁移方法、计算设备及可读存储介质

Related Child Applications (1)

Application Number Title Priority Date Filing Date
CN202210619122.3A Division CN115391026A (zh) 2022-04-01 2022-04-01 一种进程迁移方法、计算设备及可读存储介质

Publications (2)

Publication Number Publication Date
CN114461404A CN114461404A (zh) 2022-05-10
CN114461404B true CN114461404B (zh) 2022-07-08

Family

ID=81416721

Family Applications (2)

Application Number Title Priority Date Filing Date
CN202210336534.6A Active CN114461404B (zh) 2022-04-01 2022-04-01 一种进程迁移方法、计算设备及可读存储介质
CN202210619122.3A Pending CN115391026A (zh) 2022-04-01 2022-04-01 一种进程迁移方法、计算设备及可读存储介质

Family Applications After (1)

Application Number Title Priority Date Filing Date
CN202210619122.3A Pending CN115391026A (zh) 2022-04-01 2022-04-01 一种进程迁移方法、计算设备及可读存储介质

Country Status (1)

Country Link
CN (2) CN114461404B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115617489B (zh) * 2022-11-08 2023-03-28 统信软件技术有限公司 操作系统迁移方法、迁移应用及迁移应用部署方法
CN115617494B (zh) * 2022-12-06 2023-03-14 中科方德软件有限公司 多cpu环境下的进程调度方法、装置、电子设备和介质

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5826079A (en) * 1996-07-05 1998-10-20 Ncr Corporation Method for improving the execution efficiency of frequently communicating processes utilizing affinity process scheduling by identifying and assigning the frequently communicating processes to the same processor
WO2012153200A1 (en) * 2011-05-10 2012-11-15 International Business Machines Corporation Process grouping for improved cache and memory affinity
CN104572272B (zh) * 2013-10-12 2018-02-09 杭州华为数字技术有限公司 一种任务调度方法、装置及系统
CN104572314B (zh) * 2013-10-22 2018-04-10 华为技术有限公司 一种进程间的通信方法及装置
CN113296934A (zh) * 2020-10-30 2021-08-24 阿里巴巴集团控股有限公司 调度进程的方法以及装置
CN113553164B (zh) * 2021-09-17 2022-02-25 统信软件技术有限公司 一种进程迁移方法、计算设备及存储介质

Also Published As

Publication number Publication date
CN114461404A (zh) 2022-05-10
CN115391026A (zh) 2022-11-25

Similar Documents

Publication Publication Date Title
CN114461404B (zh) 一种进程迁移方法、计算设备及可读存储介质
CN113326140A (zh) 一种进程迁移方法、装置、计算设备以及存储介质
CN111428241B (zh) 一种多安全访问策略控制方法及计算设备
CN114416310A (zh) 一种多处理器负载均衡方法、计算设备及存储介质
CN113885936A (zh) 一种定制镜像中软件包依赖的解决方法
CN112988464A (zh) 一种断电保护方法及计算设备
CN114610337A (zh) 一种多系统安装方法、计算设备及存储介质
CN114691226A (zh) 一种多操作系统切换运行方法、计算设备及存储介质
CN109840151B (zh) 一种用于多核处理器的负载均衡方法和装置
CN104714792A (zh) 多进程共享数据处理方法和装置
US20070033371A1 (en) Method and apparatus for establishing a cache footprint for shared processor logical partitions
CN113204385A (zh) 一种插件加载方法、装置、计算设备及可读存储介质
US20230205576A1 (en) Instruction offload to processor cores in attached memory
CN113515388A (zh) 一种进程调度方法、装置、计算设备及可读存储介质
CN113326214B (zh) 一种页缓存管理方法、计算设备及可读存储介质
CN114691549A (zh) 一种文件写入方法、装置及计算设备
CN113452532B (zh) 一种网络通信方法、计算设备及可读存储介质
CN114265677A (zh) 一种用于负载均衡的调度方法、装置与计算设备
CN111563259B (zh) 一种傀儡进程检测方法、装置、可读存储介质及计算设备
CN114510706A (zh) 基于物理接口的权限控制方法、装置及计算设备
CN112181516A (zh) 应用软件的执行方法及计算设备
CN114003290A (zh) 一种涉及指令替换的应用程序运行方法和装置
CN112000611A (zh) 图数据划分方法、处理方法及电子设备
CN113791873B (zh) 一种虚拟机创建方法、计算设备及存储介质
CN113918527B (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