CN114024962B - 一种数据传输方法及装置 - Google Patents
一种数据传输方法及装置 Download PDFInfo
- Publication number
- CN114024962B CN114024962B CN202111140967.6A CN202111140967A CN114024962B CN 114024962 B CN114024962 B CN 114024962B CN 202111140967 A CN202111140967 A CN 202111140967A CN 114024962 B CN114024962 B CN 114024962B
- Authority
- CN
- China
- Prior art keywords
- data
- data blocks
- resource pool
- resources
- data block
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/06—Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/485—Task life-cycle, e.g. stopping, restarting, resuming execution
- G06F9/4856—Task life-cycle, e.g. stopping, restarting, resuming execution resumption being on a different machine, e.g. task migration, virtual machine migration
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5016—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
- G06F9/5038—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the execution order of a plurality of tasks, e.g. taking priority or time dependency constraints into consideration
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5061—Partitioning or combining of resources
- G06F9/5077—Logical partitioning of resources; Management or configuration of virtualized resources
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L12/00—Data switching networks
- H04L12/64—Hybrid switching systems
- H04L12/6418—Hybrid transport
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L65/00—Network arrangements, protocols or services for supporting real-time applications in data packet communication
- H04L65/40—Support for services or applications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45583—Memory management, e.g. access or allocation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/54—Indexing scheme relating to G06F9/54
- G06F2209/548—Queue
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/25—Using a specific main memory architecture
- G06F2212/254—Distributed memory
- G06F2212/2542—Non-uniform memory access [NUMA] architecture
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Multimedia (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
- Mobile Radio Communication Systems (AREA)
- Computer And Data Communications (AREA)
Abstract
本发明实施例公开了一种数据传输方法及装置,所述方法包括:接收其他物理机发送来的一业务的多个第一数据块;将接收到的多个第一数据块分配到同一数据队列中;在调谐器生成对业务的调度信息的情况下,使用调度信息中指定的NUMA节点的资源池中的资源,将多个第一数据块发送给虚拟机;在调谐器未生成调度信息的情况下,根据数据队列与NUMA节点的资源池的对应关系,确定多个第一数据块所在数据队列对应的资源池,并使用多个第一数据块所在数据队列对应的资源池中的资源将多个第一数据块发送给虚拟机。采用本发明实施例,可确保一业务的多个数据块所使用的资源位于同一个NUMA的资源池中,可改善跨NUMA节点的操作,提高数据传输性能。
Description
技术领域
本发明涉及通信技术领域,尤其涉及一种数据传输方法及装置。
背景技术
网络功能虚拟化(Network Functions Virtualisation,NFV)利用虚拟化技术,为网络应用分配所需的虚拟资源(虚拟计算、存储、网络)。NFV的最终目标是通过基于行业标准的x86服务器、存储和交换设备,取代通信网络中私有专用的网元设备,则在NFV场景下防火墙、流量计费、路由服务等网元设备所运行的网络功能会迁移到虚拟机(VirtualMachine,VM)中运行,从而节省成本,提高资源的利用率和灵活控制的能力。
由于云计算规模的不断增长,虚拟机规模的增加,使得对现有网络接口卡的性能提出更高的要求。目前主流的网络接口卡驱动的修改方案是英特尔公司(intel)提供的DPDK技术,DPDK是intel公司提供的用于提升数据报文处理速率的应用程序开发包,DPDK技术采用的是预先分配资源池的方案,即预先申请内存作为资源池,各个资源池的存储容量相同,当收到或者发送数据时,首先确定资源池,通过确定的资源池承载该数据。传统的DPDK技术中,如果由操作***分配资源池,则会分配各个资源池所属的非一致性内存访问(Non Uniform Memory Access Architecture,NUMA)节点,当传输的数据有多条数据流时,操作***为上述数据分配多个NUMA节点的资源池中的资源,会出现跨NUMA节点的操作,导致数据传输性能降低。
发明内容
本申请提供一种数据传输方法及装置,可确保一业务的多个数据块所使用的资源位于同一个NUMA节点的资源池中,可改善跨NUMA节点的操作,提高数据传输性能。
第一方面提供了一种数据传输方法,该方法可以应用于物理机上,物理机可以运行有虚拟机和调谐器,物理机可以包括网络接口卡和NUMA节点,其中物理机可以通过网络接口卡接收其他物理机发送来的一业务的多个第一数据块,并通过网络接口卡将接收到的多个第一数据块分配到同一数据队列中,其中数据队列与网络接口卡相对应,在调谐器生成对业务的调度信息的情况下,物理机可以使用调度信息中指定的NUMA节点的资源池中的资源,将多个第一数据块发送给虚拟机,其中调度信息用于指示从指定的NUMA节点的资源池中调度资源处理多个第一数据块;在调谐器未生成调度信息的情况下,物理机可以根据数据队列与NUMA节点的资源池的对应关系,确定多个第一数据块所在数据队列对应的资源池,并使用多个第一数据块所在数据队列对应的资源池中的资源将多个第一数据块发送给虚拟机。
在该技术方案中,一个业务可以对应至少一个数据流,至少一个数据流中的任一数据流可以包括多个数据块,物理机可以通过网络接口卡接收其他物理机发送来的一业务的多个数据块,其中一业务的多个数据块可以为当前需要发送给虚拟机的针对该业务的所有数据块,例如该业务对应一个数据流,该数据流包括3个数据块,则物理机可以通过网络接口卡接收其他物理机发送来的该业务的3个数据块,又如该业务对应3个数据流,即第一数据流、第二数据流以及第三数据流,其中第一数据流包括2个数据块,第二数据流包括3个数据块,第三数据流包括4个数据块,则物理机可以通过网络接口卡接收其他物理机发送来的该业务的9个数据块。进一步的,物理机可以通过网络接口卡将接收到的多个第一数据块分配到同一数据队列中,例如该网络接口卡对应三个数据队列,其中上述三个数据队列中的第一数据队列当前的数据量小于预设数据量阈值,则物理机可以通过该网络接口卡将接收到的多个第一数据块分配到第一数据队列中。进一步的,物理机可以检测调谐器是否生成对该业务的调度信息,当调谐器生成对该业务的调度信息时,物理机可以使用调度信息中指定的NUMA节点的资源池中的资源,将多个第一数据块发送给虚拟机,可确保该业务的多个第一数据块所使用的资源位于同一个NUMA节点的资源池中,可改善跨NUMA节点的操作,提高数据传输性能。另外,当检测到调谐器未生成调度信息时,物理机可以根据数据队列与NUMA节点的资源池的对应关系,确定多个第一数据块所在数据队列对应的资源池,并使用第一数据块所在数据队列对应的资源池中的资源将多个第一数据块发送给虚拟机,例如,物理机可以建立数据队列与NUMA节点的资源池的对应关系,示例性的,第一数据队列对应第一NUMA节点的资源池,第二数据队列对应第二NUMA节点的资源池,第三数据队列对应第三NUMA节点的资源池,物理机通过网络接口卡将上述业务的多个第一数据块分配到第一数据队列中,当调谐器未生成调度信息时,物理机可以根据数据队列与NUMA节点的资源池的对应关系,确定第一数据队列对应的资源池为第一NUMA节点的资源池,并使用第一NUMA节点的资源池中的资源将多个第一数块发送给虚拟机,可确保该业务的多个第一数据块所使用的资源位于同一个NUMA节点的资源池中,可改善跨NUMA节点的操作,提高数据传输性能。
其中,物理机可以包括至少一个网络接口卡,至少一个网络接口卡中的任一网络接口卡可以对应至少一个数据队列,数据队列可以用于缓存数据,例如物理机可以包括一个网络接口卡,该网络接口卡可以对应三个数据队列,又如物理机可以包括三个网络接口卡,各个网络接口卡可以对应一个数据队列。
其中,网络接口卡(Network Interface Card,NIC)又称网络适配器,是局域网中连接计算机和传输介质的接口,不仅能实现与局域网传输介质之间的物理连接和电信号匹配,还涉及数据缓存或者数据的编码与解码等功能。示例性的,网络接口卡可以包括物理网卡或者虚拟网卡等。
其中,物理机可以包括至少一个NUMA节点,NUMA节点可以为硬件装置。需要说明的是,物理机可以包括NUMA服务器,NUMA服务器可以由多个NUMA节点组成,各个NUMA节点都对应配置有资源池,资源池可以包括内存资源。
其中,NUMA节点可提供该NUMA节点的资源池中的内存(即本地内存)给CPU,其中CPU访问本地内存的速度高于该CPU访问远地内存(即其他NUMA节点的资源池中的内存或者内部存储器中的内存)的速度,可提升内存访问速度,提高数据传输性能。例如,物理机可以根据关于NUMA服务器的参数信息确定NUMA节点的数量,获取预置的资源池的数据容量,进而将确定得到的NUMA节点的数量与预置的资源池的数据容量相乘,得到需要向内部存储器申请的内存的资源量,并向内部存储器申请满足该资源量的内存,将申请得到的内存分配给各个NUMA节点,示例性的,物理机当前存在三个NUMA节点,且预置的各个NUMA节点的资源池的数据容量为30MB,则物理机可以向内部存储器申请资源量为90MB的内存,并将每资源量为30MB的内存分配给各个NUMA节点。
在一个可能的设计中,物理机使用调度信息中指定的NUMA节点的资源池中的资源,将多个第一数据块发送给虚拟机之后,还可以接收虚拟机响应多个第一数据块所反馈的该业务的多个第二数据块,并使用调度信息中指定的NUMA节点的资源池中的资源,将多个第二数据块发送给网络接口卡,其中处理多个第二数据块所调度的资源所属的资源池与处理多个第一数据块所调度的资源所属的资源池相同。
在该技术方案中,物理机通过网络接口卡将多个第一数据块分配到同一数据队列中之后,用户可通过调谐器(tuner)对该业务指定NUMA节点,则调谐器可以生成对该业务的调度信息,调度信息用于指示从指定的NUMA节点的资源池中调度资源处理上述多个第一数据块,物理机检测到调谐器生成该调度信息时,可以使用调度信息中指定的NUMA节点的资源池中的资源,将多个第一数据块发送给虚拟机。进一步的,物理机接收到虚拟机响应多个第一数据块所反馈的该业务的多个第二数据块之后,可以使用调度信息中指定的NUMA节点的资源池中的资源,将多个第二数据块发送给网络接口卡。本发明实施例可确保传输多个第一数据块所使用的资源和传输多个第二数据块所使用的资源属于同一NUMA节点的资源池,可改善跨NUMA的操作,提升数据传输性能。
在一个可能的设计中,物理机使用第一数据块所在数据队列对应的资源池中的资源将多个第一数据块发送给虚拟机之后,还可以接收虚拟机响应多个第一数据块所反馈的该业务的多个第二数据块,确定多个第二数据块对应的资源池,并使用多个第二数据块对应的资源池中的资源将多个第二数据块发送给网络接口卡,其中多个第二数据块对应的资源池与多个第一数据块对应的资源池相同。
在该技术方案中,上述物理机可以为接收端,其他物理机可以为发送端,则物理机接收到的其他物理机发送的该业务的多个第一数据块可以为发送数据,虚拟机响应多个第一数据块反馈的该业务的多个第二数据块可以为接收数据,上述发送数据和接收数据是针对同一业务的,为了确保该业务的多个数据块所使用的资源位于同一个NUMA节点的资源池中,物理机可以将多个第一数据块对应的资源池作为多个第二数据块对应的资源池,并使用多个第二数据块对应的资源池中的资源将多个第二数据块发送给网络接口卡,即传输多个第一数据块所使用的资源和传输多个第二数据块所使用的资源属于同一NUMA节点的资源池,可改善出现跨NUMA节点的操作,提升数据传输性能。
在一个可能的设计中,物理机根据数据队列与NUMA节点的资源池的对应关系,确定多个第一数据块所在数据队列对应的资源池之后,可以按照预设规则对多个第一数据块中的任一第一数据块的地址信息进行排序,使用经过排序的第一数据块的地址信息计算第一数据块的哈希值,建立第二映射关系,其中第二映射关系为该哈希值和第一数据块所在数据队列对应的资源池所属的NUMA节点之间的映射关系。进一步的,物理机可以使用第一数据块所在数据队列对应的资源池中的资源,将多个第一数据块以及第二映射关系发送给虚拟机。
其中,第一数据块的地址信息可以包括一个源地址和一个目的地址,多个第一数据块中的各个第一数据块的源地址相同,多个第一数据块中的各个第一数据块的目的地址相同。第一数据块的地址信息可以为介质访问控制(Media Access Control,MAC)地址或者网络之间互连的协议(Internet Protocol,IP)地址等,由于多个第一数据块是其他物理机发送给上述物理机的,则各个第一数据块的源地址相同,且各个第一数据块的源地址可以为其他物理机的MAC地址或者IP地址等;各个第一数据块的目的地址相同,且各个第一数据块的目的地址可以为该物理机的MAC地址或者IP地址等。
在该技术方案中,预设规则可以为将地址信息按照从大到小或者从小到大的顺序进行排序,例如物理机可以将任一第一数据块的源地址和目的地址按照从大到小(或者从小到大)的顺序进行排序,通过预设数据摘要算法对经过排序的地址信息进行分析处理,得到第一数据块的哈希值,物理机可以建立第二映射关系,即哈希值和第一数据块所在数据队列对应的资源池所属NUMA节点之间的映射关系,进而物理机可以使用第一数据块所在数据队列对应的资源池中的资源,将多个第一数据块以及第二映射关系发送给虚拟机。其中,预设数据摘要算法可以包括循环冗余校验(Cyclic Redundancy Check,CRC)算法、第5版本消息摘要算法(Message-Digest Algorithm 5,MD5)或者安全哈希算法(Secure HashAlgorithm,SHA)等。例如,任一第一数据块的源地址为192.115.26.3,该第一数据块的目的地址为185.114.49.22,物理机可以确定源地址中的第一位(即192)大于目的地址中的第一位(即185),则物理机可以确定源地址大于目的地址,进而将第一数据块的源地址排列在目的地址的前面,即经过排序的地址信息为1921152631851144922,物理机可以通过预设数据摘要算法对经过排序的地址信息进行分析处理,得到该第一数据块的哈希值,物理机可以建立该哈希值和第一数据块所在数据队列对应的资源池所属NUMA节点之间的映射关系。
在一个可能的设计中,物理机确定多个第二数据块对应的资源池,具体可以为:按照预设规则对多个第二数据块中的任一第二数据块的地址信息进行排序,使用经过排序的第二数据块的地址信息计算第二数据块的哈希值,第一数据的哈希值和第二数据的哈希值相同,根据第二映射关系,确定第二数据块的哈希值对应的NUMA节点,将第二数据块的哈希值对应的NUMA节点的资源池作为多个第二数据块对应的资源池。
其中,第二数据块的地址信息可以包括一个源地址和一个目的地址,多个第二数据块中的各个第二数据块的源地址和各个第一数据块的目的地址相同,多个第二数据块中的各个第二数据块的目的地址和各个第一数据块的源地址相同。第二数据块的地址信息可以为MAC地址或者IP地址等,由于多个第二数据块是上述物理机通过虚拟机发送给网络接口卡,并通过网络接口卡发送给其他物理机的,则各个第二数据块的源地址相同,且各个第二数据块的源地址可以为该物理机的MAC地址或者IP地址等,第二数据块的源地址和第一数据块的目的地址相同;各个第二数据块的目的地址相同,且各个第二数据块的目的地址可以为其他物理机的MAC地址或者IP地址等,第二数据块的目的地址和第一数据块的源地址相同。
在该技术方案中,物理机将第二数据块的地址信息按照从大到小(或者从小到大)的顺序进行排序,则经过排序的第二数据块的地址信息,与经过排序的第一数据块的地址信息相同,物理机根据预设数据摘要算法对经过排序的第二数据块的地址信息进行分析处理,得到第二数据块的哈希值,则第二数据块的哈希值和第一数据块的哈希值相同,物理机可以根据建立的哈希值和第一数据块所在数据队列对应的资源池所属NUMA节点之间的映射关系,确定第二数据块对应的资源池为第一数据块所在数据队列对应的资源池。本发明实施例可确保传输多个第一数据块所使用的资源和传输多个第二数据块所使用的资源属于同一NUMA节点的资源池,可改善跨NUMA的操作,提升数据传输性能。
在一个可能的设计中,物理机使用多个第一数据块所在数据队列对应的资源池中的资源将多个第一数据块发送给虚拟机之前,可以获取多个第一数据块所在数据队列对应的资源池的当前剩余空间,并确定传输多个第一数据块所需资源的资源量,当传输多个第一数据块所需资源的资源量小于确定得到的资源池的当前剩余空间时,触发物理机使用多个第一数据块所在数据队列对应的资源池中的资源将多个第一数据块发送给虚拟机。
在该技术方案中,物理机可以检测传输多个第一数据块所需资源的资源量是否小于多个第一数据块所在数据队列对应资源池的当前剩余空间,当传输多个第一数据块所需资源的资源量小于确定得到的资源池的当前剩余空间时,物理机可以使用多个第一数据块所在数据队列对应的资源池中的资源将多个第一数据块发送给虚拟机。例如,多个第一数据块所在数据队列对应资源池的当前剩余空间为10MB,传输多个第一数据块所需资源的资源量为5MB,则物理机确定多个第一数据块所在数据队列对应资源池中未被使用的资源的资源量可满足多个第一数据块的传输,进而物理机可以使用多个第一数据块所在数据队列对应的资源池中的资源将多个第一数据块发送给虚拟机。本发明实施例可确保多个第一数据块可完整传输至虚拟机,提高数据传输的可靠性。
在一个可能的设计中,物理机使用多个第一数据块所在数据队列对应的资源池中的资源将多个第一数据块发送给虚拟机之后,可以将多个第一数据块所在数据队列对应的资源池的当前剩余空间减去传输多个第一数据块所需资源的资源量,以对多个第一数据块所在数据队列对应的资源池的当前剩余空间进行更新。
在该技术方案中,物理机使用多个第一数据块所在数据队列对应的资源池中的资源将多个第一数据块发送给虚拟机的过程中,多个第一数据块所在数据队列对应的资源池中的资源被占用,物理机可以对多个第一数据块所在数据队列对应的资源池的当前剩余空间进行更新,当其他数据需要使用该资源池中的资源时,可以根据其他数据所需资源的资源量和经过更新的该资源池的当前剩余空间,判断是否使用该资源池中的资源传输其他数据,本发明实施例可实时对资源池的当前剩余空间进行更新,提高资源池的当前剩余空间的准确性。
在一个可能的设计中,物理机获取多个第一数据块所在数据队列对应的资源池的当前剩余空间之后,可以获取多个第一数据块所在数据队列对应的资源池的当前剩余空间与多个第一数据块所在数据队列对应的资源池的数据容量之间的比值,当该比值小于预设比例阈值时,更新多个第一数据块对应的资源池。进一步的,物理机使用多个第一数据块所在数据队列对应的资源池中的资源将多个第一数据块发送给虚拟机,具体可以为:使用更新后的多个第一数据块对应资源池中的资源将多个第一数据块发送给虚拟机。
在该技术方案中,物理机可以获取多个第一数据块所在数据队列对应的资源池的当前剩余空间与多个第一数据块所在数据队列对应的资源池的数据容量之间的比值,当该比值小于预设比例阈值时,物理机可以确定多个第一数据块所在数据队列对应的资源池的剩余空间较小,被使用的资源较多,物理机可以更新多个第一数据块对应的资源池,避免同时使用同一资源池中的资源传输多个业务的数据块,可提升资源利用率。
在一个可能的设计中,当接收到调度信息时,物理机确定多个第一数据块所在数据队列对应的资源池为多个第一数据块对应的资源池之后,可以检测NUMA服务器中除多个第一数据块所在数据队列对应的资源池所属NUMA节点以外的其他NUMA节点中资源池的资源当前是否被占用,当其他NUMA节点中资源池的资源当前未被占用时,物理机可以删除其他NUMA节点中的资源池,以释放其他NUMA节点中资源池的资源。
在该技术方案中,当其他NUMA节点中资源池的资源当前未被占用时,物理机可以删除其他NUMA节点中的资源池,避免预先申请的其他NUMA节点的资源池中的资源未被使用,同时内部存储器中的剩余资源不足,可提升资源利用率。
第二方面提供了一种数据传输装置,所述装置用于物理机,物理机上运行有虚拟机和调谐器,物理机可以包括网络接口卡和NUMA节点,所述装置可以包括数据块接收模块、数据块分配模块以及数据块发送模块,其中:
数据块接收模块,用于通过网络接口卡接收其他物理机发送来的一业务的多个第一数据块。
数据块分配模块,用于通过网络接口卡将接收到的多个第一数据块分配到同一数据队列中,数据队列与网络接口卡相对应。
数据块发送模块,用于在调谐器生成对业务的调度信息的情况下,使用调度信息中指定的NUMA节点的资源池中的资源,将多个第一数据块发送给虚拟机,调度信息用于指示从指定的NUMA节点的资源池中调度资源处理多个第一数据块。
数据块发送模块,还用于在调谐器未生成调度信息的情况下,根据数据队列与NUMA节点的资源池的对应关系,确定多个第一数据块所在数据队列对应的资源池,并使用多个第一数据块所在数据队列对应的资源池中的资源将多个第一数据块发送给虚拟机。
在该技术方案中,一个业务可以对应至少一个数据流,至少一个数据流中的任一数据流可以包括多个数据块,数据块接收模块可以通过网络接口卡接收其他物理机发送来的一业务的多个数据块,其中一业务的多个数据块可以为当前需要发送给虚拟机的针对该业务的所有数据块,例如该业务对应一个数据流,该数据流包括3个数据块,则数据块接收模块可以通过网络接口卡接收其他物理机发送来的该业务的3个数据块,又如该业务对应3个数据流,即第一数据流、第二数据流以及第三数据流,其中第一数据流包括2个数据块,第二数据流包括3个数据块,第三数据流包括4个数据块,则数据块接收模块可以通过网络接口卡接收其他物理机发送来的该业务的9个数据块。进一步的,数据块分配模块可以通过网络接口卡将接收到的多个第一数据块分配到同一数据队列中,例如该网络接口卡对应三个数据队列,其中上述三个数据队列中的第一数据队列当前的数据量小于预设数据量阈值,则数据块分配模块可以通过该网络接口卡将接收到的多个第一数据块分配到第一数据队列中。进一步的,数据块发送模块可以检测调谐器是否生成对该业务的调度信息,当调谐器生成对该业务的调度信息时,数据块发送模块可以使用调度信息中指定的NUMA节点的资源池中的资源,将多个第一数据块发送给虚拟机,可确保该业务的多个第一数据块所使用的资源位于同一个NUMA节点的资源池中,可改善跨NUMA节点的操作,提高数据传输性能。另外,当检测到调谐器未生成调度信息时,数据块发送模块可以根据数据队列与NUMA节点的资源池的对应关系,确定多个第一数据块所在数据队列对应的资源池,并使用第一数据块所在数据队列对应的资源池中的资源将多个第一数据块发送给虚拟机,例如,物理机可以建立数据队列与NUMA节点的资源池的对应关系,示例性的,第一数据队列对应第一NUMA节点的资源池,第二数据队列对应第二NUMA节点的资源池,第三数据队列对应第三NUMA节点的资源池,数据块分配模块通过网络接口卡将上述业务的多个第一数据块分配到第一数据队列中,当调谐器未生成调度信息时,数据块发送模块可以根据数据队列与NUMA节点的资源池的对应关系,确定第一数据队列对应的资源池为第一NUMA节点的资源池,并使用第一NUMA节点的资源池中的资源将多个第一数块发送给虚拟机,可确保该业务的多个第一数据块所使用的资源位于同一个NUMA节点的资源池中,可改善跨NUMA节点的操作,提高数据传输性能。
其中,物理机可以包括至少一个网络接口卡,至少一个网络接口卡中的任一网络接口卡可以对应至少一个数据队列,数据队列可以用于缓存数据,例如物理机可以包括一个网络接口卡,该网络接口卡可以对应三个数据队列,又如物理机可以包括三个网络接口卡,各个网络接口卡可以对应一个数据队列。
其中,网络接口卡(Network Interface Card,NIC)又称网络适配器,是局域网中连接计算机和传输介质的接口,不仅能实现与局域网传输介质之间的物理连接和电信号匹配,还涉及数据缓存或者数据的编码与解码等功能。示例性的,网络接口卡可以包括物理网卡或者虚拟网卡等。
其中,物理机可以包括至少一个NUMA节点,NUMA节点可以为硬件装置。需要说明的是,物理机可以包括NUMA服务器,NUMA服务器可以由多个NUMA节点组成,各个NUMA节点都对应配置有资源池,资源池可以包括中央处理器(Central Processing Unit,CPU)、内存以及输入输出(input/output,I/O)等资源。
其中,NUMA节点可提供该NUMA节点的资源池中的内存(即本地内存)给该NUMA节点的资源池中的CPU,其中CPU访问本地内存的速度高于该CPU访问远地内存(即其他NUMA节点的资源池中的内存或者内部存储器中的内存)的速度,可提升内存访问速度,提高数据传输性能。例如,物理机可以根据关于NUMA服务器的参数信息确定NUMA节点的数量,获取预置的资源池的数据容量,进而将确定得到的NUMA节点的数量与预置的资源池的数据容量相乘,得到需要向内部存储器申请的内存的资源量,并向内部存储器申请满足该资源量的内存,将申请得到的内存分配给各个NUMA节点,示例性的,物理机当前存在三个NUMA节点,且预置的各个NUMA节点的资源池的数据容量为30MB,则物理机可以向内部存储器申请资源量为90MB的内存,并将每资源量为30MB的内存分配给各个NUMA节点。
在一个可能的设计中,第二方面所述的数据传输装置可以用于实施结合第一方面的部分或全部步骤。
第三方面提供了一种存储一个或多个程序的计算机可读存储介质,所述一个或多个程序包括指令,所述指令当被物理机执行时使所述物理机执行第一方面以及第一方面的所有可能设计中提供的任意一种方法。
第四方面提供了一种物理机,其特征在于,物理机包括硬件层,物理机上运行有虚拟机和调谐器,硬件层包括处理器、存储器、网络接口卡和NUMA节点,其中,存储器中存储一组程序代码,且处理器调用存储器中存储的程序代码,用于执行以下操作:通过网络接口卡接收其他物理机发送来的一业务的多个第一数据块,通过网络接口卡将接收到的多个第一数据块分配到同一数据队列中,数据队列与网络接口卡相对应,在调谐器生成对业务的调度信息的情况下,使用调度信息中指定的NUMA节点的资源池中的资源,将多个第一数据块发送给虚拟机,调度信息用于指示从指定的NUMA节点的资源池中调度资源处理多个第一数据块,在调谐器未生成调度信息的情况下,根据数据队列与NUMA节点的资源池的对应关系,确定多个第一数据块所在数据队列对应的资源池,并使用多个第一数据块所在数据队列对应的资源池中的资源将多个第一数据块发送给虚拟机。
在一个可能的设计中,第四方面所述的物理机可以用于实施结合第一方面的部分或全部步骤。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例中提供的一种数据传输***的架构示意图;
图2是本发明实施例中提供的一种NUMA节点的资源池管理装置的结构示意图;
图3是本发明实施例中提供的一种数据传输方法的流程示意图;
图4是本发明另一实施例中提供的一种NUMA节点的资源池管理装置的结构示意图;
图5是本发明另一实施例中提供的一种NUMA节点的资源池管理装置的结构示意图;
图6是本发明另一实施例中提供的一种数据传输方法的流程示意图;
图7是本发明另一实施例中提供的一种数据传输方法的流程示意图;
图8是本发明实施例中提供的一种数据传输装置的结构示意图;
图9是本发明实施例中提供的一种数据传输装置的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚地描述。
请参见图1,图1是本发明实施例中提供的一种数据传输***的架构示意图,该数据传输***可以包括至少一个虚拟机、至少一个调谐器、至少一个网络接口卡以及至少一个NUMA节点,其中:
可选的,数据传输***还可以包括虚拟交换机(Virtual Switch,vSwitch),其中虚拟交换机用于在虚拟化环境中负责虚拟机之间的交互,以及虚拟机与网络接口卡之间的交互。
可选的,数据传输***还可以包括虚拟网络设备(tap),其中该虚拟网络设备可以为操作***内核中的虚拟网络设备。示例性的,虚拟机可以通过虚拟网络设备与虚拟交换机之间建立以太网连接。
示例性的,网络接口卡接收到其他物理机发送的一业务的多个第一数据块之后,网络接口卡可以将多个第一数据块分配到同一数据队列(queue)中,数据传输***根据数据队列与NUMA节点的资源池(pool)的对应关系,确定多个第一数据块所在数据队列对应的资源池,网络接口卡可以使用多个第一数据块所在数据队列对应的资源池中的资源将多个第一数据块通过虚拟交换机以及虚拟网络设备转发给虚拟机。可选的,数据传输***可以将任一第一数据块的地址信息进行排序,使用经过排序的第一数据块的地址信息计算第一数据块的哈希值,建立哈希值和第一数据块所在数据队列对应的资源池所属NUMA节点之间的映射关系。当虚拟网络设备接收到虚拟机响应多个第一数据块所反馈的该业务的多个第二数据块时,数据传输***可以获取任一第二数据块的地址信息,将第二数据块的地址信息进行排序,使用经过排序的第二数据块的地址信息计算第二数据块的哈希值,根据哈希值和NUMA节点之间的映射关系,确定第二数据块的哈希值对应的NUMA节点,并将第二数据块的哈希值对应的NUMA节点的资源池作为多个第二数据块对应的资源池,使用该资源池中的资源将多个第二数据块发送至网络接口卡。
示例性的,网络接口卡接收到其他物理机发送的一业务的多个第一数据块之后,网络接口卡可以将多个第一数据块分配到同一数据队列中,网络接口卡可以接收调谐器生成的对该业务的调度信息,使用调度信息中指定的NUMA节点的资源池中的资源,将多个第一数据块通过虚拟交换机以及虚拟网络设备转发给虚拟机。可选的,虚拟网络设备接收到虚拟机响应多个第一数据块所反馈的该业务的多个第二数据块时,可以使用调度信息中指定的NUMA节点的资源池中的资源将多个第二数据块通过虚拟交换机发送至网络接口卡。可选的,数据传输***可以将任一第一数据块的地址信息进行排序,使用经过排序的第一数据块的地址信息计算第一数据块的哈希值,建立哈希值和第一数据块所在数据队列对应的资源池所属NUMA节点之间的映射关系。当虚拟网络设备接收到虚拟机响应多个第一数据块所反馈的该业务的多个第二数据块时,数据传输***可以获取任一第二数据块的地址信息,将第二数据块的地址信息进行排序,使用经过排序的第二数据块的地址信息计算第二数据块的哈希值,根据哈希值和NUMA节点之间的映射关系,确定第二数据块的哈希值对应的NUMA节点,并将第二数据块的哈希值对应的NUMA节点的资源池作为多个第二数据块对应的资源池,使用该资源池中的资源将多个第二数据块发送至网络接口卡。
基于图1所示的数据传输***的架构示意图,图2公开了一种NUMA节点的资源池管理装置的结构示意图,NUMA节点的资源池管理装置可以运行于物理机中,如图2所示,该NUMA节点的资源池管理装置至少可以包括sysfs模块、init模块、rx模块、tx模块、exit模块、hash模块以及pool模块,其中:
init模块,用于向物理机的内部存储器申请资源。例如,预置的NUMA节点的资源池的数据容量为30MB,则物理机可以通过init模块向内部存储器申请资源量为30MB的内存资源。
pool模块,用于存储向物理机的内部存储器申请的资源。
rx模块,用于在传输数据时向NUMA节点的资源池申请该资源池中的资源。
tx模块,用于在数据传输完成时释放向NUMA节点的资源池申请的该资源池中的资源。
exit模块,用于释放该NUMA节点的资源池中的资源。
hash模块,用于将第一数据块的地址信息进行排序,使用经过排序的第一数据块的地址信息计算得到第一数据块的哈希值,并建立该哈希值和第一数据块对应的资源池所属NUMA节点之间的映射关系。可选的,hash模块还用于满足预设条件时删除该哈希值及其对应的资源池所属的NUMA节点,其中预设条件可以为间隔预设时间段,例如每间隔1h删除hash模块中存储时间最久的哈希值及其对应的资源池所属的NUMA节点,可选的,预设条件可以为hash模块中存储的哈希值及其对应的NUMA节点的节点标识的数据量总和达到预设阈值,例如预设阈值为10MB,hash模块当前的数据量总和为12MB,则物理机可以通过hash模块删除存储时间最久的哈希值及其对应的资源池所属的NUMA节点。
sysfs模块,用于统计NUMA节点的资源池的数据容量及其当前剩余空间。
请参见图3,图3是本发明实施例中提供的一种数据传输方法的流程示意图,如图所示本发明实施例中的数据传输方法至少可以包括:
S301,物理机通过网络接口卡接收其他物理机发送来的一业务的多个第一数据块。
S302,物理机通过网络接口卡将接收到的多个第一数据块分配到同一数据队列中。
物理机可以通过网络接口卡将接收到的多个第一数据块分配到同一数据队列中,例如该网络接口卡与第一数据队列和第二数据队列相对应,则物理机可以通过该网络接口卡将多个第一数据块分配到第一数据队列中。
S303,物理机检测调谐器是否产生对业务的调度信息。
物理机通过网络接口卡将多个第一数据块分配到同一数据队列中之后,可以检测调谐器是否产生对该业务的调度信息,当调谐器产生对该业务的调度信息时,物理机可以进一步执行步骤S304;当未接收到对该业务的调度信息时,物理机可以进一步执行步骤S305。其中,调度信息可以用于指示从指定NUMA节点的资源池中调度资源处理多个第一数据块。以图4所示的NUMA节点的资源池管理装置的结构示意图为例,收发包模块可以包括收包模块和发包模块,收包模块可以为rx模块,发包模块可以为tx模块,物理机通过收发包模块接收到调谐器产生的对该业务的调度信息(即tunner info)时,可以使用调度信息中指定的NUMA节点的资源池中的资源,将多个第一数据块发送给虚拟机,物理机还可以通过sysfs模块统计NUMA节点的资源池的数据容量及其当前剩余空间。
例如,物理机通过网络接口卡将多个第一数据块分配到同一数据队列中之后,用户可以通过调谐器控制物理机使用指定NUMA节点的资源池中的资源传输多个第一数据块,示例性的,用户希望物理机使用第一NUMA节点的资源池中的资源传输该业务的多个第一数据块时,用户可以向调谐器提交针对该业务的NUMA节点的节点标识,调谐器根据用户提交的针对该业务的节点标识生成调度信息,其中调度信息用于指示从第一NUMA节点的资源池中调度资源处理多个第一数据块,则物理机可以使用调度信息中指定的第一NUMA节点的资源池中的资源,将多个第一数据块发送给虚拟机。
在可选实施例中,物理机检测调谐器是否产生对该业务的调度信息之前,可以根据关于NUMA服务器的参数信息确定NUMA节点的数量,向内部存储器申请满足该数量的资源池,其中各个资源池的数据容量相同。以图5所示的NUMA节点的资源池管理装置的结构示意图为例,物理机可以根据关于NUMA服务器的参数信息确定NUMA节点的数量,物理机还可以通过init模块获取物理机中各个网络接口卡对应的数据队列,以及确定得到的各个NUMA节点,进而向内部存储器申请满足该NUMA节点的数量的资源池,例如物理机包括第一NUMA节点以及第二NUMA节点,物理机可以针对第一NUMA节点向内部存储器申请数据容量为30MB的资源池,该资源池包含资源量为30MB的资源;物理机还可以针对第二NUMA节点向内部存储器申请数据容量为30MB的资源池,该资源池包含资源量为30MB的资源。物理机可以根据数据队列中缓存的多个第一数据块创建线程,其中vhost示意发送线程,irq示意接收线程,物理机可以通过ioctl(ioctl是设备驱动程序中对设备的I/O通道进行管理的函数)或者netlink(光纤收发器)等方式和虚拟机等进行交互。物理机可以通过sysfs模块统计NUMA节点的资源池的数据容量及其当前剩余空间。
S304,在调谐器生成对业务的调度信息的情况下,使用调度信息中指定的NUMA节点的资源池中的资源,将多个第一数据块发送给虚拟机。
可选的,物理机根据调度信息确定多个第一数据块对应的资源池之后,可以检测除多个第一数据块所在数据队列对应的资源池所属NUMA节点以外的其他NUMA节点中资源池的资源当前是否被占用,当其他NUMA节点中资源池的资源当前未被占用时,物理机可以删除其他NUMA节点中的资源池。例如,物理机包括第一NUMA节点以及第二NUMA节点,物理机根据调度信息确定多个第一数据块对应的资源池为第一NUMA节点的资源池,第二NUMA节点的资源池的资源未被占用,则物理机可以删除第二NUMA节点的资源池。
可选的,物理机可以获取确定得到的资源池的当前剩余空间,确定传输多个第一数据块所需资源的资源量,当传输多个第一数据块所需资源的资源量小于或者等于确定得到的资源池的当前剩余空间时,物理机可以使用多个第一数据块所在数据队列对应的资源池中的资源将多个第一数据块发送给虚拟机;当传输多个第一数据块所需资源的资源量大于确定得到的资源池的当前剩余空间时,物理机可以更新多个第一数据块对应的资源池。例如,传输多个第一数据块所需资源的资源量为10MB,确定得到的资源池的当前剩余空间为15MB,传输多个第一数据块所需资源的资源量小于该资源池的当前剩余空间,则物理机可以确定该资源池中未被占用的资源足够承载多个第一数据块,进而物理机可以使用该资源池中的资源将多个第一数据块发送给虚拟机。又如,物理机包括第一NUMA节点以及第二NUMA节点,其中传输多个第一数据块所需资源的资源量为10MB,多个第一数据块对应的资源池为第一NUMA节点的资源池,该资源池的当前剩余空间为5MB,传输多个第一数据块所需资源的资源量大于该资源池的当前剩余空间,则物理机可以确定该资源池中未被占用的资源无法完全承载多个第一数据块,进而物理机可以将多个第一数据块对应的资源池更新为第二NUMA节点的资源池,使用第二NUMA节点的资源池中的资源将多个第一数据块发送给虚拟机。
可选的,物理机使用确定得到的资源池中的资源将多个第一数据块发送给虚拟机的过程中,可以将该资源池的当前剩余空间减去传输多个第一数据块所需资源的资源量,以对多个第一数据块所在数据队列对应的资源池的当前剩余空间进行更新。
可选的,物理机可以获取确定得到的资源池的当前剩余空间与该资源池的数据容量之间的比值,当该比值小于预设比例阈值时,物理机可以更新多个第一数据块对应的资源池,并使用更新后的多个第一数据块对应资源池中的资源将多个第一数据块发送给虚拟机。例如,预设比例阈值可以为25%,当确定得到的资源池的数据容量为30MB,该资源池的当前剩余空间为3MB时,物理机可以确定该资源池的当前剩余空间及其数据容量之间的比值为10%,该比值小于预设比例阈值,则物理机可以更新多个第一数据块对应的资源池,并使用更新后的多个第一数据块对应资源池中的资源将多个第一数据块发送给虚拟机。
可选的,物理机使用确定得到的资源池中的资源将多个第一数据块成功发送给虚拟机之后,可以释放确定得到的资源池中的资源,进而更新该资源池的当前剩余空间。例如,传输多个第一数据块所需资源的资源量为10MB,确定得到的资源池的当前剩余空间为15MB,物理机使用该资源池中的资源将多个第一数据块成功发送给虚拟机的过程中,可以将该资源池的当前剩余空间更新为5MB,物理机使用该资源池中的资源将多个第一数据块成功发送给虚拟机之后,可以释放该资源池中资源量为10MB的资源,并将该资源池的当前剩余空间更新为15MB。
S305,在调谐器未生成调度信息的情况下,根据数据队列与NUMA节点的资源池的对应关系,确定多个第一数据块所在数据队列对应的资源池,并使用多个第一数据块所在数据队列对应的资源池中的资源将多个第一数据块发送给虚拟机。
当调谐器未生成对该业务的调度信息时,物理机可以根据数据队列与NUMA节点的资源池的对应关系,确定多个第一数据块所在数据队列对应的资源池,并使用多个第一数据块所在数据队列对应的资源池中的资源将多个第一数据块发送给虚拟机。
在可选实施例中,物理机可以建立数据队列和NUMA节点的资源池的对应关系。其中,一个NUMA节点的资源池可以对应多个数据队列,可选的,一个NUMA节点的资源池可以对应一个数据队列,具体不受本发明实施例的限制。例如,当数据队列的数量小于或者等于NUMA节点的数量时,物理机可以建立不同数据队列与不同NUMA节点的资源池的对应关系,示例性的,物理机包括第一数据队列以及第二数据队列,物理机还包括第一NUMA节点以及第二NUMA节点,则物理机可以建立第一数据队列和第一NUMA节点的资源池的对应关系,第二数据队列和第二NUMA节点的资源池的对应关系。又如,当数据队列的数量大于NUMA节点的数量时,物理机可以建立一个NUMA节点的资源池与多个数据队列的对应关系,示例性的,物理机包括第一数据队列、第二数据队列以及第三数据队列,物理机还包括第一NUMA节点以及第二NUMA节点,则物理机可以建立第一数据队列和第一NUMA节点的资源池的对应关系,第二数据队列和第二NUMA节点的资源池的对应关系,第三数据队列和第二NUMA节点的资源池的对应关系。
可选的,物理机还可以将任一第一数据块的地址信息进行排序,使用经过排序的第一数据块的地址信息计算得到第一数据块的哈希值,建立哈希值和第一数据块所在数据队列对应的资源池所属NUMA节点之间的映射关系。
在图3所示的数据传输方法中,物理机通过网络接口卡接收其他物理机发送来的一业务的多个第一数据块,通过网络接口卡将接收到的多个第一数据块分配到同一数据队列中,在调谐器生成对业务的调度信息的情况下,使用调度信息中指定的NUMA节点的资源池中的资源,将多个第一数据块发送给虚拟机;在调谐器未生成调度信息的情况下,根据数据队列与NUMA节点的资源池的对应关系,确定多个第一数据块所在数据队列对应的资源池,并使用多个第一数据块所在数据队列对应的资源池中的资源将多个第一数据块发送给虚拟机,可确保多个第一数据块所使用的资源位于同一个NUMA的资源池中,可改善跨NUMA节点的操作,提高数据传输性能。
请参见图6,图6是本发明实施例中提供的一种数据传输方法的流程示意图,如图所示本发明实施例中的数据传输方法至少可以包括:
S601,物理机通过网络接口卡接收其他物理机发送来的一业务的多个第一数据块。
S602,物理机通过网络接口卡将接收到的多个第一数据块分配到同一数据队列中。
S603,物理机根据数据队列与NUMA节点的资源池的对应关系,确定多个第一数据块所在数据队列对应的资源池。
在可选实施例中,物理机根据数据队列与NUMA节点的资源池的对应关系,确定多个第一数据块所在数据队列对应的资源池之前,可以根据关于NUMA服务器的参数信息确定NUMA节点的数量,向内部存储器申请满足该数量的资源池,其中各个资源池的数据容量相同。以图5所示的NUMA节点的资源池管理装置的结构示意图为例,物理机可以根据关于NUMA服务器的参数信息确定NUMA节点的数量,物理机还可以通过init模块获取物理机中各个网络接口卡对应的数据队列,以及确定得到的各个NUMA节点,进而向内部存储器申请满足该NUMA节点的数量的资源池,例如物理机包括第一NUMA节点以及第二NUMA节点,物理机可以针对第一NUMA节点向内部存储器申请数据容量为30MB的资源池,该资源池包含资源量为30MB的资源;物理机还可以针对第二NUMA节点向内部存储器申请数据容量为30MB的资源池,该资源池包含资源量为30MB的资源。物理机可以根据数据队列中缓存的多个第一数据块创建线程,其中vhost示意发送线程,irq示意接收线程,物理机可以通过ioctl或者netlink等方式和虚拟机等进行交互。物理机可以通过sysfs模块统计NUMA节点的资源池的数据容量及其当前剩余空间。
在可选实施例中,物理机可以建立数据队列和NUMA节点的资源池的对应关系。其中,一个NUMA节点的资源池可以对应多个数据队列,可选的,一个NUMA节点的资源池可以对应一个数据队列,具体不受本发明实施例的限制。例如,当数据队列的数量小于或者等于NUMA节点的数量时,物理机可以建立不同数据队列与不同NUMA节点的资源池的对应关系,示例性的,物理机包括第一数据队列以及第二数据队列,物理机还包括第一NUMA节点以及第二NUMA节点,则物理机可以建立第一数据队列和第一NUMA节点的资源池的对应关系,第二数据队列和第二NUMA节点的资源池的对应关系。又如,当数据队列的数量大于NUMA节点的数量时,物理机可以建立一个NUMA节点的资源池与多个数据队列的对应关系,示例性的,物理机包括第一数据队列、第二数据队列以及第三数据队列,物理机还包括第一NUMA节点以及第二NUMA节点,则物理机可以建立第一数据队列和第一NUMA节点的资源池的对应关系,第二数据队列和第二NUMA节点的资源池的对应关系,第三数据队列和第二NUMA节点的资源池的对应关系。
可选的,物理机根据数据队列与NUMA节点的资源池的对应关系,确定多个第一数据块所在数据队列对应的资源池之后,可以检测除多个第一数据块所在数据队列对应的资源池所属NUMA节点以外的其他NUMA节点中资源池的资源当前是否被占用,当其他NUMA节点中资源池的资源当前未被占用时,物理机可以删除其他NUMA节点中的资源池。例如,物理机包括第一NUMA节点以及第二NUMA节点,物理机根据调度信息确定多个第一数据块对应的资源池为第一NUMA节点的资源池,第二NUMA节点的资源池的资源未被占用,则物理机可以删除第二NUMA节点的资源池。
可选的,物理机可以获取确定得到的资源池的当前剩余空间,确定传输多个第一数据块所需资源的资源量,当传输多个第一数据块所需资源的资源量小于或者等于确定得到的资源池的当前剩余空间时,物理机可以使用多个第一数据块所在数据队列对应的资源池中的资源将多个第一数据块发送给虚拟机;当传输多个第一数据块所需资源的资源量大于确定得到的资源池的当前剩余空间时,物理机可以更新多个第一数据块对应的资源池。例如,传输多个第一数据块所需资源的资源量为10MB,确定得到的资源池的当前剩余空间为15MB,传输多个第一数据块所需资源的资源量小于该资源池的当前剩余空间,则物理机可以确定该资源池中未被占用的资源足够承载多个第一数据块,进而物理机可以使用该资源池中的资源将多个第一数据块发送给虚拟机。又如,物理机包括第一NUMA节点以及第二NUMA节点,其中传输多个第一数据块所需资源的资源量为10MB,多个第一数据块对应的资源池为第一NUMA节点的资源池,该资源池的当前剩余空间为5MB,传输多个第一数据块所需资源的资源量大于该资源池的当前剩余空间,则物理机可以确定该资源池中未被占用的资源无法完全承载多个第一数据块,进而物理机可以将多个第一数据块对应的资源池更新为第二NUMA节点的资源池,使用第二NUMA节点的资源池中的资源将多个第一数据块发送给虚拟机。
S604,物理机使用多个第一数据块所在数据队列对应的资源池中的资源将多个第一数据块发送给虚拟机。
可选的,物理机使用确定得到的资源池中的资源将多个第一数据块发送给虚拟机的过程中,可以将该资源池的当前剩余空间减去传输多个第一数据块所需资源的资源量,以对多个第一数据块所在数据队列对应的资源池的当前剩余空间进行更新。
可选的,物理机可以获取确定得到的资源池的当前剩余空间与该资源池的数据容量之间的比值,当该比值小于预设比例阈值时,物理机可以更新多个第一数据块对应的资源池,并使用更新后的多个第一数据块对应资源池中的资源将多个第一数据块发送给虚拟机。例如,预设比例阈值可以为25%,当确定得到的资源池的数据容量为30MB,该资源池的当前剩余空间为3MB时,物理机可以确定该资源池的当前剩余空间及其数据容量之间的比值为10%,该比值小于预设比例阈值,则物理机可以更新多个第一数据块对应的资源池,并使用更新后的多个第一数据块对应资源池中的资源将多个第一数据块发送给虚拟机。
可选的,物理机使用确定得到的资源池中的资源将多个第一数据块成功发送给虚拟机之后,可以释放确定得到的资源池中的资源,进而更新该资源池的当前剩余空间。例如,传输多个第一数据块所需资源的资源量为10MB,确定得到的资源池的当前剩余空间为15MB,物理机使用该资源池中的资源将多个第一数据块成功发送给虚拟机的过程中,可以将该资源池的当前剩余空间更新为5MB,物理机使用该资源池中的资源将多个第一数据块成功发送给虚拟机之后,可以释放该资源池中资源量为10MB的资源,并将该资源池的当前剩余空间更新为15MB。
可选的,物理机还可以将任一第一数据块的地址信息进行排序,使用经过排序的第一数据块的地址信息计算得到第一数据块的哈希值,建立哈希值和第一数据块所在数据队列对应的资源池所属NUMA节点之间的映射关系。
在图6所示的数据传输方法中,物理机通过网络接口卡接收其他物理机发送来的一业务的多个第一数据块,通过网络接口卡将接收到的多个第一数据块分配到同一数据队列中,根据数据队列与NUMA节点的资源池的对应关系,确定多个第一数据块所在数据队列对应的资源池,并使用多个第一数据块所在数据队列对应的资源池中的资源将多个第一数据块发送给虚拟机,可确保多个第一数据块所使用的资源位于同一个NUMA节点的资源池中,可改善跨NUMA节点的操作,提高数据传输性能。
请参见图7,图7是本发明实施例中提供的一种数据传输方法的流程示意图,如图所示本发明实施例中的数据传输方法至少可以包括:
S701,物理机接收虚拟机响应多个第一数据块所反馈的业务的多个第二数据块。
S702,物理机检测调谐器是否产生对该业务的调度信息。
物理机可以检测调谐器是否产生对该业务的调度信息,当调谐器产生对该业务的调度信息时,物理机可以进一步执行步骤S703;当调谐器未产生对该业务的调度信息时,物理机可以进一步执行步骤S704。
S703,当调谐器产生对该业务的调度信息时,物理机使用调度信息中指定的NUMA节点的资源池中的资源,将多个第二数据块发送给网络接口卡。
例如,为了改善跨NUMA节点的操作,物理机需要确定传输多个第一数据块所使用的资源和传输多个第二数据块所使用的资源位于同一NUMA节点的资源池中,基于此,用户可以通过调谐器控制物理机使用处理多个第一数据块所使用资源所属资源池中的资源传输多个第二数据块,示例性的,物理机使用第一NUMA节点的资源池中的资源传输多个第一数据块,用户可以向调谐器提交该NUMA节点的节点标识,调谐器根据用户提交的NUMA节点的节点标识生成调度信息,其中调度信息用于指示从第一NUMA节点的资源池中调度资源处理多个第一数据块,则物理机可以使用调度信息中指定的NUMA节点的资源池中的资源,将多个第二数据块发送给网络接口卡。
可选的,物理机使用调度信息中指定的NUMA节点的资源池中的资源将多个第二数据块发送给网络接口卡之后,可以将任一第二数据块的地址信息进行排序,使用经过排序的第二数据块的地址信息计算得到第二数据块的哈希值,建立该哈希值和第二数据块对应的资源池所属NUMA节点之间的映射关系,以对存储的该哈希值及其对应的NUMA节点进行更新。
可选的,物理机可以获取第二数据所属线程对应的资源池的当前剩余空间,确定传输第二数据所需资源的资源量,当传输第二数据所需资源的资源量小于或者等于该资源池的当前剩余空间时,物理机可以使用该资源池中的资源将第二数据发送给网络接口卡;当传输第二数据所需资源的资源量大于该资源池的当前剩余空间时,物理机可以更新第二数据所属线程对应的资源池。
可选的,物理机使用调度信息中指定的NUMA节点的资源池中的资源将多个第二数据块发送给网络接口卡的过程中,可以将该资源池的当前剩余空间减去传输多个第二数据块所需资源的资源量,以对指定NUMA节点的资源池的当前剩余空间进行更新。
可选的,物理机可以获取指定NUMA节点的资源池的当前剩余空间与该资源池的数据容量之间的比值,当该比值小于预设比例阈值时,物理机可以更新多个第二数据块对应的资源池,并使用更新后的多个第二数据块对应资源池中的资源将多个第二数据块发送给网络接口卡。
可选的,物理机使用指定NUMA节点的资源池中的资源将多个第二数据块成功发送给网络接口卡之后,可以释放该资源池中的资源,进而更新该资源池的当前剩余空间。
S704,当调谐器未产生调度信息时,物理机按照预设规则对任一第二数据块的地址信息进行排序。
当调谐器未产生调度信息时,物理机可以将第二数据块的源地址和目的地址按照从大到小(或者从小到大)的顺序进行排序。
S705,物理机使用经过排序的第二数据块的地址信息计算第二数据块的哈希值。
S706,物理机检测是否存在该哈希值对应的NUMA节点。
物理机可以检测是否存在该哈希值对应的NUMA节点,当存在该哈希值对应的NUMA节点时,物理机可以进一步执行步骤S707;当不存在该哈希值对应的NUMA节点时,物理机可以进一步执行步骤S709。
其中,多个第二数据块为虚拟机响应多个第一数据块所反馈的数据,则第二数据块的源地址和第一数据块的目的地址相同,第二数据块的目的地址和第一数据块的源地址相同,则经过排序的第二数据块的地址信息,与经过排序的第一数据块的地址信息相同,得到的第二数据块的哈希值和第一数据块的哈希值也相同,物理机获取第一数据块的哈希值对应的NUMA节点,将该NUMA节点的资源池作为第二数据块对应的资源池,则第二数据块对应的资源池与第一数据块对应的资源池相同。
S707,当存在该哈希值对应的NUMA节点时,物理机将该NUMA节点的资源池确定为第二数据块对应的资源池。
S708,当不存在该哈希值对应的NUMA节点时,物理机将与网络接口卡距离最近的NUMA节点的资源池确定为第二数据块对应的资源池。
S709,物理机使用第二数据块对应的资源池中的资源将多个第二数据块发送给网络接口卡。
在图7所示的数据传输方法中,物理机接收虚拟机响应多个第一数据块所反馈的业务的多个第二数据块,当调谐器产生对该业务的调度信息时,使用调度信息中指定的NUMA节点的资源池中的资源,将多个第二数据块发送给网络接口卡;当调谐器未产生调度信息时,按照预设规则对任一第二数据块的地址信息进行排序,使用经过排序的第二数据块的地址信息计算第二数据块的哈希值,当存在该哈希值对应的NUMA节点时,将该NUMA节点的资源池确定为第二数据块对应的资源池;当不存在该哈希值对应的NUMA节点时,将与网络接口卡距离最近的NUMA节点的资源池确定为第二数据块对应的资源池,并使用第二数据块对应的资源池中的资源将多个第二数据块发送给网络接口卡,可确保多个第二数据块所使用的资源和多个第一数据块所使用的资源位于同一个NUMA节点的资源池中,可改善跨NUMA节点的操作,提高数据传输性能。
请参见图8,图8是本发明实施例中提供的一种物理机的结构示意图。如图8所示,该物理机80可以包括硬件层81,运行在硬件层81之上的调谐器82以及一个或多个虚拟机83。硬件层81可以包括处理器811、存储器812、一个或者多个网络接口卡813以及一个或者多个NUMA节点814。
其中,处理器811可以是一个,也可以是多个,处理器811可以是CPU,网络处理器(network processor,NP)等。
其中,网络接口卡813可以结合图1所示的nic,网络接口卡813可以是网络适配器或物理网卡,用于跟任何可连接的网络进行连接,例如互联网(Internet)、企业网等,网络接口卡813与数据队列相对应。
其中,NUMA节点814对应配置有资源池,资源池可以包括内存资源。
其中,存储器812具体可以用于存储数据队列与NUMA的资源池的对应关系等。存储器812可以包括易失性存储器(volatile memory),例如随机存取存储器(random-accessmemory,RAM);存储器也可以包括非易失性存储器(non-volatile memory),例如只读存储器(read-only memory,ROM),快闪存储器(flash memory),硬盘(hard disk drive,HDD)或固态硬盘(solid-state drive,SSD);存储器还可以包括上述种类的存储器的组合。
其中,调谐器82可以结合图1所示的Tunner,用户可以通过调谐器82生成调度信息,调度信息可以用于指示从指定的NUMA节点814的资源池中调度资源处理多个第一数据块或者多个第二数据块。
其中,虚拟机83可以包括虚拟处理器831、虚拟内存832以及客户操作***(GuestOperation System,Guest OS)833,其中客户操作***833是运行在虚拟处理器831以及虚拟内存832等虚拟设备之上的操作***。
其中,物理机80作为管理层,用以完成硬件资源的管理、分配;为虚拟机83呈现虚拟硬件平台;实现虚拟机83的调度和隔离。其中,虚拟硬件平台对其上运行的各个虚拟机83提供各种硬件资源,如提供虚拟处理器、内存、虚拟磁盘、虚拟网卡等等。其中,该虚拟磁盘可对应物理机80的一个文件或者一个逻辑块设备。虚拟机83则运行在物理机80为其准备的虚拟硬件平台上,物理机80上运行一个或多个虚拟机83。
虚拟机83:通过虚拟机软件可以在一台物理计算机上模拟出一台或者多台虚拟的计算机,而这些虚拟的计算机就像真正的计算机那样进行工作。虚拟机83可以结合图1所示的VM,虚拟机83上可以安装操作***和应用程序,虚拟机83还可访问网络资源。对于在虚拟机83中运行的应用程序而言,虚拟机83就像是在真正的计算机中进行工作。
处理器811调用存储器812中存储的程序代码,可以执行以下操作:
处理器811通过网络接口卡813接收其他物理机发送来的一业务的多个第一数据块。
处理器811通过网络接口卡813将接收到的多个第一数据块分配到同一数据队列中。
在调谐器82生成对业务的调度信息的情况下,处理器811使用调度信息中指定的NUMA节点的资源池中的资源,将多个第一数据块发送给虚拟机83,调度信息用于指示从指定的NUMA节点的资源池中调度资源处理多个第一数据块。
在调谐器82未生成调度信息的情况下,处理器811根据数据队列与NUMA节点的资源池的对应关系,确定多个第一数据块所在数据队列对应的资源池,并使用多个第一数据块所在数据队列对应的资源池中的资源将多个第一数据块发送给虚拟机83。
可选的,处理器811使用调度信息中指定的NUMA节点的资源池中的资源,将多个第一数据块发送给虚拟机83之后,还可以执行以下操作:
处理器811接收虚拟机83响应多个第一数据块所反馈的业务的多个第二数据块。
处理器811使用调度信息中指定的NUMA节点的资源池中的资源,将多个第二数据块发送给网络接口卡813,处理多个第二数据块所调度的资源所属的资源池与处理多个第一数据块所调度的资源所属的资源池相同。
可选的,处理器811使用第一数据块所在数据队列对应的资源池中的资源将所述多个第一数据块发送给虚拟机83之后,还可以执行以下操作:
处理器811接收虚拟机83响应多个第一数据块所反馈的业务的多个第二数据块。
处理器811确定多个第二数据块对应的资源池,多个第二数据块对应的资源池与多个第一数据块对应的资源池相同。
处理器811使用多个第二数据块对应的资源池中的资源将多个第二数据块发送给网络接口卡813。
可选的,处理器811根据数据队列与NUMA节点的资源池的对应关系,确定多个第一数据块所在数据队列对应的资源池之后,还可以执行以下操作:
处理器811按照预设规则对多个第一数据块中的任一第一数据块的地址信息进行排序,第一数据块的地址信息包括一个源地址和一个目的地址,多个第一数据块中的各个第一数据块的源地址相同,多个第一数据块中的各个第一数据块的目的地址相同。
处理器811使用经过排序的第一数据块的地址信息计算第一数据块的哈希值。
处理器811建立第二映射关系,第二映射关系为哈希值和第一数据块所在数据队列对应的资源池所属的NUMA节点之间的映射关系。
进一步的,处理器811使用第一数据块所在数据队列对应的资源池中的资源将多个第一数据块发送给虚拟机83,具体可以为:
处理器811使用第一数据块所在数据队列对应的资源池中的资源,将多个第一数据块以及第二映射关系发送给虚拟机83。
可选的,处理器811确定多个第二数据块对应的资源池,具体可以为:
处理器811按照预设规则对多个第二数据块中的任一第二数据块的地址信息进行排序,第二数据块的地址信息包括一个源地址和一个目的地址,多个第二数据块中的各个第二数据块的源地址和各个第一数据块的目的地址相同,多个第二数据块中的各个第二数据块的目的地址和各个第一数据块的源地址相同。
处理器811使用经过排序的第二数据块的地址信息计算第二数据块的哈希值,第一数据的哈希值和第二数据的哈希值相同。
处理器811根据第二映射关系,确定第二数据块的哈希值对应的NUMA节点。
处理器811将第二数据块的哈希值对应的NUMA节点的资源池作为多个第二数据块对应的资源池。
具体的,本发明实施例中介绍的终端设备可以用以实施本发明结合图3、图6以及图7介绍的数据传输方法实施例中的部分或全部流程。
请参见图9,图9是本发明实施例中提供的一种数据传输装置的结构示意图,其中本发明实施例提供的数据传输装置可以用于物理机,物理机上运行有虚拟机和调谐器,物理机包括网络接口卡和NUMA节点,本发明实施例提供的数据传输装置结合图8中的处理器811,如图所示本发明实施例中的数据传输装置至少可以包括数据块接收模块901、数据块分配模块902以及数据块发送模块903,其中:
数据块接收模块901,用于通过网络接口卡接收其他物理机发送来的一业务的多个第一数据块。
数据块分配模块902,用于通过网络接口卡将接收到的多个第一数据块分配到同一数据队列中,数据队列与网络接口卡相对应。
数据块发送模块903,用于在调谐器生成对业务的调度信息的情况下,使用调度信息中指定的NUMA节点的资源池中的资源,将多个第一数据块发送给虚拟机,调度信息用于指示从指定的NUMA节点的资源池中调度资源处理多个第一数据块。
数据块发送模块903,还用于在调谐器未生成调度信息的情况下,根据数据队列与NUMA节点的资源池的对应关系,确定多个第一数据块所在数据队列对应的资源池,并使用多个第一数据块所在数据队列对应的资源池中的资源将多个第一数据块发送给虚拟机。
可选的,数据块接收模块901,还用于数据块发送模块903使用调度信息中指定的NUMA节点的资源池中的资源,将多个第一数据块发送给虚拟机之后,接收虚拟机响应多个第一数据块所反馈的业务的多个第二数据块。
数据块发送模块903,还用于使用调度信息中指定的NUMA节点的资源池中的资源,将多个第二数据块发送给网络接口卡,处理多个第二数据块所调度的资源所属的资源池与处理多个第一数据块所调度的资源所属的资源池相同。
可选的,数据块接收模块901,还用于数据块发送模块903使用第一数据块所在数据队列对应的资源池中的资源将多个第一数据块发送给虚拟机之后,接收虚拟机响应多个第一数据块所反馈的业务的多个第二数据块。
进一步的,本发明实施例中的数据传输装置还可以包括:
资源池确定模块904,用于确定多个第二数据块对应的资源池,多个第二数据块对应的资源池与多个第一数据块对应的资源池相同。
数据块发送模块903,还用于使用多个第二数据块对应的资源池中的资源将多个第二数据块发送给网络接口卡。
可选的,本发明实施例中的数据传输装置还可以包括:
地址信息排序模块905,用于数据块发送模块903根据数据队列与NUMA节点的资源池的对应关系,确定多个第一数据块所在数据队列对应的资源池之后,按照预设规则对多个第一数据块中的任一第一数据块的地址信息进行排序,第一数据块的地址信息包括一个源地址和一个目的地址,多个第一数据块中的各个第一数据块的源地址相同,多个第一数据块中的各个第一数据块的目的地址相同。
哈希值计算模块906,用于使用经过排序的第一数据块的地址信息计算第一数据块的哈希值。
映射关系建立模块907,用于建立第二映射关系,第二映射关系为哈希值和第一数据块所在数据队列对应的资源池所属的NUMA节点之间的映射关系。
进一步的,数据块发送模块903使用第一数据块所在数据队列对应的资源池中的资源将多个第一数据块发送给虚拟机,用于:
使用第一数据块所在数据队列对应的资源池中的资源,将多个第一数据块以及第二映射关系发送给虚拟机。
可选的,资源池确定模块902,用于:
按照预设规则对多个第二数据块中的任一第二数据块的地址信息进行排序,第二数据块的地址信息包括一个源地址和一个目的地址,多个第二数据块中的各个第二数据块的源地址和各个第一数据块的目的地址相同,多个第二数据块中的各个第二数据块的目的地址和各个第一数据块的源地址相同。
使用经过排序的第二数据块的地址信息计算第二数据块的哈希值,第一数据的哈希值和第二数据的哈希值相同。
根据第二映射关系,确定第二数据块的哈希值对应的NUMA节点。
将第二数据块的哈希值对应的NUMA节点的资源池作为多个第二数据块对应的资源池。
具体的,本发明实施例中介绍的数据传输装置可以用以实施本发明结合图3、图6以及图7介绍的通信链路的测试方法实施例中的部分或全部流程。
在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包括于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不是必须针对相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。
此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。在本发明的描述中,“多个”的含义是至少两个,例如两个,三个等,除非另有明确具体的限定。
在流程图中表示或在此以其他方式描述的逻辑和/或步骤,例如,可以被认为是用于实现逻辑功能的可执行指令的程序列表,可以具体实现在任何计算机可读介质中,以供指令执行***、装置或设备(如基于计算机的***、包括处理器的***或其他可以从指令执行***、装置或设备取指令并执行指令的***)使用,或结合这些指令执行***、装置或设备而使用。就本说明书而言,"计算机可读介质"可以是任何可以包括、存储、通信、传播或传输程序以供指令执行***、装置或设备或结合这些指令执行***、装置或设备而使用的装置。计算机可读介质的更具体的示例(非穷尽性列表)包括以下:具有一个或多个布线的电连接部(电子装置),便携式计算机盘盒(磁装置),随机存取存储器,只读存储器,可擦除可编辑只读存储器,光纤装置,以及便携式光盘只读存储器。另外,计算机可读介质甚至可以是可在其上打印所述程序的纸或其他合适的介质,因为可以例如通过对纸或其他介质进行光学扫描,接着进行编辑、解译或必要时以其他合适方式进行处理来以电子方式获得所述程序,然后将其存储在计算机存储器中。
应当理解,本发明的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式中,多个步骤或方法可以用存储在存储器中且由合适的指令执行***执行的软件或固件来实现。例如,如果用硬件来实现,和在另一实施方式中一样,可用本领域公知的下列技术中的任一项或他们的组合来实现:具有用于对数据信号实现逻辑功能的逻辑门电路的离散逻辑电路,具有合适的组合逻辑门电路的专用集成电路,可编程门阵列,现场可编程门阵列等。
此外,在本发明各个实施例中的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。
尽管上面已经示出和描述了本发明的实施例,可以理解的是,上述实施例是示例性的,不能理解为对本发明的限制,本领域的普通技术人员在本发明的范围内可以对上述实施例进行变化、修改、替换和变型。
Claims (17)
1.一种数据传输方法,其特征在于,所述方法用于物理机,所述物理机上运行有虚拟机和调谐器,所述物理机包括网络接口卡和非一致性内存访问NUMA节点,所述方法包括:
通过所述网络接口卡接收其他物理机发送来的一业务的多个第一数据块;
通过所述网络接口卡将接收到的所述多个第一数据块分配到同一数据队列中,所述数据队列与所述网络接口卡相对应;
在所述调谐器未生成调度信息的情况下,使用所述多个第一数据块所在数据队列对应的资源池中的资源将所述多个第一数据块发送给所述虚拟机,其中,所述多个第一数据块所在数据队列对应的资源池取决于所述数据队列与NUMA节点的资源池的对应关系;
在所述调谐器生成所述调度信息的情况下,使用所述调度信息中指定的NUMA节点的资源池中的资源,将所述多个第一数据块发送给所述虚拟机;所述调度信息用于指示从所述指定的NUMA节点的资源池中调度资源处理所述多个第一数据块;当检测到NUMA服务器中除所述指定的NUMA节点以外的其他NUMA节点的资源池中资源当前未被占用,删除所述其他NUMA节点的资源池。
2.如权利要求1所述的方法,其特征在于,所述方法还包括:
在所述调谐器生成对所述业务的调度信息的情况下,接收所述虚拟机响应所述多个第一数据块所反馈的所述业务的多个第二数据块;
使用所述调度信息中指定的NUMA节点的资源池中的资源,将所述多个第二数据块发送给所述网络接口卡,处理所述多个第二数据块所调度的资源所属的资源池与处理所述多个第一数据块所调度的资源所属的资源池相同。
3.如权利要求1所述的方法,其特征在于,所述使用所述第一数据块所在数据队列对应的资源池中的资源将所述多个第一数据块发送给所述虚拟机之后,还包括:
接收所述虚拟机响应所述多个第一数据块所反馈的所述业务的多个第二数据块;
确定所述多个第二数据块对应的资源池,所述多个第二数据块对应的资源池与所述多个第一数据块对应的资源池相同;
使用所述多个第二数据块对应的资源池中的资源将所述多个第二数据块发送给所述网络接口卡。
4.如权利要求3所述的方法,其特征在于,根据所述数据队列与NUMA节点的资源池的对应关系,确定所述多个第一数据块所在数据队列对应的资源池之后,还包括:
按照预设规则对所述多个第一数据块中的任一第一数据块的地址信息进行排序,所述第一数据块的地址信息包括一个源地址和一个目的地址,所述多个第一数据块中的各个第一数据块的源地址相同,所述多个第一数据块中的各个第一数据块的目的地址相同;
使用经过排序的所述第一数据块的地址信息计算所述第一数据块的哈希值;
建立第二映射关系,所述第二映射关系为所述哈希值和所述第一数据块所在数据队列对应的资源池所属的NUMA节点之间的映射关系;
所述使用所述第一数据块所在数据队列对应的资源池中的资源将所述多个第一数据块发送给所述虚拟机,包括:
使用所述第一数据块所在数据队列对应的资源池中的资源,将所述多个第一数据块以及所述第二映射关系发送给所述虚拟机。
5.如权利要求4所述的方法,其特征在于,所述确定所述多个第二数据块对应的资源池,包括:
按照所述预设规则对所述多个第二数据块中的任一第二数据块的地址信息进行排序,所述第二数据块的地址信息包括一个源地址和一个目的地址,所述多个第二数据块中的各个第二数据块的源地址和所述各个第一数据块的目的地址相同,所述多个第二数据块中的各个第二数据块的目的地址和所述各个第一数据块的源地址相同;
使用经过排序的所述第二数据块的地址信息计算所述第二数据块的哈希值,所述第一数据的哈希值和所述第二数据的哈希值相同;
根据所述第二映射关系,确定所述第二数据块的哈希值对应的NUMA节点;
将所述第二数据块的哈希值对应的NUMA节点的资源池作为所述多个第二数据块对应的资源池。
6.一种数据传输装置,其特征在于,所述装置用于物理机,所述物理机上运行有虚拟机和调谐器,所述物理机包括网络接口卡和非一致性内存访问NUMA节点,所述装置包括:
数据块接收模块,用于通过所述网络接口卡接收其他物理机发送来的一业务的多个第一数据块;
数据块分配模块,用于通过所述网络接口卡将接收到的所述多个第一数据块分配到同一数据队列中,所述数据队列与所述网络接口卡相对应;
数据块发送模块,用于在所述调谐器未生成调度信息的情况下,使用所述多个第一数据块所在数据队列对应的资源池中的资源将所述多个第一数据块发送给所述虚拟机,其中,所述多个第一数据块所在数据队列对应的资源池取决于所述数据队列与NUMA节点的资源池的对应关系;
所述数据块发送模块,用于在所述调谐器生成所述调度信息的情况下,使用所述调度信息中指定的NUMA节点的资源池中的资源,将所述多个第一数据块发送给所述虚拟机;所述调度信息用于指示从所述指定的NUMA节点的资源池中调度资源处理所述多个第一数据块;当检测到NUMA服务器中除所述指定的NUMA节点以外的其他NUMA节点的资源池中资源当前未被占用,删除所述其他NUMA节点的资源池。
7.如权利要求6所述的装置,其特征在于,所述数据块发送模块,还用于在所述调谐器生成对所述业务的调度信息的情况下,使用所述调度信息中指定的NUMA节点的资源池中的资源,将所述多个第一数据块发送给所述虚拟机,所述调度信息用于指示从所述指定的NUMA节点的资源池中调度资源处理所述多个第一数据块;
相应的,所述数据块接收模块,还用于所述数据块发送模块使用所述调度信息中指定的NUMA节点的资源池中的资源,将所述多个第一数据块发送给所述虚拟机之后,接收所述虚拟机响应所述多个第一数据块所反馈的所述业务的多个第二数据块;
所述数据块发送模块,还用于使用所述调度信息中指定的NUMA节点的资源池中的资源,将所述多个第二数据块发送给所述网络接口卡,处理所述多个第二数据块所调度的资源所属的资源池与处理所述多个第一数据块所调度的资源所属的资源池相同。
8.如权利要求6所述的装置,其特征在于,
所述数据块接收模块,还用于所述数据块发送模块使用所述第一数据块所在数据队列对应的资源池中的资源将所述多个第一数据块发送给所述虚拟机之后,接收所述虚拟机响应所述多个第一数据块所反馈的所述业务的多个第二数据块;
所述装置还包括:
资源池确定模块,用于确定所述多个第二数据块对应的资源池,所述多个第二数据块对应的资源池与所述多个第一数据块对应的资源池相同;
所述数据块发送模块,还用于使用所述多个第二数据块对应的资源池中的资源将所述多个第二数据块发送给所述网络接口卡。
9.如权利要求8所述的装置,其特征在于,所述装置还包括:
地址信息排序模块,用于所述数据块发送模块根据所述数据队列与NUMA节点的资源池的对应关系,确定所述多个第一数据块所在数据队列对应的资源池之后,按照预设规则对所述多个第一数据块中的任一第一数据块的地址信息进行排序,所述第一数据块的地址信息包括一个源地址和一个目的地址,所述多个第一数据块中的各个第一数据块的源地址相同,所述多个第一数据块中的各个第一数据块的目的地址相同;
哈希值计算模块,用于使用经过排序的所述第一数据块的地址信息计算所述第一数据块的哈希值;
映射关系建立模块,用于建立第二映射关系,所述第二映射关系为所述哈希值和所述第一数据块所在数据队列对应的资源池所属的NUMA节点之间的映射关系;
所述数据块发送模块使用所述第一数据块所在数据队列对应的资源池中的资源将所述多个第一数据块发送给所述虚拟机,用于:
使用所述第一数据块所在数据队列对应的资源池中的资源,将所述多个第一数据块以及所述第二映射关系发送给所述虚拟机。
10.如权利要求9所述的装置,其特征在于,所述资源池确定模块,用于:
按照所述预设规则对所述多个第二数据块中的任一第二数据块的地址信息进行排序,所述第二数据块的地址信息包括一个源地址和一个目的地址,所述多个第二数据块中的各个第二数据块的源地址和所述各个第一数据块的目的地址相同,所述多个第二数据块中的各个第二数据块的目的地址和所述各个第一数据块的源地址相同;
使用经过排序的所述第二数据块的地址信息计算所述第二数据块的哈希值,所述第一数据的哈希值和所述第二数据的哈希值相同;
根据所述第二映射关系,确定所述第二数据块的哈希值对应的NUMA节点;
将所述第二数据块的哈希值对应的NUMA节点的资源池作为所述多个第二数据块对应的资源池。
11.一种物理机,其特征在于,所述物理机包括硬件层,所述物理机上运行有虚拟机和调谐器,所述硬件层包括处理器、存储器、网络接口卡和非一致性内存访问NUMA节点,其中,所述存储器中存储一组程序代码,且所述处理器调用存储器中存储的程序代码,用于执行以下操作:
通过所述网络接口卡接收其他物理机发送来的一业务的多个第一数据块;
通过所述网络接口卡将接收到的所述多个第一数据块分配到同一数据队列中,所述数据队列与所述网络接口卡相对应;
在所述调谐器未生成调度信息的情况下,使用所述多个第一数据块所在数据队列对应的资源池中的资源将所述多个第一数据块发送给所述虚拟机,其中,所述多个第一数据块所在数据队列对应的资源池取决于所述数据队列与NUMA节点的资源池的对应关系;
在所述调谐器生成所述调度信息的情况下,使用所述调度信息中指定的NUMA节点的资源池中的资源,将所述多个第一数据块发送给所述虚拟机;所述调度信息用于指示从所述指定的NUMA节点的资源池中调度资源处理所述多个第一数据块;当检测到NUMA服务器中除所述指定的NUMA节点以外的其他NUMA节点的资源池中资源当前未被占用,删除所述其他NUMA节点的资源池。
12.如权利要求11所述的物理机,其特征在于,还包括:在所述调谐器生成对所述业务的调度信息的情况下,使用所述调度信息中指定的NUMA节点的资源池中的资源,将所述多个第一数据块发送给所述虚拟机,所述调度信息用于指示从所述指定的NUMA节点的资源池中调度资源处理所述多个第一数据块;
接收所述虚拟机响应所述多个第一数据块所反馈的所述业务的多个第二数据块;
使用所述调度信息中指定的NUMA节点的资源池中的资源,将所述多个第二数据块发送给所述网络接口卡,处理所述多个第二数据块所调度的资源所属的资源池与处理所述多个第一数据块所调度的资源所属的资源池相同。
13.如权利要求11所述的物理机,其特征在于,所述处理器使用所述第一数据块所在数据队列对应的资源池中的资源将所述多个第一数据块发送给所述虚拟机之后,还执行以下操作:
接收所述虚拟机响应所述多个第一数据块所反馈的所述业务的多个第二数据块;
确定所述多个第二数据块对应的资源池,所述多个第二数据块对应的资源池与所述多个第一数据块对应的资源池相同;
使用所述多个第二数据块对应的资源池中的资源将所述多个第二数据块发送给所述网络接口卡。
14.如权利要求13所述的物理机,其特征在于,所述处理器根据所述数据队列与NUMA节点的资源池的对应关系,确定所述多个第一数据块所在数据队列对应的资源池之后,还执行以下操作:
按照预设规则对所述多个第一数据块中的任一第一数据块的地址信息进行排序,所述第一数据块的地址信息包括一个源地址和一个目的地址,所述多个第一数据块中的各个第一数据块的源地址相同,所述多个第一数据块中的各个第一数据块的目的地址相同;
使用经过排序的所述第一数据块的地址信息计算所述第一数据块的哈希值;
建立第二映射关系,所述第二映射关系为所述哈希值和所述第一数据块所在数据队列对应的资源池所属的NUMA节点之间的映射关系;
所述处理器使用所述第一数据块所在数据队列对应的资源池中的资源将所述多个第一数据块发送给所述虚拟机,用于:
使用所述第一数据块所在数据队列对应的资源池中的资源,将所述多个第一数据块以及所述第二映射关系发送给所述虚拟机。
15.如权利要求14所述的物理机,其特征在于,所述处理器确定所述多个第二数据块对应的资源池,用于:
按照所述预设规则对所述多个第二数据块中的任一第二数据块的地址信息进行排序,所述第二数据块的地址信息包括一个源地址和一个目的地址,所述多个第二数据块中的各个第二数据块的源地址和所述各个第一数据块的目的地址相同,所述多个第二数据块中的各个第二数据块的目的地址和所述各个第一数据块的源地址相同;
使用经过排序的所述第二数据块的地址信息计算所述第二数据块的哈希值,所述第一数据的哈希值和所述第二数据的哈希值相同;
根据所述第二映射关系,确定所述第二数据块的哈希值对应的NUMA节点;将所述第二数据块的哈希值对应的NUMA节点的资源池作为所述多个第二数据块对应的资源池。
16.一种计算机存储介质,其特征在于,包括指令,用于,在所述指令被一个或多个处理器执行时,实现如权利要求1-5任一所述的方法。
17.一种计算机程序产品,其特征在于,包括计算机程序,所述计算机程序当被一个或多个处理器执行时用于实现如权利要求1-5任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111140967.6A CN114024962B (zh) | 2016-09-20 | 2016-09-20 | 一种数据传输方法及装置 |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610836553.XA CN107846367B (zh) | 2016-09-20 | 2016-09-20 | 一种数据传输方法及装置 |
CN202111140967.6A CN114024962B (zh) | 2016-09-20 | 2016-09-20 | 一种数据传输方法及装置 |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610836553.XA Division CN107846367B (zh) | 2016-09-20 | 2016-09-20 | 一种数据传输方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114024962A CN114024962A (zh) | 2022-02-08 |
CN114024962B true CN114024962B (zh) | 2023-04-18 |
Family
ID=61656780
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610836553.XA Active CN107846367B (zh) | 2016-09-20 | 2016-09-20 | 一种数据传输方法及装置 |
CN202111140967.6A Active CN114024962B (zh) | 2016-09-20 | 2016-09-20 | 一种数据传输方法及装置 |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610836553.XA Active CN107846367B (zh) | 2016-09-20 | 2016-09-20 | 一种数据传输方法及装置 |
Country Status (4)
Country | Link |
---|---|
US (2) | US11023373B2 (zh) |
EP (1) | EP3506575B1 (zh) |
CN (2) | CN107846367B (zh) |
WO (1) | WO2018054271A1 (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113946411A (zh) * | 2020-07-15 | 2022-01-18 | 阿里巴巴集团控股有限公司 | 数据处理方法、装置、设备和存储介质 |
CN113419973B (zh) * | 2021-06-17 | 2023-05-26 | 杭州迪普科技股份有限公司 | 一种报文转发方法及装置 |
CN113726636B (zh) * | 2021-08-31 | 2022-11-29 | 华云数据控股集团有限公司 | 软件转发设备的数据转发方法、***及电子设备 |
CN114553635B (zh) * | 2022-02-18 | 2023-03-24 | 珠海星云智联科技有限公司 | Dpu网络设备中的数据处理方法、数据交互方法及产品 |
CN115794317B (zh) * | 2023-02-06 | 2023-04-21 | 天翼云科技有限公司 | 一种基于虚拟机的处理方法、装置、设备及介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103365658A (zh) * | 2013-06-28 | 2013-10-23 | 华为技术有限公司 | 一种资源访问方法和计算机设备 |
CN104038389A (zh) * | 2014-06-19 | 2014-09-10 | 高长喜 | 多重应用协议识别方法和装置 |
CA2938033A1 (en) * | 2014-03-19 | 2015-09-24 | Nec Corporation | Reception packet distribution method, queue selector, packet processing device, and recording medium |
WO2016035003A1 (en) * | 2014-09-05 | 2016-03-10 | Telefonaktiebolaget L M Ericsson (Publ) | Transparent non-uniform memory access (numa) awareness |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102567226A (zh) * | 2011-12-31 | 2012-07-11 | 曙光信息产业股份有限公司 | 数据访问的实现方法和装置 |
US8984526B2 (en) * | 2012-03-09 | 2015-03-17 | Microsoft Technology Licensing, Llc | Dynamic processor mapping for virtual machine network traffic queues |
CN104050091B (zh) * | 2012-12-28 | 2017-06-20 | 华耀(中国)科技有限公司 | 基于非一致性内存访问***的网络设备及其设置方法 |
US10048871B2 (en) * | 2013-02-20 | 2018-08-14 | Red Hat, Inc. | Assigning pre-existing processes to select sets of non-uniform memory access (NUMA) aligned resources |
US10255091B2 (en) * | 2014-09-21 | 2019-04-09 | Vmware, Inc. | Adaptive CPU NUMA scheduling |
-
2016
- 2016-09-20 CN CN201610836553.XA patent/CN107846367B/zh active Active
- 2016-09-20 CN CN202111140967.6A patent/CN114024962B/zh active Active
-
2017
- 2017-09-18 EP EP17852339.5A patent/EP3506575B1/en active Active
- 2017-09-18 WO PCT/CN2017/102078 patent/WO2018054271A1/zh unknown
-
2019
- 2019-03-19 US US16/358,116 patent/US11023373B2/en active Active
-
2021
- 2021-04-27 US US17/241,910 patent/US11734172B2/en active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103365658A (zh) * | 2013-06-28 | 2013-10-23 | 华为技术有限公司 | 一种资源访问方法和计算机设备 |
CA2938033A1 (en) * | 2014-03-19 | 2015-09-24 | Nec Corporation | Reception packet distribution method, queue selector, packet processing device, and recording medium |
CN104038389A (zh) * | 2014-06-19 | 2014-09-10 | 高长喜 | 多重应用协议识别方法和装置 |
WO2016035003A1 (en) * | 2014-09-05 | 2016-03-10 | Telefonaktiebolaget L M Ericsson (Publ) | Transparent non-uniform memory access (numa) awareness |
Also Published As
Publication number | Publication date |
---|---|
US20190213127A1 (en) | 2019-07-11 |
US20210248070A1 (en) | 2021-08-12 |
US11734172B2 (en) | 2023-08-22 |
WO2018054271A1 (zh) | 2018-03-29 |
US11023373B2 (en) | 2021-06-01 |
EP3506575A4 (en) | 2019-07-31 |
CN107846367A (zh) | 2018-03-27 |
EP3506575B1 (en) | 2023-06-21 |
EP3506575A1 (en) | 2019-07-03 |
CN107846367B (zh) | 2021-09-21 |
CN114024962A (zh) | 2022-02-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN114024962B (zh) | 一种数据传输方法及装置 | |
US20210075731A1 (en) | Distributed policy-based provisioning and enforcement for quality of service | |
US9558005B2 (en) | Reliable and deterministic live migration of virtual machines | |
CN107995129B (zh) | 一种nfv报文转发方法和装置 | |
US8595722B2 (en) | Preprovisioning virtual machines based on request frequency and current network configuration | |
US9998532B2 (en) | Computer-based, balanced provisioning and optimization of data transfer resources for products and services | |
US20160085595A1 (en) | Hybrid virtual machine configuration management | |
US10116571B1 (en) | Network Function Virtualization (NFV) Management and Orchestration (MANO) with Application Layer Traffic Optimization (ALTO) | |
US20080298274A1 (en) | Method for configuring virtual network and network system | |
KR20160087706A (ko) | 가상화 플랫폼을 고려한 분산 데이터 처리 시스템의 자원 할당 장치 및 할당 방법 | |
EP4002138A1 (en) | Native cloud computing via network segmentation | |
CN104937584A (zh) | 基于共享资源的质量向经优先级排序的虚拟机和应用程序提供优化的服务质量 | |
US10616134B1 (en) | Prioritizing resource hosts for resource placement | |
US20180246772A1 (en) | Method and apparatus for allocating a virtual resource in network functions virtualization network | |
US20110167067A1 (en) | Classification of application commands | |
CN114726657B (zh) | 中断管理和数据收发管理的方法、装置及智能网卡 | |
CN109478151B (zh) | 网络可访问数据卷修改 | |
KR102446717B1 (ko) | 컨테이너 처리 방법, 컨테이너 처리 장치 및 컨테이너 처리 시스템 | |
CN117950825A (zh) | 一种作业调度方法、服务器及服务器集群 | |
CN118245163A (zh) | 虚拟机的调度方法、装置、芯片以及计算机可读存储介质 | |
KR20190087131A (ko) | 가상 네트워크 기능 자원 할당 방법, 프로그램, 이를 기록한 컴퓨터로 판독가능한 기록매체와 컴퓨팅 장치 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |