CN112698934B - 资源调度方法和装置、pmd调度装置、电子设备、存储介质 - Google Patents

资源调度方法和装置、pmd调度装置、电子设备、存储介质 Download PDF

Info

Publication number
CN112698934B
CN112698934B CN201911006164.4A CN201911006164A CN112698934B CN 112698934 B CN112698934 B CN 112698934B CN 201911006164 A CN201911006164 A CN 201911006164A CN 112698934 B CN112698934 B CN 112698934B
Authority
CN
China
Prior art keywords
pmd
thread
cpu
threads
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.)
Active
Application number
CN201911006164.4A
Other languages
English (en)
Other versions
CN112698934A (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.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies 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 Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Priority to CN201911006164.4A priority Critical patent/CN112698934B/zh
Publication of CN112698934A publication Critical patent/CN112698934A/zh
Application granted granted Critical
Publication of CN112698934B publication Critical patent/CN112698934B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

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
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/5018Thread allocation
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本公开实施例提供了一种资源调度方法和装置、PMD调度装置、电子设备、存储介质,涉及计算机领域。方法包括:将多个PMD线程绑定同一CPU,多个PMD线程包括分别从每个进程中选取的任意一个,且一个PMD线程在一个CPU中运行,获取每个PMD线程在相应CPU中的第一负载,根据第一负载控制至少部分CPU中的至少部分PMD线程的状态;或者,根据第一负载和预设的各进程的优先级控制至少部分CPU中的至少部分PMD线程的状态,其中,状态包括暂停、启动和维持中的至少一种。通过本公开实施例中多个PMD线程绑定同一CPU,并根据第一负载,或者,第一负载和优先级对PMD线程的状态进行控制,可以实现不同进程对CPU资源的共享,从而实现节约资源,提高任务处理效率的技术效果。

Description

资源调度方法和装置、PMD调度装置、电子设备、存储介质
技术领域
本公开涉及计算机技术领域,尤其涉及一种资源调度方法和装置、PMD调度装置、电子设备、存储介质。
背景技术
虚拟化技术是一种将底层硬件设备与上层操作系统、应用程序分离的去耦合技术,而OpenFlow交换广泛应用于数据中心物理和虚拟交换机中,虚拟交换机VirtualSwitch(vSwitch)是运行在虚拟化平台上的一种典型的OpenFlow虚拟交换机。
在现有技术中,对资源调度采用的方法主要包括:一个进程对应至少一个PMD线程,一个CPU绑定一个PMD线程,针对同一进程,对与该进程对应的K个PMD线程的状态属性进行检测,得到检测结果,根据检测结果和预设的调整触发条件对CPU资源进行调度和分配,从而实现同一进程的PMD线程共享CPU资源。
然而,发明人在实现本公开的过程中,发现至少存在以下问题:基于现有技术中的方案,无法实现不同进程的PMD线程对CPU资源的共享。
发明内容
为解决上述技术问题,本公开实施例提供了一种资源调度方法和装置、PMD调度装置、电子设备、存储介质。
根据本公开实施例的一个方面,本公开实施例提供了一种资源调度方法,所述方法包括:
将多个PMD线程绑定同一CPU,所述多个PMD线程包括分别从每个进程中选取的任意一个,且一个PMD线程在一个所述CPU中运行;
获取每个PMD线程在相应CPU中的第一负载;
根据所述第一负载控制至少部分CPU中的至少部分PMD线程的状态;或者,
根据所述第一负载和预设的各所述进程的优先级控制至少部分CPU中的至少部分PMD线程的状态;
其中,所述状态包括暂停、启动和维持中的至少一种。
在一些实施例中,所述根据所述第一负载控制至少部分CPU中的至少部分PMD线程的状态包括:
响应于第一进程对应的任一PMD线程的第一负载大于预设的第一阈值,控制第二进程对应的至少部分PMD线程暂停,并启动所述第一进程的至少部分PMD线程,其中,所述进程包括所述第一进程和所述第二进程。
在一些实施例中,所述控制第二进程对应的至少部分PMD线程暂停包括:
获取所述第二进程对应的CPU的空闲时长;
确定空闲时长最大的CPU;
控制所述空闲时长最大的CPU对应的PMD线程暂停。
在一些实施例中,暂停的所述第二进程对应的至少部分PMD线程与启动的所述第一进程的至少部分PMD线程所绑定的CPU相同。
在一些实施例中,所述根据所述第一负载控制至少部分CPU中的至少部分PMD线程的状态包括:
响应于所述第一进程对应的任一PMD线程的第一负载小于预设的第二阈值,控制所述第一进程对应的至少部分PMD线程暂停,并控制所述第二进程对应的至少部分PMD线程启动,其中,所述第一阈值大于所述第二阈值。
在一些实施例中,在根据所述第一负载控制至少部分CPU中的至少部分PMD线程的暂停;或者,根据所述第一负载和预设的各所述进程的优先级控制至少部分CPU中的至少部分PMD线程的暂停之前,所述方法还包括:
将待暂停的PMD线程的任务分配至与其处于相同进程的其他PMD线程。
在一些实施例中,所述将待暂停的PMD线程的任务分配至与其处于相同进程的其他PMD线程包括:
获取所述其他PMD线程对应的第二负载;
确定最小的所述第二负载对应的PMD线程;
将所述待暂停的PMD线程的任务分配至所述最小的所述第二负载对应的PMD线程。
在一些实施例中,在所述根据所述第一负载控制至少部分CPU中的至少部分PMD线程的状态;或者,根据所述第一负载和预设的各所述进程的优先级控制至少部分CPU中的至少部分PMD线程的状态之后,所述方法还包括:
控制状态发生改变的PMD线程进入冷却期,所述冷却期是指在预设时间段内,不对所述状态发生改变的PMD线程进行调度。
在一些实施例中,所述获取每个PMD线程在相应CPU中的第一负载包括:
获取与其对应的PMD线程n轮处理的每个队列的第一数据报文数和相应的第一处理时长,n≥1;
获取预设的第二数据报文数和相应的第二处理时长;
根据所述第一数据报文数、所述第一处理时长、所述第二数据报文数和所述第二处理时长确定所述第一负载。
在一些实施例中,所述方法还包括:
为每个所述进程分别分配至少一个固定CPU,其中,不同进程对应的固定CPU不同,且暂停的PMD线程对应的CPU不包括所述固定CPU。
根据本公开实施例的另一个方面,本公开实施例还提供了,一种资源调度装置,所述装置包括:
配置模块,用于将多个PMD线程绑定同一CPU,所述多个PMD线程包括分别从每个进程中选取的任意一个,且一个PMD线程在一个所述CPU中运行;
获取模块,用于获取每个PMD线程在相应CPU中的第一负载;
第一控制模块,用于根据所述第一负载控制至少部分CPU中的至少部分PMD线程的状态,或者,根据所述第一负载和预设的各所述进程的优先级控制至少部分CPU中的至少部分PMD线程的状态,其中,所述状态包括暂停、启动和维持中的至少一种。
在一些实施例中,所述第一控制模块用于,响应于第一进程对应的任一PMD线程的第一负载大于预设的第一阈值,控制第二进程对应的至少部分PMD线程暂停,并启动所述第一进程的至少部分PMD线程,其中,所述进程包括所述第一进程和所述第二进程。
在一些实施例中,所述第一控制模块,用于获取所述第二进程对应的CPU的空闲时长,确定空闲时长最大的CPU,控制所述空闲时长最大的CPU对应的PMD线程暂停。
在一些实施例中,暂停的所述第二进程对应的至少部分PMD线程与启动的所述第一进程的至少部分PMD线程所绑定的CPU相同。
在一些实施例中,所述第一控制模块用于,响应于所述第一进程对应的任一PMD线程的第一负载小于预设的第二阈值,控制所述第一进程对应的至少部分PMD线程暂停,并控制所述第二进程对应的至少部分PMD线程启动,其中,所述第一阈值大于所述第二阈值。
在一些实施例中,所述装置还包括:
第一分配模块,用于将待暂停的PMD线程的任务分配至与其处于相同进程的其他PMD线程。
在一些实施例中,所述第一分配模块用于,获取所述其他PMD线程对应的第二负载,确定最小的所述第二负载对应的PMD线程,将所述待暂停的PMD线程的任务分配至所述最小的所述第二负载对应的PMD线程。
在一些实施例中,所述装置还包括:
第二控制模块,用于控制状态发生改变的PMD线程进入冷却期,所述冷却期是指在预设时间段内,不对所述状态发生改变的PMD线程进行调度。
在一些实施例中,所述获取模块用于,获取与其对应的PMD线程n轮处理的每个队列的第一数据报文数和相应的第一处理时长,n≥1,获取预设的第二数据报文数和相应的第二处理时长,根据所述第一数据报文数、所述第一处理时长、所述第二数据报文数和所述第二处理时长确定所述第一负载。
在一些实施例中,所述装置还包括:
第二分配模块,用于为每个所述进程分别分配至少一个固定CPU,其中,不同进程对应的固定CPU不同,且暂停的PMD线程对应的CPU不包括所述固定CPU。
根据本公开实施例的另一个方面,本公开实施例还提供了一种PMD调度装置,包括:至少一个PMD客户端和与每个所述PMD客户端连接的PMD调度器,其中,
所述PMD调度器用于,将多个PMD线程绑定同一CPU,所述多个PMD线程包括分别从每个进程中选取的任意一个,且一个PMD线程在一个所述CPU中运行;
所述PMD客户端用于,获取与其对应的PMD线程在相应CPU的第一负载,并将所述第一负载传输至所述PMD调度器,一个所述PMD客户端对应一个PMD线程;
所述PMD调度器还用于,根据所述第一负载控制至少部分CPU中的至少部分PMD线程的状态,或者,根据所述第一负载和预设的各所述进程的优先级控制至少部分CPU中的至少部分PMD线程的状态,其中,所述状态包括暂停、启动和维持中的至少一种。
在一些实施例中,所述PMD调度器具体用于,响应于第一进程对应的任一PMD线程的第一负载大于预设的第一阈值,控制第二进程对应的至少部分PMD线程暂停,并启动所述第一进程的至少部分PMD线程,其中,所述进程包括所述第一进程和所述第二进程。
在一些实施例中,所述PMD调度器具体用于,获取所述第二进程对应的CPU的空闲时长,确定空闲时长最大的CPU,控制所述空闲时长最大的CPU对应的PMD线程暂停。
在一些实施例中,暂停的所述第二进程对应的至少部分PMD线程与启动的所述第一进程的至少部分PMD线程所绑定的CPU相同。
在一些实施例中,所述PMD调度器具体用于,响应于所述第一进程对应的任一PMD线程的第一负载小于预设的第二阈值,控制所述第一进程对应的至少部分PMD线程暂停,并控制所述第二进程对应的至少部分PMD线程启动,其中,所述第一阈值大于所述第二阈值。
在一些实施例中,所述PMD调度器还用于,将待暂停的PMD线程的任务分配至与其处于相同进程的其他PMD线程。
在一些实施例中,所述PMD调度器具体用于,获取所述其他PMD线程对应的第二负载,确定最小的所述第二负载对应的PMD线程,将所述待暂停的PMD线程的进程分配至所述最小的所述第二负载对应的PMD线程。
在一些实施例中,所述PMD调度器还用于,控制状态发生改变的PMD线程进入冷却期,所述冷却期是指在预设时间段内,所述PMD调度器不对所述状态发生改变的PMD线程进行调度。
在一些实施例中,所述PMD客户端具体用于,获取与其对应的PMD线程n轮处理的每个队列的第一数据报文数和相应的第一处理时长,获取预设的第二数据报文数和相应的第二处理时长,根据所述第一数据报文数、所述第一处理时长、所述第二数据报文数和所述第二处理时长确定所述第一负载,n≥1。
在一些实施例中,所述PMD调度器还用于,为每个所述进程分别分配至少一个固定CPU,其中,不同进程对应的固定CPU不同,且暂停的PMD线程对应的CPU不包括所述固定CPU。
根据本公开实施例的另一个方面,本公开实施例还提供了一种资源调度系统,包括:多个CPU、为每个进程分别创建的多个PMD线程和如上任一实施例所述的PMD调度装置。
根据本公开实施例的另一个方面,本公开实施例还提供了一种电子设备,包括:
至少一个处理器;以及
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行如上任一实施例所述的方法。
根据本公开实施例的另一个方面,本公开实施例还提供了一种虚拟交换机,包括如上任一实施例所述的资源调度系统,或者,如上任一实施例所述的电子设备。
根据本公开实施例的另一个方面,本公开实施例还提供了一种计算机存储介质,所述计算机指令用于使所述计算机执行如上任一实施例所述的方法。
在本公开实施例中,公开了将多个PMD线程绑定同一CPU,多个PMD线程包括分别从每个进程中选取的任意一个,且一个PMD线程在一个CPU中运行,获取每个PMD线程在相应CPU中的第一负载,根据第一负载控制至少部分CPU中的至少部分PMD线程的状态,或者,根据第一负载和预设的各进程的优先级控制至少部分CPU中的至少部分PMD线程的状态,其中,状态包括暂停、启动和维持中的至少一种的技术方案,通过将不同进程的PMD线程绑定同一CPU,且根据第一负载,或者,第一负载和优先级控制PMD线程的状态,相当于在同一CPU中可以运行不同进程的PMD线程,因此,可以实现不同进程对CPU资源的共享,进而实现在提高新建连接性能的同时,提高吞吐量性能的技术效果。
附图说明
附图用于更好地理解本公开,不构成对本公开的限定。其中:
图1为本公开实施例的资源调度方法的应用场景示意图;
图2为本公开实施例的资源调度方法的流程示意图;
图3为本公开实施例的控制第二进程对应的至少部分PMD线程暂停的方法的流程示意图;
图4为本公开实施例的将待暂停的PMD线程的任务分配至与其处于相同进程的其他PMD线程的方法的流程示意图;
图5为本公开实施例的获取每个PMD线程在相应CPU中的第一负载的方法的流程示意图;
图6为本公开实施例的资源调度装置的示意图;
图7为本公开另一实施例的资源调度装置的示意图;
图8为本公开实施例的PMD调度装置的示意图;
图9为本公开实施例的PMD调度装置的应用示例的示意图;
图10为本公开实施例的电子设备的框图。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本公开相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本公开的一些方面相一致的装置和方法的例子。
本公开实施例的资源调度方法可适用于如1所示的应用场景。
在如图1所示的应用场景中,用户10可对服务器20进行操作,如在服务器20上创建虚拟机,并在创建的虚拟机上执行任务,本公开实施例的资源调度方法运行于服务器20。
值得说明的是,图1只是服务器20的一种展现形式,且创建的虚拟机的数量可基于需求进行确定。
下面以具体地实施例对本公开的技术方案以及本申请的技术方案如何解决上述技术问题进行详细说明。下面这几个具体的实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例中不再赘述。下面将结合附图,对本公开的实施例进行描述。
一个方面,本公开实施例提供了一种适用于上述场景的资源调度方法。
请参阅图2,图2为本公开实施例的资源调度方法的流程示意图。
如图2所示,该方法包括:
S101:将多个PMD线程绑定同一CPU,多个PMD线程包括分别从每个进程中选取的任意一个,且一个PMD线程在一个CPU中运行。
其中,轮询模式驱动程序(Poll Mode Driver,PMD)线程采取CPU主动轮询的方式接收、处理和转发来自虚拟网络或物理网卡的数据包,相对而言,由于PMD线程采用的主动轮询的方式对数据包进行接收、处理和转发,因此,PMD线程更适用于高速大流量的数据处理场景,以便提高数据处理的效率。
在本公开实施例中,一个进程至少包括一个任务。现以两个进程为例对本公开实施例的方案进行详细阐述。
可以理解的是,虚拟交换机为多层交换架构,当数据通过虚拟交换机的硬件表项转发,可直接命中硬件表项时,则对该数据的转发称为快路径数据面转发,在本公开实施例中,将快路径对应的进程简称为快进程;当数据通过虚拟交换机的硬件表项转发,无法命中硬件表项时,则将该数据传输至虚拟交换机的软件层,以便用CPU查询软件表项的方式对数据进行转发,则对该数据的转发称为慢路径数据面转发,在本公开实施例中,将慢路径对应的进程简称为慢进程。
在现有技术中,一个PMD线程一般固定绑定一个CPU,无论PMD线程的队列中是否有数据,PMD线程均利用其绑定的CPU不停的主动轮询网卡的接收队列,因此,在操作系统看来,PMD线程的CPU占用率总是100%。且宿主机给虚拟机交换机配置的CPU资源非常有限,若分配至快进程的CPU多,虽然可以提高吞吐量性能,但是却会降低新建连接性能;若分配至慢进程的PCU多,虽然可以提高新建连接性能,但是却会降低吞吐量性能。
而在该步骤中,将快进程中的一个PMD线程与慢进程中的一个PMD线程绑定同一CPU。相当于在同一CPU中可以运行不同进程的PMD线程,因此,可以实现快进程与慢进程共享CPU资源,即可以实现不同进程对CPU资源的共享,进而实现在提高新建连接性能的同时,提高吞吐量性能。
S102:获取每个PMD线程在相应CPU中的第一负载。
基于上述示例,计算快进程中的PMD线程在CPU中的第一负载,并计算慢进程中的PMD线程在该CPU中的第一负载。
S103:根据第一负载控制至少部分CPU中的至少部分PMD线程的状态。或者,
S104:根据第一负载和预设的各进程的优先级控制至少部分CPU中的至少部分PMD线程的状态。
其中,状态包括暂停、启动和维持中的至少一种。
示范性地,在一些实施例中,可基于快进程中的PMD线程的第一负载和慢进程中的PMD线程的第一负载,对部分CPU中的PMD线程的状态进行控制,如将部分CPU中的PMD线程的状态控制为暂停,或者,将部分CPU中的PMD线程的状态控制为启动,或者,将部分CPU中的PMD线程的状态控制维持,当然,也可在将部分CPU中的PMD线程的状态控制为暂停的同时,控制另外部分CPU中的PMD线程的状态控制为启动,等等。
当然,在另一些实施例中,可以同时基于快进程中的PMD线程的第一负载、慢进程中的PMD线程的第一负载、快进程的优先级和慢进程的优先级对部分CPU中的PMD线程的状态进行控制,具体控制可参见上述示例,此处不再赘述。
其中,快进程的优先级和慢进程的优先级是基于需求进行预先设置的。
现结合具体示例对本公开实施例的方案和基于该方案产生的技术效果进行阐述如下:
其中,快路径进程(第一进程)包括3个PMD线程,分别为PMD线程1、PMD线程2和PMD线程3,慢路径进程(第二进程)亦包括3个PMD线程,分别为PMD线程11、PMD线程12和PMD线程13,PMD线程1与PMD线程11绑定同一CPU1,PMD线程2与PMD线程12绑定同一CPU2,PMD线程3与PMD线程13绑定同一CPU3。获取第一负载时,PMD线程1在CPU1中的第一负载为F1,PMD线程2在CPU2中的第一负载为F2,PMD线程3在CPU3中的第一负载为F3,PMD线程11在CPU1中的第一负载为F11,PMD线程12在CPU2中的第一负载为F12,PMD线程13在CPU3中的第一负载为F13。
根据F1、F2、F3、F11、F12和F13控制CPU1中的PMD线程1暂停,控制PMD线程11开启,控制CPU2中的PMD线程12暂停,控制PMD线程2开启,控制CPU3中的PMD线程3和PMD线程13维持(即不发生改变)。
由于不同的进程的PMD线程被绑定于同一CPU,且可将部分CPU的部分PMD线程的状态进行控制,因此,可以实现不同进程的PMD线程对同一CPU资源的共享,并可以实现不同进程对同一CPU资源的共享,即可以实现进程间多PMD线程分时复用CPU资源的技术效果,进而实现节约资源,且可对PMD线程的状态进行控制,使得可以实现数据转发和处理的可控性,进而可实现提高数据转发和处理等的效率和可靠性的技术效果。
在一些实施例中,S103包括:响应于第一进程对应的任一PMD线程的第一负载大于预设的第一阈值,控制第二进程对应的至少部分PMD线程暂停,并启动第一进程的至少部分PMD线程,其中,进程包括第一进程和第二进程。
基于上述示例,该步骤可具体包括:分别判断F1、F2、F3、F11、F12和F13与第一阈值的大小,若F1大于第一阈值,则对慢进程中的至少PMD线程暂停,并启动快进程中的至少PMD线程。
在一些实施例中,若F1和F12均大于第一阈值,则可计算F1与第一阈值的差值D1,并计算F12与第一阈值的差值D2,比较D1和D2的大小,若D1>D2,则对慢进程中的至少PMD线程暂停,并启动快进程中的至少PMD线程;若D1<D2,则对慢进程中的至少PMD线程启动,并暂停快进程中的至少PMD线程;若D1=D2,则可随机对慢进程中的至少PMD线程暂停,并启动快进程中的至少PMD线程,或者对慢进程中的至少PMD线程开启,并暂停快进程中的至少PMD线程。
当然,在另一些实施例中,若D1=D2,也可以获取F1对应的优先级和F12的优先级,对优先级偏大的进程中的至少PMD线程开启,并暂停优先级偏小的进程中的至少PMD线程。
在一些实施例中,快进程的优先级为A,慢进程的优先级为B,且A>B,即,快进程的优先级高于慢进程的优先级。则以上述示例为基础,若基于F1大于第一阈值为控制PMD线程1启动,且控制PMD线程11暂停;若基于F11大于第一阈值,控制PMD线程1暂停,且控制PMD线程11开启,而由于快进程的优先级和慢进程的优先级,因此,最终确定为控制PMD线程1开启,且控制PMD线程11暂停。
可以理解的是,若仅依据优先级控制PMD线程的状态,如PMD线程的暂停或启动,则对于优先级较低的PMD线程,一直处于暂停状态,无法进行启动,则会导致无法充分利用CPU的资源,进而导致CPU资源共享不充分的弊端。而通过结合PMD线程的第一负载和优先级,可以避免优先级较低的线程无法启动,导致CPU资源共享不充分的问题,进而实现充分利用CPU的资源,提高CPU资源的共享利用率。
当然,在另一些实施例中,也可以通过预先为不同的第一负载设置不同的权重系数,如构建第一负载与权重系数的映射关系,通过结合权重系数和优先级的方式确定相应PMD线程的状态。则以上述示例为基础,若F1的权重系数为a1,F11的权重系数为a11,若a1*A≥a11*B,则控制PMD线程1开启,且控制PMD线程11暂停;若a1*A<a11*B,则控制PMD线程1暂停,且控制PMD线程11开启。
在一些实施例中,暂停的第二进程对应的至少部分PMD线程与启动的第一进程的至少部分PMD线程所绑定的CPU相同。
基于上述示例,若暂停的为F1对应的PMD线程,则相应开启的PMD线程为F11对应的PMD线程。
结合图3可知,在一些实施例中,控制第二进程对应的至少部分PMD线程暂停包括:
S1031:获取第二进程对应的CPU的空闲时长。
基于上述示例,获取PMD线程11对应的CPU的空闲时长T11,获取PMD线程12对应的CPU的空闲时长T12,获取PMD线程13对应的CPU的空闲时长T13。
S1032:确定空闲时长最大的CPU。
该步骤可具体包括:将T11、T12和T13进行比较,以便选取最大值,若T13>T12>T11,则确定出的CPU为T13对应的CPU3。
S1033:控制空闲时长最大的CPU对应的PMD线程暂停。
基于上述示例,将PMD线程13暂停。
在本公开实施例中,由于PMD线程13暂停对应的空闲时间长,所以相对而言,PMD线程13耗费的CPU资源较大,因此将PMD线程13暂停,以便节约CPU资源的损耗。
在一些实施例中,在将PMD线程13暂停时,将PMD线程3开启。以便在实现PMD线程3与PMD线程13对CPU3资源共享的同时,确保CPU资源被利用率的最大化。
在一些实施例中,S103包括:响应于第一进程对应的任一PMD线程的第一负载小于预设的第二阈值,控制第一进程对应的至少部分PMD线程暂停,并控制第二进程对应的至少部分PMD线程启动,其中,第一阈值大于第二阈值。
基于上述示例,该步骤可具体包括:分别判断F1、F2、F3、F11、F12和F13与第二阈值的大小,若F1小于第二阈值,则对快进程中的至少PMD线程暂停,并启动慢进程中的至少PMD线程。
在一些实施例中,若F1和F12均小于第二阈值,则可比较F1与F12之间的大小,若F1<F12,则对快进程中的至少PMD线程暂停,并启动慢进程中的至少PMD线程;若F1>F12,则对快进程中的至少PMD线程启动,并暂停慢进程中的至少PMD线程;若D1=D2,则可随机对慢进程中的至少PMD线程暂停,并启动快进程中的至少PMD线程,或者对慢进程中的至少PMD线程开启,并暂停快进程中的至少PMD线程。
当然,在另一些实施例中,若D1=D2,也可以获取F1对应的优先级和F12的优先级,对优先级偏大的进程中的至少PMD线程开启,并暂停优先级偏小的进程中的至少PMD线程。
在一些实施例中,暂停的第二进程对应的至少部分PMD线程与启动的第一进程的至少部分PMD线程所绑定的CPU相同。
基于上述示例,若启动的为F1对应的PMD线程,则相应暂停的PMD线程为F11对应的PMD线程。
在一些实施例中,可通过互斥锁和条件变量的方式,控制PMD线程的启动和暂停,也可以通过将PMD线程退出的方式控制PMD线程的暂停。
同理,在一些实施例中,控制第一进程对应的至少部分PMD线程暂停包括:获取第一进程对应的CPU的空闲时长,确定空闲时长最大的CPU,控制空闲时长最大的CPU对应的PMD线程暂停。
其中,对本公开实施例的详细阐述可参见S1031至S1033,此处不再赘述。
同理,暂停的第一进程对应的至少部分PMD线程与启动的第二进程的至少PMD线程所绑定的CPU相同。
在一些实施例中,在根据第一负载控制至少部分CPU中的至少部分PMD线程的暂停;或者,根据第一负载和预设的各进程的优先级控制至少部分CPU中的至少部分PMD线程的暂停之前,即在对至少PMD线程暂停之前,该方法还包括:
S105:将待暂停的PMD线程的任务分配至与其处于相同进程的其他PMD线程。
基于上述示例,需要控制PMD线程1暂停,则PMD线程1为待暂停的PMD线程,且在将PMD线程1暂停之前,为了尽可能避免降低对PMD线程1中的任务处理的效率,可以将PMD线程1中的任务分配至PMD线程2,或者,将PMD线程1中的任务分配至PMD线程3,以便由PMD线程2或者PMD线程3对分配出来的任务进行处理,从而实现尽可能确保各任务被快速有效的执行。
在本公开实施例中,通过若在对某PMD线程暂停之前,先对该PMD线程上的任务进行分配,以避免引起待暂停的PMD线程的任务的中断,从而实现任务的连续性,进而实现各任务被高效且可靠的执行。
结合图4可知,在一些实施例中,将待暂停的PMD线程的任务分配至与其处于相同进程的其他PMD线程包括:
S1051:获取其他PMD线程对应的第二负载。
若待暂停的为快进程中的PMD线程1,则获取PMD线程2对应的第二负载F22,并获取PMD线程3对应的第二负载F23。
S1052:确定最小的第二负载对应的PMD线程。
该步骤可具体包括:判断F22与F23之间的大小,若F22<F23,则确定出的PMD线程为PMD线程2;若F22>F23,则确定出的PMD线程为PMD线程3;若F22=F23,则确定出的PMD线程可以随机选取为PMD线程2,或者,PMD线程3。
S1053:将待暂停的PMD线程的任务分配至最小的第二负载对应的PMD线程。
基于上述示例,若确定出的PMD线程为PMD线程2,则将PMD线程1中待暂停的任务分配至PMD线程2,以便由PMD线程2对该待暂停的任务进行处理。由于PMD线程2的第二负载最小,因此,当将PMD线程1中待暂停的任务分配至PMD线程2时,PMD线程2可以及时对该待暂停的任务进行处理,以便提高任务处理的效率,并实现CPU资源的充分利用。
同理,若确定出的PMD线程为PMD线程3,则将PMD线程1中待暂停的任务分配至PMD线程3,以便由PMD线程3对该待暂停的任务进行处理,从而实现提高任务处理的效率,并实现CPU资源的充分利用。
值得说明的是,此处只是以待暂停的PMD线程为快进程中的线程为例进行示范性的说明,若待暂停的PMD线程为慢进程中的线程,则亦可参见上述示例,此处不再赘述。
在一些实施例中,在根据第一负载控制至少部分CPU中的至少部分PMD线程的状态;或者,根据第一负载和预设的各进程的优先级控制至少部分CPU中的至少部分PMD线程的状态之后,该方法还包括:
S106:控制状态发生改变的PMD线程进入冷却期,冷却期是指在预设时间段内,不对状态发生改变的PMD线程进行调度。
基于上述示例,若PMD线程1的初始状态为暂停,PMD线程11的初始状态为启动,在根据第一负载对至少部分PMD线程的状态进行控制之后,PMD线程1的状态为启动,且PMD线程11的状态为暂停,即PMD线程1和PMD线程11的状态发生了改变,则在预设时间段内,不对PMD线程1的状态进行改变,且不对PMD线程11的状态进行改变。
其中,预设时间段可基于需求进行设定,如3秒。
在本公开实施中,通过当某PMD线程的状态发生变化时,控制该PMD线程进入冷却期,使得在一定时间段内不对该PMD线程的状态进行改变,以便避免频繁调度,从而实现节约调度资源。且,由于避免了频繁调度,减少了PMD线程的不同状态的切换,因此还实现了确保PMD线程的执行任务的效率。
在一些实施例中,当控制某PMD线程进入冷却期时,在预设时间段内,可不对该PMD线程对应的第一负载进行获取,以便节约计算资源。例如:控制PMD线程1进入冷却期,在3秒钟内,暂停对PMD线程1对应的第一负载的获取,以便节约计算负载。
结合图5可知,在一些实施例中,S102(获取每个PMD线程在相应CPU中的第一负载)包括:
S1021:获取与其对应的PMD线程n轮处理的每个队列的第一数据报文数和相应的第一处理时长,n≥1。
现以获取PMD线程1在CPU1中的第一负载为例进行阐述如下:
确定PMD线程1至少一轮处理的所有队列,获取每个队列的第一数据报文数,和处理第一数据报文数的第一处理时长。
S1022:获取预设的第二数据报文数和相应的第二处理时长。
其中,第二数据报文数和第二处理时长为预先进行测试得到的(后续将结合具体示例进行阐述,此处不再赘述)。
S1023:根据第一数据报文数、第一处理时长、第二数据报文数和第二处理时长确定第一负载。
在一些实施例中,PMD线程以突发脉冲(burst)的形式轮询队列,若burst的长度B=32,则测试PMD线程处理x个数据报文的处理时长T(x),分别标记为T(0),T(1),……,T(31)。则,x即为第二数据报文数,第二处理时长为T(x)。
若n=10,即10轮(round)所处理的数据报文数。且若测试得到PMD线程在round r(r≤n)中轮询队列q所处理的数据报文数为x(r,q),0≤x(r,q)≤B,则可基于下述公式计算队列q的平均负载:
其中,x(r,q)为实测的第一数据报文数,T(x(r,q))为第一处理时长,可以通过查询第二报文数与第二处理时长之间对应关系表格得出。
在一些实施例中,若PMD线程需要轮询的队列包括Q1、Q2……Qm,则分别计算Q1对应的负载P(Q1),Q2对应的负载P(Q2),……,Qm对应的负载P(Qm),并从m个负载中确定最大的负载,并将确定出的最大的负载确定为该PMD线程对应的第一负载。
在现有技术中,PMD线程在操作系统上显示的CPU的占用率总是100%。而在本公开实施例中,通过上述方案,可以对PMD线程在相应CPU中的负载进行计算,以便对PMD线程中的任务进行相应的分配和调度,从而实现充分利用CPU资源的技术效果。
在一些实施例中,该方法还包括:为每个进程分别分配至少一个固定CPU,其中,不同进程对应的固定CPU不同,且暂停的PMD线程对应的CPU不包括固定CPU。
例如:为快进程分配一个固定CPU,且为慢进程分配一个固定CPU,两个CPU为不相同的CPU。且,快进程对应的固定CPU不暂停快进程对应的PMD线程,慢进程对应的固定CPU不暂停慢进程对应的PMD线程,即固定的CPU不参与资源的调度。
在本公开实施例中,通过为不同的进程分配至少一个固定CPU,无需对该固定CPU进行资源调度,可以减少计算量,节约计算成本,且确保各进程对应的任务被高效执行的技术效果。
根据本公开实施例的另一个方面,本公开实施例还提供了一种资源调度装置。
请参阅图6,图6为本公开实施例的资源调度装置的示意图。
如图6所示,该装置包括:
配置模块1,用于将多个PMD线程绑定同一CPU,所述多个PMD线程包括分别从每个进程中选取的任意一个,且一个PMD线程在一个所述CPU中运行;
获取模块2,用于获取每个PMD线程在相应CPU中的第一负载;
第一控制模块3,用于根据所述第一负载控制至少部分CPU中的至少部分PMD线程的状态,或者,根据所述第一负载和预设的各所述进程的优先级控制至少部分CPU中的至少部分PMD线程的状态,其中,所述状态包括暂停、启动和维持中的至少一种。
在一些实施例中,所述第一控制模块3用于,响应于第一进程对应的任一PMD线程的第一负载大于预设的第一阈值,控制第二进程对应的至少部分PMD线程暂停,并启动所述第一进程的至少部分PMD线程,其中,所述进程包括所述第一进程和所述第二进程。
在一些实施例中,所述第一控制模块,用于获取所述第二进程对应的CPU的空闲时长,确定空闲时长最大的CPU,控制所述空闲时长最大的CPU对应的PMD线程暂停。
在一些实施例中,暂停的所述第二进程对应的至少部分PMD线程与启动的所述第一进程的至少部分PMD线程所绑定的CPU相同。
在一些实施例中,所述第一控制模块3用于,响应于所述第一进程对应的任一PMD线程的第一负载小于预设的第二阈值,控制所述第一进程对应的至少部分PMD线程暂停,并控制所述第二进程对应的至少部分PMD线程启动,其中,所述第一阈值大于所述第二阈值。
结合图7可知,在一些实施例中,所述装置还包括:
第一分配模块4,用于将待暂停的PMD线程的任务分配至与其处于相同进程的其他PMD线程。
在一些实施例中,所述第一分配模块4用于,获取所述其他PMD线程对应的第二负载,确定最小的所述第二负载对应的PMD线程,将所述待暂停的PMD线程的任务分配至所述最小的所述第二负载对应的PMD线程。
结合图7可知,在一些实施例中,所述装置还包括:
第二控制模块5,用于控制状态发生改变的PMD线程进入冷却期,所述冷却期是指在预设时间段内,不对所述状态发生改变的PMD线程进行调度。
在一些实施例中,所述获取模块2用于,获取与其对应的PMD线程n轮处理的每个队列的第一数据报文数和相应的第一处理时长,n≥1,获取预设的第二数据报文数和相应的第二处理时长,根据所述第一数据报文数、所述第一处理时长、所述第二数据报文数和所述第二处理时长确定所述第一负载。
结合图7可知,在一些实施例中,所述装置还包括:
第二分配模块6,用于为每个所述进程分别分配至少一个固定CPU,其中,不同进程对应的固定CPU不同,且暂停的PMD线程对应的CPU不包括所述固定CPU。
根据本公开实施例的另一个方面,本公开实施例还提供了一种PMD调度装置。
请参阅图8,图8为本公开实施例的PMD调度装置的示意图。
如图8所示,该PMD调度装置包括至少一个PMD客户端100,还包括一个PMD调度器200,每个PMD客户端100均与PMD调度器200连接。
其中,PMD调度器用于,将多个PMD线程绑定同一CPU,多个PMD线程包括分别从每个进程中选取的任意一个,且一个PMD线程在一个CPU中运行。
PMD客户端用于,获取与其对应的PMD线程在相应CPU的第一负载,并将第一负载传输至PMD调度器,一个PMD客户端对应一个PMD线程。
结合图9可知,其中,PMD线程a和PMD线程b为慢进程对应的线程,PMD线程c和PMD线程d为快进程对应线程。
PMD调度器将PMD线程a和PMD线程c绑定同一CPUa-c,并将PMD线程b和PMD线程d绑定同一CPUb-d,且,PMD线程a与PMD客户端A连接,PMD线程b与PMD客户端B连接,PMD线程c与PMD客户端C连接,PMD线程d与PMD客户端D连接,且PMD线程a和PMD线程b为慢进程对应的线程,PMD线程c和PMD线程d为快进程对应的线程。
则,PMD客户端A用于获取PMD线程a在CPUa-c的第一负载Fa,并将Fa发送至PMD调度器,PMD客户端B用于获取PMD线程b在CPUb-d的第一负载Fb,并将Fb发送至PMD调度器,PMD客户端C用于获取PMD线程c在CPUa-c的第一负载Fc,并将Fc发送至PMD调度器,PMD客户端D用于获取PMD线程d在CPUb-d的第一负载Fd,并将Fd发送至PMD调度器。
PMD调度器还用于,根据第一负载控制至少部分CPU中的至少部分PMD线程的状态,或者,根据第一负载和预设的各进程的优先级控制至少部分CPU中的至少部分PMD线程的状态,其中,状态包括暂停、启动和维持中的至少一种。
在一些实施例中,PMD调度器可根据Fa、Fb、Fc和Fd控制:PMD线程a启动,PMD线程b暂停,PMD线程c暂停,PMD线程d启动;或者,控制:PMD线程a暂停,PMD线程b暂停,PMD线程c启动,PMD线程d启动,等等,此处不再一一赘述。
基于上述示例可知,通过本公开实施例提供的PMD调度装置,由于将多个来自不同进程的PMD线程绑定同一CPU,并基于第一负载对不同PMD线程的状态进行控制的方案,可以实现不同进程对同一CPU资源的共享,进而实现资源的合理利用,节约资源的技术效果。其中,具体资源共享效果可参阅表1。
表1:
在一些实施例中,PMD调度器具体用于,响应于第一进程对应的任一PMD线程的第一负载大于预设的第一阈值,控制第二进程对应的至少部分PMD线程暂停,并启动第一进程的至少部分PMD线程,其中,进程包括第一进程和第二进程。
基于图9和上述示例,由PMD调度器分别比对Fa、Fb、Fc、Fd四个第一负载与第一阈值的大小,如果Fa大于第一阈值,则可控制PMD线程c和/或PMD线程d暂停,并启动PMD线程a和/或PMD线程b。
在一些实施例中,PMD调度器具体用于,获取第二进程对应的CPU的空闲时长,确定空闲时长最大的CPU,控制空闲时长最大的CPU对应的PMD线程暂停。
在一些实施例中,暂停的第二进程对应的至少部分PMD线程与启动的第一进程的至少部分PMD线程所绑定的CPU相同。
结合图9,若暂停的PMD线程为PMD线程c,则启动PMD线程a;若暂停的PMD线程为PMD线程d,则启动PMD线程b。
在一些实施例中,PMD调度器具体用于,响应于第一进程对应的任一PMD线程的第一负载小于预设的第二阈值,控制第一进程对应的至少部分PMD线程暂停,并控制第二进程对应的至少部分PMD线程启动,其中,第一阈值大于第二阈值。
基于图9和上述示例,由PMD调度器分别比对Fa、Fb、Fc、Fd四个第一负载与第二阈值的大小,如果Fa小于第二阈值,则可控制PMD线程a和/或PMD线程b暂停,并启动PMD线程c和/或PMD线程d。
在一些实施例中,PMD调度器具体用于,获取第一进程对应的CPU的空闲时长,确定空闲时长最大的CPU,控制空闲时长最大的CPU对应的PMD线程暂停。
在一些实施例中,PMD调度器还用于,将待暂停的PMD线程的任务分配至与其处于相同进程的其他PMD线程。
结合图9和上述示例,将待暂停的PMD线程a的任务分配至PMD线程b。
在一些实施例中,PMD调度器具体用于,获取其他PMD线程对应的第二负载,确定最小的第二负载对应的PMD线程,将待暂停的PMD线程的进程分配至最小的第二负载对应的PMD线程。
在一些实施例中,PMD调度器还用于,控制状态发生改变的PMD线程进入冷却期,冷却期是指在预设时间段内,所述PMD调度器不对状态发生改变的PMD线程进行调度。
结合图9和上述示例,若PMD线程a的初始状态为启动,而PMD调度器控制PMD线程a的状态为暂停,则在预设时间段内,PMD调度不对PMD线程a进行调度,即在预设时间段内,PMD线程a的状态为暂停。
在一些实施例中,PMD客户端具体用于,获取与其对应的PMD线程n轮处理的每个队列的第一数据报文数和相应的第一处理时长,获取预设的第二数据报文数和相应的第二处理时长,根据第一数据报文数、第一处理时长、第二数据报文数和第二处理时长确定第一负载,n≥1。
在一些实施例中,PMD调度器还用于,为每个进程分别分配至少一个固定CPU,其中,不同进程对应的固定CPU不同,且暂停的PMD线程对应的CPU不包括固定CPU。
根据本公开实施例的另一个方面,本公开实施例还提供了一种资源调度系统,包括:多个CPU、为每个进程分别创建的多个PMD线程和如上任一实施例所述的PMD调度装置。
根据本公开实施例的另一个方面,本公开实施例还提供了一种电子设备和一种可读存储介质。
请参阅图10,图10为本公开实施例的电子设备的框图。其中,电子设备旨在表示各种形式的数字计算机,诸如,膝上型计算机、台式计算机、工作台、个人数字助理、服务器、刀片式服务器、大型计算机、和其它适合的计算机。电子设备还可以表示各种形式的移动装置,诸如,个人数字处理、蜂窝电话、智能电话、可穿戴设备和其它类似的计算装置。本文所示的部件、它们的连接和关系、以及它们的功能仅仅作为示例,并且不意在限制本文中描述的和/或者要求的本公开的实现。
如图10所示,该电子设备包括:一个或多个处理器101、存储器102,以及用于连接各部件的接口,包括高速接口和低速接口。各个部件利用不同的总线互相连接,并且可以被安装在公共主板上或者根据需要以其它方式安装。处理器可以对在电子设备内执行的指令进行处理,包括存储在存储器中或者存储器上以在外部输入/输出装置(诸如,耦合至接口的显示设备)上显示GUI的图形信息的指令。在其它实施方式中,若需要,可以将多个处理器和/或多条总线与多个存储器和多个存储器一起使用。同样,可以连接多个电子设备,各个设备提供部分必要的操作(例如,作为服务器阵列、一组刀片式服务器、或者多处理器系统)。图10中以一个处理器101为例。
存储器102即为本公开所提供的非瞬时计算机可读存储介质。其中,所述存储器存储有可由至少一个处理器执行的指令,以使所述至少一个处理器执行本公开所提供的资源调度方法。本公开的非瞬时计算机可读存储介质存储计算机指令,该计算机指令用于使计算机执行本公开所提供的资源调度方法。
存储器102作为一种非瞬时计算机可读存储介质,可用于存储非瞬时软件程序、非瞬时计算机可执行程序以及模块,如本公开实施例中的资源调度方法对应的程序指令/模块。处理器101通过运行存储在存储器102中的非瞬时软件程序、指令以及模块,从而执行服务器的各种功能应用以及数据处理,即实现上述方法实施例中的资源调度方法。
存储器102可以包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需要的应用程序;存储数据区可存储根据电子设备的使用所创建的数据等。此外,存储器102可以包括高速随机存取存储器,还可以包括非瞬时存储器,例如至少一个磁盘存储器件、闪存器件、或其他非瞬时固态存储器件。在一些实施例中,存储器102可选包括相对于处理器101远程设置的存储器,这些远程存储器可以通过网络连接至电子设备。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
电子设备还可以包括:输入装置103和输出装置104。处理器101、存储器102、输入装置103和输出装置104可以通过总线或者其他方式连接,图10中以通过总线连接为例。
输入装置103可接收输入的数字或字符信息,以及产生与电子设备的用户设置以及功能控制有关的键信号输入,例如触摸屏、小键盘、鼠标、轨迹板、触摸板、指示杆、一个或者多个鼠标按钮、轨迹球、操纵杆等输入装置。输出装置104可以包括显示设备、辅助照明装置(例如,LED)和触觉反馈装置(例如,振动电机)等。该显示设备可以包括但不限于,液晶显示器(LCD)、发光二极管(LED)显示器和等离子体显示器。在一些实施方式中,显示设备可以是触摸屏。
此处描述的系统和技术的各种实施方式可以在数字电子电路系统、集成电路系统、专用ASIC(专用集成电路)、计算机硬件、固件、软件、和/或它们的组合中实现。这些各种实施方式可以包括:实施在一个或者多个计算机程序中,该一个或者多个计算机程序可在包括至少一个可编程处理器的可编程系统上执行和/或解释,该可编程处理器可以是专用或者通用可编程处理器,可以从存储系统、至少一个输入装置、和至少一个输出装置接收数据和指令,并且将数据和指令传输至该存储系统、该至少一个输入装置、和该至少一个输出装置。
这些计算程序(也称作程序、软件、软件应用、或者代码)包括可编程处理器的机器指令,并且可以利用高级过程和/或面向对象的编程语言、和/或汇编/机器语言来实施这些计算程序。如本文使用的,术语“机器可读介质”和“计算机可读介质”指的是用于将机器指令和/或数据提供给可编程处理器的任何计算机程序产品、设备、和/或装置(例如,磁盘、光盘、存储器、可编程逻辑装置(PLD)),包括,接收作为机器可读信号的机器指令的机器可读介质。术语“机器可读信号”指的是用于将机器指令和/或数据提供给可编程处理器的任何信号。
为了提供与用户的交互,可以在计算机上实施此处描述的系统和技术,该计算机具有:用于向用户显示信息的显示装置(例如,CRT(阴极射线管)或者LCD(液晶显示器)监视器);以及键盘和指向装置(例如,鼠标或者轨迹球),用户可以通过该键盘和该指向装置来将输入提供给计算机。其它种类的装置还可以用于提供与用户的交互;例如,提供给用户的反馈可以是任何形式的传感反馈(例如,视觉反馈、听觉反馈、或者触觉反馈);并且可以用任何形式(包括声输入、语音输入或者、触觉输入)来接收来自用户的输入。
可以将此处描述的系统和技术实施在包括后台部件的计算系统(例如,作为数据服务器)、或者包括中间件部件的计算系统(例如,应用服务器)、或者包括前端部件的计算系统(例如,具有图形用户界面或者网络浏览器的用户计算机,用户可以通过该图形用户界面或者该网络浏览器来与此处描述的系统和技术的实施方式交互)、或者包括这种后台部件、中间件部件、或者前端部件的任何组合的计算系统中。可以通过任何形式或者介质的数字数据通信(例如,通信网络)来将系统的部件相互连接。通信网络的示例包括:局域网(LAN)、广域网(WAN)和互联网。
计算机系统可以包括客户端和服务器。客户端和服务器一般远离彼此并且通常通过通信网络进行交互。通过在相应的计算机上运行并且彼此具有客户端-服务器关系的计算机程序来产生客户端和服务器的关系。
根据本公开实施例的另一个方面,本公开实施例还提供了一种虚拟交换机,包括如上任一实施例所述的资源调度系统,或者,如上任一实施例所述的电子设备。
应该理解,可以使用上面所示的各种形式的流程,重新排序、增加或删除步骤。例如,本公开中记载的各步骤可以并行地执行也可以顺序地执行也可以不同的次序执行,只要能够实现本公开公开的技术方案所期望的结果,本文在此不进行限制。
上述具体实施方式,并不构成对本公开保护范围的限制。本领域技术人员应该明白的是,根据设计要求和其他因素,可以进行各种修改、组合、子组合和替代。任何在本公开的精神和原则之内所作的修改、等同替换和改进等,均应包含在本公开保护范围之内。

Claims (19)

1.一种资源调度方法,其特征在于,所述方法包括:
将快进程中的一个PMD线程与慢进程中的一个PMD线程绑定同一CPU,一个PMD线程在一个所述CPU中运行;为快进程分配第一固定CPU,为慢进程分配第二固定CPU,所述第一固定CPU和所述第二固定CPU为不相同的CPU;所述第一固定CPU不暂停所述快进程对应的PMD线程,所述第二固定CPU不暂停所述慢进程对应的PMD线程,所述第一固定的CPU和所述第二固定CPU不参与资源的调度;
获取与每个PMD线程对应的PMD线程n轮处理的每个队列的第一数据报文数和相应的第一处理时长,n≥1;
获取预设的第二数据报文数和相应的第二处理时长;
根据所述第一数据报文数、所述第一处理时长、所述第二数据报文数和所述第二处理时长确定每个PMD线程在相应的CPU中的第一负载;
根据所述第一负载控制部分CPU中的部分PMD线程的状态;或者,
根据所述第一负载和预设的各进程的优先级控制部分CPU中的部分PMD线程的状态;
其中,所述状态包括暂停、启动和维持中的至少一种;
所述根据所述第一负载控制部分CPU中的部分PMD线程的状态包括:
响应于第一进程对应的任一PMD线程的第一负载大于预设的第一阈值,获取第二进程对应的CPU的空闲时长;确定空闲时长最大的CPU;控制所述空闲时长最大的CPU对应的PMD线程暂停,并启动所述第一进程的部分PMD线程,其中,进程包括所述第一进程和所述第二进程;
响应于所述第一进程对应的任一PMD线程的第一负载小于预设的第二阈值,控制所述第一进程对应的部分PMD线程暂停,并控制所述第二进程对应的部分PMD线程启动,其中,所述第一阈值大于所述第二阈值。
2.根据权利要求1所述的方法,其特征在于,暂停的所述第二进程对应的部分PMD线程与启动的所述第一进程的部分PMD线程所绑定的CPU相同。
3.根据权利要求1或2所述的方法,其特征在于,在根据所述第一负载控制部分CPU中的部分PMD线程的暂停;或者,根据所述第一负载和预设的各所述进程的优先级控制部分CPU中的部分PMD线程的暂停之前,所述方法还包括:
将待暂停的PMD线程的任务分配至与其处于相同进程的其他PMD线程。
4.根据权利要求3所述的方法,其特征在于,所述将待暂停的PMD线程的任务分配至与其处于相同进程的其他PMD线程包括:
获取所述其他PMD线程对应的第二负载;
确定最小的所述第二负载对应的PMD线程;
将所述待暂停的PMD线程的任务分配至所述最小的所述第二负载对应的PMD线程。
5.根据权利要求1或2所述的方法,其特征在于,在所述根据所述第一负载控制部分CPU中的部分PMD线程的状态;或者,根据所述第一负载和预设的各所述进程的优先级控制部分CPU中的部分PMD线程的状态之后,所述方法还包括:
控制状态发生改变的PMD线程进入冷却期,所述冷却期是指在预设时间段内,不对所述状态发生改变的PMD线程进行调度。
6.一种资源调度装置,其特征在于,所述装置包括:
配置模块,用于将快进程中的一个PMD线程与慢进程中的一个PMD线程绑定同一CPU,一个PMD线程在一个所述CPU中运行;为快进程分配第一固定CPU,为慢进程分配第二固定CPU,所述第一固定CPU和所述第二固定CPU为不相同的CPU;所述第一固定CPU不暂停所述快进程对应的PMD线程,所述第二固定CPU不暂停所述慢进程对应的PMD线程,所述第一固定的CPU和所述第二固定CPU不参与资源的调度;
获取模块,用于获取与每个PMD线程对应的PMD线程n轮处理的每个队列的第一数据报文数和相应的第一处理时长,n≥1;获取预设的第二数据报文数和相应的第二处理时长;根据所述第一数据报文数、所述第一处理时长、所述第二数据报文数和所述第二处理时长确定每个PMD线程在相应的CPU中的第一负载;
第一控制模块,用于根据所述第一负载控制部分CPU中的部分PMD线程的状态,或者,根据所述第一负载和预设的各进程的优先级控制部分CPU中的部分PMD线程的状态,其中,所述状态包括暂停、启动和维持中的至少一种;
所述第一控制模块用于,响应于第一进程对应的任一PMD线程的第一负载大于预设的第一阈值,获取第二进程对应的CPU的空闲时长;确定空闲时长最大的CPU;控制所述空闲时长最大的CPU对应的PMD线程暂停,并启动所述第一进程的部分PMD线程,其中,进程包括所述第一进程和所述第二进程;
响应于所述第一进程对应的任一PMD线程的第一负载小于预设的第二阈值,控制所述第一进程对应的部分PMD线程暂停,并控制所述第二进程对应的部分PMD线程启动,其中,所述第一阈值大于所述第二阈值。
7.根据权利要求6所述的装置,其特征在于,暂停的所述第二进程对应的部分PMD线程与启动的所述第一进程的部分PMD线程所绑定的CPU相同。
8.根据权利要求6或7所述的装置,其特征在于,所述装置还包括:
第一分配模块,用于将待暂停的PMD线程的任务分配至与其处于相同进程的其他PMD线程。
9.根据权利要求8所述的装置,其特征在于,所述第一分配模块用于,获取所述其他PMD线程对应的第二负载,确定最小的所述第二负载对应的PMD线程,将所述待暂停的PMD线程的任务分配至所述最小的所述第二负载对应的PMD线程。
10.根据权利要求6或7所述的装置,其特征在于,所述装置还包括:
第二控制模块,用于控制状态发生改变的PMD线程进入冷却期,所述冷却期是指在预设时间段内,不对所述状态发生改变的PMD线程进行调度。
11.一种PMD调度装置,其特征在于,包括:至少一个PMD客户端和与每个所述PMD客户端连接的PMD调度器,其中,
所述PMD调度器用于,将快进程中的一个PMD线程与慢进程中的一个PMD线程绑定同一CPU,一个PMD线程在一个所述CPU中运行;为快进程分配第一固定CPU,为慢进程分配第二固定CPU,所述第一固定CPU和所述第二固定CPU为不相同的CPU;所述第一固定CPU不暂停所述快进程对应的PMD线程,所述第二固定CPU不暂停所述慢进程对应的PMD线程,所述第一固定的CPU和所述第二固定CPU不参与资源的调度;
所述PMD客户端用于,获取与每个PMD线程对应的PMD线程n轮处理的每个队列的第一数据报文数和相应的第一处理时长,n≥1;获取预设的第二数据报文数和相应的第二处理时长;根据所述第一数据报文数、所述第一处理时长、所述第二数据报文数和所述第二处理时长确定每个PMD线程在相应的CPU中的第一负载,并将所述第一负载传输至所述PMD调度器,一个所述PMD客户端对应一个PMD线程;
所述PMD调度器还用于,根据所述第一负载控制部分CPU中的部分PMD线程的状态,或者,根据所述第一负载和预设的各进程的优先级控制部分CPU中的部分PMD线程的状态,其中,所述状态包括暂停、启动和维持中的至少一种;
所述PMD调度器具体用于,响应于第一进程对应的任一PMD线程的第一负载大于预设的第一阈值,获取第二进程对应的CPU的空闲时长,确定空闲时长最大的CPU,控制所述空闲时长最大的CPU对应的PMD线程暂停,并启动所述第一进程的部分PMD线程,其中,进程包括所述第一进程和所述第二进程;
响应于所述第一进程对应的任一PMD线程的第一负载小于预设的第二阈值,控制所述第一进程对应的部分PMD线程暂停,并控制所述第二进程对应的部分PMD线程启动,其中,所述第一阈值大于所述第二阈值。
12.根据权利要求11所述的装置,其特征在于,暂停的所述第二进程对应的部分PMD线程与启动的所述第一进程的部分PMD线程所绑定的CPU相同。
13.根据权利要求11或12所述的装置,其特征在于,所述PMD调度器还用于,将待暂停的PMD线程的任务分配至与其处于相同进程的其他PMD线程。
14.根据权利要求13所述的装置,其特征在于,所述PMD调度器具体用于,获取所述其他PMD线程对应的第二负载,确定最小的所述第二负载对应的PMD线程,将所述待暂停的PMD线程的任务分配至所述最小的所述第二负载对应的PMD线程。
15.根据权利要求11或12所述的装置,其特征在于,所述PMD调度器还用于,控制状态发生改变的PMD线程进入冷却期,所述冷却期是指在预设时间段内,所述PMD调度器不对所述状态发生改变的PMD线程进行调度。
16.一种资源调度系统,其特征在于,包括:多个CPU、为每个进程分别创建的多个PMD线程和如权利要求11或12所述的PMD调度装置。
17.一种电子设备,其特征在于,包括:
至少一个处理器;以及
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行权利要求1-5中任一项所述的方法。
18.一种虚拟交换机,其特征在于,包括如权利要求16所述的资源调度系统,或者,如权利要求17所述的电子设备。
19.一种计算机存储介质,其特征在于,所述计算机可读存储介质中存储有计算机指令,所述计算机指令用于使计算机执行权利要求1-5中任一项所述的方法。
CN201911006164.4A 2019-10-22 2019-10-22 资源调度方法和装置、pmd调度装置、电子设备、存储介质 Active CN112698934B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201911006164.4A CN112698934B (zh) 2019-10-22 2019-10-22 资源调度方法和装置、pmd调度装置、电子设备、存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201911006164.4A CN112698934B (zh) 2019-10-22 2019-10-22 资源调度方法和装置、pmd调度装置、电子设备、存储介质

Publications (2)

Publication Number Publication Date
CN112698934A CN112698934A (zh) 2021-04-23
CN112698934B true CN112698934B (zh) 2023-12-15

Family

ID=75505514

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201911006164.4A Active CN112698934B (zh) 2019-10-22 2019-10-22 资源调度方法和装置、pmd调度装置、电子设备、存储介质

Country Status (1)

Country Link
CN (1) CN112698934B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114448909B (zh) * 2021-12-27 2023-10-13 天翼云科技有限公司 基于ovs的网卡队列轮询方法、装置、计算机设备及介质

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102834807A (zh) * 2011-04-18 2012-12-19 华为技术有限公司 多处理器系统负载均衡的方法和装置
CN106713462A (zh) * 2016-12-26 2017-05-24 郑州云海信息技术有限公司 一种网络数据包处理方法和装置

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100042826A1 (en) * 2008-08-15 2010-02-18 Apple Inc. Dynamic Control of Device State Based on Detected Environment

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102834807A (zh) * 2011-04-18 2012-12-19 华为技术有限公司 多处理器系统负载均衡的方法和装置
CN106713462A (zh) * 2016-12-26 2017-05-24 郑州云海信息技术有限公司 一种网络数据包处理方法和装置

Also Published As

Publication number Publication date
CN112698934A (zh) 2021-04-23

Similar Documents

Publication Publication Date Title
US10628216B2 (en) I/O request scheduling method and apparatus by adjusting queue depth associated with storage device based on hige or low priority status
CN111279315B (zh) 租户间工作负载性能相关联和推荐
US11294714B2 (en) Method and apparatus for scheduling task, device and medium
JP7214786B2 (ja) 深層学習推論エンジンのスケジューリング方法、装置、機器及び媒体
CN112486648A (zh) 任务调度方法、装置、系统、电子设备和存储介质
CN109564528B (zh) 分布式计算中计算资源分配的系统和方法
CN111694646A (zh) 资源调度方法、装置、电子设备及计算机可读存储介质
JP7170768B2 (ja) 開発マシン操作タスクの処理方法、電子機器、コンピュータ可読記憶媒体及びコンピュータプログラム
CN109960575B (zh) 一种计算能力共享方法、系统及相关设备
KR20080041047A (ko) 멀티 코어 프로세서 시스템에서 로드 밸런싱을 위한 장치및 방법
CN111459645B (zh) 一种任务调度方法、装置和电子设备
US9304814B2 (en) Determine variable wait time in an asynchronous call-back system based on calculated average sub-queue wait time
JPWO2007072544A1 (ja) 情報処理装置、計算機、リソース割り当て方法及びリソース割り当てプログラム
WO2023103516A1 (zh) 基于处理器虚拟化环境的低优阻塞方法及装置
US9471387B2 (en) Scheduling in job execution
Parekh et al. Improved Round Robin CPU scheduling algorithm: Round Robin, Shortest Job First and priority algorithm coupled to increase throughput and decrease waiting time and turnaround time
CN110688229B (zh) 任务处理方法和装置
WO2023274278A1 (zh) 一种资源调度的方法、装置及计算节点
KR102052964B1 (ko) 컴퓨팅 스케줄링 방법 및 시스템
CN115080209A (zh) 系统资源调度方法、装置、电子设备及存储介质
CN112698934B (zh) 资源调度方法和装置、pmd调度装置、电子设备、存储介质
CN111913809A (zh) 多线程场景下的任务执行方法、装置、设备和存储介质
CN115576684A (zh) 任务处理方法、装置、电子设备及存储介质
US20230004363A1 (en) Stream computing job processing method, stream computing system and electronic device
CN112860401A (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