通过总线架构构建虚拟机监控器的方法及性能服务框架的制作方法

文档序号:6603118阅读:308来源:国知局
专利名称:通过总线架构构建虚拟机监控器的方法及性能服务框架的制作方法
技术领域
本发明涉及计算机技术,更具体地说,涉及一种总线架构以及通过总线架构构建虚拟机监控器的方法。
背景技术
计算机的操作系统虚拟化,导致一台机器上运行多个操作系统,可以把在机房里的服务器能力充分利用,减少购买服务器的成本,因此近年来大行其道。虚拟化的原理,简言之,就是使多个“客户”操作系统(或称为虚拟机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对简单的拦截,迅速处理,但有关1/0的拦截,KVM会从VCPU的系统调用出来,回到QEMU,而完全依赖QEMU处理10。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操作。共享内存进一步包括10环形缓冲管理器的设定与释放;IO环形缓冲管理器队列的操作,利用另一中断权限数列为辅,遍历该数列时把权限高的数列元素向前提升。二进制接口管理组件针对需要应用二进制接口的指令集架构(ISA)或者应用程序二进制接口(ABI)的读/写真实硬件设备荷载,使用总线架构的共享物理媒体,经由虚拟机监控器(VMM)/KVM承接IO荷载,与虚拟机的虚拟设备互动,用流量控制器来控制数据流量、带宽、容错,合并流媒体输送管道以保证服务品质QoS。二进制接口管理组件还包括KVM 利用openfirmware的bytecode监控(1)PI0/MMI0范围,(2)总线中断,(3)硬件树;当硬件启动时(bootloader and bootstrap), QEMU仿真硬件可用。操作包括发现硬件、指定硬件、控制流量、合并媒体传输管道。其中,控制流量的操作,使用分流规则来分流从物理设备经过ABI的荷载。决策与策略执行点组件选择并部署决策点和执行点,预设决策功能、动态部署并传达策略到策略执行点,其中选择并部署决策点和执行点、动态部署并传达策略到策略执行点是基于事件触发。在一个实施例中,该决策与策略执行点组件包括负荷调整器,负荷调整器包括三个策略管理器PDFs,从不同规则库和/或性能消耗矩阵读出数据,以处理(1) KVM自然规律决策功能、(2)个别事务性能决策功能、(3)整体事务性能决策功能。负荷调整器还包括四个工作负载调整器PEPs,从以上三个决策功能PDFs取得策略,执行(1)事务首度分层分路、(2) Linux任务调度器将事务重新分层分路、(3)处理过载、单点流量爆发 (Burst)影响整体,同层聚合(same layer aggregation),及其它主机整体的问题,并且执行(4)按照资源消耗矩阵数据分派事务。该决策与策略执行点组件还包括资源消耗处理器(Resource Consum ption Handler),利用基树遍历器,写入与读出在资源消耗矩阵里的数据,综合个别事务规则库里的规则,决定以下策略的充分条件DMA带宽使用是否过大? QEMU 10环形缓冲内存是否足够?虚拟与非虚拟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)”事务的树节点时,如果节点高度转成的层数小于所给层数,则可继续向下找到树节点,取得该节点树槽里的矩阵指针,把矩阵里的单元数据读出。二进制接口影子管理组件使用决策与策略执行点组件来管理虚拟设备,二进制接口影子管理组件与各个虚拟机互动,一次完成多次的10读写。其中KVM利用openfirmware 的bytecode监控(1)PI0/MMI0范围,(2)总线中断,(3)硬件树;当硬件启动时(bootloaderand bootstrap),QEMU仿真硬件可用;操作包括发现硬件、指定硬件、控制流量、合并媒体传输管道。其中,控制流量的操作,使用策略执行点(PEP)来分流从物理设备经过Siadow 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); 若客户端为网元、网络管理器,则按照多对一的关系连接虚拟网络管理器、网元管理器。管理中心处理新建、修改、删除、查找用户及其管理员权限;以图形界面和/或指令行处理用户与管理员的指令,包括管理用户对话期、虚拟机状态、虚拟机开关机;管理节点、主机、虚拟机、虚拟存储、虚拟网络、荷载均衡策略、容错策略、超级总线服务框架,包括网络超级总线的全局文件系统(GR5)服务。主机代理包括主机代理以超级总线传讯号的代码路径控制处理内网、虚拟机对事件的反应;主机代理以超级总线传荷载的代码路径处理心跳、机器状态;主机代理从Linux虚拟机服务器控制虚拟机,具体实现是通过Linux标准应用接口LibVirt控制红帽的企业虚拟机服务器,运软的QServerjn Xen虚拟机服务器。半虚拟化组件的虚拟中断包括人工产生的中断;VMM自行处理虚拟机未加载处理的虚拟机控制块(VMCQ寄存器;超级调用(Hypercall)。直通传输装置应用零拷贝,处理同步、异步的磁盘或网络数据传输,双重翻译数据地址并加锁,取得送出方环形缓冲,并在缺页时通过Linux系统调用mmapO找到缺页的物理页,实现直接内存访问(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批处理,包括预先分配的内存链、聚合代码路径的调度器。瓶颈辨认器从集群或单一系统的资源消耗矩阵收集性能数据;并统计数据,辨别是否距离正常性能值差距太大,超出瓶颈库所规定的瓶颈范围。负荷调整器包括三个策略管理器,从不同规则库和/或性能消耗矩阵读出数据, 执行=(I)KVM自然规律决策;(2)个别事务性能决策;(3)整体事务性能决策功能;四个工作负载调整器,从所述三个决策功能取得策略,执行(1)事务首度分层分路;(2) Linux任务调度器将事务重新分层分路;( 处理过载、单点流量爆发影响整体,同层聚合;(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的“VIRTI0共享内存机制”的组成框和流程混合图;图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的“10环形缓冲管理器 (10 Ring Buffer Manager)” 流程图
图M是图14中1411设备管理器和1443ICCM设备服务代理的“ICCM设备管理器代理”流程图,本流程图实现了图8超级总线功能5的实施方式,也实现了图1的方框0111 设备管理器和0143设备服务代理;图25是图14中方框1431工作负载调整器的实施例“基于Radix树的工作负载调整器(Workload Mediator) ”的组成框和流程混合图,本流程图实现了图9超级总线功能6 的实施方式,也实现了图1的方框0131性能服务(功能9);图洸是图25中步骤2511,2512的“资源消耗处理器(ResourceConsumption Handler)”组成框和流程混合图;图27是图沈中步骤沈19的“基树遍历器”流程图;图28是图14中1411设备管理器和1443ICCM设备服务代理的实施例“具有策略及影子ISA/ABI的设备管理器”的流程图,本流程图实现了图10超级总线功能7的实施方式,也实现了图1的方框0111设备管理器和0143设备服务代理;图四是图11的实施例“超级总线的安全设施操作”的组成框和流程混合图;图30是实现图14的方框1431的“超级总线性能服务框架”的流程图,本流程图也实现了图12的抽象功能9和图1的方框0131 ;
15
图31是图30中步骤3005的“性能优化器(optimizer) ”流程图;图32是图31中步骤3103,3110,3119的“瓶颈辨认器(Identif ier) ”流程图;图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进程逻辑,处理同步及异步的1/0操作,并利用直通方式增加1/0速度;抽象功能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的一般开源工具或第三方商用性能工具;使用超级总线提供的工作负载调整器。这一调整器使用基树数学模式,将在代码路径上的各个执行点收集到的数据加以应用,可以控制超级总线各功能实施时的性能,并可结合统计方法,作出性能的最大优化。在本发明的一实施方式中,联网总线功能进一步包括实现电信管理网络(TelecommunicationManagement Network 或 TMN),实现基于开源Hadoop/MapReduce的全局文件系统(Global FileSystem或GFS),和使用在Linux上通用的虚拟机化库应用接口 LibVirt。联网总线可以选用服务器/客户端的架构实现。具体的实现是管理中心与主机代理。在本发明的一实施例中,所述虚拟机中断包括可以人工产生的中断;虚拟机未加载处理的VMCS寄存器可由VMM自行处理,以增强性能;利用NM#6,设置超级调用(Hypercall)。在本发明的一实施例中,直通传输装置(零拷贝)进一步包括处理同步、异步的磁盘或网络数据传输;双重翻译数据地址并加锁,取得送出方环形缓冲,并在缺页时通过Linux系统调用mmapO找到缺页的物理页;实现DMA读写,返回用户,解锁,释放环形缓冲。在本发明的一实施例中,虚拟机的虚拟驱动进一步包括接受虚拟设备的10指令,读写共享内存、磁盘、网络数据;接受非设备的10指令,读写共享内存、磁盘、网络数据;;提供VirtIO接口,利用分流实现零拷贝,或利用TCP/UDP-IP-over-hf iniband完成通讯;挂起及卸除设备的功能。在本发明的一实施例中,多条可选的代码路径包括对象之间通信机制,通过虚拟服务生产端与虚拟服务消费端完成10的读写;对象之间通信机制,直接通过主机的VIRTIO共享内存虚拟设备完成10的读写;传统有限半虚拟化方式(不用共享内存虚拟设备);传统非虚拟化方式(不用Trap进入VMM)。在本发明的一实施例中,代码多路径功能包括物理媒介(共享内存)地址计算器所需要的双重翻译,把虚拟机虚拟地址翻译成虚拟机物理地址,再把虚拟机物理地址翻译成主机物理地址。在本发明的一实施例中,虚拟服务生产端不但会把性能调整器的策略传递给虚拟文件系统(Vre),而且会处理虚拟服务生产端传来的同步或异步10指令,并转而利用Linux本身的IO功能完成任务。在本发明的一实施例中,虚拟服务消费端进一步包括通过核心服务线程向VSP分派同步或异步读写请求;按工作负荷策略分流事务到不同路径。在本发明的一实施例中,VIRTIO共享内存虚拟设备进一步包括VM-QEMU-KVM虚拟化空间状态切换机制;AIO服务代理,利用Linux主机本身Block设备驱动向硬盘或网络读写数据,并可选择使用缓存,这样,读写完毕后可利用守护进程通知Linux用户空间的任务。在本发明的一实施例中,向上调用进一步包括主机代理经由共享内存传递讯号和负载给向上调用;向上调用使用广播器将讯号和负载传到一个以上的虚拟机;人工虚拟中断让虚拟机的虚拟驱动完成共享内存里的讯号、负载IO操作。在本发明的一实施例中,共享内存进一步包括IO环形缓冲管理器的设定与释放;IO环形缓冲管理器队列的操作,利用另一中断权限数列为辅,遍历该数列时把权限高的数列元素向前提升。在本发明的一实施例中,对应用二进制接口的管理还包括KVM 利用 openfirmware 的 bytecode 监控(1)PI0/MMI0 范围,(2)总线中断,(3) 硬件树;当硬件启动时(bootloader and bootstrap),QEMU仿真硬件可用。操作包括发现硬件、指定硬件、控制流量、合并媒体传输管道。其中,控制流量的操作,使用分流规则来分流从物理设备经过ABI的荷载。在本发明的一实施例中,负荷调整器进一步包括三个策略管理器PDFs,从不同规则库和/或性能消耗矩阵读出数据,以处理(1) KVM自然规律决策功能、(2)个别事务性能决策功能、(3)整体事务性能决策功能;四个工作负载调整器PEI^s,从以上三个决策功能PDFs取得策略,执行(1)事务首度分层分路、O) Linux任务调度器将事务重新分层分路、( 处理过载、单点流量爆发 (Burst)影响整体,同层聚合(same layer aggregation),及其它主机整体的问题,并且执行(4)按照资源消耗矩阵数据分派事务。在本发明的一实施例中,个别事务性能决策功能进一步包括资源消耗处理器(Resource Consumption Handler),利用基树遍历器,写入与读出在资源消耗矩阵里的数据,综合个别事务规则库里的规则,决定以下策略的充分条件DMA带宽使用是否过大?QEMU 10环形缓冲内存是否足够?虚拟与非虚拟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)PI0/MMI0 范围,(2)总线中断,(3) 硬件树;当硬件启动时(bootloader and bootstrap),QEMU仿真硬件可用;操作包括发现硬件、指定硬件、控制流量、合并媒体传输管道。其中,控制流量的操作,使用策略执行点(PEP)来分流从物理设备经过SiadowABI来的荷载。合并媒体传输管道的操作,使用策略执行点(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技术加速切换,并按设置调整虚拟机的优先级。在本发明的一实施例中,联网总线服务包括若客户端为网络上其它的超级总线,则按照父子树状网结构连接其它超级总线;若客户端为镜像数据库,则要从全局文件系统(GR5)查找镜像文件。若客户端为存储系统,则要从GFS查找存储地址。意即虚拟对象需要转化为物理对象,可用GFS Client 向子网发送散列(hashing)数据(chunk index)和文件名。这种Map-Reduce的过程如下 首先,Master服务器送回chunkhandle,chunk地址。其次,GFS Client向子网发送chunk handle,byte范围。最后,影射子网主机文件chunk (Map),和送回查找到的数据(Reduce);若客户端为网元、网络管理器,则按照多对一的关系连接虚拟网络管理器、网元管理器。在本发明的一实施例中,管理中心进一步包括管理中心处理新建、修改、删除、查找用户及其管理员权限;管理中心以图形界面和/或指令行处理用户与管理员的指令,包括管理用户对话期、虚拟机状态、虚拟机开关机;管理中心管理节点、主机、虚拟机、虚拟存储、虚拟网络、荷载均衡策略、容错策略、 超级总线服务框架,包括网络超级总线的全局文件系统(GFS)服务。在本发明的一实施例中,主机代理进一步包括主机代理以总线架构传讯号的代码路径控制处理内网、虚拟机对事件的反应;主机代理以超级总线传荷载的代码路径处理心跳、机器状态;主机代理从Linux虚拟机服务器控制虚拟机,具体实现是通过Linux标准应用接口 LibVirt控制红帽的企业虚拟机服务器,运软的QServerjn Xen虚拟机服务器。另一方面,本发明的性能服务框架也可以单独提出,作为独立的产品,该性能服务框架包括总线性能服务框架单一系统部署的方法可插入集群系统;使用现成的性能工具sysstate、vmstate、oProfile ;使用性能优化器执行解决方案、瓶颈辨认器分析数据功能、负荷调整器搜集性能数据并调整负荷。
在本发明的一实施例中,性能优化器进一步包括瓶颈辨认器针对辨认出的瓶颈,将已参数化的功能单元经由指令或图形界面来调整性能,其中,VMM特性参数经由虚拟RAM,CPU核数,IPI中断等调整、驱动参数经由虚拟 BIOS, PCI总线,设备调整;以工作负荷调整器的策略管理器来微调事务、经由参数与解决方案来宏调事务;改进性能的解决方案包括Linux大页表、基于协议的API批处理,包括预先分配的内存链、聚合代码路径的调度器。在本发明的一实施例中,瓶颈辨认器进一步包括从集群或单一系统的资源消耗矩阵收集性能数据;统计数据,辨别是否距离正常性能值差距太大,超出瓶颈库所规定的瓶颈范围。在本发明的一实施例中,负荷调整器器进一步包括三个策略管理器PDFs,从不同规则库和/或性能消耗矩阵读出数据,以处理⑴ KVM自然规律决策功能、(2)个别事务性能决策功能、(3)整体事务性能决策功能;四个工作负载调整器PEI^s,从以上三个决策功能PDFs取得策略,执行(1)事务首度分层分路、O) Linux任务调度器将事务重新分层分路、( 处理过载、单点流量爆发 (Burst)影响整体,同层聚合(samelayer aggregation),及其它主机整体的问题,并且执行 (4)按照资源消耗矩阵数据分派事务。在本发明的一实施例中,个别事务性能决策功能进一步包括资源消耗处理器(Resource Consumption Handler),利用基树遍历器,写入与读出在资源消耗矩阵里的数据,综合个别事务规则库里的规则,决定以下策略的充分条件DMA带宽使用是否过大?QEMU 10环形缓冲内存是否足够?虚拟与非虚拟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)”事务的树节点时,如果节点高度转成的层数小于所给层数,则可继续向下找到树节点,取得该节点树槽里的矩阵指针,把矩阵里的单元数据读
出ο
22
在本发明的一实施例中,Linux任务调度器进一步包括调度方法套接机制,可配置半虚拟化调度器、实时调度器、网格调度器。按照需要,取代当前默认的Linux内核调度器CFS ;调整单一事务路径上任务的优先级和时间片;对整体主机事务,如果过载,调整同层聚合的事务,或爆发流量的任务的优先级和时间片。否则,调整影响交通量的事务优先级和时间片;运行任务切换逻辑。在本发明的一实施例中,任务切换逻辑进一步包括提供各种调度器的共通逻辑,包括使用较为通用的任务切换逻辑,符合上述的各种调度器(例如默认的LinuxCFS调度器、半虚拟化调度器、实时调度器、网格调度器)的构成,且利用VTx/SVM技术加速切换,并按设置调整虚拟机的优先级。图1是根据本发明的一实施例的总线架构的结构框图。此总线架构包括用户空间组件011、客户空间组件012、总线013,Linux内核014,VMM015,半虚拟化VMM 016,KVM 017 以及硬件设备018。实线框是本发明涉及的部件;虚线框为现有Linux开源组件或Windows 的操作系统软件。因此,虚线框将不多作说明。图1所示的系统中,用户空间组件011通过总线架构013可以与客户空间组件012 里的虚拟机交流。其中,总线架构013的组件“本地总线”0133会与Linux内核014,VMM 015,半虚拟VMM 016互动,而由KVMO17的虚拟中断017 2来提供用户空间、客户空间、内核空间的切换。这样,虚拟机的驱动0121,可以以直通方式(意即零拷贝)或非直通方式与共享或指定的硬件设备018进行IO操作。其中,后端影子设备0161,后端虚拟设备0162,AIO 服务代理0141,以及IO服务0164,均参与IO操作。在一个实施方式中,半虚拟VMM 016的参与,表示整个超级总线的操作使可以和原有开源的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/幻的架构不同的是,客户端与服务器之间是网络通讯。在这里的通讯,并不是网络通讯,而仅是主机本地更快速的程序调用或系统调用。更确切的说,应该是虚拟服务消费端(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给出了半虚拟化VMM 016的抽象功能O-半虚拟化基本功能的框架/流程混和图。该功能的目的就是提供绕过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,. . .,η交流,因而能把负荷经由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/VMM0M完成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") 0组件0731利用多播或广播器0732向虚拟机1,0722,...虚拟机n,0723,的驱动1,07221,...,驱动n,07231发送虚拟中断07321 (虚拟中断的实施例之一就是图22的 “虚拟中断”)。这些驱动通过共享物理内存0733(共享物理内存的实施例之一就是图23 的“10环形缓冲管理器”)读写网络或硬盘的荷载,并将IO结果通知虚拟机1,...,虚拟机 η (或不经过共享物理媒介而用DMA)。本地总线功能5 超级总线管理应用二讲制接口 ISA/ABI图8是根据本发明的一实施例的总线架构的总线设备管理器功能的组成框图。图 8给出本地总线功能5:超级总线管理应用二进制接口的组成框图。超级总线设备管理器主要是为了虚拟设备的发现、指定、及设备数据流量和通道的控制。本功能特别强调超级总线能够管理应用二进制接口 ISA/ABI。由图可见,用户空间的设备管理器081经由Linux系统调用向虚拟机设备发出下列指令发现设备、指定设备、控制流量、合并流媒体输送管道。在内核空间的超级总线083 有个超级总线的设备管理代理0831。该设备管理代理的目的是,经由广播器0832,向多个虚拟机082的虚拟设备前端0821广播,传达由设备管理器081下达的指令。首先,在预设值阶段,这些虚拟设备被发现、被指定名字、其结果都会经由设备管理代理0831传回设备管理器081。设备管理器081也会公告该虚拟设备于广域(全局) VMMs0其中最重要的是,设备管理代理0831将共享物理媒体0833建立为应用二进制接口 084的虚拟设备后端,以便管理应用二进制接口 ISA/ABI 084。随后,当虚拟机082有IO操作,需要应用二进制接口 ISA/ABI 084读或写真实硬件设备的荷载时,受到超级总线的管理,共享物理媒体就经由VMM/KVM承接了这一荷载,与虚拟机082的虚拟设备前端0821互动,并且利用流量控制器08331来控制数据流量、控制带宽、容错、合并流媒体输送管道、而且保证服务品质QoS。流量控制器08331并将结果通知设备管理代理0831,而设备管理代理0831再转而通知设备管理器081。超级总线设备管理器的实施例就是图M的“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实施例之二。M^MXfim 7韵里H图10是根据本发明的一实施例的总线架构的以策略及影子ISA/ABI来管理设备功能的组成框图。图10给出本地总线功能7 以策略及影子应用二进制接口来管理设备的组成框图。本功能将上两功能合并,因而可以用策略管理虚拟设备(也就是逻辑设备)。并且建立影子应用二进制接口,可与各个虚拟机互动,最终再把负荷传给真实应用二进制接口,这样可以把多次IO以一次硬件的读写完成。用户空间组件101包含了策略规则库1011,规则库管理员界面1012,和设备管理器1013。超级总线103则包含了设备管理器代理1031,超级总线决策的功能(PDF) 1032、影子ISA/ABI 1033,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/ABI 1033有广播的功能,能与多个虚拟机102互动。每当虚拟机有IO操作时,各策略执行点在虚拟设备对流量、媒体管道监控的情况下,被IO操作触发而执行策略。影子ISA/ABI 1033并在聚合IO操作的结果后,向真实的二进制接口做一次读写。图观的具有策略及影子ISA/ABI的设备管理器是本功能的实施例。本地总线功能8 安全管理图11是根据本发明的一实施例的总线架构的安全管理功能的组成框图。图11 给出本地总线功能8 安全管理的组成框图。超级总线安全管理的目的是在防止骇客攻击,并保护产品许可证的实施。这一安全设施的优势为安全的保护是在操作系统的第二环以下(环0或环1),所以遭受攻击的可能性非常低。其特性是将信任平台模块(Trusted Platform Module,或TPM)技术的散列值的计算,分别实施在主机与周边模块(或存储),加以核对,如果不符则产品停止运行。本设施并支持远程产品的安全核对,因而将此一技术, 扩充成一个从主机开始的安全链。 图中显示,用户空间组件111包含远程应用1111,本地应用1112(例如VDI产品), 远程安全设施闸门1113,与本地安全设施闸门1114。超级总线113则包含应用软件散列值计算器1131,签了名的应用软件散列值1132,与超级总线的安全设施代理1133。其中超级总线的安全设施代理1133还包含ΜΜΙ0/ΡΙ0的操作11331,与安全监控器11332。硬件则包含周边模块114,与存储115。周边模块114还包括安全设施密封存储1141。如图所示,无论是远程应用1111或本地应用1112,都必须通过远程安全设施闸门 1113和与本地安全设施闸门1114,核对超级总线的散列值。在超级总线方面,应用软件散列值计算器1131根据测验认证的公钥(Attestation Identification Key,或AIK)临时算出散列值,签了名的应用软件散列值1132加以签名,然后将该值传递给超级总线的安全设施代理1133。安全设施代理1133使用内存映射Ι0(Μ ΜΙ0)或端口 IO(PIO) 11331的协议方式向周边模块114或存储115作出核对散列值的发问。周边模块114或存储115倚赖安全设施密封存储1141或1151来回应该发问。安全监控器11332在监控过程中如果发现发问 /回应有误,则终止产品的运行。图四的安全设施操作是本功能的实施例。本地总线功能9:性能服务图12是根据本发明的一实施例的总线架构的性能服务功能的组成框图。图12给出本地总线功能9 性能服务的组成框图。性能服务提供有关增强虚拟机性能的服务模块。 其中包含了管理员手动、与程序自动的性能服务。虽然也包含Linux的一般开源或第三方商用性能工具,但最重要的工具乃是使用超级总线提供的工作负载调整器。这一调整器使用基树数学模式,将在代码路径上的各个执行点收集到的数据加以应用,可以控制超级总线各功能实施时的性能,并可结合统计方法,作出性能的最大优化。用户空间组件121包含了现有性能工具1211,性能服务组成框图形界面1212,瓶颈辨认器1213,性能优化器1214,工作负载调整器(PDF) 1215,策略管理器1216,规则库 1217,与历史/统计性能数据库1218。超级总线123则包含了任务调度器1231,虚拟化内存管理器1232,各式策略执行点PEP1233 (PEP 1,. . . ,PEPn),以及基树遍历器12;34。硬件包含内存口4。在性能服务图形界面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的10 操作可以绕过QEMU仿真器,直接利用应用二进制接口 134读写硬件数据。图;35的联网超级总线服务生产端(Network HyperBus ServiceProducer)是本功能的实施例。实现方式举例_既述图14是根据本发明的一实施例的总线架构的抽象概念与实施例的对应关系。图 14给出超级总线实施例的组成框图。本图是为了说明图1的抽象概念如何实施而绘制。 此超级总线实施例的架构包括用户空间组件141、客户空间组件142、超级总线本身143, Linux内核144,VMM 145,半虚拟化VMM 146,KVM 147以及硬件设备148。实线框是本专利涉及的软件;虚线框为现有Linux开源组件或Windows的操作系统软件。因此,虚线框将不多作说明。图14所示的系统中,用户空间组件141通过超级总线本身143可以与客户空间组件142里的虚拟机交流。其中,超级总线143的组件“当地超级总线” 1433会与Linux内核144,VMM 145,半虚拟VMM 146互动,而由KVM 147的ICCM/Upcall虚拟中断1472来提供用户空间、客户空间、内核空间的切换。这样,虚拟机的ICCM/Upcall驱动1421,可以以
30直通方式(意即灵拷贝)或非直通方式与共享或指定的硬件设备148进行IO操作。其中, ICCM/KVM后端影子设备1461,ICCM/QEMU后端虚拟设备1462,ICCM AIO服务代理1441,以及VirtIO服务1464,均参与IO操作。在一个实施方式中,半虚拟VMM 1416的参与,表示整个超级总线的操作使可以和原有开源的Linux的有限半虚拟方法合并使用。另外,设备管理器1411和ICCM设备服务代理1443则能对数据的媒体类型、流量作控制。以上的简略说明,涵盖了当地超级总线1433的实施例ICCM(图15和16)、向上调用(图21)、PDF/PEP (图 25或图28)、与安全设施操作(图四)。超级总线1413的另一组件,“超级总线性能服务框架/工作负载调整器” 1431,其作用是使管理员自动或手动灵活调整系统的性能。主机代理1414可以经由14141的策略管理器来操控,1463基树遍历器则被用来在Linux内核里收集性能信息,并可能通过Linux 内核量身定制的任务调度器1442改变任务的时间片。以上的简略说明,涵盖了超级总线服务框架1431的实施例(图30)。在一个实施方式中也说明了超级总线143的组件“联网超级总线服务器” 1432的操作。由于当地超级总线仅仅作用在主机本身,联网超级总线则能调配远端其它主机的存储和虚拟机镜像,并能对在树状网络上的全部主机,施行管理。以上的简略说明,涵盖了联网超级总线服务器1432的实施例(图35)。对象之间通信机制虚拟服各牛产端(ICCM VSP)图15给出对象之间通信机制虚拟服务生产端(ICCM VSP)的处理流程图。虚拟服务生产端不但会把性能调整器的策略传递给虚拟文件系统(vre),而且会处理虚拟服务生产端传来的同步或异步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共享内存驱动。若是BlocklO,转入步骤 1615,若是VirtIO共享内存驱动,转入步骤1614 ;步骤1614,通过主机的VIRTIO共享内存机制(图17)完成IO的读写,转入步骤 1602 ;
步骤1615,VM-QEMU-KVM使用Intel或AMD虚拟化机制,转入步骤1616 ;步骤1616,判断是否VFS决定将荷载传至VSC文件系统。若是,转入步骤1618,否则转入步骤1617 ;步骤1617,VFS将荷载传至EXt3或等文件系统,转入步骤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操作,需要iTrap ;步骤1702,Linux内核的内存共享后端模块接收iTrap,再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,若是 BlocklO,转入步骤 1908 ;步骤1907,读写共享内存,转入步骤1919 ;步骤1908,读写磁盘或网络,转入步骤1919 ;步骤1909,判断操作是否接受UPCALL中断并处理数据。若是,转入步骤1910,否则转入步骤1912 ;步骤1910,发送数据给磁盘设备,转入步骤1911 ;步骤1911,发送完成通知,释放IO环形数列转入步骤1906 ;步骤1912,判断操作是否VIRTIO接口。若是,转入步骤1913,否则转入步骤 1917 ;步骤1913,判断是磁盘IO或网络10。若是磁盘10,转入步骤1913,若是网络10,转入步骤1913 ;步骤1914,VirtIO磁盘驱动的相关数据,可以快速地,双向地传递到Linux,转入步骤1915 ;步骤1915,实现零拷贝,利用分流(multiplexing) DMA和I0MMU,转入步骤1919 ;步骤1916,完成TCP/UDP-IP over infiniband或零拷贝通讯,转入步骤1919 ;步骤1917,判断操作是否挂起或卸掉。若是,转入步骤1918,否则转入步骤1920 ;步骤1918,实现挂起或卸掉设备,转入步骤1919 ;步骤1919,正常返回;步骤1920,错误返回。零拷贝图20给出零拷贝的处理流程图。零拷贝处理同步、异步的磁盘或网络数据传输,取得环形缓冲地址,进行双重翻译数据地址并加锁,并在缺页时通过Linux系统调用 mmapO找到缺页的物理页,实现DMA读写,返回用户,解锁,释放环形缓冲。目的是尽量使用用户空间任务,不走内核,避免程序繁琐性能低。本图是功能0,1,2,3,4的实施例。具体流程如下步骤2001,零拷贝的初始化;步骤2002,判断操作是否接受同步数据。若是,转入步骤2003,否则转入步骤 2009 ;步骤2003,从磁盘或网络得到数据缓冲区的地址,转入步骤2004 ;步骤2004,实行双重翻译得到物理地址,并且加锁,转入步骤2005 ;步骤2005,从环形缓冲管理器得到接受环地址,转入步骤2006 ;步骤2006,缺页时通过mmap ()找到缺页的物理页,然后转入步骤2007 ;步骤2007,实行DMA读入,转入步骤2008 ;步骤2008,返回用户,解锁,释放环形缓冲转入步骤20 ;步骤2009,判断操作是否送出同步数据。若是,转入步骤2010,否则转入步骤 2016 ;步骤2010,从用户得到数据缓冲区的地址,转入步骤2011 ;步骤2011,实行双重翻译得到物理地址,并且加锁,转入步骤2012 ;步骤2012,从环形缓冲管理器得到送出环地址,转入步骤2013 ;步骤2013,缺页时通过mmapO找到缺页的物理页,转入步骤2014 ;步骤2014,实行DMA写出,转入步骤2015 ;步骤2015,返回磁盘或网络,解锁,释放环形缓冲,转入步骤20 ;步骤2016,判断操作是否处理事件。若是,转入步骤2017,否则转入步骤2020 ;步骤2017,建立事件数据结构,转入步骤2018 ;步骤2018,利用事件协议功能群里的函数读写事件数据,转入步骤2019 ;步骤2019,取得下一事件,转入步骤20 ;步骤2020,判断操作是否接受异步数据。若是,转入步骤2021,否则转入步骤 2024 ;步骤2021,相同于接受同步数据的操作双重翻译数据地址并加锁,取得接受方环形缓冲,并完善缺页,转入步骤2022 ;步骤2022,aiO_reCV()接受网络数据;aio_reCV_f ile ()接受磁盘数据,转入步骤 2023 ;步骤2023,受到完成事件后发出通知,解锁,释放环形缓冲,转入步骤20 ;步骤20 ,判断操作是否送出异步数据。若是,转入步骤2025,否则转入步骤 2029 ;步骤2025,相同于送出同步数据的操作双重翻译数据地址并加锁,取得送出方环形缓冲,并完善缺页,转入步骤20 ;步骤2(^6,aio_Send()接受网络数据;ai0_Send_file()接受磁盘数据,转入步骤 2027 ;步骤2027,受到完成事件后返发出通知,解锁,释放环形缓冲,转入步骤20 ;步骤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对于中断的处理,不一定是人为注入。这里为了说明细节,提到的是htel 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,判断是否虚拟机执行匪I中断。若是,转入步骤2206,否则转入步骤 2220 ;步骤2206,判断是否为有关TPR的指令,若是,转入步骤2207,否则转入步骤 2209 ;步骤2207,判断是否该指令VMCS的IPR影子小于阈值,若是,转入步骤2208,否则转入步骤2220 ;步骤2208,拦截该中断,然后再送出虚拟中断。转入步骤2220 ;步骤2209,判断是中断窗的退出还是外在中断的退出,若是中断窗的退出,转入步骤2210,若是外在中断的退出,转入步骤2211 ;步骤2210,设定中断窗的退出,虚拟机准备接受中断。转入步骤2220;步骤2211,设定外部中断退出,虚拟机准备接受外部中断(不论虚拟机是否屏蔽了中断)。转入步骤2220 ;步骤2212,判断操作是否VMEntry。若是,转入步骤2213,否则转入步骤2218 ;步骤2213,发送虚拟中断KVM注入事件/中断,转入步骤2214 ;步骤2214,判断操作是否虚拟机准备好被中断。若是,转入步骤2216,否则转入步骤 2215 ;步骤2215,设定hterrupt-window退出,使虚拟机在下一个VMExit后准备接受中断。转入步骤2203;步骤2216,虚拟机准备加载处理器状态,转入步骤2222 ;然而,在时序上,虚拟机代码有步骤2217的操作步骤2217,中断后,进入虚拟机代码。这是虚拟机的操作VMX root操作变为非 root操作;处理器状态=虚拟机状态+主机状态;凡VMM可处理的寄存器不必加载,可由 VMM自行度量处理,以增加性能;
37
步骤2218,,判断操作是否超级调用(hypercall)。若是,转入步骤2219,否则转入步骤2222 ;步骤2219,处理超级调用。步骤2220,系统错误Exception处理,然后转入步骤2221 ;步骤2221,判断是否VMS NM#6已设。若是,转入步骤2219,否则转入步骤2222 ;步骤2222,其他中断操作,然后转入步骤2202。IO 环形缓冲管理器(10 Ring Buffer Manager)图23给出IO环形缓冲管理器的处理流程图。本图是功能4的部分实施例。为了处理中断并发的问题,在环形缓冲结构之外,另有中断权限数列结构,每一数列元素包含权限数据与指向环形缓冲的指针。当中断发生,中断处理器迅速遍历该数列结构,按照中断的权限把数列元素向前提升。也就是说,如果对应该中断的数列元素权限小于或等于当前数列元素的权限,该元素的位置不动。否则中断的数列元素就要向前晋升。具体流程如下步骤2301,IO环形缓冲管理器的初始化,然后转入步骤2302 ;步骤2302,判断操作是否为设定IO环形数列。若是,转入步骤2303,否则转入步骤 2305 ;步骤2303,0pen_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设备管理器代理图M给出ICCM设备管理器代理的处理流程图。它的初始化特性为KVM利用 openfirmware的bytecode监控(1)PI0/MMI0范围,(2)总线中断,(3)硬件树;当硬件启动时(bootloader and bootstrap),QEMU用。ICCM设备管理器代理的操作包括发现硬件、指定硬件、控制流量、合并媒体传输管道。其中,控制流量的操作,使用分流规则来分流从物理设备经过ABI的荷载。本流程图为功能5的实施例。具体流程如下步骤MOl,KVM 利用 openfirmware 的 bytecode 监控(1)PI0/MMI0 范围,O)总线中断,(3)硬件树,然后转入步骤对02 ;步骤2402,当硬件启动时(bootloader and bootstrap),QEMU仿真硬件可用。转入步骤2403 ;步骤M03,超级总线设备管理器初始化。转入步骤M04 ;步骤M04,判断操作是否为发现设备。若是,转入步骤2405,否则转入步骤对09 ;步骤M05,判断是否为可虚拟化的设备(例如ΜΜΙ0)。若是,转入步骤M06,否则转入步骤M04 ;步骤M06,超级总线设备管理器调整该虚拟设备。转入步骤M07 ;步骤M07,其它虚拟设备也相应调整(物理硬件利用分流方法导致这种调整)。步骤M08,判断操作是否为指定设备。若是,转入步骤对09,否则转入步骤M12 ;步骤M09,判断是否为可虚拟化的设备(例如匪10)。若是,转入步骤M10,否则转入步骤2408;;步骤M10,超级总线设备管理器设定该设备为虚拟设备。转入步骤Mll ;步骤Mll,公告该设备于广域(全局)VMMs ;步骤M12,判断操作是否为控制流量。若是,转入步骤对13,否则转入步骤M16 ;步骤M13,使用分流规则来分流从物理设备经过ABI的荷载。转入步骤M14 ;步骤M14,控制共享物理媒介的荷载流量。转入步骤M15 ;步骤M15,将荷载传至虚拟机;步骤M16,判断操作是否为合并通讯管道。若是,转入步骤M17,否则转入步骤 2419 ;步骤M17,操作合并通讯管道。转入步骤M18 ;步骤M18,处理错误和服务品质QoS ;步骤2419,报错返回。工作负载调整器(WorkloadMediator)图25给出工作负载调整器的组成框和流程的混合图。这是功能2,6,8的实施例。图中实现了 3个策略管理器决策功能(PDFs) 252,4个工作负载调整器策略执行点 (PEPs) 251。列述如下三个策略管理器PDFs是从不同规则库和/或性能消耗矩阵读出数据,以处理(1) KVM自然规律决策功能、(2)个别事务性能决策功能、(3)整体事务性能决策功能;
四个工作负载调整器PER是从以上三个决策功能取得策略,以执行(1)事务首度分层分路、O) Linux任务调度器将事务重新分层分路、( 处理过载、单点流量爆发 (Burst)影响整体,同层聚合(same layeraggregation),及其它主机整体的问题,并且执行 (4)按照资源消耗矩阵数据分派事务。具体流程如下步骤2501,工作负荷调整器的初始化后,等待事务请求。一等到事务来到,就进行步骤2502 ;步骤2502,判断是否要将事务初始静态分路分层。若是,转入步骤2503,否则转入步骤2508 ;步骤2503,按照事务的KVM自然规律分层分路,转入步骤2504 ;步骤2504,创建基树的节点,转入步骤2505 ;步骤2505,基树基本遍历器创建节点,转入步骤2508 ;以上步骤2503,2504和2505是第一个工作负载调整器策略执行点(PEPl)的逻辑;方框2506是KVM自然规律策略库;步骤2507,策略管理器处理KVM自然规律,转入步骤2508,也就是把KVM自然规律传递给第一个工作负载调整器策略执行点(PEPl);以上方框2506和步骤2507组成第一个策略管理器决策功能(PDFl);步骤2508,判断是否要将事务动态调度(schedule)。若是,转入步骤2509,否则转入步骤2513 ;步骤2509,Linux任务调度器将事务重新分层分路,转入步骤2510 ;步骤2510,调用基树基本遍历器删除单一事务旧基树的节点,再重新创建新节点, 转入步骤2513 ;以上步骤2509,和2510是第二个工作负载调整器策略执行点(PEP》的逻辑;方框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是第三个工作负载调整器策略执行点(PEP!3)的逻辑;
方框2516为整体性能策略库,以下为一些样本策略策略1 工作负荷移向深层槽以增加效率。策略2 只调度同层的事务。策略3 事务尽量不必经历中断步骤2517,策略管理器触发策略,经由资源消耗处理器读出矩阵数据,计算整体性能数据,然后转入步骤2514,也就是把个别事务性能策略传递给第三个工作负载调整器策略执行点(PEP3);以上方框2516和步骤2517组成第三个策略管理器决策功能(PDF3);步骤2518,判断是否要分派事务。若是,转入步骤2519,否则转入步骤2522 ;步骤2519,从资源消耗处理器读出矩阵数据,转入步骤2520 ;步骤2520,按照资源消耗矩阵数据分派事务,转入步骤2521 ;步骤2521,启动事务(ICCM多路复用,向上调用,等等);以上步骤2519,2520和2521是第四个工作负载调整器策略执行点(PEP4)的逻辑;步骤2522,错误返回。资源消耗处理器(ResourceConsumption Handler)图沈给出资源消耗处理器的组成框和流程的混合图。本图是功能6的实施例。包含了两个策略执行点。左边的方框261是性能数据写入器的策略执行点PEP1,右边的方框 262是性能数据读出器的策略执行点PEP2。资源消耗处理器(Resource Consumption Handler),利用基树遍历器,写入与读出在资源消耗矩阵里的数据,综合个别事务规则库里的规则,决定以下策略的充分条件DMA带宽使用是否过大?QEMU 10环形缓冲内存是否足够?虚拟与非虚拟QEMU桥Out-of-band控制讯号是否太慢?共享内存是否足够?双重地址翻译GVA_>GPA,GPA_>HPA是否批处理时间过长?V-TLB的缓存页miss hit次数是否太多?KVM IRQfd中断注入是否批处理时间过长?GPU祯缓存Out-o f-band控制讯号是否太慢?最大并发量是否过大?线程、进程是否过长?用户栈是否足够?具体流程如下步骤沈01,基树处理的写入器初始化,包括基树基本遍历器的初始化,和建立资源消耗矩阵池。转入步骤沈02;步骤沈02,判断是否运行第一层VM SCSI/NDIS功能,若是,转入步骤沈03,否则转入步骤沈04 ;步骤沈03,写入DMA带宽和QEMU 10环形缓冲内存大小。转入步骤沈19 ;步骤沈04,判断是否运行第二层QEMU功能。若是,转入步骤沈05,否则转入步骤
412606 ;步骤2605,写入虚拟与非虚拟QEMU桥Out-of-band控制讯号时间和共享内存大小。转入步骤2619;步骤沈06,判断是否运行第三层内核及虚拟驱动功能。若是,执行步骤沈07, 2608,2609,和2610,否则转入步骤2611 ;步骤沈07,写入完成双重地址翻译批处理的时间。转入步骤沈19 ;步骤沈08,写入V-TLB的缓存页miss hit次数。转入步骤沈19 ;步骤沈09,写入KVM IRQfd中断注入批处理的时间。转入步骤沈19 ;步骤沈10,写入GPU祯缓存Out-of-band控制讯号时间和共享内存大小。转入步骤 2619 ;步骤沈11,判断是否运行第四层非虚拟驱动。若是,转入步骤沈12,否则转入步骤 2606 ;步骤沈12,写入最大并发量与总带宽。转入步骤沈19;步骤沈13,判断是否运行第五层物理机功能。若是,转入步骤沈14,否则转入步骤 2615 ;步骤沈14,写入线程、进程时间、用户栈大小。转入步骤沈19;步骤沈15,判断整个事务是否已承诺(commit)。若是,转入步骤沈16,否则转入步骤 2621 ;步骤沈16,将整个事务经历的时间写入资源消耗矩阵。转入步骤沈17;步骤沈17,将资源消耗矩阵的数据写入历史数据库。转入步骤沈18 ;步骤沈18,删除基树的对应节点。转入步骤沈19;步骤沈19,进入基树遍历器。转入步骤沈20 ;步骤沈20,正常返回;步骤洸21,错误返回;以上步骤沈01至沈21是性能数据写入器的策略执行点PEPl的逻辑。步骤沈22,单一事务策略管理器,或称之为PDF决策功能,经常检查策略库中的各种单一事务策略沈对,2628 J630,2632 J634,2636 J638 —旦策略符合规定,则交付图25 中的PEP2来执行对应政策。为了实现这样的检查,每个策略会触发相应的PEP步骤2625, 2627,2629,2631,2633,2635,2637,2639。步骤沈23,基树处理的读出器初始化,然后转入步骤沈25 ;步骤2624,检查策略“DMA带宽使用是否过大?”和“QEMU 10环形缓冲内存是否足够?”。然后转入步骤沈25;步骤沈25 ;读出DMA带宽和QEMU 10环形缓冲内存大小。然后转入步骤沈19 ;步骤沈沈,检查策略“虚拟与非虚拟QEMU桥Out-of-band控制讯号是否太慢?,, 和“共享内存是否足够?”。然后转入步骤沈27;步骤沈27 ;读出虚拟与非虚拟QEMU桥Out-of-band控制讯号时间和共享内存大小。然后转入步骤沈19;步骤洸沘,检查策略“V-MMU的双重地址翻译GVA_>GPA,GPA_>HPA是否批处理时间过长?”。然后转入步骤沈四;
步骤沈四;读出完成双重地址翻译批处理的时间。然后转入步骤沈19 ;步骤沈30,检查策略“V-TLB的缓存页miss hit次数是否太多? ”。然后转入步骤 2631 ;步骤沈31 ;读出V-TLB的缓存页miss hit次数。然后转入步骤沈19 ;步骤沈32,检查策略“KVM IRQfd中断注入是否批处理时间过长?”。然后转入步骤 2633 ;步骤沈33 ;读出KVM IRQfd中断注入批处理的时间。然后转入步骤沈19 ;步骤沈34,检查策略“GPU祯缓存Out-of-band控制讯号是否太慢?,,和“共享内存是否足够? ”。然后转入步骤2635 ;步骤沈35 ;读出GPU祯缓存Out-of-band控制讯号时间和共享内存大小。然后转入步骤2619 ;步骤沈36,检查策略“最大并发量是否过大? ”和“总带宽是否足够? ”。然后转入步骤2637 ;步骤沈37 ;读出最大并发量与总带宽。然后转入步骤沈19 ;步骤沈38,检查策略“线程、进程是否过长? ”和“用户栈是否足够? ”。然后转入步骤2639 ;步骤沈39 ;读出线程、进程时间、用户栈大小。然后转入步骤沈19 ;以上步骤沈22至沈39是性能数据读出器的策略执行点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,正常返回;步骤27M,错误返回。H有策略及影子ISA/ABI的设备管理器图观给出具有策略及影子ISA/ABI的设备管理器的流程图。初始化的特性为 KVM利用openfirmware的bytecode监控(1)PI0/MMI0范围,(2)总线中断,(3)硬件树;当硬件启动时(bootloader and bootstrap),QEMU仿真硬件可用。操作包括发现硬件、指定硬件、控制流量、合并媒体传输管道。其中,控制流量的操作,使用策略执行点(PEP)来分流从物理设备经过SiadowABI来的荷载。合并媒体传输管道的操作,使用策略执行点(PEP)合并通讯管道。具体流程如下步骤^01,KVM 利用 openfirmware 的 bytecode 监控(1)PI0/MMI0 范围,(2)总线中断,(3)硬件树,转入步骤观02 ;步骤沘02,当硬件启动时(bootloader and bootstrap),QEMU仿真硬件可用,转入步骤2803 ;步骤观03,超级总线基于决策功能PDF的设备管理器初始化转入步骤观04 ;;步骤观04,判断操作是否发现设备。若是,转入步骤观05,否则转入步骤观08 ;步骤观05,判断是否可虚拟化的设备,例如ΜΜΙ0。若是,转入步骤观06,否则转入步骤2808 ;步骤观06,超级总线设备管理器调整该虚拟设备。转入步骤观07 ;;步骤观07,其它虚拟设备也相应调整(物理硬件利用分流方法导致这种调整;步骤观08,判断操作是否指定设备。若是,转入步骤观09,否则转入步骤观12 ;步骤观09,判断是否为可虚拟化的设备,例如ΜΜΙ0。若是,转入步骤观10,否则转入步骤2812 ;步骤观10,超级总线设备管理器设定该设备为虚拟设备。转入步骤观11 ;步骤2811,公告该设备于广域(全局)VMMs。步骤观12,判断操作是否控制流量。若是,转入步骤观13,否则转入步骤观15 ;步骤观13,使用策略执行点(PEP)来分流从物理设备经过SiadowABI来的荷载转入步骤2814 ;步骤观14,将荷载传至虚拟机;步骤观15,判断操作是合并通讯管道。若是,转入步骤观16,否则转入步骤观18 ;步骤观16,使用策略执行点(PEP)合并通讯管道。转入步骤观17 ;步骤观17,处理错误和服务品质QoS ;步骤2818,报错返回。安全设施操作图四给出安全设施操作的组成框和流程的混合图。本图是功能8的实施例。图中包含两个模块。左边的方框291是USB模块操作;右边的方框292是产品系统操作。USB 硬件模块制造商将Endorsement钥匙对(key pair)写入USB模块,并将公钥(Ekpub)信息交给软件制造商;软件制造商将USB模块硬件安装在产品服务器上,然后进行硬件模块设置、硬件模块升级、软件更新验证。具体流程如下步骤2901,USB模块制造商将Endorsement钥匙对(key pair)写入USB模块,并将公钥(Ekpub)信息交给软件制造商。转入步骤四02;步骤四02,软件制造商将USB模块硬件安装在产品服务器上。转入步骤四04 ;步骤四03,USB模块初始化。转入步骤四04 ;步骤四04,判断操作是否模块设置。若是,转入步骤四05,否则转入步骤四06 ;步骤四05,设置过期值、启动状态、激活状态、软件散列值、其它代码和数据。转入步骤四12 ;步骤四06,判断操作是否模块升级。若是,转入步骤四07,否则转入步骤四08 ;步骤四07,重置过期值、更软件散列值、其它代码和数据;步骤2908,判断操作是否软件更新验证。若是,转入步骤2909,否则转入步骤 2910 ;步骤四09,服务器开机时将USB模块设定新的散列值。转入步骤四16 ;步骤四10,报错返回。以上步骤四01至四10为USB模块操作的逻辑。步骤四11,超级总线安全设施初始化。转入步骤四12;步骤四12,判断操作是否软件设置。若是,转入步骤四13,否则转入步骤四14 ;步骤四13,将公钥Ekpub输入软件;步骤四14,判断操作是否重算散列值。若是,转入步骤四15,否则转入步骤四16 ;步骤四15,重算散列值;步骤四16,判断操作是否软件更新验证。若是,转入步骤四17,否则转入步骤 2919 ;
步骤四17,从USB模块读入新散列值。转入步骤四18 ;步骤四18,从USB模块读入预存验证代码。转入步骤四19 ;步骤四19,判断操作是否系统运行时验证成功。若是,转入步骤四21,否则转入步骤 2920;步骤四20,验证失败处理。转入步骤四21;步骤四21,验证完毕。以上步骤四11至四21为产品系统操作的逻辑。超级总线件能服各框架(PerformanceService Framework)图30给出超级总线性能服务框架流程图。本图为功能9的实施例。超级总线性能服务框架单一系统部署的方法可插入集群系统;服务框架使用现成的性能工具sysstate、vmstate、oProfile ;服务框架使用性能优化器执行解决方案、负荷调整器搜集性能数据并调整负荷、 瓶颈辨认器分析数据功能。具体流程如下步骤3001,服务框架的初始化,转入3002 ;步骤3002,判断服务是否部署(cbploy)。若是,转入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 使用聚合cocbpath的调度器;
步骤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,利用设置当前任务kt_Current_TaSk方法,把下一个虚拟机设成当前任务。转入;3408。步骤3408,执行当前任务。转入3409 ;步骤3409,设定任务结构taSk_Struct,并为量身定制的调度器⑴运行选择的调度方法,(2)利用VTx/SVM技术,加速切换。转入3410;步骤3410,继续不闲置的任务(即虚拟机)或其它闲置的任务(若无虚拟机任务。 转入3402,直到中断发生,继续另一轮循。联网超级总线服务器(NetworkHyperBus Server)图35给出联网超级总线服务器的流程图。本图为功能10的实施例。若客户端为网络上其它的超级总线,则按照父子树状网结构连接其它超级总线;若客户端为镜像数据库,则要从全局文件系统(GR5)查找镜像文件。若客户端为存储系统,则要从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,从全局文件系统(Gre)查找镜像。转入3507 ;步骤;3506,全局文件系统(GFS :Hadoop+MapReduce)的初始化。转入;3507 ;步骤3507,判断是否V2P转变。若是,转入3508,否则,转入3513 ;步骤3508,GFS Client向子网发送散列(hashing)数据(chunk index)和文件名。转入3509 ;步骤3509,Master 服务器送回 chunk handle, chunk 地址。转入 3510 ;步骤;3510,GFSClient 向子网发送 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控制红帽的企业虚拟机服务器,运软的QServerjn 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,管理节点、主机、虚拟机、虚拟存储、虚拟网络、荷载均衡策略、容错策略、超级总线服务框架,包括网络超级总线的全局文件系统(GR5)服务。转入3620;步骤3620,正常返回;步骤3621,错误返回。步骤3622,正常返回;在实际的部署环境中,由于大部分的超级总线与虚拟机操作系统类型完全无关, 所以只要有兼容于该操作系统的驱动,本方法可适用于Windows,Linux,Android,等等KVM 所支持的任何操作系统。另外,对于超级总线方法应用在非Linux KVM的虚拟机监控器 VMM(譬如Xen)的情况,超级总线方法里的任何实施方式,包括联网超级总线、性能服务框架、以及所包含的实施例的性能调整器、修改过的任务调度器,均被视为本专利所保护的对象。最后,本专利实施方式的抽象功能,也能涵盖英特尔和超微以外的x86虚拟化硬件技术,以及非x86的虚拟化硬件技术。根据上述流程的描述可以得出,采用以上虚拟化的增加性能方法,一方面为企业提供了服务器虚拟化的技术,该技术是在超级总线的基础上,创建了性能服务的框架与联网超级总线,让管理员可管理服务器的虚拟化性能、并与远端联网的主机交流、因而可以实现管理远端的超级总线。另一方面,由于超级总线可以通过管理中心和主机代理连接任何虚拟化应用产品(譬如虚拟桌面VDI),故超级总线也可以使用为终端虚拟化的基础设施。综上所述,本发明结合了当地超级总线本身的功能,联网超级总线的功能和性能服务框架,提供了一种企业级的虚拟化增加性能方法和附属的工具。本发明为企业提供了一种实现KVM半虚拟化的方法,该方法是在Linux操作系统内核和KVM的基础上,创建了超级总线的各种组件,让管理员可经由性能服务框架增强 Linux KVM的性能。另外,原有的KVM有限虚拟化方法,也仍然可以与超级总线的组件共同运行。 上述实施例是提供给熟悉本领域内的人员来实现或使用本发明的。熟悉本领域的人员可在不脱离本发明的发明思想的情况下,对上述实施例作出种种修改或变化,因而本发明的保护范围并不被上述实施例所限,而应该是符合权利要求书提到的技术特征的最大范围。
权利要求
1.一种总线架构,用于构建虚拟机监控器,其特征在于,所述总线架构包括总线,所述总线由Linux的基于内核虚拟机(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所述的总线架构,其特征在于,所述虚拟服务消费端通过核心服务线程向VSP分派同步或异步读写请求;以及按工作负荷策略分流事务到不同路径。
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 监控(DPI0/MMI0 范围;(2)总线中断;(3)硬件树;当硬件启动时,使用QEMU仿真硬件;发现硬件、指定硬件、控制流量、合并媒体传输管道,其中控制流量使用分流规则来分流从物理设备经过ABI的荷载。
16.如权利要求2所述的总线架构,其特征在于,所述决策与策略执行点组件选择并部署决策点和执行点,预设决策功能、动态部署并传达策略到策略执行点,其中所述选择并部署决策点和执行点、动态部署并传达策略到策略执行点是基于事件触发。
17.如权利要求16所述的总线架构,其特征在于,所述决策与策略执行点组件包括负荷调整器,负荷调整器包括三个策略管理器,从不同规则库和/或性能消耗矩阵读出数据,执行(1)KVM自然规律决策;(2)个别事务性能决策;(3)整体事务性能决策功能;四个工作负载调整器,从所述三个决策功能取得策略,执行(1)事务首度分层分路;(2)Linux任务调度器将事务重新分层分路;(3)处理过载、单点流量爆发影响整体,同层聚合;(4)按照资源消耗矩阵数据分派事务。
18.如权利要求17所述的总线架构,其特征在于,所述个别事务性能决策包括使用资源消耗处理器,利用基树遍历器写入与读出在资源消耗矩阵里的数据,综合个别事务规则库里的规则,决定以下策略的充分条件 DMA带宽使用是否过大; QEMU IO环形缓冲内存是否足够; 虚拟与非虚拟QEMU桥Out-of-band控制讯号是否太慢; 共享内存是否足够;双重地址翻译GVA->GPA,GPA->HPA是否批处理时间过长;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 禾丨J用 openfirmware 的 bytecode 监控(DPI0/MMI0 范围;(2)总线中断;(3)硬件树;当硬件启动时使用QEMU仿真硬件;发现硬件、指定硬件、控制流量、合并媒体传输管道,其中控制流量使用策略执行点来分流从物理设备经过Shadow ABI来的荷载,合并媒体传输管道使用策略执行点合并通讯管道。
22.如权利要求2所述的总线架构,其特征在于,所述安全服务组件基于散列值实施主机当地总线与周边设备、主机当地总线与主机应用产品、或者主机当地总线与远程产品的身份验证。
23.如权利要求22所述的总线架构,其特征在于,所述所述安全服务组件实现为 USB硬件模块制造商将Endorsement钥匙对写入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()找到缺页的物理页,实现直接内存访问(DMA)读写,返回用户,解锁,释放环形缓冲。
32.如权利要求1所述的总线架构,其特征在于,所述IO驱动接受虚拟设备的IO指令,读写共享内存、磁盘、网络数据;接受非设备的IO指令,读写共享内存、磁盘、网络数据;提供VirtIO接口,利用分流实现直通传输,或利用TCP/UDP-IP-over-Inf iniband完成通讯;挂起及卸除设备。
33.如权利要求2所述的总线架构,其特征在于,所述联网总线进一步包括融合虚拟化和电信管理网络标准,融合虚拟化与Hadoop/MapReduce的全局文件系统,利用标准接口连接虚机服务器,构建管理多个主机上的虚机,多个主机群的网络管理器。
34.如权利要求1所述的总线架构,其特征在于,所述联网总线包括 若客户端为网络上其它的总线,则按照父子树状网结构连接其它总线;若客户端为镜像数据库,则要从全局文件系统(GFS)查找镜像文件。若客户端为存储系统,则要从GFS查找存储地址。意即虚拟对象需要转化为物理对象,可用GFS Client向子网发送散列(hashing)数据(chunk index)和文件名,过程如下首先,Master服务器送回 chunk handle,chunk 地址。其次,GFS Client 向子网发送 chunk handle,byte 范围,最后,影射子网主机文件Chimk(Map)和送回查找到的数据(Reduce);若客户端为网元、网络管理器,则按照多对一的关系连接虚拟网络管理器、网元管理ο
35.如权利要求34所述的总线架构,其特征在于,管理中心处理新建、修改、删除、查找用户及其管理员权限;管理中心以图形界面和/或指令行处理用户与管理员的指令,包括管理用户对话期、 虚拟机状态、虚拟机开关机;管理中心管理节点、主机、虚拟机、虚拟存储、虚拟网络、荷载均衡策略、容错策略、超级总线服务框架,包括网络超级总线的全局文件系统(GFS)服务。
36.如权利要求34所述的总线架构,其特征在于,主机代理以总线传讯号的代码路径控制处理内网、虚拟机对事件的反应; 主机代理以总线传荷载的代码路径处理心跳、机器状态;主机代理从Linux虚拟机服务器控制虚机,具体实现是通过Linux标准应用接口 LibVirt控制红帽的企业虚机服务器,运软的QServerJP Xen虚机服务器。
37.一种通过总线架构构建虚拟机监控器的方法,将Linux的基于内核虚拟机(KVM)转化为虚拟机监控器,所述方法包括构建总线,所述总线由Linux的基于内核虚拟机(KVM)实现,所述总线包括性能服务器、联网总线和本地总线; 构建KVM组件;构建客户空间组件,所述客户空间组件包括操作系统虚拟机的驱动程序; 构建用户空间组件,所述用户空间组件包括用户空间应用库、策略管理器、设备管理器、对外接口以及虚拟机管理器;构建半虚拟化组件,所述半虚拟化组件包括虚拟中断、IO驱动和直通传输装置,其中所述虚拟中断基于VMExit和VMEntry切换内核状态与客户空间状态,所述IO驱动绕过QEMU 仿真代码解决同步和异步的IO讯号以及负载的传输,所述直通传输装置实现直通传输。
38.一种性能服务框架,其特征在于,包括性能服务器将性能服务框架单一系统部署的方法插入集群系统; 使用现成的性能工具sysstate、vmstate、oProfile ;使用性能优化器执行解决方案、负荷调整器搜集性能数据并调整负荷、瓶颈辨认器分析数据功能。
39.如权利要求38所述的性能服务框架,其特征在于,所述性能优化器针对辨认出的瓶颈,将已参数化的功能单元经由指令或图形界面来调整性能,其中,VMM特性参数经由虚拟RAM、CPU核数、IPI中断等调整、驱动参数经由虚拟BIOS、PCI总线、设备调整;经由工作负荷调整器的策略管理器来微调事务、经由参数与解决方案来宏调事务; 所述调整性能包括Linux大页表、基于协议的API批处理,包括预先分配的内存链、聚合代码路径的调度器。
40.如权利要求39所述的性能服务框架,其特征在于,所述瓶颈辨认器从集群或单一系统的资源消耗矩阵收集性能数据;并统计数据,辨别是否距离正常性能值差距太大,超出瓶颈库所规定的瓶颈范围。
41.如权利要求38所述的性能服务框架,其特征在于,负荷调整器包括 三个策略管理器,从不同规则库和/或性能消耗矩阵读出数据,执行(1)KVM自然规律决策;(2)个别事务性能决策;(3)整体事务性能决策功能;四个工作负载调整器,从所述三个决策功能取得策略,执行(1)事务首度分层分路;(2)Linux任务调度器将事务重新分层分路;(3)处理过载、单点流量爆发影响整体,同层聚合;(4)按照资源消耗矩阵数据分派事务。
42.如权利要求41所述的性能服务框架其特征在于,所述个别事务性能决策包括使用资源消耗处理器,利用基树遍历器写入与读出在资源消耗矩阵里的数据,综合个别事务规则库里的规则,决定以下策略的充分条件 DMA带宽使用是否过大; QEMU IO环形缓冲内存是否足够; 虚拟与非虚拟QEMU桥Out-of-band控制讯号是否太慢; 共享内存是否足够;双重地址翻译GVA->GPA,GPA->HPA是否批处理时间过长;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内核调度器CFS ;调整单一事务路径上任务的优先级和时间片;对整体主机事务,如果过载,调整同层聚合的事务,或爆发流量的任务的优先级和时间片,否则调整影响交通量的事务优先级和时间片; 运行任务切换逻辑。
45.如权利要求44所述的性能服务框架,其特征在于,所述运行任务切换逻辑包括 提供各种调度器的共通逻辑,包括通用任务切换逻辑,Linux CFS调度器、半虚拟化调度器、实时调度器、网格调度器的构成,且利用VTx/SVM技术加速切换,并按设置调整虚拟机的优先级。
全文摘要
本发明揭示了一种总线架构,用于构建虚拟机监控器,总线架构包括总线,总线由Linux的基于内核虚拟机(KVM)实现,总线包括性能服务器、联网总线和本地总线;KVM组件;客户空间组件,包括操作系统虚拟机的驱动程序;用户空间组件,包括用户空间应用库、策略管理器、设备管理器、对外接口以及虚拟机管理器;半虚拟化组件,半虚拟化组件包括虚拟中断、IO驱动和直通传输装置,其中虚拟中断基于VMExit和VMEntry切换内核状态与客户空间状态,IO驱动绕过QEMU仿真代码解决同步和异步的IO讯号以及负载的传输,直通传输装置实现直通传输。
文档编号G06F13/40GK102262557SQ20101018384
公开日2011年11月30日 申请日期2010年5月25日 优先权日2010年5月25日
发明者汤传斌, 王彦新 申请人:运软网络科技(上海)有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1