CN102789395B - 管理虚拟机器监视器中超级调用的装置与方法及其监视器 - Google Patents
管理虚拟机器监视器中超级调用的装置与方法及其监视器 Download PDFInfo
- Publication number
- CN102789395B CN102789395B CN201110372982.3A CN201110372982A CN102789395B CN 102789395 B CN102789395 B CN 102789395B CN 201110372982 A CN201110372982 A CN 201110372982A CN 102789395 B CN102789395 B CN 102789395B
- Authority
- CN
- China
- Prior art keywords
- hypercalls
- virtual machine
- virtual
- postpone
- processing unit
- 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
- 238000000034 method Methods 0.000 title claims description 48
- 238000012545 processing Methods 0.000 claims description 37
- 230000006870 function Effects 0.000 claims description 12
- 230000003139 buffering effect Effects 0.000 claims description 2
- 230000007246 mechanism Effects 0.000 description 16
- 238000010586 diagram Methods 0.000 description 12
- 230000015654 memory Effects 0.000 description 6
- 238000013461 design Methods 0.000 description 5
- 230000006399 behavior Effects 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 238000002474 experimental method Methods 0.000 description 3
- 230000008672 reprogramming Effects 0.000 description 3
- 230000001960 triggered effect Effects 0.000 description 2
- 101100016034 Nicotiana tabacum APIC gene Proteins 0.000 description 1
- 238000000151 deposition Methods 0.000 description 1
- 238000010304 firing Methods 0.000 description 1
- 235000003642 hunger Nutrition 0.000 description 1
- 238000007689 inspection Methods 0.000 description 1
- 238000009434 installation Methods 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 238000005259 measurement Methods 0.000 description 1
- 230000037351 starvation Effects 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
-
- 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/44—Arrangements for executing specific programs
- G06F9/448—Execution paradigms, e.g. implementations of programming paradigms
- G06F9/4482—Procedural
- G06F9/4484—Executing subprograms
-
- 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/4812—Task transfer initiation or dispatching by interrupt, e.g. masked
-
- 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/5061—Partitioning or combining of resources
- G06F9/5077—Logical partitioning of resources; Management or configuration of virtualized resources
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/48—Indexing scheme relating to G06F9/48
- G06F2209/483—Multiproc
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)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
一种管理虚拟机器监视器中超级调用的装置与方法及其监视器。在该装置中,监视器备有中断处理器和调度器。当虚拟机器被初始化时,可延迟低负担型超级调用(DLH)模块被配置来指派别的DLH队列给每一虚拟机器。在该别的DLH队列中的每一元素代表超级调用常式。当虚拟机器通知中断处理器有至少一可延迟型超级调用要执行时,此调度器选择至少一虚拟中央处理单元(VCPU)并将它们指派给虚拟机器,以在至少一实体中央处理单元(PCPU)中执行。在回存VCPU内文至具有至少一VCPU的虚拟机器之前,DLH模块执行至少一个可延迟型超级调用,此可延迟型超级调用是指被插入在此虚拟机器的DLH队列中的可延迟型超级调用。
Description
技术领域
本发明涉及一种管理虚拟机器监视器(hypervisor)中超级调用的装置与方法以及虚拟机器监视器。
背景技术
在传统的操作系统如Linux操作系统(OS)中,用户级程序藉由使用系统调用来请求系统服务。类似地,在一般称为虚拟机管理器或监视器(virtualmachine manager or monitor,VMM)如Xen的虚拟机器监视器中,一虚拟计算机OS(guest OS)是使用超级调用来请求虚拟机器监视器提供的服务。为了简化虚拟机器监视器的设计,Xen把所有的设备驱动程序和所指定的重要系统幕后程序(daemon)放入一个特殊的特权域(privileged domain),称为域0。因为在Xen虚拟机器监视器的空间里没有线程(thread)的支持,对系统幕后程序的运行来说,域0是唯一的选择。
Xen不同于传统的Linux,后者可以使用核心线程的方式来运行系统幕后程序,例如,网络文档系统(network file system,NFS)幕后程序在一Linux核心中处理网络分组和文档系统结构。对开发人员和系统的性能来说,有两个显著的特点。一个特点是核心线程可以很容易地接取核心数据结构。另一个特点是核心线程都有它自己的程序地址空间(process address space),并且可以如同正常程序地进行调度或内文切换(context switched)。
与Linux的内核线程不同,域0没办法直接存取或修改虚拟机器监视器里的信息结构,而是需要向虚拟机器监视器请求提供服务来完成工作。Xen里的一个超级调用应用程序界面(application program interface,API)提供了与典型OS核心的系统调用类似的功能,可供域0或是虚拟机器(virtualmachine,VM)里的OS(被称为虚拟计算机OS)来请求Xen虚拟机器监视器提供服务。其中的一些服务包括获取重要虚拟机器监视器的数据结构、为非特权的虚拟机器分配资源、执行输入输出请求等。当系统幕后程序要求大量的服务时,即众多的超级调用时,此界面没有调整与分配得很好。因为每一超级调用在虚拟计算机OS和虚拟机器监视器之间的切换会产生额外的负担(extra overhead),如果幕后程序逐一发送超级调用的话,可能会影响到幕后程序或系统的性能。
现今,虚拟计算机OS可以选择逐一发送超级调用,或是以批次(batch)方式来传送一批超级调用但会遭到阻挡直到所有的超级调用完成为止。系统幕后程序想请求虚拟机器监视器提供服务,必须使用由一虚拟机器监视器提供的一超级调用API。此多调用(multicall)API是设计来使得一虚拟计算机OS一次发送一序列的超级调用,从而减少虚拟计算机OS和虚拟机器监视器之间进行内文切换的次数。此多调用API能降低整体超级调用的负担。
然而,每一次的多调用是同步的,这意味着调用者(caller)和相关的虚拟中央处理单元(virtual central processing unit,VCPU),称之为VCPUh,会受阻直到所有多调用内的超级调用被完成为止。如图1所示,虚拟机器VM–X里大量的超级调用将阻断其他虚拟机器,如VM-Y的运作,因为虚拟机器监视器没有切换超级调用的内文,例如,在一时间片段(time slice)的期间中,VM-X发出超级调用H2-H8。并且,此界面被设计为序列地(serially)执行所有调用,而一次的多调用也只能利用一实体中央处理单元(physical centralprocessing unit,PCPU)的资源,而且此PCPU上的VCPUh是已被调度的,即使虚拟计算机域(guest domain)已被给予可在多个PCPUs上执行的多个VCPU。
有些技术可以发送一延迟功能调用(deferrable function call)来延迟由超级调用程序组成的工作。延迟工作可采取多种方式来实现,例如,采用Linux的中断处理器和设备驱动程序、或是非同步、或是在Xen闲置时执行等。
一些公开的参考文献提出了问题或是提供了解决的方法,来提高虚拟环境的系统性能。例如,一篇参考文献揭示了一种在虚拟机器环境中,衰减(attenuating)虚拟处理器的自旋等待(spin waiting)的方法,使得当虚拟处理器正在存取一同步区段(synchronization section)时,可以获得额外的时间片段。此方法解决了虚拟化环境中的调度问题。另一篇参考文献揭示了一种在一虚拟机器超额分配(over-allocation)环境中,信息传递界面(message passinginterface,MPI)的信息接收方法。信息接收方法与虚拟机器层派遣机制(VMlayer dispatching mechanism)是互相独立的。藉由修改MPI库的信息接收机制,此方法以协调此虚拟环境中的两个分配机制来提高系统性能,也就是,由用户端OS将程序分配给虚拟处理器,以及由虚拟机器分配管理器将虚拟处理器分配给实体处理器。
发明内容
本发明揭示的实施例可提供一种管理一虚拟机器监视器中超级调用的装置与方法以及虚拟机器监视器。
所揭示的一实施例是关于一种管理一虚拟机器监视器中超级调用的装置。此装置应用于备有一中断处理器和一调度器的此虚拟机器监视器。此装置可包含一可延迟低负担超级调用(DLH)模块,当多个虚拟机器的每一虚拟机器初始化时,此DLH模块被配置来指派一个别的DLH队列给此虚拟机器,其中在一个别的DLH队列中的每一元素代表一超级调用常式(routine)。当此多个虚拟机器中有一虚拟机器通知此中断处理器有至少一可延迟型超级调用要执行时,此调度器选择至少一VCPU并将此至少一VCPU指派给此虚拟机器,以在至少一PCPU中执行。在回存VCPU内文至具有至少一VCPU的虚拟机器之前,此DLH模块执行至少一个可延迟型超级调用,此处的可延迟型超级调用是指被插入在此虚拟机器相对应DLH队列中的一个或多个可延迟型超级调用。
所揭示的另一实施例是关于一种管理一虚拟机器监视器中超级调用的方法。此方法是实现于一计算机系统,并且可包含以下计算机可执行的行为:当多个虚拟机器的每一虚拟机器初始化时,指派一个别的DLH队列给此虚拟机器,其中在一个别的DLH队列中的每一元素代表一个超级调用常式;当此多个虚拟机器中有一虚拟机器通知此虚拟机器监视器有至少一可延迟型超级调用要执行时,选择至少一VCPU并将此至少一VCPU指派给此虚拟机器,以在至少一PCPU中执行;以及在回存此VCPU内文至具有至少一VCPU的虚拟机器之前,执行被插入在具有至少一VCPU的此虚拟机器的一相对应的DLH队列中的此一个或多个可延迟型超级调用。
所揭示的又一实施例是关于一种虚拟机器监视器,用来管理一虚拟环境中的超级调用。此虚拟机器监视器可包含一中断处理器、一调度器、以及一DLH模块,当多个虚拟机器的每一虚拟机器初始化时,此DLH模块被配置来指派一个别的DLH队列给此虚拟机器,其中此个别的DLH队列被维护在此虚拟机器监视器里,此个别的DLH队列中的每一元素代表一超级调用常式。当此多个虚拟机器中有一虚拟机器通知此中断处理器有至少一可延迟型超级调用要执行时,此调度器选择至少一VCPU并将此至少一VCPU指派给此虚拟机器,以在至少一PCPU中执行。在回存此VCPU内文至具有至少一VCPU的此虚拟机器之前,此DLH模块执行被插入在具有至少一VCPU的此虚拟机器的一相对应的DLH队列中的此一个或多个可延迟型超级调用。
现结合下列附图及实施例的详细说明,将上述及本发明的其他优点详述于后。
附图说明
图1是一范例示意图,说明一虚拟机器里大量的超级调用将阻断其他虚拟机器。
图2是根据一实施范例的示意图,说明一DLH机制,其中每一虚拟机器可将超级调用要求插入于指派给此虚拟机器的DLH队列。
图3是根据一实施范例的示意图,说明一种管理一虚拟机器监视器中超级调用的装置。
图4根据一实施范例的示意图,说明一种管理超级调用的虚拟机器监视器。
图5是根据一实施范例的流程图,说明管理一虚拟机器监视器中超级调用的方法。
图6是根据一实施范例的示意图,说明DLH模块在一单核心系统中执行可延迟型超级调用。
图7是根据一实施范例的示意图,说明多个VCPU运行在两个PCPUs的范例。
图8是根据一实施范例的示意图,说明一Xen虚拟机器监视器的调度逻辑。
图9是分别使用多调用方法、以及本发明揭示的DLH机制在两个VCPU、四个VCPU、以及八个VCPU的环境下,完成50000个超级调用的执行时间的实验结果。
图10是对虚拟计算机域,量测一多核心系统中多调用方法、以及本揭示的DLH机制对于多线程程序的影响。
附图符号说明
210DLH队列 220DLH队列
230虚拟机器监视器
312中断处理器 314调度器
DLH可延迟低负担超级调用 VCPU虚拟中央处理单元
320DLH模块 322可延迟型超级调用H1-H6
324VCPU内文 H一超级调用常式
355虚拟机器将一超级调用常式插入于自己的DLH队列中
400虚拟机器监视器 410DLH队列
420DLH队列
510当多个虚拟机器的每一虚拟机器初始化时,指派一个别的DLH队列给此虚拟机器
520当此多个虚拟机器中有一虚拟机器通知此虚拟机器监视器有至少一可延迟型超级调用要执行时,选择至少一VCPU并将此至少一
VCPU指派给此虚拟机器,以在至少一PCPU中执行
530在回存此VCPU内文至具有至少一VCPU的此虚拟机器之前,执行至少一个可延迟型超级调用,此处的可延迟型超级调用是指被插入在此虚拟机器DLH队列中的可延迟型超级调用
605正常的超级调用 610、620、630一中断发生
H1~H9可延迟型超级调用
820调度器 810do_softirq的码段
805处理前面提及的DLH队列的超级调用
815处理TIMER_SOFTIRQ和重新编程硬件定时器中断
具体实施方式
本发明揭示的实施范例可提供一种可延迟低负担型超级调用(DLH)机制,以非同步的方式来执行超级调用。每一虚拟计算机域使用DLH队列,其中DLH队列中的每一元素代表超级调用常式。当此虚拟机器监视器选择指派给此虚拟计算机域的VCPU,以在至少一PCPU中执行时,它首先执行此虚拟计算机域的DLH队列中的元素。每一次存取此DLH队列时,此DLH队列中被处理元素的数量是有限制的,以避免发生锁死(starvation)现象,并且此数量可由系统设计者明确规定。
图2是根据一实施范例的示意图,说明DLH机制,其中每一虚拟机器可将超级调用要求插入于指派给此虚拟机器的DLH队列,此DLH队列被维护在此虚拟机器监视器中。参考图2,虚拟机器VM-X可插入超级调用要求(hypercall request)到DLH队列210,例如经由超级调用常式;虚拟机器VM-Y可插入超级调用要求到另外的DLH队列220,例如经由超级调用常式。DLH队列210和DLH队列220可由虚拟机器监视器230来维护,其中H表示超级调用常式。
在实施范例的DLH机制中,个别的DLH队列被指派给每一虚拟计算机域。DLH队列的每一元素可以包含一函式指标(function pointer),以指向超级调用常式,此超级调用常式是此虚拟计算机域希望在虚拟机器监视器上执行的程序。每一虚拟机器被初始化时,皆被指派给予DLH队列,此DLH队列是用来缓冲一个或多个可延迟型超级调用。当此虚拟机器正在运行时,它可以藉由正常超级调用(normal hypercall)来插入一个或多个可延迟型超级调用。虚拟计算机域产生DLH调用来插入元素到它的DLH队列,一旦插入完成,此调用随即返回。
图3是根据一实施范例的示意图,说明一种管理虚拟机器监视器中超级调用的装置。此装置可适应于备有中断处理器312和调度器314的一虚拟机器监视器(未显示),如图3所示。参考图3,此装置可包含DLH模块320。当多个虚拟机器的每一虚拟机器初始化时,DLH模块320被配置来指派个别的DLH队列给此虚拟机器,其中在个别的DLH队列中的每一元素代表超级调用常式。当虚拟机器正在运行时,虚拟机器可以将一个或多个超级调用常式插入于自己的DLH队列中。如一参考号355所示,虚拟机器将超级调用常式插入于自己的DLH队列中,其中H表示被插入DLH队列的超级调用常式。
当此多个虚拟机器中有虚拟机器通知中断处理器312有至少一可延迟型超级调用要执行时,例如,藉由产生个中断,其中中断发生后,正在虚拟机器上执行的VCPU内文324会被储存在此虚拟机器监视器中。然后,调度器314选择至少一VCPU并将此至少一VCPU指派给此虚拟机器,以在至少一PCPU中执行。此DLH模块320执行一个或多个可延迟型超级调用如H1-H6,此一个或多个可延迟型超级调用是被插入在指派给具有此至少一指派的VCPU的此虚拟机器的相对应的DLH队列322中。然后此虚拟机器监视器将VCPU内文回存到具有此至少一指派的VCPU的此虚拟机器。
DLH模块320和虚拟机器监视器可利用一个或多个硬件电路搭配硬件描述语言如Verilog或VHDL,来设计。经过整合和布局后,硬件电路可被烧录在现场可编程门阵列(Field Programmable Gate Array,FPGA)。由硬件描述语言所完成的电路设计可以由一个或多个集成电路来实现,例如特定应用集成电路(Application-Specific Integrated Circuits,ASIC)。换句话说,DLH模块320和虚拟机器监视器可以由一个或多个集成电路来实现。另一个范例是,此装置可包含一个或多个处理器来执行DLH模块的各项功能。
所以,根据本揭示的一实施范例,用来管理虚拟环境中的超级调用的虚拟机器监视器400可包含中断处理器312、调度器314、以及DLH模块320,如图4所示。在虚拟环境中,虚拟机器监视器400的上方可以是多个虚拟机器,此处以两个虚拟机器为例来说明,如图4所示,但不依此限定本揭示实施的范围。在图4中,在两虚拟机器VM-1和VM–2内的是虚拟机器的VCPU内文。如前所述,指派给多个虚拟机器的DLH队列是被维护在虚拟机器监视器中。在图4中,被维护在虚拟机器监视器400中的DLH队列410和DLH队列420是分别用来缓冲由虚拟机器VM-1和VM-2插入的可延迟型超级调用。
并且,当虚拟机器如VM–1正在运行时,它可以藉由正常超级调用,将一个或多个可延迟型超级调用插入到自己的DLH队列。当中断发生时,虚拟机器监视器400的中断处理器312会保存虚拟机器VM-1的VCPU内文。当中断处理器312处理中断后,调度器314会选择至少一VCPU来运行。在回存VCPU内文以前,DLH模块320检查在VCPU的拥有者VM的DLH队列中,是否有可延迟型超级调用。当条件为真时,DLH模块320选取此可延迟型超级调用来执行。执行一个或多个可延迟型超级调用完成之后,虚拟机器监视器回存此VCPU内文到此虚拟机器。此VCPU内文是在至少一VCPU上执行的信息内容,例如是程序、数据、堆迭的内容、或是寄存器内容等。
如上所述,虚拟机器监视器可用一个或多个集成电路来实现。换句话说,中断处理器312、调度器314、DLH模块320、以及一个或多个DLH队列可以由一个或多个硬件组件,如集成电路来实现。类似地,在另一范例中,虚拟机器监视器400可包含一个或多个处理器来执行中断处理器312、调度器314、DLH模块320、以及一个或多个DLH队列的功能。
藉由DLH模块320和虚拟机器监视器400,图5是根据一实施范例的流程图,说明管理虚拟机器监视器中超级调用的方法。此方法是实现于计算机系统中,包含计算机可执行的行为,如图5所示。此方法可适应于此虚拟机器监视器,此虚拟机器监视器可包含一个或多个处理器来处理此计算机可执行的行为。参考图5,当多个虚拟机器的每一虚拟机器初始化时,可指派个别的DLH队列给此虚拟机器(步骤510),其中在个别的DLH队列中的每一元素代表超级调用常式。当此多个虚拟机器中有虚拟机器通知此虚拟机器监视器有至少一可延迟型超级调用要执行时,可选择至少一VCPU并将此至少一VCPU指派给此虚拟机器,以在至少一PCPU中执行(步骤520)。然后,在回存此VCPU内文至具有至少一VCPU的此虚拟机器之前,可执行至少一个可延迟型超级调用,此处的可延迟型超级调用是指被插入在此虚拟机器DLH队列中的可延迟型超级调用(步骤530)。执行此一个或多个可延迟型超级调用完成后,此VCPU内文被回存至此虚拟机器。
步骤510可以藉由DLH模块320来完成,并且指派给多个虚拟机器的DLH队列可被维护在虚拟机器监视器中,来缓冲插入在别DLH队列的至少一可延迟型超级调用。在虚拟机器监视器的中断处理器312处理中断后,步骤520可由虚拟机器监视器的调度器314来完成。于步骤530中,在虚拟机器监视器回存VCPU内文到此虚拟机器之前,DLH模块320可在单核心系统或多核心系统执行一个或多个可延迟型超级调用。此虚拟机器监视器可以使用一个或多个处理器来实现DLH模块、中断处理器、以及调度器的前述功能。
图6是根据一实施范例的示意图,说明DLH模块在单核心系统中执行可延迟型超级调用。在图6中,假设虚拟机器VM-1将使用超级调用来请求虚拟机器监视器提供服务,此虚拟机器可以藉由正常超级调用来插入多个可延迟型超级调用到自己的DLH队列。此DLH模块可采用非同步的方式来执行此多个可延迟型超级调用,从而使此多个可延迟型超级调用不会阻断其他虚拟机器如VM-2的运行。在图6中,当虚拟机器VM–1被初始化时,中断发生时,以参考号610表示。当虚拟机器VM–1正在运行时,可藉由发出正常的超级调用605到虚拟机器监视器,可插入多个可延迟型超级调用如H1~H6到自己的DLH队列。另一个中断发生时,以参考号620表示,根据此虚拟机器监视器的目前的调度策略来通知此虚拟机器监视器选取新的VCPU内文,即VM-2的VCPU内文。
经过处理和完成两次中断之后,在转交控制权给虚拟机器VM-1之前,DLH模块将检查指派给虚拟机器VM-1的DLH队列。所以,此多个可延迟型超级调用都被挑选出来,并由DLH模块来执行。当此执行完成后,DLH模块可转移控制权给虚拟机器VM-1。又一中断发生时,以参考号630表示,DLH模块根据虚拟机器监视器目前的调度策略,通知此虚拟机器监视器选取下一个VCPU内文,即VM-2的VCPU内文。
当大量的可延迟型超级调用执行于多核心系统时,DLH模块可以将这些可延迟型超级调用分散到所有的VCPU,来平衡在所有平行线程(parallelthread)上此DLH调用的影响,从而将这些背景DLH调用所衍生的整体延迟最小化。换句话说,此DLH模块更适合于将多个VCPU分配到两个或多个PCPUs上来运行的虚拟机器。此可从图7的范例看出,图7是多个VCPU运行在两个PCPUs的范例。
在图7中,假设虚拟机器VM-1使用超级调用来请求虚拟机器监视器提供服务,并且由虚拟机器VM-1插入的多个可延迟型超级调用如H1~H9,是在两个PCPUs,即PCPU1和PCPU2的多核心系统上执行。在内文切换之前,超级调用常式被多个处理器置入DLH队列并处理。从图7可以看出,DLH模块将这些可延迟型超级调用分散到所有的VCPU,以在PCPU1和PCPU2上执行。此DLH模块有机会以平行方式来执行这些可延迟型超级调用,以平衡在所有平行线程上的此DLH调用,并且减少由这些背景(background)DLH调用所产生的整体延迟。
所以,从图6和图7可以看出,所揭示的DLH模块可执行插入于DLH队列的一个或多个可延迟型超级调用,其中这些可延迟型超级调用可在单核心系统或是多核心系统中执行。当这些可延迟型超级调用在多核心系统中平行地在多个可用的PCPUs中被执行完成时,对这些虚拟机器而言,此DLH模块可将执行于此多核心系统的可延迟型超级调用作出更好的调度。
当虚拟机器监视器在转移控制到虚拟计算机域之前,会探询(visit)该虚拟计算机域的DLH队列,并先处理DLH队列里的元素。在资源花费计算方面,处理这些DLH元素所耗费的计算资源是算在将它们插入的虚拟计算机域上,这样的计算方式是公平的,因为超级调用常式是设计给虚拟计算机域使用,而不是只由虚拟机器监视器使用。例如,假设调度器给予VCPU有30毫秒的执行时间,而其超级调用常式耗费5毫秒,那么此VCPU应该只给予25毫秒作为自己的执行时间。并且,每次探询DLH队列而被处理元素的数量是有限制的,以避免发生锁死现象,并且此数量可明确规定。
为了在DLH调用工作完成后可以收到通知,发送DLH调用的程序例如,可以向虚拟机器监视器注册事件通道,来表示有意接收像这样的通知。
DLH调用的一范例API可包含至少四个参数,此API范例可用dlh_call(call_list,nr_calls,callback_fn,nr_entries)来表示。前两参数与在一多调用时是一样的,其中call_list是一阵列,此阵列的每一元素储存超级调用的操作码和此超级调用的参数。nr_calls表示在call_list中元素的个数。第三参数,callback_fn,是回调函式指标(callback function pointer),当call_list的所有超级调用完成后,会被虚拟机器监视器调用。最后一个参数,nr_entries,是用来调整每一DLH调用的处理粒度(processing granularity),此参数让开发者在每次探询DLH队列时,在限制工作量上给予弹性,所以可防止目前在Xen虚拟机器监视器中观察到的任何与工作进入-相关的(tasklet-related)锁死现象发生。
此处以一Xen虚拟机器监视器作为范例来说明此Xen虚拟机器监视器如何调度tasklet、softirqs、以及调度功能,但所揭示的实施范例的应用并不仅限Xen虚拟机器监视器系统。图8是根据一实施范例的示意图,说明一Xen虚拟机器监视器的调度逻辑。其中,每一PCPU于初始化时,被设定具有闲置的(idle)VCPU内文,此闲置的VCPU内文在idle_loop函式内循环。如图8所示,idle_loop函式由两部分组成,即do_tasklet和do_softirq。两方块内的do_softirq皆代表同一码段(code snippet),其内部细节都描述于do_softirq的码段810中。
图8的Xen虚拟机器监视器的调度逻辑的范例执行下列任务。(1)如果因为硬件定时器中断而触发TIMER_SOFTIRQ,则检查所有已注册的软件定时器的回呼函式,以决定这些软件定时器的回呼函式是否需要执行,并触发SCHED_SOFTIRQ,以及重新编程(re-programmed)硬件定时器(hardwaretimer),例如,本地APIC定时器,以设定下一次的计时器触发(timer firing)。(2)在SCHED_SOFTIRQ被触发的情况时,do_softirq调用此调度器820,以根据下列规则来挑选新的VCPU内文。首先,如果tasklet队列不是空的,则调度器820选择此闲置的VCPU内文,以在目前的PCPU上执行;否则,调度器820根据虚拟机器监视器目前的调度策略,挑选下一个VCPU内文,例如,SEDF或是Credit。如果此闲置的VCPU被挑选,则此PCPU进入idle_loop,否则,回存非闲置的(non-idle)VCPU内文,并且自上一次离开之处继续此对应域。
在图8的范例中,参考号805表示处理前面提及的DLH队列的超级调用。参考号815表示处理TIMER_SOFTIRQ和重新编程硬件定时器中断(hardware timer interrupt)。TIMER_SOFTIRQ是当硬件定时器中断来临时被触发的。
一个实验是完成50000个超级调用,图9是分别使用两个指派的VCPU、四个指派的VCPU、以及八个指派的VCPU,完成50000个超级调用的执行时间的实验结果。其中,于虚拟环境中,此实验使用多调用方法以及本揭示的DLH机制。从图9可以看出,相较于多调用方法,本揭示的DLH机制对指派多个VCPU的虚拟计算机域而言,会作出更好的调度,更能缩短超级调用的执行时间。并且使用越多指派的VCPU,本揭示的DLH机制更彰显其效率。
图10是另一个实验,对虚拟计算机域,在多核心系统中执行具多线程的程序并量测多调用方法、以及本揭示的DLH机制对执行中的多线程程序的影响。此处做为多线程的范例程序是用8核心平行编译Linux核心。从图10可以看出,相较于多调用方法,本揭示的DLH机制对于执行中的多线程程序影响较小,因为编译工作在本揭示的DLH机制影响下花费较短的时间完成。
所以,本揭示管理虚拟机器监视器中超级调用的实施范例有低负担、非同步、平行、以及可调性(tunable)的特点。换句话说,本揭示的DLH机制的调用负担(calling overhead)是最小的。虚拟计算机OS于正在处理超级调用序列的期间中应该不会阻断。超级调用的处理是在多核心系统(multi-coresystem)中所有可用的PCPU上平行完成的。使用者可以调整正在处理中的超级调用的粒度。本揭示实施范例可应用于如需要请求大量超级调用的程序,例如那些试图分享多个虚拟机器间内容重复的内存(duplicate memory)的内存去复制技术(memory deduplication),它需要超级调用来取得内存页面的内容和完成内存共享。
以上所述仅为本发明所揭示的实施例,但不能依此限定本发明实施的范围。即凡依据本发明的权利要求所作的均等变化与修饰,皆应仍属本发明专利涵盖的范围。
Claims (24)
1.一种管理虚拟机器监视器中超级调用的装置,该装置适应于备有中断处理器和调度器的该虚拟机器监视器,该装置包含:
可延迟低负担超级调用模块,当多个虚拟机器的每一虚拟机器初始化时,该可延迟低负担超级调用模块被配置来指派个别的可延迟低负担超级调用队列给该虚拟机器,其中在该个别的可延迟低负担超级调用队列中的每一元素代表超级调用常式;
其中,当该多个虚拟机器中有虚拟机器通知该中断处理器有一个或多个可延迟型超级调用要执行时,该调度器选择至少一虚拟中央处理单元并将至少一虚拟中央处理单元指派给该虚拟机器,以在至少一实体中央处理单元中执行,在回存该虚拟中央处理单元内文至具有至少一虚拟中央处理单元的该虚拟机器之前,该可延迟低负担超级调用模块执行至少一个可延迟型超级调用,此处的可延迟型超级调用是指被插入在该虚拟机器的相对应可延迟低负担超级调用队列中的一个或多个可延迟型超级调用。
2.如权利要求1所述的装置,其中该虚拟中央处理单元内文是在该至少一虚拟中央处理单元上运行的信息内容。
3.如权利要求1所述的装置,其中该可延迟低负担超级调用模块以及该虚拟机器监视器是以一个或多个集成电路来实现。
4.如权利要求1所述的装置,该装置包含一个或多个处理器以执行一个或多个该可延迟低负担超级调用模块的功能。
5.如权利要求1所述的装置,其中被指派给该多个虚拟机器的所有个别的可延迟低负担超级调用队列被维护在该虚拟机器监视器中。
6.如权利要求1所述的装置,其中该一个或多个可延迟型超级调用是执行于一单核心系统或一多核心系统。
7.如权利要求1所述的装置,其中当该虚拟机器正在运行时,它藉由正常超级调用将该一个或多个可延迟型超级调用插入于该相对应的可延迟低负担超级调用队列。
8.一种虚拟机器监视器,用来管理在虚拟环境中超级调用,该虚拟机器监视器包含:
可延迟低负担超级调用模块,当多个虚拟机器的每一虚拟机器初始化时,该可延迟低负担超级调用模块被配置来指派个别的可延迟低负担超级调用队列给该虚拟机器,其中该个别的可延迟低负担超级调用队列被维护在该虚拟机器监视器里,该个别的可延迟低负担超级调用队列中的每一元素代表超级调用常式;
调度器;以及
中断处理器;
其中,当该多个虚拟机器中有虚拟机器通知该中断处理器有一个或多个可延迟型超级调用要执行时,该调度器选择至少一虚拟中央处理单元并将此至少一虚拟中央处理单元指派给该虚拟机器,以在至少一实体中央处理单元中执行,在回存虚拟中央处理单元内文至具有至少一虚拟中央处理单元的虚拟机器之前,该可延迟低负担超级调用模块执行至少一个可延迟型超级调用,此处的可延迟型超级调用是指被插入在该虚拟机器相对应的可延迟低负担超级调用队列中的一个或多个可延迟型超级调用。
9.如权利要求8所述的虚拟机器监视器,其中该可延迟低负担超级调用模块、该中断处理器、以及该调度器是以一个或多个硬件组件来实现。
10.如权利要求8所述的虚拟机器监视器,该虚拟机器监视器包含一个或多个处理器来执行该可延迟低负担超级调用模块、该中断处理器、以及该调度器的一个或多个功能。
11.如权利要求8所述的虚拟机器监视器,其中该一个或多个可延迟型超级调用是执行于一单核心系统或一多核心系统。
12.如权利要求11所述的虚拟机器监视器,其中该一个或多个可延迟型超级调用是在该多核心系统中的多个可用的实体中央处理单元上,以平行方式被执行。
13.如权利要求8所述的虚拟机器监视器,其中当该多个虚拟机器的每一虚拟机器正在运行时,该虚拟机器将一个或多个可延迟型超级调用插入到自己的可延迟低负担超级调用队列。
14.如权利要求8所述的虚拟机器监视器,其中中断发生以通知该中断处理器有一个或多个可延迟型超级调用要被执行。
15.一种管理虚拟机器监视器中超级调用的方法,该方法适应于具有中断处理器和调度器的虚拟机器监视器,包括:
当多个虚拟机器的每一虚拟机器初始化时,指派个别的可延迟低负担超级调用队列给该虚拟机器,其中在该个别的可延迟低负担超级调用队列中的每一元素代表超级调用常式;
当该多个虚拟机器中有虚拟机器通知该虚拟机器监视器有一个或多个可延迟型超级调用要执行时,选择至少一虚拟中央处理单元并将该至少一虚拟中央处理单元指派给该虚拟机器,以在至少一实体中央处理单元中执行;以及
在回存该虚拟中央处理单元内文至具有该至少一指派的虚拟中央处理单元的虚拟机器之前,执行至少一个可延迟型超级调用,此处的可延迟型超级调用是指被插入在该虚拟机器的相对应的可延迟低负担超级调用队列中的一个或多个可延迟型超级调用。
16.如权利要求15所述的方法,该方法适应于具有可延迟低负担超级调用模块、中断处理器、以及调度器的该虚拟机器监视器,以处理计算机可执行的行为,并且该虚拟机器监视器使用一个或多个处理器来实现该可延迟低负担超级调用模块、该中断处理器、以及该调度器的一个或多个功能。
17.如权利要求15所述的方法,其中该相对应的可延迟低负担超级调用队列用来缓冲要被执行的该一个或多个可延迟型超级调用。
18.如权利要求16所述的方法,其中当该虚拟机器正在运行时,对该多个虚拟机器的每一虚拟机器,该个别的可延迟低负担超级调用队列被维护于该虚拟机器监视器,以缓冲由该虚拟机器藉由正常超级调用插入的该一个或多个可延迟型超级调用。
19.如权利要求16所述的方法,其中该可延迟低负担超级调用模块被配置以非同步的方式来执行该一个或多个可延迟型超级调用。
20.如权利要求16所述的方法,其中当中断发生时,该虚拟机器监视器的该中断处理器储存该虚拟机器的虚拟中央处理单元内文,该虚拟中央处理单元内文是至少一虚拟中央处理单元上运行的信息内容。
21.如权利要求20所述的方法,其中该中断发生时,根据该虚拟机器监视器的目前的调度策略来通知该虚拟机器监视器选取新的虚拟中央处理单元内文。
22.如权利要求21所述的方法,其中该中断处理器处理该中断后,该调度器将该至少一虚拟中央处理单元指派到该虚拟机器,以在该至少一实体中央处理单元上执行该一个或多个可延迟型超级调用。
23.如权利要求22所述的方法,其中回存该虚拟中央处理单元内文到该虚拟机器之前,该可延迟低负担超级调用模块检查该相对应的可延迟低负担超级调用队列中是否有任何可延迟型超级调用,而当有任何可延迟型超级调用时,该可延迟低负担超级调用模块在该至少一实体中央处理单元上执行该一个或多个可延迟型超级调用。
24.如权利要求23所述的方法,其中执行该一个或多个可延迟型超级调用完成后,该虚拟机器监视器将该虚拟中央处理单元内文回存至该虚拟机器。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201161486255P | 2011-05-14 | 2011-05-14 | |
US61/486,255 | 2011-05-14 | ||
US13/226,900 | 2011-09-07 | ||
US13/226,900 US8635615B2 (en) | 2011-05-14 | 2011-09-07 | Apparatus and method for managing hypercalls in a hypervisor and the hypervisor thereof |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102789395A CN102789395A (zh) | 2012-11-21 |
CN102789395B true CN102789395B (zh) | 2014-11-05 |
Family
ID=47142772
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201110372982.3A Active CN102789395B (zh) | 2011-05-14 | 2011-11-22 | 管理虚拟机器监视器中超级调用的装置与方法及其监视器 |
Country Status (3)
Country | Link |
---|---|
US (1) | US8635615B2 (zh) |
CN (1) | CN102789395B (zh) |
TW (1) | TWI454933B (zh) |
Families Citing this family (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20120198431A1 (en) * | 2011-01-30 | 2012-08-02 | Lin Qiangmin | Method for upgrading hypervisor component and computer system |
CN103064746B (zh) * | 2013-01-23 | 2015-08-12 | 上海交通大学 | 基于当前credit进行预测调度的处理器资源精确分配方法 |
US9361416B2 (en) * | 2013-01-30 | 2016-06-07 | Empire Technology Development Llc | Dynamic reconfiguration of programmable hardware |
US9697027B1 (en) * | 2013-07-02 | 2017-07-04 | Ca, Inc. | Hypercall-based security for hypervisors |
TWI573024B (zh) * | 2013-07-23 | 2017-03-01 | 中華電信股份有限公司 | 雲端自動同步系統與雲端自動同步方法 |
CN104516773B (zh) * | 2013-09-29 | 2018-04-20 | 国际商业机器公司 | 用于物理机的数据分配方法和数据分配装置 |
US9727357B2 (en) * | 2013-10-01 | 2017-08-08 | International Business Machines Corporation | Failover detection and treatment in checkpoint systems |
US9823842B2 (en) | 2014-05-12 | 2017-11-21 | The Research Foundation For The State University Of New York | Gang migration of virtual machines using cluster-wide deduplication |
US9697029B2 (en) | 2014-10-30 | 2017-07-04 | Red Hat Israel, Ltd. | Guest idle based VM request completion processing |
DE112014002771T5 (de) * | 2014-12-24 | 2016-10-13 | Intel Corporation | Hybrid-on-Demand-Grafikübersetzungstabellen-Shadowing |
CN108009007B (zh) * | 2016-10-27 | 2021-01-15 | 华为技术有限公司 | 轻量级线程的调度方法及协同管理器、vCPU调度器 |
US10810032B2 (en) * | 2017-02-22 | 2020-10-20 | Red Hat, Inc. | System and method for dynamic guest-controlled halt polling using a CPU governor |
US10956193B2 (en) * | 2017-03-31 | 2021-03-23 | Microsoft Technology Licensing, Llc | Hypervisor virtual processor execution with extra-hypervisor scheduling |
CN108874534B (zh) * | 2018-04-18 | 2022-09-16 | 华为技术有限公司 | 一种pcpu资源的调度方法和装置 |
CN111459620B (zh) * | 2020-04-08 | 2023-07-25 | 孙宇霖 | 安全容器操作系统到虚拟机监控器的信息调度方法 |
JP7451438B2 (ja) * | 2021-01-22 | 2024-03-18 | 株式会社東芝 | 通信装置、通信システム、通知方法及びプログラム |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101135997A (zh) * | 2006-08-29 | 2008-03-05 | 联想(北京)有限公司 | 一种虚拟机系统及其硬件设备中断处理方法 |
CN101354663A (zh) * | 2007-07-25 | 2009-01-28 | 联想(北京)有限公司 | 应用于虚拟机系统的真实cpu资源的调度方法及调度装置 |
US20090083735A1 (en) * | 2007-09-26 | 2009-03-26 | Kabushiki Kaisha Toshiba | High availability system and execution state control method |
US20100077394A1 (en) * | 2008-09-19 | 2010-03-25 | Microsoft Corporation | Coalescing periodic timer expiration in guest operating systems in a virtualized environment |
US20110078361A1 (en) * | 2009-09-30 | 2011-03-31 | Vmware, Inc. | System and method to enhance memory protection for programs in a virtual machine environment |
CN102016800A (zh) * | 2008-04-28 | 2011-04-13 | 国际商业机器公司 | 将多个逻辑分区对接到自虚拟输入/输出设备 |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7434003B2 (en) | 2005-11-15 | 2008-10-07 | Microsoft Corporation | Efficient operating system operation on a hypervisor |
US7975908B1 (en) | 2005-12-20 | 2011-07-12 | Diebold Self-Service Systems Division Of Diebold, Incorporated | Cash dispensing automated banking machine system and method |
US7765374B2 (en) | 2007-01-25 | 2010-07-27 | Microsoft Corporation | Protecting operating-system resources |
US8453143B2 (en) * | 2007-09-19 | 2013-05-28 | Vmware, Inc. | Reducing the latency of virtual interrupt delivery in virtual machines |
US8539499B1 (en) * | 2008-02-18 | 2013-09-17 | Parallels IP Holdings GmbH | Symmetric multiprocessing with virtual CPU and VSMP technology |
KR20090108868A (ko) | 2008-04-14 | 2009-10-19 | 삼성전자주식회사 | 가상 머신 관리 시스템 및 그의 프로세서 자원 관리방법 |
US9201673B2 (en) | 2008-07-30 | 2015-12-01 | Microsoft Technology Licensing, Llc | Efficient detection and response to spin waits in multi-processor virtual machines |
CN101968749B (zh) | 2010-09-26 | 2013-01-02 | 华中科技大学 | 虚拟机过度分配环境下的mpi消息接收方法 |
US8417862B2 (en) * | 2010-10-13 | 2013-04-09 | Lsi Corporation | Inter-virtual machine interrupt coalescing |
-
2011
- 2011-09-07 US US13/226,900 patent/US8635615B2/en active Active
- 2011-10-13 TW TW100137159A patent/TWI454933B/zh active
- 2011-11-22 CN CN201110372982.3A patent/CN102789395B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101135997A (zh) * | 2006-08-29 | 2008-03-05 | 联想(北京)有限公司 | 一种虚拟机系统及其硬件设备中断处理方法 |
CN101354663A (zh) * | 2007-07-25 | 2009-01-28 | 联想(北京)有限公司 | 应用于虚拟机系统的真实cpu资源的调度方法及调度装置 |
US20090083735A1 (en) * | 2007-09-26 | 2009-03-26 | Kabushiki Kaisha Toshiba | High availability system and execution state control method |
CN102016800A (zh) * | 2008-04-28 | 2011-04-13 | 国际商业机器公司 | 将多个逻辑分区对接到自虚拟输入/输出设备 |
US20100077394A1 (en) * | 2008-09-19 | 2010-03-25 | Microsoft Corporation | Coalescing periodic timer expiration in guest operating systems in a virtualized environment |
US20110078361A1 (en) * | 2009-09-30 | 2011-03-31 | Vmware, Inc. | System and method to enhance memory protection for programs in a virtual machine environment |
Also Published As
Publication number | Publication date |
---|---|
TW201245975A (en) | 2012-11-16 |
TWI454933B (zh) | 2014-10-01 |
US8635615B2 (en) | 2014-01-21 |
CN102789395A (zh) | 2012-11-21 |
US20120291027A1 (en) | 2012-11-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102789395B (zh) | 管理虚拟机器监视器中超级调用的装置与方法及其监视器 | |
TWI705375B (zh) | 中斷請求的處理方法、裝置、虛擬化設備及可讀存儲介質 | |
US7945908B1 (en) | Method and system for improving the accuracy of timing and process accounting within virtual machines | |
Lackorzyński et al. | Flattening hierarchical scheduling | |
EP2191369B1 (en) | Reducing the latency of virtual interrupt delivery in virtual machines | |
US7698540B2 (en) | Dynamic hardware multithreading and partitioned hardware multithreading | |
Cheng et al. | vScale: Automatic and efficient processor scaling for SMP virtual machines | |
KR20070083460A (ko) | 다중 커널을 동시에 실행하는 방법 및 시스템 | |
CN103744716A (zh) | 一种基于当前vcpu调度状态的动态中断均衡映射方法 | |
CN110447012B (zh) | 协作虚拟处理器调度 | |
Kanda et al. | Spumone: Lightweight cpu virtualization layer for embedded systems | |
Pellegrini et al. | A fine-grain time-sharing time warp system | |
Pan et al. | Hypervisor support for efficient memory de-duplication | |
Starner et al. | Real-time scheduling co-processor in hardware for single and multiprocessor systems | |
Li et al. | A light-weighted virtualization layer for multicore processor-based rich functional embedded systems | |
US8424013B1 (en) | Methods and systems for handling interrupts across software instances and context switching between instances having interrupt service routine registered to handle the interrupt | |
Saranya et al. | An implementation of partitioned scheduling scheme for hard real-time tasks in multicore linux with fair share for linux tasks | |
Lackorzynski et al. | Combining predictable execution with full-featured commodity systems | |
Rothberg | Interrupt handling in Linux | |
US12014203B2 (en) | Communications across privilege domains within a central processing unit core | |
WO2024120118A1 (zh) | 中断请求处理方法、系统、设备及计算机可读存储介质 | |
Liu et al. | Scheduling para-virtualized virtual machines based on events | |
Shinde et al. | Concurrency Aware Dynamic Scheduler for Virtualized Environment | |
Nikita | STUDY OF MULTITHREADING ABILITY OF CENTRAL PROCESSING UNIT | |
Hoffmann et al. | Hardware multitasking within a softcore CPU |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |