CN110447012B - 协作虚拟处理器调度 - Google Patents
协作虚拟处理器调度 Download PDFInfo
- Publication number
- CN110447012B CN110447012B CN201880018888.8A CN201880018888A CN110447012B CN 110447012 B CN110447012 B CN 110447012B CN 201880018888 A CN201880018888 A CN 201880018888A CN 110447012 B CN110447012 B CN 110447012B
- Authority
- CN
- China
- Prior art keywords
- kernel
- hypervisor
- operating system
- guest
- processor
- 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
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
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- 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
-
- 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
-
- 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/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
-
- 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/54—Interprogram communication
- G06F9/545—Interprogram communication where tasks reside in different layers, e.g. user- and kernel-space
-
- 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
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45575—Starting, stopping, suspending or resuming virtual machine instances
-
- 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
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45583—Memory management, e.g. access or allocation
-
- 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
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45587—Isolation or security of virtual machine instances
Abstract
实施例涉及将虚拟处理器(VP)的处理器时间的调度从虚拟化管理程序移出。在一个实施例中,主机操作系统调度VP处理器时间。主机操作系统创建VP后备线程,每个VM的每个VP一个。主机操作系统中的每个VP线程与管理程序中的每个VP之间存在一对一映射。当VP线程被分派一段处理器时间时,主机操作系统调用进入管理程序以使管理程序开始执行VP,并且管理程序可以为VP执行处理器上下文切换。值得注意的是VP调度和VP上下文切换之间的安全性分离。管理程序在内核模式下管理VP上下文切换,而VP调度在用户模式下执行。调度VP处理器时间的单元与管理程序之间存在安全/接口边界。
Description
背景技术
在许多形式的计算机虚拟化之中,机器或系统虚拟化由于许多已知的优点而已经变得普遍。系统虚拟化涉及对计算机的硬件资源进行抽象并将计算机呈现为虚拟机。被称为管理程序(hypervisor)或虚拟机监视器(VMM)的软件层直接在计算机的硬件上运行。管理程序管理由虚拟机(VM)对计算机硬件的访问,虚拟机也被称为分区、域或访客。每个VM都是能够托管其自己的访客操作系统的软件环境或构造。管理程序管理VM对计算机硬件特别是处理硬件的共享。访客操作系统和计算机硬件之间的软件层-管理程序-的存在对访客操作系统来说几乎是透明的。
一种类型的管理程序是I型管理程序,也被称为独立的、本机、裸机、或嵌入式管理程序。I型管理程序的示例是来自微软公司的Microsoft Hyper-V(TM)、来自红帽公司的KVM(TM)(基于内核的虚拟机)、来自VMware公司的VMware ESXi(TM)、以及Xen(TM),其可从各种渠道获得。传统上,在使用I型管理程序(以下称为“管理程序”)的虚拟化架构中,管理程序负责管理处理器的虚拟化。具体而言,管理程序将资源策略应用于虚拟处理器,并调度物理处理器上的虚拟处理器的执行。管理程序通常由一个特权VM所附带,该特权虚拟机托管特殊访客操作系统,该特殊访客操作系统处理不需要驻留在管理程序中的其他虚拟化相关任务。此特殊操作系统将被称为主机操作系统或主机内核。管理程序和主机操作系统将一起被称为虚拟化层。由主机操作系统处理的虚拟化任务因管理程序实现而异。一些可以处理设备仿真/虚拟化、I/O虚拟化、VM间通信等等各方面。一些可以提供用户接口以使得用户能够配置虚拟化层、VM等。主机操作系统也可以具有管理工具或虚拟化不需要的其他软件。
虽然由管理程序处理哪些虚拟化职责以及由主机操作系统处理哪些虚拟化职责可以变化,但是所有I类管理程序(包括基于内核的管理程序,诸如KVM管理程序)处理处理器虚拟化,包括调度用于虚拟处理器的处理器时间,管理对虚拟处理器进行后备(back)的内核对象(例如线程或进程)等。这种方法有缺点。
使管理程序处理处理器调度的一个缺点是调度器冗余。作为VM访客或主机操作系统而被采用的操作系统通常被设计为能够直接在硬件上运行。他们具有其自己的内核调度器,该内核调度器被设计用于在处理器上(或在虚拟处理器上,视情况而定)调度其自己的线程。这些操作系统的调度器通常在很大程度上被设计用于资源控制和支持高级电源管理策略。到目前为止,管理程序还具有其自己的调度器实现,它独立于主机/操作系统中的调度器。由于管理程序具有其自己的调度器,因此在主机/访客操作系统中常见的一些复杂的调度器逻辑必须被省略,或者这些逻辑会在管理程序调度器中被复制。例如,假设主机/访客内核的调度器利用一个新特征被增强而使其调度更加能力有效,如果要在主机内核在管理程序(其实际上控制调度)之上在VM中执行的计算机上获得益处,则这个新特征必须在管理程序的调度器中被复制以使主机获得相同的益处。
堆叠的调度层也使得难以实现某些性能和管理改进。关于性能,已经观察到VM工作负载的性质经常变化。例如,某些VM可能是I/O绑定的,其他VM可能是处理器绑定的。管理程序调度器无法自我调整以适应VM工作负载条件,这是因为这些条件可能对管理程序是不可见的。例如,如果在主机操作系统上发生一些I/O虚拟化,则有关I/O条件的可操作信息在管理程序中可能是不可用的。关于管理,当管理程序处理处理器调度时,在主机操作系统中自然不会考虑针对虚拟机的CPU资源报告。由于主机操作系统对于VM的虚拟处理器正在如何进行调度没有直接的可见性,因此主机操作系统无法确定物理CPU资源实际正在如何消耗。主机操作系统中的CPU资源报告工具可能报告CPU资源消耗的错误视图,因为此类工具实际上是在报告主机操作系统(而不是虚拟机)的CPU资源消耗。因此,如果要在虚拟化环境中准确监视系统范围的CPU使用情况,则必须重新设计系统工具。此外,基于管理程序的调度会使执行跟踪和分析变得困难,因为需要在来自两个调度器的事件之间进行关联。
在管理程序中实现调度也带来安全风险。由于每个VM的执行都在同一安全域(管理程序)中进行控制,存在管理程序违反一个虚拟机的风险,这可能导致管理程序受损,从而导致其他虚拟机受损。
可以通过在管理程序外部调度虚拟处理器来解决上面讨论的一些问题,如下所述。
发明内容
包括以下发明内容仅为了介绍以下详细描述中讨论的一些概念。本发明内容并不全面,并非旨在描述所要求保护的主题的范围,该主题由最后呈现的权利要求来阐述。
实施例涉及将虚拟处理器(VP)的处理器时间的调度从虚拟化管理程序移出。在一个实施例中,主机操作系统调度VP处理器时间。主机操作系统创建VP后备线程,每个VM的每个VP一个。主机操作系统中的每个VP线程与管理程序中的每个VP之间存在一对一映射。当VP线程被分派一段处理器时间时,主机操作系统调用管理程序以使管理程序开始执行VP,并且管理程序可以为VP执行处理器上下文切换。值得注意的是VP调度和VP上下文切换之间的安全性分离。在一个实施例中,管理程序管理VP上下文并控制VP上下文切换,而VP调度在主机操作系统的VM的上下文中在内核模式下执行。调度VP处理器时间的单元与管理程序之间存在安全/接口边界。
下面将参考结合附图考虑的以下详细描述来解释许多伴随特征。
附图说明
从以下根据附图阅读的详细描述中将更好地理解本说明书,其中相同的附图标记被用来指明所附说明书中的相同部分。
图1示出了包括已知类型的系统虚拟化管理程序的示例虚拟化环境。
图2示出了基于管理程序的处理器调度的细节。
图3示出了实现针对主机操作系统中的VM的处理器调度的虚拟化架构。
图4示出了用于处理拦截的控制流程。
图5示出了用于处理中断的流程。
图6示出了用于处理上下文切换的控制流程。
图7示出了用于解锁VP的控制流程。
图8示出了计算设备的细节。
具体实施方式
以下描述的实施例涉及将针对虚拟处理器(VP)的处理器时间的调度从管理程序转移到主机操作系统。在一个实施例中,通过对管理程序进行阻塞调用来运行VP,主机操作系统调度VP。主机操作系统创建VP后备线程,每个VM的每个VP一个。主机操作系统中的每个VP线程与管理程序中的每个VP之间存在一对一映射。当VP线程被分派一段处理器时间时,主机操作系统调用管理程序以使管理程序开始执行VP。当发生中断时,VP的执行停止,并且管理程序将控制返回给主机操作系统。这允许主机操作系统然后调度不同的线程,该线程可以是VP线程或仅是与虚拟处理器无关的常规软件线程。
图1示出了包括已知类型的管理程序100的示例虚拟化环境。计算机102具有硬件104,其包括中央处理单元(CPU)106、存储器108、网络接口110、非易失性存储装置112、和诸如总线、显示器和/或显示适配器等未示出的其他组件。管理程序100管理并促进虚拟机(VM)114、116的执行。每个虚拟机114、116通常具有虚拟化设备,该虚拟化设备包括在其中存储访客/主机操作系统116、118的虚拟磁盘。机器或系统虚拟化由管理程序100提供,该管理程序100与在特权VM 116中执行的主机操作系统118协作。可以以多种方式在管理程序100和主机操作系统118之间分配虚拟化的任务,如在背景技术中所讨论的。在一些情况下,主机操作系统118可能仅包括用于对管理程序100进行管理的诸如工具和用户接口之类的最小虚拟化元素。在其他情况下,主机操作系统118可以包括以下中的一个或多个:设备虚拟化管理、VM间通信设施、运行设备驱动程序、启动或停止其他VM。简而言之,访客操作系统118可以潜在地处理诸如CPU和存储器共享之类的管理程序的核心功能之外的任何虚拟化任务。尽管存在广泛的虚拟化层设计,如下面所讨论的,但是所有先前的虚拟化系统已经实现了管理程序100中的处理器调度的所有方面。
图2示出了基于管理程序的处理器调度的细节。所有先前的虚拟化管理程序都是内核130,其在管理程序内完全实现处理器共享。利用这种基于内核的处理器共享方法,管理程序内核130通常用诸如进程和/或线程之类的内核级执行单元来对虚拟处理器(VP)132进行后备。管理程序内核130具有调度器134,调度器134可以实现可能的复杂调度算法,以确定哪些VP将在哪些物理处理器(PP)134上执行,以及何时执行。通常,调度器134是用于在进程或线程之间时间共享处理器的相同类型的调度器普通操作系统内核。管理程序内核130还负责时间分片的机制,例如执行PP上下文切换。这种基于内核的方法具有缺点。如图2中所示,存在冗余问题;访客和主机操作系统的内核136具有它们自己的调度器138。此外,在管理程序中实现调度会产生安全风险,因为如果调度代码受损,则任何VM都可能潜在地访问任何其他VM的数据。背景技术中讨论了基于管理程序的调度的其他问题。关于术语,如本文所使用的,“物理处理器”是指CPU的物理核心以及实现超线程的CPU的逻辑核心;从软件的角度来看,逻辑和物理处理器/核心几乎无法区分。
图3示出了实现针对主机操作系统118中的VM的处理器调度的虚拟化架构。这个新的架构将针对VM的处理器调度从管理程序100移出到主机操作系统118。在概念上,主机操作系统的调度器138决定哪些VP将执行以及何时执行。主机操作系统的调度器138告诉管理程序100执行哪个VP。更具体地,主机操作系统维护映射146,映射146指示哪些线程(或其他执行后备单元)对应于哪些VP(对于所有VM)。管理程序具有状态管理器148,其管理状态表149中的VP的处理器状态。状态管理器148使用状态表149来执行上下文切换,以实现主机操作系统118的处理器共享指令(超级调用)。主机内核136实例化并管理对VP进行后备的内核级执行单元/对象。作为讨论,尽管可以使用进程或其他执行单元,但是后备对象将被描述为线程。
当主机操作系统调度器138确定要启动VM时,主机操作系统为启动VM的相应VP创建VP后备线程。每个VM的每个VP都有具有一个VP后备线程。每个VP后备线程都运行分派循环,直到由于某种原因停止对应的VP。主机VM中的调度器138将VP后备线程调度为常规线程,其受到附加的VM/VP特定调度策略和可能的启示(由访客提供的信息)的影响。管理程序100配置有接口150,该接口150暴露允许主机操作系统调用管理程序的一个或多个超级调用。
为了详细说明,VP后备/分派线程是主机操作系统中的线程对象,其功能与任何其他线程对象相同。主机操作系统调度器138调度其所有线程,包括VP后备线程。在一个实施例中,每个VP后备线程知道对应的VP的id,并且当调度VP后备线程运行时,它调用管理程序以在当前处理器上分派VP。每个VP后备线程都运行分派循环。当VP后备线程收到运行时间时,它使管理程序截获超级调用,命令管理程序“运行此VP”。主机操作系统可能需要通过超级调用参数告知管理程序,哪个VP和/或VM开始运行。管理程序只需要知道要运行哪个VP(或VM)。针对VP的处理器状态不需要对主机VM可见,并且优选地,主机VM不被允许或不能直接访问主机VM。
从主机VM的角度来看,VP只是另一个线程,并且VP的执行对管理程序是透明的。当调度VP后备线程并开始执行时,它正在PP(在启动VP后备线程时当前正在执行主机VM的VP的那个PP)上运行。VP后备线程执行并调取超级调用以切换到管理程序(特权管理程序操作)。当进入管理程序模式时,VP后备线程最初仍在与主机VM的上下文相同的PP上执行。如所指出的,管理程序维护状态表149中的所有VP的处理器状态,并且知道VP后备线程对应于哪个VP。在保存当前PP状态152(对应于主机VM的VP)之后,管理程序将发出超级调用的VP的先前存储的处理器状态154交换到当前PP,有效地开始执行相关VP。此时,VP正在PP上执行访客代码。管理程序让VP运行,直到VP自动阻塞、VP为根生成拦截、或者根VP到达中断。在这三个事件中的任何一个上,管理程序上下文切换回主机的VP,并且后者完成超级调用并返回到主机VM。总之,管理程序仅执行它被告知执行的VP,并且主机操作系统控制VP执行的调度。
因为管理程序通过超级调用参数而被通知哪个VP正在执行,所以管理程序知道从状态表149交换哪个处理器状态。注意,在一个实施例中,主机操作系统将每个根/主机VP视为逻辑/物理处理器,并且不需要以与它调度其他VM处理时间相同的方式调度它自己的处理时间。当VP正在执行并且存在需要由主机操作系统关注的中断或其他事件时,管理程序只是将上下文切换到对应的根/主机VP(每个根/主机VP和PP之间存在一对一映射)。当根VP进入(返回)主机VM时,它在任何创建超级调用的线程的上下文中运行,并且主机内核决定接下来做什么。
总而言之,管理程序中没有调度器。管理程序中每个PP可能有一个堆栈。主机VM拥有所有PP调度和空闲决策。每个VP都有VP后备线程或其他执行单元。主机VM调度VP后备线程。每个VP后备线程:运行分派循环,使超级调用从主机VP切换到对应的目标VP(例如,VP上下文切换超级调用),并且可选地在从VP上下文切换超级调用返回时提供主机目标工作请求。
图4示出了用于处理拦截的控制流程。拦截是来自VP上下文切换超级调用的返回。当主机内核136决定调度VP时,主机内核136发出具有VP的标识符的超级调用。管理程序100利用针对相关VM114的VP的上下文来开始执行线程。当VM 114触发拦截时,管理程序内核利用来自初始超级调用的返回,来将控制返回给主机内核136。然后,主机内核136处理拦截,发出另一个超级调用,以及针对该拦截所需的VM/VP。
图5示出了用于处理中断的流程。在超级调用和上下文切换到相关VP后,发生中断。作为响应,VP退出,控制返回给管理程序,并且主机内核处理中断,最终通过另一个超级调用将控制返回给VP。
图6示出了用于处理上下文切换的控制流程。在初始超级调用之后并且在第一VM的VP正在执行时,生成定时调度中断并且第一VM的VP退出。超级调用返回到主机内核,主机内核将线程切换到下一个调度线程,并为新线程的VP发出超级调用。
图7示出了用于解锁VP的控制流程。如可以看出的,如果没有任何优化,则VP的解锁可能需要对主机的额外行程。控制流程操作如下。VM的第一VP正在运行,而VM的第二VP处于空闲状态。在某个时间,第一VP请求将IPI发送到第二VP。结果,第一VP退出到管理程序并为第二VP设置待决的虚拟中断。管理程序切换到主机VP,以将唤醒(解除阻塞)信号递送给第二VP的VP后备线程。主机VP返回,发信号通知被请求的VP后备线程,并进行另一个超级调用以分派并继续运行VM的第一VP。在此后不久的某个时间,主机操作系统调度以在另一个主机VP上运行VP后备线程。后者调用管理程序,并且VM的第二VP开始执行访客代码。
尽管主机操作系统是方便的,但是可以使用用于将VP调度与管理程序分离的其他技术。在一个实施例中,主机操作系统的特权超级管理程序功能性不需要在VM或容器中执行。与管理程序进行接口连接的任何模块都可以执行VP调度。例如,具有在PP上永久运行的执行上下文的模块可以避免主机VP和管理程序空闲线程之间的上下文切换。这还可以减少用于进入离开空闲状态的代码路径长度和延迟。另外,如上所提及,可以实现启示以允许访客VM向主机VM提供与调度相关的信息,诸如工作负载简档、调度优先级、I/O统计等。
从管理程序移除VP调度可以提供其他优点。较新的CPU可能在同一芯片上具有不同类型的核心(所谓的“big.LITTLE”设计)。可以通过将CPU拓扑暴露给访客VM(例如,大VP和小VP)来利用这种类型的CPU。big.LITTLE访客VM中的内核调度器进行它自己的调度决策。主机操作系统知道哪些VP后备线程是大的,哪些是LITTLE。主机操作系统的调度器根据主机操作系统的电源管理策略和约束决定如何调度大的和小的VP后备线程。
从管理程序移除VP调度可以具有其他优点。主机操作系统可以具有用于分析系统性能的工具。如果主机线程被用来对VP进行后备,则用于分析线程性能的工具可以提供对VP性能的直接洞悉。(例如,CPU使用率、上下文切换、分派等待时间等)。也就是说,因为每个VP都由主机线程后备,所以主机内核可以维护主机VM内的计数器,诸如在管理程序中花费的时间、在其分区内部花费的时间、在主机内核中花费的时间等。
在一些实施例中,VM访客操作系统和主机操作系统可以具有相同的内核;即,每个都可能具有相同的基本操作系统内核的实例,尽管是在不同的VM内并且用于不同的目的。在这种情况下,启示可以允许更好地集成可以托管应用的轻量级VM容器。该技术提供了改进的应用隔离和沙盒(即,更好的安全性但具有可接受的性能)。如上所指出,可能支持其他访客启示。例如,访客可以调取超级调用来共享关于其工作负载、处理优先级或特性等的信息。主机操作系统在做出调度决策时可以考虑这一点。
图8示出了可以在其上实现上述实施例的计算设备102的细节。本文的技术公开将足以使程序员编写软件和/或配置可重新配置的处理硬件(例如,现场可编程门阵列(FPGA))和/或设计专用集成电路(ASIC)等以运行在计算设备220上来实现本文描述的任何特征或实施例。
计算设备102可以具有一个或多个显示器222、网络接口224(一个或多个)、以及存储硬件226和处理硬件228,其可以是以下任何一个或多个的组合:中央处理单元、图形处理单元、模数转换器、总线芯片、FPGA、ASIC、专用标准产品(ASSP)或复杂可编程逻辑器件(CPLD)等。存储硬件226可以是磁存储装置、静态存储器、易失性存储器、非易失性存储器、光学或磁性可读物等的任何组合。本文使用的术语“存储”的含义不是指信号或能量本身,而是指物质的状态和物理装置。计算设备102的硬件元件可以以机器计算领域中充分理解的方式进行协作。另外,输入设备可以与计算设备102集成或者与计算设备102通信。计算设备102可以具有任何形状因子或者可以用在任何类型的包含设备中。计算设备102可以是手持设备的形式,诸如智能手机、平板计算机、游戏设备、服务器、机架安装或背板计算机、以及片上系统或其他。
上面讨论的实施例和特征可以以存储在易失性或非易失性计算机或设备可读存储硬件中的信息的形式来实现。这被认为至少包括诸如光学存储装置(例如,光盘只读存储器(CD-ROM))、磁性介质、闪存只读存储器(ROM)或任何将数字信息存储到其中的硬件之类的硬件。所存储的信息可以是机器可执行指令(例如,编译的可执行二进制代码)、源代码、字节代码或可以被用来启用或配置计算设备来执行上面讨论的各种实施例的任何其他信息的形式。这也被认为至少包括:易失性存储器,诸如随机存取存储器(RAM)的和/或存储诸如在执行实施例的程序的执行期间的中央处理单元(CPU)指令之类的信息的虚拟存储器;以及非易失性存储器,存储允许加载和执行程序或可执行文件的信息。可以在包括便携式设备、工作站、服务器、移动无线设备等的任何类型的计算设备上执行实施例和特征。
Claims (20)
1.一种由计算设备执行的方法,所述计算设备包括中央处理单元CPU,所述中央处理单元包括物理处理器PP,所述方法包括:
执行包括第一内核的管理程序,并且执行包括第二内核的操作系统,其中所述操作系统和所述第二内核在包括对应的第一虚拟处理器VP的第一虚拟机VM中执行;
由所述第一内核管理包括相应的第二VP的第二VM,所述管理包括维护所述相应的第二VP的物理处理器状态以及将所述物理处理器状态交换进出对应所述第二VP的所述PP,所述物理处理器状态包括寄存器值的相应设置,其中所述第二VP不包括所述第一VP;以及
调度所述第二VP以在对应所述第二VP的所述PP上执行,其中调度所述第二VP用于执行的决定由所述第一VP做出,所述第一VP在所述第一VM中执行所述第二内核,其中由所述第二内核的所述调度,包括:
由所述第二内核确定执行所述第二VP的特定的VP;
由所述第二内核向所述管理程序标识要执行的所述第二VP的所述特定的VP,并且基于所述标识,所述管理程序在对应所述特定的VP的PP上执行处理器上下文切换,所述处理器上下文切换通过使用对应于所述特定的VP的所述物理处理器状态而被执行。
2.根据权利要求1所述的方法,其中所述第一内核实现超级调用,其中当所述第二内核确定以执行所述特定的VP时,并且其中所述第二内核调取所述超级调用以将所述特定的VP识别至所述第一内核。
3.根据权利要求2所述的方法,其中所述第一内核维护针对所述相应的第二VP的所述物理处理器状态,其中所述超级调用利用所述特定的VP的标识符被调取,并且基于此,所述第一内核执行所述处理器上下文切换。
4.根据权利要求1所述的方法,其中所述管理程序和所述第一内核都不调度所述VP的执行。
5.根据权利要求1所述的方法,还包括:
从在第二VM中执行的访客代码接收调用,所述第二VM具有由所述第二内核调度的第二VP;以及
由所述第二内核基于来自所述访客代码的所述调用,来调度针对所述第二VM或者另一第二VM的所述第二VP。
6.根据权利要求1所述的方法,其中第二VM利用低于所述第二内核的较低特权执行,并且其中所述第二内核利用低于所述第一内核的较低特权执行。
7.根据权利要求1所述的方法,其中第二VM、所述第一内核、以及所述第二内核在相应不同信任域中操作。
8.根据权利要求1所述的方法,还包括:
维护所述VP的标识符和相应物理处理器状态之间的映射;以及通过参考所述映射中的标识的所述特定的VP来访问对应于标识的所述特定的VP的所述物理处理器状态。
9.一种计算设备,包括:
包括物理处理器PP的中央处理单元CPU;
存储管理程序内核和访客操作系统OS的存储硬件,所述管理程序包括管理程序内核并且所述访客OS包括访客OS内核,所述访客OS内核被配置为在由对应的第一虚拟处理器VP执行的第一虚拟机VM中运行,所述第一虚拟处理器VP在PP上执行;
所述管理程序内核被配置为维护针对不包括第一VM的第二VM的相应的第二虚拟处理器VP的表示,其中所述第二VP不包括所述第一VP;
所述访客OS内核被配置为(1)针对所述第二VP的调度执行来做出调度决策,以及(2)在所述访客OS标识决定调度所述第二VP时,向所述管理程序内核标识第二VP的特定的VP,其中用以实现所述调度决策的操作由所述管理程序内核执行;以及
所述管理程序内核进一步被配置为,基于所述访客OS向所述管理程序内核标识所述特定的VP,选择对应已标识的VP的一组寄存器值,并且将所述一组寄存器值交换为与已标识的特定的VP相对应的PP,以开始在对应的PP上执行所述已标识的特定的VP。
10.根据权利要求9所述的计算设备,其中所述访客OS内核被配置为在所述第一VM内运行,其中所述表示包括所述访客OS的相应线程。
11.根据权利要求9所述的计算设备,其中所述访客OS内核被配置为,在其调度VP时,所述管理程序控制哪些PP来执行所述VP,并且其中所述管理程序内核被配置为每次所述访客OS内核发出执行给定的VP的调用时,执行对应所述给定的VP的PP。
12.根据权利要求9所述的计算设备,其中所述管理程序内核被配置为通过向所述访客OS内核返回对应的控制,来处理执行在PP上的VP的执行的中断。
13.根据权利要求9所述的计算设备,其中所述管理程序内核未被配置为调度所述VP在所述PP上的执行。
14.根据权利要求9所述的计算设备,其中所述访客OS内核通过共享存储器部分来向所述管理程序内核提供VP调度信息,所述共享存储器部分由所述管理程序内核和所述访客OS内核直接地可访问。
15.一种存储信息的计算机存储硬件,被配置为当由计算设备的处理硬件执行时使得所述计算设备执行处理,所述处理包括:
执行虚拟化操作系统,所述虚拟化操作系统为在所述计算设备上执行的第一虚拟机VM执行虚拟化服务,所述虚拟化服务包括将针对所述第一VM的所述计算设备的硬件的访问虚拟化,所述虚拟化操作系统在所述计算设备的中央处理单元CPU上确定所述第一VM何时将具有执行时间,所述CPU包括物理处理器PP,所述虚拟化操作系统在特权VM中执行,所述第一VM不包括所述特权VM,其中当所述虚拟化操作系统确定特定的第一VM有执行时间时,所述特权VM标识所述特定的第一VM到管理程序内核;以及
在所述CPU上执行所述管理程序内核,所述管理程序内核在所述CPU的所述PP上执行所述特权VM和所述第一VM,其中基于由所述特权VM对所述特定的第一VM的所述标识,所述管理程序内核通过选择包括寄存器值的相应执行上下文来执行所述已标识的特定的第一VM,并通过将所述寄存器值交换到PP,以使所述特定的第一VM开始在所述PP上执行。
16.根据权利要求15的计算机存储硬件,其中所述特权VM在与所述管理程序内核的安全域分离的安全域中的执行。
17.根据权利要求15的计算机存储硬件,其中特权VM与所述管理程序内核通信以指示所述管理程序内核以执行所述特定的第一VM的特定的VP。
18.根据权利要求15的计算机存储硬件,所述处理还包括:由所述虚拟化操作系统管理后备所述第一VM的VP的VP分派线程。
19.根据权利要求18的计算机存储硬件,还包括:当VP分派线程在PP上正在执行时,通过将控制从所述VP分派线程返回至所述虚拟化操作系统来响应于执行所述VP分派线程的所述PP上的中断。
20.根据权利要求15的计算机存储硬件,还包括:由所述处理器维护针对相应虚拟处理器VP的执行上下文,并且响应于来自所述虚拟化操作系统的指令,交换所述执行上下文进出所述PP。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/476,925 | 2017-03-31 | ||
US15/476,925 US10956193B2 (en) | 2017-03-31 | 2017-03-31 | Hypervisor virtual processor execution with extra-hypervisor scheduling |
PCT/US2018/023674 WO2018183064A1 (en) | 2017-03-31 | 2018-03-22 | Cooperative virtual processor scheduling |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110447012A CN110447012A (zh) | 2019-11-12 |
CN110447012B true CN110447012B (zh) | 2023-10-10 |
Family
ID=61972582
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201880018888.8A Active CN110447012B (zh) | 2017-03-31 | 2018-03-22 | 协作虚拟处理器调度 |
Country Status (4)
Country | Link |
---|---|
US (1) | US10956193B2 (zh) |
EP (1) | EP3602290B1 (zh) |
CN (1) | CN110447012B (zh) |
WO (1) | WO2018183064A1 (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11397587B2 (en) * | 2019-04-08 | 2022-07-26 | Assured Information Security, Inc. | Processor core isolation for execution of multiple operating systems on a multicore computer system |
US11106481B2 (en) * | 2019-04-19 | 2021-08-31 | Red Hat, Inc. | Safe hyper-threading for virtual machines |
CN112631744A (zh) * | 2019-09-24 | 2021-04-09 | 阿里巴巴集团控股有限公司 | 进程处理方法、装置、电子设备及计算机可读存储介质 |
US11556371B2 (en) * | 2020-03-24 | 2023-01-17 | Red Hat, Inc. | Hypervisor task execution management for virtual machines |
CN111459620B (zh) * | 2020-04-08 | 2023-07-25 | 孙宇霖 | 安全容器操作系统到虚拟机监控器的信息调度方法 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101086712A (zh) * | 2006-06-07 | 2007-12-12 | 国际商业机器公司 | 用于在内核间共享内核服务的方法和系统 |
CN105612528A (zh) * | 2013-09-17 | 2016-05-25 | 微软技术许可有限责任公司 | 虚拟机的虚拟安全模式 |
Family Cites Families (49)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6269391B1 (en) * | 1997-02-24 | 2001-07-31 | Novell, Inc. | Multi-processor scheduling kernel |
US8024726B2 (en) * | 2004-05-28 | 2011-09-20 | International Business Machines Corporation | System for correct distribution of hypervisor work |
US7707578B1 (en) * | 2004-12-16 | 2010-04-27 | Vmware, Inc. | Mechanism for scheduling execution of threads for fair resource allocation in a multi-threaded and/or multi-core processing system |
US9753754B2 (en) * | 2004-12-22 | 2017-09-05 | Microsoft Technology Licensing, Llc | Enforcing deterministic execution of threads of guest operating systems running in a virtual machine hosted on a multiprocessor machine |
US7716638B2 (en) * | 2005-03-04 | 2010-05-11 | Microsoft Corporation | Methods for describing processor features |
US7478272B2 (en) * | 2005-09-30 | 2009-01-13 | International Business Machines Corporation | Replacing a failing physical processor |
WO2007065307A2 (en) * | 2005-12-10 | 2007-06-14 | Intel Corporation | Handling a device related operation in a virtualization environment |
US8095931B1 (en) | 2006-04-27 | 2012-01-10 | Vmware, Inc. | Controlling memory conditions in a virtual machine |
JP2008171293A (ja) * | 2007-01-15 | 2008-07-24 | Hitachi Ltd | 仮想計算機システムのスケジューリング方法 |
JP4715758B2 (ja) * | 2007-01-30 | 2011-07-06 | 株式会社日立製作所 | 仮想計算機システムのプロセッサキャッピング方法 |
US8281308B1 (en) * | 2007-07-23 | 2012-10-02 | Oracle America, Inc. | Virtual core remapping based on temperature |
US8230425B2 (en) * | 2007-07-30 | 2012-07-24 | International Business Machines Corporation | Assigning tasks to processors in heterogeneous multiprocessors |
US8219989B2 (en) * | 2007-08-02 | 2012-07-10 | International Business Machines Corporation | Partition adjunct with non-native device driver for facilitating access to a physical input/output device |
US8539499B1 (en) | 2008-02-18 | 2013-09-17 | Parallels IP Holdings GmbH | Symmetric multiprocessing with virtual CPU and VSMP technology |
JP2010122805A (ja) * | 2008-11-18 | 2010-06-03 | Hitachi Ltd | 仮想サーバシステム並びに物理cpu及び物理メモリの割り当て方法 |
JP5388909B2 (ja) * | 2010-03-09 | 2014-01-15 | 株式会社日立製作所 | ハイパバイザ、計算機システム、及び、仮想プロセッサのスケジューリング方法 |
US8612633B2 (en) * | 2010-03-31 | 2013-12-17 | Microsoft Corporation | Virtual machine fast emulation assist |
JP5178778B2 (ja) * | 2010-06-02 | 2013-04-10 | 株式会社日立製作所 | 仮想計算機およびcpu割り当て方法 |
US8417862B2 (en) * | 2010-10-13 | 2013-04-09 | Lsi Corporation | Inter-virtual machine interrupt coalescing |
US8635615B2 (en) * | 2011-05-14 | 2014-01-21 | Industrial Technology Research Institute | Apparatus and method for managing hypercalls in a hypervisor and the hypervisor thereof |
US9152548B2 (en) * | 2012-01-17 | 2015-10-06 | Vmware, Inc. | Controlling access to a privileged resource in user-mode system level mobile virtualization using a ptrace () system call |
KR101878297B1 (ko) * | 2012-03-06 | 2018-08-07 | 삼성전자주식회사 | 락 홀더 선점 회복 방법 및 장치 |
US9575788B2 (en) * | 2012-09-04 | 2017-02-21 | Red Hat Israel, Ltd. | Hypervisor handling of processor hotplug requests |
US9304803B2 (en) | 2012-11-12 | 2016-04-05 | Vmware, Inc. | Cooperative application workload scheduling for a consolidated virtual environment |
US9489228B2 (en) | 2012-11-27 | 2016-11-08 | Red Hat Israel, Ltd. | Delivery of events from a virtual machine to a thread executable by multiple host CPUs using memory monitoring instructions |
US9396012B2 (en) * | 2013-03-14 | 2016-07-19 | Qualcomm Incorporated | Systems and methods of using a hypervisor with guest operating systems and virtual processors |
US9596299B2 (en) * | 2013-04-06 | 2017-03-14 | Citrix Systems, Inc. | Systems and methods for dynamically expanding load balancing pool |
US9785460B2 (en) * | 2013-05-03 | 2017-10-10 | Vmware, Inc. | Dynamic virtual machine sizing |
US9778943B2 (en) * | 2013-05-28 | 2017-10-03 | Red Hat Israel, Ltd. | Timer based virtual processor scheduling and suspension on physical processor for use of physical processor by other processing |
US9990216B2 (en) | 2013-06-27 | 2018-06-05 | Red Hat Israel, Ltd. | Providing hypercall interface for virtual machines |
US9262198B2 (en) * | 2013-08-26 | 2016-02-16 | Vmware, Inc. | CPU scheduler configured to support latency sensitive virtual machines |
US9740857B2 (en) * | 2014-01-16 | 2017-08-22 | Fireeye, Inc. | Threat-aware microvisor |
US9417927B2 (en) * | 2014-04-01 | 2016-08-16 | International Business Machines Corporation | Runtime capacity planning in a simultaneous multithreading (SMT) environment |
US9652631B2 (en) * | 2014-05-05 | 2017-05-16 | Microsoft Technology Licensing, Llc | Secure transport of encrypted virtual machines with continuous owner access |
WO2015176048A1 (en) * | 2014-05-15 | 2015-11-19 | Lynx Software Technologies, Inc. | Aspects of hardware virtualization, hypervisors, code detection |
US10162655B2 (en) * | 2014-06-23 | 2018-12-25 | Vmware, Inc. | Hypervisor context switching using TLB tags in processors having more than two hierarchical privilege levels |
US10146567B2 (en) | 2014-11-20 | 2018-12-04 | Red Hat Israel, Ltd. | Optimizing virtual machine allocation to cluster hosts |
US9921866B2 (en) * | 2014-12-22 | 2018-03-20 | Intel Corporation | CPU overprovisioning and cloud compute workload scheduling mechanism |
US9715403B2 (en) * | 2015-02-27 | 2017-07-25 | Red Hat, Inc. | Optimized extended context management for virtual machines |
US20160371118A1 (en) * | 2015-06-17 | 2016-12-22 | Intel Corporation | Virtual machine management method and apparatus including idling and scheduling of virtual processors |
US9921885B2 (en) | 2015-06-19 | 2018-03-20 | Vmware, Inc. | Resource management for containers in a virtualized environment |
US9632813B2 (en) * | 2015-06-22 | 2017-04-25 | Vmware, Inc. | High availability for virtual machines in nested hypervisors |
US10447728B1 (en) * | 2015-12-10 | 2019-10-15 | Fireeye, Inc. | Technique for protecting guest processes using a layered virtualization architecture |
WO2017107091A1 (en) * | 2015-12-23 | 2017-06-29 | Intel IP Corporation | Virtual cpu consolidation to avoid physical cpu contention between virtual machines |
US10069626B2 (en) * | 2016-02-23 | 2018-09-04 | Red Hat, Inc. | Multiple encryption keys for a virtual machine |
US10176007B2 (en) * | 2016-08-30 | 2019-01-08 | Red Hat Israel, Ltd. | Guest code emulation by virtual machine function |
US10191861B1 (en) * | 2016-09-06 | 2019-01-29 | Fireeye, Inc. | Technique for implementing memory views using a layered virtualization architecture |
US10452572B2 (en) * | 2016-10-06 | 2019-10-22 | Vmware, Inc. | Automatic system service resource management for virtualizing low-latency workloads that are input/output intensive |
US10235178B2 (en) * | 2017-06-02 | 2019-03-19 | Microsoft Technology Licensing, Llc | Performance scaling for binary translation |
-
2017
- 2017-03-31 US US15/476,925 patent/US10956193B2/en active Active
-
2018
- 2018-03-22 CN CN201880018888.8A patent/CN110447012B/zh active Active
- 2018-03-22 EP EP18718017.9A patent/EP3602290B1/en active Active
- 2018-03-22 WO PCT/US2018/023674 patent/WO2018183064A1/en active Application Filing
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101086712A (zh) * | 2006-06-07 | 2007-12-12 | 国际商业机器公司 | 用于在内核间共享内核服务的方法和系统 |
CN105612528A (zh) * | 2013-09-17 | 2016-05-25 | 微软技术许可有限责任公司 | 虚拟机的虚拟安全模式 |
Non-Patent Citations (2)
Title |
---|
Min Lee等.Supporting soft real-time tasks in the xen hypervisor.《Proceedings of the 6th ACM SIGPLAN/SIGOPS international conference on Virtual execution environments》.2010,全文. * |
陈文智等.基于虚拟化平台的可信任计算基.《浙江大学学报(工学版)》.2009,全文. * |
Also Published As
Publication number | Publication date |
---|---|
US10956193B2 (en) | 2021-03-23 |
EP3602290B1 (en) | 2022-07-06 |
WO2018183064A1 (en) | 2018-10-04 |
EP3602290A1 (en) | 2020-02-05 |
CN110447012A (zh) | 2019-11-12 |
US20180285135A1 (en) | 2018-10-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110447012B (zh) | 协作虚拟处理器调度 | |
US10430226B2 (en) | Dynamic virtual machine sizing | |
EP3039540B1 (en) | Virtual machine monitor configured to support latency sensitive virtual machines | |
EP2519877B1 (en) | Hypervisor-based isolation of processor cores | |
Suzuki et al. | {GPUvm}: Why Not Virtualizing {GPUs} at the Hypervisor? | |
EP2191369B1 (en) | Reducing the latency of virtual interrupt delivery in virtual machines | |
KR20060108711A (ko) | 액티비티 정보를 이용한 가상 머신 관리 | |
US20210389966A1 (en) | Micro kernel based extensible hypervisor and embedded system | |
US10552194B2 (en) | Virtualization operations for directly assigned devices | |
Li et al. | A light-weighted virtualization layer for multicore processor-based rich functional embedded systems | |
US11934890B2 (en) | Opportunistic exclusive affinity for threads in a virtualized computing system | |
US11726811B2 (en) | Parallel context switching for interrupt handling | |
Mitake et al. | Towards co-existing of Linux and real-time OSes | |
Mitake et al. | Light-weighted virtualization layer for multicore processor-based embedded systems | |
Shinde et al. | Concurrency Aware Dynamic Scheduler for Virtualized Environment | |
Stallings | Processes and threads | |
Liu et al. | Luvalley-lite: an effort to balance re-use and re-coding |
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 |