CN108009007B - 轻量级线程的调度方法及协同管理器、vCPU调度器 - Google Patents
轻量级线程的调度方法及协同管理器、vCPU调度器 Download PDFInfo
- Publication number
- CN108009007B CN108009007B CN201610958074.5A CN201610958074A CN108009007B CN 108009007 B CN108009007 B CN 108009007B CN 201610958074 A CN201610958074 A CN 201610958074A CN 108009007 B CN108009007 B CN 108009007B
- Authority
- CN
- China
- Prior art keywords
- vcpu
- target
- thread
- context information
- cpu
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
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/485—Task life-cycle, e.g. stopping, restarting, resuming execution
- G06F9/4856—Task life-cycle, e.g. stopping, restarting, resuming execution resumption being on a different machine, e.g. task migration, virtual machine migration
- G06F9/4862—Task life-cycle, e.g. stopping, restarting, resuming execution resumption being on a different machine, e.g. task migration, virtual machine migration the task being a mobile agent, i.e. specifically designed to migrate
- G06F9/4868—Task life-cycle, e.g. stopping, restarting, resuming execution resumption being on a different machine, e.g. task migration, virtual machine migration the task being a mobile agent, i.e. specifically designed to migrate with creation or replication
-
- 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)
- Stored Programmes (AREA)
Abstract
本发明公开了一种轻量级线程的调度方法及协同管理器、vCPU调度器,用以解决现有技术中存在的切换时间较长的问题。该方法包括:协同管理器在确定应用需要从当前虚拟中央处理器vCPU运行的源轻量级线程切换到目标vCPU的目标轻量级线程时,获取目标vCPU的CPU上下文信息以及目标轻量级线程的线程上下文信息;协同管理器将目标vCPU的CPU上下文信息中包括的线程上下文信息替换为目标轻量级线程的线程上下文信息;当前vCPU与目标vCPU绑定于同一物理中央处理器CPU中;协同管理器向vCPU调度器发送指示信息,指示信息用于指示vCPU调度器将经过替换后的目标vCPU的CPU上下文信息加载到物理CPU中。
Description
技术领域
本发明实施例涉及计算机技术领域,尤其涉及一种轻量级线程的调度方法及协同管理器、vCPU调度器。
背景技术
虚拟化是一种资源管理技术,是将计算机的各种实体资源、如服务器、网络、内存及存储等抽象、转换后呈现,使得用户更好的应用各种实体资源。
基于某些应用的需求,针对基站的客户端(Guest)虚拟中央处理器(英文:virtualCentral Processing Unit,简称:vCPU)之间的线程切换开销,需要降低到2.5us左右,而当前Linux系统中vCPU之间切换时间大约需要4.5us。因此为了满足多种应用的需求,对虚拟机的CPU进行改造,在vCPU中运行轻量级线程,轻量级线程区别于传统的linux或windows线程,减少了非必要的核的切换,从而节省了切换时间。
基站在vCPU中建立轻量级线程调度器来实现运行在不同vCPU上的线程切换。当应用需要从绑定物理CPU的当前vCPU的轻量级线程切换到绑定所述物理CPU的目标vCPU的目标轻量级线程时,如果目标轻量级线程是目标vCPU当前运行的轻量级线程,则vCPU调度器将所述当前vCPU的CPU上下文保存到所述当前vCPU对应的第一数据结构中。目标vCPU是非运行态的vCPU,因此,在执行本次切换之前,目标vCPU由运行态切换为非运行态的时侯,目标vCPU的CPU上下文信息被保存在该目标vCPU对应的第二数据结构中,从而在执行本次切换时,vCPU调度器从所述目标vCPU对应的第二数据结构中恢复所述目标vCPU的CPU上下文到所述物理CPU。
但是,如果目标轻量级线程是目标vCPU的非运行态的轻量级线程,则从所述目标vCPU对应的第二数据结构中恢复所述目标vCPU的CPU上下文到所述物理CPU之后,保存当前vCPU当前运行的轻量级线程的线程上下文到所述当前vCPU当前运行的轻量级线程对应的第三数据结构中。目标轻量级线程为目标vCPU的非运行态的轻量级线程,在执行本次切换之前,目标轻量级线程由运行态切换为非运行态的时侯,目标轻量级线程的线程上下文信息被保存在该目标轻量级线程对应的第四数据结构中,从而在执行本次切换时,vCPU调度器从所述目标轻量级线程对应的第四数据结构中恢复所述目标轻量级线程的线程上下文到所述物理CPU。其中,CPU上下文包括绑定所述CPU的vCPU上的运行态的线程的上下文信息以及包括vCPU的虚拟机的私有数据。线程的上下文包括与所述线程相关的寄存器信息、比如CPU通用寄存器、状态寄存器以及控制寄存器的信息。vCPU的虚拟机的私有数据包括vCPU的编号、vCPU的当前调度信息等等。
综上,如果应用需要由一个vCPU的轻量级线程切换到另一个vCPU的非运行态的轻量级线程时,切换开销为vCPU的切换开销和轻量级线程的切换开销的总和,从而延长了切换时间,导致切换时间不满足该应用的需求。
发明内容
本发明实施例提供一种轻量级线程的调度方法及协同管理器、vCPU调度器,用以一定程度上减少切换时间,提高切换效率。
第一方面,本发明实施例提供了一种轻量级线程的调度方法,该方法包括:
协同管理器在确定应用需要从当前虚拟中央处理器vCPU运行的源轻量级线程切换到目标vCPU的目标轻量级线程时,获取所述目标vCPU的CPU上下文信息以及所述目标轻量级线程的线程上下文信息;然后所述目标vCPU的CPU上下文信息中包括的线程上下文信息替换为所述目标轻量级线程的线程上下文信息;其中,所述当前vCPU与所述目标vCPU绑定于同一物理中央处理器CPU中;之后所述协同管理器向vCPU调度器发送指示信息,所述指示信息用于指示所述vCPU调度器将经过替换后的目标vCPU的CPU上下文信息加载到所述物理CPU中。vCPU调度器在接收到协同管理器发送的指示信息后,将经过协同管理器替换后的目标vCPU的CPU上下文信息加载到所述物理CPU中。
由于在确定应用需要从当前vCPU运行的源轻量级线程切换到目标vCPU上的非运行态的目标轻量级线程时,基于现有技术提供的方案需要在切换vCPU后,还需要切换线程,从而需要经过两次切换,延长了切换时长。而利用本发明实施例提供的方案,在切换之前,将目标轻量级线程的线程上下文信息替换到目标vCPU的CPU上下文信息中,从而仅需要将目标vCPU的CPU上下文信息加载到物理CPU中即可,不需要再执行加载目标轻量级线程的线程上下文信息到物理CPU,从而减短了切换时长。其中,CPU上下文信息包括vCPU的线程的上下文信息以及包括vCPU的虚拟机的私有数据。线程的上下文信息包括与所述线程相关的寄存器信息、比如CPU通用寄存器、状态寄存器以及控制寄存器的信息。vCPU的虚拟机的私有数据包括vCPU的编号、vCPU的当前调度信息等等。
在一种可能的设计中,所述目标轻量级线程为所述目标vCPU上的非运行态线程。
具体的,所述协同管理器在获取所述目标vCPU的CPU上下文信息以及所述目标轻量级线程的线程上下文信息之前,所述方法还可以包括:
所述协同管理器确定所述目标轻量级线程为所述目标vCPU上的非运行态线程。
通过上述设计,在所述目标轻量线程为所述目标vCPU上的非运行态线程时,协同管理器在确定所述目标轻量级线程为所述目标vCPU上的非运行态线程,才执行上述替换操作,减少节省执行的命令,提高资源利用率,减少运行时间。
在一种可能的设计中,所述协同管理器在确定所述目标轻量级线程为所述目标vCPU上的运行态线程时,向所述vCPU调度器发送指示信息,所述指示信息用于指示vCPU调度器执行将所述目标vCPU的CPU上下文信息加载到所述物理CPU中。所述vCPU调度器在接收到所述指示信息后,执行将所述目标vCPU的CPU上下文信息加载到所述物理CPU中。
在一种可能的设计中,协同管理器确定应用需要从当前虚拟中央处理器vCPU运行的源轻量级线程切换到目标vCPU的目标轻量级线程,包括:
所述协同管理器接收所述vCPU调度器发送的通知消息,所述通知消息用于通知所述应用需要从当前vCPU的源轻量级线程切换到目标vCPU的目标轻量级线程。
通过上述设计,协同管理器接收所述vCPU调度器发送的通知消息,使得协同管理器能够确定应用需要从当前虚拟中央处理器vCPU运行的源轻量级线程切换到目标vCPU的目标轻量级线程,从而能够执行替换操作。
在一种可能的设计中,所述协同管理器获取所述目标vCPU的CPU上下文信息以及所述目标轻量级线程的线程上下文信息,包括:
所述协同管理器从所述目标vCPU对应的第一数据结构中获取所述目标vCPU的CPU上下文信息,并从所述目标轻量级线程对应的第二数据结构中获取所述目标轻量级线程的线程上下文信息;
所述协同管理器将所述目标vCPU的CPU上下文信息中包括的线程上下文信息替换为所述目标轻量级线程的线程上下文信息,包括:
将所述第一数据结构中保存所述目标vCPU的CPU上下文信息中的线程上下文信息替换为所述第二数据结构中保存的所述目标轻量级线程的线程上下文信息。
目标vCPU的CPU上下文信息中包括的线程上下文信息在没被替换之前是目标vCPU上的运行态的线程的上下文信息。如果目标轻量级线程正是该目标vCPU上的运行态的线程,则CPU上下文信息包括的线程上下文信息就是目标轻量级线程的上下文信息。
第二方面,本发明实施例还提供了一种轻量级线程的调度方法,包括:
vCPU调度器在确定应用需要从当前虚拟中央处理器vCPU运行的源轻量级线程切换到目标vCPU的目标轻量级线程时,接收协同管理器发送指示信息,所述指示信息用于指示所述vCPU调度器将目标vCPU的CPU上下文信息加载到物理CPU中;
所述vCPU调度器将目标vCPU的CPU上下文信息加载到所述物理CPU中。其中,目标vCPU的CPU上下文信息中包括的线程上下文信息为所述目标轻量级线程的线程上下文信息;所述物理CPU中绑定有所述当前vCPU与所述目标vCPU。
由于在确定应用需要从当前vCPU运行的源轻量级线程切换到目标vCPU上的非运行态的目标轻量级线程时,基于现有技术提供的方案需要在切换vCPU后,还需要切换线程,从而需要经过两次切换,延长了切换时长。而利用本发明实施例提供的方案,在切换之前,协同管理器将目标轻量级线程的线程上下文信息替换到目标vCPU的CPU上下文信息中,从而仅需要将目标vCPU的CPU上下文信息加载到物理CPU中即可,不需要再执行加载目标轻量级线程的线程上下文信息到物理CPU,从而减短了切换时长。
在一种可能的设计中,所述vCPU调度器在接收协同管理器发送的指示信息之前,所述方法还包括:
所述vCPU调度器向协同管理器发送通知消息,所述通知消息用于通知所述应用需要从当前vCPU运行的源轻量级线程切换到目标vCPU的目标轻量级线程。
在一种可能的设计中,所述vCPU调度器向协同管理器发送通知消息后达到预设时间时,未接收到所述协同管理器发送的指示消息时,所述vCPU调度器将目标vCPU的CPU上下文信息加载到所述物理CPU中。
在一种可能的设计中,所述vCPU调度器在将所述目标vCPU的CPU上下文信息加载到所述物理CPU中之前,保存所述当前vCPU的轻量级线程的线程上下文信息。
第三方面,本发明实施例提供了一种协同管理器,包括:
获取单元,用于确定应用需要从当前虚拟中央处理器vCPU运行的轻量级线程切换到目标vCPU的目标轻量级线程时,获取所述目标vCPU的CPU上下文信息以及所述目标轻量级线程的线程上下文信息;
处理单元,用于将所述获取单元获取的所述目标vCPU的CPU上下文信息中包括的线程上下文信息替换为所述目标轻量级线程的线程上下文信息;所述当前vCPU与所述目标vCPU绑定于同一物理中央处理器CPU;
发送单元,用于向vCPU调度器发送指示信息,所述指示信息用于指示所述vCPU调度器将经过所述处理单元替换后的目标vCPU的CPU上下文信息加载到所述物理CPU中。
在一种可能的设计中,所述目标轻量级线程为所述目标vCPU上的非运行态线程。
所述处理单元,还用于在将所述获取单元获取的所述目标vCPU的CPU上下文信息中包括的线程上下文信息替换为所述目标轻量级线程的线程上下文信息之间,确定所述目标vCPU上的非运行态线程。
在一种可能的设计中,所述发送单元,还用于在所述获取单元获取所述目标vCPU的CPU上下文信息以及所述目标轻量级线程的线程上下文信息之前,接收所述vCPU调度器发送的通知消息,所述通知消息用于通知所述应用需要从当前vCPU的轻量级线程切换到目标vCPU的目标轻量级线程。
在一种可能的设计中,所述获取单元,具体用于从所述目标vCPU对应的第一数据结构中获取所述目标vCPU的CPU上下文信息,并从所述目标轻量级线程对应的第二数据结构中获取所述目标轻量级线程的线程上下文信息;
所述处理单元,具体用于将所述第一数据结构中保存所述目标vCPU的CPU上下文信息中的线程上下文信息替换为所述第二数据结构中保存的所述目标轻量级线程的线程上下文信息。
第四方面,本发明实施例还提供了一种协同管理器,所述协同管理器包括处理器以及存储器,所述存储器用于存储软件程序,所述处理器用于读取软件程序并执行前述任意一种设计所述的方法。该协同管理器具体可实现为移动终端或服务器或其他类型的计算机设备。
第五方面,本发明实施例提供了一种vCPU调度器,包括:
处理单元,用于确定应用需要从当前虚拟中央处理器vCPU运行的轻量级线程切换到目标vCPU的目标轻量级线程;
接收单元,用于处理单元确定应用需要从当前虚拟中央处理器vCPU运行的轻量级线程切换到目标vCPU的目标轻量级线程后,接收所述协同管理器发送指示信息,所述指示信息用于指示所述vCPU调度器将目标vCPU的CPU上下文信息加载到物理CPU中;
所述处理单元,还用于将所述目标vCPU的CPU上下文信息加载到所述物理CPU中;
其中,所述目标vCPU的CPU上下文信息中包括的线程上下文信息为所述目标轻量级线程的线程上下文信息;所述物理CPU中绑定有所述当前vCPU与所述目标vCPU。
在一种可能的设计中,所述vCPU调度器还可以包括:
发送单元,用于在所述接收单元接收协同管理器发送的指示信息之前,向协同管理器发送通知消息,所述通知消息用于通知所述应用需要从当前vCPU运行的源轻量级线程切换到目标vCPU的目标轻量级线程。
在一种可能的设计中,所述处理单元,还用于在确定所述发送单元向协同管理器发送通知消息后达到预设时间时,未接收到所述协同管理器发送的指示消息时,将目标vCPU的CPU上下文信息加载到所述物理CPU中。
在一种可能的设计中,所述处理单元,还用于在将所述目标vCPU的CPU上下文信息加载到所述物理CPU中之前,保存所述当前vCPU的轻量级线程的线程上下文信息。
第六方面,本发明实施例还提供了一种vCPU调度器,包括处理器以及存储器,所述存储器用于存储软件程序,所述处理器用于读取软件程序并执行前述任意一种设计所述的方法。该vCPU调度器具体可实现为移动终端或服务器或其他类型的计算机设备。
由于在确定应用需要从当前vCPU运行的源轻量级线程切换到目标vCPU上的非运行态的目标轻量级线程时,基于现有技术提供的方案需要在切换vCPU后,还需要切换线程,从而需要经过两次切换,延长了切换时长。而利用本发明实施例提供的方案,在切换之前,协同管理器将目标轻量级线程的线程上下文信息替换到目标vCPU的CPU上下文信息中,从而仅需要将目标vCPU的CPU上下文信息加载到物理CPU中即可,不需要再执行加载目标轻量级线程的线程上下文信息到物理CPU,从而减短了切换时长。
附图说明
图1为本发明实施例提供的一种计算机设备的架构示意图;
图2为本发明实施例提供的一种轻量级线程的调度方法流程图;
图3为本发明实施例提供的一种具体应用实施例对应的调度模型示意图;
图4为本发明实施例提供的具体应用实施例对应的调度方法示意图;
图5为本发明实施例提供的一种协同管理器结构示意图;
图6为本发明实施例提供的一种vCPU调度器结构示意图;
图7a和图7b为本发明实施例提供的计算机设备结构示意图。
具体实施方式
为了使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明作进一步地详细描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
本发明实施例提供一种轻量级线程的调度方法及装置,用以解决现有技术中存在的切换时间较长的问题。其中,方法和装置是基于同一发明构思的,由于方法及装置解决问题的原理相似,因此装置与方法的实施可以相互参见,重复之处不再赘述。
以下,对本申请中的部分用语进行解释说明,以便与本领域技术人员理解。
物理CPU,是相对于vCPU而言,为计算机设备中的硬件计算资源。一个物理CPU可以绑定多个vCPU。
VCPU,为虚拟机中的CPU,在虚拟机通过一个vCPU执行某应用时,实际上还是需要将该应用调度到与该vCPU绑定的物理CPU上运行。
其中,当前vCPU占用绑定的物理CPU正在执行应用,该当前vCPU处于运行态。目标vCPU,为之前被从物理CPU上切换下来的vCPU,该目标vCPU当前处于非运行态。
轻量级线程,运行在vCPU中,轻量级线程区别于传统的linux或windows线程,能够减少了非必要的核的切换,从而节省了切换时间。
CPU上下文信息包括与该CPU绑定的vCPU上运行的线程的上下文信息以及包括与该CPU绑定的vCPU的私有数据。
线程的上下文信息包括与所述线程相关的寄存器信息、比如CPU通用寄存器、状态寄存器以及控制寄存器的信息。vCPU的私有数据包括vCPU的编号、vCPU的当前调度信息等等。
多个,是指两个或两个以上。
和/或,描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。字符“/”一般表示前后关联对象是一种“或”的关系。
另外,需要理解的是,在本申请的描述中,“第一”、“第二”等词汇,仅用于区分描述的目的,而不能理解为指示或暗示相对重要性,也不能理解为指示或暗示顺序。
为了更加清晰的描述本发明实施例的技术方案,下面结合图1,对本发明实施例可能的计算机设备的架构进行说明。
如图1所示,所述计算机设备包括至少一个核,即包含至少一个物理CPU。图1中以多核为例。并且计算机设备中包括有多个内存。如图1中的物理CPU0、物理CPU1……物理CPUp。
由于对所述计算机设备进行虚拟化,因此,该计算机设备上可以部署多个VM,即如图1中的VM1和VM2,每个虚拟机中部署多个vCPU以及部署多个内存,每个虚拟机中部署有一个轻量级线程调度器,用于为各个应用分配vCPU。比如VM1中包括vCPU0、vCPU1……vCPUx,VM2中包括vCPU1、vCPU2……vCPUy。物理CPU0配置给vCPU0,而物理CPU1配置给vCPU1,物理CPU2配置给vCPUx,物理CPUp-1配置给VCPU1和VCPU2。各个VM中的虚拟内存与物理内存之间也存在对应关系,如图1所示。另外,为了实现服务器虚拟化技术,该计算机设备中还包括虚拟机监视器(英文:Virtual Machine Monitor,简称:VMM),该VMM用于实现所述计算机设备的硬件资源管理,以及计算资源调度。VMM中部署有vCPU调度器。本发明实施例提及的协同管理器部署在所述计算机设备中,具体的,可以部署在VMM中,也可以独立于VMM部署。
需说明的是,所述“协同管理器”仅是一个名称,该名称可以为其它名称或无名称(比如仅作为VMM的一个功能模块),只要能实现本发明实施例提供的功能即可。
在本发明实施例提供的所述计算机设备部署的多个VM中的每个VM均可以维护多个应用(英文:Application,简称:APP)。比如APP1可以运行VM1中vCPU0的轻量级线程上,不同的vCPU可以运行多个应用。
下面将基于上面所述的本发明实施例涉及的共性方面,并结合附图,对本发明实施例进一步详细说明。
参见图2所示,为本发明实施例提供的一种轻量级线程的调度方法流程示意图,该方法可以应用于如图1所示的协同管理器中。该方法的处理流程包括:
S101,协同管理器在确定应用需要从当前vCPU运行的源轻量级线程切换到目标vCPU的目标轻量级线程时,获取所述目标vCPU的CPU上下文信息以及所述目标轻量级线程的线程上下文信息。
比如,在进程间通讯(IPC)场景下,一个vCPU的LWTA在需要写入应用的通信数据时,在另一个vCPU的LWTC产生所述通信数据时,则需要将应用从运行在LWTA上切换到LWTC上,来进行写入流程。
其中,目标vCPU的CPU上下文信息保存在目标vCPU对应的内存的第一数据结构中,目标轻量级线程的线程上下文信息保存在目标vCPU对应的内存的第二数据结构中,该第二数据结构用于存储目标轻量级线程的上下文信息,因此第二数据结构与目标轻量级线程之间存在对应关系。
具体的,所述协同管理器在获取所述目标vCPU的CPU上下文信息以及所述目标轻量级线程的线程上下文信息,可以通过如下方式实现:
所述协同管理器从所述目标vCPU对应的第一数据结构中获取所述目标vCPU的CPU上下文信息,并从所述目标轻量级线程对应的第二数据结构中获取所述目标轻量级线程的线程上下文信息。
S102,所述协同管理器将所述目标vCPU的CPU上下文信息中包括的线程上下文信息替换为所述目标轻量级线程的线程上下文信息;所述当前vCPU与所述目标vCPU绑定于同一物理CPU中。
具体的,所述协同管理器将所述目标vCPU的CPU上下文信息中包括的线程上下文信息替换为所述目标轻量级线程的线程上下文信息,可以通过如下方式实现:
将所述第一数据结构中保存所述目标vCPU的CPU上下文信息中的线程上下文信息替换为所述第二数据结构中保存的所述目标轻量级线程的线程上下文信息。
由于目标vCPU的CPU上下文信息既包括vCPU之前运行的线程的上下文信息,还包括vCPU的虚拟机的私有数据,私有数据包括vCPU的编号、vCPU的当前调度信息等,从而以上在将第一数据结构中的信息替换为第二数据结构中的信息时,仅需要将第一数据结构中保存的线程上下文信息替换为第二数据结构中保存到所述目标轻量级线程的线程上下文信息。
S103,所述协同管理器向vCPU调度器发送指示信息,所述指示信息用于指示所述vCPU调度器将经过替换后的目标vCPU的CPU上下文信息加载到所述物理CPU中。
需说明的是,所述“vCPU调度器”仅是一个名称,在其他实施例中该名称可以改变。
S104,所述vCPU调度器接收所述协同管理器发送的指示信息。
S105,所述vCPU调度器将替换后的目标vCPU的CPU上下文信息加载到物理CPU中。
其中,所述vCPU调度器在将所述目标vCPU的CPU上下文信息加载到所述物理CPU中之前,还需要保存所述当前vCPU的轻量级线程的线程上下文信息。
其中,所述vCPU调度器在接收到指示信息时,目标vCPU的CPU上下文信息中包括的线程上下文信息已经被替换为所述目标轻量级线程的线程上下文信息。因此,所述vCPU调度器在接收到指示信息后,可以直接获取第一数据结构保存的信息并加载到物理CPU中。
由于协同管理器在确定应用需要从当前vCPU运行的源轻量级线程切换到目标vCPU上的非运行态的目标轻量级线程时,基于现有技术提供的方案需要在切换vCPU后,还需要切换线程,从而需要经过两次切换,延长了切换时长。而利用本发明实施例提供的方案,在切换之前,将目标轻量级线程的线程上下文信息替换到目标vCPU的CPU上下文信息中,从而仅需要将目标vCPU的CPU上下文信息加载到物理CPU中即可,不需要再执行加载目标轻量级线程的线程上下文信息到物理CPU,从而减短了切换时长。
在一种可能的实现方式中,所述目标轻量级线程为所述目标vCPU上的非运行态线程。
协同管理器在确定所述目标轻量级线程为所述目标vCPU上的非运行态线程时,则执行步骤S101~S105。
在一种可能的设计中,所述vCPU调度器在接收协同管理器发送的指示信息之前,即所述vCPU调度器在确定所述应用需要从当前vCPU运行的源轻量级线程切换到目标vCPU的目标轻量级线程时,所述vCPU调度器向协同管理器发送通知消息,所述通知消息用于通知所述协同管理器所述应用需要从当前vCPU运行的源轻量级线程切换到目标vCPU的目标轻量级线程。
所述协同管理器接收所述vCPU调度器发送的通知消息。即所述协同管理器在接收到所述vCPU调度发送的通知消息时,确定所述应用需要从当前vCPU运行的源轻量级线程切换到目标vCPU的目标轻量级线程。
在一种可能的设计中,所述vCPU调度器在确定所述应用需要从当前vCPU运行的源轻量级线程切换到目标vCPU的目标轻量级线程时,所述vCPU调度器向协同管理器发送所述通知消息。如果所述协同管理在确定目标轻量级线程为运行态线程时,不再执行线程上下文替换过程,可以向vCPU调度器发送指令信息,所述指令信息用于指示vCPU调度器执行将目标vCPU的CPU上下文信息加载到物理CPU中。
在另一种可能的设计中,所述协同管理在确定目标轻量级线程为运行态线程时,不再执行线程上下文替换过程,也不向所述vCPU调度器发送指令信息。从而vCPU调度器在确定发送所述通知消息后达到预设时长时,则执行将目标vCPU的CPU上下文信息加载到物理CPU中。
下面结合具体应用实施例,对本发明实施例作具体说明。
如图3所示,物理CPU中绑定有vCPUA和vCPUB。vCPUA上运行的轻量级线程为LWTA,vCPUB运行的轻量级线程为LWTB,vCPUB还包括未运行的轻量级线程LWTC。目前应用运行在轻量级线程LWTA上,并且当前需要将应用切换到轻量级线程LWTC上。
如图4所示,具体调度流程如下:
S41,vCPU调度器确定应用需要从当前vCPUA运行的LWTA切换到目标vCPUB的LWTC上时,保存vCPUA的CPU上下文信息到内存中vCPUA对应的数据结构1中。
S42,vCPU调度器向协同管理器发送通知消息,所述通知消息用于通知所述应用需要从当前vCPUA运行的LWTA切换到目标vCPUB的LWTC上。
S43,协同管理器接收到指示信息后,获取数据结构2中保存的vCPUB的CPU上下文信息,以及获取数据结构3中保存的LWTC的线程上下文信息。
S44,协同管理器将vCPUB的CPU上下文信息中的线程上下文信息替换为LWTC的线程上下文信息。
S45,协同管理器向vCPU调度器发送指示信息,所述指示信息用于指示所述vCPU调度器将vCPUB的CPU上下文信息加载到物理CPU中。
S46,vCPU调度器接收到指示信息后,将vCPUB的CPU上下文信息加载到物理CPU中。
基于图4,各个数据结构之间调度流程如图3所示。
31,vCPUA的CPU上下文信息被保存到内存中的数据结构1中。
32,数据结构3中的LWTC上下文信息覆盖数据结构2中的vCPUB的CPU上下文信息中的线程上下文信息。
33,数据结构2中vCPUB的CPU上下文信息被加载到物理CPU中。
基于与方法实施例同样的发明构思,本发明实施例还提供了一种协同管理器,如图5所示,该装置包括:
获取单元501,用于确定应用需要从当前vCPU运行的轻量级线程切换到目标vCPU的目标轻量级线程时,获取所述目标vCPU的CPU上下文信息以及所述目标轻量级线程的线程上下文信息;
处理单元502,用于将所述获取单元501获取的所述目标vCPU的CPU上下文信息中包括的线程上下文信息替换为所述目标轻量级线程的线程上下文信息;所述当前vCPU与所述目标vCPU绑定于同一物理中央处理器CPU;
发送单元503,用于向vCPU调度器发送指示信息,所述指示信息用于指示所述vCPU调度器将经过所述处理单元替换后的目标vCPU的CPU上下文信息加载到所述物理CPU中。
所述目标轻量级线程为所述目标vCPU上的非运行态线程。
所述发送单元503,还用于在所述获取单元501获取所述目标vCPU的CPU上下文信息以及所述目标轻量级线程的线程上下文信息之前,接收所述vCPU调度器发送的通知消息,所述通知消息用于通知所述应用需要从当前vCPU的轻量级线程切换到目标vCPU的目标轻量级线程。
本发明实施例还提供了一种vCPU调度器,如图6所示,包括:
处理单元601,用于确定应用需要从当前vCPU运行的轻量级线程切换到目标vCPU的目标轻量级线程;
接收单元602,用于处理单元601确定应用需要从当前vCPU运行的轻量级线程切换到目标vCPU的目标轻量级线程后,接收所述协同管理器发送指示信息,所述指示信息用于指示所述vCPU调度器将目标vCPU的CPU上下文信息加载到物理CPU中;
所述处理单元601,还用于将所述目标vCPU的CPU上下文信息加载到所述物理CPU中;
其中,所述目标vCPU的CPU上下文信息中包括的线程上下文信息为所述目标轻量级线程的线程上下文信息;所述物理CPU中绑定有所述当前vCPU与所述目标vCPU。
所述装置,还可以包括:
发送单元603,用于在所述接收单元602接收协同管理器发送的指示信息之前,向协同管理器发送通知消息,所述通知消息用于通知所述应用需要从当前vCPU运行的源轻量级线程切换到目标vCPU的目标轻量级线程。
需要说明的是,本发明实施例中对单元的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。在本申请的实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(processor)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
本发明实施例提供的协同管理器以及vCPU调度器均可以设置于计算机设备中。
基于以上实施例,本发明实施例还提供了一种计算机设备,参阅图7a和图7b所示,该计算机设备包括:处理器701、通信总线702以及存储器703,其中,
所述处理器701和所述存储器703通过所述通信总线702相互连接。所述通信总线702可以是外设部件互连标准(英文:peripheral component interconnect,简称:PCI)通信总线或扩展工业标准结构(英文:extended industry standard architecture,简称:EISA)通信总线等。所述通信总线可以分为地址通信总线、数据通信总线、控制通信总线等。为便于表示,图7a或图7b中仅用一条粗线表示,但并不表示仅有一根通信总线或一种类型的通信总线。
所述计算机设备采用服务器虚拟化技术,因此,所述计算机设备内部还包含VMM704、协同管理器705、vCPU调度器以及至少一个虚拟机,虚拟机通常运行在VMM704之上。vCPU调度器可以设置于VMM704中,或者vCPU调度器的功能由VMM实现。
VMM704可以由硬件实现,也可以由软件实现。在VMM704由软件实现时,VMM704的软件程序存储在所述存储器703中,VMM704的软件程序可以独占一个CPU,由该CPU运行。每个虚拟机包含一个或多个vCPU,且每个虚拟机中维护多个应用。
所述处理器701中包括多个物理CPU。协同管理器705的功能可以通过软件实现,具体的,可以实现为VMM704中的一个功能模块,也可以实现为独立于VMM704的软件模块(如图7a所示);协同管理器705的功能还可以通过独立的硬件设备实现(如图7b所示),比如微处理器、微控制单元、现场可编辑门阵列(英文:Field-Programmable Gate Array,简称:FPGA)等。
所述存储器703,用于存放程序以及CPU上下文信息和线程上下文信息。其中CPU上下文信息和线程上下文信息存储在存储器703包括的内存中。具体地,程序可以包括程序代码,该程序代码包括计算机操作指令。存储器703可能包含随机存取存储器(英文:randomaccess memory,简称:RAM),也可能还包括非易失性存储器(non-volatile memory),例如至少一个磁盘存储器。
可选的,所述计算机设备还可以包括通信接口,用于与其他设备之间通信。除此之外,该计算机设备还可以包括其他模块,例如输入输出设备等,在此不再赘述。
系统或装置实施例可参考方法实施例部分的描述,在此不再赘述。
在应用需要从当前vCPU运行的源轻量级线程切换到目标vCPU上的非运行态的目标轻量级线程时,基于现有技术提供的方案需要在切换vCPU后,还需要切换线程,从而需要经过两次切换,延长了切换时长。而利用本发明实施例提供的方案,在切换之前,将目标轻量级线程的线程上下文信息替换到目标vCPU的CPU上下文信息中,从而仅需要将目标vCPU的CPU上下文信息加载到物理CPU中即可,不需要再执行加载目标轻量级线程的线程上下文信息到物理CPU,从而减短了切换时长。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
Claims (8)
1.一种轻量级线程的调度方法,其特征在于,包括:
协同管理器在确定应用需要从当前虚拟中央处理器vCPU运行的源轻量级线程切换到目标vCPU的目标轻量级线程时,获取所述目标vCPU的CPU上下文信息以及所述目标轻量级线程的线程上下文信息;
所述协同管理器将所述目标vCPU的CPU上下文信息中包括的线程上下文信息替换为所述目标轻量级线程的线程上下文信息;所述当前vCPU与所述目标vCPU绑定于同一物理中央处理器CPU中;
所述协同管理器向vCPU调度器发送指示信息,所述指示信息用于指示所述vCPU调度器将经过替换后的目标vCPU的CPU上下文信息加载到所述物理CPU中。
2.如权利要求1所述的方法,其特征在于,所述目标轻量级线程为所述目标vCPU上的非运行态线程。
3.如权利要求1或2所述的方法,其特征在于,协同管理器确定应用需要从当前虚拟中央处理器vCPU运行的源轻量级线程切换到目标vCPU的目标轻量级线程,包括:
所述协同管理器接收所述vCPU调度器发送的通知消息,所述通知消息用于通知所述应用需要从当前vCPU的源轻量级线程切换到目标vCPU的目标轻量级线程。
4.如权利要求1或2所述的方法,其特征在于,所述协同管理器获取所述目标vCPU的CPU上下文信息以及所述目标轻量级线程的线程上下文信息,包括:
所述协同管理器从所述目标vCPU对应的第一数据结构中获取所述目标vCPU的CPU上下文信息,并从所述目标轻量级线程对应的第二数据结构中获取所述目标轻量级线程的线程上下文信息;
所述协同管理器将所述目标vCPU的CPU上下文信息中包括的线程上下文信息替换为所述目标轻量级线程的线程上下文信息,包括:
将所述第一数据结构中保存所述目标vCPU的CPU上下文信息中的线程上下文信息替换为所述第二数据结构中保存的所述目标轻量级线程的线程上下文信息。
5.一种协同管理器,其特征在于,包括:
获取单元,用于确定应用需要从当前虚拟中央处理器vCPU运行的轻量级线程切换到目标vCPU的目标轻量级线程时,获取所述目标vCPU的CPU上下文信息以及所述目标轻量级线程的线程上下文信息;
处理单元,用于将所述获取单元获取的所述目标vCPU的CPU上下文信息中包括的线程上下文信息替换为所述目标轻量级线程的线程上下文信息;所述当前vCPU与所述目标vCPU绑定于同一物理中央处理器CPU;
发送单元,用于向vCPU调度器发送指示信息,所述指示信息用于指示所述vCPU调度器将经过所述处理单元替换后的目标vCPU的CPU上下文信息加载到所述物理CPU中。
6.如权利要求5所述的协同管理器,其特征在于,所述目标轻量级线程为所述目标vCPU上的非运行态线程。
7.如权利要求5或6所述的协同管理器,其特征在于,所述发送单元,还用于在所述获取单元获取所述目标vCPU的CPU上下文信息以及所述目标轻量级线程的线程上下文信息之前,接收所述vCPU调度器发送的通知消息,所述通知消息用于通知所述应用需要从当前vCPU的轻量级线程切换到目标vCPU的目标轻量级线程。
8.如权利要求5或6所述的协同管理器,其特征在于,所述获取单元,具体用于从所述目标vCPU对应的第一数据结构中获取所述目标vCPU的CPU上下文信息,并从所述目标轻量级线程对应的第二数据结构中获取所述目标轻量级线程的线程上下文信息;
所述处理单元,具体用于将所述第一数据结构中保存所述目标vCPU的CPU上下文信息中的线程上下文信息替换为所述第二数据结构中保存的所述目标轻量级线程的线程上下文信息。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610958074.5A CN108009007B (zh) | 2016-10-27 | 2016-10-27 | 轻量级线程的调度方法及协同管理器、vCPU调度器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610958074.5A CN108009007B (zh) | 2016-10-27 | 2016-10-27 | 轻量级线程的调度方法及协同管理器、vCPU调度器 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108009007A CN108009007A (zh) | 2018-05-08 |
CN108009007B true CN108009007B (zh) | 2021-01-15 |
Family
ID=62047369
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610958074.5A Active CN108009007B (zh) | 2016-10-27 | 2016-10-27 | 轻量级线程的调度方法及协同管理器、vCPU调度器 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108009007B (zh) |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101689127A (zh) * | 2008-04-28 | 2010-03-31 | 松下电器产业株式会社 | 虚拟计算机控制装置、虚拟计算机控制方法及虚拟计算机控制程序 |
CN102334102A (zh) * | 2009-02-24 | 2012-01-25 | 松下电器产业株式会社 | 处理器装置、多线程处理器装置 |
TW201245975A (en) * | 2011-05-14 | 2012-11-16 | Ind Tech Res Inst | Apparatus and method for managing hypercalls in a hypervisor and the hypervisor thereof |
CN102822809A (zh) * | 2010-05-14 | 2012-12-12 | 松下电器产业株式会社 | 计算机系统 |
CN105068859A (zh) * | 2015-07-29 | 2015-11-18 | 上海谐桐信息技术有限公司 | 一种跨虚拟机的多服务调用方法及系统 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8028295B2 (en) * | 2005-09-30 | 2011-09-27 | Intel Corporation | Apparatus, system, and method for persistent user-level thread |
US8151095B1 (en) * | 2008-07-18 | 2012-04-03 | Nvidia Corporation | System and method for context migration across CPU threads |
US8473964B2 (en) * | 2008-09-30 | 2013-06-25 | Microsoft Corporation | Transparent user mode scheduling on traditional threading systems |
EP2689330B1 (en) * | 2011-03-25 | 2022-12-21 | Intel Corporation | Register file segments for supporting code block execution by using virtual cores instantiated by partitionable engines |
-
2016
- 2016-10-27 CN CN201610958074.5A patent/CN108009007B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101689127A (zh) * | 2008-04-28 | 2010-03-31 | 松下电器产业株式会社 | 虚拟计算机控制装置、虚拟计算机控制方法及虚拟计算机控制程序 |
CN102334102A (zh) * | 2009-02-24 | 2012-01-25 | 松下电器产业株式会社 | 处理器装置、多线程处理器装置 |
CN102822809A (zh) * | 2010-05-14 | 2012-12-12 | 松下电器产业株式会社 | 计算机系统 |
TW201245975A (en) * | 2011-05-14 | 2012-11-16 | Ind Tech Res Inst | Apparatus and method for managing hypercalls in a hypervisor and the hypervisor thereof |
CN105068859A (zh) * | 2015-07-29 | 2015-11-18 | 上海谐桐信息技术有限公司 | 一种跨虚拟机的多服务调用方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
CN108009007A (zh) | 2018-05-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10768960B2 (en) | Method for affinity binding of interrupt of virtual network interface card, and computer device | |
CN109144710B (zh) | 资源调度方法、装置及计算机可读存储介质 | |
US11579908B2 (en) | Containerized workload scheduling | |
CN108064377B (zh) | 一种多系统共享内存的管理方法及装置 | |
US9959134B2 (en) | Request processing using VM functions | |
CN103744716A (zh) | 一种基于当前vcpu调度状态的动态中断均衡映射方法 | |
CN112035238A (zh) | 任务调度处理方法、装置、集群系统及可读存储介质 | |
WO2018040845A1 (zh) | 一种计算资源调度方法及装置 | |
US20240160474A1 (en) | Multi-core processor task scheduling method, and device and storage medium | |
CN103049328A (zh) | 计算机系统中内存资源分配方法 | |
CN111736943A (zh) | 虚拟机的迁移方法和系统 | |
US8751703B2 (en) | Interrupt event management | |
CN109542829B (zh) | 多系统中gpu设备的控制方法、装置及电子设备 | |
US20190377612A1 (en) | VCPU Thread Scheduling Method and Apparatus | |
CN113238832A (zh) | 虚拟处理器的调度方法、装置、设备及计算机存储介质 | |
CN108009007B (zh) | 轻量级线程的调度方法及协同管理器、vCPU调度器 | |
CN104714843A (zh) | 多内核操作系统实例支持多处理器的方法及装置 | |
US11720388B2 (en) | Management of dynamic sharing of central processing units | |
CN107562510B (zh) | 一种应用实例的管理方法及管理设备 | |
CN113032154B (zh) | 一种虚拟cpu的调度方法、装置、电子设备及存储介质 | |
CN115292000A (zh) | 一种虚拟机动态迁移的方法、装置及电子设备 | |
US11556371B2 (en) | Hypervisor task execution management for virtual machines | |
CN114610485A (zh) | 资源处理系统以及方法 | |
CN114448909A (zh) | 基于ovs的网卡队列轮询方法、装置、计算机设备及介质 | |
CN109002347B (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 |