CN102262557B - 通过总线架构构建虚拟机监控器的方法及性能服务框架 - Google Patents
通过总线架构构建虚拟机监控器的方法及性能服务框架 Download PDFInfo
- Publication number
- CN102262557B CN102262557B CN201010183844.6A CN201010183844A CN102262557B CN 102262557 B CN102262557 B CN 102262557B CN 201010183844 A CN201010183844 A CN 201010183844A CN 102262557 B CN102262557 B CN 102262557B
- Authority
- CN
- China
- Prior art keywords
- virtual
- bus
- virtual machine
- performance
- proceed
- 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.)
- Expired - Fee Related
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/45545—Guest-host, i.e. hypervisor is an application program itself, e.g. VirtualBox
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)
- Multi Processors (AREA)
Abstract
本发明揭示了一种总线架构,用于构建虚拟机监控器,总线架构包括:总线,总线由Linux的基于内核虚拟机(KVM)实现,总线包括性能服务器、联网总线和本地总线;KVM组件;客户空间组件,包括操作系统虚拟机的驱动程序;用户空间组件,包括用户空间应用库、策略管理器、设备管理器、对外接口以及虚拟机管理器;半虚拟化组件,半虚拟化组件包括虚拟中断、IO驱动和直通传输装置,其中虚拟中断基于VMExit和VMEntry切换内核状态与客户空间状态,IO驱动绕过QEMU仿真代码解决同步和异步的IO讯号以及负载的传输,直通传输装置实现直通传输。
Description
技术领域
本发明涉及计算机技术,更具体地说,涉及一种总线架构以及通过总线架构构建虚拟机监控器的方法。
背景技术
计算机的操作系统虚拟化,导致一台机器上运行多个操作系统,可以把在机房里的服务器能力充分利用,减少购买服务器的成本,因此近年来大行其道。虚拟化的原理,简言之,就是使多个“客户”操作系统(或称为虚拟机Virtual Machine,以下简称虚拟机,VM,英文俗称Guest)运行在虚拟机监控器(Virtual Machine Monitor,以下简称VMM,俗称系统管理程序Hypervisor)上,而VMM又能直接运行在物理机上。
当前的操作系统虚拟化技术,起始于威睿(VMWare)的全虚拟化技术(full virtualization)。这个技术利用所谓二进制代码翻译达到在运行时捕捉VM的陷阱指令的目的。而Xen的半虚拟化(para-virtualization)则是利用修改VM源码里的高权限指令成为超级调用(Hypercall),比全虚拟化性能有进一步的改进。自2006年开始,英特尔和超微公司相继推出了虚拟化的硬件支持,无论是全虚拟化或半虚拟化的技术都在性能上有所提升。开源的Linux操作系统开发者社区更是完全仰赖具有虚拟化特性的硬件来发展其VMM,他们的VMM称为内核虚拟机(Kernel-based VirtualMachine,以下简称为KVM)。
2006年,美国的Qumranet公司(后为红帽所并购)利用QEMU和VirtIO的方法,使大部分其所开发的KVM代码成为现今Linux2.6版虚拟化开源的基础。QEMU是一个主版的仿真软件,Qumranet对它做了一些修改。而VirtIO则是一种虚拟化的标准IO接口,可以运行在QEMU中成为仿真的前端;VirtIO的后端则是在Linux内核中。至于KVM,则在Linux内核之外,创造了一个为开源社区普遍接受的Linux VMM:它利用英特尔VT和超微SVM(以下简称为VTx/SVM)的特殊指令建立虚拟环境,使得虚拟机内核可以在非根操作下保持对其应用软件的相对较高权限,而又保持原来Linux内核的高性能组件(例如任务调度和内存管理),使得Linux内核代码,仍然可以在开源社区里不断演进。
虚拟机的生成方法是这样的:当修改过的QEMU作为一个正常的Linux进程启动时,首先它用了KVM提供的一个名为“虚拟CPU”,或VCPU,的系统调用。VCPU不但生成了一个虚拟机,也为这个虚拟机创造了多个虚拟CPU(每个虚拟CPU其实是一个QEMU线程)。正仿佛真机的操作系统运行在多路CPU的主机板上。一开始的时候,处于内核状态(kernel mode)的KVM利用VTx/SVM的指令把物理主板转为客户状态(guest mode)以执行VCPU的线程。随后,VTx/SVM的指令还可以让KVM拦截x86的特权级指令,例如虚拟机的系统错误、中断、内存映射IO(MMIO)等等。当拦截事件发生时,CPU会从客户状态出来执行KVM代码,变为主机的内核状态。KVM对简单的拦截,迅速处理,但有关I/O的拦截,KVM会从VCPU的系统调用出来,回到QEMU,而完全依赖QEMU处理IO。QEMU其实是一个主机用户状态(user mode)的进程。譬如,它会翻译虚拟机虚拟内存的地址,利用Linux系统调用接入硬件磁盘,完成虚拟机虚拟内存的数据读写,然后更新本身的仿真寄存器的状态,使得它看起来就像是一个硬件磁盘。经过QEMU这样的处理方法,显然是对系统性能有所损耗。
以上所采用的方法,可称之为一个有限度的半虚拟化产品。如此开源的KVM方法,毕竟不是一个企业级的产品,它的性能在许多方面无法与市场上的操作系统虚拟化产品相比。
发明内容
本发明旨在提出一种总线架构及通过总线架构构建虚拟机监控器的方法,以在Linux操作系统上实现企业级虚拟监控器,本发明的总线结构可以称之为超级总线(HyperBus)。
根据本发明的一实施例,提出一种总线架构,用于构建虚拟机监控器,总线架构包括:
总线,总线由Linux的基于内核虚拟机(KVM)实现,总线包括性能服务器、联网总线和本地总线;
KVM组件;
客户空间组件,包括操作系统虚拟机的驱动程序;
用户空间组件,包括用户空间应用库、策略管理器、设备管理器、对外接口以及虚拟机管理器;
半虚拟化组件,半虚拟化组件包括虚拟中断、IO驱动和直通传输装置,其中虚拟中断基于VMExit和VMEntry切换内核状态与客户空间状态,IO驱动绕过QEMU仿真代码解决同步和异步的IO讯号以及负载的传输,直通传输装置实现直通传输。
根据一实施例,该总线架构还包括:代码多路径组件、内核组件、任务切换组件、跨虚拟机通讯组件、二进制接口管理组件、决策与策略执行点组件、二进制接口影子管理组件、安全服务组件,其中各个组件基于可选的服务消费端和服务生产端的架构实现,服务生产端针对各服务消费端的请求提供组件中的一个或者数个。
该代码多路径组件建构多条可选的代码路径以进行讯号、负载的IO传输;多条可选的代码路径包括同步、异步、读、写的其中之一或者它们的组合。在一个实施例中,该多条可选的代码路径包括:对象之间通信机制,通过虚拟服务生产端与虚拟服务消费端完成IO的读写;对象之间通信机制,直接通过主机的VIRTIO共享内存虚拟设备完成IO的读写;传统有限半虚拟化方式(不用共享内存虚拟设备);以及传统非虚拟化方式(不用Trap进入VMM)。该代码多路径组件还包括物理媒介(共享内存)地址计算器所需要的双重翻译,把虚拟机的虚拟地址翻译成虚拟机的物理地址,再把虚拟机物理地址翻译成主机物理地址。虚拟服务生产端不但会把性能调整器的策略传递给虚拟文件系统(VFS),而且会处理虚拟服务生产端传来的同步或异步IO指令,并转而利用Linux本身的IO功能完成任务。虚拟服务消费端通过过核心服务线程向VSP分派同步或异步读写请求,并按工作负荷策略分流事务到不同路径。VIRTIO共享内存虚拟设备包括VM-QEMU-KVM虚拟化空间状态切换机制;AIO服务代理,利用Linux主机本身Block设备驱动向硬盘或网络读写数据,并可选择使用缓存,这样,读写完毕后可利用守护进程通知Linux用户空间的任务。
内核组件将用户自定义的由内核组件实现的应用通过所述总线架构控制,并接入KVM。
任务切换组件在Linux任务和虚拟机任务之间切换,其中,Linux任务使用虚拟机的虚拟驱动,通过共享内存虚拟设备代替虚拟机任务完成讯号、负载的IO传输。
跨虚拟机通讯组件将Linux任务以向上调用的方式向多个虚拟机广播或多播以完成讯号、负载的IO传输。其中该向上调用包括:主机代理经由共享内存传递讯号和负载给向上调用;向上调用使用广播器将讯号和负载传到一个以上的虚拟机;人工虚拟中断让虚拟机的虚拟驱动完成共享内存里的讯号、负载IO操作。共享内存进一步包括:IO环形缓冲管理器的设定与释放;IO环形缓冲管理器队列的操作,利用另一中断权限数列为辅,遍历该数列时把权限高的数列元素向前提升。
二进制接口管理组件针对需要应用二进制接口的指令集架构(ISA)或者应用程序二进制接口(ABI)的读/写真实硬件设备荷载,使用总线架构的共享物理媒体,经由虚拟机监控器(VMM)/KVM承接IO荷载,与虚拟机的虚拟设备互动,用流量控制器来控制数据流量、带宽、容错,合并流媒体输送管道以保证服务品质QoS。二进制接口管理组件还包括KVM利用openfirmware的bytecode监控(1)PIO/MMIO范围,(2)总线中断,(3)硬件树;当硬件启动时(bootloader and bootstrap),QEMU仿真硬件可用。操作包括发现硬件、指定硬件、控制流量、合并媒体传输管道。其中,控制流量的操作,使用分流规则来分流从物理设备经过ABI的荷载。
决策与策略执行点组件选择并部署决策点和执行点,预设决策功能、动态部署并传达策略到策略执行点,其中选择并部署决策点和执行点、动态部署并传达策略到策略执行点是基于事件触发。在一个实施例中,该决策与策略执行点组件包括负荷调整器,负荷调整器包括三个策略管理器PDFs,从不同规则库和/或性能消耗矩阵读出数据,以处理:(1)KVM自然规律决策功能、(2)个别事务性能决策功能、(3)整体事务性能决策功能。负荷调整器还包括四个工作负载调整器PEPs,从以上三个决策功能PDFs取得策略,执行:(1)事务首度分层分路、(2)Linux任务调度器将事务重新分层分路、(3)处理过载、单点流量爆发(Burst)影响整体,同层聚合(same layer aggregation),及其它主机整体的问题,并且执行(4)按照资源消耗矩阵数据分派事务。该决策与策略执行点组件还包括资源消耗处理器(Resource Consumption Handler),利用基树遍历器,写入与读出在资源消耗矩阵里的数据,综合个别事务规则库里的规则,决定以下策略的充分条件:DMA带宽使用是否过大?QEMU IO环形缓冲内存是否足够?虚拟与非虚拟QEMU桥Out-of-band控制讯号是否太慢?共享内存是否足够?双重地址翻译GVA->GPA,GPA->HPA是否批处理时间过长?V-TLB的缓存页miss hit次数是否太多?KVM IRQfd中断注入是否批处理时间过长?GPU祯缓存Out-of-band控制讯号是否太慢?最大并发量是否过大?线程、进程是否过长?用户栈是否足够?其中该基树遍历器进一步包括:第一层VM SCSI/NDIS、第二层QEMU、第三层内核及虚拟驱动、第四层非虚拟驱动、第五层物理机。为事务生成64-bit键值,按代码层数建立基树路径,每个节点有8个槽,叶节点的8槽中5槽写入矩阵的5行的指针;同层“群找(gang-lookup)”事务的树节点时,如果节点高度转成的层数小于所给层数,则可继续向下找到树节点,取得该节点树槽里的矩阵指针,把矩阵里的单元数据读出。
二进制接口影子管理组件使用决策与策略执行点组件来管理虚拟设备,二进制接口影子管理组件与各个虚拟机互动,一次完成多次的IO读写。其中KVM利用openfirmware的bytecode监控(1)PIO/MMIO范围,(2)总线中断,(3)硬件树;当硬件启动时(bootloader and bootstrap),QEMU仿真硬件可用;操作包括发现硬件、指定硬件、控制流量、合并媒体传输管道。其中,控制流量的操作,使用策略执行点(PEP)来分流从物理设备经过Shadow ABI来的荷载。合并媒体传输管道的操作,使用策略执行点(PEP)合并通讯管道。
安全服务组件基于散列值实施主机当地总线与周边设备、主机当地总线与主机应用产品、或者主机当地总线与远程产品的身份验证。在一个实施例中,USB硬件模块制造商将Endorsement钥匙对(key pair)写入USB模块,并将公钥(Ekpub)信息交给软件制造商;软件制造商将USB模块硬件安装在产品服务器上,然后进行硬件模块设置、硬件模块升级、软件更新验证。
性能服务器包括工作负载调整器,工作负载调整器使用基树数学模式,将在代码路径上的各个执行点收集到的数据加以应用,控制总线架构的功能实施时的性能,并结合统计方法进行性能的最大优化。在一个实施例中,性能服务器包括:性能服务框架单一系统部署的方法可插入集群系统;使用现成的性能工具sysstate、vmstate、oProfile;使用性能优化器执行解决方案、负荷调整器搜集性能数据并调整负荷、瓶颈辨认器分析数据功能。性能优化器针对辨认出的瓶颈,将已参数化的功能单元经由指令或图形界面来调整性能,其中,VMM特性参数经由虚拟RAM,CPU核数,IPI中断等调整、驱动参数经由虚拟BIOS,PCI总线,设备调整;经由工作负荷调整器的策略管理器来微调事务、经由参数与解决方案来宏调事务;改进性能的解决方案包括Linux大页表、基于协议的API批处理,包括预先分配的内存链、聚合代码路径的调度器。瓶颈辨认器包括从集群或单一系统的资源消耗矩阵收集性能数据;统计数据,辨别是否距离正常性能值差距太大,超出瓶颈库所规定的瓶颈范围。Linux任务调度器包括:调度方法套接机制,可配置半虚拟化调度器、实时调度器、网格调度器。按照需要,取代当前默认的Linux内核调度器CFS;调整单一事务路径上任务的优先级和时间片;对整体主机事务,如果过载,调整同层聚合的事务,或爆发流量的任务的优先级和时间片。否则,调整影响交通量的事务优先级和时间片;运行任务切换逻辑。任务切换逻辑提供各种调度器的共通逻辑,包括使用较为通用的任务切换逻辑,上述的各种调度器,例如默认的Linux CFS调度器、半虚拟化调度器、实时调度器、网格调度器的构成,且利用VTx/SVM技术加速切换,并按设置调整虚拟机的优先级。
该联网总线包括:若客户端为网络上其它的总线,则按照父子树状网结构连接其它总线;若客户端为镜像数据库,则要从全局文件系统(GFS)查找镜像文件。若客户端为存储系统,则要从GFS查找存储地址。意即虚拟对象需要转化为物理对象,可用GFS Client向子网发送散列(hashing)数据(chunk index)和文件名。这种Map-Reduce的过程如下:首先,Master服务器送回chunk handle,chunk地址。其次,GFS Client向子网发送chunk handle,byte范围。最后,影射子网主机文件chunk(Map),和送回查找到的数据(Reduce);若客户端为网元、网络管理器,则按照多对一的关系连接虚拟网络管理器、网元管理器。管理中心处理新建、修改、删除、查找用户及其管理员权限;以图形界面和/或指令行处理用户与管理员的指令,包括管理用户对话期、虚拟机状态、虚拟机开关机;管理节点、主机、虚拟机、虚拟存储、虚拟网络、荷载均衡策略、容错策略、超级总线服务框架,包括网络超级总线的全局文件系统(GFS)服务。主机代理包括:主机代理以超级总线传讯号的代码路径控制处理内网、虚拟机对事件的反应;主机代理以超级总线传荷载的代码路径处理心跳、机器状态;主机代理从Linux虚拟机服务器控制虚拟机,具体实现是通过Linux标准应用接口LibVirt控制红帽的企业虚拟机服务器,运软的QServer,和Xen虚拟机服务器。
半虚拟化组件的虚拟中断包括:
人工产生的中断;
VMM自行处理虚拟机未加载处理的虚拟机控制块(VMCS)寄存器;
超级调用(Hypercall)。
直通传输装置应用零拷贝,处理同步、异步的磁盘或网络数据传输,双重翻译数据地址并加锁,取得送出方环形缓冲,并在缺页时通过Linux系统调用mmap()找到缺页的物理页,实现直接内存访问(DMA)读写,返回用户,解锁,释放环形缓冲。
IO驱动接受虚拟设备的IO指令,读写共享内存、磁盘、网络数据;接受非设备的IO指令,读写共享内存、磁盘、网络数据;提供VirtIO接口,利用分流实现直通传输,或利用TCP/UDP-IP-over-Infiniband完成通讯;挂起及卸除设备。
根据本发明的一实施例,提出一种通过总线架构构建虚拟机监控器的方法,将Linux的基于内核虚拟机(KVM)转化为虚拟机监控器,该方法包括:
构建总线,总线由Linux的基于内核虚拟机(KVM)实现,总线包括性能服务器、联网总线和本地总线;
构建KVM组件;
构建客户空间组件,客户空间组件包括操作系统虚拟机的驱动程序;
构建用户空间组件,用户空间组件包括用户空间应用库、策略管理器、设备管理器、对外接口以及虚拟机管理器;
构建半虚拟化组件,半虚拟化组件包括虚拟中断、IO驱动和直通传输装置,其中虚拟中断基于VMExit和VMEntry切换内核状态与客户空间状态,IO驱动绕过QEMU仿真代码解决同步和异步的IO讯号以及负载的传输,直通传输装置实现直通传输。
根据本实用新型的一实施例,揭示了一种性能服务框架,包括性能服务器将性能服务框架单一系统部署的方法插入集群系统;使用现成的性能工具sysstate、vmstate、oProfile;使用性能优化器执行解决方案、负荷调整器搜集性能数据并调整负荷、瓶颈辨认器分析数据功能。
性能优化器针对辨认出的瓶颈,将已参数化的功能单元经由指令或图形界面来调整性能,其中,VMM特性参数经由虚拟RAM、CPU核数、IPI中断等调整、驱动参数经由虚拟BIOS、PCI总线、设备调整;经由工作负荷调整器的策略管理器来微调事务、经由参数与解决方案来宏调事务;调整性能包括Linux大页表、基于协议的API批处理,包括预先分配的内存链、聚合代码路径的调度器。
瓶颈辨认器从集群或单一系统的资源消耗矩阵收集性能数据;并统计数据,辨别是否距离正常性能值差距太大,超出瓶颈库所规定的瓶颈范围。
负荷调整器包括:三个策略管理器,从不同规则库和/或性能消耗矩阵读出数据,执行:(1)KVM自然规律决策;(2)个别事务性能决策;(3)整体事务性能决策功能;四个工作负载调整器,从所述三个决策功能取得策略,执行:(1)事务首度分层分路;(2)Linux任务调度器将事务重新分层分路;(3)处理过载、单点流量爆发影响整体,同层聚合;(4)按照资源消耗矩阵数据分派事务。
个别事务性能决策包括:使用资源消耗处理器,利用基树遍历器写入与读出在资源消耗矩阵里的数据,综合个别事务规则库里的规则,决定以下策略的充分条件:DMA带宽使用是否过大;QEMU IO环形缓冲内存是否足够;虚拟与非虚拟QEMU桥Out-of-band控制讯号是否太慢;共享内存是否足够;双重地址翻译GVA->GPA,GPA->HPA是否批处理时间过长;V-TLB的缓存页miss hit次数是否太多;KVM IRQfd中断注入是否批处理时间过长;GPU祯缓存Out-of-band控制讯号是否太慢;最大并发量是否过大;线程、进程是否过长;用户栈是否足够。
基树遍历器读写五层代码的性能数据,包括:第一层VM SCSI/NDIS、第二层QEMU、第三层内核及虚拟驱动、第四层非虚拟驱动、第五层物理机;基树遍历器为事务生成64-bit键值,按代码层数建立基树路径,每个节点有8个槽,叶节点的8槽中5槽写入矩阵的5行的指针;基树遍历器同层“群找”事务的树节点时,如果节点高度转成的层数小于所给层数,则可继续向下找到树节点,取得该节点树槽里的矩阵指针,把矩阵里的单元数据读出。
负荷调整器执行:调度方法套接机制,配置半虚拟化调度器、实时调度器、网格调度器。按照需要,取代当前默认的Linux内核调度器CFS;调整单一事务路径上任务的优先级和时间片;对整体主机事务,如果过载,调整同层聚合的事务,或爆发流量的任务的优先级和时间片,否则调整影响交通量的事务优先级和时间片;运行任务切换逻辑。
行任务切换逻辑包括:提供各种调度器的共通逻辑,包括通用任务切换逻辑,Linux CFS调度器、半虚拟化调度器、实时调度器、网格调度器的构成,且利用VTx/SVM技术加速切换,并按设置调整虚拟机的优先级。
本发明为企业提供了一种实现KVM半虚拟化的方法,该方法是在Linux操作系统内核和KVM的基础上,创建了超级总线的各种组件,让管理员可经由性能服务框架增强Linux KVM的性能。另外,原有的KVM有限虚拟化方法,也仍然可以与超级总线的组件共同运行。
附图说明
本发明上述的以及其他的特征,性质和优势将在下面结合附图和实施例进一步描述,在附图中相同的附图标记始终表示相同的特征,其中:
图1是根据本发明的一实施例的总线架构的结构框图;
图2是根据本发明的一实施例的实现总线架构的服务生产端的流程图,其中概括了11个抽象功能(功能0到功能10);
图3是根据本发明的一实施例的总线架构的半虚拟化基本功能的组成框和流程混合图;
图4是根据本发明的一实施例的总线架构的非对称、多路径快速控制功能组成框图;
图5是根据本发明的一实施例的总线架构的从KVM接入用户自定义的内核组件功能的组成框图;
图6是根据本发明的一实施例的总线架构的虚拟机间的快速切换功能的组成框图;
图7是根据本发明的一实施例的总线架构的跨虚拟机通讯功能的组成框图;
图8是根据本发明的一实施例的总线架构的总线设备管理器功能的组成框图;
图9是根据本发明的一实施例的总线架构的决策的功能(PDF)和策略执行点(PEP)功能的组成框图;
图10是根据本发明的一实施例的总线架构的以策略及影子ISA/ABI来管理设备功能的组成框图;
图11是根据本发明的一实施例的总线架构的安全管理功能的组成框图;
图12是根据本发明的一实施例的总线架构的性能服务功能的组成框图;
图13是根据本发明的一实施例的总线架构的网络超级总线功能的组成框图;
图14是根据本发明的一实施例的总线架构的抽象概念与实施例的对应关系;
图15是根据本发明的一实施例的总线架构的对象之间通信机制的虚拟服务生产端(ICCM VSP)的流程图,也是图14中方框1433中ICCM的部分流程图,ICCM实现了图1中方框0133当地超级总线服务器的功能0,1,2;
图16是根据本发明的一实施例的总线架构的对象之间通信机制的虚拟服务消费端(ICCM VSC)的流程图,也是图14中方框1433中ICCM的部分流程图;
图17是图16步骤1614的“VIRTIO共享内存机制”的组成框和流程混合图;
图18是图16步骤1608的“物理媒介(共享内存)地址计算器”的流程图;
图19是图17步骤1710,1711的“虚拟机IO驱动”的流程图,也是图21步骤2109的虚拟机IO驱动的流程图;
图20是图17步骤1704的“零拷贝”的流程图;
图21是“向上调用(UPCALL)”的流程图,也是图14中方框1433中UPCALL的流程图,UPCALL实现了图1中方框0133当地超级总线服务器的功能3,4;
图22是图21向上调用的步骤2109的“虚拟中断”的流程图;
图23是图21向上调用步骤2101,2103,2108,2111,2114的“IO环形缓冲管理器(IO Ring Buffer Manager)”流程图;
图24是图14中1411设备管理器和1443ICCM设备服务代理的“ICCM设备管理器代理”流程图,本流程图实现了图8超级总线功能5的实施方式,也实现了图1的方框0111设备管理器和0143设备服务代理;
图25是图14中方框1431工作负载调整器的实施例“基于Radix树的工作负载调整器(Workload Mediator)”的组成框和流程混合图,本流程图实现了图9超级总线功能6的实施方式,也实现了图1的方框0131性能服务(功能9);
图26是图25中步骤2511,2512的“资源消耗处理器(ResourceConsumption Handler)”组成框和流程混合图;
图27是图26中步骤2619的“基树遍历器”流程图;
图28是图14中1411设备管理器和1443ICCM设备服务代理的实施例“具有策略及影子ISA/ABI的设备管理器”的流程图,本流程图实现了图10超级总线功能7的实施方式,也实现了图1的方框0111设备管理器和0143设备服务代理;
图29是图11的实施例“超级总线的安全设施操作”的组成框和流程混合图;
图30是实现图14的方框1431的“超级总线性能服务框架”的流程图,本流程图也实现了图12的抽象功能9和图1的方框0131;
图31是图30中步骤3005的“性能优化器(optimizer)”流程图;
图32是图31中步骤3103,3110,3119的“瓶颈辨认器(Identifier)”流程图;
图33是图25中步骤2509的“量身定制的Linux任务调度器”流程图;
图34是图33中步骤3319的“任务调度器的运行逻辑”流程图;
图35是实现图14的方框1432的“联网超级总线服务器”的流程图,本流程图也实现了图13的抽象功能10和图1的方框0132;
图36是实现图14的方框1413和1414的“管理中心和主机代理”组成框和流程混合图。
具体实施方式
本发明提出一种总线架构及通过总线架构构建虚拟机监控器的方法,以实现在Linux操作系统上的企业级虚拟监控器,该总线架构也称之为超级总线(HyperBus),下文中的“超级总线”与“总线架构”应当被认为是指相同的概念。更确切地说,本发明是在KVM的基础上,使用11个抽象功能将Linux操作系统虚拟化的性能提升。
利用半虚拟化的特征,本发明的超级总线创建了多个机制将性能大幅度提升。在一个较佳实施例中,还可以与原有的有限度虚拟化方法合并使用,从而实现代码多路径(multi-path)。另一个实施例,则是将用户应用库传来的指令多播(multiplexing)或广播(broadcasting)到多个虚拟机。还有的实施例,利用设备直通(pass-thru或tunneling)达到快速传输数据的目的。并且由于采用工作负荷调整(workload mediating)方法,经由决策功能(policy decision function)和策略执行点(policy executionpoint),企业管理员可手动或自动优化性能。具体的说,这些概念形成了下述11个抽象功能,并可以用客户端/服务器的技术实现:
抽象功能0,半虚拟化方法的基本功能,使一个事务的代码路径能绕过大部分QEMU进程逻辑,处理同步及异步的I/O操作,并利用直通方式增加I/O速度;
抽象功能1,非对程多路径的快速控制。管理所述基础平台产生的手机虚拟机并向用户分派所述手机虚拟机;
抽象功能2,从KVM接入用户自定义的内核组件;
抽象功能3,虚拟机客户空间任务与Linux用户空间任务的快速切换;
抽象功能4,跨虚拟机通讯,借助广播与虚拟中断同时与多个虚拟机通讯;
抽象功能5,超级总线设备管理器;
抽象功能6,决策的功能(PDF)和策略执行点(PEP);
抽象功能7,以策略及影子ISA/ABI来管理设备;
抽象功能8,安全管理;
抽象功能9,性能服务;以及
抽象功能10,联网超级总线。
为了实现上述11个抽象功能,本发明提出了一种总线架构,也称为超级总线,通过该通过总线架构可以构建虚拟机监控器,该总线架构包括:
总线,总线包括:性能服务(功能9)、联网总线(功能10)、与本地总线(功能1-8)。它跨越了原有的Linux内核,原有的VMM,以及利用半虚拟化方法形成的VMM。
被修改的KVM组件,例如虚拟中断,虚拟计时器。
客户空间组件,主要包括在Windows,Linux或Android等虚拟机的设备驱动。
用户空间组件,包含用户空间应用库,策略管理器,设备管理器,对外接口,以及虚拟机管理器。这些组件能有效管理总线架构的功能。
指定的或共享的硬件设施。
在本发明的一实施方式中,在可选的服务消费端和服务生产端的架构下,服务生产端针对各消费端的请求来提供上述的各项功能。
在本发明的一实施方式中,上述的半虚拟化功能进一步包括:
虚拟中断,使用英特尔和超微硬件虚拟技术的VMExit和VMEntry切换内核状态与客户空间状态;
IO驱动,绕过大部分QEMU仿真代码解决同步和异步的IO讯号、负载的传输;
直通传输装置,例如使用可选的零拷贝实现,进行快速直通传输。
在本发明的一实施方式中,代码多路径功能进一步包括:
建构多条可选的代码路径以传输IO讯号、负载,包括使用KVM共享内存的后端虚拟设备,与在QEMU中的共享内存前端虚拟设备;多路径包括以下组合:同步、异步;读、写;采用服务生产端/消费端架构或不用服务生产端/消费端架构。
在本发明的一实施方式中,用户自定义的内核组件功能进一步包括:用户自定义内核组件可以被超级总线控制,并主动接入KVM。
在本发明的一实施方式中,Linux任务和虚拟机任务切换功能进一步包括:Linux任务使用虚拟机的虚拟驱动,通过共享内存虚拟设备,代替虚拟机任务完成讯号、负载的IO传输。
在本发明的一实施方式中,跨虚拟机通讯功能进一步包括:Linux任务通过向上调用或其它类似的实施方式,向多个虚拟机广播或多播,完成讯号、负载的IO传输。
在本发明的一实施方式中,对应用二进制接口的管理进一步包括:凡需要应用二进制接口ISA/ABI读或写真实硬件设备的荷载时,使用超级总线的共享物理媒体,经由VMM/KVM承接了IO荷载,与虚拟机的虚拟设备互动,并且利用流量控制器来控制数据流量、控制带宽、容错、合并流媒体输送管道、而且保证服务品质QoS。
在本发明的一实施方式中,决策功能与策略执行点进一步包括:
决策点和执行点的部署组合可以有多种选择;
决策功能预设、或动态部署、传达策略到策略执行点;
策略的部署、传达或执行可以是基于事件触发,并由消费端的策略执行点向服务生产端的决策功能订阅;
应用的领域可以包括设备管理和负荷调整器。
在本发明的一实施方式中,以策略及影子应用二进制接口来管理设备的功能进一步包括:以决策功能与策略执行点来管理虚拟设备;
影子应用二进制接口可与各个虚拟机互动;
多次的IO读写可以用影子应用二进制接口一次完成。
在本发明的一实施方式中,安全管理功能进一步包括:
信任平台模块技术的散列值的计算,分别实施在主机与周边模块或存储;
主机与周边模块以问答方式核对签了名的散列值,如果不符则产品停止运行;
支持远程产品的安全核对,核对技术被扩充成一个从主机开始的产品安全链。
在本发明的一实施方式中,性能服务功能进一步包括:
管理员可以手动、与程序自动的性能服务;
使用Linux的一般开源工具或第三方商用性能工具;
使用超级总线提供的工作负载调整器。这一调整器使用基树数学模式,将在代码路径上的各个执行点收集到的数据加以应用,可以控制超级总线各功能实施时的性能,并可结合统计方法,作出性能的最大优化。
在本发明的一实施方式中,联网总线功能进一步包括:
实现电信管理网络(Telecommunication Management Network或TMN),实现基于开源Hadoop/MapReduce的全局文件系统(Global FileSystem或GFS),和使用在Linux上通用的虚拟机化库应用接口LibVirt。
联网总线可以选用服务器/客户端的架构实现。具体的实现是管理中心与主机代理。
在本发明的一实施例中,所述虚拟机中断包括:
可以人工产生的中断;
虚拟机未加载处理的VMCS寄存器可由VMM自行处理,以增强性能;
利用NM#6,设置超级调用(Hypercall)。
在本发明的一实施例中,直通传输装置(零拷贝)进一步包括:
处理同步、异步的磁盘或网络数据传输;
双重翻译数据地址并加锁,取得送出方环形缓冲,并在缺页时通过Linux系统调用mmap()找到缺页的物理页;
实现DMA读写,返回用户,解锁,释放环形缓冲。
在本发明的一实施例中,虚拟机的虚拟驱动进一步包括:
接受虚拟设备的IO指令,读写共享内存、磁盘、网络数据;
接受非设备的IO指令,读写共享内存、磁盘、网络数据;;
提供VirtIO接口,利用分流实现零拷贝,或利用TCP/UDP-IP-over-Infiniband完成通讯;
挂起及卸除设备的功能。
在本发明的一实施例中,多条可选的代码路径包括:
对象之间通信机制,通过虚拟服务生产端与虚拟服务消费端完成IO的读写;
对象之间通信机制,直接通过主机的VIRTIO共享内存虚拟设备完成IO的读写;
传统有限半虚拟化方式(不用共享内存虚拟设备);
传统非虚拟化方式(不用Trap进入VMM)。
在本发明的一实施例中,代码多路径功能包括物理媒介(共享内存)地址计算器所需要的双重翻译,把虚拟机虚拟地址翻译成虚拟机物理地址,再把虚拟机物理地址翻译成主机物理地址。
在本发明的一实施例中,虚拟服务生产端不但会把性能调整器的策略传递给虚拟文件系统(VFS),而且会处理虚拟服务生产端传来的同步或异步IO指令,并转而利用Linux本身的IO功能完成任务。
在本发明的一实施例中,虚拟服务消费端进一步包括:
通过核心服务线程向VSP分派同步或异步读写请求;
按工作负荷策略分流事务到不同路径。
在本发明的一实施例中,VIRTIO共享内存虚拟设备进一步包括:
VM-QEMU-KVM虚拟化空间状态切换机制;
AIO服务代理,利用Linux主机本身Block设备驱动向硬盘或网络读写数据,并可选择使用缓存,这样,读写完毕后可利用守护进程通知Linux用户空间的任务。
在本发明的一实施例中,向上调用进一步包括:
主机代理经由共享内存传递讯号和负载给向上调用;
向上调用使用广播器将讯号和负载传到一个以上的虚拟机;
人工虚拟中断让虚拟机的虚拟驱动完成共享内存里的讯号、负载IO操作。
在本发明的一实施例中,共享内存进一步包括:
IO环形缓冲管理器的设定与释放;
IO环形缓冲管理器队列的操作,利用另一中断权限数列为辅,遍历该数列时把权限高的数列元素向前提升。
在本发明的一实施例中,对应用二进制接口的管理还包括:
KVM利用openfirmware的bytecode监控(1)PIO/MMIO范围,(2)总线中断,(3)硬件树;
当硬件启动时(bootloader and bootstrap),QEMU仿真硬件可用。
操作包括发现硬件、指定硬件、控制流量、合并媒体传输管道。其中,控制流量的操作,使用分流规则来分流从物理设备经过ABI的荷载。
在本发明的一实施例中,负荷调整器进一步包括:
三个策略管理器PDFs,从不同规则库和/或性能消耗矩阵读出数据,以处理:(1)KVM自然规律决策功能、(2)个别事务性能决策功能、(3)整体事务性能决策功能;
四个工作负载调整器PEPs,从以上三个决策功能PDFs取得策略,执行:(1)事务首度分层分路、(2)Linux任务调度器将事务重新分层分路、(3)处理过载、单点流量爆发(Burst)影响整体,同层聚合(samelayer aggregation),及其它主机整体的问题,并且执行(4)按照资源消耗矩阵数据分派事务。
在本发明的一实施例中,个别事务性能决策功能进一步包括:
资源消耗处理器(Resource Consumption Handler),利用基树遍历器,写入与读出在资源消耗矩阵里的数据,综合个别事务规则库里的规则,决定以下策略的充分条件:
DMA带宽使用是否过大?
QEMU IO环形缓冲内存是否足够?
虚拟与非虚拟QEMU桥Out-of-band控制讯号是否太慢?
共享内存是否足够?
双重地址翻译GVA->GPA,GPA->HPA是否批处理时间过长?
V-TLB的缓存页miss hit次数是否太多?
KVM IRQfd中断注入是否批处理时间过长?
GPU祯缓存Out-of-band控制讯号是否太慢?
最大并发量是否过大?
线程、进程是否过长?
用户栈是否足够?
在本发明的一实施例中,基树遍历器进一步包括:
五层代码结构:第一层为VM SCSI/NDIS、第二层为QEMU、第三层为内核及虚拟驱动、第四层为非虚拟驱动、第五层为物理机。
为事务生成64-bit键值,按代码层数建立基树路径,每个节点有8个槽,叶节点的8槽中5槽写入矩阵的5行的指针;
同层“群找(gang-lookup)”事务的树节点时,如果节点高度转成的层数小于所给层数,则可继续向下找到树节点,取得该节点树槽里的矩阵指针,把矩阵里的单元数据读出。
在本发明的一实施例中,以策略及影子应用二进制接口来管理设备的功能还包括:
KVM利用openfirmware的bytecode监控(1)PIO/MMIO范围,(2)总线中断,(3)硬件树;
当硬件启动时(bootloader and bootstrap),QEMU仿真硬件可用;
操作包括发现硬件、指定硬件、控制流量、合并媒体传输管道。其中,控制流量的操作,使用策略执行点(PEP)来分流从物理设备经过ShadowABI来的荷载。合并媒体传输管道的操作,使用策略执行点(PEP)合并通讯管道。
在本发明的一实施例中,安全管理功能还包括:
USB硬件模块制造商将Endorsement钥匙对(key pair)写入USB模块,并将公钥(Ekpub)信息交给软件制造商;
软件制造商将USB模块硬件安装在产品服务器上,然后进行硬件模块设置、硬件模块升级、软件更新验证。
在本发明的一实施例中,性能服务功能还包括:
总线性能服务框架单一系统部署的方法可插入集群系统;
使用现成的性能工具sysstate、vmstate、oProfile;
使用性能优化器执行解决方案、负荷调整器搜集性能数据并调整负荷、瓶颈辨认器分析数据功能。
在本发明的一实施例中,性能优化器进一步包括:
针对辨认出的瓶颈,将已参数化的功能单元经由指令或图形界面来调整性能,其中,VMM特性参数经由虚拟RAM,CPU核数,IPI中断等调整、驱动参数经由虚拟BIOS,PCI总线,设备调整;
经由工作负荷调整器的策略管理器来微调事务、经由参数与解决方案来宏调事务;
改进性能的解决方案包括Linux大页表、基于协议的API批处理,包括预先分配的内存链、聚合代码路径的调度器。
在本发明的一实施例中,瓶颈辨认器进一步包括:
从集群或单一系统的资源消耗矩阵收集性能数据;
统计数据,辨别是否距离正常性能值差距太大,超出瓶颈库所规定的瓶颈范围。
在本发明的一实施例中,Linux任务调度器进一步包括:
调度方法套接机制,可配置半虚拟化调度器、实时调度器、网格调度器。按照需要,取代当前默认的Linux内核调度器CFS;
调整单一事务路径上任务的优先级和时间片;
对整体主机事务,如果过载,调整同层聚合的事务,或爆发流量的任务的优先级和时间片。否则,调整影响交通量的事务优先级和时间片;
运行任务切换逻辑。
在本发明的一实施例中,任务切换逻辑进一步包括:
提供各种调度器的共通逻辑,包括使用较为通用的任务切换逻辑,符合上述的各种调度器(例如默认的Linux CFS调度器、半虚拟化调度器、实时调度器、网格调度器)的构成,且利用VTx/SVM技术加速切换,并按设置调整虚拟机的优先级。
在本发明的一实施例中,联网总线服务包括:
若客户端为网络上其它的超级总线,则按照父子树状网结构连接其它超级总线;
若客户端为镜像数据库,则要从全局文件系统(GFS)查找镜像文件。若客户端为存储系统,则要从GFS查找存储地址。意即虚拟对象需要转化为物理对象,可用GFS Client向子网发送散列(hashing)数据(chunk index)和文件名。这种Map-Reduce的过程如下:首先,Master服务器送回chunkhandle,chunk地址。其次,GFS Client向子网发送chunk handle,byte范围。最后,影射子网主机文件chunk(Map),和送回查找到的数据(Reduce);
若客户端为网元、网络管理器,则按照多对一的关系连接虚拟网络管理器、网元管理器。
在本发明的一实施例中,管理中心进一步包括:
管理中心处理新建、修改、删除、查找用户及其管理员权限;
管理中心以图形界面和/或指令行处理用户与管理员的指令,包括管理用户对话期、虚拟机状态、虚拟机开关机;
管理中心管理节点、主机、虚拟机、虚拟存储、虚拟网络、荷载均衡策略、容错策略、超级总线服务框架,包括网络超级总线的全局文件系统(GFS)服务。
在本发明的一实施例中,主机代理进一步包括:
主机代理以总线架构传讯号的代码路径控制处理内网、虚拟机对事件的反应;
主机代理以超级总线传荷载的代码路径处理心跳、机器状态;
主机代理从Linux虚拟机服务器控制虚拟机,具体实现是通过Linux标准应用接口LibVirt控制红帽的企业虚拟机服务器,运软的QServer,和Xen虚拟机服务器。
另一方面,本发明的性能服务框架也可以单独提出,作为独立的产品,该性能服务框架包括:
总线性能服务框架单一系统部署的方法可插入集群系统;
使用现成的性能工具sysstate、vmstate、oProfile;
使用性能优化器执行解决方案、瓶颈辨认器分析数据功能、负荷调整器搜集性能数据并调整负荷。
在本发明的一实施例中,性能优化器进一步包括:
瓶颈辨认器针对辨认出的瓶颈,将已参数化的功能单元经由指令或图形界面来调整性能,其中,VMM特性参数经由虚拟RAM,CPU核数,IPI中断等调整、驱动参数经由虚拟BIOS,PCI总线,设备调整;
以工作负荷调整器的策略管理器来微调事务、经由参数与解决方案来宏调事务;
改进性能的解决方案包括Linux大页表、基于协议的API批处理,包括预先分配的内存链、聚合代码路径的调度器。
在本发明的一实施例中,瓶颈辨认器进一步包括:
从集群或单一系统的资源消耗矩阵收集性能数据;
统计数据,辨别是否距离正常性能值差距太大,超出瓶颈库所规定的瓶颈范围。
在本发明的一实施例中,负荷调整器器进一步包括:
三个策略管理器PDFs,从不同规则库和/或性能消耗矩阵读出数据,以处理:(1)KVM自然规律决策功能、(2)个别事务性能决策功能、(3)整体事务性能决策功能;
四个工作负载调整器PEPs,从以上三个决策功能PDFs取得策略,执行:(1)事务首度分层分路、(2)Linux任务调度器将事务重新分层分路、(3)处理过载、单点流量爆发(Burst)影响整体,同层聚合(samelayer aggregation),及其它主机整体的问题,并且执行(4)按照资源消耗矩阵数据分派事务。
在本发明的一实施例中,个别事务性能决策功能进一步包括:
资源消耗处理器(Resource Consumption Handler),利用基树遍历器,写入与读出在资源消耗矩阵里的数据,综合个别事务规则库里的规则,决定以下策略的充分条件:
DMA带宽使用是否过大?
QEMU IO环形缓冲内存是否足够?
虚拟与非虚拟QEMU桥Out-of-band控制讯号是否太慢?
共享内存是否足够?
双重地址翻译GVA->GPA,GPA->HPA是否批处理时间过长?
V-TLB的缓存页miss hit次数是否太多?
KVM IRQfd中断注入是否批处理时间过长?
GPU祯缓存Out-of-band控制讯号是否太慢?
最大并发量是否过大?
线程、进程是否过长?
用户栈是否足够?
在本发明的一实施例中,基树遍历器进一步包括:
五层代码结构:第一层为VM SCSI/NDIS、第二层为QEMU、第三层为内核及虚拟驱动、第四层为非虚拟驱动、第五层为物理机。
为事务生成64-bit键值,按代码层数建立基树路径,每个节点有8个槽,叶节点的8槽中五槽写入矩阵的5行的指针;
同层“群找(gang-lookup)”事务的树节点时,如果节点高度转成的层数小于所给层数,则可继续向下找到树节点,取得该节点树槽里的矩阵指针,把矩阵里的单元数据读出。
在本发明的一实施例中,Linux任务调度器进一步包括:
调度方法套接机制,可配置半虚拟化调度器、实时调度器、网格调度器。按照需要,取代当前默认的Linux内核调度器CFS;
调整单一事务路径上任务的优先级和时间片;
对整体主机事务,如果过载,调整同层聚合的事务,或爆发流量的任务的优先级和时间片。否则,调整影响交通量的事务优先级和时间片;
运行任务切换逻辑。
在本发明的一实施例中,任务切换逻辑进一步包括:
提供各种调度器的共通逻辑,包括使用较为通用的任务切换逻辑,符合上述的各种调度器(例如默认的Linux CFS调度器、半虚拟化调度器、实时调度器、网格调度器)的构成,且利用VTx/SVM技术加速切换,并按设置调整虚拟机的优先级。
图1是根据本发明的一实施例的总线架构的结构框图。此总线架构包括用户空间组件011、客户空间组件012、总线013,Linux内核014,VMM015,半虚拟化VMM016,KVM017以及硬件设备018。实线框是本发明涉及的部件;虚线框为现有Linux开源组件或Windows的操作系统软件。因此,虚线框将不多作说明。
图1所示的系统中,用户空间组件011通过总线013可以与客户空间组件012里的虚拟机交流。其中,总线013的组件“本地总线”0133会与Linux内核014,VMM015,半虚拟VMM016互动,而由KVM017的虚拟中断0172来提供用户空间、客户空间、内核空间的切换。这样,虚拟机的驱动0121,可以以直通方式(意即零拷贝)或非直通方式与共享或指定的硬件设备018进行IO操作。其中,后端影子设备0161,后端虚拟设备0162,AIO服务代理0141,以及IO服务0164,均参与IO操作。在一个实施方式中,半虚拟VMM016的参与,表示整个超级总线的操作使可以和原有开源的Linux的有限半虚拟方法合并使用。另外,设备管理0111和设备服务代理0143则能对数据的媒体类型、流量作控制。以上的简略说明,涵盖了本地总线架构0133的抽象功能0-8。
总线013的另一组件,“性能服务器”0131,其作用是使管理员自动或手动灵活调整系统的性能。用户空间应用库0114可以经由01141的策略管理器来操控,0163内存管理器则被用来在Linux内核里收集性能信息,并可能通过Linux内核的任务调度器0142改变任务的时间片。以上的简略说明,涵盖了超级总线服务框架0131的抽象功能9。
在一个实施方式中也说明了总线013的组件“联网总线”0132的操作。由于本地总线仅仅作用在主机本身,联网总线则能调配远端其它主机的存储和虚拟机镜像,并能对在树状网络上的全部主机,施行管理。以上的简略说明,涵盖了联网总线架构0132的抽象功能10。
超级总线服务生产端
图2是根据本发明的一实施例的实现总线架构的服务生产端的流程图,其中概括了11个抽象功能(功能0到功能10)。图2给出了总线013的工作流程情况。这里提到一个可以选用的“服务消费端/服务生产器”的架构。与一般软件工程所谓的客户端/服务端(C/S)的架构不同的是,客户端与服务器之间是网络通讯。在这里的通讯,并不是网络通讯,而仅是主机本地更快速的程序调用或系统调用。更确切的说,应该是虚拟服务消费端(Virtual Service Consumer,VSC)/虚拟服务生产端(VirtualService Producer,VSP)的关系。在下面的一个实施例(图15和图16)中说明了这样的关系。另一方面,图2所给出的是一个涵括超级总线全部的抽象功能(0-10)的概要图。当地超级总线虚拟服务生产端工作流程具体包括:
步骤0201,超级总线作为服务器的初始化;
步骤0202,判断事务操作是否为当地超级总线。如是,转入步骤0203,否则进行步骤0220;
步骤0203,判断服务消费端是否为客户操作系统(Guest)。如是,转入步骤0204,否则进行步骤0205;
步骤0204,运行非对称、多路径的前端设备驱动(功能1),或跨虚拟机通讯的前端设备驱动(功能4);
步骤0205,判断服务消费端是否为VMM或KVM。如是,转入步骤0206,否则进行步骤0207;
步骤0206,针对VMM运行非对称、多路径的后端虚拟设备(功能1),或虚拟内存管理;针对KVM运行虚拟计时器及虚拟中断(功能4);
步骤0207,判断服务消费端是否为Linux内核。如是,转入步骤0208,否则进行步骤0209;
步骤0208,运行半虚拟化功能(功能0),或运行从KVM接入用户自定义的内核组件(功能2),或与应用二进制接口(ABI)交流而运行AIO服务代理(功能1),或运行跨虚拟机通讯(功能4);
步骤0209,判断服务消费端是否为物理硬件。如是,转入步骤0210,否则进行步骤0211;
步骤0210,运行超级总线设备管理器(功能5),或决策的功能(PDF,生产端)和策略执行点(PEP,消费端)(功能6),或以策略和影子ISA/ABI管理设备(功能7),或安全系统(功能8);
步骤0211,判断服务消费端是否为Linux任务。如是,转入步骤0212,否则进行步骤0217;
步骤0212,判断Linux任务是否为用户自定义的应用。如否,转入步骤0213,如是进行步骤0216;
步骤0213,判断Linux任务是否为虚拟中心管理应用。如是,转入步骤0214,否则进行步骤0215;
步骤0214,运行虚拟中心,主机代理(功能10)或性能优化器,性能服务(功能9);
步骤0215,运行虚拟桌面(VDI)应用(功能10);
步骤0216,运行用户自定义的应用,作为Linux任务和虚拟机监测器(VMM)之间的桥梁(功能10);
步骤0217,判断是否为客户(Guest)任务与Linux任务交流,如是,转入步骤0218,否则进行步骤0218;
步骤0218,运行不同空间的两任务快速切换(功能3);
步骤0219,错误返回;
步骤0220,判断是否为联网超级总线,如是,转入步骤0221,否则进行步骤0222;
步骤0221,运行联网超级总线服务器(功能10);
步骤0222,运行性能服务框架(功能9);
本地总线功能0--半虚拟化基本功能
图3是根据本发明的一实施例的总线架构的半虚拟化基本功能的组成框和流程混合图。图3给出了半虚拟化VMM016的抽象功能0--半虚拟化基本功能的框架/流程混和图。该功能的目的就是提供绕过QEMU仿真器的大部分逻辑。图中显示,半虚拟化VMM逻辑034或经由Linux用户空间管理应用031的正常Linux系统调用,或经由虚拟机032运行时的Linuxglibc或Windows系统调用层发出VMCALL,来完成这一目的。半虚拟化VMM逻辑流程包括:
步骤0301,首先是由VMCALL进入半虚拟化VMM逻辑,虚拟中断会处理VMEXIT,然后进入步骤0302;
步骤0302,(亦可由Linux用户空间管理应用031的正常Linux系统调用来直接进入此步骤,实施例就是主机代理)判断操作是否调用虚拟驱动03221。若是,转入步骤0303,否则转入方框035,Linux VMM(Linux内核、VMM发正常的内核系统调用完成事务处理)。这里表明了原来的开源Linux KVM操作仍然可以与超级总线合并使用;
步骤0303,这时,超级总线被看作是PCI设备,需要与虚拟机的虚拟驱动03221交流,于是VMM及内核组件调用内核服务线程,然后进入步骤0304;
步骤0304,判断操作为同步或异步调用。若是同步,转入步骤0310,若是异步,转入步骤0305;
步骤0305,虚拟中断立即处理VMENTRY,而后返回虚拟机,并同时触发虚拟机的虚拟驱动,步骤0306;
步骤0306,判断此驱动是否为I/O驱动。若是,转入步骤0309,否则转入步骤0307;
步骤0307,完成非IO驱动功能,而后转入步骤0308;
步骤0308,发出异步功能完成通知给虚拟机;
步骤0309,完成IO驱动功能,包括对直通设备(pass-thru device)的零拷贝(zero copy),而后转入步骤0308;
步骤0310,判断是否为I/O驱动。若是,转入步骤0312,否则转入步骤0311;
步骤0311,完成非IO驱动功能,而后转入步骤0313;
步骤0312,完成IO驱动功能,包括对直通设备(pass-thru device)的零拷贝,而后转入步骤0313。
步骤0313,直到功能完成,虚拟中断才处理VMENTRY
本地总线功能1:非对称、多路径快速控制
图4是根据本发明的一实施例的总线架构的非对称、多路径快速控制功能组成框图。图4是本地总线功能1:非对称、多路径快速控制的组成框图。“多路径”意指事务操作的代码新路径可以有多种选择,从低性能到高性能不等,而以开源的非超级总线的代码旧路径性能最低。由于每个虚拟机不一定行走统一的旧路,而是有不同的较高性能路径可选,因而各个虚拟机处理事务的路径不再对称。
图中显示,虚拟机041的应用0411执行I/O操作时,虚拟机操作系统内核0412会经由陷阱中断进入超级总线042。超级总线的KVM后端组件将事务选择、区分成多路处理,这些路径在VMExit后,分别通知QEMU,0413,的VIRTIO设备1,…,n(以设备04131和04132为代表),因而触发了虚拟机的驱动1,…,n以设备04121和04122为代表)。这些驱动又与超级总线服务1,…,n交流,因而能把负荷经由045应用二进制接口(ABI),完成真实硬件设备荷载的读或写。超级总线服务的实施例之一,是ICCM VSP/VSC文件系统。实施例之二,则是AIO服务代理。值得注意的是:
QEMU仿真器并不能完全绕过。仍需使用少量的QEMU设备代码。
Guest Mode和Kernel Mode的切换:在调用虚拟机VMExit之后,会利用VMResume再度回到KVM后端组件,然后经过VMEntry回到虚拟机非根操作,使客户操作系统从上次的中断点继续运行。
超级调用(Hypercall):以上的状态切换,可以经由自定义的超级调用完成,不必使用VTx/SVM指令,因为这样可以增加速度。
多路径的创造,符合“事务处理从盒内对象转到盒外对象”的增高性能原则。盒外对象甚至可以是Linux进程(也就是当地超级总线功能3)。
本地总线功能2:从KVM接入用户自定义的内核组件
图5是根据本发明的一实施例的总线架构的从KVM接入用户自定义的内核组件功能的组成框图。图5是本地总线功能2:从KVM接入用户自定义的内核组件的组成框图。用户自定义的内核组件原本是与超级总线无关的,而且是受KVM/VMM控制的。本功能使此内核组件被超级总线控制,该组件并能享受到分流(multi-pathing)、合流(multiplexing)、穿流(tunneling)的利益。
图中显示,虚拟机051包含组件虚拟机应用0511,虚拟机内核0512,和QEMU仿真器0513。与功能1类似,当虚拟机051执行I/O操作时,利用半虚拟化原理进入超级总线052。超级总线按照其计划,通知虚拟机,直接把讯号传给自定义的内核组件053,该内核组件主动接入KVM/VMM054完成I/O操作,其中可以经过分流器055的分流,或穿流器056的直通方式,利用应用二进制接口(ABI)057来读写数据。这样,超级总线得以操控此一用户自定义的内核组件。内核组件的实施例就是工作负荷调整器的策略执行点。
本地总线功能3:用户空间与客户空间任务的快速切换
图6是根据本发明的一实施例的总线架构的虚拟机间的快速切换功能的组成框图。图6是本地总线功能3:用户空间与客户空间应用的快速切换组成框图。客户空间的虚拟机IO操作常因经由QEMU仿真器而减低性能。如果能将此IO操作切换到Linux用户空间,则可加速IO性能。因而,此功能的作用时,Linux任务使用虚拟机的虚拟驱动,通过共享内存,代替虚拟机任务完成讯号、负载的IO传输。
用户空间的任务061首先被预先设置为可被切换;当虚拟机062的客户空间应用0621执行IO操作时,虚拟机内核0622会经由半虚拟化的陷阱中断0631与超级总线063互动。超级总线的共享物理媒介0631成为用户空间和客户空间可以共同接入的媒介,把IO的讯号和荷载由客户空间切换到用户空间。最后,Linux用户空间的应用得以把网络或硬盘的共享物理媒介的荷载传给物理硬件(或不经过共享物理媒介而用DMA,或经过分流处理)。本功能的实施例就是AIO服务代理。
本地总线功能4:跨虚拟机通讯
图7是根据本发明的一实施例的总线架构的跨虚拟机通讯功能的组成框图。图7是本地超级总线功能4:跨虚拟机通讯的组成框图。超级总线通过多播(multiplexing)或广播(broadcasting)的方法,对多个客户空间的虚拟机同时操作,这样可以使用当地的内核调用,和共享内存,而不必用到网络传输。因而,此功能的作用是:Linux任务通过向上调用向多个虚拟机广播或多播,完成讯号、负载的IO传输。譬如把应用统一部署到多个虚拟机,或为多个虚拟机经由DNS查找网址。
首先用户空间的管理应用(实施例之一就是图36的“主机代理”)071借由Linux系统调用把讯号和荷载传入超级总线073的组件0731;另一发起路径则是经由客户空间072的虚拟机群中的某个虚拟机0721发出PV系统调用,利用PV功能进入超级总线073,将讯号和荷载传入超级总线组件0731(该组件的实施例之一就是图21的“向上调用Upcall”)。组件0731利用多播或广播器0732向虚拟机1,0722,…虚拟机n,0723,的驱动1,07221,…,驱动n,07231发送虚拟中断07321(虚拟中断的实施例之一就是图22的“虚拟中断”)。这些驱动通过共享物理内存0733(共享物理内存的实施例之一就是图23的“IO环形缓冲管理器”)读写网络或硬盘的荷载,并将IO结果通知虚拟机1,…,虚拟机n(或不经过共享物理媒介而用DMA)。
本地总线功能5:超级总线管理应用二进制接口ISA/ABI
图8是根据本发明的一实施例的总线架构的总线设备管理器功能的组成框图。图8给出本地总线功能5:超级总线管理应用二进制接口的组成框图。超级总线设备管理器主要是为了虚拟设备的发现、指定、及设备数据流量和通道的控制。本功能特别强调超级总线能够管理应用二进制接口ISA/ABI。
由图可见,用户空间的设备管理器081经由Linux系统调用向虚拟机设备发出下列指令:发现设备、指定设备、控制流量、合并流媒体输送管道。在内核空间的超级总线083有个超级总线的设备管理代理0831。该设备管理代理的目的是,经由广播器0832,向多个虚拟机082的虚拟设备前端0821广播,传达由设备管理器081下达的指令。
首先,在预设值阶段,这些虚拟设备被发现、被指定名字、其结果都会经由设备管理代理0831传回设备管理器081。设备管理器081也会公告该虚拟设备于广域(全局)VMMs。其中最重要的是,设备管理代理0831将共享物理媒体0833建立为应用二进制接口084的虚拟设备后端,以便管理应用二进制接口ISA/ABI084。
随后,当虚拟机082有IO操作,需要应用二进制接口ISA/ABI084读或写真实硬件设备的荷载时,受到超级总线的管理,共享物理媒体就经由VMM/KVM承接了这一荷载,与虚拟机082的虚拟设备前端0821互动,并且利用流量控制器08331来控制数据流量、控制带宽、容错、合并流媒体输送管道、而且保证服务品质QoS。流量控制器08331并将结果通知设备管理代理0831,而设备管理代理0831再转而通知设备管理器081。
超级总线设备管理器的实施例就是图24的“ICCM设备管理器代理”。
本地总线功能6:决策的功能(PDF)和策略执行点(PEP)
图9是根据本发明的一实施例的总线架构的决策的功能(PDF)和策略执行点(PEP)功能的组成框图。图9给出本地超级总线功能6:决策的功能(PDF)和策略执行点(PEP)的组成框图。超级总线利用由规则引擎产生策略,部署在不同决策点;而策略的执行,则是部署在不同的策略执行点。实施决策功能的决策点可以有多个,而每个决策点又可以有多个执行点。规则的内容可以有多个领域,包括设备管理策略的领域,性能服务策略的领域,等等。决策点和执行点的部署组合可以有多种选择,本组成框图仅为实施方式之一。策略的部署和传递,或在预设置的阶段,或在运行阶段。在个别执行点上,策略的部署、传递或执行可以是由事件触发、并由消费端PEP向服务生产端PDF订阅。决策的功能和策略执行点使得功能管线达到流线型的管理。
用户空间组件091包含了策略规则库0911和策略图形界面0912,决策功能点0913。管理员通过策略图形界面0912管理策略规则库0911里的规则,针对要决策的领域,传达到超级总线093的超级总线决策功能点(PDF)0931。决策功能点0931按照规则库里的规则作出决定。该决策点包含了多个策略执行点(PEP),分别在客户空间和Linux内核空间。首先,该决策点部署了应用二进制接口上的策略执行点094。其后,也将策略执行点部署在共享物理媒介、KVM/VMM、和虚拟机上。每当虚拟机有IO操作时,或虚拟设备被发现、被指定、被要求控管流量或合并媒体传输方式时,虚拟机策略执行点0921、共享物理媒介策略执行点0934、KVM/VMM策略执行点0933就被事件触发,执行策略。
图25的策略管理器为PDF实施例,图25的工作负荷调整器为PEP实施例之一,图28的具有策略及影子ISA/ABI的设备管理器为PEP实施例之二。
本地总线功能7:以策略及影子应用二进制接口来管理设备
图10是根据本发明的一实施例的总线架构的以策略及影子ISA/ABI来管理设备功能的组成框图。图10给出本地总线功能7:以策略及影子应用二进制接口来管理设备的组成框图。本功能将上两功能合并,因而可以用策略管理虚拟设备(也就是逻辑设备)。并且建立影子应用二进制接口,可与各个虚拟机互动,最终再把负荷传给真实应用二进制接口,这样可以把多次IO以一次硬件的读写完成。
用户空间组件101包含了策略规则库1011,规则库管理员界面1012,和设备管理器1013。超级总线103则包含了设备管理器代理1031,超级总线决策的功能(PDF)1032、影子ISA/ABI1033、KVM/VMM的超级总线组件1034、共享物理媒介(含流量控制,等等)1035、与应用二进制接口(ISA/ABI)104。
在预设值的阶段里,管理员通过规则库管理员界面1012管理规则库1011的规则、设定超级总线103中决策功能(PDF)1032的策略、并部署/传递策略到影子ISA/ABI的策略执行点(PEP)10331、KVM/VMM的策略执行点(PEP)10341、共享物理媒介策略执行点(PEP)10351、与应用二进制接口(ISA/ABI)策略执行点(PEP)1041。
在运行阶段里,设备管理器1013通过设备管理器代理1031将发现、指定、流控、媒体管道合并等指令下达到超级总线的各组件。其中,影子ISA/ABI1033有广播的功能,能与多个虚拟机102互动。每当虚拟机有IO操作时,各策略执行点在虚拟设备对流量、媒体管道监控的情况下,被IO操作触发而执行策略。影子ISA/ABI1033并在聚合IO操作的结果后,向真实的二进制接口做一次读写。
图28的具有策略及影子ISA/ABI的设备管理器是本功能的实施例。
本地总线功能8:安全管理
图11是根据本发明的一实施例的总线架构的安全管理功能的组成框图。图11给出本地总线功能8:安全管理的组成框图。超级总线安全管理的目的是在防止骇客攻击,并保护产品许可证的实施。这一安全设施的优势为安全的保护是在操作系统的第二环以下(环0或环1),所以遭受攻击的可能性非常低。其特性是将信任平台模块(Trusted Platform Module,或TPM)技术的散列值的计算,分别实施在主机与周边模块(或存储),加以核对,如果不符则产品停止运行。本设施并支持远程产品的安全核对,因而将此一技术,扩充成一个从主机开始的安全链。
图中显示,用户空间组件111包含远程应用1111,本地应用1112(例如VDI产品),远程安全设施闸门1113,与本地安全设施闸门1114。超级总线113则包含应用软件散列值计算器1131,签了名的应用软件散列值1132,与超级总线的安全设施代理1133。其中超级总线的安全设施代理1133还包含MMIO/PIO的操作11331,与安全监控器11332。硬件则包含周边模块114,与存储115。周边模块114还包括安全设施密封存储1141。
如图所示,无论是远程应用1111或本地应用1112,都必须通过远程安全设施闸门1113和与本地安全设施闸门1114,核对超级总线的散列值。在超级总线方面,应用软件散列值计算器1131根据测验认证的公钥(Attestation Identification Key,或AIK)临时算出散列值,签了名的应用软件散列值1132加以签名,然后将该值传递给超级总线的安全设施代理1133。安全设施代理1133使用内存映射IO(MMIO)或端口IO(PIO)11331的协议方式向周边模块114或存储115作出核对散列值的发问。周边模块114或存储115倚赖安全设施密封存储1141或1151来回应该发问。安全监控器11332在监控过程中如果发现发问/回应有误,则终止产品的运行。
图29的安全设施操作是本功能的实施例。
本地总线功能9:性能服务
图12是根据本发明的一实施例的总线架构的性能服务功能的组成框图。图12给出本地总线功能9:性能服务的组成框图。性能服务提供有关增强虚拟机性能的服务模块。其中包含了管理员手动、与程序自动的性能服务。虽然也包含Linux的一般开源或第三方商用性能工具,但最重要的工具乃是使用超级总线提供的工作负载调整器。这一调整器使用基树数学模式,将在代码路径上的各个执行点收集到的数据加以应用,可以控制超级总线各功能实施时的性能,并可结合统计方法,作出性能的最大优化。
用户空间组件121包含了现有性能工具1211,性能服务组成框图形界面1212,瓶颈辨认器1213,性能优化器1214,工作负载调整器(PDF)1215,策略管理器1216,规则库1217,与历史/统计性能数据库1218。超级总线123则包含了任务调度器1231,虚拟化内存管理器1232,各式策略执行点PEP1233(PEP1,…,PEPn),以及基树遍历器1234。硬件包含内存124。
在性能服务图形界面1212上,管理员可以引用现有商业或开源工具1211管理性能,或使用性能优化器1214手动管理性能,或设置自动性能管理。无论是手动或自动,必须依赖瓶颈辨认器1213和工作负载调整器1215提供数据或策略。瓶颈辨认器1213必须接入历史/统计性能数据库1218;工作负载调整器1215必须经由策略管理器1216接入规则库1217。
实际上,性能数据是利用超级总线的各个策略执行点1233读写基树对应的资源消耗矩阵。这可以由基树遍历器1234达成。基树是一种特别的数据结构,在(修改过的)虚拟化内存管理器1232作用下,可以按照代码路径分层读写性能数据。工作负载调整器1215可以针对某一层的节点,通过Linux(修改过的)任务调度器1231来重置任务的时间片。
图30的超级总线性能服务框架是本功能的实施例。
本地总线功能10:联网总线
图13是根据本发明的一实施例的总线架构的网络超级总线功能的组成框图。图13给出本地总线功能10:网络超级总线的组成框图。联网超级总线提供虚拟机的网络管理,实时迁移,以达到容错、负载均衡、提高虚拟机总体性能、节省能源的目的。本功能实现了几个国际标准:电信管理网络(Telecommunication Management Network或TMN),基于开源Hadoop/MapReduce的全局文件系统(Global File System或GFS),和在Linux上通用的虚拟机化库应用接口LibVirt。
用户空间组件131包含了网络/网元管理器1311,远程超级总线管理中心1312,虚拟机服务器1313,主机代理1314,远程镜像数据1315,远程存储1316,本地镜像数据1317,本地存储1318,和虚拟存储器1319。本地超级总线133则包含了各式功能1331(功能0,…,功能10),与虚拟共享内存设备1332。
网元管理器(Element Management System)1311管理多个虚拟机服务器(譬如运软公司的QServer,VMWare的ESX服务器)1313(为了简化说明,网元管理器与网络管理器合并在一个方框里,实际上是两个不同的模块。),网络管理器(Network Management System)1311则管理多个网元管理器。超级总线的主机代理1314实现了LibVirt与虚拟机服务器相连接,并以远程超级总线管理中心1312为本地超级总线133实现与远程主机通讯的功能;如果是有关虚拟机迁移的工作,则要牵涉到本地虚拟机镜像数据1317与远程镜像数据1315的互动;如果是有关使用远端虚拟存储的工作,则要牵涉到本地存储1318与远程存储1316经由虚拟存储器1319的互动。
本地超级总线133则赖主机代理1314来执行各种超级总线功能1331(功能0,…,功能10),譬如使用共享内存的设备1332,使从远端主机迁移过来的虚拟机132的IO操作可以绕过QEMU仿真器,直接利用应用二进制接口134读写硬件数据。
图35的联网超级总线服务生产端(Network HyperBus ServiceProducer)是本功能的实施例。
实现方式举例
概述
图14是根据本发明的一实施例的总线架构的抽象概念与实施例的对应关系。图14给出超级总线实施例的组成框图。本图是为了说明图1的抽象概念如何实施而绘制。此超级总线实施例的架构包括用户空间组件141、客户空间组件142、超级总线本身143,Linux内核144,VMM145,半虚拟化VMM146,KVM147以及硬件设备148。实线框是本专利涉及的软件;虚线框为现有Linux开源组件或Windows的操作系统软件。因此,虚线框将不多作说明。
图14所示的系统中,用户空间组件141通过超级总线本身143可以与客户空间组件142里的虚拟机交流。其中,超级总线143的组件“当地超级总线”1433会与Linux内核144,VMM145,半虚拟VMM146互动,而由KVM147的ICCM/Upcall虚拟中断1472来提供用户空间、客户空间、内核空间的切换。这样,虚拟机的ICCM/Upcall驱动1421,可以以直通方式(意即灵拷贝)或非直通方式与共享或指定的硬件设备148进行IO操作。其中,ICCM/KVM后端影子设备1461,ICCM/QEMU后端虚拟设备1462,ICCM AIO服务代理1441,以及VirtIO服务1464,均参与IO操作。在一个实施方式中,半虚拟VMM1416的参与,表示整个超级总线的操作使可以和原有开源的Linux的有限半虚拟方法合并使用。另外,设备管理器1411和ICCM设备服务代理1443则能对数据的媒体类型、流量作控制。以上的简略说明,涵盖了当地超级总线1433的实施例ICCM(图15和16)、向上调用(图21)、PDF/PEP(图25或图28)、与安全设施操作(图29)。
超级总线1413的另一组件,“超级总线性能服务框架/工作负载调整器”1431,其作用是使管理员自动或手动灵活调整系统的性能。主机代理1414可以经由14141的策略管理器来操控,1463基树遍历器则被用来在Linux内核里收集性能信息,并可能通过Linux内核量身定制的任务调度器1442改变任务的时间片。以上的简略说明,涵盖了超级总线服务框架1431的实施例(图30)。
在一个实施方式中也说明了超级总线143的组件“联网超级总线服务器”1432的操作。由于当地超级总线仅仅作用在主机本身,联网超级总线则能调配远端其它主机的存储和虚拟机镜像,并能对在树状网络上的全部主机,施行管理。以上的简略说明,涵盖了联网超级总线服务器1432的实施例(图35)。
对象之间通信机制虚拟服务生产端(ICCM VSP)
图15给出对象之间通信机制虚拟服务生产端(ICCM VSP)的处理流程图。虚拟服务生产端不但会把性能调整器的策略传递给虚拟文件系统(VFS),而且会处理虚拟服务生产端传来的同步或异步IO指令,并转而利用Linux本身的IO功能完成任务。本实施例是超级总线功能1:非对称、多路径快速控制(图4)实施方式的部分实现。具体流程如下:
步骤1501,对象之间通信机制服务生产端的初始化;
步骤1502,判断操作是否为监控VSP行为(作为user mode正常进程),若是,转入步骤1503,否则转入步骤1505;
步骤1503,取得工作负荷调整器的策略,进行到步骤1504;
步骤1504,向虚拟文件系统(VFS)传送指令;
步骤1505,判断操作是否控制节点(作为kernel mode字节设备),若是,转入步骤1506,否则转入步骤1515;
步骤1506,判断是否启动或关闭服务的核心线程指令,若是,转入步骤1512,否则转入步骤1507;
步骤1507,判断是否接到VSC服务请求,若是,转入步骤1509,否则转入步骤1508;
步骤1508,通过苏醒机制醒来,处理读写工作(文件系统或物理设备),并通知VSC读写完毕,转入步骤1506;
步骤1509,判断VSC请求是同步或异步,若是同步,转入步骤1510,若是异步,则转入步骤1511;
步骤1510,建立同步中断工作队列,并于读写工作(文件系统或物理设备)完毕后,立即通知VSC,转入步骤1506;
步骤1511,建立AIO读写工作队列,并通过苏醒机制将工作置于苏醒队列上,转入步骤1506;
步骤1512,判断是启动还是关闭服务的核心线程指令,若是启动,转入步骤1513,若是关闭,则转入步骤1514;
步骤1513,启动务的核心线程指令,转入步骤1506;
步骤1514,关闭服务的核心线程指令,转入步骤1506;
步骤1515,返回错误。
对象之间通信机制的虚拟服务消费端(ICCM VSC)
图16给出对象之间通信机制的虚拟服务消费端(ICCM VSC)的处理流程图。虚拟服务消费端通过核心服务线程向VSP分派同步或异步读写请求,并且按工作负荷策略分流事务到不同路径。由图可见,多条可选的代码路径包括:
(a)对象之间通信机制,通过虚拟服务生产端与虚拟服务消费端完成IO的读写;
(b)对象之间通信机制,直接通过主机的VIRTIO共享内存虚拟设备完成IO的读写;
(c)传统有限半虚拟化方式(不用共享内存虚拟设备);
(d)传统非虚拟化方式(不用Trap进入VMM)。
本实施例是超级总线功能1:非对称、多路径快速控制(图4)实施方式的部分实现。具体流程如下:
步骤1601,对象之间通信机制服务消费端的初始化;
步骤1602,判断操作是否向VSP分派请求。若是,转入步骤1603,否则转入步骤1606;
步骤1603,判断操作是否分派异步请求。若是,转入步骤1605,否则转入步骤1604;
步骤1604,通过核心服务线程向VSP分派同步读写请求,转入步骤1602;
步骤1605,通过核心服务线程向VSP分派AIO读写请求,转入步骤1602;
步骤1606,判断操作是否按工作负荷分流事务到不同路径。若是,转入步骤1607,否则转入步骤1619;
步骤1607,向工作负荷调整器取得工作负荷数据,将盒内荷载转为盒外荷载(switching);转入步骤1608;
步骤1608,分配与计算物理媒介(共享内存)地址转入步骤1609;
步骤1609,判断是否数据符合共享时间原则。若是,转入步骤1610,否则转入步骤1611;
步骤1610,传统非虚拟化方式(不用Trap进入VMM);
步骤1611,判断是VirtIO磁盘或VirtIO网络。若是VirtIO磁盘,转入步骤1613,若是VirtIO网络,转入步骤1612;
步骤1612,通过VIRTIO NET完成IO的读写;
步骤1613,判断是BlockIO或VirtIO共享内存驱动。若是BlockIO,转入步骤1615,若是VirtIO共享内存驱动,转入步骤1614;
步骤1614,通过主机的VIRTIO共享内存机制(图17)完成IO的读写,转入步骤1602;
步骤1615,VM-QEMU-KVM使用Intel或AMD虚拟化机制,转入步骤1616;
步骤1616,判断是否VFS决定将荷载传至VSC文件系统。若是,转入步骤1618,否则转入步骤1617;
步骤1617,VFS将荷载传至EXt3或Proc等文件系统,转入步骤1602;
步骤1618,VSC文件系统将工作分派给VSP,转入步骤1603;
步骤1619,返回错误。
VIRTIO共享内存机制
图17给出VIRTIO共享内存机制的框架/流程混和图。图中有两个模块,分别为VM-QEMU-KVM虚拟化机制171,与AIO服务代理172。
VM-QEMU-KVM提供虚拟化空间状态切换机制;
AIO服务代理则利用Linux主机本身Block设备驱动向硬盘或网络读写数据,并可选择使用缓存,这样,读写完毕后可利用守护进程通知Linux用户空间的任务。具体流程如下:
步骤1701,进入VM-QEMU-KVM虚拟化机制171。虚拟机进行IO操作,需要Trap;
步骤1702,Linux内核的内存共享后端模块接收Trap,再VMExit到QEMU的VirtIO共享内存设备;
步骤1703,QEMU的VirtIO共享内存设备触发虚拟机的共享内存后端驱动;
步骤1704,共享内存后端驱动对共享内存实现零拷贝;
步骤1705,Linux用户空间的应用经过共享内存实现AIO系统调用;
步骤1706,进入AIO服务代理172。判断是否使用缓存Cache,若是,转入步骤1708,否则转入步骤1707;
步骤1707,缓存管理器向Block设备驱动读写数据,转入步骤1708;
步骤1708,Block设备驱动向硬盘或网络读写数据,转入步骤1709;
步骤1709,判断是否使用缓存Cache,若是,转入步骤1710,否则转入步骤1711;
步骤1710,Block设备驱动通知缓存管理器读写完毕;
步骤1711,Block设备驱动通知服务守护进程读写完毕;
步骤1712,服务守护进程通知Linux用户空间的应用读写完毕。
物理媒介(共享内存)地址计算器
图18给出物理媒介(共享内存)地址计算器的处理流程图。本计算器实现了共享内存地址的双重翻译,把虚拟机虚拟地址翻译成虚拟机物理地址,再把虚拟机物理地址翻译成主机物理地址。具体流程如下:
步骤1801,物理媒介(共享内存)地址计算器的初始化;
步骤1802,判断操作是否定义双重地址转换。若是,转入步骤1803,否则转入步骤1805;
步骤1803,定义虚拟机区域起始指针的物理地址,转入步骤1804;
步骤1804,定义虚拟机内存起始指针的相对地址,转入步骤1816;
步骤1805,判断操作是否定义双重地址转换。若是,转入步骤1806,否则转入步骤1813;
步骤1806,先从mmap大页分配新内存块,转入步骤1807;
步骤1807,判断操作是否分配到了内存。若是,转入步骤1809,否则转入步骤1808;
步骤1808,从正常mmap分配内存,转入步骤1809;
步骤1809,将新内存块置于内存链尾端,转入步骤1810;
步骤1810,KVM设定内存槽,更新影子mmu,转入步骤1811;
步骤1811,更新双重页描述表PDT,转入步骤1812;
步骤1812,每个CPU将内存块地址记存在TLB内,转入步骤1816;
步骤1813,判断操作是否双重翻译地址。若是,转入步骤1804,否则转入步骤1817;
步骤1814,把虚拟机虚拟地址翻译成虚拟机物理地址,转入步骤1815;
步骤1815,把虚拟机物理地址翻译成主机物理地址,转入步骤1816;
步骤1816,正常返回;
步骤1817,错误返回。
虚拟机的虚拟驱动
图19给出虚拟机的虚拟驱动的处理流程图。这个流程图其实抽象化了在不同环境下的好几个不同设备的驱动:不同操作系统(例如Windows和Linux),不同共享内存设备(例如多路径的共享内存设备,环形缓冲器,直通设备)。抽象操作为:
(a)接受虚拟设备的IO指令,读写共享内存、磁盘、网络数据;
(b)接受非设备的IO指令,读写共享内存、磁盘、网络数据;;
(c)提供VirtIO接口,利用分流实现零拷贝,或利用TCP/UDP-IPover Infiniband完成通讯;
(d)挂起及卸除设备的功能。
具体流程如下:
步骤1901,虚拟机的虚拟驱动的初始化;
步骤1902,判断操作是否接受IO中断。若是,转入步骤1903,否则转入步骤1905;
步骤1903,发送数据给磁盘或共享内存设备,转入步骤1904;
步骤1904,发送完成通知,转入步骤1919;
步骤1905,判断操作是否处理数据。若是,转入步骤1906,否则转入步骤1909;
步骤1906,判断是BlockIO还是共享内存。若是共享内存,转入步骤1907,若是BlockIO,转入步骤1908;
步骤1907,读写共享内存,转入步骤1919;
步骤1908,读写磁盘或网络,转入步骤1919;
步骤1909,判断操作是否接受UPCALL中断并处理数据。若是,转入步骤1910,否则转入步骤1912;
步骤1910,发送数据给磁盘设备,转入步骤1911;
步骤1911,发送完成通知,释放IO环形数列转入步骤1906;
步骤1912,判断操作是否VIRTIO接口。若是,转入步骤1913,否则转入步骤1917;
步骤1913,判断是磁盘IO或网络IO。若是磁盘IO,转入步骤1913,若是网络IO,转入步骤1913;
步骤1914,VirtIO磁盘驱动的相关数据,可以快速地,双向地传递到Linux,转入步骤1915;
步骤1915,实现零拷贝,利用分流(multiplexing)DMA和IOMMU,转入步骤1919;
步骤1916,完成TCP/UDP-IP over infiniband或零拷贝通讯,转入步骤1919;
步骤1917,判断操作是否挂起或卸掉。若是,转入步骤1918,否则转入步骤1920;
步骤1918,实现挂起或卸掉设备,转入步骤1919;
步骤1919,正常返回;
步骤1920,错误返回。
零拷贝
图20给出零拷贝的处理流程图。零拷贝处理同步、异步的磁盘或网络数据传输,取得环形缓冲地址,进行双重翻译数据地址并加锁,并在缺页时通过Linux系统调用mmap()找到缺页的物理页,实现DMA读写,返回用户,解锁,释放环形缓冲。目的是尽量使用用户空间任务,不走内核,避免程序繁琐性能低。本图是功能0,1,2,3,4的实施例。具体流程如下:
步骤2001,零拷贝的初始化;
步骤2002,判断操作是否接受同步数据。若是,转入步骤2003,否则转入步骤2009;
步骤2003,从磁盘或网络得到数据缓冲区的地址,转入步骤2004;
步骤2004,实行双重翻译得到物理地址,并且加锁,转入步骤2005;
步骤2005,从环形缓冲管理器得到接受环地址,转入步骤2006;
步骤2006,缺页时通过mmap()找到缺页的物理页,然后转入步骤2007;
步骤2007,实行DMA读入,转入步骤2008;
步骤2008,返回用户,解锁,释放环形缓冲转入步骤2028;
步骤2009,判断操作是否送出同步数据。若是,转入步骤2010,否则转入步骤2016;
步骤2010,从用户得到数据缓冲区的地址,转入步骤2011;
步骤2011,实行双重翻译得到物理地址,并且加锁,转入步骤2012;
步骤2012,从环形缓冲管理器得到送出环地址,转入步骤2013;
步骤2013,缺页时通过mmap()找到缺页的物理页,转入步骤2014;
步骤2014,实行DMA写出,转入步骤2015;
步骤2015,返回磁盘或网络,解锁,释放环形缓冲,转入步骤2028;
步骤2016,判断操作是否处理事件。若是,转入步骤2017,否则转入步骤2020;
步骤2017,建立事件数据结构,转入步骤2018;
步骤2018,利用事件协议功能群里的函数读写事件数据,转入步骤2019;
步骤2019,取得下一事件,转入步骤2028;
步骤2020,判断操作是否接受异步数据。若是,转入步骤2021,否则转入步骤2024;
步骤2021,相同于接受同步数据的操作:双重翻译数据地址并加锁,取得接受方环形缓冲,并完善缺页,转入步骤2022;
步骤2022,aio_recv()接受网络数据;aio_recv_file()接受磁盘数据,转入步骤2023;
步骤2023,受到完成事件后发出通知,解锁,释放环形缓冲,转入步骤2028;
步骤2024,判断操作是否送出异步数据。若是,转入步骤2025,否则转入步骤2029;
步骤2025,相同于送出同步数据的操作:双重翻译数据地址并加锁,取得送出方环形缓冲,并完善缺页,转入步骤2026;
步骤2026,aio_send()接受网络数据;aio_send_file()接受磁盘数据,转入步骤2027;
步骤2027,受到完成事件后返发出通知,解锁,释放环形缓冲,转入步骤2028;
步骤2028,正常返回;
步骤2029,错误返回。
向上调用(UPCALL)
图21给出向上调用(UPCALL)的处理流程图。向上调用经由主机代理,利用共享内存传递讯号和负载给向上调用。向上调用使用广播器将讯号和负载传到一个以上的虚拟机。人工虚拟中断让虚拟机的虚拟驱动完成共享内存里的讯号、负载IO操作。具体流程如下:
步骤2101,向上调用的环形数列初始化,转入步骤2102;
步骤2102,主机代理取得共享环形数列OpenMMap(),转入步骤2103;
步骤2103,主机代理调用IO环形数列里的初始化环形数列,设定数据,转入步骤2104;
步骤2104,主机代理通知虚拟设备send_signal_event(),转入步骤2105;
步骤2105,虚拟设备把被广播的虚拟机迭代号设为0,转入步骤2106;
步骤2106,广播虚拟机迭代号=广播虚拟机迭代号+1,转入步骤2107;
步骤2107,通过KVM设定中断权限(高于Linux任务调度器),转入步骤2108;
步骤2108,调用IO环形数列里的队列并发处理,并可处理同步或异步广播,转入步骤2109;
步骤2109,虚拟设备中断被广播的虚拟机的IO驱动,转入步骤2110;
步骤2110,判断是否已完成驱动进程信息推入堆栈。若是,转入步骤2111,否则转入步骤2109;
步骤2111,将主机代理环形数列的内容拷入虚拟机驱动的环形数列,转入步骤2112;
步骤2112,判断是否拷贝完毕。若是,转入步骤2113,否则转入步骤2112;
步骤2113,将驱动进程信息从堆栈上弹回,使进程从中断点继续运行,转入步骤2114;
步骤2114,通知主机代理释放其环形数列转入步骤2115;
步骤2115,判断是否向虚拟机广播完毕。若是,转入步骤2116,否则转入步骤2106;
步骤2116,正常返回。
虚拟中断
图22是虚拟中断的特性说明。所谓虚拟中断,就表示可以是从管理层人为注入中断。但是以下的逻辑,也可用于VTx/SVM对于中断的处理,不一定是人为注入。这里为了说明细节,提到的是Intel VT-x的特性,但超微的SVM技术也有类似的操作。由于这个原因,虚拟中断是所有功能0-10的实施例。
值得注意的是,VTx/SVM使超级总线有了进一步增强性能的空间。譬如下列的步骤2203,当VMX非root操作变为root操作时,在VMCS设置虚拟机执行可控字段。凡虚拟机未加载处理的寄存器,可由VMM自行处理,以增加性能。
图22虚拟中断的处理流程图具体说明如下:
步骤2201,VMM/KVM的初始化(KVM bios),转入步骤2202;
步骤2202,判断操作是否VMExit。若是,转入步骤2203,否则转入步骤2212;
步骤2203,VMX非root操作变为root操作;在VMCS设置虚拟机执行可控字段:处理器状态=虚拟机状态+主机状态;凡虚拟机未加载处理的寄存器,可由VMM自行处理,以增加性能。转入步骤2204;
步骤2204,保存处理器状态;从主机状态加载处理器状态。转入步骤2205;
步骤2205,判断是否虚拟机执行NMI中断。若是,转入步骤2206,否则转入步骤2220;
步骤2206,判断是否为有关TPR的指令,若是,转入步骤2207,否则转入步骤2209;
步骤2207,判断是否该指令VMCS的TPR影子小于阈值,若是,转入步骤2208,否则转入步骤2220;
步骤2208,拦截该中断,然后再送出虚拟中断。转入步骤2220;
步骤2209,判断是中断窗的退出还是外在中断的退出,若是中断窗的退出,转入步骤2210,若是外在中断的退出,转入步骤2211;
步骤2210,设定中断窗的退出,虚拟机准备接受中断。转入步骤2220;
步骤2211,设定外部中断退出,虚拟机准备接受外部中断(不论虚拟机是否屏蔽了中断)。转入步骤2220;
步骤2212,判断操作是否VMEntry。若是,转入步骤2213,否则转入步骤2218;
步骤2213,发送虚拟中断:KVM注入事件/中断,转入步骤2214;
步骤2214,判断操作是否虚拟机准备好被中断。若是,转入步骤2216,否则转入步骤2215;
步骤2215,设定Interrupt-window退出,使虚拟机在下一个VMExit后准备接受中断。转入步骤2203;
步骤2216,虚拟机准备加载处理器状态,转入步骤2222;然而,在时序上,虚拟机代码有步骤2217的操作:
步骤2217,中断后,进入虚拟机代码。这是虚拟机的操作:VMX root操作变为非root操作;处理器状态=虚拟机状态+主机状态;凡VMM可处理的寄存器不必加载,可由VMM自行度量处理,以增加性能;
步骤2218,,判断操作是否超级调用(hypercall)。若是,转入步骤2219,否则转入步骤2222;
步骤2219,处理超级调用。
步骤2220,系统错误Exception处理,然后转入步骤2221;
步骤2221,判断是否VMS NM#6已设。若是,转入步骤2219,否则转入步骤2222;
步骤2222,其他中断操作,然后转入步骤2202。
IO环形缓冲管理器(IO Ring Buffer Manager)
图23给出IO环形缓冲管理器的处理流程图。本图是功能4的部分实施例。为了处理中断并发的问题,在环形缓冲结构之外,另有中断权限数列结构,每一数列元素包含权限数据与指向环形缓冲的指针。当中断发生,中断处理器迅速遍历该数列结构,按照中断的权限把数列元素向前提升。也就是说,如果对应该中断的数列元素权限小于或等于当前数列元素的权限,该元素的位置不动。否则中断的数列元素就要向前晋升。具体流程如下:
步骤2301,IO环形缓冲管理器的初始化,然后转入步骤2302;
步骤2302,判断操作是否为设定IO环形数列。若是,转入步骤2303,否则转入步骤2305;
步骤2303,Open_MMAP()从空池取得环形缓冲器中的一个数列,具有Mapbox结构,包括中断权限标示,身份号,送出地址,接受地址,偏差距,索引,指令,下一个Mapbox的指针,等等。然后转入步骤2304;
步骤2304,判断是否设定完毕所有Map-box结构元素。若是,转入步骤2318,否则转入步骤2304(轮循直到设定完毕);
步骤2305,判断操作是否为释放IO环形数列。若是,转入步骤2306,否则转入步骤2309;
步骤2306,将中断权限标示设为空。然后转入步骤2307;
步骤2307,判断是否清除完毕所有Map-box结构元素。若是,转入步骤2308,否则转入步骤2307(轮循直到清除完毕);
步骤2308,将IO环形数列(指针)置入空池。转入步骤2318;
步骤2309,判断操作是否为队列并发处理。若是,转入步骤2310,否则转入步骤2319;
步骤2310,判断是否下一数列中断权限标示为空。若是,转入步骤2312,否则转入步骤2311;
步骤2311,判断是否下一数列中断权限小于本数列中断权限。若是,转入步骤2313,否则转入步骤2314;
步骤2312,前进一数列元素,转入步骤2310;
步骤2313,本数列插元素入到下一数列元素之前,转入步骤2311;
步骤2314,调用半虚拟化基本功能,转入步骤2315;
步骤2315,判断是同步或异步。若是同步,转入步骤2316,若是异步,转入步骤2317;
步骤2316,调用半虚拟化基本功能按同步处理,转入步骤2318;
步骤2317,调用半虚拟化基本功能按异步处理,转入步骤2318;
步骤2318,正常返回;
步骤2319,错误返回。
ICCM设备管理器代理
图24给出ICCM设备管理器代理的处理流程图。它的初始化特性为:KVM利用openfirmware的bytecode监控(1)PIO/MMIO范围,(2)总线中断,(3)硬件树;当硬件启动时(bootloader and bootstrap),QEMU仿真硬件可用。
ICCM设备管理器代理的操作包括发现硬件、指定硬件、控制流量、合并媒体传输管道。其中,控制流量的操作,使用分流规则来分流从物理设备经过ABI的荷载。
本流程图为功能5的实施例。具体流程如下:
步骤2401,KVM利用openfirmware的bytecode监控(1)PIO/MMIO范围,(2)总线中断,(3)硬件树,然后转入步骤2402;
步骤2402,当硬件启动时(bootloader and bootstrap),QEMU仿真硬件可用。转入步骤2403;
步骤2403,超级总线设备管理器初始化。转入步骤2404;
步骤2404,判断操作是否为发现设备。若是,转入步骤2405,否则转入步骤2409;
步骤2405,判断是否为可虚拟化的设备(例如MMIO)。若是,转入步骤2406,否则转入步骤2404;
步骤2406,超级总线设备管理器调整该虚拟设备。转入步骤2407;
步骤2407,其它虚拟设备也相应调整(物理硬件利用分流方法导致这种调整)。
步骤2408,判断操作是否为指定设备。若是,转入步骤2409,否则转入步骤2412;
步骤2409,判断是否为可虚拟化的设备(例如MMIO)。若是,转入步骤2410,否则转入步骤2408;;
步骤2410,超级总线设备管理器设定该设备为虚拟设备。转入步骤2411;
步骤2411,公告该设备于广域(全局)VMMs;
步骤2412,判断操作是否为控制流量。若是,转入步骤2413,否则转入步骤2416;
步骤2413,使用分流规则来分流从物理设备经过ABI的荷载。转入步骤2414;
步骤2414,控制共享物理媒介的荷载流量。转入步骤2415;
步骤2415,将荷载传至虚拟机;
步骤2416,判断操作是否为合并通讯管道。若是,转入步骤2417,否则转入步骤2419;
步骤2417,操作合并通讯管道。转入步骤2418;
步骤2418,处理错误和服务品质QoS;
步骤2419,报错返回。
工作负载调整器(Workload Mediator)
图25给出工作负载调整器的组成框和流程的混合图。这是功能2,6,8的实施例。图中实现了3个策略管理器决策功能(PDFs)252,4个工作负载调整器策略执行点(PEPs)251。列述如下:
三个策略管理器PDFs是从不同规则库和/或性能消耗矩阵读出数据,以处理:(1)KVM自然规律决策功能、(2)个别事务性能决策功能、(3)整体事务性能决策功能;
四个工作负载调整器PEPs是从以上三个决策功能取得策略,以执行:(1)事务首度分层分路、(2)Linux任务调度器将事务重新分层分路、(3)处理过载、单点流量爆发(Burst)影响整体,同层聚合(same layeraggregation),及其它主机整体的问题,并且执行(4)按照资源消耗矩阵数据分派事务。
具体流程如下:
步骤2501,工作负荷调整器的初始化后,等待事务请求。一等到事务来到,就进行步骤2502;
步骤2502,判断是否要将事务初始静态分路分层。若是,转入步骤2503,否则转入步骤2508;
步骤2503,按照事务的KVM自然规律分层分路,转入步骤2504;
步骤2504,创建基树的节点,转入步骤2505;
步骤2505,基树基本遍历器创建节点,转入步骤2508;
以上步骤2503,2504和2505是第一个工作负载调整器策略执行点(PEP1)的逻辑;
方框2506是KVM自然规律策略库;
步骤2507,策略管理器处理KVM自然规律,转入步骤2508,也就是把KVM自然规律传递给第一个工作负载调整器策略执行点(PEP1);
以上方框2506和步骤2507组成第一个策略管理器决策功能(PDF1);
步骤2508,判断是否要将事务动态调度(schedule)。若是,转入步骤2509,否则转入步骤2513;
步骤2509,Linux任务调度器将事务重新分层分路,转入步骤2510;
步骤2510,调用基树基本遍历器删除单一事务旧基树的节点,再重新创建新节点,转入步骤2513;
以上步骤2509,和2510是第二个工作负载调整器策略执行点(PEP2)的逻辑;
方框2511为个别事务性能策略库,以下为一些样本策略:
策略1:DMA带宽使用不可过大
策略2:QEMU IO环形缓冲内存必须足够
策略3:最大并发量不否过大
步骤2512,策略管理器触发策略,经由资源消耗处理器读出矩阵数据,计算个别事务性能数据(详见资源消耗处理器读出器,图26),然后转入步骤2509,也就是把个别事务性能策略传递给第二个工作负载调整器策略执行点(PEP2);
以上方框2511和步骤2512组成第二个策略管理器决策功能(PDF2);
步骤2513,判断是否要消除整体主机性能障碍、调整负荷。若是,转入步骤2514,否则转入步骤2518;
步骤2514,利用Radix树的节点槽和标签特性,处理过载、单点Burst影响整体,同层聚合(same layer aggregation),及其它主机整体的问题。转入步骤2515;
步骤2515,调用基树基本遍历器删除一群事务旧基树的节点,再重新创建新节点,然后转入步骤2518;
以上步骤2514,和2515是第三个工作负载调整器策略执行点(PEP3)的逻辑;
方框2516为整体性能策略库,以下为一些样本策略:
策略1:工作负荷移向深层槽以增加效率。
策略2:只调度同层的事务。
策略3:事务尽量不必经历中断
步骤2517,策略管理器触发策略,经由资源消耗处理器读出矩阵数据,计算整体性能数据,然后转入步骤2514,也就是把个别事务性能策略传递给第三个工作负载调整器策略执行点(PEP3);
以上方框2516和步骤2517组成第三个策略管理器决策功能(PDF3);
步骤2518,判断是否要分派事务。若是,转入步骤2519,否则转入步骤2522;
步骤2519,从资源消耗处理器读出矩阵数据,转入步骤2520;
步骤2520,按照资源消耗矩阵数据分派事务,转入步骤2521;
步骤2521,启动事务(ICCM多路复用,向上调用,等等);
以上步骤2519,2520和2521是第四个工作负载调整器策略执行点(PEP4)的逻辑;
步骤2522,错误返回。
资源消耗处理器(Resource Consumption Handler)
图26给出资源消耗处理器的组成框和流程的混合图。本图是功能6的实施例。包含了两个策略执行点。左边的方框261是性能数据写入器的策略执行点PEP1,右边的方框262是性能数据读出器的策略执行点PEP2。
资源消耗处理器(Resource Consumption Handler),利用基树遍历器,写入与读出在资源消耗矩阵里的数据,综合个别事务规则库里的规则,决定以下策略的充分条件:
DMA带宽使用是否过大?
QEMU IO环形缓冲内存是否足够?
虚拟与非虚拟QEMU桥Out-of-band控制讯号是否太慢?
共享内存是否足够?
双重地址翻译GVA->GPA,GPA->HPA是否批处理时间过长?
V-TLB的缓存页miss hit次数是否太多?
KVM IRQfd中断注入是否批处理时间过长?
GPU祯缓存Out-of-band控制讯号是否太慢?
最大并发量是否过大?
线程、进程是否过长?
用户栈是否足够?
具体流程如下:
步骤2601,基树处理的写入器初始化,包括基树基本遍历器的初始化,和建立资源消耗矩阵池。转入步骤2602;
步骤2602,判断是否运行第一层:VM SCSI/NDIS功能,若是,转入步骤2603,否则转入步骤2604;
步骤2603,写入DMA带宽和QEMU IO环形缓冲内存大小。转入步骤2619;
步骤2604,判断是否运行第二层:QEMU功能。若是,转入步骤2605,否则转入步骤2606;
步骤2605,写入虚拟与非虚拟QEMU桥Out-of-band控制讯号时间和共享内存大小。转入步骤2619;
步骤2606,判断是否运行第三层:内核及虚拟驱动功能。若是,执行步骤2607,2608,2609,和2610,否则转入步骤2611;
步骤2607,写入完成双重地址翻译批处理的时间。转入步骤2619;
步骤2608,写入V-TLB的缓存页miss hit次数。转入步骤2619;
步骤2609,写入KVM IRQfd中断注入批处理的时间。转入步骤2619;
步骤2610,写入GPU祯缓存Out-of-band控制讯号时间和共享内存大小。转入步骤2619;
步骤2611,判断是否运行第四层:非虚拟驱动。若是,转入步骤2612,否则转入步骤2606;
步骤2612,写入最大并发量与总带宽。转入步骤2619;
步骤2613,判断是否运行第五层:物理机功能。若是,转入步骤2614,否则转入步骤2615;
步骤2614,写入线程、进程时间、用户栈大小。转入步骤2619;
步骤2615,判断整个事务是否已承诺(commit)。若是,转入步骤2616,否则转入步骤2621;
步骤2616,将整个事务经历的时间写入资源消耗矩阵。转入步骤2617;
步骤2617,将资源消耗矩阵的数据写入历史数据库。转入步骤2618;
步骤2618,删除基树的对应节点。转入步骤2619;
步骤2619,进入基树遍历器。转入步骤2620;
步骤2620,正常返回;
步骤2621,错误返回;
以上步骤2601至2621是性能数据写入器的策略执行点PEP1的逻辑。
步骤2622,单一事务策略管理器,或称之为PDF决策功能,经常检查策略库中的各种单一事务策略2624,2628,2630,2632,2634,2636,2638一旦策略符合规定,则交付图25中的PEP2来执行对应政策。为了实现这样的检查,每个策略会触发相应的PEP步骤2625,2627,2629,2631,2633,2635,2637,2639。
步骤2623,基树处理的读出器初始化,然后转入步骤2625;
步骤2624,检查策略“DMA带宽使用是否过大?”和“QEMU IO环形缓冲内存是否足够?”。然后转入步骤2625;
步骤2625;读出DMA带宽和QEMU IO环形缓冲内存大小。然后转入步骤2619;
步骤2626,检查策略“虚拟与非虚拟QEMU桥Out-of-band控制讯号是否太慢?”和“共享内存是否足够?”。然后转入步骤2627;
步骤2627;读出虚拟与非虚拟QEMU桥Out-of-band控制讯号时间和共享内存大小。然后转入步骤2619;
步骤2628,检查策略“V-MMU的双重地址翻译GVA->GPA,GPA->HPA是否批处理时间过长?”。然后转入步骤2629;
步骤2629;读出完成双重地址翻译批处理的时间。然后转入步骤2619;
步骤2630,检查策略“V-TLB的缓存页miss hit次数是否太多?”。然后转入步骤2631;
步骤2631;读出V-TLB的缓存页miss hit次数。然后转入步骤2619;
步骤2632,检查策略“KVM IRQfd中断注入是否批处理时间过长?”。然后转入步骤2633;
步骤2633;读出KVM IRQfd中断注入批处理的时间。然后转入步骤2619;
步骤2634,检查策略“GPU祯缓存Out-of-band控制讯号是否太慢?”和“共享内存是否足够?”。然后转入步骤2635;
步骤2635;读出GPU祯缓存Out-of-band控制讯号时间和共享内存大小。然后转入步骤2619;
步骤2636,检查策略“最大并发量是否过大?”和“总带宽是否足够?”。然后转入步骤2637;
步骤2637;读出最大并发量与总带宽。然后转入步骤2619;
步骤2638,检查策略“线程、进程是否过长?”和“用户栈是否足够?”。然后转入步骤2639;
步骤2639;读出线程、进程时间、用户栈大小。然后转入步骤2619;
以上步骤2622至2639是性能数据读出器的策略执行点PEP2的逻辑。
基树遍历器
图27给出基树遍历器的流程图。
基树的层数代表了代码层数,共五层:(第一层)VM SCSI/NDIS、(第二层)QEMU、(第三层)内核及虚拟驱动、(第四层)非虚拟驱动、(第五层)物理机。为事务生成64-bit键值,按代码层数建立基树路径,每个节点有8个槽,叶节点的8槽中五槽写入矩阵的5行的指针。
同层“群找(gang-lookup)”事务的树节点时,如果节点高度转成的层数小于所给层数,则可继续向下找到树节点,取得该节点树槽里的矩阵指针,把矩阵里的单元数据读出。
具体流程如下:
步骤2701,基树基本遍历器的初始化转入步骤2702;
步骤2702,判断是否建立事务的树节点。若是,转入步骤2703,否则转入步骤2705;
步骤2703,从资源消耗矩阵空池,取得一个空矩阵。转入步骤2704;
步骤2704,为事务生成64-bit键值,按层数建立基树路径,每个节点有8个槽,叶节点的8槽中五槽写入矩阵的5行的指针。转入步骤2723;
步骤2705,判断是否查找事务的树节点。若是,转入步骤2706,否则转入步骤2708;
步骤2706,向下找到树节点,取得该节点树槽里的矩阵指针。转入步骤2707;
步骤2707,把矩阵里的单元数据读出。转入步骤2723;
步骤2708,判断是否同层“群找(gang-lookup)”事务的树节点。若是,转入步骤2709,否则转入步骤2715;
步骤2709,向下找到树节点,且该节点为叶节点。转入步骤2710;
步骤2710,节点高度转成层数。转入步骤2711;
步骤2711,判断是否转成层数小于所给层数。若是,转入步骤2714,否则转入步骤2712;
步骤2712,继续向下找到树节点,取得该节点树槽里的矩阵指针。转入步骤2714;
步骤2713,把矩阵里的单元数据读出。转入步骤2714;
步骤2714,继续找下一个事务的基树路径。转入步骤2715;
步骤2715,判断是否遍历完毕。若是,转入步骤2723,否则转入步骤2709;
步骤2716,判断是否填充事务的树节点。若是,转入步骤2717,否则转入步骤2719;
步骤2717,向下找到树节点,取得该节点树槽里的矩阵指针。转入步骤2718;
步骤2718,把数据写入矩阵里的数据单元。转入步骤2723;
步骤2719,判断是否填充事务的树节点。若是,转入步骤2720,否则转入步骤2723;
步骤2720,向下找到树节点,取得该节点树槽里的矩阵指针。转入步骤2721;
步骤2721,把矩阵里的数据清除,将矩阵归还自由池。转入步骤2722;
步骤2722,把整个事务的基树路径清除。转入步骤2723;
步骤2723,正常返回;
步骤2724,错误返回。
具有策略及影子ISA/ABI的设备管理器
图28给出具有策略及影子ISA/ABI的设备管理器的流程图。初始化的特性为:KVM利用openfirmware的bytecode监控(1)PIO/MMIO范围,(2)总线中断,(3)硬件树;当硬件启动时(bootloader and bootstrap),QEMU仿真硬件可用。
操作包括发现硬件、指定硬件、控制流量、合并媒体传输管道。其中,控制流量的操作,使用策略执行点(PEP)来分流从物理设备经过ShadowABI来的荷载。合并媒体传输管道的操作,使用策略执行点(PEP)合并通讯管道。具体流程如下:
步骤2801,KVM利用openfirmware的bytecode监控(1)PIO/MMIO范围,(2)总线中断,(3)硬件树,转入步骤2802;
步骤2802,当硬件启动时(bootloader and bootstrap),QEMU仿真硬件可用,转入步骤2803;
步骤2803,超级总线基于决策功能PDF的设备管理器初始化转入步骤2804;;
步骤2804,判断操作是否发现设备。若是,转入步骤2805,否则转入步骤2808;
步骤2805,判断是否可虚拟化的设备,例如MMIO。若是,转入步骤2806,否则转入步骤2808;
步骤2806,超级总线设备管理器调整该虚拟设备。转入步骤2807;;
步骤2807,其它虚拟设备也相应调整(物理硬件利用分流方法导致这种调整;
步骤2808,判断操作是否指定设备。若是,转入步骤2809,否则转入步骤2812;
步骤2809,判断是否为可虚拟化的设备,例如MMIO。若是,转入步骤2810,否则转入步骤2812;
步骤2810,超级总线设备管理器设定该设备为虚拟设备。转入步骤2811;
步骤2811,公告该设备于广域(全局)VMMs。
步骤2812,判断操作是否控制流量。若是,转入步骤2813,否则转入步骤2815;
步骤2813,使用策略执行点(PEP)来分流从物理设备经过ShadowABI来的荷载转入步骤2814;
步骤2814,将荷载传至虚拟机;
步骤2815,判断操作是合并通讯管道。若是,转入步骤2816,否则转入步骤2818;
步骤2816,使用策略执行点(PEP)合并通讯管道。转入步骤2817;
步骤2817,处理错误和服务品质QoS;
步骤2818,报错返回。
安全设施操作
图29给出安全设施操作的组成框和流程的混合图。本图是功能8的实施例。图中包含两个模块。左边的方框291是USB模块操作;右边的方框292是产品系统操作。USB硬件模块制造商将Endorsement钥匙对(key pair)写入USB模块,并将公钥(Ekpub)信息交给软件制造商;软件制造商将USB模块硬件安装在产品服务器上,然后进行硬件模块设置、硬件模块升级、软件更新验证。
具体流程如下:
步骤2901,USB模块制造商:将Endorsement钥匙对(key pair)写入USB模块,并将公钥(Ekpub)信息交给软件制造商。转入步骤2902;
步骤2902,软件制造商将USB模块硬件安装在产品服务器上。转入步骤2904;
步骤2903,USB模块初始化。转入步骤2904;
步骤2904,判断操作是否模块设置。若是,转入步骤2905,否则转入步骤2906;
步骤2905,设置过期值、启动状态、激活状态、软件散列值、其它代码和数据。转入步骤2912;
步骤2906,判断操作是否模块升级。若是,转入步骤2907,否则转入步骤2908;
步骤2907,重置过期值、更软件散列值、其它代码和数据;
步骤2908,判断操作是否软件更新验证。若是,转入步骤2909,否则转入步骤2910;
步骤2909,服务器开机时将USB模块设定新的散列值。转入步骤2916;
步骤2910,报错返回。
以上步骤2901至2910为USB模块操作的逻辑。
步骤2911,超级总线安全设施初始化。转入步骤2912;
步骤2912,判断操作是否软件设置。若是,转入步骤2913,否则转入步骤2914;
步骤2913,将公钥Ekpub输入软件;
步骤2914,判断操作是否重算散列值。若是,转入步骤2915,否则转入步骤2916;
步骤2915,重算散列值;
步骤2916,判断操作是否软件更新验证。若是,转入步骤2917,否则转入步骤2919;
步骤2917,从USB模块读入新散列值。转入步骤2918;
步骤2918,从USB模块读入预存验证代码。转入步骤2919;
步骤2919,判断操作是否系统运行时验证成功。若是,转入步骤2921,否则转入步骤2920;
步骤2920,验证失败处理。转入步骤2921;
步骤2921,验证完毕。
以上步骤2911至2921为产品系统操作的逻辑。
超级总线性能服务框架(Performance Service Framework)
图30给出超级总线性能服务框架流程图。本图为功能9的实施例。
超级总线性能服务框架单一系统部署的方法可插入集群系统;
服务框架使用现成的性能工具sysstate、vmstate、oProfile;
服务框架使用性能优化器执行解决方案、负荷调整器搜集性能数据并调整负荷、瓶颈辨认器分析数据功能。
具体流程如下:
步骤3001,服务框架的初始化,转入3002;
步骤3002,判断服务是否部署(deploy)。若是,转入3003。否则,转入3012;
步骤3003,单一系统部署方法:部署分布式性能风貌的各式工作。转入3014;
步骤3004,判断是否部署现成工具。若是,转入3005。否则,转入3009;
步骤3005,判断是否部署分布式虚拟系统。若是,转入3007。否则,转入3006;
步骤3006,其它性能数据搜集方法,例如性能优化器;
步骤3007,从负荷调整器搜集性能数据;
步骤3008,性能数据库与负荷调整器互动;
步骤3009,判断是否性能风貌工具。若是,转入3010。否则,转入3011;
步骤3010,扩张的系统,包含、启用oProfile性能风貌工具;
步骤3011,扩张的系统,包含、启用Sysstat,vmstat等数据收集工具;
步骤3012,判断服务是否插入(plugin)集群系统。若是,转入3013。否则,转入3014;
步骤3013,将单一系统部署方法插入集群系统。
步骤3014,判断服务是否数据处理。若是,转入3015。否则,转入3020;
步骤3015,判断是收集数据或分析数据。若是收集数据,转入3016。若是分析数据,转入3018;
步骤3016,经由图形界面操作数据收集,转入3017;
步骤3017,瓶颈辨认器收集数据功能;
步骤3018,经由各式统计图形呈现界面操作数据分析,转入3019;
步骤3019,瓶颈辨认器分析数据功能;
步骤3020,其它协调性能基准(benchmarking)和性能风貌数据(profiling)的服务。
性能优化器(optimizer)
图31给出性能优化器的流程图。本图为功能9的实施例。
性能优化器针对辨认出的瓶颈,将已参数化的功能单元经由指令或图形界面来调整性能,其中,VMM特性参数经由虚拟RAM,CPU核数,IPI中断等调整、驱动参数经由虚拟BIOS,PCI总线,设备调整;
性能优化器经由工作负荷调整器的策略管理器来微调事务、经由参数与解决方案来宏调事务;
改进性能的解决方案包括Linux大页表、基于协议的API批处理,包括预先分配的内存链、聚合代码路径的调度器。
具体流程如下:
步骤3101,性能优化器的初始化,转入3102;
步骤3102,判断是否以指令条调整参数。若是,转入3103。否则,转入3109;
步骤3103,针对辨认出的瓶颈,将已参数化的功能单元经由指令条来调整性能。转入3104;
步骤3104,判断是否调整VMM特性参数。若是,转入3105。否则,转入3106;
步骤3105,经由虚拟RAM,CPU核数,IPI中断等调整;
步骤3106,判断是否调整驱动参数。若是,转入3107。否则,转入3108;
步骤3107,经由虚拟BIOS,PCI总线,设备调整;
步骤3108,经由其它参数调整;
步骤3109,判断是否以图形界面调整参数。若是,转入3110。否则,转入3112;
步骤3110,针对辨认出的瓶颈,将已参数化的功能单元经由图形界面来调整性能。转入3111;
步骤3111,图形界面调用指令条功能函数。转入3104;
步骤3112,判断服务是否使用解决方案改进性能。若是,转入3113。否则,转入3116;
步骤3113,执行解决方案(可能牺牲物理内存能力)。转入3114;
步骤3114,解决方案管理器执行解决方案;
步骤3115,解决方案库与解决方案管理器互动;一些样本的解决方案如下:
方案1:使用Linux大页表;
方案2:基于协议的API批处理,包括预先分配的内存链;
方案3:使用聚合codepath的调度器;
步骤3116,判断是否运行时的自动优化。若是,转入3117。否则,转入3121;
步骤3117,系统自动动态调节参数转入3118;
步骤3118,判断是否用宏调或微调。若是微调,转入3119。若是宏调,转入3121;
步骤3119,使用瓶颈辨认器。转入3120;
步骤3120,经由工作负荷调整器的策略管理器来微调事务。
步骤3121,经由参数和解决方案来调整;
步骤3122,返回错误。
瓶颈辨认器(Identifier)
图32给出瓶颈辨认器的流程图。瓶颈辨认器从集群或单一系统的资源消耗矩阵收集性能数据。瓶颈辨认器统计数据,辨别是否距离正常性能值差距太大,超出瓶颈库所规定的瓶颈范围。本图为功能9的实施例。具体流程如下:
步骤3201,瓶颈辨认器的初始化,转入3202;
步骤3202,设定功能为数据收集,或数据分析。转入3203;
步骤3203,利用现成工具取得性能风貌(profile)。转入3204;
步骤3204,判断系统是否属于集群。若是,转入3205。否则,转入3206;
步骤3205,考虑集群情况来处理。转入3207;
步骤3206,考虑单一系统情况来收集数据。转入3207;
步骤3207,从资源消耗处理器取数据;
步骤3208,资源消耗矩阵与资源消耗处理器互动;
步骤3209,判断功能是否为数据分析。若是,转入3210。否则,转入3215;
步骤3210,统计性能数据以辨明瓶颈。转入3211;
步骤3211,统计数据。转入3212;
步骤3212,判断是否距离正常性能值差距太大。若是,转入3213。否则,转入3212,继续辨认;
步骤3213,写入瓶颈数据库。转入3215;
步骤3214,瓶颈库接受/提供显示数据;一些样本的瓶颈如下:
瓶颈1:系统资源使用率过高。
瓶颈2:系统资源使用率过低。
瓶颈3:突发的峰值
瓶颈4:整体系统运行不正常
步骤3215,正常返回。
量身定制的Linux任务调度器
图33给出量身定制的Linux任务调度器的流程图。本图为功能9的实施例。调度方法套接机制,可配置半虚拟化调度器、实时调度器、网格调度器。按照需要,取代当前默认的Linux内核调度器CFS;又可调整单一事务路径上任务的优先级和时间片;对整体主机事务,如果过载,调整同层聚合的事务,或爆发流量的任务的优先级和时间片。否则,调整影响交通量的事务优先级和时间片。并运行任务切换逻辑。具体流程如下:
步骤3301,任务调度器的初始化,转入3302;
步骤3302,判断操作是否选择调度器。若是,转入3303。否则,转入3310;
步骤3303,判断是否有预设定的调度器。若是,转入3304。否则,转入3305;
步骤3304,判断是否半虚拟化调度器。若是,转入3206。否则,转入3207;
步骤3305,设定默认的调度器为当前Linux任务调度器(2.6版是CFS,Completely Fair Scheduler)。转入3310;
步骤3306,设定PV调度器(修改过适应Linux的BVT或CS或SEDF)。转入3310;
步骤3307,判断是否为高性能计算调度器。若是,转入3308。否则,转入3309;
步骤3308,设定实时系统调度器。转入3310;
步骤3309,设定网格调度器,或云计算调度器。转入3310;
步骤3310,判断操作是否设定硬件加速切换任务。若是,转入3311。否则,转入3312;
步骤3311,设定VT/SVM硬件技术加速任务切换。转入3312;
步骤3312,判断操作是否为执行单一事务调度请求。若是,转入3313。否则,转入3314,继续辨认;
步骤3313,调整单一事务路径的优先级和时间片。转入3314;
步骤3314,判断操作是否为执行整体主机事务调度请求。若是,转入3315。否则,转入3320;
步骤3315,判断是否负荷过载。若是,转入3316。否则,转入3319;
步骤3316,判断是否单一爆发流量(burst)影响整体。若是,转入3317。否则,转入3318;
步骤3317,调整burst事务的优先级和时间片。转入3320;
步骤3318,调整同层聚合的事务的优先级和时间片。转入3320;
步骤3319,调整影响交通量的事务优先级和时间片。转入3320;
步骤3320,运行选择的调度器。转入3302;
任务切换的运行逻辑
图34给出任务切换的运行逻辑的流程图。本图为功能9的实施例。且为一较为通用的任务切换逻辑,符合图33中各种调度器(例如CFS,Completely Fair Scheduler)的构成,且利用VTx/SVM技术加速切换,并按设置调整虚拟机的优先级。具体流程如下:
步骤3401,预先设置加速任务切换的VTx/SVM技术,及虚拟机优先级的调整。转入3402;
步骤3402,超级总线任务调度器堆栈的顶头。转入3403;
步骤3403,取得当前任务。转入3404;
步骤3404,取得上一个任务,并存入任务结构task_struct。转入3405;
步骤3405,将下一个任务置入超级总线任务调度器的堆栈。转入3406;
步骤3406,刷新缓存和TLB,切换页表。转入3407;
步骤3407,利用设置当前任务Set_Current_Task方法,把下一个虚拟机设成当前任务。转入3408。
步骤3408,执行当前任务。转入3409;
步骤3409,设定任务结构task_struct,并为量身定制的调度器(1)运行选择的调度方法,(2)利用VTx/SVM技术,加速切换。转入3410;
步骤3410,继续不闲置的任务(即虚拟机)或其它闲置的任务(若无虚拟机任务。转入3402,直到中断发生,继续另一轮循。
联网超级总线服务器(Network HyperBus Server)
图35给出联网超级总线服务器的流程图。本图为功能10的实施例。
若客户端为网络上其它的超级总线,则按照父子树状网结构连接其它超级总线;
若客户端为镜像数据库,则要从全局文件系统(GFS)查找镜像文件。若客户端为存储系统,则要从GFS查找存储地址。意即虚拟对象需要转化为物理对象,可用GFS Client向子网发送散列(hashing)数据(chunk index)和文件名。这种Map-Reduce的过程如下:首先,Master服务器送回chunkhandle,chunk地址。其次,GFS Client向子网发送chunk handle,byte范围。最后,影射子网主机文件chunk(Map),和送回查找到的数据(Reduce);
若客户端为网元、网络管理器,则按照多对一的关系连接虚拟网络管理器、网元管理器。
具体流程如下:
步骤3501,联网超级总线作为服务器的初始化,转入3502;
步骤3502,判断客户端是否网络上其它的超级总线。若是,转入3503,否则,转入3504;
步骤3503,按照父子树状网结构连接其它超级总线;
步骤3504,判断客户端是否镜像数据库。若是,转入3505,否则,转入3517;
步骤3505,从全局文件系统(GFS)查找镜像。转入3507;
步骤3506,全局文件系统(GFS:Hadoop+MapReduce)的初始化。转入3507;
步骤3507,判断是否V2P转变。若是,转入3508,否则,转入3513;
步骤3508,GFS Client向子网发送散列(hashing)数据(chunk index)和文件名。转入3509;
步骤3509,Master服务器送回chunk handle,chunk地址。转入3510;
步骤3510,GFS Client向子网发送chunk handle,byte范围。转入3511;
步骤3511,Map:子网主机文件chunk。转入3512;
步骤3512,Reduce:送回查找到的数据;
步骤3513,判断是否物理机器迁移。若是,转入3514,否则,转入3515;
步骤3514,仅在物理机器数据库中更新,不影响逻辑数据库;
步骤3515,判断是否Chunk服务器建立。若是,转入3516。否则,转入3521;
步骤3516,在Master服务器登记chunk handle,chunk地址;
步骤3517,判断客户端是否存储系统。若是,转入3518,否则,转入3519;
步骤3518,从GFS查找存储地址。转入3507;
步骤3519,判断客户端是否网元或网络管理器。若是,转入3520,否则,转入3521;
步骤3520,按照多对一的关系连接虚拟网络管理器、网元管理器;
步骤3521,返回错误。
管理中心和主机代理
图36给出管理中心和主机代理的组成框和流程的混合图。本图为功能10的实施例。方框361是管理中心,方框362是主机代理。
管理中心处理新建、修改、删除、查找用户及其管理员权限;
管理中心以图形界面和/或指令行处理用户与管理员的指令,包括管理用户对话期、虚拟机状态、虚拟机开关机;
管理中心管理节点、主机、虚拟机、虚拟存储、虚拟网络、荷载均衡策略、容错策略、超级总线服务框架,包括网络超级总线的全局文件系统(GFS)服务。
主机代理以超级总线传讯号的代码路径控制处理内网、虚拟机对事件的反应;
主机代理以超级总线传荷载的代码路径处理心跳、机器状态;
主机代理从Linux虚拟机服务器控制虚拟机,具体实现是通过Linux标准应用接口LibVirt控制红帽的企业虚拟机服务器,运软的QServer,和Xen虚拟机服务器。
具体流程如下:
步骤3601,管理中心初始化,转入3602;
步骤3602,判断操作是否管理用户。若是,转入3603,否则,转入3604;
步骤3603,新建、修改、删除、查找用户及其管理员权限。转入3622;
步骤3604,判断操作是否接受用户指令。若是,转入3605,否则,转入3616;
步骤3605,通过通讯协议解析用户指令。转入3606;
步骤3606,判断是否用户登录。若是,转入3607,否则,转入3609;
步骤3607,验证用户。转入3608;
步骤3608,对话期管理(例如超时)。转入3622;
步骤3609,判断是否开机、关机、挂起等指令。若是,转入3610,否则,转入3612;
步骤3610,主机服务。转入3612;
步骤3611,主机代理从Linux虚拟机服务器控制虚拟机。转入3620;
步骤3612,判断是否虚拟机状态指令。若是,转入3613,否则,转入3615;
步骤3613,通过主机代理,以超级总线数据路径处理心跳、机器状态。转入3614;
步骤3614,通过主机代理,以超级总线讯号控制处理内网、虚拟机对事件的反应。转入3620;
步骤3615,返回错误;
步骤3616,判断操作是否应用接口(API)。若是,转入3617,否则,转入3618;
步骤3617,检验根系统管理员权限。转入3609;
步骤3618,判断操作是否管理虚拟资源。若是,转入3619,否则,转入3621;
步骤3619,管理节点、主机、虚拟机、虚拟存储、虚拟网络、荷载均衡策略、容错策略、超级总线服务框架,包括网络超级总线的全局文件系统(GFS)服务。转入3620;
步骤3620,正常返回;
步骤3621,错误返回。
步骤3622,正常返回;
在实际的部署环境中,由于大部分的超级总线与虚拟机操作系统类型完全无关,所以只要有兼容于该操作系统的驱动,本方法可适用于Windows,Linux,Android,等等KVM所支持的任何操作系统。另外,对于超级总线方法应用在非Linux KVM的虚拟机监控器VMM(譬如Xen)的情况,超级总线方法里的任何实施方式,包括联网超级总线、性能服务框架、以及所包含的实施例的性能调整器、修改过的任务调度器,均被视为本专利所保护的对象。最后,本专利实施方式的抽象功能,也能涵盖英特尔和超微以外的x86虚拟化硬件技术,以及非x86的虚拟化硬件技术。
根据上述流程的描述可以得出,采用以上虚拟化的增加性能方法,一方面为企业提供了服务器虚拟化的技术,该技术是在超级总线的基础上,创建了性能服务的框架与联网超级总线,让管理员可管理服务器的虚拟化性能、并与远端联网的主机交流、因而可以实现管理远端的超级总线。另一方面,由于超级总线可以通过管理中心和主机代理连接任何虚拟化应用产品(譬如虚拟桌面VDI),故超级总线也可以使用为终端虚拟化的基础设施。
综上所述,本发明结合了当地超级总线本身的功能,联网超级总线的功能和性能服务框架,提供了一种企业级的虚拟化增加性能方法和附属的工具。
本发明为企业提供了一种实现KVM半虚拟化的方法,该方法是在Linux操作系统内核和KVM的基础上,创建了超级总线的各种组件,让管理员可经由性能服务框架增强Linux KVM的性能。另外,原有的KVM有限虚拟化方法,也仍然可以与超级总线的组件共同运行。
上述实施例是提供给熟悉本领域内的人员来实现或使用本发明的。熟悉本领域的人员可在不脱离本发明的发明思想的情况下,对上述实施例作出种种修改或变化,因而本发明的保护范围并不被上述实施例所限,而应该是符合权利要求书提到的技术特征的最大范围。
Claims (45)
1.一种总线架构,用于构建虚拟机监控器,其特征在于,所述总线架构包括:
总线,所述总线由Linux的基于内核虚拟机KVM实现,所述总线包括性能服务器、联网总线和本地总线,其中,所述本地总线包括至少一个下列功能性组件:代码多路径组件、内核组件、任务切换组件、跨虚拟机通讯组件、二进制接口管理组件、决策功能与策略执行点组件、二进制接口影子管理组件、和安全服务组件;所述本地总线的功能性组件还与Linux内核,VMM,半虚拟VMM互动,而由KVM的虚拟中断来提供用户空间、客户空间、内核空间的切换,因而虚拟机的驱动,可以以直通方式或非直通方式与共享或指定的硬件设备进行IO操作;所述联网总线基于本地总线的功能,调配远端其它主机的存储和虚拟机镜像,并能对在树状网络上的全部主机施行管理;所述性能服务器基于任务调度器、性能优化器、瓶颈辨认器、工作负荷调整器、和策略管理器,使管理员能自动或手动灵活调整系统的性能;
KVM组件,所述KVM组件包括虚拟计时器和虚拟中断;
客户空间组件,包括操作系统虚拟机的驱动程序;
用户空间组件,包括用户空间应用库、策略管理器、设备管理器、对外接口以及虚拟机管理器,其中,所述策略管理器使管理员能通过策略图形界面管理策略规则库里的规则,针对要决策的领域,传达到决策功能点;所述设备管理器实现虚拟设备的发现、指定、及设备数据流量和通道的控制;
半虚拟化组件,所述半虚拟化组件包括虚拟中断、IO驱动和直通传输装置,其中所述虚拟中断基于VMExit和VMEntry切换内核状态与客户空间状态,所述IO驱动绕过QEMU仿真代码解决同步和异步的IO讯号以及负载的传输,所述直通传输装置实现直通传输。
2.如权利要求1所述的总线架构,其特征在于,所述本地总线的各个功能性组件基于可选的虚拟服务消费端和虚拟服务生产端的架构实现,服务生产端针对各服务消费端的请求提供所述组件中的一个或者数个。
3.如权利要求2所述的总线架构,其特征在于,所述代码多路径组件建构多条可选的代码路径以进行讯号、负载的IO传输;所述多条可选的代码路径包括同步、异步、读、写的其中之一或者它们的组合。
4.如权利要求3所述的总线架构,其特征在于,所述多条可选的代码路径包括:
通过虚拟服务生产端与虚拟服务消费端完成IO的读写;直接通过主机的VIRTIO共享内存虚拟设备完成IO的读写;
有限半虚拟化方式;
非虚拟化方式。
5.如权利要求4所述的总线架构,其特征在于,所述VIRTIO共享内存虚拟设备包括:
VM-QEMU-KVM虚拟化空间状态切换机制;
AIO服务代理,利用Linux主机本身Block设备驱动向硬盘或网络读写数据,并选择使用缓存在读写完毕后利用守护进程通知Linux用户空间的任务。
6.如权利要求3所述的总线架构,其特征在于,所述代码多路径组件还包括物理媒介地址计算器所需要的双重翻译,把虚拟机虚拟地址翻译成虚拟机物理地址,再把虚拟机物理地址翻译成主机物理地址。
7.如权利要求3所述的总线架构,其特征在于,虚拟服务生产端把性能调整器的策略传递给虚拟文件系统,而且处理虚拟服务消费端传来的同步或异步IO指令,并利用Linux本身的IO功能完成任务。
8.如权利要求7所述的总线架构,其特征在于,所述虚拟服务消费端通过核心服务线程向虚拟服务生产端分派同步或异步读写请求;以及按工作负荷策略分流事务到不同路径。
9.如权利要求2所述的总线架构,其特征在于,所述内核组件将用户自定义的由内核组件实现的应用通过所述总线架构控制,并接入KVM。
10.如权利要求2所述的总线架构,其特征在于,所述任务切换组件在Linux任务和虚拟机任务之间切换,其中,Linux任务使用虚拟机的虚拟驱动,通过共享内存虚拟设备代替虚拟机任务完成讯号、负载的IO传输。
11.如权利要求2所述的总线架构,其特征在于,所述跨虚拟机通讯组件将Linux任务以向上调用的方式向多个虚拟机广播或多播以完成讯号、负载的IO传输。
12.如权利要求11所述的总线架构,其特征在于,所述向上调用的方式包括:
主机代理经由共享内存传递讯号和负载给向上调用;
向上调用使用广播器将讯号和负载传到一个以上的虚拟机;
人工虚拟中断让虚拟机的虚拟驱动完成共享内存里的讯号、负载IO操作。
13.如权利要求12所述的总线架构,其特征在于,所述主机代理经由共享内存传递讯号和负载给向上调用包括:
设定与释放IO环形缓冲管理器;
操作IO环形缓冲管理器队列,利用另一中断权限数列为辅,遍历该数列时把权限高的数列元素向前提升。
14.如权利要求2所述的总线架构,其特征在于,所述二进制接口管理组件针对应用二进制接口的被管理对象,该被管理对象为指令集架构ISA或者应用程序二进制接口ABI,当该被管理对象需要读/写真实硬件设备荷载时,使用所述总线架构的共享物理媒体,经由虚拟机监控器VMM/KVM承接IO荷载,与虚拟机的虚拟设备互动,用流量控制器来控制数据流量、带宽、容错,合并流媒体输送管道以保证服务品质QoS。
15.如权利要求14所述的总线架构,其特征在于,所述二进制接口管理组件执行:
通过KVM利用openfirmware的bytecode监控:
PIO/MMIO范围,
总线中断,
硬件树;
当硬件启动时,使用QEMU仿真硬件;
发现硬件、指定硬件、控制流量、合并媒体传输管道,其中控制流量使用分流规则来分流从物理设备经过ABI的荷载。
16.如权利要求2所述的总线架构,其特征在于,所述决策功能与策略执行点组件选择并部署决策点和执行点,预设决策功能、动态部署并传达策略到策略执行点,其中所述选择并部署决策点和执行点、动态部署并传达策略到策略执行点是基于事件触发。
17.如权利要求16所述的总线架构,其特征在于,所述决策功能与策略执行点组件包括工作负荷调整器,工作负荷调整器包括:
三个策略管理器,从不同规则库和/或性能消耗矩阵读出数据,执行:
KVM自然规律决策功能;
个别事务性能决策功能;
整体事务性能决策功能;
四个工作负载调整器,从所述三个决策功能取得策略,执行:
事务首度分层分路;
利用Linux任务调度器将事务重新分层分路;
处理过载、单点流量爆发影响整体,同层聚合;
按照资源消耗矩阵数据分派事务。
18.如权利要求17所述的总线架构,其特征在于,所述个别事务性能决策功能包括:
使用资源消耗处理器,利用基树遍历器写入与读出在资源消耗矩阵里的数据,综合个别事务规则库里的规则,决定以下策略的充分条件:
DMA带宽使用是否过大;
QEMU IO环形缓冲内存是否足够;
虚拟与非虚拟QEMU桥Out-of-band控制讯号是否太慢;
共享内存是否足够;
双重地址翻译,即客户虚拟地址->客户物理地址、客户物理地址->主机物理地址是否批处理时间过长;
V-TLB的缓存页miss hit次数是否太多;
KVM IRQfd中断注入是否批处理时间过长;
GPU帧缓存Out-of-band控制讯号是否太慢;
最大并发量是否过大;
线程、进程是否过长;
用户栈是否足够。
19.如权利要求18所述的总线架构,其特征在于,所述基树遍历器读写五层代码的性能数据,包括:
第一层VM SCSI/NDIS、第二层QEMU、第三层内核及虚拟驱动、第四层非虚拟驱动、第五层物理机;
所述基树遍历器为事务生成64-bit键值,按代码层数建立基树路径,每个节点有8个槽,叶节点的8槽中5槽写入矩阵的5行的指针;
所述基树遍历器同层群找事务的树节点时,如果节点高度转成的层数小于所给层数,则可继续向下找到树节点,取得该节点树槽里的矩阵指针,把矩阵里的单元数据读出。
20.如权利要求2所述的总线架构,其特征在于,所述二进制接口影子管理组件使用决策功能与策略执行点组件来管理虚拟设备,所述二进制接口影子管理组件与各个虚拟机互动,一次完成多次的IO读写。
21.如权利要求20所述的总线架构,其特征在于,所述二进制接口影子管理组件执行:
KVM利用openfirmware的bytecode监控:
PIO/MMIO范围,
总线中断,
硬件树;
当硬件启动时使用QEMU仿真硬件;
发现硬件、指定硬件、控制流量、合并媒体传输管道,其中控制流量使用策略执行点来分流从物理设备经过Shadow ABI来的荷载,合并媒体传输管道使用策略执行点合并通讯管道。
22.如权利要求2所述的总线架构,其特征在于,所述安全服务组件基于散列值实施主机本地总线与周边设备、主机本地总线与主机应用产品、或者主机本地总线与远程产品的身份验证。
23.如权利要求22所述的总线架构,其特征在于,所述安全服务组件实现为:
USB硬件模块制造商将签注密钥对写入USB模块,并将公钥信息交给软件制造商;
软件制造商将USB模块硬件安装在产品服务器上,然后进行硬件模块设置、硬件模块升级、软件更新验证。
24.如权利要求1所述的总线架构,其特征在于,所述性能服务器包括工作负载调整器,工作负载调整器使用基树数学模式,将在代码路径上的各个执行点收集到的数据加以应用,控制总线架构的功能实施时的性能,并结合统计方法进行性能的最大优化。
25.如权利要求24所述的总线架构,其特征在于,所述性能服务器将性能服务框架单一系统部署的方法插入集群系统;使用现成的性能工具sysstate、vmstate、oProfile;使用性能优化器执行解决方案、工作负荷调整器搜集性能数据并调整负荷、瓶颈辨认器分析数据功能。
26.如权利要求25所述的总线架构,其特征在于,所述性能优化器针对辨认出的瓶颈,将已参数化的功能单元经由指令或图形界面来调整性能,其中,VMM特性参数经由虚拟RAM、CPU核数、IPI中断调整,驱动参数经由虚拟BIOS、PCI总线、设备调整;
经由工作负荷调整器的策略管理器来微调事务、经由所述性能优化器通过参数调整与解决方案来宏调事务;
经由解决方案来改进性能,所述解决方案包括:使用Linux大页表;基于协议的API批处理,包括预先分配的内存链;使用聚合代码路径的调度器。
27.如权利要求26所述的总线架构,其特征在于,所述瓶颈辨认器从集群或单一系统的资源消耗矩阵收集性能数据;并统计数据,辨别是否距离正常性能值差距太大,超出瓶颈库所规定的瓶颈范围。
28.如权利要求27所述的总线架构,其特征在于,Linux任务调度器执行:
调度方法套接机制,配置半虚拟化调度器、实时调度器、网格调度器,按照需要,取代当前默认的Linux内核调度器CFS;
调整单一事务路径上任务的优先级和时间片;
对整体主机事务,如果过载,调整同层聚合的事务,或爆发流量的任务的优先级和时间片,否则调整影响交通量的事务优先级和时间片;
运行任务切换逻辑。
29.如权利要求28所述的总线架构,其特征在于所述运行任务切换逻辑包括:
提供各种调度器的共通逻辑,包括通用任务切换逻辑,Linux CFS调度器、半虚拟化调度器、实时调度器、网格调度器的选择,且利用VTx/SVM技术加速切换,并按设置调整虚拟机的优先级。
30.如权利要求1所述的总线架构,其特征在于,所述半虚拟化组件的虚拟中断包括:
人工产生的中断;
VMM自行处理虚拟机未加载处理的虚拟机控制块VMCS寄存器;
超级调用Hypercall。
31.如权利要求1所述的总线架构,其特征在于,所述直通传输装置应用零拷贝,处理同步、异步的磁盘或网络数据传输,双重翻译数据地址并加锁,取得送出方环形缓冲,并在缺页时通过Linux系统调用mmap()找到缺页的物理页,实现直接内存访问读写,返回用户,解锁,释放环形缓冲。
32.如权利要求1所述的总线架构,其特征在于,所述IO驱动
接受虚拟设备的IO指令,读写共享内存、磁盘、网络数据;接受非设备的IO指令,读写共享内存、磁盘、网络数据;
提供VirtIO接口,利用分流实现直通传输,或利用TCP/UDP-IP-over-Infiniband完成通讯;
挂起及卸除设备。
33.如权利要求1所述的总线架构,其特征在于,所述联网总线
融合虚拟化和电信管理网络标准;
融合虚拟化与Hadoop/MapReduce的全局文件系统;
利用标准接口连接虚拟机服务器;
构建网络管理器,该网络管理器管理多个主机上的虚拟机,多个主机群。
34.如权利要求1所述的总线架构,其特征在于,所述联网总线提供的服务包括:
若客户端为网络上其它的总线,则按照父子树网状结构连接其它总线;
若客户端为镜像数据库,则要从全局文件系统GFS查找镜像文件;若客户端为存储系统,则要从GFS查找存储地址,意即虚拟对象需要转化为物理对象,可用GFS Client向子网发送散列数据块指数和文件名,过程如下:首先,Master服务器送回数据块柄,数据块地址,其次,GFS Client向子网发送数据块柄,字节范围,最后,影射子网主机文件数据块和送回查找到的数据;
若客户端为网元、网络管理器,则按照多对一的关系连接虚拟网络管理器、网元管理器。
35.如权利要求34所述的总线架构,其特征在于,
管理中心处理新建、修改、删除、查找用户及其管理员权限;
管理中心以图形界面和/或指令行处理用户与管理员的指令,包括管理用户对话期、虚拟机状态、虚拟机开关机;
管理中心管理节点、主机、虚拟机、虚拟存储、虚拟网络、荷载均衡策略、容错策略、超级总线服务框架,包括网络超级总线的全局文件系统服务。
36.如权利要求34所述的总线架构,其特征在于,
主机代理以总线传讯号的代码路径控制处理内网、虚拟机对事件的反应;
主机代理以总线传荷载的代码路径处理心跳、机器状态;
主机代理从Linux虚拟机服务器控制虚拟机,具体实现是通过Linux标准应用接口LibVirt控制红帽的企业虚拟机服务器,运软的QServer,和Xen虚拟机服务器。
37.一种通过总线架构构建虚拟机监控器的方法,将Linux的基于内核虚拟机KVM转化为虚拟机监控器,所述方法包括:
构建总线,所述总线由Linux的基于内核虚拟机KVM实现,所述总线包括性能服务器、联网总线和本地总线,其中,所述本地总线包括至少一个下列功能性组件:代码多路径组件、内核组件、任务切换组件、跨虚拟机通讯组件、二进制接口管理组件、决策功能与策略执行点组件、二进制接口影子管理组件、和安全服务组件;所述本地总线的功能性组件还与Linux内核,VMM,半虚拟VMM互动,而由KVM的虚拟中断来提供用户空间、客户空间、内核空间的切换,因而虚拟机的驱动,可以以直通方式或非直通方式与共享或指定的硬件设备进行IO操作;所述联网总线基于本地总线的功能,调配远端其它主机的存储和虚拟机镜像,并能对在树状网络上的全部主机,施行管理;所述性能服务器基于任务调度器、性能优化器、瓶颈辨认器、工作负荷调整器、和策略管理器,使管理员能自动或手动灵活调整系统的性能;
构建KVM组件,所述KVM组件包括虚拟计时器和虚拟中断;
构建客户空间组件,所述客户空间组件包括操作系统虚拟机的驱动程序;
构建用户空间组件,所述用户空间组件包括用户空间应用库、策略管理器、设备管理器、对外接口以及虚拟机管理器,其中,所述策略管理器使管理员能通过策略图形界面管理策略规则库里的规则,针对要决策的领域,传达到决策功能点;所述设备管理器实现虚拟设备的发现、指定、及设备数据流量和通道的控制;
构建半虚拟化组件,所述半虚拟化组件包括虚拟中断、IO驱动和直通传输装置,其中所述虚拟中断基于VMExit和VMEntry切换内核状态与客户空间状态,所述IO驱动绕过QEMU仿真代码解决同步和异步的IO讯号以及负载的传输,所述直通传输装置实现直通传输。
38.一种性能服务框架的实现方法,其特征在于,包括
性能服务器将性能服务框架单一系统部署的方法插入集群系统;
使用现成的性能工具sysstate、vmstate、oProfile;
使用性能优化器执行解决方案、工作负荷调整器搜集性能数据并调整负荷、瓶颈辨认器分析数据功能;
所述性能服务框架运行在以下组件上:
总线,由Linux的基于内核虚拟机KVM实现,包括性能服务器、联网总线和本地总线,其中,所述本地总线包括至少一个下列功能性组件:代码多路径组件、内核组件、任务切换组件、跨虚拟机通讯组件、二进制接口管理组件、决策功能与策略执行点组件、二进制接口影子管理组件、和安全服务组件;所述本地总线的功能性组件还与Linux内核,VMM,半虚拟VMM互动,而由KVM的虚拟中断来提供用户空间、客户空间、内核空间的切换,因而虚拟机的驱动,可以以直通方式或非直通方式与共享或指定的硬件设备进行IO操作;所述联网总线基于本地总线的功能,调配远端其它主机的存储和虚拟机镜像,并能对在树状网络上的全部主机施行管理;所述性能服务器基于任务调度器、性能优化器、瓶颈辨认器、工作负荷调整器、和策略管理器,使管理员能自动或手动灵活调整系统的性能;
KVM组件,所述KVM组件包括虚拟计时器和虚拟中断;
客户空间组件,包括操作系统虚拟机的驱动程序;
用户空间组件,包括用户空间应用库、策略管理器、设备管理器、对外接口以及虚拟机管理器,其中,所述策略管理器使管理员能通过策略图形界面管理策略规则库里的规则,针对要决策的领域,传达到决策功能点;所述设备管理器实现虚拟设备的发现、指定、及设备数据流量和通道的控制;
半虚拟化组件,所述半虚拟化组件包括虚拟中断、IO驱动和直通传输装置,其中所述虚拟中断基于VMExit和VMEntry切换内核状态与客户空间状态,所述IO驱动绕过QEMU仿真代码解决同步和异步的IO讯号以及负载的传输,所述直通传输装置实现直通传输。
39.如权利要求38所述的性能服务框架的实现方法,其特征在于,所述性能优化器针对辨认出的瓶颈,将已参数化的功能单元经由指令或图形界面来调整性能,其中,VMM特性参数经由虚拟RAM、CPU核数、IPI中断调整,驱动参数经由虚拟BIOS、PCI总线、设备调整;
经由工作负荷调整器的策略管理器来微调事务、经由所述性能优化器改变参数与解决方案来宏调事务;
经由解决方案来改进性能,所述解决方案包括:使用Linux大页表;基于协议的API批处理,包括预先分配的内存链;使用聚合代码路径的调度器。
40.如权利要求39所述的性能服务框架的实现方法,其特征在于,所述瓶颈辨认器从集群或单一系统的资源消耗矩阵收集性能数据;并统计数据,辨别是否距离正常性能值差距太大,超出瓶颈库所规定的瓶颈范围。
41.如权利要求38所述的性能服务框架的实现方法,其特征在于,工作负荷调整器包括:
三个策略管理器,从不同规则库和/或性能消耗矩阵读出数据,执行:
KVM自然规律决策功能;
个别事务性能决策功能;
整体事务性能决策功能;
四个工作负载调整器,从所述三个决策功能取得策略,执行:
事务首度分层分路;
利用Linux任务调度器将事务重新分层分路;
处理过载、单点流量爆发影响整体,同层聚合;
按照资源消耗矩阵数据分派事务。
42.如权利要求41所述的性能服务框架的实现方法,其特征在于,所述个别事务性能决策功能包括:
使用资源消耗处理器,利用基树遍历器写入与读出在资源消耗矩阵里的数据,综合个别事务规则库里的规则,决定以下策略的充分条件:
DMA带宽使用是否过大;
QEMU IO环形缓冲内存是否足够;
虚拟与非虚拟QEMU桥Out-of-band控制讯号是否太慢;
共享内存是否足够;
双重地址翻译客户虚拟地址>客户物理地址,客户物理地址->主机物理地址是否批处理时间过长;
V-TLB的缓存页miss hit次数是否太多;
KVM IRQfd中断注入是否批处理时间过长;
GPU帧缓存Out-of-band控制讯号是否太慢;
最大并发量是否过大;
线程、进程是否过长;
用户栈是否足够。
43.如权利要求42所述的性能服务框架的实现方法,其特征在于,所述基树遍历器读写五层代码的性能数据,包括:
第一层VM SCSI/NDIS、第二层QEMU、第三层内核及虚拟驱动、第四层非虚拟驱动、第五层物理机;
所述基树遍历器为事务生成64-bit键值,按代码层数建立基树路径,每个节点有8个槽,叶节点的8槽中5槽写入矩阵的5行的指针;
所述基树遍历器同层群找事务的树节点时,如果节点高度转成的层数小于所给层数,则可继续向下找到树节点,取得该节点树槽里的矩阵指针,把矩阵里的单元数据读出。
44.如权利要求41所述的性能服务框架的实现方法,其特征在于,Linux任务调度器执行:
调度方法套接机制,配置半虚拟化调度器、实时调度器、网格调度器,按照需要,取代当前默认的Linux内核调度器CFS;
调整单一事务路径上任务的优先级和时间片;
对整体主机事务,如果过载,调整同层聚合的事务,或爆发流量的任务的优先级和时间片,否则调整影响交通量的事务优先级和时间片;
运行任务切换逻辑。
45.如权利要求44所述的性能服务框架的实现方法,其特征在于,所述运行任务切换逻辑包括:
提供各种调度器的共通逻辑,包括通用任务切换逻辑,Linux CFS调度器、半虚拟化调度器、实时调度器、网格调度器的选择,且利用VTx/SVM技术加速切换,并按设置调整虚拟机的优先级。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201010183844.6A CN102262557B (zh) | 2010-05-25 | 2010-05-25 | 通过总线架构构建虚拟机监控器的方法及性能服务框架 |
US13/115,341 US8832688B2 (en) | 2010-05-25 | 2011-05-25 | Kernel bus system with a hyberbus and method therefor |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201010183844.6A CN102262557B (zh) | 2010-05-25 | 2010-05-25 | 通过总线架构构建虚拟机监控器的方法及性能服务框架 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102262557A CN102262557A (zh) | 2011-11-30 |
CN102262557B true CN102262557B (zh) | 2015-01-21 |
Family
ID=45009194
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201010183844.6A Expired - Fee Related CN102262557B (zh) | 2010-05-25 | 2010-05-25 | 通过总线架构构建虚拟机监控器的方法及性能服务框架 |
Country Status (2)
Country | Link |
---|---|
US (1) | US8832688B2 (zh) |
CN (1) | CN102262557B (zh) |
Families Citing this family (228)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8065161B2 (en) | 2003-11-13 | 2011-11-22 | Hospira, Inc. | System for maintaining drug information and communicating with medication delivery devices |
US9123077B2 (en) | 2003-10-07 | 2015-09-01 | Hospira, Inc. | Medication management system |
US20060167838A1 (en) * | 2005-01-21 | 2006-07-27 | Z-Force Communications, Inc. | File-based hybrid file storage scheme supporting multiple file switches |
WO2018045179A1 (en) * | 2016-09-02 | 2018-03-08 | Frederick Flitsch | Customized smart devices and touchscreen devices and cleanspace manufacturing methods to make them |
CA2666509C (en) | 2006-10-16 | 2017-05-09 | Hospira, Inc. | System and method for comparing and utilizing activity information and configuration information from multiple medical device management systems |
US8682916B2 (en) | 2007-05-25 | 2014-03-25 | F5 Networks, Inc. | Remote file virtualization in a switched file system |
US10997531B2 (en) | 2007-09-11 | 2021-05-04 | Ciambella Ltd. | System, method and graphical user interface for workflow generation, deployment and/or execution |
US9237100B1 (en) | 2008-08-06 | 2016-01-12 | Marvell Israel (M.I.S.L.) Ltd. | Hash computation for network switches |
US8271106B2 (en) | 2009-04-17 | 2012-09-18 | Hospira, Inc. | System and method for configuring a rule set for medical event management and responses |
US9529694B2 (en) * | 2009-09-14 | 2016-12-27 | Oracle International Corporation | Techniques for adaptive trace logging |
US9195500B1 (en) | 2010-02-09 | 2015-11-24 | F5 Networks, Inc. | Methods for seamless storage importing and devices thereof |
US10474875B2 (en) | 2010-06-07 | 2019-11-12 | Affectiva, Inc. | Image analysis using a semiconductor processor for facial evaluation |
US9229757B2 (en) | 2010-07-19 | 2016-01-05 | International Business Machines Corporation | Optimizing a file system interface in a virtualized computing environment |
US9286298B1 (en) | 2010-10-14 | 2016-03-15 | F5 Networks, Inc. | Methods for enhancing management of backup data sets and devices thereof |
US8756424B2 (en) * | 2010-11-30 | 2014-06-17 | Marvell Israel (M.I.S.L) Ltd. | Load balancing hash computation for network switches |
US20120198431A1 (en) * | 2011-01-30 | 2012-08-02 | Lin Qiangmin | Method for upgrading hypervisor component and computer system |
WO2012162687A1 (en) | 2011-05-26 | 2012-11-29 | Candi Controls, Inc. | System |
EP2732397B1 (en) * | 2011-07-12 | 2020-02-26 | Hewlett-Packard Development Company, L.P. | Computing device including a port and a guest domain |
GB2507015B (en) * | 2011-08-30 | 2020-04-29 | Hewlett Packard Development Co | Communication with a virtual trusted runtime BIOS |
ES2959510T3 (es) | 2011-10-21 | 2024-02-26 | Icu Medical Inc | Sistema de actualización de dispositivos médicos |
US20130145363A1 (en) * | 2011-12-05 | 2013-06-06 | Ravello Systems Ltd. | System and method thereof for running an unmodified guest operating system in a para-virtualized environment |
KR101751936B1 (ko) * | 2011-12-15 | 2017-07-12 | 한국전자통신연구원 | 호스트 기반 단말 가상화 환경에서 공유 메모리를 이용한 입출력 디바이스 가상화 장치 및 방법 |
US9471243B2 (en) | 2011-12-15 | 2016-10-18 | Veritas Technologies Llc | Dynamic storage tiering in a virtual environment |
CN104067218B (zh) * | 2011-12-28 | 2019-06-18 | 英特尔公司 | 分配存储器访问控制策略 |
CN102567217B (zh) * | 2012-01-04 | 2014-12-24 | 北京航空航天大学 | 一种面向mips平台的内存虚拟化方法 |
US9020912B1 (en) | 2012-02-20 | 2015-04-28 | F5 Networks, Inc. | Methods for accessing data in a compressed file system and devices thereof |
US10013269B2 (en) * | 2012-02-22 | 2018-07-03 | Vmware, Inc. | Component framework for deploying virtual machines using service provisioning information |
US9262195B2 (en) * | 2012-02-28 | 2016-02-16 | Red Hat Israel, Ltd. | Manageable external wake of virtual machines |
CN102750309B (zh) * | 2012-03-19 | 2015-06-17 | 南京大学 | 一种基于Hadoop的并行化SVM求解方法 |
CN102662639A (zh) * | 2012-04-10 | 2012-09-12 | 南京航空航天大学 | 一种基于Mapreduce的多GPU协同计算方法 |
CN102662777A (zh) * | 2012-04-28 | 2012-09-12 | 浪潮电子信息产业股份有限公司 | 一种基于kvm虚拟机的客户机之间高速通信的方法 |
GB2502288A (en) * | 2012-05-22 | 2013-11-27 | Ibm | Modifying the order of checking virtual machines for cached disc data |
US9571379B2 (en) * | 2012-06-12 | 2017-02-14 | Nec Corporation | Computer system, communication control server, communication control method, and program |
CN103546504B (zh) * | 2012-07-11 | 2017-12-12 | 华耀(中国)科技有限公司 | 基于应用层隔离的负载均衡设备虚拟化系统及方法 |
CN102890643B (zh) * | 2012-07-26 | 2015-01-21 | 上海交通大学 | 基于应用效果即时反馈的显卡虚拟化下的资源调度系统 |
CN102831016B (zh) * | 2012-08-01 | 2014-10-01 | 浪潮(北京)电子信息产业有限公司 | 一种云计算的物理机回收方法及其装置 |
US20140059552A1 (en) | 2012-08-24 | 2014-02-27 | International Business Machines Corporation | Transparent efficiency for in-memory execution of map reduce job sequences |
CN103828326B (zh) * | 2012-09-07 | 2016-08-17 | 运软网络科技(上海)有限公司 | 基于交付点的实时资源供应流程控制系统和方法 |
JP6310461B2 (ja) * | 2012-09-07 | 2018-04-11 | オラクル・インターナショナル・コーポレイション | 分散型データグリッドクラスタにおけるスケーラブルなメッセージバスをサポートするシステムおよび方法 |
EP2709006A1 (en) * | 2012-09-14 | 2014-03-19 | Alcatel Lucent | Peripheral interface for residential IaaS |
US9519501B1 (en) | 2012-09-30 | 2016-12-13 | F5 Networks, Inc. | Hardware assisted flow acceleration and L2 SMAC management in a heterogeneous distributed multi-tenant virtualized clustered system |
US8875227B2 (en) * | 2012-10-05 | 2014-10-28 | International Business Machines Corporation | Privacy aware authenticated map-reduce |
US9223598B1 (en) * | 2012-11-26 | 2015-12-29 | Parallels IP Holdings GmbH | Displaying guest operating system statistics in host task manager |
US9262363B2 (en) * | 2012-11-30 | 2016-02-16 | Ciena Corporation | PCI and PCI express virtual hot plug systems and methods |
CN103856546B (zh) * | 2012-12-07 | 2017-06-16 | 财团法人资讯工业策进会 | 数据同步系统以及数据同步方法 |
US9063767B2 (en) | 2012-12-20 | 2015-06-23 | Hewlett-Packard Development Company, L.P. | Configuration space with pseudo device identifier |
US11462437B2 (en) | 2013-01-05 | 2022-10-04 | Frederick A. Flitsch | Customized smart devices and touchscreen devices and cleanspace manufacturing methods to make them |
US12189828B2 (en) | 2013-01-05 | 2025-01-07 | Frederick A. Flitsch | Customized smart devices and touchscreen devices and cleanspace manufacturing methods to make them |
US10375155B1 (en) | 2013-02-19 | 2019-08-06 | F5 Networks, Inc. | System and method for achieving hardware acceleration for asymmetric flow connections |
US9554418B1 (en) | 2013-02-28 | 2017-01-24 | F5 Networks, Inc. | Device for topology hiding of a visited network |
US9268730B2 (en) * | 2013-02-28 | 2016-02-23 | Oracle International Corporation | Computing rack-based virtual backplane for field replaceable units |
US10338653B2 (en) | 2013-02-28 | 2019-07-02 | Oracle International Corporation | Power delivery to rack-mounted field replaceable units using AC and/or DC input power sources |
US9261922B2 (en) | 2013-02-28 | 2016-02-16 | Oracle International Corporation | Harness for implementing a virtual backplane in a computing rack for field replaceable units |
US9936603B2 (en) | 2013-02-28 | 2018-04-03 | Oracle International Corporation | Backplane nodes for blind mate adapting field replaceable units to bays in storage rack |
US9335786B2 (en) | 2013-02-28 | 2016-05-10 | Oracle International Corporation | Adapter facilitating blind-mate electrical connection of field replaceable units with virtual backplane of computing rack |
US9256565B2 (en) | 2013-02-28 | 2016-02-09 | Oracle International Corporation | Central out of band management of field replaceable united of computing rack |
AU2014225658B2 (en) | 2013-03-06 | 2018-05-31 | Icu Medical, Inc. | Medical device communication method |
US20140351811A1 (en) * | 2013-05-24 | 2014-11-27 | Empire Technology Development Llc | Datacenter application packages with hardware accelerators |
DK3011444T3 (en) * | 2013-06-18 | 2018-04-16 | Ciambella Ltd | METHOD AND APPARATUS FOR CODE VIRTUALIZATION AND GENERATION OF REMOTE PROCESS CALLS |
KR102073678B1 (ko) | 2013-07-12 | 2020-02-06 | 시암벨라 리미티드 | 펌웨어 가상화를 위한 방법 및 장치 |
CN105579991A (zh) * | 2013-07-23 | 2016-05-11 | 慧与发展有限责任合伙企业 | 使用优先级进行工作保持的带宽保证 |
US9851992B2 (en) | 2013-08-01 | 2017-12-26 | Red Hat Israel, Ltd. | Paravirtulized capability for device assignment |
CA2922425C (en) | 2013-08-30 | 2023-05-16 | Hospira, Inc. | System and method of monitoring and managing a remote infusion regimen |
US9662436B2 (en) | 2013-09-20 | 2017-05-30 | Icu Medical, Inc. | Fail-safe drug infusion therapy system |
US9983893B2 (en) | 2013-10-01 | 2018-05-29 | Red Hat Israel, Ltd. | Handling memory-mapped input-output (MMIO) based instructions using fast access addresses |
CN103595773A (zh) * | 2013-11-01 | 2014-02-19 | 浪潮电子信息产业股份有限公司 | 一种基于云桌面的系统性能优化的方法 |
CN104618304B (zh) * | 2013-11-01 | 2017-12-15 | 新华三技术有限公司 | 数据处理方法及数据处理系统 |
US10311972B2 (en) | 2013-11-11 | 2019-06-04 | Icu Medical, Inc. | Medical device system performance index |
CN103780674B (zh) * | 2013-11-13 | 2017-05-31 | 南京中兴新软件有限责任公司 | 一种基于硬件模拟的虚拟机通信方法和装置 |
US10042986B2 (en) | 2013-11-19 | 2018-08-07 | Icu Medical, Inc. | Infusion pump automation system and method |
US9916173B2 (en) | 2013-11-25 | 2018-03-13 | Red Hat Israel, Ltd. | Facilitating execution of MMIO based instructions |
US9529616B2 (en) * | 2013-12-10 | 2016-12-27 | International Business Machines Corporation | Migrating processes between source host and destination host using a shared virtual file system |
CN104714837A (zh) * | 2013-12-11 | 2015-06-17 | 北京慧正通软科技有限公司 | 工作流引擎集群环境下实例并发处理的一种技术方法 |
CN103645863B (zh) * | 2013-12-12 | 2017-12-08 | 北京奇安信科技有限公司 | 共享内存的数据读取方法和系统、写入方法和系统 |
US9886736B2 (en) * | 2014-01-20 | 2018-02-06 | Nvidia Corporation | Selectively killing trapped multi-process service clients sharing the same hardware context |
US9304874B2 (en) * | 2014-02-03 | 2016-04-05 | Red Hat Israel, Ltd. | Virtual machine-guest driven state restoring by hypervisor |
US9378057B2 (en) | 2014-02-28 | 2016-06-28 | Red Hat Israel, Ltd. | Paravirtualized migration counter |
US9906592B1 (en) | 2014-03-13 | 2018-02-27 | Marvell Israel (M.I.S.L.) Ltd. | Resilient hash computation for load balancing in network switches |
US9819626B1 (en) | 2014-03-28 | 2017-11-14 | Amazon Technologies, Inc. | Placement-dependent communication channels in distributed systems |
CN104009864B (zh) * | 2014-04-11 | 2018-02-16 | 重庆纳跃信息科技有限公司 | 一种云化管理平台 |
US9619427B2 (en) * | 2014-04-21 | 2017-04-11 | Qualcomm Incorporated | Hybrid virtual GPIO |
CA2945647C (en) | 2014-04-30 | 2023-08-08 | Hospira, Inc. | Patient care system with conditional alarm forwarding |
US9389910B2 (en) | 2014-06-02 | 2016-07-12 | Red Hat Israel, Ltd. | Paravirtualized migration counter for migrating a virtual CPU to a different physical CPU |
CN104050992B (zh) * | 2014-06-10 | 2016-07-20 | 浙江中科领航汽车电子有限公司 | 具有虚拟仪表和信息娱乐终端的车载智能系统 |
US9386079B2 (en) * | 2014-06-10 | 2016-07-05 | American Megatrends, Inc. | Method and system of virtual desktop infrastructure deployment studio |
US9724470B2 (en) | 2014-06-16 | 2017-08-08 | Icu Medical, Inc. | System for monitoring and delivering medication to a patient and method of using the same to minimize the risks associated with automated therapy |
US9983832B1 (en) * | 2014-06-27 | 2018-05-29 | EMC IP Holding Company LLC | Storage processor with device cache providing physical memory for guest VM |
CN104156255B (zh) * | 2014-07-31 | 2017-10-17 | 华为技术有限公司 | 一种虚拟机迁移方法、虚拟机迁移装置及源物理主机 |
US9539383B2 (en) | 2014-09-15 | 2017-01-10 | Hospira, Inc. | System and method that matches delayed infusion auto-programs with manually entered infusion programs and analyzes differences therein |
US9798567B2 (en) | 2014-11-25 | 2017-10-24 | The Research Foundation For The State University Of New York | Multi-hypervisor virtual machines |
CN104375883B (zh) * | 2014-12-03 | 2018-01-02 | 浪潮电子信息产业股份有限公司 | 一种cfs调度器 |
CN104486255B (zh) * | 2014-12-30 | 2018-08-24 | 新华三技术有限公司 | 业务资源调度方法和装置 |
CN104615487B (zh) * | 2015-01-12 | 2019-03-08 | 中国科学院计算机网络信息中心 | 并行任务优化系统和方法 |
US9436495B2 (en) | 2015-01-23 | 2016-09-06 | Red Hat Israel, Ltd. | Protection against interrupts in virtual machine functions |
US9477509B2 (en) | 2015-01-23 | 2016-10-25 | Red Hat Israel, Ltd. | Protection against interrupts in virtual machine functions |
US9875128B2 (en) | 2015-01-23 | 2018-01-23 | Red Hat Israel, Ltd. | Using hypervisor trapping for protection against interrupts in virtual machine functions |
US9772870B2 (en) | 2015-01-29 | 2017-09-26 | Red Hat Israel, Ltd. | Delivering interrupts to virtual machines executing privileged virtual machine functions |
US9575796B2 (en) | 2015-02-16 | 2017-02-21 | Red Hat Isreal, Ltd. | Virtual device timeout by memory offlining |
US9715403B2 (en) | 2015-02-27 | 2017-07-25 | Red Hat, Inc. | Optimized extended context management for virtual machines |
US9876719B2 (en) | 2015-03-06 | 2018-01-23 | Marvell World Trade Ltd. | Method and apparatus for load balancing in network switches |
US11327779B2 (en) * | 2015-03-25 | 2022-05-10 | Vmware, Inc. | Parallelized virtual machine configuration |
US10834065B1 (en) | 2015-03-31 | 2020-11-10 | F5 Networks, Inc. | Methods for SSL protected NTLM re-authentication and devices thereof |
CN104811493B (zh) * | 2015-04-21 | 2018-02-23 | 华中科技大学 | 一种网络感知的虚拟机镜像存储系统及读写请求处理方法 |
US9842083B2 (en) | 2015-05-18 | 2017-12-12 | Red Hat Israel, Ltd. | Using completion queues for RDMA event detection |
CA2988094A1 (en) | 2015-05-26 | 2016-12-01 | Icu Medical, Inc. | Infusion pump system and method with multiple drug library editor source capability |
US10129206B2 (en) | 2015-06-05 | 2018-11-13 | Cisco Technology, Inc. | Addressing and managing an internal network of a virtual branch node |
US9465617B1 (en) * | 2015-06-29 | 2016-10-11 | Vmware, Inc. | Implementing upcall from secure to non-secure mode by injecting exception into non-secure mode |
US10002014B2 (en) * | 2015-07-10 | 2018-06-19 | International Business Machines Corporation | Management of a virtual machine in a virtualized computing environment based on a fabric limit |
EP3118740B1 (en) * | 2015-07-15 | 2021-09-08 | Huawei Technologies Co., Ltd. | Device and method for hardware virtualization support |
US10164911B2 (en) * | 2015-11-20 | 2018-12-25 | Cisco Technology, Inc. | Shim layer used with a virtual machine virtual NIC and a hardware platform physical NIC |
US9875132B2 (en) | 2015-11-25 | 2018-01-23 | Red Hat Israel, Ltd. | Input output memory management unit based zero copy virtual machine to virtual machine communication |
EP3394743B1 (en) | 2015-12-21 | 2023-07-12 | Ciambella Ltd. | Method and apparatus for creating and managing controller based remote solutions |
US20170177395A1 (en) * | 2015-12-21 | 2017-06-22 | Mingqiu Sun | Embedded architecture based on process virtual machine |
CN105550040B (zh) * | 2015-12-29 | 2019-06-14 | 四川中电启明星信息技术有限公司 | 基于kvm平台的虚拟机cpu资源预留算法 |
US10467153B2 (en) | 2015-12-31 | 2019-11-05 | Razer (Asia-Pacific) Pte. Ltd. | Methods for controlling a computing device, computer-readable media, and computing devices |
EP3347813A4 (en) | 2016-01-05 | 2019-05-08 | Hewlett-Packard Enterprise Development LP | MESSAGE TRANSMISSION IN VIRTUAL MACHINE |
US10404698B1 (en) | 2016-01-15 | 2019-09-03 | F5 Networks, Inc. | Methods for adaptive organization of web application access points in webtops and devices thereof |
CN105718325B (zh) * | 2016-01-22 | 2019-05-03 | 北京航空航天大学 | 基于虚拟机集群的回滚方法及系统和服务器 |
US10904150B1 (en) | 2016-02-02 | 2021-01-26 | Marvell Israel (M.I.S.L) Ltd. | Distributed dynamic load balancing in network systems |
US9846610B2 (en) | 2016-02-08 | 2017-12-19 | Red Hat Israel, Ltd. | Page fault-based fast memory-mapped I/O for virtual machines |
CN105893269B (zh) * | 2016-03-31 | 2018-08-21 | 武汉虹信技术服务有限责任公司 | 一种Linux系统下内存管理方法 |
US11087249B2 (en) | 2016-05-24 | 2021-08-10 | Ciambella Ltd. | Method and apparatus for triggering execution of a workflow over a network |
US10540292B2 (en) | 2016-06-08 | 2020-01-21 | Google Llc | TLB shootdowns for low overhead |
EP3502906B1 (en) * | 2016-06-08 | 2021-06-16 | Google LLC | Tlb shootdown for low overhead |
US10459747B2 (en) | 2016-07-05 | 2019-10-29 | Red Hat Israel, Ltd. | Exitless timer access for virtual machines |
CN106201754A (zh) * | 2016-07-06 | 2016-12-07 | 乐视控股(北京)有限公司 | 任务信息分析方法及装置 |
AU2017295722B2 (en) | 2016-07-14 | 2022-08-11 | Icu Medical, Inc. | Multi-communication path selection and security system for a medical device |
US10798780B2 (en) | 2016-08-22 | 2020-10-06 | Ciambella Ltd. | Method and apparatus for creating and managing controller based remote solutions |
US10176007B2 (en) * | 2016-08-30 | 2019-01-08 | Red Hat Israel, Ltd. | Guest code emulation by virtual machine function |
US10243857B1 (en) | 2016-09-09 | 2019-03-26 | Marvell Israel (M.I.S.L) Ltd. | Method and apparatus for multipath group updates |
US10249047B2 (en) * | 2016-09-13 | 2019-04-02 | Intelligent Fusion Technology, Inc. | System and method for detecting and tracking multiple moving targets based on wide-area motion imagery |
CN106484328B (zh) * | 2016-09-23 | 2019-06-04 | 浪潮电子信息产业股份有限公司 | 一种基于kvm系统运行的虚拟机使用多路径块设备方法 |
US10412198B1 (en) | 2016-10-27 | 2019-09-10 | F5 Networks, Inc. | Methods for improved transmission control protocol (TCP) performance visibility and devices thereof |
CN106528267B (zh) * | 2016-10-27 | 2019-08-09 | 广东铂亚信息技术有限公司 | 基于Xen特权域的网络通信监控系统及方法 |
US10452420B1 (en) * | 2016-11-02 | 2019-10-22 | Parallels International Gmbh | Virtualization extension modules |
CN106445641B (zh) * | 2016-11-02 | 2020-11-06 | 深圳前海生生科技有限公司 | 一种离散计算节点上安全虚拟平台间的数据迁移方法 |
CN108134683B (zh) * | 2016-12-01 | 2021-06-11 | 腾讯科技(深圳)有限公司 | 一种终端及总线架构的实现方法 |
CN107077377B (zh) * | 2016-12-29 | 2020-08-04 | 深圳前海达闼云端智能科技有限公司 | 一种设备虚拟化方法、装置、系统及电子设备、计算机程序产品 |
US10540294B2 (en) * | 2017-02-17 | 2020-01-21 | Red Hat Israel, Ltd. | Secure zero-copy packet forwarding |
EP3596593B1 (en) | 2017-03-14 | 2024-05-01 | Ciambella Ltd. | Method and apparatus for automatically generating and incorporating code in development environments |
CN106982255B (zh) * | 2017-03-31 | 2020-08-25 | 联想(北京)有限公司 | 物理服务器、云调度器、云平台及用于其的方法 |
US10228981B2 (en) * | 2017-05-02 | 2019-03-12 | Intel Corporation | High-performance input-output devices supporting scalable virtualization |
US11093532B2 (en) * | 2017-05-25 | 2021-08-17 | International Business Machines Corporation | Pre-allocating filesystem metadata within an object storage system |
CN107426414A (zh) * | 2017-06-14 | 2017-12-01 | 努比亚技术有限公司 | 一种通过外设获取信息方法、终端及计算机可读存储介质 |
CN107402802A (zh) * | 2017-07-27 | 2017-11-28 | 郑州云海信息技术有限公司 | 一种基于虚拟机的视频监控存储系统 |
TWI643129B (zh) * | 2017-08-22 | 2018-12-01 | 廣積科技股份有限公司 | 融合運用系統架構 |
CN107707550B (zh) * | 2017-09-30 | 2021-08-10 | 北京奇虎科技有限公司 | 访问虚拟机的方法、装置及系统 |
US11172028B2 (en) * | 2017-10-19 | 2021-11-09 | Sk Telecom Co., Ltd. | Method and server device for providing internet of things platform service |
US11223689B1 (en) | 2018-01-05 | 2022-01-11 | F5 Networks, Inc. | Methods for multipath transmission control protocol (MPTCP) based session migration and devices thereof |
US10599596B2 (en) * | 2018-01-08 | 2020-03-24 | Intel Corporation | Management of processor performance based on user interrupts |
CN108334401B (zh) * | 2018-01-31 | 2020-07-28 | 武汉噢易云计算股份有限公司 | 实现逻辑卷动态分配并支持虚拟机动态迁移的系统及方法 |
US10496548B2 (en) * | 2018-02-07 | 2019-12-03 | Alibaba Group Holding Limited | Method and system for user-space storage I/O stack with user-space flash translation layer |
WO2019206398A1 (en) * | 2018-04-23 | 2019-10-31 | Huawei Technologies Co., Ltd. | Instruction processing |
CN108874500B (zh) * | 2018-04-26 | 2022-10-18 | 南京大学 | 一种基于硬件虚拟化技术的应用程序安全保护方法 |
WO2019222958A1 (en) | 2018-05-24 | 2019-11-28 | Alibaba Group Holding Limited | System and method for flash storage management using multiple open page stripes |
US11016798B2 (en) | 2018-06-01 | 2021-05-25 | The Research Foundation for the State University | Multi-hypervisor virtual machines that run on multiple co-located hypervisors |
CN108874506B (zh) * | 2018-06-08 | 2020-07-24 | 北京百度网讯科技有限公司 | 虚拟机直通设备的热迁移方法和装置 |
US11816043B2 (en) | 2018-06-25 | 2023-11-14 | Alibaba Group Holding Limited | System and method for managing resources of a storage device and quantifying the cost of I/O requests |
CN108829523A (zh) * | 2018-06-26 | 2018-11-16 | 迈普通信技术股份有限公司 | 内存资源分配方法、装置、电子设备及可读存储介质 |
US11139058B2 (en) | 2018-07-17 | 2021-10-05 | Icu Medical, Inc. | Reducing file transfer between cloud environment and infusion pumps |
US10950339B2 (en) | 2018-07-17 | 2021-03-16 | Icu Medical, Inc. | Converting pump messages in new pump protocol to standardized dataset messages |
ES2985889T3 (es) | 2018-07-17 | 2024-11-07 | Icu Medical Inc | Actualización de las bibliotecas de fármacos de bombas de infusión y software operacional en un entorno en red |
EP4297379A3 (en) | 2018-07-17 | 2024-01-10 | ICU Medical, Inc. | Systems and methods for facilitating clinical messaging in a network environment |
CN108989151B (zh) * | 2018-07-20 | 2020-08-28 | 北京云杉世纪网络科技有限公司 | 用于网络或应用性能管理的流量采集方法 |
US10692595B2 (en) | 2018-07-26 | 2020-06-23 | Icu Medical, Inc. | Drug library dynamic version management |
EP3827337A4 (en) | 2018-07-26 | 2022-04-13 | ICU Medical, Inc. | MANAGEMENT SYSTEM FOR SUBSTANCES LIBRARY |
CN110765462B (zh) * | 2018-07-28 | 2023-06-27 | 阿里巴巴集团控股有限公司 | 一种操作控制方法、装置、计算系统及电子设备 |
US10996886B2 (en) | 2018-08-02 | 2021-05-04 | Alibaba Group Holding Limited | Method and system for facilitating atomicity and latency assurance on variable sized I/O |
US11327929B2 (en) | 2018-09-17 | 2022-05-10 | Alibaba Group Holding Limited | Method and system for reduced data movement compression using in-storage computing and a customized file system |
CN110941565B (zh) * | 2018-09-25 | 2022-04-15 | 北京算能科技有限公司 | 用于芯片存储访问的内存管理方法和装置 |
US12003422B1 (en) | 2018-09-28 | 2024-06-04 | F5, Inc. | Methods for switching network packets based on packet data and devices |
CN110968393B (zh) * | 2018-09-30 | 2023-05-02 | 阿里巴巴集团控股有限公司 | 虚拟机的迁移处理方法、存储介质、计算设备 |
CN109450794B (zh) * | 2018-12-11 | 2021-02-23 | 上海云轴信息科技有限公司 | 一种基于sdn网络的通信方法及设备 |
US10977122B2 (en) | 2018-12-31 | 2021-04-13 | Alibaba Group Holding Limited | System and method for facilitating differentiated error correction in high-density flash devices |
US11061735B2 (en) | 2019-01-02 | 2021-07-13 | Alibaba Group Holding Limited | System and method for offloading computation to storage nodes in distributed system |
US11200337B2 (en) | 2019-02-11 | 2021-12-14 | Alibaba Group Holding Limited | System and method for user data isolation |
US11347529B2 (en) * | 2019-03-08 | 2022-05-31 | International Business Machines Corporation | Inject interrupts and exceptions into secure virtual machine |
US11023397B2 (en) * | 2019-03-25 | 2021-06-01 | Alibaba Group Holding Limited | System and method for monitoring per virtual machine I/O |
TWI756156B (zh) * | 2019-04-07 | 2022-02-21 | 新唐科技股份有限公司 | 監控系統開機之安全裝置及其方法 |
AU2020267477A1 (en) | 2019-05-08 | 2022-01-06 | Icu Medical, Inc. | Threshold signature based medical device management |
GB2597156B (en) * | 2019-05-10 | 2023-04-26 | Kontain Inc | Scalable and secure containers |
US10860223B1 (en) | 2019-07-18 | 2020-12-08 | Alibaba Group Holding Limited | Method and system for enhancing a distributed storage system by decoupling computation and network tasks |
CN110703987B (zh) * | 2019-08-31 | 2022-07-22 | 苏州浪潮智能科技有限公司 | 一种提高虚拟磁盘io性能的方法及系统 |
US11617282B2 (en) | 2019-10-01 | 2023-03-28 | Alibaba Group Holding Limited | System and method for reshaping power budget of cabinet to facilitate improved deployment density of servers |
US11449455B2 (en) | 2020-01-15 | 2022-09-20 | Alibaba Group Holding Limited | Method and system for facilitating a high-capacity object storage system with configuration agility and mixed deployment flexibility |
US11379447B2 (en) | 2020-02-06 | 2022-07-05 | Alibaba Group Holding Limited | Method and system for enhancing IOPS of a hard disk drive system based on storing metadata in host volatile memory and data in non-volatile memory using a shared controller |
CN110928695B (zh) * | 2020-02-12 | 2020-05-22 | 南京芯瞳半导体技术有限公司 | 一种关于显存的管理方法、装置及计算机存储介质 |
US11449386B2 (en) | 2020-03-20 | 2022-09-20 | Alibaba Group Holding Limited | Method and system for optimizing persistent memory on data retention, endurance, and performance for host memory |
US11385833B2 (en) | 2020-04-20 | 2022-07-12 | Alibaba Group Holding Limited | Method and system for facilitating a light-weight garbage collection with a reduced utilization of resources |
US11301173B2 (en) | 2020-04-20 | 2022-04-12 | Alibaba Group Holding Limited | Method and system for facilitating evaluation of data access frequency and allocation of storage device resources |
US11409619B2 (en) | 2020-04-29 | 2022-08-09 | The Research Foundation For The State University Of New York | Recovering a virtual machine after failure of post-copy live migration |
CN113626131B (zh) * | 2020-05-07 | 2023-03-28 | 中科寒武纪科技股份有限公司 | 实现热迁移的方法、芯片、板卡和存储介质 |
US11281575B2 (en) | 2020-05-11 | 2022-03-22 | Alibaba Group Holding Limited | Method and system for facilitating data placement and control of physical addresses with multi-queue I/O blocks |
US11461262B2 (en) | 2020-05-13 | 2022-10-04 | Alibaba Group Holding Limited | Method and system for facilitating a converged computation and storage node in a distributed storage system |
US11494115B2 (en) | 2020-05-13 | 2022-11-08 | Alibaba Group Holding Limited | System method for facilitating memory media as file storage device based on real-time hashing by performing integrity check with a cyclical redundancy check (CRC) |
US11507499B2 (en) | 2020-05-19 | 2022-11-22 | Alibaba Group Holding Limited | System and method for facilitating mitigation of read/write amplification in data compression |
US11556277B2 (en) | 2020-05-19 | 2023-01-17 | Alibaba Group Holding Limited | System and method for facilitating improved performance in ordering key-value storage with input/output stack simplification |
CN111562975B (zh) * | 2020-05-20 | 2023-01-06 | 苏州浪潮智能科技有限公司 | 一种虚拟机大页内存的开机调度方法、装置、设备和介质 |
US11263132B2 (en) | 2020-06-11 | 2022-03-01 | Alibaba Group Holding Limited | Method and system for facilitating log-structure data organization |
US11354200B2 (en) | 2020-06-17 | 2022-06-07 | Alibaba Group Holding Limited | Method and system for facilitating data recovery and version rollback in a storage device |
US11422931B2 (en) | 2020-06-17 | 2022-08-23 | Alibaba Group Holding Limited | Method and system for facilitating a physically isolated storage unit for multi-tenancy virtualization |
CN113296876B (zh) * | 2020-06-30 | 2022-05-06 | 阿里巴巴集团控股有限公司 | 虚拟机的设备直通方法、设备及存储介质 |
US11354233B2 (en) | 2020-07-27 | 2022-06-07 | Alibaba Group Holding Limited | Method and system for facilitating fast crash recovery in a storage device |
CN114077379B (zh) * | 2020-08-19 | 2024-03-26 | 华为技术有限公司 | 一种计算机设备、异常处理的方法以及中断处理的方法 |
US11372774B2 (en) | 2020-08-24 | 2022-06-28 | Alibaba Group Holding Limited | Method and system for a solid state drive with on-chip memory integration |
CN112606003B (zh) * | 2020-11-03 | 2024-09-17 | 创泽智能机器人集团股份有限公司 | 一种适用于服务机器人的通讯调度器及其控制方法 |
CN112631975B (zh) * | 2020-12-09 | 2024-06-04 | 珠海全志科技股份有限公司 | 基于Linux的SPI传输方法 |
US11487465B2 (en) | 2020-12-11 | 2022-11-01 | Alibaba Group Holding Limited | Method and system for a local storage engine collaborating with a solid state drive controller |
US11734115B2 (en) | 2020-12-28 | 2023-08-22 | Alibaba Group Holding Limited | Method and system for facilitating write latency reduction in a queue depth of one scenario |
US11416365B2 (en) | 2020-12-30 | 2022-08-16 | Alibaba Group Holding Limited | Method and system for open NAND block detection and correction in an open-channel SSD |
US11308008B1 (en) * | 2020-12-31 | 2022-04-19 | Cadence Design Systems, Inc. | Systems and methods for handling DPI messages outgoing from an emulator system |
US11726699B2 (en) | 2021-03-30 | 2023-08-15 | Alibaba Singapore Holding Private Limited | Method and system for facilitating multi-stream sequential read performance improvement with reduced read amplification |
US11461173B1 (en) | 2021-04-21 | 2022-10-04 | Alibaba Singapore Holding Private Limited | Method and system for facilitating efficient data compression based on error correction code and reorganization of data placement |
US11476874B1 (en) | 2021-05-14 | 2022-10-18 | Alibaba Singapore Holding Private Limited | Method and system for facilitating a storage server with hybrid memory for journaling and data storage |
CN113886007B (zh) * | 2021-09-18 | 2022-03-01 | 云宏信息科技股份有限公司 | Kvm虚拟化系统配置方法、管理方法、系统及介质 |
US20230099517A1 (en) * | 2021-09-30 | 2023-03-30 | Intel Corporation | User-level interprocessor interrupts |
CN114500718B (zh) * | 2021-12-27 | 2023-11-03 | 天翼云科技有限公司 | 一种云手机管理方法及装置 |
CN115237429B (zh) * | 2022-07-18 | 2024-05-28 | 江苏卓易信息科技股份有限公司 | 一种基于固件动态参数调整的云服务器测试验证方法 |
US20240086215A1 (en) * | 2022-09-12 | 2024-03-14 | Microsoft Technology Licensing, Llc | Non-Disruptive Hibernating And Resuming Guest Environment Using Network Virtual Service Client |
CN116107695A (zh) * | 2022-12-23 | 2023-05-12 | 天翼云科技有限公司 | 一种虚拟机迁移方法、装置、设备及介质 |
CN116401020B (zh) * | 2023-06-07 | 2023-08-11 | 四川大学 | Kvm虚拟机i/o过滤框架实现方法、系统及存储介质 |
CN116521596B (zh) * | 2023-06-29 | 2023-09-22 | 北京大禹智芯科技有限公司 | 一种基于Qemu虚拟环境的PCIe Switch模拟器的实现方法和装置 |
CN119166269A (zh) * | 2023-07-28 | 2024-12-20 | 京东科技信息技术有限公司 | 运行时虚拟机系统、系统运行方法和装置 |
CN117032941B (zh) * | 2023-10-09 | 2023-12-01 | 南京翼辉信息技术有限公司 | 一种基于众核处理器的实时任务调度系统及其控制方法 |
CN117472805B (zh) * | 2023-12-26 | 2024-03-26 | 北京数渡信息科技有限公司 | 一种基于virtio的虚拟化IO设备内存管理系统 |
CN117950813B (zh) * | 2024-03-26 | 2024-05-31 | 睿云联(厦门)网络通讯技术有限公司 | 一种基于分布式应用运行时的事务管理方法、设备及介质 |
CN118394453B (zh) * | 2024-06-29 | 2024-09-06 | 珠海星云智联科技有限公司 | 用户态半虚拟化设备创建以及删除系统、设备及集群 |
CN119003391B (zh) * | 2024-10-18 | 2025-03-21 | 中国科学院软件研究所 | Io设备共享方法及装置 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1862494A (zh) * | 2005-05-12 | 2006-11-15 | 微软公司 | 分区总线 |
CN101477496A (zh) * | 2008-12-29 | 2009-07-08 | 北京航空航天大学 | 基于分布式内存虚拟化的numa结构的实现方法 |
CN101539868A (zh) * | 2009-04-10 | 2009-09-23 | 北京大学 | 一种虚拟机管理器的客户操作系统内核代码动态替换方法 |
CN101876954A (zh) * | 2009-12-23 | 2010-11-03 | 中国科学院计算技术研究所 | 一种虚拟机控制系统及其工作方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7853744B2 (en) * | 2007-05-23 | 2010-12-14 | Vmware, Inc. | Handling interrupts when virtual machines have direct access to a hardware device |
-
2010
- 2010-05-25 CN CN201010183844.6A patent/CN102262557B/zh not_active Expired - Fee Related
-
2011
- 2011-05-25 US US13/115,341 patent/US8832688B2/en not_active Expired - Fee Related
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1862494A (zh) * | 2005-05-12 | 2006-11-15 | 微软公司 | 分区总线 |
CN101477496A (zh) * | 2008-12-29 | 2009-07-08 | 北京航空航天大学 | 基于分布式内存虚拟化的numa结构的实现方法 |
CN101539868A (zh) * | 2009-04-10 | 2009-09-23 | 北京大学 | 一种虚拟机管理器的客户操作系统内核代码动态替换方法 |
CN101876954A (zh) * | 2009-12-23 | 2010-11-03 | 中国科学院计算技术研究所 | 一种虚拟机控制系统及其工作方法 |
Also Published As
Publication number | Publication date |
---|---|
US8832688B2 (en) | 2014-09-09 |
US20110296411A1 (en) | 2011-12-01 |
CN102262557A (zh) | 2011-11-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102262557B (zh) | 通过总线架构构建虚拟机监控器的方法及性能服务框架 | |
JP7327744B2 (ja) | ファンクションアズアサービス(FaaS)システムの強化 | |
US11068355B2 (en) | Systems and methods for maintaining virtual component checkpoints on an offload device | |
CN103744716B (zh) | 一种基于当前vcpu调度状态的动态中断均衡映射方法 | |
US20210117242A1 (en) | Infrastructure processing unit | |
US11429442B2 (en) | Parallel and distributed computing using multiple virtual machines | |
Gavrilovska et al. | High-performance hypervisor architectures: Virtualization in hpc systems | |
CN102681899B (zh) | 云计算服务平台的虚拟计算资源动态管理方法 | |
CN101751284A (zh) | 一种分布式虚拟机监控器的i/o资源调度方法 | |
CN101968746A (zh) | 一种内核虚拟机组织架构模式的实现方法 | |
WO2022042334A1 (en) | Compilation strategy for sharable application snapshot | |
CN103996003B (zh) | 一种虚拟化环境中的数据擦除系统及方法 | |
CN107423619A (zh) | 一种基于虚拟化技术构建智能终端web运行时的方法 | |
CN105556473A (zh) | 一种i/o任务处理的方法、设备和系统 | |
Scordino et al. | Real-time virtualization for industrial automation | |
CN103034526A (zh) | 一种虚拟化服务的实现方法和装置 | |
CN114816665B (zh) | 混合编排系统及超融合架构下虚拟机容器资源混合编排方法 | |
Logan et al. | Labstor: A modular and extensible platform for developing high-performance, customized i/o stacks in userspace | |
CN108762891A (zh) | 一种云平台资源调度方法和装置 | |
Kulkarni et al. | Virtualization technology: A leading edge | |
US20230305875A1 (en) | Virtual networking for special types of nested virtual machines | |
Schad | Understanding and managing the performance variation and data growth in cloud computing | |
Li et al. | Accelerator Virtualization Framework Based on Inter-VM Exitless Communication. | |
Quesnel | Scheduling of Large-scale Virtualized Infrastructures: Toward Cooperative Management | |
Guo et al. | A cooperative model virtual-machine monitor based on multi-core platform |
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 | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20150121 Termination date: 20210525 |