CN109445905B - 虚拟机数据通信方法和系统以及虚拟机配置方法和装置 - Google Patents

虚拟机数据通信方法和系统以及虚拟机配置方法和装置 Download PDF

Info

Publication number
CN109445905B
CN109445905B CN201811162587.0A CN201811162587A CN109445905B CN 109445905 B CN109445905 B CN 109445905B CN 201811162587 A CN201811162587 A CN 201811162587A CN 109445905 B CN109445905 B CN 109445905B
Authority
CN
China
Prior art keywords
pcie
pcie device
address
virtual machine
switch
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201811162587.0A
Other languages
English (en)
Other versions
CN109445905A (zh
Inventor
刘劲松
连学国
王燊
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 Cloud Computing Technologies Co Ltd
Original Assignee
Huawei Cloud Computing 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 Cloud Computing Technologies Co Ltd filed Critical Huawei Cloud Computing Technologies Co Ltd
Publication of CN109445905A publication Critical patent/CN109445905A/zh
Application granted granted Critical
Publication of CN109445905B publication Critical patent/CN109445905B/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/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
    • 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/45595Network integration; Enabling network access in virtual machine instances
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2213/00Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F2213/0026PCI express

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Transfer Systems (AREA)

Abstract

本申请实施例公开一种虚拟机数据通信方法和系统以及虚拟机配置方法和装置,宿主机上的第一PCIe设备和第二PCIe设备被配置为虚拟机的直通设备,第一PCIe设备和第二PCIe设备用于处理虚拟机的数据,虚拟机指示第一PCIe设备向第二PCIe设备传输数据,该通信方法包括:第一PCIe设备所连接的交换机接收第一PCIe设备发送的传输层报文,传输层报文包含待传输数据的源地址和待传输数据的目的地址,源地址为第一PCIe设备的地址,目的地址为第二PCIe设备的地址,交换机将传输层报文与预置的转发规则进行匹配,在传输层报文匹配转发规则的情况下,将传输层报文转发至第二PCIe设备。通过在PCIe交换机上直接转发传输层报文至PCIe设备,可提高直通至同一虚拟机的两个PCIe设备之间的数据传输速度。

Description

虚拟机数据通信方法和系统以及虚拟机配置方法和装置
技术领域
本申请涉及云计算领域,尤其涉及一种虚拟机数据通信方法和系统以及虚拟机配置方法和装置。
背景技术
现有技术中,物理主机通过高速串行计算机扩展总线(peripheral componentinterconnect express,PCIe)总线实现PCIe设备与中央处理器(Central ProcessingUnit,CPU)的连接,物理主机的PCIe设备有分配有主机物理地址(Host Physical Address,HPA),假设物理主机的PCIe设备包括图形处理器(Graphics Processing Unit,GPU)1和GPU2,如GPU1分配有地址HPA1,GPU2分配有地址HPA2,HPA地址为PCIe设备映射到物理主机的CPU的内部存储空间的地址,CPU通过自身的内部存储空间中的HPA地址来访问PCIe设备,而在GPU1与GPU2之间需要进行端到端(Peer to Peer,P2P)的事务层报文(TransactionLayer Package,TLP)传输时,也是通过HPA地址实现的,例如GPU1构造目的地址为HPA2的TLP,并将该TLP发送至与GPU1连接的PCIe交换机(PCIe switch),由该PCIe交换机根据HPA2将该TLP转发至GPU2。
而在虚拟化技术中,物理主机上往往运行有多个虚拟机,每个虚拟机均以为自己独占物理主机的内存空间,因此虚拟机以客户机物理地址(Guest Physical Address,GPA)表示虚拟机所拥有的内存空间,当物理主机中的PCIe设备分配至一个虚拟机时,在该虚拟机中,会为该PCIe设备分配GPA地址,虚拟机通过GPA地址访问PCIe设备。
而近年来,随着人工智能技术的兴起,对于CPU+GPU、CPU+场可编程门阵列(FieldProgrammable Gate Array,FPGA)、CPU+远程直接数据存取(Remote Direct MemoryAccess,RDMA)网卡的异构并行计算的需求越来越大,云计算数据中心普遍采用设备直通技术将GPU、FPGA和RDMA网卡等PCIe设备直通(pass through)到虚拟机。
直通技术是指将PCIe设备分配给运行在物理主机中的虚拟机独占使用,而在直通至少两个PCIe设备,如GPU1和GPU2到同一个虚拟机时,虚拟机监视器(Virtual MachineMonitor,VMM)会为直通至同一个虚拟机的PCIe设备分配GPA地址,如为GPU 1分配地址GPA1,为GPU2分配地址GPA2,在虚拟机内部仅能通过GPA地址访问直通至虚拟机的PCIe设备,因此当直通至同一虚拟机的两个PCIe设备需进行端到端(Peer to Peer,P2P)的事务层报文(Transaction Layer Package,TLP)传输时,例如GPU 1发送TLP至GPU2时,在现有技术中,虚拟机可控制GPU 1以GPA地址2作为TLP的目的地址,将TLP发送至与GPU 1连接的PCIe交换机。
在现有技术中,PCIe交换机在接收到以地址GPA2作为目的地址的TLP时,会将该TLP转发至用于进行GPA到HPA转换的地址转换单元,例如输入/输出存储管理单元(InputOutput Memory Management Unit,IOMMU),其中,IOMMU可设置在根复合体(Root Complex,RC)中,或与根复合体连接,由地址转换单元进行GPA到HPA的地址转换,举例而言,地址转换单元可获取TLP的目的地址,即GPU2在虚拟机分配的地址GPA2,并将地址GPA2转换为GPU2在主机分配的地址HPA2,将TLP的目的地址替换成地址HPA2,并将该TLP发回至与GPU 1连接的PCIe交换机,该PCIe交换机进一步根据TLP的目的地址,即地址HPA 2,将该TLP发送至GPU2。
因此,在现有技术中,数据流需要经过PCIe交换机绕行至地址转换单元进行GPA到HPA的地址转换,从而导致传输延时增加。
发明内容
本申请实施例提供了一种虚拟机的虚拟PCIe设备设置方法及装置,可解决在虚拟化场景下直通给同一虚拟机的两个或多个PCIe设备的情况下,PCIe设备之间进行通信时需绕行至地址转换单元进行GPA到HPA的地址转换而造成延时增大问题。
第一方面,本申请提供一种虚拟机的数据的通信方法,虚拟机所在的宿主机上的第一PCIe设备和第二PCIe设备被配置为虚拟机的直通设备,第一PCIe设备和第二PCIe设备用于处理虚拟机的数据,虚拟机指示第一PCIe设备向第二PCIe设备传输数据,第一PCIe设备与第二PCIe设备进行数据通信的方法包括:第一PCIe设备所连接的交换机接收第一PCIe设备发送的传输层报文,传输层报文包含待传输数据的源地址和待传输数据的目的地址,源地址为第一PCIe设备的地址,目的地址为第二PCIe设备的地址,交换机将传输层报文与预置的转发规则进行匹配,在传输层报文匹配转发规则的情况下,将传输层报文转发至第二PCIe设备。
在第一方面,通过在PCIe交换机上直接转发传输层报文至PCIe设备,无需转发传输层报文至root complex进行地址映射,因此可提高直通至同一虚拟机的两个PCIe设备之间的数据传输速度。
根据第一方面的第一种可能的实现方式,预置的转发规则包括:第一规则和第二规则,第一规则包括交换机的第一下游端口与第二下游端口配置为端到端的通信模式,第二规则包括传输层报文的目的地址属于第二下游端口所允许通过的地址范围,第一下游端口为交换机与第一PCIe设备相连接的下游端口,第二下游端口为交换机与第二PCIe设备相连接的下游端口,端到端的通信模式为PCIe终端到PCIe终端通信,交换机将传输层报文与预置的转发规则进行匹配,具体包括:交换机根据第一规则将传输层报文转发至第二下游端口,交换机将传输层报文的目的地址与第二规则进行匹配。
由于交换机内置有第一规则和第二规则,可确保符合第一规则和第二规则的传输层报文直接从第一PCIe设备转发至第二PCIe设备,而不符合第一规则和第二规则的任一者的传输层报文则由交换机直接丢弃,可确保数据传输的安全和准确性。
根据第一方面的第一种可能的实现方式,在第二种可能的实现方式中,在第一PCIe设备所连接的交换机接收第一PCIe设备发送的传输层报文之前,该方法还包括:配置第一下游端口与第二下游端口为允许端到端的通信模式,以及将交换机的第二下游端口所允许通过的地址范围配置为第二PCIe设备的主机物理地址的范围。
在虚拟机直通第一PCIe设备和第二PCIe设备的情况下,通过设置于第一PCIe设备连接的交换机,可确保该交换机内置有第一规则和第二规则,并根据第一规则和第二规则处理传输层报文。
根据第一方面的第二种可能的实现方式,在第三种可能的实现方式中,交换机接收到的传输层报文携带的目的地址为第二PCIe设备的客户端物理地址,第二PCIe设备的客户端物理地址与第二PCIe设备的主机物理地址一致。
由于在为虚拟机分配客户端物理地址时将进行端到端数据传输的PCIe设备的客户端物理地址设置为等于主机物理地址,从而无需进行客户端物理地址到主机物理地址的地址转换,可以加快在PCIe设备之间端到端传输的传输层报文的传输速度。
根据第一方面的第二种可能的实现方式,在第四种可能的实现方式中,第二PCIe设备的客户端物理地址的起始地址设置为与第二PCIe设备的主机物理地址的起始地址一致,第二PCIe设备的客户端物理地址的大小设置为与第二PCIe设备的主机物理地址的大小一致,交换机将传输层报文的目的地址与第二规则进行匹配,具体包括:交换机确认传输层报文的目的地址与第二规则匹配。
在起始地址与大小均一致的情况下,可以保证PCIe设备的客户端物理地址与PCIe设备的主机物理地址一致。
根据第一方面的第二种可能的实现方式,在第五种可能的实现方式中,交换机接收到的传输层报文携带的目的地址为第二PCIe设备的客户端物理地址,第二PCIe设备的客户端物理地址与第二PCIe设备的主机物理地址不一致,交换机将传输层报文的目的地址与第二规则进行匹配,具体包括:交换机确认传输层报文的目的地址与第二规则不匹配,交换机确认传输层报文的目的地址是第二PCIe设备的客户端物理地址,交换机将传输层报文中的目的地址由第二PCIe设备的客户端物理地址转换为第二PCIe设备的主机物理地址,交换机确认转换后的目的地址与第二规则匹配。
该方式可保证第二PCIe设备的客户端物理地址与第二PCIe设备的主机物理地址不一致的情况下,交换机可在交换机本地将传输层报文目的地址携带的第二PCIe设备的客户端物理地址转换成第二PCIe设备的主机物理地址,从而确保传输层报文能够直接转发至第二PCIe设备。
根据第一方面的第二种可能的实现方式,在第六种可能的实现方式中,交换机接收到的传输层报文携带的目的地址为第二PCIe设备的主机物理地址,交换机将传输层报文的目的地址与第二规则进行匹配,具体包括:交换机确认传输层报文的目的地址与第二规则匹配。
该方式在虚拟机获知第二PCIe设备的主机物理地址的情况下尤为适用。
第二方面,本申请提供一种主机,该主机作为虚拟机所在的宿主机,主机还包括第一PCIe设备、第二PCIe设备以及与第一PCIe设备连接的交换机,第一PCIe设备和第二PCIe设备被配置为虚拟机的直通设备,第一PCIe设备和第二PCIe设备用于处理虚拟机的数据,虚拟机指示第一PCIe设备向第二PCIe设备传输数据,其中:交换机,用于接收第一PCIe设备发送的传输层报文,传输层报文包含待传输数据的源地址和待传输数据的目的地址,源地址为第一PCIe设备的地址,目的地址为第二PCIe设备的地址,交换机,用于将传输层报文与预置的转发规则进行匹配,在传输层报文匹配转发规则的情况下,将传输层报文转发至第二PCIe设备。
第二方面或第二方面任意一种实现方式是第一方面或第一方面任意一种实现方式对应的装置实现,第一方面或第一方面任意一种实现方式中的描述适用于第二方面或第二方面任意一种实现方式,在此不再赘述。
第三方面,本申请提供一种虚拟机的配置方法,该方法用于为虚拟机配置PCIe设备,具体地,该方法包括以下步骤:获取虚拟机的宿主机上的第一PCIe设备的信息和第二PCIe设备的信息,其中,第一PCIe设备的信息包括第一PCIe设备的主机物理地址,第二PCIe设备的信息包括第二PCIe设备的主机物理地址,将第一PCIe设备和第二PCIe设备分配给虚拟机,分别为第一PCIe设备和第二PCIe设备配置客户端物理地址,其中,第一PCIe设备的客户端物理地址与第一PCIe设备的主机物理地址一致,第二PCIe设备的客户端物理地址与第二PCIe设备的主机物理地址一致。
由于在虚拟机分配地址时将进行端到端数据传输的PCIe设备的客户端物理地址设置为等于主机物理地址,从而无需进行客户端物理地址到主机物理地址的地址映射,可以加快在PCIe设备之间端到端传输的传输层报文的传输速度。
在第三方面的第一种可能的实现方式中,在分别为第一PCIe设备和第二PCIe设备配置客户端物理地址之前,该方法还包括:确定第一PCIe设备与第二PCIe设备连接至一致的PCIe交换机。
在第一PCIe设备与第二PCIe设备连接至一致的PCIe交换机的情况下,第一PCIe设备传输至第二PCIe设备的传输层报文可经PCIe交换机直接转发至第二PCIe设备,实现单向的数据传输,且无需绕行,可有效加快数据传输速度。
根据第三方面的第一种可能的实现方式,在第二种可能的实现方式中,第一PCIe设备与PCIe交换机的第一下游交换端口连接,第二PCIe设备与PCIe交换机的第二下游交换端口连接,该方法还包括以下步骤:将第一下游交换端口和第二下游交换端口设置为允许PCIe终端到PCIe终端传输。
在第一下游交换端口和第二下游交换端口设置为允许PCIe终端到PCIe终端传输的情况下,PCIe交换机支持与其相连的第一PCIe设备和第二PCIe设备之间的PCIe终端到PCIe终端传输,从而使得来自第一PCIe设备的传输层报文能够经PCIe交换机顺利转发至第二PCIe设备。
根据第三方面的第二种可能的实现方式,在第三种可能的实现方式中,第一下游交换端口允许通过的传输层报文的目的地址范围包括第二PCIe设备的主机物理地址,第二下游交换端口允许通过的传输层报文的目的地址范围包括第一PCIe设备的主机物理地址。
在第一PCIe设备发送传输层报文至第二PCIe设备的情况下,传输层报文到达PCIe交换机的第一下游交换端口之后,PCIe交换机通过检测传输层报文的目的地址(即第二PCIe设备的主机物理地址)来确认是否转发该传输层报文,在确认第一下游交换端口允许通过的传输层报文的目的地址范围包括第二PCIe设备的主机物理地址时,PCIe交换机根据传输层报文的目的地址选择与第二PCIe设备连接的第二下游交换端口以发送传输层报文至第二PCIe设备;类似地,在第二PCIe设备发送传输层报文至第一PCIe设备的情况下,传输层报文到达PCIe交换机的第二下游交换端口之后,PCIe交换机通过检测传输层报文的目的地址(即第二PCIe设备的主机物理地址)来确认是否转发该传输层报文,在确认第二下游交换端口允许通过的传输层报文的目的地址范围包括第一PCIe设备的主机物理地址时,PCIe交换机根据传输层报文的目的地址选择与第一PCIe设备连接的第一下游交换端口来发送传输层报文至第一PCIe设备。
根据第三方面、第三方面的第一至第三种可能的实现方式中的任一者,在第四种可能的实现方式中,将第一PCIe设备的客户端物理地址设置为与第一PCIe设备的主机物理地址一致,将第二PCIe设备的客户端物理地址设置为与第二PCIe设备的主机物理地址一致,具体包括以下子步骤:将第一PCIe设备的客户端物理地址的起始地址设置为与第一PCIe设备的主机物理地址的起始地址一致,将第一PCIe设备的客户端物理地址的大小设置为与第一PCIe设备的主机物理地址的大小一致,将第二PCIe设备的客户端物理地址的起始地址设置为与第二PCIe设备的主机物理地址的起始地址一致,将第二PCIe设备的客户端物理地址的大小设置为与第二PCIe设备的主机物理地址的大小一致。
在起始地址与大小均一致的情况下,可以保证PCIe设备的客户端物理地址与PCIe设备的主机物理地址一致。
根据第三方面、第三方面的第一至第四种可能的实现方式中的任一者,在第五种可能的实现方式中,第一PCIe设备的信息还包括第一PCIe设备的设备标识和设备描述信息,第二PCIe设备的信息包括第二PCIe设备的设备标识和设备描述信息,该方法还包括以下步骤:发送第一PCIe设备的设备标识和设备描述信息、以及第二PCIe设备的设备标识和设备描述信息至云管理平台,接收云管理平台发送的虚拟机创建命令,其中虚拟创建命令携带有第一PCIe设备的设备标识和第二PCIe设备的设备标识,并根据虚拟机创建命令创建虚拟机。
在本实现方式中,通过将有第一PCIe设备的设备标识和第二PCIe设备的设备标识上传到云管理平台,云管理平台的用户可根据端到端传输的需求选择第一PCIe设备和第二PCIe设备,云管理平台发送携带有第一PCIe设备的设备标识和第二PCIe设备的设备标识的虚拟创建命令至宿主机,宿主机在创建虚拟机时或创建好虚拟机之后可将根据第一PCIe设备的设备标识和第二PCIe设备的设备标识将第一PCIe设备和第二PCIe设备设置为虚拟机的直通设备,从而实现云上设置虚拟机的PCIe设备之间的端到端传输。
根据第三方面的第五种可能的实现方式,在第六种可能的实现方式中,将第一PCIe设备和第二PCIe设备分配给虚拟机,具体实现为:根据虚拟机创建命令携带的第一PCIe设备的设备标识将第一PCIe设备分配至虚拟机,根据虚拟机创建命令携带的第二PCIe设备的设备标识将第二PCIe设备分配至虚拟机。
PCIe设备的设备标识是宿主机上识别PCIe设备的唯一标识,因此可根据PCIe设备的设备标识将PCIe设备分配至虚拟机,从而实现上设置虚拟机的PCIe设备之间的端到端传输。
第四方面,本申请提供一种虚拟机配置装置,用于为虚拟机配置PCIe设备,该虚拟机配置装置包括:信息获取模块,用于获取虚拟机的宿主机的第一PCIe设备的信息和第二PCIe设备的信息,其中,第一PCIe设备的信息包括第一PCIe设备的主机物理地址,第二PCIe设备的信息包括第二PCIe设备的主机物理地址,设备分配模块,用于将第一PCIe设备和第二PCIe设备分配给虚拟机,地址设置模块,用于分别为第一PCIe设备和第二PCIe设备配置客户端物理地址,其中,第一PCIe设备的客户端物理地址与第一PCIe设备的主机物理地址一致,第二PCIe设备的客户端物理地址与第二PCIe设备的主机物理地址一致。
第四方面或第四方面任意一种实现方式是第二方面或第二方面任意一种实现方式对应的装置实现,第二方面或第二方面任意一种实现方式中的描述适用于第四方面或第四方面任意一种实现方式,在此不再赘述。
第五方面,本申请提供一种计算机可读存储介质,该计算机可读存储介质中存储了指令,该指令被处理器运行时,实现前述第二方面或第二方面任意一种实现方式中提供的虚拟机的配置方法。该计算机可读存储介质包括但不限于只读存储器,随机访问存储器,快闪存储器、HDD或SSD。
第六方面,本申请提供了一种计算机程序产品,该计算机程序产品包括程序代码,当该计算机程序产品被存储控制器执行时,该存储控制器执行前述第二方面或第二方面任意一种实现方式提供的虚拟机的配置方法。该计算机程序产品可以为一个软件安装包,在需要使用前述第二方面或第二方面任意一种实现方式提供的图形处理方法的情况下,可以下载该计算机程序产品至存储控制器并在该存储控制器上运行该计算机程序产品。
附图说明
为了更清楚地说明本申请实施例或背景技术中的技术方案,下面将对本申请实施例或背景技术中所需要使用的附图进行说明。
图1是根据本发明实施例的GPA—>HVA—>HPA的转换示意图;
图2是根据本发明实施例的云管理系统的装置结构示意图;
图3是根据本发明实施例的宿主机1的装置结构示意图;
图4是根据本发明实施例的宿主机2的装置结构示意图;
图5是根据本发明实施例的虚拟机管理方法的数据交互图;
图6是根据本发明实施例的宿主机1的硬件层10的另一结构示意图;
图7是根据本发明实施例的宿主机1的另一装置结构示意图;
图8是根据本发明实施例的虚拟机管理方法的子流程图;
图9是根据本发明实施例的宿主机1的HPA与虚拟机113的GPA的地址对应图;
图10是根据本发明实施例的PCIe设备的通信方法的流程图;
图11是根据本发明实施例的PCIe设备的通信方法的另一流程图;
图12是根据本发明实施例的宿主机1的另一装置结构示意图;
图13是根据本发明实施例的宿主机1的另一装置结构示意图;
图14是根据本发明实施例的PCIe设备通信方法的另一流程图;
图15是根据本发明实施例的虚拟机配置装置的装置结构示意图;
图16是根据本发明实施例的主机的另一装置结构示意图。
具体实施方式
下面结合本申请实施例中的附图对本申请实施例进行描述。
首先,对本发明实施例涉及的技术术语进行介绍:
设备直通技术:又称设备穿透(device pass through)技术,是指将宿主机的PCIe设备直接分配给宿主机的虚拟机,由宿主机的虚拟机独占使用PCIe设备。
PCIe P2P(peer to peer)技术:两个PCIe终端(EP,Endpoint)设备之间进行端到端的TLP数据传输。
内存虚拟化技术:内存虚拟化技术的目的是为了提供给虚拟机一个从0地址开始的连续物理内存空间,在虚拟机之间有效隔离,调度以及共享内存资源。
内存虚拟化技术主要涉及客户机虚拟地址(Guest Virtual Address,GVA)—>GPA—>宿主机虚拟地址(Guest Virtual Address,GVA)—>HPA的转换。
其中,GVA是虚拟机的操作系统对GPA进行映射而形成的地址,虚拟机的操作系统将GVA提供给设置在虚拟机的操作系统上的进程或应用软件使用,虚拟机的操作系统记录GVA到GPA的映射关系,GVA到GPA的转化是由虚拟机的操作系统的页表实现的。
而HVA是宿主机的操作系统对HPA进行映射而形成的地址,宿主机的操作系统将HVA提供给操作系统上的进程或软件使用,宿主机的操作系统记录HVA到HPA的映射关系,HVA到HPA的转化是由宿主机的操作系统的页表实现的。
并请结合图1,图1是根据本发明实施例的GPA->HVA->HPA的转换示意图,其中,虚拟机监视器(Virtual Machine Monitor,VMM)在创建一个虚拟机的时候会设置该虚拟机的内存大小,如图1所示,虚拟机监视器(Virtual Machine Monitor,VMM)(图未示)为虚拟机A分配了5GB的内存,会调用mmap()函数申请一个5GB的空间,mmap()函数返回一个userspace_addr(如1GB),这个地址是宿主机操作系统分配的。另外VMM还需要设置虚拟机A的GPA起始地址guest_phys_addr和大小memory_size,如guest_phys_addr=0,memory_size=5GB。这样HVA=userspace_addr+(GPA-guest_phys_addr)。
对于任何一个操作系统来说,内存是物理地址从0开始的连续的地址空间,对应地,在虚拟化环境下,拥有物理内存直接访问权限的是VMM,但一个宿主机的物理内存只有一份,VMM需要在宿主机上为每个虚拟机操作系统模拟出可以当作物理内存一样使用的虚拟内存。因此,VMM模拟了一层新的地址空间,即客户机物理地址空间GPA。每个虚拟机把自身分配到的GPA认为是自己独占的物理地址空间,但GPA不是宿主机的物理地址空间HPA。
举例而言,在图1中,虚拟机A和虚拟机B设置在同一个宿主机上,宿主机的VMM将虚拟机A的GPA地址范围设置为0-5GB,其对应于物理内存上的HPA地址范围1.5GB-4.5GB以及6.5GB-8.5GB。并且,宿主机的虚拟机管理器将虚拟机B的GPA地址范围设置为设置为0-4GB,对应于物理内存上的HPA地址范围9GB-11GB以及13GB-15GB。因此虚拟机A独占使用0-5GB的GPA地址范围,虚拟机B独占使用0-4GB的GPA地址范围。该0-5GB的GPA地址范围和该0-4GB的GPA地址范围均可对应至物理内存上的不同的HPA地址范围,从而实现虚拟机内存的虚拟化。
值得注意的是,当虚拟机A使用0-5GB的GPA地址范围时,在至少两个PCIe设备直通至虚拟机A,且该至少两个PCIe设备需要实现P2P通信的情况下,当至少两个PCIe设备中的第一PCIe设备要将数据传输至至少两个PCIe设备中的第二PCIe设备时,虚拟机A会通知第一PCIe设备构造TLP并发送该TLP至PCIe总线,其中第二PCIe设备的在虚拟机A的GPA地址作为该TLP的目的地址。在第二PCIe的GPA地址作为该TLP的目的地址的情况下,PCIe交换机是不能在PCIe总线中进行正确寻址的,故现有技术需设置地址转换单元,其用于将GPA转换为HPA,并将HPA作为TLP报文中的目的地址,才能在PCIe总线上正确寻址。
本发明实施例通过将PCIe设备在虚拟机的GPA地址直接设置为与PCIe设备在宿主机的HPA地址一致,从而无需设置地址转换单元,具体实现方法请参见下文的介绍。
首先请参见图2,图2是根据本发明实施例的云管理系统的装置结构示意图,如图2所示,根据本发明实施例的云管理系统包括云管理平台1000,客户端2000以及资源池4000,云管理平台1000、客户端2000以及资源池4000分别连接至网络3000,可通过网络3000实现通信。
其中,资源池4000包括多个宿主机,云管理平台1000可查询每个宿主机的可用资源,如计算资源、网络资源以及存储资源,从而在宿主机上创建符合客户端需求的虚拟机。
资源池4000的每个宿主机均设置有虚拟机管理器,云管理平台可与每个宿主机的虚拟机管理器进行通信。
云管理平台可例如为Openstack或VMware vCenter,客户端可例如为个人电脑或平板电脑。在另外一些示例中,云管理平台也可作为一个子系统设置在资源池的一个宿主机内。
并请参见图3,图3是根据本发明实施例的宿主机1的装置结构示意图,如图3所示,宿主机1包括硬件层10和软件层11,其中,硬件层10包括CPU 11、内存102、根复合体103、PCIe交换机104、GPU 1051以及GPU 1052。软件层11包括宿主机1的操作系统111,虚拟机配置装置1111设置在操作系统111中。
在另外一些示例中,虚拟机配置装置1111也可以第三方软件的形式设置在操作系统111外,或部分设置在操作系统111内,部分设置在操作系统111外。
举例而言,虚拟机配置装置1111可由VMM、libirt、qemu、以及nova等组件实现。
CPU 11、内存102、根复合体103、PCIe交换机104、GPU 1051以及GPU 1052之间通过PCIe总线连接,形成PCIe总线系统。
GPU 1051以及GPU 1052为PCIe设备,可作为PCIe协议中定义的PCIe终端(EP,Endpoint),GPU 1051以及GPU 1052可通过PCIe交换机104进行数据传输。
虚拟机配置装置1111可以访问PCIe总线系统,查询PCIe总线系统中各设备的相关参数,如设备标识、硬件规格、HPA地址范围等,并且可以配置PCIe总线系统中各设备的寄存器(即配置空间和BAR空间)。并且,虚拟机配置装置1111可与云管理平台1000通信。
进一步,根复合体103还设置有根端口1032,PCIe交换机104设置有上游端口1041、下游端口1042以及下游端口1043。其中,根端口1032与上游端口1041连接,下游端口1042与GPU 1051连接,下游端口1042与GPU 1052连接。
其中,宿主机1的操作系统111在初始化时会对PCIe交换机104作出如下配置:
设置PCIe交换机104的下游端口1042允许通过的地址范围包括GPU 1052在宿主机1分配的HPA地址范围(即GPU 1051的主机物理地址),设置下游端口1043允许通过的地址范围包括GPU 1053在宿主机1分配的HPA地址范围。
在另外一些示例中,上述配置也可以由宿主机2的虚拟机配置装置1111实现。
并请参见图4,图4是根据本发明实施例的宿主机2的装置结构示意图,其中宿主机2与宿主机1的结构大致相同,区别在于宿主机2设置有3个下游端口2042、2043以及2044。且下游端口2042与GPU 2051连接,下游端口2043与RDMA网卡2052连接,下游端口2044与SSD2053连接,其中,GPU 2051、RDMA网卡2052、以及SSD 2053均为PCIe设备。
其中,宿主机2的操作系统211在初始化时会对PCIe交换机204作出如下配置:
设置PCIe交换机204的下游端口2042允许通过的地址范围包括GPU 2052在宿主机2分配的HPA地址范围,设置下游端口2043允许通过的地址范围包括RDMA网卡2052在宿主机2分配的HPA地址范围,设置下游端口2044允许通过的地址范围包括SSD 2053在宿主机2分配的HPA地址范围。
在另外一些示例中,上述配置也可以由宿主机2的虚拟机配置装置2111实现。
以下请参见图5,图5是根据本发明实施例的虚拟机管理方法的数据交互图,图5所示的虚拟机管理方法基于图2所示云管理系统,并且为了便于说明,假设图2所示的资源池4000中仅包括宿主机1和宿主机2。如图5所示,根据本发明实施例的虚拟机管理方法包括以下步骤:
步骤S1:宿主机2的虚拟机配置装置2111确定宿主机2的PCIe设备组,获取宿主机2的PCIe设备组的PCIe设备的信息。
步骤S2:宿主机1的虚拟机配置装置1111确定宿主机1的PCIe设备组,获取宿主机1的PCIe设备组的PCIe设备的信息。
针对步骤S1和S2,可结合图3和图4一并参考,在图3中,宿主机1的虚拟机配置装置1111确定PCIe设备组105,其中PCIe设备组105包括GPU 1051和GPU 1052。在图4中,宿主机2的虚拟机配置装置2111确定PCIe设备组205,其中PCIe设备组205包括GPU 2051、RDMA网卡2052以及SSD 2053。
在一些示例中,PCIe设备组中的PCIe设备均连接至同一PCIe交换机,举例而言,如图3所示,GPU 1051和GPU 1052均连接PCIe交换机104。
在另外一些示例中,PCIe设备组中的PCIe设备可连接至不同的PCIe交换机,本发明实施例对此不作限定,可结合图6进行参考,图6是根据本发明实施例的宿主机1的硬件层10的另一结构示意图,图6所示的硬件层10与图3相比,PCIe交换机104进一步设置有下游端口1044,其与PCIe交换机106的上游端口1061连接,PCIe交换机106还包括与GPU 1071连接的下游端口1062,以及与RDMA网卡1072连接的下游端口1063。在图6所示的硬件层10中,宿主机1的虚拟机配置装置1111确定PCIe设备组107,其中PCIe设备组1071包括GPU 1051、GPU1052、GPU 1071以及RDMA网卡1072。而GPU 1051和GPU 1052连接至PCIe交换机104,GPU1071和RDMA网卡1072连接至PCIe交换机106。
可选地,虚拟机配置装置在确定PCIe设备组时,可进一步检查PCIe设备是否支持P2P传输,如果否,不将此PCIe设备加入到PCIe设备组中。举例而言,在图6中,若GPU 1071不支持P2P传输,GPU 1051、GPU 1052以及RDMA网卡1072支持P2P传输,则宿主机1的虚拟机配置装置1111确定的PCIe设备组107仅包括GPU 1051、GPU 1052、GPU 1071以及RDMA网卡1072。
可选地,虚拟机配置装置确定的PCIe设备组中的每一PCIe设备均处于空闲状态,当存在不处于空闲状态的PCIe设备时,虚拟机配置装置可尝试将该PCIe设备停用,在停用成功时,再将该PCIe设备加入到PCIe设备组中,在停用不成功时,则不将该PCIe设备加入到PCIe设备组中。
值得注意的是,步骤S2也可先于步骤S1执行,本发明实施例对此不作限定。并且,步骤S1可在宿主机2启动时执行,步骤S2可在宿主机1启动时执行,虚拟机配置装置可使用GPU或RDMA厂商提供的工具库(如NVIDIA的NVML库)查询PCIe设备的信息,也可以根据主机硬件配置及GPU型号判断,将生成的PCIe设备的信息以XML文件形式持久化存储。
在步骤S1和步骤S2生成的PCIe设备的信息记录有各自所在的宿主机的PCIe设备组中的每一PCIe设备的设备标识、设备描述信息、以及在宿主机的主机物理地址HPA地址范围的对应关系。其中,设备描述信息包括PCIe设备的类型,举例而言,类型包括GPU、FPGA以及RDMA网卡等,在另外一些示例中,设备描述信息还包括硬件规格,硬件规格包括核心频率、帧速、显存容量、制造工艺、流处理器数量以及带宽等。
并且,PCIe设备的设备标识可为总线-设备-功能(BDF,Bus Device Function)号,BDF号可在PCIe总线系统中标识PCIe设备。
举例而言,图3所示的宿主机1的PCIe设备组105的PCIe设备的信息如表1所示:
表1:
Figure BDA0001820337060000091
Figure BDA0001820337060000101
在表1中,第一行为GPU1051的设备信息,第二行为GPU1052的设备信息,GPU1051的设备信息包括GPU1051的设备标识、设备描述信息以及HPA地址范围的对应关系,GPU1052的设备信息包括GPU1052的设备标识、设备描述信息以及HPA地址范围的对应关系,其中,GPU1051的设备标识是45:00:00,GPU1052的设备标识是49:00:00。
针对设备标识45:00:00对应的HPA地址范围,其包括3个区域,其中Region 0是GPU1051在宿主机1分配的不可预取的内存区域,其包括基地址95000000和范围大小16M,Region 1是GPU 1051在宿主机1分配的可预取的内存区域,其包括基地址3f800000000和范围大小(size)16G,Region 2是GPU 1051在宿主机1分配的可预取的内存区域,其包括基地址3fc00000000和范围大小32M。其中,Region 0、Region 1以及Region 2分别记录在GPU1051的一个基地址寄存器(BAR,Base Adress Register)中,如Region 0可记录在GPU 1051的BAR 0,Region 1可记录在GPU 1051的BAR 1,Region 2可记录在GPU 1051的BAR 2。
类似地,针对设备标识49:00:00对应的HPA地址范围,其包括3个区域,其中Region0是GPU 1052在宿主机1分配的不可预取的内存区域,其包括基地址94000000和范围大小16M,Region 1是GPU 1052在宿主机1分配的可预取的内存区域,其包括基地址3f000000000和范围大小16G,Region 2是GPU 1052在宿主机1分配的可预取的内存区域,其包括基地址3f400000000和范围大小32M。其中,Region 0、Region 1以及Region 2分别记录在GPU 1052的一个基地址寄存器(BAR,Base Adress Register)中,如Region 0可记录在GPU 1052的BAR 0,Region 1可记录在GPU 1052的BAR 1,Region 2可记录在GPU 1052的BAR 2。
宿主机2的PCIe设备组107的PCIe设备的信息与表1类似,区别在于设备数量和相关数据不同(取决于宿主机2的硬件),于此不作赘述。
步骤S3:客户端2000发送虚拟机创建请求至云管理平台1000,其中虚拟机创建请求携带有需要创建的虚拟机的资源需求,该资源需求包括虚拟机所需的处理器、硬盘、内存、网络、操作系统、BIOS等要求。
值得注意的是,在本发明实施例中,虚拟机创建请求还进一步包括要创建的虚拟机所需的PCIe设备的条件。举例而言,PCIe设备的类型为GPU,预定数量为2个。
步骤S4:云管理平台1000发送资源查询请求至宿主机1的虚拟机配置装置1111。其中资源查询请求用于查询宿主机1的可用资源。
步骤S5:云管理平台1000发送资源查询请求至宿主机2的虚拟机配置装置2111。其中资源查询请求用于查询宿主机2的可用资源。
可选地,云管理平台1000可将资源查询请求广播至宿主机1和宿主机2所在的资源池从而同时实现步骤S4和S5。
步骤S6:虚拟机配置装置1111发送宿主机1的可用资源的描述信息至云管理平台1000。
其中,宿主机1的可用资源的描述信息包括宿主机1的PCIe设备组105中的每一PCIe设备的设备标识和设备描述信息(具体可参见表1的第1和第2列)。
并且,宿主机1的可用资源的描述信息包括宿主机1的可用的计算、存储以及网络资源。
步骤S7:虚拟机配置装置2111发送宿主机2的可用资源的描述信息至云管理平台1000。
类似地,宿主机2的可用资源的描述信息包括宿主机2的PCIe设备组205中的每一PCIe设备的设备标识和设备描述信息,以及宿主机2的可用的计算、存储以及网络资源。
步骤S8:云管理平台1000将步骤S6接收到的宿主机1的可用资源的描述信息和步骤S7接收到的宿主机2的可用资源的描述信息分别与步骤S3接收到的虚拟机创建请求进行比对,选择与虚拟机创建请求匹配的宿主机。
举例而言,管理平台1000判断步骤S6接收到的宿主机1的可用的计算资源、存储资源、网络资源是否满足虚拟机创建请求携带的需要创建的虚拟机的资源需求,并判断PCIe设备组105的PCIe设备的设备描述信息是否满足虚拟机创建请求携带的要创建的虚拟机所需的PCIe设备的条件,在以上二者均满足时则选择宿主机1。
类似地,管理平台1000判断步骤S7接收到的宿主机2的可用的计算资源、存储资源、网络资源是否满足虚拟机创建请求携带的需要创建的虚拟机的资源需求,并判断PCIe设备组205的PCIe设备的设备描述信息是否满足虚拟机创建请求携带的要创建的虚拟机所需的PCIe设备的条件,在以上二者均满足时则选择宿主机2。
在本步骤中,假设管理平台1000判断到宿主机1的可用的计算资源、存储资源、网络资源满足虚拟机创建请求携带的需要创建的虚拟机的资源需求,并判断PCIe设备组105的PCIe设备的设备描述信息满足虚拟机创建请求携带的要创建的虚拟机所需的PCIe设备的条件,因此云管理平台1000选择宿主机1。
值得注意的是,当宿主机1和宿主机2均满足需要创建的虚拟机的资源需求和要创建的虚拟机所需的PCIe设备的条件时,云管理平台1000可选择宿主机1和宿主机2中的任一者。
步骤S9:云管理平台1000发送虚拟机创建命令至宿主机1的虚拟机配置装置1111。
其中,虚拟机创建命令携带有需要创建的虚拟机的资源需求,该资源需求包括虚拟机所需的处理器、硬盘、内存、网络等要求,并且,在本发明实施例中,虚拟机创建命令还进一步携带PCIe设备组105中的GPU 1051的设备标识和GPU 1052的设备标识。
步骤S10:宿主机1的虚拟机配置装置1111接收虚拟机创建命令,根据需要创建的虚拟机的资源需求调用宿主机1的可用资源以在宿主机1创建虚拟机,并根据虚拟机创建命令携带的PCIe设备组105中的GPU 1051的设备标识和GPU 1052的设备标识对创建的虚拟机进行配置。
步骤S11:虚拟机配置装置1111在完成虚拟机创建和配置之后,发送第一响应信息至云管理平台1000。
其中,虚拟机配置装置1111在虚拟机创建或配置失败时,产生的第一响应信息用于通知云管理平台1000虚拟机创建及配置成功。
可选地,虚拟机配置装置1111在虚拟机创建或配置失败时,产生的第一响应信息用于通知云管理平台1000创建或配置失败,云管理平台1000需在资源池中再选择其他符合条件的宿主机。
步骤S12:云管理平台1000发送第二响应信息至客户端2000。
其中,第二响应信息携带有宿主机1上创建的虚拟机的连接信息,例如网络地址和网络端口,客户端2000可根据连接信息连接至步骤S11创建的虚拟机中。
具体地,为进一步清楚说明步骤S10所述的虚拟机的创建及配置方法,请结合图7和图8一并参考,其中图7是根据本发明实施例的宿主机1的另一装置结构示意图。图8是根据本发明实施例的虚拟机管理方法的子流程图,其中图7与图3相比,进一步示出步骤S10创建的虚拟机113,如图7所示,虚拟机113包括应用软件1131、操作系统1132以及BIOS 1133。
如图8所示,步骤S10包括以下子步骤:
步骤100:虚拟机配置装置1111根据虚拟机创建命令携带的资源需求创建虚拟机113。
结合图7,在本步骤中,虚拟机113包括处理器GPU 101’、硬盘(图7未示出)、内存(图7未示出)、网络(图7未示出)、操作系统1152、以及BIOS 1133。
其中虚拟机配置装置1111对GPU 1051进行虚拟化可获得GPU 101’,而硬盘、内存、网络也是由虚拟机配置装置1111对宿主机1的对应硬件进行虚拟化获得,而操作系统1152以及BIOS 1133则由虚拟机配置装置1111模拟获得。
步骤101:虚拟机配置装置1111根据虚拟机创建命令携带的第一PCIe设备的设备标识将第一PCIe设备直通至虚拟机,根据虚拟机创建命令携带的第二PCIe设备的设备标识将第二PCIe设备直通至虚拟机。
举例而言,第一PCIe设备为GPU 1051,第二PCIe设备为1052,虚拟机配置装置1111根据虚拟机创建命令携带的GPU 1051的设备标识45:00:00将GPU 1051直通至虚拟机113,根据虚拟机创建命令携带的GPU 1052的设备标识将GPU 1052直通至虚拟机113,使得虚拟机113可独占使用GPU 1051和GPU 1052。
结合图7,虚拟机配置装置1111为虚拟机设置虚拟的GPU 1051’以及GPU 1052’,GPU 1051’具有在宿主机的PCIe总线系统的设备标识45:00:00,GPU 1052’具有在宿主机的PCIe总线系统的设备标识49:00:00,虚拟机113通过设备标识45:00:00访问GPU 1051’时,虚拟机配置装置1111通过设备标识45:00:00对应访问GPU 1051,从而实现虚拟机113的PCIe设备直通。
类似地,虚拟机113通过设备标识49:00:00访问GPU 1052’时,虚拟机配置装置1111通过设备标识49:00:00对应访问GPU 1052,从而实现虚拟机113的PCIe设备直通。
步骤102:虚拟机配置装置1111根据虚拟机创建命令携带的第一PCIe设备的设备标识从宿主机1的PCIe设备的信息获取第一PCIe设备在宿主机1的HPA地址范围,根据虚拟机创建命令携带的第二PCIe设备的设备标识从宿主机1的PCIe设备的信息获取第二PCIe设备在宿主机1的HPA地址范围。
举例而言,虚拟机配置装置1111根据45:00:00从上文记载的表1获取GPU 1051的HPA地址范围:不可预取的内存区域(memory region),其包括基地址95000000和范围大小16M;可预取的内存区域,其包括基地址3f800000000和范围大小16G;可预取的内存区域,其包括基地址3fc00000000和范围大小32M。
并且,虚拟机配置装置1111根据49:00:00从上文记载的表1获取GPU 1052的HPA地址范围:不可预取的内存区域(memory region),其包括基地址94000000和范围大小16M;可预取的内存区域,其包括基地址3f000000000和范围大小16G;可预取的内存区域,其包括基地址3f400000000和范围大小32M。
步骤103:虚拟机配置装置1111将第一PCIe设备在虚拟机的客户端物理地址GPA地址范围(即第一PCIe设备的客户端物理地址)设置为与第一PCIe设备在宿主机的HPA地址范围(即第二PCIe设备的主机物理地址)一致,将第二PCIe设备在虚拟机的GPA地址范围(即第二PCIe设备的客户端物理地址)设置为与第二PCIe设备在宿主机的HPA地址范围(即第二PCIe设备的主机物理地址)一致。
举例而言,虚拟机配置装置1111可为GPU 1051’设置BAR0’、BAR1’以及BAR2’,并在BAR0’写入基地址95000000和范围大小16M(与GPU 1051的BAR0记录的不可预取的内存区域一致),在BAR1’写入基地址3f800000000和范围大小16G(与GPU 1051的BAR1记录的可预取的内存区域一致),在BAR2’写入基地址3fc00000000和范围大小32M(与GPU 1051的BAR2记录的可预取的内存区域一致)。
并且,虚拟机配置装置1111可为GPU 1052’设置BAR0”、BAR1”以及BAR2”,并在BAR0”写入基地址94000000和范围大小16M(与GPU 1052的BAR0记录的不可预取的内存区域一致),在BAR1”写入基地址3f000000000和范围大小16G(与GPU 1052的BAR1记录的可预取的内存区域一致),在BAR2”写入基地址3f400000000和范围大小32M(与GPU 1052的BAR2可预取的内存区域一致)。
具体可结合图9一并参考,图9是根据本发明实施例的宿主机1的HPA与虚拟机113的GPA的地址对应图,在图9中,GPU 1051的BAR0表示GPU 1051的BAR0中记载的HPA地址范围,BAR0’表示GPU 1051’的BAR0’中记载的GPA地址范围,根据图8可知,二者完全一致,类似地,图8也示出其他的地址范围对应关系,于此不作赘述。
步骤104:虚拟机配置装置1111将与第一PCIe设备连接的PCIe交换机的第一下游端口和与第二PCIe设备连接的PCIe交换机的第二下游端口设置为允许端到端传输的通信模式。
举例而言,虚拟机配置装置1111将与GPU 1051连接的PCIe交换机104的下游端口1042设置为允许端到端传输的通信模式,将与GPU 1052连接的PCIe交换机104的下游端口1043设置为允许端到端传输。
具体地,PCIe交换机104中的每个下游端口均设置有对应的Control Bit E寄存器、Control Bit R寄存器以及Egress Control Vector寄存器,虚拟机配置装置1111可通过设置一个下游端口对应的Control Bit E寄存器、Control Bit R寄存器和EgressControl Vector寄存器来确定该下游端口端口是否允许端到端传输。
根据PCIe协议,当一个下游端口对应的Control Bit E寄存器和Control Bit R寄存器均写入1,且Egress Control Vector寄存器写入0时,该下游端口被配置为允许端到端传输。
因此,在本发明实施例中,虚拟机配置装置1111在PCIe交换机104中下游端口1042对应的Control Bit E寄存器和Control Bit R寄存器中分别写入1,在PCIe交换机104中下游端口1042对应的Egress Control Vector寄存器写入0,从而使得下游端口1042被配置为允许端到端传输。
类似地,虚拟机配置装置1111在PCIe交换机104中下游端口1043对应的ControlBit E寄存器和Control Bit R寄存器中分别写入1,在PCIe交换机104中下游端口1043对应的Egress Control Vector寄存器写入0,从而使得下游端口1043被配置为允许端到端传输。
值得注意的是,PCIe协议还规定,PCIe交换机的一个下游端口对应的Control BitE寄存器和Control Bit R寄存器均写入1,且Egress Control Vector寄存器写入1时,该下游端口被配置为将经该下游端口的TLP直接发送至PCIe交换机的上游端口。因此,在本发明实施例中,若PCIe交换机104还设置有其他下游端口,可进一步将其他下游端口对应的Control Bit E寄存器和Control Bit R寄存器中分别写入1,并将其他下游端口对应的Egress Control Vector寄存器写入1,从而使得只有PCIe设备组105中的GPU 1051和GPU1052被允许进行端到端传输。
在同一个PCIe交换机的两个下游端口被设置为运行端到端传输的通信模式之后,PCIe交换机在其中任一个下游端口接收到传输层报文之后,会根据第一规则将该传输层报文直接转发至另一个下游端口,其中,第一规则为该两个下游端口配置为端到端的通信模式。
综上,宿主机1上创建的虚拟机113直通有GPU 1051和GPU 1052,且GPU 1051连接的下游端口1042与GPU 1052连接的下游端口1043配置可支持端到端传输,由于GPU 1051在虚拟机113的GPA地址范围设置为与GPU1051在宿主机1的HPA地址范围设置为完全一致,而GPU 1052在虚拟机113的GPA地址范围设置为与GPU 1052在宿主机的HPA地址范围设置为完全一致,因此在GPU1051与GPU 1052之间进行PCIe端到端通信时,无需进行GPA到HPA的地址转换,可极大地提高数据传输效率。
以下请参见图10,图10是根据本发明实施例的PCIe设备的通信方法的流程图,如图6所示,根据本发明实施例的PCIe设备的通信方法包括以下步骤:
S21:虚拟机向第一PCIe设备发送请求。
S22:第一PCIe设备根据改请求构造传输层报文并发送传输层报文。
S23:交换机接收传输层报文,将传输层报文与预置的转发规则进行匹配,其中,传输层报文包含待传输数据的源地址和待传输数据的目的地址,源地址为第一PCIe设备的地址,目的地址为第二PCIe设备的地址,在匹配的情况下,执行步骤S24,在不匹配的情况下,执行步骤S25。
其中,预置的转发规则包括:第一规则和第二规则,第一规则包括交换机的第一下游端口与第二下游端口配置为端到端的通信模式,第二规则包括传输层报文的目的地址属于第二下游端口所允许通过的地址范围,第一下游端口为交换机与第一PCIe设备相连接的下游端口,第二下游端口为交换机与第二PCIe设备相连接的下游端口,端到端的通信模式为PCIe终端到PCIe终端通信。
S24:交换机将该传输层报文转发至第二PCIe设备。
S25:交换机丢弃该传输层报文。
在本发明实施例中,直接在PCIe交换机上转发传输层报文至PCIe设备,无需转发传输层报文至root complex进行地址映射,因此可提高直通至同一虚拟机的两个PCIe设备之间的数据传输速度。
为了进一步清楚说明,请参见图11和图12,图11是根据本发明实施例的PCIe设备的通信方法的另一流程图,其中图11详细示出图10中步骤23的子步骤,图12是根据本发明实施例的宿主机1的另一装置结构示意图,图11与图7相比,进一步绘示出GPU 1051的DMA控制器10511、GPU 1052的DMA控制器10521以及传输层报文TLP的流向。
参见图11,在步骤S21中,虚拟机向第一PCIe设备发送请求。
以图12为例进行说明,由于GPU 1051和GPU 1052直通至虚拟机113,因此虚拟机113可直接设置GPU 1051的DMA控制器10511和GPU 1052的DMA控制器10521,通过DMA控制器10511和DMA控制器10521实现GPU 1051与GPU 1052的端到端传输。
具体地,虚拟机113的应用软件1131可例如为统一计算设备架构(CUDA,ComputeUnified Device Architecture)软件平台,应用软件1131执行以下命令以产生数据传输请求:cudaMemcpyPeerAsync(3fc00000000,3f400000000,1024),其中,cudaMemcpyPeerAsync()是CUDA的应用程序编程接口(Application Programming Interface,API),该命令产生的数据传输请求用于将虚拟机113的GPA地址中以3fc00000000为起始地址,以1024K为范围大小的数据写入至虚拟机113的GPA地址中以3f400000000为起始地址的地址范围中。
虚拟机113的操作系统1132根据命令cudaMemcpyPeerAsync(3fc00000000,3f400000000,1024)判断到[3fc00000000,3fc00000000+1024K]位于GPU 1051在虚拟机113分配的GPA地址范围内。对应地,虚拟机113的操作系统1132设置GPU 1051的DMA控制器10511如下:将3f400000000写入DMA控制器10511的内存地址寄存器,将3fc00000000写入DMA控制器10511的外存地址寄存器,将启动DMA的命令码写入DMA控制器10511的命令寄存器,其中启动DMA的命令码包括写命令码和数据大小。
步骤S22:第一PCIe设备根据该请求构造传输层报文并发送传输层报文。
承上示例,GPU 1051的DMA控制器10511构造TLP写报文,其中,TLP写报文的源地址位于GPU 1051在虚拟机113分配的GPA地址范围,具体为3fc00000000,目的地址位于GPU1052在虚拟机113分配的GPA地址范围,具体为3f400000000,净荷数据为GPA地址范围[3fc00000000,3fc00000000+1024K]中的数据,并发送TLP写报文至下游端口1042(可参见图12的箭头1)。
步骤S231:交换机接收传输层报文。
承上示例,PCIe交换机104的下游交换端口1042接收到TLP写报文。
步骤S232:交换机将接收到传输层报文的下游端口与第一规则进行匹配,如果是,执行步骤S233,如果否,执行步骤S25。
承上示例,第一规则包括PCIe交换机104的第一下游端口1042与第二下游端口1043配置为端到端的通信模式,在本步骤中,PCIe交换机104将接收到TLP写报文的第一下游端口1042与第一规则中配置为端到端的通信模式的下游端口进行匹配,在本示例中,第一下游端口1042属于第一规则配置的端口,因此执行步骤S233。
步骤S233:交换机将传输层报文转发至第二下游端口。
承上示例,PCIe交换机104将TLP写报文从第一下游端口1042转发至第二下游端口1043。
步骤S234:交换机将传输层报文的目的地址与第二规则进行匹配,其中,第二规则包括传输层报文的目的地址属于第二下游端口所允许通过的地址范围,如果匹配,执行步骤S24,如果否,执行步骤S25。
承上示例,PCIe交换机104判断TLP写报文的目的地址3f400000000是否是第二下游端口1043允许通过的地址范围,根据上文可知,3f400000000是第二下游端口1043允许通过的地址范围,因此,执行步骤S24。
步骤S24:交换机将该传输层报文转发至第二PCIe设备。
承上示例,PCIe交换机104通过第二下游端口1043将TLP写报文发送至GPU 1052(可参见图12的箭头2)。GPU 1052的DMA控制器10521接收TLP写报文,并将净荷数据写入3f400000000(可参见图12的箭头3)。
值得注意的是,在另外一些示例中,TLP也可根据CUDA命令设置为TLP读报文,于此不作赘述。
因此,在本发明实施例中,由于在虚拟机分配地址时保证GPA=HPA,从而实现无需经过root complex进行地址映射,可以直接在PCIe交换机上利用GPA地址进行通信。
步骤S25:交换机丢弃该传输层报文。
可选地,在另外一些示例中,交换机可进一步记录第二PCIe设备的客户端物理地址,以及第二PCIe设备的客户端物理地址和第二PCIe设备的主机物理地址之间的关系,假设第二PCIe设备的客户端物理地址与第二PCIe设备的主机物理地址不一致,例如在步骤S234中,交换机确认传输层报文的目的地址与第二规则不匹配,交换机进一步判断传输层报文的目的地址是否是第二PCIe设备的客户端物理地址,如果是,交换机将传输层报文中的目的地址由第二PCIe设备的客户端物理地址转换为第二PCIe设备的主机物理地址,交换机确认转换后的目的地址与第二规则匹配。
该方式可保证第二PCIe设备的客户端物理地址与第二PCIe设备的主机物理地址不一致的情况下,交换机可在交换机本地将传输层报文目的地址携带的第二PCIe设备的客户端物理地址转换成第二PCIe设备的主机物理地址,从而确保传输层报文能够直接转发至第二PCIe设备。
可选地,若交换机接收到的传输层报文携带的目的地址为第二PCIe设备的主机物理地址,交换机确认传输层报文的目的地址与第二规则匹配。
值得注意的是,在另外一些示例中,虚拟机配置装置111可以进一步监控第一PCIe设备在虚拟机的客户端物理地址GPA地址范围是否设置为与所述第一PCIe设备在所述宿主机的HPA地址范围一致,以及第二PCIe设备在虚拟机的GPA地址范围是否设置为与第二PCIe设备在宿主机的HPA地址范围一致。当第一PCIe设备在虚拟机的客户端物理地址GPA地址范围设置为与所述第一PCIe设备在所述宿主机的HPA地址范围不一致,或第二PCIe设备在虚拟机的GPA地址范围设置为与第二PCIe设备在宿主机的HPA地址范围不一致时,虚拟机配置装置111对PCIe交换机进行设置,使得PCIe交换机可将第一PCIe设备发送的TLP通过PCIe交换机上送至地址转换单元,由地址转换单元进行GPA到HPA的地址转换。从而保证GPA地址被意外修改为与HPA地址不一致时,仍可通过地址转换单元进行地址转换,实现容错功能。
具体可结合图13进行参考,图13是根据本发明实施例的宿主机1的另一装置结构示意图,其与图12相比,进一步绘示出地址转换单元1031,并且还介绍了TLP的另一种传输路径,其中,地址转换单元1031设置在根复合体103中,在另外一些示例中,地址转换单元1031可与根复合体103连接,本发明实施例对此不作限定。
地址转换单元1031通过硬件实现,举例而言,地址转换单元1031可为输入输出内存管理单元(IOMMU,I/O Memory Management Unit),IOMMU是AMD公司首先提出的可实现硬件辅助虚拟化技术(Intel Vt-d,Virtualization Technology for Directed IO)的DMARemapping硬件结构,IOMMU可用于GPA-HPA的地址翻译。
在本实施例中,宿主机1设置有地址转换单元1031,当虚拟机配置装置1111检测到在GPU 1051在虚拟机113的客户端物理地址GPA地址范围与GPU 1051在宿主机1的HPA地址范围不一致,或GPU 1052在虚拟机113的GPA地址范围设置为与GPU 1052在宿主机1的HPA地址范围不一致时,例如图9所示的BAR0’、BAR1’、BAR2’、BAR0”、BAR1”、及BAR2”与对应的HPA没有对齐,则将下游端口1042和1043配置为重定向上送,即PCIe协议规定的RedirectUpusream,即将接收到的TLP均上送至上游端口1041。
根据PCIe协议,当一个下游端口对应的Control Bit E寄存器和Control Bit R寄存器均写入1,且Egress Control Vector寄存器写入1时,该下游端口被配置为重定向上送。
因此,在本发明实施例中,虚拟机配置装置1111在PCIe交换机104中下游端口1042对应的Control Bit E寄存器和Control Bit R寄存器中分别写入1,在PCIe交换机104中下游端口1042对应的Egress Control Vector寄存器写入1,从而使得下游端口1042被配置为重定向上送。
类似地,虚拟机配置装置1111在PCIe交换机104中下游端口1042对应的ControlBit E寄存器和Control Bit R寄存器中分别写入1,在PCIe交换机104中下游端口1042对应的Egress Control Vector寄存器写入0,从而使得下游端口1042被配置为重定向上送。
以下请参见图14,图14是根据本发明实施例的PCIe设备通信方法的另一流程图,如图14所示,该方法包括以下步骤:
步骤S31:虚拟机113向GPU 1051发送请求。
步骤S32:GPU 1051根据请求构造TLP写报文并发送TLP写报文至PCIe交换机104。
步骤S33:PCIe交换机104接收TLP写报文,并根据TLP写报文的目的地址将TLP发送至根复合体103。
举例而言,PCIe交换机104通过下游端口1042接收TLP TLP的流向如图13的箭头1所示),由于下游端口1042设置为重定向上送,因此,PCIe交换机104接收TLP写报文之后,直接将TLP写报文发送至上游端口1041(对应于图13的箭头2),上游端口1041将TLP写报文发送至根复合体的根端口1032(对应于图13的箭头3),根端口1032发送TLP写报文至地址转换单元1031(对应于图13的箭头4)。
步骤S34:地址转换单元1031将TLP写报文的目的地址中的GPA地址转换为对应的HPA地址,并将TLP写报文的源地址中的GPA地址转换为对应的HPA地址,并通过根端口1032发送TLP’写报文(对应于图13的箭头5)。其中TLP’报文是将TLP的目的地址或源地址替换为HPA地址后获得的。
步骤S35:PCIe交换机104接收TLP’写报文(对应于图13的箭头6),并根据TLP’写报文的目的地址将TLP’写报文发送至下游端口1043(对应于图13的箭头7),下游端口1043将TLP’写报文发送至GPU 1052。
因此,当需进行端到端传输的GPU在虚拟机分配的GPA不等于在宿主机分配的HPA时,至少需如图12所示进行8次报文转发,与图11所示的3次报文转发相比,数据传输速度明显偏低,且涉及到GPA到HPA的地址转换,会进一步拉低数据传输速度。本发明实施例对需进行端到端传输的GPU在虚拟机分配的GPA进行设置,使其等于在宿主机分配的HPA,并对应修改PCIe交换机的下游端口为端到端传输,从而禁止地址转换单元参与GPA到HPA的地址转换,在一般情况下最快只需3次报文转发即可完成端到端传输。并且,通过监控需进行端到端传输的GPU在虚拟机分配的GPA,在其被第三方修改为不等于HPA时,对应修改PCIe交换机的下游端口为重定向上送,从而使能地址转换单元参与GPA到HPA的地址转换,从而确保数据传输不会出现异常。
请参见图15,图15是根据本发明实施例的虚拟机配置装置1111的装置结构示意图,其中,虚拟机配置装置1111用于为虚拟机配置PCIe设备,如图15所示,配置装置1111具体包括:
信息获取模块301,用于获取虚拟机的宿主机的第一PCIe设备的信息和第二PCIe设备的信息,其中,第一PCIe设备的信息包括第一PCIe设备的主机物理地址,第二PCIe设备的信息包括第二PCIe设备的主机物理地址;
设备分配模块302,用于将第一PCIe设备和第二PCIe设备分配给虚拟机;
地址设置模块303,用于分别为第一PCIe设备和第二PCIe设备配置客户端物理地址,其中,第一PCIe设备的客户端物理地址与第一PCIe设备的主机物理地址一致,第二PCIe设备的客户端物理地址与第二PCIe设备的主机物理地址一致。
可选地,信息获取模块301还用于:确定第一PCIe设备与第二PCIe设备连接至一致的PCIe交换机。
可选地,第一PCIe设备与PCIe交换机的第一下游端口连接,第二PCIe设备与PCIe交换机的第二下游端口连接,地址设置模块303还用于:将第一下游端口和第二下游端口设置为允许PCIe终端到PCIe终端传输。
可选地,第一下游端口允许通过的传输层报文的目的地址范围包括第二PCIe设备的主机物理地址;第二下游端口允许通过的传输层报文的目的地址范围包括第一PCIe设备的主机物理地址。
可选地,地址设置模块303用于:将第一PCIe设备的客户端物理地址的起始地址设置为与第一PCIe设备的主机物理地址的起始地址一致,将第一PCIe设备的客户端物理地址的大小设置为与第一PCIe设备的主机物理地址的大小一致;将第二PCIe设备的客户端物理地址的起始地址设置为与第二PCIe设备的主机物理地址的起始地址一致,将第二PCIe设备的客户端物理地址的大小设置为与第二PCIe设备的主机物理地址的大小一致。
可选地,第一PCIe设备的信息还包括第一PCIe设备的设备标识和设备描述信息,第二PCIe设备的信息包括第二PCIe设备的设备标识和设备描述信息,配置装置111还包括:
发送模块306,用于发送第一PCIe设备的设备标识和设备描述信息、以及第二PCIe设备的设备标识和设备描述信息至云管理平台;
接收模块304,用于接收云管理平台发送的虚拟机创建命令,其中,虚拟创建命令携带有第一PCIe设备的设备标识和第二PCIe设备的设备标识;
虚拟机创建模块305,用于根据虚拟机创建命令创建虚拟机。
可选地,设备分配模块302用于:根据虚拟机创建命令携带的第一PCIe设备的设备标识将第一PCIe设备分配至虚拟机,根据虚拟机创建命令携带的第二PCIe设备的设备标识将第二PCIe设备分配至虚拟机。
请参见图16,图16是根据本发明实施例的主机的另一装置结构示意图,图16中,主机可为物理服务器,物理服务器可以包括处理单元201和通信接口202,处理单元201和通信接口202通过总线204连接,总线204可为PCIe总线,处理单元201用于执行物理服务器上运行的操作系统以及各种软件程序所定义的功能,例如,上述图3中所示出的软件层上各种软件组件的功能,具体地,例如,处理单元用于实现虚拟机的功能,或者用于实现虚拟机配置装置的功能,或者用于实现操作系统的功能。通信接口202用于与其他计算节点进行通信交互,其他设备可以是其它物理服务器,具体地,通信接口202可以是网络适配卡。可选地,该物理服务器还可以包括输入/输出接口203,输入/输出接口203连接有输入/输出设备,用于接收输入的信息,输出操作结果。输入/输出接口203可以为鼠标、键盘、显示器、或者光驱等。可选地,该物理服务器还可以包括辅助存储器204,一般也称为外存,辅助存储器204的存储介质可以是磁性介质(例如,软盘、硬盘、磁带)、光介质(例如光盘)、或者半导体介质(例如固态硬盘)等。处理单元201可以有多种具体实现形式,例如处理单元201可以包括处理器2011和内存2012,其中,内存2012例如为图3所示的内存102,处理器2011即图3所示的CPU101,处理器2011根据内存2012中存储的程序单元执行相关的操作,处理器2011可以为中央处理器(CPU),处理器2011可以是单核处理器或多核处理器。处理单元201也可以单独采用内置处理逻辑的逻辑器件来实现,例如现场可编程门阵列(英文全称:FieldProgrammable Gate Array,缩写:FPGA)或数字信号处理器(英文:digital signalprocessor,DSP)等。
值得注意的是,本发明实施例中,涉及的虚拟机也可以用容器实现,本发明实施例对此不作限定。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本申请实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线)或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、存储盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如固态存储盘Solid State Disk(SSD))等。
所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另外,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口、装置或单元的间接耦合或通信连接,也可以是电的,机械的或其它的形式连接。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到各种等效的修改或替换,这些修改或替换都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。

Claims (30)

1.一种虚拟机的数据的通信方法,其特征在于,所述虚拟机所在的宿主机上的第一PCIe设备和第二PCIe设备被配置为所述虚拟机的直通设备,所述第一PCIe设备和所述第二PCIe设备用于处理所述虚拟机的数据,所述虚拟机指示所述第一PCIe设备向所述第二PCIe设备传输数据,所述第一PCIe设备与所述第二PCIe设备进行数据通信的方法包括:
所述第一PCIe设备所连接的交换机接收所述第一PCIe设备发送的传输层报文,所述传输层报文包含待传输数据的源地址和待传输数据的目的地址,所述源地址为所述第一PCIe设备的地址,所述目的地址为所述第二PCIe设备的地址;
所述交换机将所述传输层报文与预置的转发规则进行匹配,在所述传输层报文匹配所述转发规则的情况下,将所述传输层报文转发至所述第二PCIe设备,其中所述交换机为所述宿主机内的PCIe交换机。
2.根据权利要求1所述的方法,其特征在于,所述预置的转发规则包括:第一规则和第二规则,所述第一规则包括所述交换机的第一下游端口与第二下游端口配置为端到端的通信模式,所述第二规则包括所述传输层报文的目的地址属于所述第二下游端口所允许通过的地址范围,所述第一下游端口为所述交换机与所述第一PCIe设备相连接的下游端口,所述第二下游端口为所述交换机与所述第二PCIe设备相连接的下游端口,所述端到端的通信模式为PCIe终端到PCIe终端通信,所述交换机将所述传输层报文与预置的转发规则进行匹配,具体包括:
所述交换机根据所述第一规则将所述传输层报文转发至所述第二下游端口;
所述交换机将所述传输层报文的目的地址与所述第二规则进行匹配。
3.根据权利要求2所述的方法,其特征在于,在所述第一PCIe设备所连接的交换机接收所述第一PCIe设备发送的传输层报文之前,所述方法还包括:
配置所述第一下游端口与所述第二下游端口为允许端到端的通信模式,以及将所述交换机的第二下游端口所允许通过的地址范围配置为所述第二PCIe设备的主机物理地址的范围。
4.根据权利要求3所述的方法,其特征在于,所述交换机接收到的所述传输层报文携带的目的地址为所述第二PCIe设备的客户端物理地址,所述第二PCIe设备的客户端物理地址与所述第二PCIe设备的主机物理地址一致,所述交换机将所述传输层报文的目的地址与所述第二规则进行匹配,具体包括:
所述交换机确认所述传输层报文的目的地址与所述第二规则匹配。
5.根据权利要求3所述的方法,其特征在于,所述第二PCIe设备的客户端物理地址的起始地址设置为与所述第二PCIe设备的主机物理地址的起始地址一致,所述第二PCIe设备的客户端物理地址的大小设置为与所述第二PCIe设备的主机物理地址的大小一致。
6.根据权利要求3所述的方法,其特征在于,所述交换机接收到的所述传输层报文携带的目的地址为所述第二PCIe设备的客户端物理地址,所述第二PCIe设备的客户端物理地址与所述第二PCIe设备的主机物理地址不一致,所述交换机将所述传输层报文的目的地址与所述第二规则进行匹配,具体包括:
所述交换机确认所述传输层报文的目的地址与所述第二规则不匹配;
所述交换机确认所述所述传输层报文的目的地址是所述第二PCIe设备的客户端物理地址;
所述交换机将所述传输层报文中的目的地址由所述第二PCIe设备的客户端物理地址转换为所述第二PCIe设备的主机物理地址;
所述交换机确认转换后的目的地址与所述第二规则匹配。
7.根据权利要求3所述的方法,其特征在于,所述交换机接收到的所述传输层报文携带的目的地址为所述第二PCIe设备的主机物理地址,所述交换机将所述传输层报文的目的地址与所述第二规则进行匹配,具体包括:
所述交换机确认所述传输层报文的目的地址与所述第二规则匹配。
8.一种虚拟机的数据的通信系统,其特征在于,包括虚拟机、第一PCIe设备、第二PCIe设备以及与所述第一PCIe设备连接的交换机,所述第一PCIe设备和所述第二PCIe设备被配置为所述虚拟机的直通设备,所述第一PCIe设备和所述第二PCIe设备用于处理所述虚拟机的数据,所述虚拟机指示所述第一PCIe设备向所述第二PCIe设备传输数据,其中:
所述交换机,用于接收所述第一PCIe设备发送的传输层报文,所述传输层报文包含待传输数据的源地址和待传输数据的目的地址,所述源地址为所述第一PCIe设备的地址,所述目的地址为所述第二PCIe设备的地址;
所述交换机,用于将所述传输层报文与预置的转发规则进行匹配,在所述传输层报文匹配所述转发规则的情况下,将所述传输层报文转发至所述第二PCIe设备,其中所述交换机为宿主机内的PCIe交换机。
9.根据权利要求8所述的通信系统,其特征在于,所述预置的转发规则包括:第一规则和第二规则,所述第一规则包括所述交换机的第一下游端口与第二下游端口配置为端到端的通信模式,所述第二规则包括所述传输层报文的目的地址属于所述第二下游端口所允许通过的地址范围,所述第一下游端口为所述交换机与所述第一PCIe设备相连接的下游端口,所述第二下游端口为所述交换机与所述第二PCIe设备相连接的下游端口,所述端到端的通信模式为PCIe终端到PCIe终端通信,所述交换机具体用于:
根据所述第一规则将所述传输层报文转发至所述第二下游端口;
将所述传输层报文的目的地址与所述第二规则进行匹配。
10.根据权利要求9所述的通信系统,其特征在于,还包括虚拟机配置装置,所述虚拟机配置装置用于:
配置所述第一下游端口与所述第二下游端口为允许端到端的通信模式,以及将所述交换机的第二下游端口所允许通过的地址范围配置为所述第二PCIe设备的主机物理地址的范围。
11.根据权利要求10所述的通信系统,其特征在于,所述通信系统还包括虚拟机配置装置,所述交换机接收到的所述传输层报文携带的目的地址为所述第二PCIe设备的客户端物理地址,所述虚拟机配置装置用于将所述第二PCIe设备的客户端物理地址与所述第二PCIe设备的主机物理地址一致,所述交换机用于确认所述传输层报文的目的地址与所述第二规则匹配。
12.根据权利要求11所述的通信系统,其特征在于,所述虚拟机配置装置具体用于将所述第二PCIe设备的客户端物理地址的起始地址设置为与所述第二PCIe设备的主机物理地址的起始地址一致,将所述第二PCIe设备的客户端物理地址的大小设置为与所述第二PCIe设备的主机物理地址的大小一致。
13.根据权利要求10所述的通信系统,其特征在于,所述交换机接收到的所述传输层报文携带的目的地址为所述第二PCIe设备的客户端物理地址,所述第二PCIe设备的客户端物理地址与所述第二PCIe设备的主机物理地址不一致,所述交换机具体用于:
确认所述传输层报文的目的地址与所述第二规则不匹配;
确认所述所述传输层报文的目的地址是所述第二PCIe设备的客户端物理地址;
所述交换机将所述传输层报文中的目的地址由所述第二PCIe设备的客户端物理地址转换为所述第二PCIe设备的主机物理地址;
所述交换机确认转换后的目的地址与所述第二规则匹配。
14.根据权利要求10所述的通信系统,其特征在于,所述交换机接收到的所述传输层报文携带的目的地址为所述第二PCIe设备的主机物理地址,所述交换机用于确认所述传输层报文的目的地址与所述第二规则匹配。
15.一种虚拟机的配置方法,其特征在于,用于为虚拟机配置PCIe设备,包括:
获取所述虚拟机的宿主机上的第一PCIe设备的信息和第二PCIe设备的信息,其中,所述第一PCIe设备的信息包括所述第一PCIe设备的主机物理地址,所述第二PCIe设备的信息包括所述第二PCIe设备的主机物理地址;
将所述第一PCIe设备和所述第二PCIe设备分配给所述虚拟机;
分别为所述第一PCIe设备和所述第二PCIe设备配置客户端物理地址,其中,所述第一PCIe设备的客户端物理地址与所述第一PCIe设备的主机物理地址一致,所述第二PCIe设备的客户端物理地址与所述第二PCIe设备的主机物理地址一致,其中交换机为所述宿主机内的PCIe交换机。
16.根据权利要求15所述的方法,其特征在于,在分别为所述第一PCIe设备和所述第二PCIe设备配置客户端物理地址之前,所述方法还包括:
确定所述第一PCIe设备与所述第二PCIe设备连接至相同的PCIe交换机。
17.根据权利要求16所述的方法,其特征在于,所述第一PCIe设备与所述PCIe交换机的第一下游交换端口连接,所述第二PCIe设备与所述PCIe交换机的第二下游交换端口连接,所述方法还包括:
将所述第一下游交换端口和所述第二下游交换端口设置为允许PCIe终端到PCIe终端传输。
18.根据权利要求17所述的方法,其特征在于,所述方法还包括:
将所述第二下游交换端口允许通过的传输层报文的目的地址范围设置为包括所述第二PCIe设备的主机物理地址。
19.根据权利要求15所述的方法,其特征在于,所述将所述第一PCIe设备的客户端物理地址设置为与所述第一PCIe设备的主机物理地址一致,将所述第二PCIe设备的客户端物理地址设置为与所述第二PCIe设备的主机物理地址一致,包括:
将所述第一PCIe设备的客户端物理地址的起始地址设置为与所述第一PCIe设备的主机物理地址的起始地址一致,将所述第一PCIe设备的客户端物理地址的大小设置为与所述第一PCIe设备的主机物理地址的大小一致;
将所述第二PCIe设备的客户端物理地址的起始地址设置为与所述第二PCIe设备的主机物理地址的起始地址一致,将所述第二PCIe设备的客户端物理地址的大小设置为与所述第二PCIe设备的主机物理地址的大小一致。
20.根据权利要求15至19任一项所述的方法,其特征在于,所述第一PCIe设备的信息还包括所述第一PCIe设备的设备标识和设备描述信息,所述第二PCIe设备的信息包括所述第二PCIe设备的设备标识和设备描述信息,所述方法还包括:
发送所述第一PCIe设备的设备标识和设备描述信息、以及所述第二PCIe设备的设备标识和设备描述信息至云管理平台;
接收所述云管理平台发送的虚拟机创建命令,其中,所述虚拟机创建命令携带有所述第一PCIe设备的设备标识和所述第二PCIe设备的设备标识;
根据所述虚拟机创建命令创建所述虚拟机。
21.根据权利要求20所述的方法,其特征在于,所述将所述第一PCIe设备和所述第二PCIe设备分配给所述虚拟机,包括:
根据所述虚拟机创建命令携带的所述第一PCIe设备的设备标识将所述第一PCIe设备分配至所述虚拟机,根据所述虚拟机创建命令携带的所述第二PCIe设备的设备标识将所述第二PCIe设备分配至所述虚拟机。
22.一种虚拟机配置装置,其特征在于,用于为虚拟机配置PCIe设备,包括:
信息获取模块,用于获取所述虚拟机的宿主机的第一PCIe设备的信息和第二PCIe设备的信息,其中,所述第一PCIe设备的信息包括所述第一PCIe设备的主机物理地址,所述第二PCIe设备的信息包括所述第二PCIe设备的主机物理地址;
设备分配模块,用于将所述第一PCIe设备和所述第二PCIe设备分配给所述虚拟机;
地址设置模块,用于分别为所述第一PCIe设备和所述第二PCIe设备配置客户端物理地址,其中,所述第一PCIe设备的客户端物理地址与所述第一PCIe设备的主机物理地址一致,所述第二PCIe设备的客户端物理地址与所述第二PCIe设备的主机物理地址一致,其中交换机为所述宿主机内的PCIe交换机。
23.根据权利要求22所述的虚拟机配置装置,其特征在于,所述信息获取模块还用于:
确定所述第一PCIe设备与所述第二PCIe设备连接至相同的PCIe交换机。
24.根据权利要求23所述的虚拟机配置装置,其特征在于,所述第一PCIe设备与所述PCIe交换机的第一下游交换端口连接,所述第二PCIe设备与所述PCIe交换机的第二下游交换端口连接,所述地址设置模块还用于:
将所述第一下游交换端口和所述第二下游交换端口设置为允许PCIe终端到PCIe终端传输。
25.根据权利要求24所述的虚拟机配置装置,其特征在于,所述地址设置模块还用于:
将所述第二下游交换端口允许通过的传输层报文的目的地址范围设置为包括所述第二PCIe设备的主机物理地址。
26.根据权利要求22所述的虚拟机配置装置,其特征在于,所述地址设置模块用于:
将所述第一PCIe设备的客户端物理地址的起始地址设置为与所述第一PCIe设备的主机物理地址的起始地址一致,将所述第一PCIe设备的客户端物理地址的大小设置为与所述第一PCIe设备的主机物理地址的大小一致;
将所述第二PCIe设备的客户端物理地址的起始地址设置为与所述第二PCIe设备的主机物理地址的起始地址一致,将所述第二PCIe设备的客户端物理地址的大小设置为与所述第二PCIe设备的主机物理地址的大小一致。
27.根据权利要求22至26任一项所述的虚拟机配置装置,其特征在于,所述第一PCIe设备的信息还包括所述第一PCIe设备的设备标识和设备描述信息,所述第二PCIe设备的信息包括所述第二PCIe设备的设备标识和设备描述信息,所述配置装置还包括:
发送模块,用于发送所述第一PCIe设备的设备标识和设备描述信息、以及所述第二PCIe设备的设备标识和设备描述信息至云管理平台;
接收模块,用于接收所述云管理平台发送的虚拟机创建命令,其中,所述虚拟机创建命令携带有所述第一PCIe设备的设备标识和所述第二PCIe设备的设备标识;
虚拟机创建模块,用于根据所述虚拟机创建命令创建所述虚拟机。
28.根据权利要求27所述的虚拟机配置装置,其特征在于,所述设备分配模块用于:
根据所述虚拟机创建命令携带的所述第一PCIe设备的设备标识将所述第一PCIe设备分配至所述虚拟机,根据所述虚拟机创建命令携带的所述第二PCIe设备的设备标识将所述第二PCIe设备分配至所述虚拟机。
29.一种主机,其特征在于,包括存储器和处理器,所述存储器存储有程序指令,所述处理器运行所述程序指令,以实现权利要求15至21任一项所述的方法。
30.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有指令,当所述指令被执行时,实现权利要求15至21任一项所述的方法。
CN201811162587.0A 2018-06-22 2018-09-30 虚拟机数据通信方法和系统以及虚拟机配置方法和装置 Active CN109445905B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
CN201810651179 2018-06-22
CN2018106511795 2018-06-22

Publications (2)

Publication Number Publication Date
CN109445905A CN109445905A (zh) 2019-03-08
CN109445905B true CN109445905B (zh) 2022-04-22

Family

ID=65544690

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201811162587.0A Active CN109445905B (zh) 2018-06-22 2018-09-30 虚拟机数据通信方法和系统以及虚拟机配置方法和装置

Country Status (1)

Country Link
CN (1) CN109445905B (zh)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109933411B (zh) * 2019-03-31 2021-03-30 山东超越数控电子股份有限公司 一种在线修改虚拟机内部配置系统及方法
EP4099637A4 (en) * 2020-02-27 2023-04-12 Huawei Technologies Co., Ltd. PCIE BASED COMMUNICATION METHOD AND DEVICE
CN113691465B (zh) * 2020-05-19 2023-05-26 阿里巴巴集团控股有限公司 一种数据的传输方法、智能网卡、计算设备及存储介质
CN111988394B (zh) * 2020-08-18 2022-11-01 北京金山云网络技术有限公司 一种虚拟化环境中优化p2p数据传输的方法、装置及设备
CN112363800B (zh) * 2020-11-10 2023-03-07 海光信息技术股份有限公司 一种网卡的内存访问方法、安全处理器、网卡及电子设备
CN114817232A (zh) * 2021-01-21 2022-07-29 华为技术有限公司 访问数据的方法及装置
CN112835837B (zh) * 2021-02-04 2023-06-23 北京百度网讯科技有限公司 建立数据连接的方法、相关装置及计算机程序产品
CN112817899B (zh) * 2021-04-19 2021-07-09 浙江华创视讯科技有限公司 基于pcie的数据传输方法、装置、存储介质和电子设备
CN114238185A (zh) * 2021-12-20 2022-03-25 海光信息技术股份有限公司 直接存储访问及命令数据传输方法、装置及相关设备
CN114866534B (zh) * 2022-04-29 2024-03-15 浪潮电子信息产业股份有限公司 一种图像处理方法、装置、设备及介质

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101620551A (zh) * 2009-05-07 2010-01-06 曙光信息产业(北京)有限公司 一种面向多虚拟机应用的网卡中断控制方法
CN103092676A (zh) * 2013-01-04 2013-05-08 华为技术有限公司 虚拟机集群的模拟输入输出方法、装置及系统
EP2835953A1 (en) * 2012-08-29 2015-02-11 Huawei Technologies Co., Ltd System and method for live migration of virtual machine

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101620551A (zh) * 2009-05-07 2010-01-06 曙光信息产业(北京)有限公司 一种面向多虚拟机应用的网卡中断控制方法
EP2835953A1 (en) * 2012-08-29 2015-02-11 Huawei Technologies Co., Ltd System and method for live migration of virtual machine
CN103092676A (zh) * 2013-01-04 2013-05-08 华为技术有限公司 虚拟机集群的模拟输入输出方法、装置及系统

