CN111459620B - 安全容器操作系统到虚拟机监控器的信息调度方法 - Google Patents
安全容器操作系统到虚拟机监控器的信息调度方法 Download PDFInfo
- Publication number
- CN111459620B CN111459620B CN202010270841.XA CN202010270841A CN111459620B CN 111459620 B CN111459620 B CN 111459620B CN 202010270841 A CN202010270841 A CN 202010270841A CN 111459620 B CN111459620 B CN 111459620B
- Authority
- CN
- China
- Prior art keywords
- virtual machine
- queue
- machine monitor
- call
- secure container
- 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 abstract description 25
- 238000010276 construction Methods 0.000 claims description 3
- 238000004891 communication Methods 0.000 description 3
- 238000010586 diagram Methods 0.000 description 2
- 238000000638 solvent extraction Methods 0.000 description 2
- 230000001360 synchronised effect Effects 0.000 description 2
- 238000005192 partition Methods 0.000 description 1
- 230000010076 replication Effects 0.000 description 1
- 230000026676 system process Effects 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
- 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/54—Interprogram communication
- G06F9/544—Buffers; Shared memory; Pipes
-
- 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/546—Message passing systems or structures, e.g. 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/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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/5018—Thread allocation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/54—Indexing scheme relating to G06F9/54
- G06F2209/548—Queue
-
- Y—GENERAL 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
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE 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/00—Energy 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)
- Storage Device Security (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
安全容器操作系统到虚拟机监控器的信息调度方法。本发明提供了一种安全容器到虚拟机监控器的调度方法,包括虚拟机监视器和安全容器内核共享内存空间;构建两条安全容器内核与虚拟机监控器之间基于共享内存的消息队列;消息队列中放入安全容器内核的Hyper Call的内存指针;虚拟机监控器在共享内存中处理Hyper Call;处理后Hyper Call线程ID放入消息队列,由调度器获取处理后Hyper Call线程ID。本发明通过此队列的信息交换方式,当安全容器的虚拟CPU(vCPU)需要调用Hyper Call的时候,它不需要进行安全容器内核和虚拟机监控器之间的上下文切换,这样可以大大提高超级调用调用执行效率。
Description
技术领域
本发明涉及计算机领域,涉及虚拟机,尤其是涉及基于消息队列的安全容器操作系统到虚拟机监控器的调度方法。
背景技术
Host OS是在物理主机上安装的操作系统,然后在这个Host OS操作系统上运行虚拟机监视器软件,这样就可以在物理主机上虚拟化出若干分区,可以分别安装不同的操作系统。对应的安装在虚拟分区上的操作系统叫做Guest OS。
虚拟机监视器(英语:virtual machine monitor,缩写为 VMM),VMM通过调用HostOS资源为Guest OS提供虚拟运行环境。VMM需要通过一个叫Hypervisor的系统软件与GuestOS通信。
虚拟机(KVM,Kernel-based Virtual Machine)是目前市场广泛采用的虚拟机软件,它的体系结构如下:1、KVM运行在Linux内核中;2、虚拟机运行在一个Linux操作系统进程中;3、虚拟机由应用和虚拟机操作系统组成。4、虚拟机操作系统与VMM的通信需要通过虚拟机通信或者共同分享虚拟化后的硬件资源(如内存);这里的虚拟机操作系统既可以是一个完整的操作系统,例如windows或者Linux;也可以是轻量化的安全容器操作系统,例如Google的gVisor。
在这种基于虚拟机安全的容器运行环境中,虚拟机操作系统是一个轻量化的安全容器,这个安全容器运行在一个定制的容器虚拟机监视器中。安全容器操作系统与虚拟机监视器通信需要通过虚拟机提供的调度(KVM Hyper Call)。“KVM Hyper Call”的性能比较差,这是因为一次“KVM Hyper Call”需要两次上下文切换:a.安全容器到主机操作系统切换;b.主机操作系统到虚拟机监控器进程切换;这些上下切换的成本很高,在高吞吐率(Request Per Second,RPS) 的场景下,“KVM Hyper Call”成为了系统的瓶颈。
发明内容
本发明所要解决的技术问题是提供一种安全容器到虚拟机监控器的调度方法。
本发明解决上述技术问题所采用的技术方案为:安全容器到虚拟机监控器的调度方法,其特征在于包括:
虚拟机监视器和安全容器内核共享内存空间;构建两条安全容器内核与虚拟机监控器之间基于共享内存的消息队列;消息队列中放入Hyper Call的内存指针;虚拟机监控器在共享内存中处理Hyper Call;处理后Hyper Call线程ID放入消息队列,由调度器获取处理后Hyper Call线程ID。
进一步的,消息队列包括呼叫队列和返回队列,安全容器内核中将Hyper Call信息放入安全容器的内核线程栈,Hyper Call信息在线程栈上的内存指针放入呼叫队列。
进一步的,虚拟机监控器Hyper Call处理线程由呼叫队列中读取Hyper Call信息进行处理。
进一步的,安全容器内核虚拟CPU将当前内核线程状态改为等待状态,并且由调度器模块中获取下一个准备的Ready线程调度执行。
进一步的,虚拟机监控器从安全容器内核线程栈中取出Hyper Call,处理后将Hyper Call线程ID放入返回列队。
进一步的,调度器模块由返回列队取得完成Hyper Call的安全容器内核线程ID,将此线程的状态改为Ready,等待调度。
进一步的,呼叫队列和返回队列的数据结构和构建方式相同,使用的数据结构的代码如下:
Struct Queue {
Queue dataQueue;
SpinLock lock;
}
进一步的,呼叫队列的方向是从安全容器内核到虚拟机监控器,返回队列的方向是从虚拟机监控器到安全容器内核。
进一步的,安全容器内核与虚拟机监控器之间同步使用基于内存原子操作的自旋锁。
与现有技术相比,通过此队列的信息交换方式,当安全容器的虚拟CPU(vCPU)需要调用Hyper Call的时候,它不需要进行安全容器内核和虚拟机监控器之间的上下文切换,这样可以大大提高超级调用调用执行效率。
附图说明
图1为本发明调度的示意图一。
图2为本发明调度的示意图二。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例,基于本发明中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明的术语 “包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或模块的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或模块,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或模块,本文中所出现的模块的划分,仅仅是一种逻辑上的划分,实际应用中实现时可以有另外的划分方式。
本发明提供一个基于消息队列的安全容器操作系统到VMM的Hyper Call通信机制。它的基本原理如下:
基于内存的消息队列:VMM和安全容器操作系统内核使用基于共享内存的消息队列通信,以避免高成本上下文切换;
基于自旋锁Spinlock的线程同步:VMM线程与安全容器内核线程通过基于共享内存SpinLock进行线程同步(linux中的自旋锁spinlock),同样避免高成本上下文切换同步;
基于安全容器操作系统内核线程栈的信息交换:超级调用Hyper Call参数和返回值都分配在安全容器内核线程栈,避免额外的内存分配。消息队列仅传递Hyper Call相关信息的指针和线程ID。
图1所示,需要构建两条安全容器内核与虚拟机监控器之间的基于共享内存消息队列。
呼叫队列:方向是从安全容器内核到虚拟机监控器。当安全容器内核需要调用虚拟机监控器的服务时,安全容器内核需要将Hyper Call相关信息指针放入呼叫队列;
返回队列:方向是从虚拟机监控器到安全容器内核的。当Hyper Call相关处理在虚拟机监控器处理结束之后,相关安全容器内核线程ID被放入返回队列;
图2所示,具体的,
当安全容器内核需要进行Hyper Call的时候,它的相关流程如下:
1)安全容器内核虚拟CPU将 Hyper Call信息压到当前安全容器内核线程栈上,包括:Hyper Call类型ID、Hyper Call参数和安全容器内核线程ID;
2)将Hyper Call信息在线程栈上的内存指针放入呼叫列队Call Queue;
3)安全容器内核虚拟CPU将当前内核线程状态改为等待Waiting状态,并且由调度器模块中获取下一个准备的Ready线程调度执行;
4)VMM宿主机操作系统线程中VMM Hyper Call处理线程由呼叫列队Call Queue中读取Hyper Call信息进行处理。
5)处理完成后,将返回值放到Guest内核栈上;然后由Hyper Call信息取出安全容器内核线程ID并且放入返回列队Return Queue;
6)调度器模块由 Return Queue”取得完成Hyper Call的安全容器内核线程ID,将此线程的状态改为Ready,等待调度。
这里呼叫队列和返回队列的数据结构和构建方式均相同。它们使用的数据结构的示意代码如下:
Struct Queue {
Queue dataQueue;
SpinLock lock;
}
它们每个字段的定义如下:
1.dataQueue: 它是一个标准的先进先出队列,它的基础数据结构可以是数组或者链表;
2.lock: 这是一个基于内存原子操作标准的自旋锁。当需要读取和压入数据到队列的时候,需要首先获取这个锁来保证数据的一致性。由于它是自旋锁,所以它可以在现在线程间直接同步,而不需要依赖于操作系统的同步系统调用。
安全容器内核与虚拟机监控器之间同步使用基于内存原子操作的自旋锁。
通过此队列的信息交换方式,当安全容器的虚拟CPU(vCPU)需要调用Hyper Call的时候,它不需要进行安全容器内核和虚拟机监控器之间的上下文切换,这样可以大大提高超级调用调用执行效率。
通过实际基于开源软件Redis的测试结果,在做高频率超级调用的情况下,基于本发明的吞吐量是基于KVM 超级调用软件gVisor的吞吐量大的2~3倍。
它可以降低延迟:这个机制避免基于”KVM Hyper Call”的高成本上下文切换, 可以降低Hyper Call的延迟。
高吞吐量:在多个安全容器操作系统内核线程的场景下,内核线程在等待HyperCall的返回结果时,它可以切换到其他线程执行,这个切换不涉及到内核到VMM的切换;
零堆内存分配:Hyper Call参数放到安全容器操作系统内核栈上,仅指向HyperCall参数栈指针传递到VMM。不需要额外分配堆内存。
零内存复制:Hyper Call参数仅包括内存指针,由于VMM和安全容器操作系统内核共享部分内存地址空间,安全容器操作系统应用内存不需要复制到内核和VMM。
本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
Claims (5)
1.安全容器到虚拟机监控器的调度方法,其特征在于包括:
虚拟机监视器和安全容器内核共享内存空间,虚拟机监控器与安全容器内核之间同步使用基于内存原子操作的自旋锁;
构建两条安全容器内核与虚拟机监控器之间基于共享内存的消息队列,消息队列包括呼叫队列和返回队列,安全容器内核中将Hyper Call信息放入安全容器的内核线程栈,Hyper Call信息在线程栈上的内存指针放入呼叫队列;
虚拟机监控器在共享内存中处理Hyper Call;
处理后Hyper Call线程ID放入消息队列,由调度器获取处理后Hyper Call线程ID,消息队列仅传递Hyper Call相关信息的指针和线程ID;
虚拟机监控器Hyper Call处理线程由呼叫队列中读取Hyper Call信息进行处理,
虚拟机监控器从安全容器内核线程栈中取出Hyper Call,处理后将Hyper Call线程ID放入返回列队。
2.根据权利要求1所述的安全容器到虚拟机监控器的调度方法,其特征在于,安全容器内核虚拟CPU将当前内核线程状态改为等待状态,并且由调度器模块中获取下一个准备的Ready线程调度执行。
3.根据权利要求1所述的安全容器到虚拟机监控器的调度方法,其特征在于,调度器模块由返回列队取得完成Hyper Call的安全容器内核线程ID,将此线程的状态改为Ready,等待调度。
4.根据权利要求1所述的安全容器到虚拟机监控器的调度方法,其特征在于,呼叫队列的方向是从安全容器内核到虚拟机监控器,返回队列的方向是从虚拟机监控器到安全容器内核。
5.根据权利要求1所述的安全容器到虚拟机监控器的调度方法,其特征在于,消息队列包括呼叫队列和返回队列,呼叫队列和返回队列的数据结构和构建方式相同,使用的数据结构的代码如下:
Struct Queue {
Queue dataQueue;
SpinLock lock;
}。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010270841.XA CN111459620B (zh) | 2020-04-08 | 2020-04-08 | 安全容器操作系统到虚拟机监控器的信息调度方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010270841.XA CN111459620B (zh) | 2020-04-08 | 2020-04-08 | 安全容器操作系统到虚拟机监控器的信息调度方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111459620A CN111459620A (zh) | 2020-07-28 |
CN111459620B true CN111459620B (zh) | 2023-07-25 |
Family
ID=71683533
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010270841.XA Active CN111459620B (zh) | 2020-04-08 | 2020-04-08 | 安全容器操作系统到虚拟机监控器的信息调度方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111459620B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114500400B (zh) * | 2022-01-04 | 2023-09-08 | 西安电子科技大学 | 基于容器技术的大规模网络实时仿真方法 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2018107394A1 (en) * | 2016-12-14 | 2018-06-21 | Intel Corporation | I/o emulation abortion in virtualized environments |
CN110447012A (zh) * | 2017-03-31 | 2019-11-12 | 微软技术许可有限责任公司 | 协作虚拟处理器调度 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7620955B1 (en) * | 2001-06-08 | 2009-11-17 | Vmware, Inc. | High-performance virtual machine networking |
US8555081B2 (en) * | 2007-10-30 | 2013-10-08 | Vmware, Inc. | Cryptographic multi-shadowing with integrity verification |
CN101976200B (zh) * | 2010-10-15 | 2013-05-08 | 浙江大学 | 在虚拟机监控器外进行输入输出设备虚拟化的虚拟机系统 |
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 |
CN110716791B (zh) * | 2019-09-25 | 2023-01-20 | 北京直客通科技有限公司 | 一种实时虚拟化系统及其执行方法 |
-
2020
- 2020-04-08 CN CN202010270841.XA patent/CN111459620B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2018107394A1 (en) * | 2016-12-14 | 2018-06-21 | Intel Corporation | I/o emulation abortion in virtualized environments |
CN110447012A (zh) * | 2017-03-31 | 2019-11-12 | 微软技术许可有限责任公司 | 协作虚拟处理器调度 |
Also Published As
Publication number | Publication date |
---|---|
CN111459620A (zh) | 2020-07-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10073711B2 (en) | Virtual machine monitor configured to support latency sensitive virtual machines | |
US8544010B2 (en) | Providing notification to speculatively waking up target virtual machine for an I/O event using multiple virtual machines and processors | |
US10871982B2 (en) | Virtual processor scheduling via memory monitoring | |
CN108037994B (zh) | 一种支持异构环境下多核并行处理的调度机制 | |
US8635615B2 (en) | Apparatus and method for managing hypercalls in a hypervisor and the hypervisor thereof | |
US9043562B2 (en) | Virtual machine trigger | |
US10922153B2 (en) | Communication method and device for virtual base stations | |
US20180060103A1 (en) | Guest code emulation by virtual machine function | |
US8533390B2 (en) | Circular buffer in a redundant virtualization environment | |
CN113495857A (zh) | 存储器错误隔离技术 | |
CN103744716A (zh) | 一种基于当前vcpu调度状态的动态中断均衡映射方法 | |
US20220156103A1 (en) | Securing virtual machines in computer systems | |
US20170024231A1 (en) | Configuration of a computer system for real-time response from a virtual machine | |
CN106250217A (zh) | 一种多虚拟处理器间的同步调度方法及其调度系统 | |
WO2017112126A1 (en) | Starting application processors of a virtual machine | |
US9898348B2 (en) | Resource mapping in multi-threaded central processor units | |
CN111459620B (zh) | 安全容器操作系统到虚拟机监控器的信息调度方法 | |
US11436141B2 (en) | Free memory page hinting by virtual machines | |
US20180321963A1 (en) | Safe execution of virtual machine callbacks in a hypervisor | |
US10929164B2 (en) | Enhancing ability of a hypervisor to detect an instruction that causes execution to transition from a virtual machine to the hypervisor | |
Li et al. | A light-weighted virtualization layer for multicore processor-based rich functional embedded systems | |
Wang et al. | Efficient asynchronous communication between virtual machines in embedded systems | |
CN114281529A (zh) | 分布式虚拟化的客户操作系统调度优化方法、系统及终端 | |
US9619277B2 (en) | Computer with plurality of processors sharing process queue, and process dispatch processing method | |
Panneerselvam et al. | Dynamic processors demand dynamic operating systems |
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 | ||
TR01 | Transfer of patent right | ||
TR01 | Transfer of patent right |
Effective date of registration: 20240626 Address after: Room 119, 1st Floor, Building 15, Supporting Commercial Building, Chuangke Town Community, Wenquan Town, Haidian District, Beijing, 100000 Patentee after: Huazhi (Beijing) Technology Co.,Ltd. Country or region after: China Address before: No. 3, Building 7, Youyi Community, Wuyi County, Jinhua City, Zhejiang Province, 321200 Patentee before: Sun Yulin Country or region before: China |