CN103140830A - 对虚拟网络的输入/输出进行控制的系统和方法 - Google Patents

对虚拟网络的输入/输出进行控制的系统和方法 Download PDF

Info

Publication number
CN103140830A
CN103140830A CN2011800459021A CN201180045902A CN103140830A CN 103140830 A CN103140830 A CN 103140830A CN 2011800459021 A CN2011800459021 A CN 2011800459021A CN 201180045902 A CN201180045902 A CN 201180045902A CN 103140830 A CN103140830 A CN 103140830A
Authority
CN
China
Prior art keywords
virtual machine
program
data
supervisory
supervisory process
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.)
Granted
Application number
CN2011800459021A
Other languages
English (en)
Other versions
CN103140830B (zh
Inventor
考什克·C·巴德
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Publication of CN103140830A publication Critical patent/CN103140830A/zh
Application granted granted Critical
Publication of CN103140830B publication Critical patent/CN103140830B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45541Bare-metal, i.e. hypervisor runs directly on hardware
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45579I/O management, e.g. providing access to device drivers or storage

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

根据一项实施例,一种在服务器上运行虚拟机的方法,所述方法包括:使用在所述服务器上运行的第一监管程序(310)对分配给所述虚拟机的数据路径资源进行控制,对数据路径资源进行控制包括对耦接到到所述服务器的硬件接口设备(316)的数据路径进行控制;以及使用在所述服务器上运行的第二程序(304)对所述硬件接口设备的控制路径和初始化资源进行控制,其中所述第二程序(304)与所述第一监管程序(310)分开。

Description

对虚拟网络的输入/输出进行控制的系统和方法
本发明要求2010年10月1日递交的发明名称为“加速网络路径:使用网络接口卡辅助的多队列来提高虚拟网络输入/输出性能的新方法”的第61/389,071号美国临时申请案以及2011年9月28日递交的发明名称为“对虚拟网络的输入/输出进行控制的系统和方法”的第13/247,578号美国申请案的在先申请优先权,这两个在先申请的内容以引入的方式并入本文本中。
技术领域
本发明涉及计算机服务器,且在特定实施例中,涉及一种用于对虚拟网络的输入/输出(IO)进行控制的系统和方法。
发明背景
已知,虚拟化技术可作为各种云部署的核心基础架构即服务(IaaS)的骨干。在过去约10年里,x86硬件辅助的进步为注重性能和缩放性的虚拟化解决方案铺平了道路。管理程序,也称为虚拟机监视器(VMM),针对作为客机(guest)运行的操作系统(OS)采用软件指令拦截机制来模仿中央处理器(CPU)、存储器以及IO资源。正确编写的VMM可向客机OS提供可靠、安全且准确的系统视图。
VMM可使用半虚拟化来确保相干的CPU、存储器和IO响应。对于CPU虚拟化而言,在虚拟化技术(VT)扩展实施之前,诸如VMWare/Xen等VMM使用仿真基础输入/输出系统(BIOS)、CPU调度器及复杂的环和指令仿真,以“捕获并执行”实际CPU核心上的虚拟指令。但是,现代CPU可处理好客机对根分区,并为VMM卸下CPU虚拟化的重担。这通常通过向来自物理CPU上的客机的“一批”已执行的指令集合提供CPU指令来实现。诸如由英特尔
Figure BDA00002953659900021
和超威半导体
Figure BDA00002953659900022
等生产的主X86架构提供安全虚拟机(SVM)/虚拟机扩展(VMX)指令,以进行VMENTER/VMEXIT操作。此外,CPU进行了改良,例如,标记旁路转换缓冲区(TLB)、暂停-循环退出(PLE),以及虚拟处理器标识符(VPID),从而减少客机CPU共享所需的CPU周期数。存储器优化还注重通过使页表有阴影、优化由VMEXIT造成的客机地址转换和开销来减少客机页面迭代。
IO虚拟化仍是提高虚拟化IO性能和缩放性的重要方面,且网络IO是深受关注的网络虚拟化的核心方面之一。已应用诸如多队列、用于直接设备连接的基于英特尔的虚拟化技术(VT-d)、单根IO虚拟化(SR-IOV)等基于硬件的虚拟化技术及其基于软件的虚拟化终点,例如,Xen隔离设备驱动域(IDD)和网络信道(Netchannel)2,以提高每个客机的整体网络接口卡(NIC)性能,但在诸如CPU加载、基础架构成本、以及数据安全性等方面仍有待提高。
发明内容
根据一项实施例,一种在服务器上运行虚拟机的方法,其包括:使用在所述服务器上运行的第一监管程序对分配给所述虚拟机的数据路径资源进行控制,对数据路径资源进行控制包括对耦接到所述服务器的硬件接口设备的数据路径进行控制;以及使用在所述服务器上运行的第二程序对所述硬件接口设备的控制路径和初始化资源进行控制,其中所述第二程序与所述第一监管程序分开。
根据另一项实施例,一种针对运行多个虚拟机操作服务器系统的方法,其包括:加载控制平面程序;加载监管程序,将虚拟机实例化,经由所述监管程序在所述虚拟机和硬件接口设备之间控制数据路径资源,以及经由所述控制平面程序对所述硬件接口设备的控制路径和初始化资源进行控制。
根据又一实施例,一种用于虚拟机的数据处理系统,其包括:处理器;耦接到所述处理器的存储器;以及接口端口,其用于耦接到与所述处理器分开的硬件网络接口设备。所述处理器用于运行第一程序,所述第一程序经由所述接口端口在与所述虚拟机相关的包队列和所述硬件网络接口中的包队列之间传输数据。该程序进一步用于运行第二程序,所述第二程序控制所述硬件网络接口设备的配置,所述第二程序与所述第一程序分开。
根据另一实施例,一种非瞬时计算机可读媒体中存储了可执行程序。所述程序指示处理器执行以下步骤:加载控制平面程序;加载监管程序;将虚拟机实例化;经由所述监管程序在所述虚拟机和硬件接口设备之间控制数据路径资源;以及经由所述控制平面程序对所述硬件接口设备的控制路径和初始化资源进行控制。
上文已相当广泛地概述了本发明实施例的特征,从而有助于更好地理解下文对本发明的详细说明。下文将说明本发明各项实施例的其他特征和优点,这些特征和优点构成本发明的权利要求书的标的物。所属领域的技术人员应了解,可轻易地基于所揭示的概念和具体实施例,修改或设计用于实现本发明的相同目的的其他结构或过程。所属领域的技术人员还应意识到,此类等效结构并不脱离所附权利要求书中提出的本发明的精神和范围。
附图简述
为了更完整地理解本发明及其优点,现结合附图参考以下描述,其中:
图1所示为现有技术Xen网络信道(Netchannel)-2的架构;
图2所示为多队列系统架构的实施例;
图3a至图3c所示为发射、接收和控制路径的实施例的框图;
图4所示为网络设备的实施例;以及
图5所示为处理系统的实施例。
具体实施方式
下文将详细讨论对目前最佳实施例的实施和使用。但应了解,本发明提供可用于各种具体上下文中的许多可应用发明概念。所论述的具体实施例仅仅说明用以制作和使用本发明的具体方式,而不限制本发明的范围。
某些实施例方法是现有半虚拟化方案的替代方法,且包括独特的构件(building block),所述构件利用基于NIC硬件的多队列性能,同时减少CPU上下文切换。实施例的系统和方法提供IO虚拟化替代方案,该方案使用各种管理程序环境,包括,但不限于,Xen管理程序环境。
某些实施例系统和方法(1)针对包发射(TX)/接收(RX)操作去除多余的上下文切换;(2)利用多队列NIC;(3)适用于PV或硬件辅助虚拟化(HVM)域设置;(4)且利用类似VT-d直接连接设备的性能,从而形成可缩放、低延迟、且功耗管理更好的网络IO信道。在某些实施例中,例如,可使用英特尔
Figure BDA00002953659900041
实施多队列NIC。或者,可使用其他NIC设备。
某些实施例系统包括用于x86系统的慢速控制路径和快速数据路径的分割网络设备和IO(Split Network Device&IO)视图。这可适用于诸如存储设备等其他设备。实施例系统和方法还包括暴露管理程序环境中的IO设备寄存器处理和NIC队列映射的方法,和/或与现有半虚拟化方法相比,减少CPU上下文切换。其他系统也可针对每个CPU核心/线程增加虚拟机(VM)IO延迟和VM页面缓存局部性。
某些实施例系统可通过更改并扩展Xen构架来实施。此类解决方案也符合CPU VT扩展。在一项实施例实例中,Xen4.0,2.6.32内核用作在64位和32/64位的Linux客机环境中操作的域0(Dom0)。或者,可使用其他环境。
类似Xen等机器环境使用仿真设备模型(QEMU)或半虚拟化来模仿网络IO。性能降级的一个原因在于每个VM的虚拟化IO设备的成本。近年来,用于虚拟化的硬件辅助发展已经提高了虚拟化客机的整体CPU和存储器性能,从而使虚拟化客机几乎能实现本机的性能。网络设备及其操作是一对核心性能敏感指标。当涉及TX/RX数据时,从服务器到台式机和笔记本电脑的任何业务系统及其中运行的应用程序均依赖于几乎“无损”的性能。在虚拟化下,网络IO性能变得更加关键。因此,实施例方法注重改进网络IO。虽然本文中描述的某些实施例使用Xen作为样本管理程序系统来说明实施例系统,但其他的实施例系统和方法的管理程序未知,且通常足以使用其他x86管理程序工作,包括,但不限于内核虚拟机(KVM)。
在一项实施例中,QEMU设备模型和半虚拟化均采用软件IO虚拟化技术。QEMU是具有PIIX3/PIIX4的原始开源软件IO仿真器中的一个,所述PIIX3/PIIX4即为预ICH南桥芯片,其可模仿BIOS、ACPI、IDE控制器(软盘、CD-ROM、硬盘)、帧缓冲设备,以及作为主控制器的网络控制器(RealTek,e1000)。此外,最近已添加更多的自定义扩展。此类实施例设置让来自客机的IO信道操作TX/RX(通过存储器映射IO(MMIO)及直接存储器访问(DMA))在特许客机中的每个实际设备上通过gpfn到mfn转换、中断处理及复杂的页表移动从而以“捕获并转发”模式进行操作。这些情况会使仿真设备具有“实际”设备映射。基于QEMU的仿真设备模型的主要问题包括性能、可扩展性以及功耗管理。这些测量结果与基于管理程序的各系统软件层的内核/用户模式之间的“上下文切换”成本直接相关。
客机和主机用户模式之间的整体上下文切换,内核模式与管理程序的来回切换会使指数指令加载到CPU上,从而可能会导致性能延迟、缩放性降低、指令执行延迟减少以及功耗负载增加。一种原始PV方法为“剪切”基于QEMU的仿真,用于处理IO信道操作(DMA/MMIO),并通过实际设备驱动程序将TX/RX缓冲区直接粘贴在物理设备内直接。包括自定义后/前驱动程序的经更改客机/dom0/Xen设置为存储器变化标页码(授权表),并使客机TX/RX缓冲区映射到实际设备TX/RX。原始PV方法中的上下文切换成本很高,这是由于TX/RX活动会经过至少4个上下文切换,例如,从客机到用户/内核到Dom0到管理程序,因而导致每个包的周期较长且TLB开销较高。何塞·雷纳托·桑托斯(Jose Renato Santos)、原田·特纳(Yoshio Turner)、G·(约翰)贾纳吉拉曼(G.(John)Janakiraman),以及伊恩·普拉特(Ian Pratt)在惠普实验室的技术报告HPL-2008-39的“缩短I/O虚拟化的软件和硬件技术之间的差距(Bridging Gap between Software and Hardware Techniques for I/OVirtualization)”中提出一种替代方法,所述文档以引用的方式并入本文本中。该方法将IDD而不是Dom0用作设备IO信道主机,以提高客机IO信道性能。该解决方案的一个问题是,与上下文切换有关的“拦截”元件的数量并未变化。此外,由于更多的VM会造成延迟,因此,吞吐量显著降低。该方法还存在VM TX/RX队列过多及不公平的队列订阅(subscription)问题。多数NIC具有来自VM的单个TX和RX队列,该队列存在队列过度消耗问题。例如,具有高度“繁杂”的应用程序的VM会让该VM使用TX/RX缓冲区占有实际设备队列,并使其他VM“缺乏”IO信道操作。
硬件正在快速发展,以支持用于管理程序的基于硬件的虚拟化辅助。NIC硬件商已制造出基于SR-IOV且基于多队列性能的卡,从而“卸载”基于软件的TX/RX环形缓冲区。基于SR-IOV的卡使用更改的PCI配置和基于PF/VF的主从设备驱动模型(master and slave device driver model),从而将NIC IO信道作为单独的“物理设备”直接映射到去除了主管理程序相关性的VM。
图1所示为具有IDD的支持多队列设备的Xen网络信道-2100,其为现有IO信道构架和流。Xen PV基础架构包括:后端/前端驱动程序、存储页面共享,以及管理程序支持的数据结构,例如,用于中断通知和回调的事件信道、用于域间通信的超级调用和授权表。客机的网络IO信道视图取决于客机类型,即,客机是否在PV或HVM模式下操作。传统HVM模式是指,客机OS在没有对其内核或用户模式部件或其生命周期进行任何修改的情况下运行。
Xen管理程序110是对存储器管理、VCPU调度以及中断调度进行处理的小管理程序。Dom0到PV设置,包括授权表、事件信道及共享存储器,支持所有IO,以控制并代表客机。Dom0到QEMU设备模型经由Netfront/Netback驱动机制获取虚拟化IO设置或半虚拟化设置。此外,完全虚拟化或半虚拟化的DomU客机从Dom0接收所有的IO服务。由于就CPU周期而言,完全虚拟化IO非常昂贵,因此该方法的困难之处在于系统操作较慢。虽然半虚拟化IO在客机数量少时吞吐量良好,但该吞吐量会随着客机数量的增加而迅速降低。在这两种情况下,IO延迟与增加的客机数不成比例。这表示IaaSV云VM IO的缩放性存在困难。
关于当前的IO延迟,PV使用共享存储器,以使用涉及往返于操作的明确复制的存储器“授权”机制在客机和Dom0之间移动TX/RX数据。客机和Dom0之间的事件信道用于激活TX/RX活动触发器。所述事件实际上中断Dom0还是客机,具体取决于数据的方向。此外,进行中断传送需要上下文切换到管理程序,然后再上下文切换到预定Dom。因此,PV方法添加上下文切换,从而增加了延迟,进而有损VM的缩放性。
就PV客机网络IO流而言,在PV情境中,客机虚拟物理地址(VPA)空间经更改以映射Xen存储器(Xen-u)。通常,Xen存储器包括约12M的映射存储器,以及直接与Xen-VPA相互作用的前端驱动程序,该前端驱动程序包括IO信道处理程序。Dom0保存后端驱动程序、本机NIC驱动程序以及IO事件信道,是用于驱动客机TX/RX缓冲区/包流的Dom0共享存储器数据结构。设备设置通常在OS引导程序下完成。OS针对包括NIC卡的基础硬件进行探查,并设置虚拟PCI配置空间参数和中断路径(interruptrouting)。常规网络IO包括网络缓冲区,表示为TX/RX缓冲区。虚拟网络中使用同一概念,但是,由于虚拟网络IO更着重于客机网络IO性能,因此虚拟计算节点上的虚拟网络IO的CPU成本较高。老PV方法存在诸如网络网桥实施次最佳和CPU饱和较高等缺点。CPU饱和也意味着VM应用程序可用的周期更少,从而对云计算机IaaS而言,该方法不太可行。网络信道2也适合利用多队列NIC和/或能进行SR-IOV的NIC。
在本发明的一项实施例中,通过减少上下文切换,更改的PV构架中支持多个HW队列,所述更改的PV架构提高IO缩放性且允许VMDQ延迟。这通过使用NIC设备的双视图(dual view)来实现。在一项实施例中,Dom0中的NIC驱动程序用于执行控制操作,包括对PCI配置空间和中断路径进行控制,该控制操作主要是MMIO活动。快速路径队列存储器映射在管理程序驱动程序中处理。这两个驱动程序可检查(see)设备寄存器组、控制结构等。在一项实施例中,RX/TX DMA传输具有高达三个上下文切换,例如Xen、内核0以及用户复制。
图2所示为根据本发明的一项实施例的多队列(VMQ)系统200。应了解,虽然出于说明目的描述VMQ系统,但实施例概念也可应用于替代系统。VMQ系统200使用改良的网络信道-2结构,所述结构具有带起作用的部件的多队列TX/RX数据流。在一项实施例中,相对于现有的网络信道-2结构添加和/或更改IGB netU驱动程序210、IGBX仿真设备222、IGBX仿真PCIC配置230、IGBU-1驱动程序、IGBU-n驱动程序232、IGB0NIC驱动程序226、netUFP块218、以及快速路径数据处理程序220。
在一项实施例中,MMIO控制流从客机DomU的客机内核空间中的IGBNetU驱动程序210经过特许客机Dom0中的IGBX仿真设备222。然后,控制流继续经过IGBU-1224驱动程序和Dom0内核空间中的IGB0NIC驱动程序,并最终到达硬件中的NIC卡212。另一方面,数据流在客机Dom0内核空间中的IGB NetU驱动程序210之间,经过RX缓冲区216和TX缓冲区214且到达管理程序208中的NetUFP块218。数据流继续从NetUFP块218流向也在管理程序208中的快速路径数据处理程序220,并流到NIC212上。
通过将Dom0作为复制瓶颈去除,此实施例方法可抵消由netback驱动程序中所完成的客机授权复制引起的较高CPU成本例如,用于VM的典型网络信道2的典型包RX路径具有以下步骤:用户复制;将数据从客机内核复制到用户缓冲区;进行客机内核编码;在客机上下文中执行Xen码;授权复制;在Dom0中进行内核编码;以及在Dom0内核上下文中执行Xen码。所有这些步骤包括PV码中的七个上下文切换。网络信道2优化授权复制阶段,方法是将此功能移给客机,从而通过将包置于客机CPU缓存上下文来提高RX性能,进而卸载Dom0CPU缓存。这会消除Dom0复制阶段。网络信道2也用于使RX描述符的映射通过客机缓存直接映射到客机存储器。回到图1,客机域104中的Netfront驱动程序102通过IO信道向IO缓冲区授权,以便让多队列设备驱动程序使用所述Netfront驱动程序。驱动域108保存Netback106和授权机制。所述驱动域负责管理TX/RX活动中涉及的页面描述符的直接锁定和安全性。
具有各客机RX路径的直接队列映射的网络信道2具有用户模式客机复制,其中包复制到本地客机存储器,所述用户模式客机复制映射到RX队列存储描述符,从而减少缓冲区复制时间、客机内核模式中的授权复制、Dom0中的内核模式,以及Xen码。授权复制提高之后,RX性能必然会提高。例如,物理CPU的消耗从50%降至21%。但是,上下文切换的数量只减少一,即,原始PV方法中的Dom0用户模式授权复制步骤。TX路径具有类似的上下文切换数量。上下文切换的成本影响系统的整体吞吐量,并最终影响系统的缩放性。此外,客机/Dom0/Xen之间的上下文切换数量也会产生数千CPU周期,从而影响整体功耗。因此,实施例方法利用类似于网络信道2的多队列,但将上下文切换的数量从六减少到三,从而消除授权复制、Dom0用户及内核上下文切换。一种实施例方法依赖于MSI,并针对缓冲区可用度内/外的skb将MSI分配给每个客机队列IRQ。
在一项实施例中,上述构架分成两部分:TX/RX数据路径,称为快速路径;以及设备初始化/控制路径,称为慢速路径。这两个路径均作为仿真设备呈现给客机,作为同一PCI设备的两种独立功能。慢速路径设备是普通的仿真设备,其所有的功能均由QEMU处理。快速路径设备是PCI功能,其PCI配置空间仍由QEMU模仿,但寄存器组仿真由管理程序处理。快速路径也使用队列来设置DMA操作。这些队列直接映射到客机地址空间中,但内容由管理程序快速更改,同时模仿快速路径寄存器组。在一项实施例中,当每个MSI-X矢量作为RX缓冲区可用度进一步暴露于客机时,存在MSI-X支持。管理程序将数据流中断直接转发到客机。
在一项实施例中,队列相关基础架构由如同客机基础架构的硬件来实施。中断也可为各客机资源,因此可使用消息信号中断(MSI-X)。在一项实施例中,每个队列使用一个中断矢量,且另一个中断矢量用于控制。或者,每个客机可使用一个中断矢量。在一项实施例中,MSI-X矢量在发送到客机之前,先由管理程序转换成INT-X中断。在一项实施例中,Dom0可完全查看NIC、PCI配置空间、寄存器组以及MSI-X中断能力。NIC队列可在设备设置期间直接映射。
在一项实施例中,IGB0NIC驱动程序用作副驱动程序(side driver),以处理所有的初始化、控制以及错误操作。如果Dom0也使用NIC来发送和接收网络数据,那么队列也完全受Dom0驱动程序控制。驱动程序只限于其本身的每个域资源(队列寄存器、中断位等)且不接触任何客机资源。
在一项实施例中,IGBU用作DomU副驱动程序,以初始化其自己的控制器部分。该IGBU处理自己的TX/RX队列以及相关的寄存器,并自我限制为只限于自己的每个域资源,而不会接触任何其他的客机资源。在一项实施例中,如果在性能影响下安全性方面有所提高,那么可在管理程序中强制执行客机的这种自我限制。
在一项实施例中,QEMU向客机呈现新仿真设备,并处理通向设备配置空间的所有入口。客机可了解用以将MSI-X中断矢量连接到正确的INT-X的QEMU超级调用。执行另一超级调用,以让管理程序了解其必须要为客机网络设备模仿的MMIO的范围。一个重要参数是客机池号,它是客机的任何硬件资源的指标(index)。在一项实施例中,QEMU通过PCI配置寄存器可让客机看到此号。
至于管理程序,在域初始化时间处,创建快速路径设备控制的实例,其对属于给定客机的NIC硬件资源进行控制。QEMU调用适合的超级调用来设置MMIO仿真范围之后,管理程序会拦截并模仿由客机通过所述客机的网络驱动程序完成的所有MMIO。仿真的一项实施例方面是转换客机缓冲地址。管理程序完成这种情况的方式是保存队列地址写入寄存器(registerwrite)上的客机队列地址,然后所述管理程序检查所写入的所有地址并将其转换成队列尾写入寄存器上的队列。
图3a所示为实施例DMA发射数据路径300的高级框图。在一项实施例中,发射流开始于客机应用程序级。例如,应用程序调用DomU304中的系统调用发往(…)306来发送数据包。系统调用发往(…)306上下文切换至驱动仿真设备的客机网络驱动程序NetUDrv308,因此,设备寄存器组上完成的每个MMIO将被捕获到管理程序310中。管理程序310使用从属于模块NetUFP312的设备来模仿MMIO并驱动硬件,从而相应使用快速路径处理程序模块314。
由于客机驱动器无法知道机器帧号,且只能访问客机物理帧号,因此,页面转换在模仿MMIO的同时快速完成。然后,将NIC316的DMA发动机设置为开始将数据发送到线路上。数据包318发送出去后,NIC316发回中断。管理程序310将所述中断转发到客机内核。客机内核调用适合的处理程序进行清除。
图3b所示为实施例DMA接收数据路径320的高级框图。在一项实施例中,接收流开始于来自网络的数据包324。数据包通过DMA完全进入系统存储器后,NIC316向管理程序310发送中断。然后,管理程序310将所述中断转发到客机内核。客机NetUDrv308中的中断处理程序使用MMIO来检查填充的缓冲区数,然后将那些缓冲区转发到上部网络堆栈。
然后,将新的缓冲区分配并设置到RX队列中。设置过程以MMIO至队列尾寄存器结束。该MMIO由管理程序310捕获。NetUFP312中的这种特殊寄存器的管理程序仿真还处理写入RX队列的所有缓冲地址的转换。
图3c所示为实施例MMIO控制路径330的高级框图,其作为完整的仿真设备实施。在一项实施例中,此仿真由Dom0302中的QEMU332执行。QEMU332经过Dom0NIC驱动程序Net0Drv334,以控制并接收往返于NIC316的控制事件。仿真设备发送到客机,作为供数据路径使用的同一仿真网络设备的第二PCI功能。在一项实施例中,将单独的中断矢量分配给该PCI功能,且QEMU332使用该中断矢量将控制事件发送到客机驱动程序,所述QEMU在NetUDrv308中处理这些操作。来自于客机的NetUDrv308完成的MMIO转发回Dom0302中的QEMU332。由于与数据路径相比,并不经常执行控制操作,因此,这些操作的延迟对数据吞吐量或数据延迟很少有或没有影响。
在一项实施例中,实施服务器可使用25GB的存储器、基于英特尔
Figure BDA00002953659900121
5500的四核CPU上具有多队列(VMD-q)能力的英特尔
Figure BDA00002953659900122
1GBE控制器,所述四核CPU使用2.6.32内核作为Dom0并在64位和32/64位Linux客机环境中操作。使用以太网包大小最大为52字节和1500字节的TCP包进行测量。应了解,这种服务器配置只是用于实施本发明的实施例的许多服务器配置的一个实例。
实施例加速网络路径实施方案去除授权机制中出现的缓冲区复制开销。例如,IO数据传输期间的Dom0开销为0,且Dom0CPU缓存仍然未受未使用的客机域数据污染。由于NIC队列存储器直接映射到客机,因此,减少了VCPU调度程序的计算负担,从而提高了信用调度程序的公正性。最后,移动传输到客机OS的TX/RX数据让客机OS驱动程序在RX操作之后分配缓冲区,从而在缓冲区复制过程中更好地控制数据缓存对齐。这也减少对DomU CPU缓存的污染。表1显示现有网络信道2和实施例加速网络路径实施方案的性能对比。在此,可以看出,具有Dom0CPU负载后,与网络信道2信道模式相比,随着客机数增加,实施例加速网络路径实施方案具有更具线性的IO延迟响应。
表1:TX/RX性能对比
至少某些所描述的实施例特征和方法可实施于网络设备或部件中,例如,以太网或互联网协议(IP)节点。例如,本发明中的特征/方法可使用硬件、固件和/或经安装以在硬件上运行的软件来实施。网络设备/部件或节点可为在诸如以太网或IP网络等网络中传输帧的任何设备。例如,网络设备/部件可包括网桥、转换器、路由器,或者此类设备的各种组合。如图4所示,网络设备/部件400可包括:多个入站端口402或单元,用以从其他节点接收帧;逻辑电路406,用以确定发送帧的目标节点;以及多个出站端口404或单元,用以将帧发送到其他节点。
图5所示为可用于实施本发明的方法的处理系统600。在此情况下,主要的处理由处理器602来执行,所述处理器可以为微处理器、数字信号处理器或任何其他适合的处理设备。在一些实施例中,处理器602可由多个处理器实施。程序代码(例如,实施上述算法的代码)以及数据可储存在存储器604中。所述存储器可为诸如DRAM等本地存储器或大容量存储器,例如,硬盘驱动器、光盘驱动器或其他存储器(其可为本地或远程)。虽然使用单个块在功能上说明存储器,但应了解,可使用一个或多个硬件块来实施该功能。
在一项实施例中,处理器可用于实施图5所示各单元中的某些或所有单元。例如,所述处理器可在不同时间用作特定的功能单元,以实施执行本发明技术时所涉及的子任务。或者,可使用不同的硬件块(例如,与处理器相同或不同)来执行不同功能。在其他实施例中,某些子任务由处理器来执行,而其他子任务则使用单独的电路来执行。
图5还图示I/O端口606,其用作网络接口设备的接口。网络接口设备608可作为网络接口卡(NIC)来实施,所述网络接口卡如上文所述且根据上文所述实施例进行配置,而且所述网络接口设备为网络提供接口。
根据一项实施例,一种在服务器上运行虚拟机的方法,其包括:使用在所述服务器上运行的第一监管程序对分配给所述虚拟机的数据路径资源进行控制,对数据路径资源进行控制包括对耦接到所述服务器的硬件接口设备的数据路径进行控制;以及使用在所述服务器上运行的第二程序对所述硬件接口设备的控制路径和初始化资源进行控制;其中所述第二程序与第一程序分开。在一项实施例中,所述第一监管程序可为管理程序,且所述第二程序可为控制平面。在一些实施例中,对硬件接口设备的数据路径进行控制包括对网络接口卡(NIC)的数据路径进行控制。
在一些实施例中,控制所述数据路径资源进一步包括第一监管程序拦截并模仿由所述虚拟机执行的所有存储器映射输入/输出(MMIO)。模仿可包括转换所述虚拟机的缓冲地址。在一些实施例中,第一监管程序监视所述数据路径资源,以防止违反安全性。
在一项实施例中,所述方法还包括经由所述第一监管程序在所述虚拟机和硬件接口之间发射和接收包。发射数据包可包括:在客机用户域中启动系统调用,以发送数据包;将所述数据包从所述客机用户域上下文切换到客机内核;将所述数据包从所述客机内核上下文切换到所述第一监管程序;以及将所述数据包从所述第一监管程序发射到所述硬件接口设备。此外,接收数据包可包括:将所述包从硬件接口设备传输到第一监管程序;将所述数据包从第一监管程序上下文切换到客机内核;以及将所述数据包从所述客机内核上下文切换到用户域中的系统调用。
根据另一项实施例,一种针对运行多个虚拟机操作服务器系统的方法,其包括:加载控制平面程序;加载监管程序,将虚拟机实例化;经由所述监管程序在所述虚拟机和硬件接口设备之间控制数据路径资源;以及经由所述控制平面程序对所述硬件接口设备的控制路径和初始化资源进行控制。在某些实施例中,所述监管程序包括管理程序。控制数据路径资源可包括所述监管程序拦截并模仿由所述虚拟机执行的所有存储器映射输入/输出(MMIO)。在一项实施例中,模拟包括转换所述虚拟机的缓冲地址。在一项实施例中,控制数据路径资源可包括将数据从所述虚拟机的队列映射到所述硬件接口设备的队列。
在一项实施例中,所述方法进一步包括经由所述监管程序在所述虚拟机和所述硬件接口之间发射和接收包。此外,在某些实施例中,将所述虚拟机实例化包括将多个虚拟机实例化。
根据又一实施例,一种用于虚拟机的数据处理系统,其包括:处理器;耦接到所述处理器的存储器;以及接口端口,其用于耦接到与所述处理器分开的硬件网络接口设备。所述处理器用于运行第一程序,所述第一程序经由所述接口端口在与所述虚拟机相关的包队列和所述硬件网络接口中的包队列之间传输数据。该程序进一步用于运行第二程序,所述第二程序控制所述硬件网络接口设备的配置,所述第二程序与所述第一程序分开。在一项实施例中,所述处理器可用于运行所述虚拟机。
在一项实施例中,第一程序是管理程序,其可包括快速路径数据驱动程序,所述驱动程序耦接到将存储器映射输入/输出(MMIO)模仿到所述虚拟机的设备。在某些实施例中,所述硬件网络接口设备是网络接口卡(NIC)。某些系统还可包括硬件网络接口设备本身。
根据另一项实施例,一种非瞬时计算机可读媒体中存储了可执行程序。所述程序指示处理器执行以下步骤:加载控制平面程序;加载监管程序;将虚拟机实例化;经由所述监管程序在所述虚拟机和硬件接口设备之间控制数据路径资源;以及经由所述控制平面程序对所述硬件接口设备的控制路径和初始化资源进行控制。控制数据路径资源的步骤可进一步包括所述监管程序执行以下步骤:拦截并模仿由所述虚拟机执行的所有存储器映射输入/输出(MMIO)。此外,模仿步骤可包括转换所述虚拟机的缓冲地址。在一项实施例中,所述监管程序可为管理程序。
在一些实施例中,控制数据路径资源的所述步骤包括以下步骤:将数据从所述虚拟机的队列映射到所述硬件接口设备的队列。所述程序还可进一步指示所述处理器进一步执行以下步骤:经由所述监管程序在所述虚拟机和硬件接口之间发射和接收包。
实施例的优点包括:上下文切换数量减少;通过使用经由利用多队列NIC实现的直接IO页面映射而降低CPU成本;客机VMIO延迟增加,与现有PV实施相比,这直接影响缩放性;以及进入x86-64和x86-32位模式的能力。CPU负载减少的额外效果也提高了VM的缩放性,并使功效管理更好。
其他优点包括改进IO延迟。例如,与诸如网络信道2等其他最近的PV方法相比,实施例IO机制可提高,例如,约68%的IO延迟,且与传统PV方法相比,提高约100%。
此外,与诸如网络信道2等当前PV实施方案相比,实施例实施方案显著提供效益,同时保留了当前PV的优点,例如,客机地址空间隔离;用于对VM间和内IO进行精确控制的可辨别IO捕获;以及防止导致系统崩溃的错误驱动程序。其他优点包括保留VMIO的缩放性而无需考虑VM的数量。
虽然已参考说明性实施例描述了本发明,但此描述并不意图限制本发明。所属领域的一般技术人员在参考该描述后,会显而易见地认识到说明性实施例的各种修改和组合,以及本发明的其他实施例。因此,所附权利要求书意图涵盖任何此类修改或实施例。

Claims (28)

1.一种在服务器上运行虚拟机的方法,所述方法包括:
使用在所述服务器上运行的第一监管程序对分配给所述虚拟机的数据路径资源进行控制,对数据路径资源进行控制包括对耦接到所述服务器的硬件接口设备的数据路径进行控制;以及
使用在所述服务器上运行的第二程序对所述硬件接口设备的控制路径和初始化资源进行控制,所述第二程序与所述第一监管程序分开。
2.根据权利要求1所述的方法,其中:
所述第一监管程序包括管理程序;以及
所述第二程序包括控制平面。
3.根据权利要求1所述的方法,其中对所述硬件接口设备的所述数据路径进行控制包括对网络接口卡(NIC)的数据路径进行控制。
4.根据权利要求1所述的方法,其中控制数据路径资源进一步包括所述第一监管程序拦截并模仿由所述虚拟机执行的所有存储器映射输入/输出(MMIO)。
5.根据权利要求4所述的方法,其中模仿包括转换所述虚拟机的缓冲地址。
6.根据权利要求1所述的方法,其中所述第一监管程序监视所述数据路径资源,以防止违反安全性。
7.根据权利要求1所述的方法,其进一步包括经由所述第一监管程序在所述虚拟机和所述硬件接口之间发射和接收包。
8.根据权利要求1所述的方法,其进一步包括发射数据包,发射所述数据包包括:
在客机用户域中启动系统调用,以发送数据包;
将所述数据包从所述客机用户域上下文切换到客机内核;
将所述数据包从所述客机内核上下文切换到所述第一监管程序;以及
将所述数据包从所述第一监管程序发射到所述硬件接口设备。
9.根据权利要求1所述的方法,其进一步包括接收数据包,接收所述数据包包括:
将所述包从所述硬件接口设备传输到所述第一监管程序;
将所述数据包从所述第一监管程序上下文切换到客机内核;以及
将所述数据包从所述客机内核上下文切换到用户域中的系统调用。
10.一种针对运行多个虚拟机操作服务器系统的方法,所述方法包括:
加载控制平面程序;
加载监管程序;
将虚拟机实例化;
经由所述监管程序在所述虚拟机和硬件接口设备之间控制数据路径资源;以及
经由所述控制平面程序对所述硬件接口设备的控制路径和初始化资源进行控制。
11.根据权利要求10所述的方法,其中控制数据路径资源进一步包括所述监管程序拦截并模仿由所述虚拟机执行的所有存储器映射输入/输出(MMIO)。
12.根据权利要求11所述的方法,其中模拟包括转换所述虚拟机的缓冲地址。
13.根据权利要求10所述的方法,其中控制数据路径资源包括将数据从所述虚拟机的队列映射到所述硬件接口设备的队列。
14.根据权利要求10所述的方法,其中所述监管程序包括管理程序。
15.根据权利要求10所述的方法,其进一步包括经由所述监管程序在所述虚拟机和所述硬件接口之间发射和接收包。
16.根据权利要求10所述的方法,其中将所述虚拟机实例化包括将多个虚拟机实例化。
17.一种用于虚拟机的数据处理系统,所述数据处理系统包括:
处理器;
耦接到所述处理器的存储器;以及
接口端口,其用于耦接到与所述处理器分开的硬件网络接口设备,其中所述处理器用于:
运行第一程序,所述管理程序经由所述接口端口在与所述虚拟机相关的包队列和所述硬件网络接口中的包队列之间传输数据;以及
运行第二程序,所述第二程序控制所述硬件网络接口设备的配置,所述第二程序与所述第一程序分开。
18.根据权利要求17所述的数据处理系统,其中所述处理器进一步用于运行所述虚拟机。
19.根据权利要求17所述的数据处理系统,其中所述第一程序是管理程序。
20.根据权利要求19所述的数据处理系统,其中所述管理程序包括快速路径数据驱动程序,其耦接到将存储器映射输入/输出(MMIO)模仿到所述虚拟机的设备。
21.根据权利要求17所述的数据处理系统,其中所述硬件网络接口设备是网络接口卡(NIC)。
22.根据权利要求17所述的数据处理系统,其进一步包括所述硬件网络接口设备。
23.一种非瞬时计算机可读媒体,其中存储有可执行程序,其中所述程序指示处理器执行以下步骤:
加载控制平面程序;
加载监管程序;
将虚拟机实例化;
经由所述监管程序在所述虚拟机和硬件接口设备之间控制数据路径资源;以及
经由所述控制平面程序对所述硬件接口设备的控制路径和初始化资源进行控制。
24.根据权利要求23所述的非瞬时计算机可读媒体,其中控制数据路径资源的步骤进一步包括所述监管程序执行以下步骤:拦截并模仿由所述虚拟机执行的所有存储器映射输入/输出(MMIO)。
25.根据权利要求24所述的非瞬时计算机可读媒体,其中模仿步骤包括转换所述虚拟机的缓冲地址。
26.根据权利要求23所述的非瞬时计算机可读媒体,其中控制数据路径资源的所述步骤包括以下步骤:将数据从所述虚拟机的队列映射到所述硬件接口设备的队列。
27.根据权利要求23所述的非瞬时计算机可读媒体,其中所述监管程序包括管理程序。
28.根据权利要求23所述的非瞬时计算机可读媒体,其中所述程序指示所述处理器进一步执行以下步骤:经由所述监管程序在所述虚拟机和所述硬件接口之间发射和接收包。
CN201180045902.1A 2010-10-01 2011-09-28 对虚拟网络的输入/输出进行控制的系统和方法 Active CN103140830B (zh)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US38907110P 2010-10-01 2010-10-01
US61/389,071 2010-10-01
US13/247,578 2011-09-28
US13/247,578 US9213567B2 (en) 2010-10-01 2011-09-28 System and method for controlling the input/output of a virtualized network
PCT/US2011/053731 WO2012044700A1 (en) 2010-10-01 2011-09-28 System and method for controlling the input/output of a virtualized network

Publications (2)

Publication Number Publication Date
CN103140830A true CN103140830A (zh) 2013-06-05
CN103140830B CN103140830B (zh) 2016-11-30

Family

ID=

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106528466A (zh) * 2016-10-18 2017-03-22 北京控制工程研究所 一种星载计算机内部处理器单元和io单元之间的数据交换系统及方法
CN109479028A (zh) * 2016-08-03 2019-03-15 华为技术有限公司 网络接口卡、计算设备以及数据包处理方法
US10581729B2 (en) 2016-08-03 2020-03-03 Huawei Technologies Co., Ltd. Network interface card, computing device, and data packet processing method

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1455566A (zh) * 2002-12-20 2003-11-12 中国科学院沈阳自动化研究所 现场总线分散控制站
US20070028244A1 (en) * 2003-10-08 2007-02-01 Landis John A Computer system para-virtualization using a hypervisor that is implemented in a partition of the host system
US20070162619A1 (en) * 2006-01-12 2007-07-12 Eliezer Aloni Method and System for Zero Copy in a Virtualized Network Environment
US20100175064A1 (en) * 2009-01-06 2010-07-08 Dell Products L.P. System and method for raw device mapping in traditional nas subsystems

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1455566A (zh) * 2002-12-20 2003-11-12 中国科学院沈阳自动化研究所 现场总线分散控制站
US20070028244A1 (en) * 2003-10-08 2007-02-01 Landis John A Computer system para-virtualization using a hypervisor that is implemented in a partition of the host system
US20070162619A1 (en) * 2006-01-12 2007-07-12 Eliezer Aloni Method and System for Zero Copy in a Virtualized Network Environment
US20100175064A1 (en) * 2009-01-06 2010-07-08 Dell Products L.P. System and method for raw device mapping in traditional nas subsystems

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109479028A (zh) * 2016-08-03 2019-03-15 华为技术有限公司 网络接口卡、计算设备以及数据包处理方法
US10581729B2 (en) 2016-08-03 2020-03-03 Huawei Technologies Co., Ltd. Network interface card, computing device, and data packet processing method
US10623310B2 (en) 2016-08-03 2020-04-14 Huawei Technologies Co., Ltd. Network interface card, computing device, and data packet processing method
CN109479028B (zh) * 2016-08-03 2020-09-25 华为技术有限公司 网络接口卡、计算设备以及数据包处理方法
CN106528466A (zh) * 2016-10-18 2017-03-22 北京控制工程研究所 一种星载计算机内部处理器单元和io单元之间的数据交换系统及方法
CN106528466B (zh) * 2016-10-18 2019-05-24 北京控制工程研究所 一种星载计算机内部处理器单元和io单元之间的数据交换系统及方法

Also Published As

Publication number Publication date
US20120084487A1 (en) 2012-04-05
WO2012044700A1 (en) 2012-04-05
US9213567B2 (en) 2015-12-15

Similar Documents

Publication Publication Date Title
Marty et al. Snap: A microkernel approach to host networking
US9213567B2 (en) System and method for controlling the input/output of a virtualized network
US8832688B2 (en) Kernel bus system with a hyberbus and method therefor
CN112148421B (zh) 虚拟机迁移的方法以及装置
Dong et al. High performance network virtualization with SR-IOV
Huang et al. A case for high performance computing with virtual machines
US8799891B2 (en) System and method for attributing CPU usage of a virtual machine monitor to a corresponding virtual machine
US7779424B2 (en) System and method for attributing to a corresponding virtual machine CPU usage of an isolated driver domain in which a shared resource's device driver resides
EP3073373B1 (en) Method for interruption affinity binding of virtual network interface card, and computer device
US20160378530A1 (en) Remote-direct-memory-access-based virtual machine live migration
US7797707B2 (en) System and method for attributing to a corresponding virtual machine CPU usage of a domain in which a shared resource's device driver resides
US20100211946A1 (en) Method and system for network abstraction and virtualization for a single operating system (os)
TWI408934B (zh) 網路介面技術
JP5654678B2 (ja) ネットワークにおけるマルチ・セル・サポートのための装置
Nussbaum et al. Linux-based virtualization for HPC clusters
KR20140107408A (ko) 그래픽스 처리 유닛 상의 가상 기계들 사이의 변경
CN106844007A (zh) 一种基于空间复用的虚拟化方法与系统
US10324658B1 (en) Memory sharing for buffered macro-pipelined data plane processing in multicore embedded systems
Zhang et al. High-performance virtual machine migration framework for MPI applications on SR-IOV enabled InfiniBand clusters
Chang et al. Virtualization technology for TCP/IP offload engine
CN113312141A (zh) 用于虚拟机的虚拟串行端口
DiGiglio et al. High performance, open standard virtualization with NFV and SDN
CN103140830B (zh) 对虚拟网络的输入/输出进行控制的系统和方法
US20230305875A1 (en) Virtual networking for special types of nested virtual machines
Ye et al. vLibOS: Babysitting OS Evolution with a Virtualized Library OS

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