Also Published As

Publication number Publication date
CN109445905A (zh) 2019-03-08

Similar Documents

Publication Publication Date Title
CN109445905B (zh) 虚拟机数据通信方法和系统以及虚拟机配置方法和装置
US20200278880A1 (en) Method, apparatus, and system for accessing storage device
US10732879B2 (en) Technologies for processing network packets by an intelligent network interface controller
US9645956B2 (en) Delivering interrupts through non-transparent bridges in a PCI-express network
US10091295B1 (en) Converged infrastructure implemented with distributed compute elements
US9329783B2 (en) Data processing system and data processing method
US7970852B2 (en) Method for moving operating systems between computer electronic complexes without loss of service
US9678912B2 (en) Pass-through converged network adaptor (CNA) using existing ethernet switching device
US10248607B1 (en) Dynamic interface port assignment for communication transaction
US20140195634A1 (en) System and Method for Multiservice Input/Output
CN112130748B (zh) 一种数据访问方法、网卡及服务器
CN108701004A (zh) 一种数据处理的系统、方法及对应装置
WO2023098031A1 (zh) 数据访问方法及计算设备
US11829309B2 (en) Data forwarding chip and server
US9336032B2 (en) Zoning data to a virtual machine
WO2019095154A1 (zh) 一种调度加速资源的方法、装置及加速系统
CN114996185A (zh) 跨地址空间桥接
WO2016101856A1 (zh) 数据访问方法及装置
US8918559B2 (en) Partitioning of a variable length scatter gather list
EP3959619B1 (en) Multi-processor/endpoint data splitting system
JP7235295B2 (ja) 仮想マシン管理装置、仮想マシン管理方法、及びプログラム
WO2023051248A1 (zh) 一种数据访问系统、方法及相关设备
CN117971135B (zh) 存储设备的访问方法、装置、存储介质和电子设备
US11690108B2 (en) High speed wireless data communication to solid state drive
US20180181440A1 (en) Resource allocation system, apparatus allocation controller and apparatus recognizing method

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
TA01 Transfer of patent application right
TA01 Transfer of patent application right

Effective date of registration: 20220225

Address after: 550025 Huawei cloud data center, jiaoxinggong Road, Qianzhong Avenue, Gui'an New District, Guiyang City, Guizhou Province

Applicant after: Huawei Cloud Computing Technologies Co.,Ltd.

Address before: 518129 Bantian HUAWEI headquarters office building, Longgang District, Guangdong, Shenzhen

Applicant before: HUAWEI TECHNOLOGIES Co.,Ltd.

GR01 Patent grant
GR01 Patent grant