CN110554977A - 数据缓存方法、数据处理方法、计算机设备、存储介质 - Google Patents
数据缓存方法、数据处理方法、计算机设备、存储介质 Download PDFInfo
- Publication number
- CN110554977A CN110554977A CN201810539153.1A CN201810539153A CN110554977A CN 110554977 A CN110554977 A CN 110554977A CN 201810539153 A CN201810539153 A CN 201810539153A CN 110554977 A CN110554977 A CN 110554977A
- Authority
- CN
- China
- Prior art keywords
- entity
- virtual
- data
- network interface
- interface component
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 112
- 238000003672 processing method Methods 0.000 title claims description 9
- 239000000872 buffer Substances 0.000 claims abstract description 364
- 238000013500 data storage Methods 0.000 claims description 23
- 230000003139 buffering effect Effects 0.000 claims description 12
- 238000004590 computer program Methods 0.000 claims description 12
- 230000008569 process Effects 0.000 abstract description 29
- 238000010586 diagram Methods 0.000 description 12
- 238000012545 processing Methods 0.000 description 12
- 230000006870 function Effects 0.000 description 11
- 230000008901 benefit Effects 0.000 description 3
- 238000004891 communication Methods 0.000 description 3
- 230000009471 action Effects 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 2
- 238000006243 chemical reaction Methods 0.000 description 2
- 238000001514 detection method Methods 0.000 description 2
- 238000005457 optimization Methods 0.000 description 2
- 238000013519 translation Methods 0.000 description 2
- 101100498818 Arabidopsis thaliana DDR4 gene Proteins 0.000 description 1
- 230000006978 adaptation Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 239000011800 void material Substances 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/10—Program control for peripheral devices
- G06F13/12—Program control for peripheral devices using hardware independent of the central processor, e.g. channel or peripheral processor
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/10—Program control for peripheral devices
- G06F13/12—Program control for peripheral devices using hardware independent of the central processor, e.g. channel or peripheral processor
- G06F13/124—Program control for peripheral devices using hardware independent of the central processor, e.g. channel or peripheral processor where hardware is a sequential transfer control unit, e.g. microprocessor, peripheral processor or state-machine
- G06F13/128—Program control for peripheral devices using hardware independent of the central processor, e.g. channel or peripheral processor where hardware is a sequential transfer control unit, e.g. microprocessor, peripheral processor or state-machine for dedicated transfers to a network
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1668—Details of memory controller
- G06F13/1673—Details of memory controller using buffers
-
- 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/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/5061—Partitioning or combining of resources
- G06F9/5077—Logical partitioning of resources; Management or configuration of virtualized resources
-
- 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/54—Interprogram communication
- G06F9/544—Buffers; Shared memory; Pipes
-
- 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/45579—I/O management, e.g. providing access to device drivers or storage
-
- 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
- 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/45595—Network integration; Enabling network access in virtual machine instances
Abstract
本申请实施例公开了一种数据缓存方法和装置。所述方法包括:获取虚拟网络接口组件的虚拟数据缓冲区的虚拟位置信息,将实体网络接口组件的实体数据缓冲区的实体位置信息指定为所述虚拟位置信息,在将数据存入所述实体数据缓冲区时,根据所述虚拟位置信息进行存储,由于实体网络接口组件的实体数据缓冲区的实体位置信息指定为虚拟位置信息,而不是通过物理设备分配来确定,所以实体网络接口组件接收到数据后,可以直接将接收到的数据存到虚拟网络接口组件指定的数据缓冲区,避免了将数据从实体网络接口组件指定的数据缓冲区拷贝到虚拟网络接口组件指定的数据缓冲区的处理,继而减少了接收数据的耗时,提高了数据接收的网络性能,降低了网络延迟。
Description
技术领域
本申请涉及数据处理技术领域,具体涉及一种数据缓存方法、一种数据处理方法、一种计算机设备、一种计算机可读存储介质。
背景技术
在虚拟网络中,物理机(物理机也可称为物理计算机、计算机设备、主机设备)上模拟出的虚拟机(virtual machine,VM)通过vSwitch(virtual switch,虚拟交换机)提供虚拟交换路由,隧道终结(Tunnel End-Point,TEP)等网络服务。vSwitch是一个纯软件实现,也提供了不错的网络吞吐性能,但是主要问题在于需要占据物理机上一部分CPU,内存资源,不利于物理机的资源利用。
在上述背景下,智能网卡方案产生了,主旨在于下沉vSwitch功能到智能网卡中,释放更多物理机资源给客户,并期望能提供更好的网络吞吐能力。
申请人经研究发现,对于接收报文过程,物理机的网卡接收到发送给虚拟机的报文后,必须先将报文存到网卡驱动指定的数据缓冲区,再将数据拷贝到虚拟机的虚拟网卡指定的数据缓冲区中,导致数据接收过程中需要对数据进行拷贝处理的问题,而这种拷贝处理增加了接收数据时的耗时,减低了数据接收的网络性能,提高了网络延迟。
发明内容
鉴于上述问题,提出了本申请以便提供一种克服上述问题或者至少部分地解决上述问题的数据缓存方法、数据处理方法以及计算机设备、计算机可读存储介质。
依据本申请的一个方面,提供了一种数据缓存方法,包括:
获取虚拟网络接口组件的虚拟数据缓冲区的虚拟位置信息;
将实体网络接口组件的实体数据缓冲区的实体位置信息指定为所述虚拟位置信息;
在将数据存入所述实体数据缓冲区时,根据所述虚拟位置信息进行存储。
可选地,在所述获取虚拟网络接口组件的虚拟数据缓冲区的虚拟位置信息之前,所述方法还包括:
为所述虚拟网络接口组件分配一个虚拟存储空间;
确定所述虚拟存储空间中多个虚拟数据缓冲区的虚拟位置信息。
可选地,所述确定所述虚拟存储空间中多个虚拟数据缓冲区的虚拟位置信息包括:
创建所述虚拟网络接口组件的虚拟接收队列,所述虚拟接收队列包括虚拟缓冲控制信息;
从所述虚拟存储空间获取所述虚拟位置信息;
将所述虚拟位置信息添加至所述虚拟缓冲控制信息。
可选地,所述获取虚拟网络接口组件的数据缓冲区的虚拟位置信息包括:
检测所述虚拟接收队列中的虚拟位置信息。
可选地,在所述检测所述虚拟接收队列中的虚拟位置信息之前,所述方法还包括:
接收所述虚拟网络接口组件初始化完成的通知。
可选地,所述将实体网络接口组件的实体数据缓冲区的实体位置信息指定为所述虚拟位置信息包括:
将所述虚拟位置信息转换成实体物理地址;
根据所述实体物理地址,确定所述实体数据缓冲区的实体位置信息。
可选地,所述根据所述实体物理地址,确定所述实体数据缓冲区的实体位置信息包括:
将所述实体物理地址添加到所述实体数据缓冲区的实体缓冲控制信息。
可选地,在所述将实体网络接口组件的实体数据缓冲区的实体位置信息指定为所述虚拟位置信息之前,所述方法还包括:
创建所述实体缓冲控制信息组成的信息队列,以及空的实体存储空间;
所述将所述实体物理地址添加到所述实体数据缓冲区的实体缓冲控制信息包括:
获取所述信息队列中的实体缓冲控制信息;
将所述实体物理地址按顺序添加到获取的实体缓冲控制信息中;
将所述实体缓冲控制信息存入所述实体存储空间。
可选地,在所述在将数据存入所述实体数据缓冲区时,根据所述虚拟位置信息进行存储之前,所述方法还包括:
获取所述实体存储空间中的实体缓冲控制信息;
创建所述实体网络接口组件的实体接收队列;
将所述实体缓冲控制信息添加到所述实体接收队列。
可选地,所述虚拟网络接口组件与实体网络接口组件的实体接收队列是一一映射的,所述实体接收队列和实体数据缓冲区是一一映射的,所述在将数据存入所述实体数据缓冲区时,根据所述虚拟位置信息进行存储包括:
根据所述数据,确定待发送至的虚拟网络接口组件;
从所述虚拟网络接口组件对应的实体接收队列,获取对应的实体数据缓冲区的实体位置信息;
根据所述实体位置信息,存入所述数据。
可选地,所述从所述虚拟网络接口组件对应的实体接收队列,获取对应的实体数据缓冲区的实体位置信息包括:
获取所述实体接收队列中的实体缓冲控制信息,所述实体缓存控制信息包括实体位置信息;
在所述根据所述实体位置信息,存入所述数据之后,所述方法还包括:
在所述实体缓冲控制信息中,标记接收到数据,以使物理机检测到接收的数据。
可选地,所述方法还包括:
根据所述实体缓冲控制信息,在所述虚拟网络接口组件的虚拟接收队列中的虚拟缓冲控制信息中,标记接收到数据,以使虚拟网络接口组件检测到接收的数据。
可选地,所述方法还包括:
根据所述实体缓存控制信息,通知所述虚拟网络接口组件接收到数据。
相应地,根据本申请的另一方面,还提供了一种数据处理方法,包括:
接收数据存储指令,其中,所述数据存储指令用于将数据存入实体网络接口组件的实体数据缓冲区的的实体位置;
获取所述实体网络接口组件的实体数据缓冲区的实体位置所对应的虚拟网络接口组件的虚拟数据缓冲区的虚拟位置;
将所述数据存入所述虚拟位置。
相应地,根据本申请的另一方面,还提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如上述一个或多个的方法。
相应地,根据本申请的另一方面,还提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如上述一个或多个的方法。
依据本申请实施例,通过获取虚拟网络接口组件的虚拟数据缓冲区的虚拟位置信息,将实体网络接口组件的实体数据缓冲区的实体位置信息指定为所述虚拟位置信息,在将数据存入所述实体数据缓冲区时,根据所述虚拟位置信息进行存储,由于实体网络接口组件的实体数据缓冲区的实体位置信息指定为虚拟位置信息,而不是通过物理设备分配来确定,所以实体网络接口组件接收到数据后,可以直接将接收到的数据存到虚拟网络接口组件指定的数据缓冲区,避免了将数据从实体网络接口组件指定的数据缓冲区拷贝到虚拟网络接口组件指定的数据缓冲区的处理,继而减少了接收数据的耗时,提高了数据接收的网络性能,降低了网络延迟。
上述说明仅是本申请技术方案的概述,为了能够更清楚了解本申请的技术手段,而可依照说明书的内容予以实施,并且为了让本申请的上述和其它目的、特征和优点能够更明显易懂,以下特举本申请的具体实施方式。
附图说明
通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本申请的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
图1示出了部署虚拟机的示意图;
图2示出了数据缓存过程的示意图;
图3示出了根据本申请实施例一的一种数据缓存方法实施例的流程图;
图4示出了根据本申请实施例二的一种数据缓存方法实施例的流程图;
图5示出了根据本申请实施例三的一种数据处理方法实施例的流程图;
图6示出了未经过优化的数据缓存过程的示意图;
图7示出了经过优化的数据缓存过程的示意图;
图8示出了根据本申请实施例四的一种数据缓存装置实施例的结构框图;
图9示出了根据本申请实施例五的一种数据处理装置实施例的结构框图;
图10示出了可被用于实现本公开中所述的各个实施例的示例性系统。
具体实施方式
下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
为使本领域技术人员更好地理解本申请,以下对本申请涉及的概念进行说明:
虚拟网络接口组件包括虚拟网络中连接虚拟机和传输介质的接口,可以接收来自网络的数据供虚拟机使用,具体可以包括任意适用的虚拟网络接口组件,本申请实施例对此不做限制。例如,如图1所示的部署虚拟机的示意图,物理机上采用具备vSwitch功能的智能网卡,物理机上的每个虚拟机都采用virtio-net作为虚拟网卡接口(即虚拟网络接口组件)。
虚拟网络接口组件预先指定虚拟数据缓冲区,用于存储数据、处理数据,例如,virtio-net接口驱动指定位置的内存区域,具体可以包括任意适用的虚拟数据缓冲区,本申请实施例对此不做限制。
对应的,虚拟位置信息用于指定虚拟数据缓冲区的位置,例如,virtio-net接口驱动在内存池中指定的多个虚拟数据缓冲区的内存地址,具体可以包括任意适用的虚拟位置信息,本申请实施例对此不做限制。
实体网络接口组件包括网络中连接物理机和传输介质的接口,可以接收来自网络的数据供物理机使用,具体可以包括任意适用的实体网络接口组件,本申请实施例对此不做限制。例如,如图1所示,物理机采用的具备vSwitch功能的智能网卡,即实体网络接口组件。值得说明的是,由于业界一般都采用标准的virtio-net虚拟网卡接口,而目前智能网卡不支持vertio-net虚拟网卡接口,因此不能把网络上的流量直接送到虚拟机中,而只能送到SRIOV(一种基于硬件的虚拟化解决方案)的VF设备(与物理功能关联的一种功能),物理机上的每个SRIOV的VF设备都和虚拟机的virtio-net接口有一一映射的关系,通过物理机上一个简单的转发程序完成VF设备到virtio-net接口的转换,将虚拟机网络和物理网卡连接起来。
实体网络接口组件预先指定实体数据缓冲区,用于存储数据、处理数据,例如,智能网卡驱动指定位置的内存区域,具体可以包括任意适用的实体数据缓冲区,本申请实施例对此不做限制。
对应的,实体位置信息用于指定实体数据缓冲区的位置,例如,智能网卡驱动在内存池中指定的多个实体数据缓冲区的内存地址,具体可以包括任意适用的实体位置信息,本申请实施例对此不做限制。
在本申请的一种可选实施例中,虚拟机的内核或者运行在虚拟机上的APP(APPlication,应用程序)可以为虚拟网络接口组件分配一个虚拟存储空间,提供给虚拟网络接口组件作为数据的存储区域,虚拟存储空间可以包括多个虚拟数据缓冲区。例如,虚拟机的内核或APP初始化一个mem pool(内存池),即虚拟存储空间,提供给virtio-net接口驱动作为报文的存储区域。
在本申请的一种可选实施例中,需要为虚拟网络接口组件创建虚拟接收队列,用于软件驱动和硬件进行通信,主要存储接收来自网络的报文数据的控制信息。虚拟接收队列的每个元素称为虚拟缓冲控制信息,虚拟缓存控制信息用来描述虚拟数据缓冲区的特征和状态,例如报文长度、数据缓冲区长度等。不同的网络设备定义的虚拟缓冲控制信息的格式和大小不尽相同,但至少包含虚拟数据缓冲区的地址,本申请实施例对此不做限制。
例如,vertio-net接口的驱动进行设备初始化,最后会初始化rxq(receivequeue,接收队列),rxq本质是一个队列,用于软件驱动和硬件进行通信,队列的每个元素称为descriptor(即虚拟缓存控制信息),descriptor是网卡定义的一种数据格式,用于收发报文队列和软件通信,每种网络设备定义descriptor都至少包含数据缓冲区(databuffer)的地址。
在本申请的一种可选实施例中,虚拟位置信息是虚拟机定义的,并非物理机的硬件存储设备上的物理地址(即实体物理地址),包括物理机上的内存地址或硬盘地址等,或者其他任意适用的实体物理地址,本申请实施例对此不做限制。虚拟机的虚拟位置信息可以转换成实体物理地址。
在本申请的一种可选实施例中,实体缓冲控制信息用于描述实体数据缓冲区的特征和状态,例如报文长度、数据缓冲区长度等,不同的网络设备定义的实体缓冲控制信息的格式和大小不尽相同,但至少包含实体数据缓冲区的地址,或者其他任意适用的信息,本申请实施例对此不做限制。
例如,内存池的每个元素不仅只是一个数据缓冲区,每个数据缓冲区都应该包含一个控制结构体,即具有相同类型或不同类型的数据构成的数据集合,在本申请中称为实体缓存控制信息,假设物理机的mem pool(内存池)定义名称为bctl控制结构体:
typedef struct buf ctrl{
void*addr
……
}bctl。
在本申请的一种可选实施例中,信息队列用于存储实体缓存控制信息,也即是说,队列的每个元素都是实体缓冲控制信息。物理机上分配的实体存储空间,用于作为数据的存储区域。
在本申请的一种可选实施例中,需要为实体网络接口组件创建实体接收队列,用于软件驱动和硬件进行通信,主要存储接收来自网络的报文数据的控制信息。实体接收队列的每个元素称为实体缓冲控制信息。
在本申请的一种可选实施例中,由于物理机上采用具备vSwitch功能的智能网卡,智能网卡接收数据后,就可以将针对不同的虚拟机的数据分发到对应的VF设备,VF设备作为智能网卡的出口,需要在物理机上对应有实体接收队列,由于虚拟网络接口组件与VF设备是一一映射的,而VF设备又与实体接收队列一一映射,因此虚拟网络接口组件与实体网络接口组件的实体接收队列是一一映射的。并且实体接收队列和实体数据缓冲区也是一一映射的,以使发送给不同虚拟机的数据可以通过不同的实体接收队列,缓存到不同的实体数据缓存区。
根据本申请的一种实施例,在接收报文过程中,物理机的网卡接收到发送给虚拟机的报文后,必须先将报文存到网卡驱动指定的数据缓冲区,再将数据拷贝到虚拟机的虚拟网卡指定的数据缓冲区中,导致数据接收过程中需要对数据进行拷贝处理的问题。如图2所示的数据缓存过程的示意图,本申请提供了一种数据缓存机制,通过获取虚拟网络接口组件的虚拟数据缓冲区的虚拟位置信息,将实体网络接口组件的实体数据缓冲区的实体位置信息指定为所述虚拟位置信息,在将数据存入所述实体数据缓冲区时,根据所述虚拟位置信息进行存储,由于实体网络接口组件的实体数据缓冲区的实体位置信息指定为虚拟位置信息,而不是通过物理设备分配来确定,所以实体网络接口组件接收到数据后,可以直接将接收到的数据存到虚拟网络接口组件指定的数据缓冲区,避免了将数据从实体网络接口组件指定的数据缓冲区拷贝到虚拟网络接口组件指定的数据缓冲区的处理,继而减少了接收数据的耗时,提高了数据接收的网络性能,降低了网络延迟。本申请适用但不局限于上述应用场景。
参照图3,示出了根据本申请实施例一的一种数据缓存方法实施例的流程图,该方法具体可以包括以下步骤:
步骤101,获取虚拟网络接口组件的虚拟数据缓冲区的虚拟位置信息。
在本申请实施例中,虚拟网络接口组件初始化后,虚拟数据缓冲区的虚拟位置信息就可以被获取。例如,扫描virtio-net接口的rxq队列,获取所有的data buffer(即虚拟数据缓冲区)指针的信息。具体可以包括任意适用的方式获取虚拟位置信息,本申请实施例对此不做限制。
步骤102,将实体网络接口组件的实体数据缓冲区的实体位置信息指定为所述虚拟位置信息;
在本申请实施例中,在实体网络接口组件的初始化过程中,原本是由物理机指定实体位置信息的,导致实体数据缓冲区和虚拟数据缓冲区的位置是不相同的。为了避免将接收到的数据从实体数据缓冲区拷贝到虚拟数据缓冲区,将实体数据缓冲区的实体位置信息直接指定为获取的虚拟位置信息。将实体位置信息指定为虚拟位置信息的方式可以有多种,本申请实施例对此不做限制。
例如,物理机上的转发程序创建一个队列,每个队列的元素都是之前定义的bctl的控制结构体。物理机创建一个空的内存池,里面没有任何data buffer或者控制结构体。物理机的转发程序收到virtio-net接口初始化完成的通知,扫描virtio-net接口的rxq虚拟接收队列,获得所有的data buffer指针的信息。将data buffer的虚拟位置信息转换成物理机的物理地址,然后从队列里面获得不带data buffer的控制结构体bctl,通过赋值将bctl中的实体位置信息赋值为虚拟位置信息转换的物理地址,最后将控制结构体bctl入队列到内存池中,这时,物理机的内存池的data buffer本质上是虚拟机分配的地址。之后,转发程序初始化实体网络接口组件的rxq实体接收队列时,从内存池出队列得到实体位置信息,其实是虚拟机分配的虚拟位置信息。
步骤103,在将数据存入所述实体数据缓冲区时,根据所述虚拟位置信息进行存储。
实体网络接口组件从网络上接收到数据后,数据先缓存在实体网络接口组件上的内存中,然后vSwitch功能根据数据决定应该发送给某个虚拟机。数据在被送给虚拟机之前,需要先存入物理机上的实体数据缓冲区,再由转发程序将数据送给虚拟机。
在本申请实施例中,数据在存入实体数据缓冲区时,读取该虚拟机对应的实体接收队列,从中获得实体数据缓冲区的信息,该实体数据缓冲区是之前初始化过程填充的。接下来,硬件通过DMA(Direct Memory Access,直接内存存取)的方式将数据送到指定的物理机内存中,也即是说,数据存入实体数据缓冲区时,由于实体位置信息被指定为虚拟位置信息,所以数据实际是根据虚拟位置信息进行存储的。之后只需要设置相应的控制信息,表明已经有网络上的数据送达到实体网络接口组件的实体数据缓冲区。转发程序根据控制信息发现有数据送达,转发程序根据数据要送达的虚拟机,相应更新虚拟网络接口组件的控制信息,或者主动通知虚拟网络接口组件,最终虚拟网络接口组件发现有数据送达,就可以通知虚拟机根据虚拟位置信息,到虚拟数据缓冲区取数据。
在本申请实施例中,由于数据在存入实体数据缓冲区时,是根据虚拟位置信息进行存储的,也就是说,实体数据缓冲区和虚拟数据缓冲区在同一位置,对于物理机来说,存入了实体数据缓冲区,对于虚拟机来说,数据已经存入了虚拟数据缓冲区,无需将数据从实体数据缓冲区拷贝到虚拟数据缓冲区,只要虚拟机被通知有数据送达,即可从虚拟数据缓冲区取到数据。
依据本申请实施例,通过获取虚拟网络接口组件的虚拟数据缓冲区的虚拟位置信息,将实体网络接口组件的实体数据缓冲区的实体位置信息指定为所述虚拟位置信息,在将数据存入所述实体数据缓冲区时,根据所述虚拟位置信息进行存储,由于实体网络接口组件的实体数据缓冲区的实体位置信息指定为虚拟位置信息,而不是通过物理设备分配来确定,所以实体网络接口组件接收到数据后,可以直接将接收到的数据存到虚拟网络接口组件指定的数据缓冲区,避免了将数据从实体网络接口组件指定的数据缓冲区拷贝到虚拟网络接口组件指定的数据缓冲区的处理,继而减少了接收数据的耗时,提高了数据接收的网络性能,降低了网络延迟。
参照图4,示出了根据本申请实施例二的一种数据缓存方法实施例的流程图,该方法具体可以包括以下步骤:
步骤201,为所述虚拟网络接口组件分配一个虚拟存储空间。
在本申请实施例中,为了避免数据从实体数据缓冲区拷贝到虚拟数据缓冲区,需要先对初始化过程进行优化。在虚拟机的初始化过程中,包括准备虚拟存储空间的步骤。即先为虚拟网络接口组件分配一个虚拟存储空间,提供给虚拟网络接口组件的驱动,作为数据的存储区域。mem pool包含了虚拟数据缓冲区用于填充报文数据。
例如,在虚拟机的内核或者APP负责初始化一个mem pool(即虚拟存储空间),提供给virtio-net接口的驱动作为报文的存储区域。
步骤202,确定所述虚拟存储空间中多个虚拟数据缓冲区的虚拟位置信息。
在本申请实施例中,虚拟存储空间包含多个虚拟数据缓冲区,虚拟网络接口组件需要先确定多个虚拟数据缓冲区的虚拟位置信息,具体可以从为虚拟网络接口组件分配的虚拟存储空间中不断出队列,获得新的虚拟数据缓冲区的虚拟位置信息。具体可以包括任意适用的方式,本申请实施例对此不做限制。
在本申请的一种实施例中,可选地,确定所述虚拟存储空间中多个虚拟数据缓冲区的虚拟位置信息的一种实现方式可以包括:
子步骤S1,创建所述虚拟网络接口组件的虚拟接收队列,所述虚拟接收队列包括虚拟缓冲控制信息;
子步骤S2,从所述虚拟存储空间获取所述虚拟位置信息;
子步骤S3,将所述虚拟位置信息添加至所述虚拟缓冲控制信息。
例如,virtio-net接口的驱动进行设备初始化,最后会初始化rxq虚拟接收队列。rxq的每个元素称为descriptor,即虚拟缓冲控制信息。初始化rxq队列的过程就包括对每个descriptor填充一个数据缓冲区指针,该指针指向有效的一个虚拟数据缓存区,这里称为GPA(Guest Physical Address,虚拟机的物理地址)。驱动就是通过从mem pool不断dequeue(出队列)获得新的虚拟数据缓冲区的虚拟位置信息,然后填充到descriptor(即虚拟缓冲控制信息)中。
步骤203,接收所述虚拟网络接口组件初始化完成的通知。
在本申请实施例中,虚拟网络接口组件初始化完成后,就可以使能虚拟网络接口组件的虚拟接收队列,准备接收网络上的数据报文。物理机的转发程序收到虚拟网络接口组件初始化完成的通知,之后执行步骤204.
步骤204,检测所述虚拟接收队列中的虚拟位置信息。
在本申请实施例中,接收到虚拟网络接口组件初始化完成的通知之后,扫描检测虚拟网络接口组件的虚拟接收队列,获取所有的虚拟数据缓冲区的虚拟位置信息。例如,扫描virtio-net接口的rxq队列,获得所有data buffer指针的信息,即虚拟位置信息。
步骤205,将所述虚拟位置信息转换成实体物理地址。
在本申请实施例中,虚拟机使用的虚拟数据缓冲区本质来说也是在物理机上,但虚拟机的虚拟位置信息是虚拟机所使用的虚拟数据缓冲区的,经过虚拟化后,与实际在物理机上的实体物理地址是不同的,但存在对应关系。为了确定实际在物理机上的实体物理地址,需要根据虚拟位置信息根据虚拟位置关系和实体物理地址之间的对应关系进行转换。例如,将data buffer的GPA转换成HPA(Host Physical Address,物理机的物理地址)。
步骤206,根据所述实体物理地址,确定所述实体数据缓冲区的实体位置信息。
在本申请实施例中,虚拟位置信息转换成实体物理地址之后,可以根据该实体物理地址,确定实体数据缓冲区的实体位置信息,具体可以通过赋值来使实体位置信息等于实体物理地址。
在本申请的一种实施例中,可选地,根据所述实体物理地址,确定所述实体数据缓冲区的实体位置信息的一种实现方式可以包括:将所述实体物理地址添加到所述实体数据缓冲区的实体缓冲控制信息。
实体数据缓冲区的实体缓冲控制信息中包括实体位置信息,通过赋值操作另实体位置信息等于实体物理地址,即将实体物理地址添加到实体缓冲控制信息。具体可以通过任意适用的方式,将实体物理地址添加到实体数据缓冲区的实体缓冲控制信息,本申请实施例对此不做限制。
在本申请的一种实施例中,可选地,在将实体网络接口组件的实体数据缓冲区的实体位置信息指定为所述虚拟位置信息之前,还可以包括:创建所述实体缓冲控制信息组成的信息队列,以及空的实体存储空间;相应的,将所述实体物理地址添加到所述实体数据缓冲区的实体缓冲控制信息的一种实现方式可以包括:获取所述信息队列中的实体缓冲控制信息;将所述实体物理地址按顺序添加到获取的实体缓冲控制信息中;将所述实体缓冲控制信息存入所述实体存储空间。
例如,virtio-net接口初始化后,物理机上的转发程序创建一个队列(queue),即信息队列,每个队列的元素都是定义的data buffer(实体数据缓冲)的控制结构体bctl,也可称为描述符,即实体缓冲控制信息。还要创建一个空的mem pool,里面没有任何databuffer或者控制结构体。在将虚拟位置信息转换为实体物理地址后,从信息队列里获得不带data buffer的控制结构体bctl,令bctl.addr=GPA,最后enqueue(入队列)到mem pool(即实体存储空间)中去,这时,mem pool的data buffer本质上时虚拟机分配的虚拟位置信息。
步骤207,获取所述实体存储空间中的实体缓冲控制信息。
在本申请实施例中,在初始化实体网络接口组件的实体接收队列时,从实体存储空间获取实体缓冲控制信息,其中包括有实体位置信息,本质是指定的虚拟位置信息。
例如,转发程序初始化智能网卡(即实体网络接口组件)的rxq实体接收队列时,从mem pool(即实体存储空间)dequeue(出队列),descriptor(即实体缓冲控制信息)填充的data buffer指针其实是虚拟机的虚拟位置信息。
步骤208,创建所述实体网络接口组件的实体接收队列。
在本申请实施例中,实体网络接口组件初始化过程,包括实体接收队列的初始化,即创建实体接收队列。实体接收队列可以包括多个,针对不同的虚拟网络接口组件,对应创建各自的实体接收队列。
步骤209,将所述实体缓冲控制信息添加到所述实体接收队列。
在本申请实施例中,将获取的实体缓冲控制信息添加到实体接收队列,例如,智能网卡的rxq实体接收队列中,将实体缓冲控制信息以descriptor格式添加都rxq中,即descriptor填充的data buffer(即实体数据缓冲区)的指针其实是虚拟机的data buffer(即虚拟数据缓冲区)指针。
步骤210,根据所述数据,确定待发送至的虚拟网络接口组件。
在本申请实施例中,虚拟网络接口组件和实体网络接口组件都初始化完成并进行使能后,就可以开始接收网络上的报文数据了。
在本申请实施例中,虚拟网络接口组件与实体网络接口组件的实体接收队列是一一映射的,实体接收队列和实体数据缓冲区是一一映射的。由于实体网络接口组件具备了vSwitch功能,也就是说在实体网络接口组件上就要决定报文数据要发送给哪个虚拟机,而不是先发送到物理机,由物理机判断报文数据要发送给哪个虚拟机。因此,要根据数据,确定待发送至的虚拟网络接口组件,也就是待发送至的虚拟机。
例如,智能网卡从网络上接收到一个报文数据,缓存在网卡的内存中,然后vSwitch功能根据报文头部决定应该发送给某个虚拟机,也就是某个虚拟网络接口组件。
步骤211,从所述虚拟网络接口组件对应的实体接收队列,获取对应的实体数据缓冲区的实体位置信息。
在本申请实施例中,由于虚拟网络接口组件与实体网络接口组件的实体接收队列是一一映射的,也就是说,不同的虚拟网络接口组件对应不同的实体接收队列。为了让数据可以发送到待发送至的虚拟网络接口组件,需要从虚拟网络接口组件对应的实体接收队列,获取对应的实体数据缓冲区的实体位置信息。具体可以包括任意适用的方式,获取实体位置信息,本申请实施例对此不做限制。
步骤212,根据所述实体位置信息,存入所述数据。
在本申请实施例中,获取的实体位置信息,本质是虚拟位置信息,因此根据实体位置信息,存入数据,即根据虚拟位置信息,对数据进行存储。
在本申请的一种实施例中,可选地,从所述虚拟网络接口组件对应的实体接收队列,获取对应的实体数据缓冲区的实体位置信息的一种实现方式可以包括:
获取所述实体接收队列中的实体缓冲控制信息,所述实体缓存控制信息包括实体位置信息;
在所述根据所述实体位置信息,存入所述数据之后,还可以包括:
在所述实体缓冲控制信息中,标记接收到数据,以使物理机检测到接收的数据。
例如,物理机上,读取对应的实体接收队列中的descriptor(即实体缓冲控制信息),获得实体数据缓冲区的信息,该实体数据缓冲区是之前初始化过程填充的,其中包括实体位置信息。在存入数据后,为了使物理机发现有数据存入,可以在descriptor中相应的控制位进行设置,标记接收到数据,这样物理机的转发程序才能检测到接收的数据。
在本申请的一种实施例中,可选地,还可以包括:根据所述实体缓冲控制信息,在所述虚拟网络接口组件的虚拟接收队列中的虚拟缓冲控制信息中,标记接收到数据,以使虚拟网络接口组件检测到接收的数据。
为了使虚拟网络接口组件检测到接收的数据,当检测到实体缓冲控制信息标记了接收到数据后,在虚拟网络接口组件的虚拟接收队列中的虚拟缓冲控制信息中也标记接收到数据。例如,转发程序发现rxq(即实体接收队列)中的descriptor(即实体缓冲控制信息)更新,更新的标记,标记接收到报文数据,经过一定的逻辑检查,例如,报文长度是否符合要求,报文的类型检查等,之后决定送到virtio-net接口(即虚拟网络接口组件)的rxq(即虚拟接收队列)中,转发程序更新virtio-net接口相应的descriptor(即虚拟缓冲控制信息),更改相应控制位的状态以标记接收到数据。
在本申请的一种实施例中,可选地,还可以包括:根据所述实体缓存控制信息,通知所述虚拟网络接口组件接收到数据。
在所述虚拟网络接口组件的虚拟接收队列中的虚拟缓冲控制信息中,标记接收到数据属于一种被动的方式,使虚拟网络接口组件检测到接收的数据,需要虚拟网络接口组件检测虚拟缓冲控制信息,才能发现接收到数据。另一种实现方式可以通过中断的方式,直接通知虚拟网络接口组件接收到数据。最终虚拟网络接口组件发现收到报文数据,通知虚拟机内核或APP对数据进行处理,整个接收过程结束。
依据本申请实施例,通过为虚拟网络接口组件分配一个虚拟存储空间,确定虚拟存储空间中多个虚拟数据缓冲区的虚拟位置信息,接收虚拟网络接口组件初始化完成的通知,检测虚拟接收队列中的虚拟位置信息,将虚拟位置信息转换成实体物理地址,根据实体物理地址,确定实体数据缓冲区的实体位置信息,获取实体存储空间中的实体缓冲控制信息,创建实体网络接口组件的实体接收队列,将实体缓冲控制信息添加到实体接收队列,根据数据,确定待发送至的虚拟网络接口组件,从虚拟网络接口组件对应的实体接收队列,获取对应的实体数据缓冲区的实体位置信息,根据实体位置信息,存入数据,由于实体网络接口组件的实体数据缓冲区的实体位置信息指定为虚拟位置信息,而不是通过物理设备分配来确定,所以实体网络接口组件接收到数据后,可以直接将接收到的数据存到虚拟网络接口组件指定的数据缓冲区,避免了将数据从实体网络接口组件指定的数据缓冲区拷贝到虚拟网络接口组件指定的数据缓冲区的处理,继而减少了接收数据的耗时,提高了数据接收的网络性能,降低了网络延迟。
参照图5,示出了根据本申请实施例三的一种数据处理方法实施例的流程图,该方法具体可以包括以下步骤:
步骤301,接收数据存储指令。
在本申请实施例中,数据存储指令用于将数据存入实体网络接口组件的实体数据缓冲区的实体位置。其中将实体数据缓冲区的位置,记为实体位置,相应地,虚拟网络接口组件的虚拟数据缓冲区的位置,记为虚拟位置。
步骤302,获取所述实体网络接口组件的实体数据缓冲区的实体位置所对应的虚拟网络接口组件的虚拟数据缓冲区的虚拟位置。
在本申请实施例中,智能网卡(即实体网络接口组件)实现vSwitch功能后,在将数据存入实体数据缓冲区时,需要针对不同的虚拟机存入各自对应的实体数据缓冲区。为了避免将接收到的数据从实体数据缓冲区拷贝到虚拟数据缓冲区,预先将实体数据缓冲区的实体位置直接指定为对应虚拟机的虚拟数据缓冲区的虚拟位置。在接收到数据存储指令后,获取实体网络接口组件的实体数据缓冲区的实体位置所对应的虚拟网络接口组件的虚拟数据缓冲区的虚拟位置。
一种实现方式可以包括:将对应的虚拟机的虚拟位置存储在实体网络接口组件的实体数据缓冲区的实体位置,在将数据存入实体位置时,就可以从实体位置获取到对应的虚拟位置。具体可以包括任意适用的实现方式,本申请实施例对此不做限制。
步骤303,将所述数据存入所述虚拟位置。
在本申请实施例中,获取虚拟位置后,将数据存入虚拟位置。
依据本申请实施例,通过接收数据存储指令,获取所述实体网络接口组件的实体数据缓冲区的实体位置所对应的虚拟网络接口组件的虚拟数据缓冲区的虚拟位置,将所述数据存入所述虚拟位置,由于实体网络接口组件的实体数据缓冲区的实体位置指定为了虚拟位置,而不是通过物理设备分配来确定,所以实体网络接口组件接收到数据后,可以直接将接收到的数据存到虚拟网络接口组件指定的数据缓冲区,避免了将数据从实体网络接口组件指定的数据缓冲区拷贝到虚拟网络接口组件指定的数据缓冲区的处理,继而减少了接收数据的耗时,提高了数据接收的网络性能,降低了网络延迟。
为使本领域技术人员更好地理解本申请,以下通过具体的示例对本申请的一种实现方式进行说明。
如图6所示的未经过优化的数据缓存过程的示意图。
在接收数据之前,先对虚拟网络接口组件和实体网络接口组件进行初始化。
虚拟网络接口组件初始化。初始化过程包括准备mem pool,用于提供data buffer(即虚拟数据缓冲区)。其中,VM(即虚拟机)包括virtio-net RX ring(即虚拟接收队列),队列中的元素descriptor(虚拟缓冲控制信息)包括GPA(即虚拟位置信息)。VM还包括GuestMemory(即虚拟机可用的存储),在Guest Memory中分配mem pool(即虚拟存储空间),确定mem pool中的data buffer。
实体网络接口组件初始化。初始化过程包括准备mem pool,用于提供data buffer(即实体数据缓冲区)。其中,Host(即物理机)包括NIC RX ring(即实体接收队列),队列中的元素descriptor(实体缓冲控制信息)包括Addr(即实体位置信息)。Host还包括HostMemory(即物理机可用的存储),在Host Memory中分配mem pool(即实体存储空间),确定mem pool中的data buffer。
接收报文数据的过程如下:
步骤1,Smart NIC(即实体网络接口组件)接收到报文,存入Smart NIC上的databuffer中。Smart NIC上包括vSwitch功能。
步骤2,通过DMA的方式将数据从Smart NIC写入到Host内存中。读取实体接收队列中的实体缓冲控制信息,根据其中的实体位置信息,硬件通过DMA的方式将报文数据送到指定的Host内存(即实体数据缓冲区)中,并设置descriptor相应的控制位,表明已经有网络报文数据送达到实体接收队列。
步骤3,将数据从实体数据缓冲区拷贝到虚拟数据缓冲区。物理机上的转发程序发现virtio-net的虚拟接收队列中相应的descriptor更新,发现收到了报文数据,经过一定逻辑检查之后,决定送到virtio-net的某个rxq中。转发程序读取virtio-net接口的rxq(即虚拟接收队列)中相应的descriptor的信息,获取VM中data buffer的地址。转发程序从Host memory的data buffer拷贝数据到VM的data buffer中,并更新descriptor的相应控制位(即虚拟缓冲控制信息),并且有必要的话通知virtio-net接口。最终,virtio-net接口发送收到一个报文数据,通知VM消费数据,整个接收过程结束。
如图7所示的经过优化的数据缓存过程的示意图。
在初始化过程中:
步骤1.1,虚拟网络接口组件初始化,VM里的内核或APP准备一个mem pool,mempool包含了data buffer(即虚拟数据缓冲区),用于填充报文数据。virtio-net接口初始化rxq虚拟接收队列后,使能rxq虚拟接收队列。
步骤1.2,扫描virtio-net RX ring(即虚拟接收队列),获得所有的data buffer指针(即虚拟数据缓冲区的虚拟位置信息)。
步骤1.3,转发程序创建一个队列(queue),里面每个元素都是一个定义为bctl的控制结构体。
步骤1.4,从queue获得bctl控制结构体,根据步骤1.2获得的data buffer指针填充bctl.addr(即实体位置信息),enqueue(入队列)到mem pool中。具体包括将步骤1.2获得的data buffer的GPA转换成HPA,然后从queue里面获得不带data buffer的控制结构体bctl,令bctl.addr=HPA,最后enqueue(入队列)都mem pool中,这是,mem pool的databuffer本质上时VM分配的地址。
步骤1.5,,Smart NIC(即实体网络接口组件)驱动初始化rxq(即实体接收队列),从mem pool(即实体存储空间)获得VM的data buffer指针(即虚拟位置信息)。转发程序初始化NIC网卡的rxq时,从mem pool dequeuer(出队列),实体接收队列中的descriptor填充的data buffer指针,其实就是VM准备的data buffer指针。NIC网卡初始化rxq实体接收队列完成,使能rxq实体接收队列,可以开始接收网络报文。
在接收数据过程中:
步骤2.1,Smart NIC(即实体网络接口组件)接收到报文,存入Smart NIC上的databuffer中。Smart NIC上包括vSwitch功能。vSwitch功能根据报文头部决定应该发送给某个VM。
步骤2.2,DMA方式将数据存入虚拟机内存。读取VM对应的实体接收队列中的descriptor(即实体缓冲控制信息),获得实体数据缓冲区的信息,该实体数据缓冲区是之前初始化过程填充的。接下来,硬件通过DMA方式将报文数据送到指定的Host内存中,并设置实体接收队列中的descriptor相应的控制位,表明已经有网络报文数据送达到rxq实体接收队列中。
步骤2.3,更新virtio-net RX ring中的descriptor(即虚拟缓冲控制信息)。Host上的转发程序发现rxq实体接收队列的descriptor更新,发现收到了报文数据,经过一定逻辑检查之后,决定送到virtio-net接口的rxq(即虚拟接收队列)中去。转发程序更新virtio-net RX ring中的descriptor,并且有必要的话,通知virtio-net接口,最终virtio-net接口会发现收到了报文数据,通知虚拟机消费数据,整个接收过程结束。
参照图8,示出了根据本申请实施例四的一种数据缓存装置实施例的结构框图,具体可以包括:
信息获取模块401,用于获取虚拟网络接口组件的虚拟数据缓冲区的虚拟位置信息;
信息指定模块402,用于将实体网络接口组件的实体数据缓冲区的实体位置信息指定为所述虚拟位置信息;
数据存储模块403,用于在将数据存入所述实体数据缓冲区时,根据所述虚拟位置信息进行存储。
在本申请的一种实施例中,可选地,所述装置还包括:
空间分配模块,用于在所述获取虚拟网络接口组件的虚拟数据缓冲区的虚拟位置信息之前,为所述虚拟网络接口组件分配一个虚拟存储空间;
信息确定模块,用于确定所述虚拟存储空间中多个虚拟数据缓冲区的虚拟位置信息。
在本申请的一种实施例中,可选地,所述信息确定模块包括:
虚拟队列创建子模块,用于创建所述虚拟网络接口组件的虚拟接收队列,所述虚拟接收队列包括虚拟缓冲控制信息;
信息获取子模块,用于从所述虚拟存储空间获取所述虚拟位置信息;
信息添加子模块,用于将所述虚拟位置信息添加至所述虚拟缓冲控制信息。
在本申请的一种实施例中,可选地,所述信息获取模块包括:
信息检测子模块,用于检测所述虚拟接收队列中的虚拟位置信息。
在本申请的一种实施例中,可选地,所述装置还包括:
通知接收模块,用于在所述检测所述虚拟接收队列中的虚拟位置信息之前,接收所述虚拟网络接口组件初始化完成的通知。
在本申请的一种实施例中,可选地,所述信息指定模块包括:
地址转换子模块,用于将所述虚拟位置信息转换成实体物理地址;
信息确定子模块,用于根据所述实体物理地址,确定所述实体数据缓冲区的实体位置信息。
在本申请的一种实施例中,可选地,所述信息确定子模块包括:
信息添加单元,用于将所述实体物理地址添加到所述实体数据缓冲区的实体缓冲控制信息。
在本申请的一种实施例中,可选地,所述装置还包括:
空间创建模块,用于在所述将实体网络接口组件的实体数据缓冲区的实体位置信息指定为所述虚拟位置信息之前,创建所述实体缓冲控制信息组成的信息队列,以及空的实体存储空间;
所述信息添加单元包括:
信息获取子单元,用于获取所述信息队列中的实体缓冲控制信息;
地址添加子单元,用于将所述实体物理地址按顺序添加到获取的实体缓冲控制信息中;
信息存入子单元,用于将所述实体缓冲控制信息存入所述实体存储空间。
在本申请的一种实施例中,可选地,所述装置还包括:
控制信息获取模块,用于在所述在将数据存入所述实体数据缓冲区时,根据所述虚拟位置信息进行存储之前,获取所述实体存储空间中的实体缓冲控制信息;
实体队列创建模块,用于创建所述实体网络接口组件的实体接收队列;
控制信息添加模块,用于将所述实体缓冲控制信息添加到所述实体接收队列。
在本申请的一种实施例中,可选地,所述虚拟网络接口组件与实体网络接口组件的实体接收队列是一一映射的,所述实体接收队列和实体数据缓冲区是一一映射的,所述数据存储模块包括:
组件确定子模块,用于根据所述数据,确定待发送至的虚拟网络接口组件;
实体信息获取子模块,用于从所述虚拟网络接口组件对应的实体接收队列,获取对应的实体数据缓冲区的实体位置信息;
数据存入子模块,用于根据所述实体位置信息,存入所述数据。
在本申请的一种实施例中,可选地,所述实体信息获取子模块包括:
实体控制信息获取单元,用于获取所述实体接收队列中的实体缓冲控制信息,所述实体缓存控制信息包括实体位置信息;
所述装置还包括:
第一标记模块,用于在所述根据所述实体位置信息,存入所述数据之后,在所述实体缓冲控制信息中,标记接收到数据,以使物理机检测到接收的数据。
在本申请的一种实施例中,可选地,所述装置还包括:
第二标记模块,用于根据所述实体缓冲控制信息,在所述虚拟网络接口组件的虚拟接收队列中的虚拟缓冲控制信息中,标记接收到数据,以使虚拟网络接口组件检测到接收的数据。
在本申请的一种实施例中,可选地,所述装置还包括:
通知模块,用于根据所述实体缓存控制信息,通知所述虚拟网络接口组件接收到数据。
依据本申请实施例,通过获取虚拟网络接口组件的虚拟数据缓冲区的虚拟位置信息,将实体网络接口组件的实体数据缓冲区的实体位置信息指定为所述虚拟位置信息,在将数据存入所述实体数据缓冲区时,根据所述虚拟位置信息进行存储,由于实体网络接口组件的实体数据缓冲区的实体位置信息指定为虚拟位置信息,而不是通过物理设备分配来确定,所以实体网络接口组件接收到数据后,可以直接将接收到的数据存到虚拟网络接口组件指定的数据缓冲区,避免了将数据从实体网络接口组件指定的数据缓冲区拷贝到虚拟网络接口组件指定的数据缓冲区的处理,继而减少了接收数据的耗时,提高了数据接收的网络性能,降低了网络延迟。
参照图9,示出了根据本申请实施例五的一种数据处理装置实施例的结构框图,具体可以包括:
指令接收模块501,用于接收数据存储指令,其中,所述数据存储指令用于将数据存入实体网络接口组件的实体数据缓冲区的的实体位置;
位置获取模块502,用于获取所述实体网络接口组件的实体数据缓冲区的实体位置所对应的虚拟网络接口组件的虚拟数据缓冲区的虚拟位置;
数据存入模块503,用于将所述数据存入所述虚拟位置。
依据本申请实施例,通过接收数据存储指令,获取所述实体网络接口组件的实体数据缓冲区的实体位置所对应的虚拟网络接口组件的虚拟数据缓冲区的虚拟位置,将所述数据存入所述虚拟位置,由于实体网络接口组件的实体数据缓冲区的实体位置指定为了虚拟位置,而不是通过物理设备分配来确定,所以实体网络接口组件接收到数据后,可以直接将接收到的数据存到虚拟网络接口组件指定的数据缓冲区,避免了将数据从实体网络接口组件指定的数据缓冲区拷贝到虚拟网络接口组件指定的数据缓冲区的处理,继而减少了接收数据的耗时,提高了数据接收的网络性能,降低了网络延迟。
对于装置实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
本公开的实施例可被实现为使用任意适当的硬件,固件,软件,或及其任意组合进行想要的配置的系统。图10示意性地示出了可被用于实现本公开中所述的各个实施例的示例性系统(或装置)600。
对于一个实施例,图10示出了示例性系统600,该系统具有一个或多个处理器602、被耦合到(一个或多个)处理器602中的至少一个的系统控制模块(芯片组)604、被耦合到系统控制模块604的系统存储器606、被耦合到系统控制模块604的非易失性存储器(NVM)/存储设备608、被耦合到系统控制模块604的一个或多个输入/输出设备610,以及被耦合到系统控制模块606的网络接口612。
处理器602可包括一个或多个单核或多核处理器,处理器602可包括通用处理器或专用处理器(例如图形处理器、应用处理器、基频处理器等)的任意组合。在一些实施例中,系统600能够作为本申请实施例中所述的浏览器。
在一些实施例中,系统600可包括具有指令的一个或多个计算机可读介质(例如,系统存储器606或NVM/存储设备608)以及与该一个或多个计算机可读介质相合并被配置为执行指令以实现模块从而执行本公开中所述的动作的一个或多个处理器602。
对于一个实施例,系统控制模块604可包括任意适当的接口控制器,以向(一个或多个)处理器602中的至少一个和/或与系统控制模块604通信的任意适当的设备或组件提供任意适当的接口。
系统控制模块604可包括存储器控制器模块,以向系统存储器606提供接口。存储器控制器模块可以是硬件模块、软件模块和/或固件模块。
系统存储器606可被用于例如为系统600加载和存储数据和/或指令。对于一个实施例,系统存储器606可包括任意适当的易失性存储器,例如,适当的DRAM。在一些实施例中,系统存储器606可包括双倍数据速率类型四同步动态随机存取存储器(DDR4SDRAM)。
对于一个实施例,系统控制模块604可包括一个或多个输入/输出控制器,以向NVM/存储设备608及(一个或多个)输入/输出设备610提供接口。
例如,NVM/存储设备608可被用于存储数据和/或指令。NVM/存储设备608可包括任意适当的非易失性存储器(例如,闪存)和/或可包括任意适当的(一个或多个)非易失性存储设备(例如,一个或多个硬盘驱动器(HDD)、一个或多个光盘(CD)驱动器和/或一个或多个数字通用光盘(DVD)驱动器)。
NVM/存储设备608可包括在物理上作为系统600被安装在其上的设备的一部分的存储资源,或者其可被该设备访问而不必作为该设备的一部分。例如,NVM/存储设备608可通过网络经由(一个或多个)输入/输出设备610进行访问。
(一个或多个)输入/输出设备610可为系统600提供接口以与任意其他适当的设备通信,输入/输出设备610可以包括通信组件、音频组件、传感器组件等。网络接口612可为系统600提供接口以通过一个或多个网络通信,系统600可根据一个或多个无线网络标准和/或协议中的任意标准和/或协议来与无线网络的一个或多个组件进行无线通信,例如接入基于通信标准的无线网络,如WiFi,2G或3G,或它们的组合进行无线通信。
对于一个实施例,(一个或多个)处理器602中的至少一个可与系统控制模块604的一个或多个控制器(例如,存储器控制器模块)的逻辑封装在一起。对于一个实施例,(一个或多个)处理器602中的至少一个可与系统控制模块604的一个或多个控制器的逻辑封装在一起以形成系统级封装(SiP)。对于一个实施例,(一个或多个)处理器602中的至少一个可与系统控制模块604的一个或多个控制器的逻辑集成在同一模具上。对于一个实施例,(一个或多个)处理器602中的至少一个可与系统控制模块604的一个或多个控制器的逻辑集成在同一模具上以形成片上系统(SoC)。
在各个实施例中,系统600可以但不限于是:浏览器、工作站、台式计算设备或移动计算设备(例如,膝上型计算设备、手持计算设备、平板电脑、上网本等)。在各个实施例中,系统600可具有更多或更少的组件和/或不同的架构。例如,在一些实施例中,系统600包括一个或多个摄像机、键盘、液晶显示器(LCD)屏幕(包括触屏显示器)、非易失性存储器端口、多个天线、图形芯片、专用集成电路(ASIC)和扬声器。
其中,如果显示器包括触摸面板,显示屏可以被实现为触屏显示器,以接收来自用户的输入信号。触摸面板包括一个或多个触摸传感器以感测触摸、滑动和触摸面板上的手势。所述触摸传感器可以不仅感测触摸或滑动动作的边界,而且还检测与所述触摸或滑动操作相关的持续时间和压力。
本申请实施例还提供了一种非易失性可读存储介质,该存储介质中存储有一个或多个模块(programs),该一个或多个模块被应用在终端设备时,可以使得该终端设备执行本申请实施例中各方法步骤的指令(instructions)。
在一个示例中提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如本申请实施例的方法。
在一个示例中还提供了一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如本申请实施例的一个或多个的方法。
本申请实施例公开了一种数据缓存方法和装置,示例1包括一种数据缓存方法,包括:
获取虚拟网络接口组件的虚拟数据缓冲区的虚拟位置信息;
将实体网络接口组件的实体数据缓冲区的实体位置信息指定为所述虚拟位置信息;
在将数据存入所述实体数据缓冲区时,根据所述虚拟位置信息进行存储。
示例2可包括示例1所述的方法,其中,在所述获取虚拟网络接口组件的虚拟数据缓冲区的虚拟位置信息之前,所述方法还包括:
为所述虚拟网络接口组件分配一个虚拟存储空间;
确定所述虚拟存储空间中多个虚拟数据缓冲区的虚拟位置信息。
示例3可包括示例1和/或示例2所述的方法,其中,所述确定所述虚拟存储空间中多个虚拟数据缓冲区的虚拟位置信息包括:
创建所述虚拟网络接口组件的虚拟接收队列,所述虚拟接收队列包括虚拟缓冲控制信息;
从所述虚拟存储空间获取所述虚拟位置信息;
将所述虚拟位置信息添加至所述虚拟缓冲控制信息。
示例4可包括示例1-示例3一个或多个所述的方法,其中,所述获取虚拟网络接口组件的数据缓冲区的虚拟位置信息包括:
检测所述虚拟接收队列中的虚拟位置信息。
示例5可包括示例1-示例4一个或多个所述的方法,其中,在所述检测所述虚拟接收队列中的虚拟位置信息之前,所述方法还包括:
接收所述虚拟网络接口组件初始化完成的通知。
示例6可包括示例1-示例5一个或多个所述的方法,其中,所述将实体网络接口组件的实体数据缓冲区的实体位置信息指定为所述虚拟位置信息包括:
将所述虚拟位置信息转换成实体物理地址;
根据所述实体物理地址,确定所述实体数据缓冲区的实体位置信息。
示例7可包括示例1-示例6一个或多个所述的方法,其中,所述根据所述实体物理地址,确定所述实体数据缓冲区的实体位置信息包括:
将所述实体物理地址添加到所述实体数据缓冲区的实体缓冲控制信息。
示例8可包括示例1-示例7一个或多个所述的方法,其中,在所述将实体网络接口组件的实体数据缓冲区的实体位置信息指定为所述虚拟位置信息之前,所述方法还包括:
创建所述实体缓冲控制信息组成的信息队列,以及空的实体存储空间;
所述将所述实体物理地址添加到所述实体数据缓冲区的实体缓冲控制信息包括:
获取所述信息队列中的实体缓冲控制信息;
将所述实体物理地址按顺序添加到获取的实体缓冲控制信息中;
将所述实体缓冲控制信息存入所述实体存储空间。
示例9可包括示例1-示例8一个或多个所述的方法,其中,在所述在将数据存入所述实体数据缓冲区时,根据所述虚拟位置信息进行存储之前,所述方法还包括:
获取所述实体存储空间中的实体缓冲控制信息;
创建所述实体网络接口组件的实体接收队列;
将所述实体缓冲控制信息添加到所述实体接收队列。
示例10可包括示例1-示例9一个或多个所述的方法,其中,所述虚拟网络接口组件与实体网络接口组件的实体接收队列是一一映射的,所述实体接收队列和实体数据缓冲区是一一映射的,所述在将数据存入所述实体数据缓冲区时,根据所述虚拟位置信息进行存储包括:
根据所述数据,确定待发送至的虚拟网络接口组件;
从所述虚拟网络接口组件对应的实体接收队列,获取对应的实体数据缓冲区的实体位置信息;
根据所述实体位置信息,存入所述数据。
示例11可包括示例1-示例10一个或多个所述的方法,其中,所述从所述虚拟网络接口组件对应的实体接收队列,获取对应的实体数据缓冲区的实体位置信息包括:
获取所述实体接收队列中的实体缓冲控制信息,所述实体缓存控制信息包括实体位置信息;
在所述根据所述实体位置信息,存入所述数据之后,所述方法还包括:
在所述实体缓冲控制信息中,标记接收到数据,以使物理机检测到接收的数据。
示例12可包括示例1-示例11一个或多个所述的方法,其中,所述方法还包括:
根据所述实体缓冲控制信息,在所述虚拟网络接口组件的虚拟接收队列中的虚拟缓冲控制信息中,标记接收到数据,以使虚拟网络接口组件检测到接收的数据。
示例13可包括示例1-示例12一个或多个所述的方法,其中,所述方法还包括:
根据所述实体缓存控制信息,通知所述虚拟网络接口组件接收到数据。
示例14包括一种数据处理方法,包括:
接收数据存储指令,其中,所述数据存储指令用于将数据存入实体网络接口组件的实体数据缓冲区的的实体位置;
获取所述实体网络接口组件的实体数据缓冲区的实体位置所对应的虚拟网络接口组件的虚拟数据缓冲区的虚拟位置;
将所述数据存入所述虚拟位置。
示例15包括一种数据缓存装置,包括:
信息获取模块,用于获取虚拟网络接口组件的虚拟数据缓冲区的虚拟位置信息;
信息指定模块,用于将实体网络接口组件的实体数据缓冲区的实体位置信息指定为所述虚拟位置信息;
数据存储模块,用于在将数据存入所述实体数据缓冲区时,根据所述虚拟位置信息进行存储。
示例16可包括示例15所述的装置,其中,所述装置还包括:
空间分配模块,用于在所述获取虚拟网络接口组件的虚拟数据缓冲区的虚拟位置信息之前,为所述虚拟网络接口组件分配一个虚拟存储空间;
信息确定模块,用于确定所述虚拟存储空间中多个虚拟数据缓冲区的虚拟位置信息。
示例17可包括示例15和/或示例16所述的装置,其中,所述信息确定模块包括:
虚拟队列创建子模块,用于创建所述虚拟网络接口组件的虚拟接收队列,所述虚拟接收队列包括虚拟缓冲控制信息;
信息获取子模块,用于从所述虚拟存储空间获取所述虚拟位置信息;
信息添加子模块,用于将所述虚拟位置信息添加至所述虚拟缓冲控制信息。
示例18可包括示例15-示例17一个或多个所述的装置,其中,所述信息获取模块包括:
信息检测子模块,用于检测所述虚拟接收队列中的虚拟位置信息。
示例19可包括示例15-示例18一个或多个所述的装置,其中,所述装置还包括:
通知接收模块,用于在所述检测所述虚拟接收队列中的虚拟位置信息之前,接收所述虚拟网络接口组件初始化完成的通知。
示例20可包括示例15-示例19一个或多个所述的装置,其中,所述信息指定模块包括:
地址转换子模块,用于将所述虚拟位置信息转换成实体物理地址;
信息确定子模块,用于根据所述实体物理地址,确定所述实体数据缓冲区的实体位置信息。
示例21可包括示例15-示例20一个或多个所述的装置,其中,所述信息确定子模块包括:
信息添加单元,用于将所述实体物理地址添加到所述实体数据缓冲区的实体缓冲控制信息。
示例22可包括示例15-示例21一个或多个所述的装置,其中,所述装置还包括:
空间创建模块,用于在所述将实体网络接口组件的实体数据缓冲区的实体位置信息指定为所述虚拟位置信息之前,创建所述实体缓冲控制信息组成的信息队列,以及空的实体存储空间;
所述信息添加单元包括:
信息获取子单元,用于获取所述信息队列中的实体缓冲控制信息;
地址添加子单元,用于将所述实体物理地址按顺序添加到获取的实体缓冲控制信息中;
信息存入子单元,用于将所述实体缓冲控制信息存入所述实体存储空间。
示例23可包括示例15-示例22一个或多个所述的装置,其中,所述装置还包括:
控制信息获取模块,用于在所述在将数据存入所述实体数据缓冲区时,根据所述虚拟位置信息进行存储之前,获取所述实体存储空间中的实体缓冲控制信息;
实体队列创建模块,用于创建所述实体网络接口组件的实体接收队列;
控制信息添加模块,用于将所述实体缓冲控制信息添加到所述实体接收队列。
示例24可包括示例15-示例23一个或多个所述的装置,其中,所述虚拟网络接口组件与实体网络接口组件的实体接收队列是一一映射的,所述实体接收队列和实体数据缓冲区是一一映射的,所述数据存储模块包括:
组件确定子模块,用于根据所述数据,确定待发送至的虚拟网络接口组件;
实体信息获取子模块,用于从所述虚拟网络接口组件对应的实体接收队列,获取对应的实体数据缓冲区的实体位置信息;
数据存入子模块,用于根据所述实体位置信息,存入所述数据。
示例25可包括示例15-示例24一个或多个所述的装置,其中,所述实体信息获取子模块包括:
实体控制信息获取单元,用于获取所述实体接收队列中的实体缓冲控制信息,所述实体缓存控制信息包括实体位置信息;
所述装置还包括:
第一标记模块,用于在所述根据所述实体位置信息,存入所述数据之后,在所述实体缓冲控制信息中,标记接收到数据,以使物理机检测到接收的数据。
示例26可包括示例15-示例25一个或多个所述的装置,其中,所述装置还包括:
第二标记模块,用于根据所述实体缓冲控制信息,在所述虚拟网络接口组件的虚拟接收队列中的虚拟缓冲控制信息中,标记接收到数据,以使虚拟网络接口组件检测到接收的数据。
示例27可包括示例15-示例26一个或多个所述的装置,其中,所述装置还包括:
通知模块,用于根据所述实体缓存控制信息,通知所述虚拟网络接口组件接收到数据。
示例28包括一种数据处理装置,包括:
指令接收模块,用于接收数据存储指令,其中,所述数据存储指令用于将数据存入实体网络接口组件的实体数据缓冲区的的实体位置;
位置获取模块,用于获取所述实体网络接口组件的实体数据缓冲区的实体位置所对应的虚拟网络接口组件的虚拟数据缓冲区的虚拟位置;
数据存入模块,用于将所述数据存入所述虚拟位置。
示例29包括一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如示例1-14一个或多个的方法。
示例30包括一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如示例1-14一个或多个的方法。
虽然某些实施例是以说明和描述为目的的,各种各样的替代、和/或、等效的实施方案、或计算来达到同样的目的实施例示出和描述的实现,不脱离本申请的实施范围。本申请旨在覆盖本文讨论的实施例的任何修改或变化。因此,显然本文描述的实施例仅由权利要求和它们的等同物来限定。
Claims (16)
1.一种数据缓存方法,其特征在于,包括:
获取虚拟网络接口组件的虚拟数据缓冲区的虚拟位置信息;
将实体网络接口组件的实体数据缓冲区的实体位置信息指定为所述虚拟位置信息;
在将数据存入所述实体数据缓冲区时,根据所述虚拟位置信息进行存储。
2.根据权利要求1所述的方法,其特征在于,在所述获取虚拟网络接口组件的虚拟数据缓冲区的虚拟位置信息之前,所述方法还包括:
为所述虚拟网络接口组件分配一个虚拟存储空间;
确定所述虚拟存储空间中多个虚拟数据缓冲区的虚拟位置信息。
3.根据权利要求2所述的方法,其特征在于,所述确定所述虚拟存储空间中多个虚拟数据缓冲区的虚拟位置信息包括:
创建所述虚拟网络接口组件的虚拟接收队列,所述虚拟接收队列包括虚拟缓冲控制信息;
从所述虚拟存储空间获取所述虚拟位置信息;
将所述虚拟位置信息添加至所述虚拟缓冲控制信息。
4.根据权利要求3所述的方法,其特征在于,所述获取虚拟网络接口组件的数据缓冲区的虚拟位置信息包括:
检测所述虚拟接收队列中的虚拟位置信息。
5.根据权利要求4所述的方法,其特征在于,在所述检测所述虚拟接收队列中的虚拟位置信息之前,所述方法还包括:
接收所述虚拟网络接口组件初始化完成的通知。
6.根据权利要求1所述的方法,其特征在于,所述将实体网络接口组件的实体数据缓冲区的实体位置信息指定为所述虚拟位置信息包括:
将所述虚拟位置信息转换成实体物理地址;
根据所述实体物理地址,确定所述实体数据缓冲区的实体位置信息。
7.根据权利要求6所述的方法,其特征在于,所述根据所述实体物理地址,确定所述实体数据缓冲区的实体位置信息包括:
将所述实体物理地址添加到所述实体数据缓冲区的实体缓冲控制信息。
8.根据权利要求7所述的方法,其特征在于,在所述将实体网络接口组件的实体数据缓冲区的实体位置信息指定为所述虚拟位置信息之前,所述方法还包括:
创建所述实体缓冲控制信息组成的信息队列,以及空的实体存储空间;
所述将所述实体物理地址添加到所述实体数据缓冲区的实体缓冲控制信息包括:
获取所述信息队列中的实体缓冲控制信息;
将所述实体物理地址按顺序添加到获取的实体缓冲控制信息中;
将所述实体缓冲控制信息存入所述实体存储空间。
9.根据权利要求8所述的方法,其特征在于,在所述在将数据存入所述实体数据缓冲区时,根据所述虚拟位置信息进行存储之前,所述方法还包括:
获取所述实体存储空间中的实体缓冲控制信息;
创建所述实体网络接口组件的实体接收队列;
将所述实体缓冲控制信息添加到所述实体接收队列。
10.根据权利要求1所述的方法,其特征在于,所述虚拟网络接口组件与实体网络接口组件的实体接收队列是一一映射的,所述实体接收队列和实体数据缓冲区是一一映射的,所述在将数据存入所述实体数据缓冲区时,根据所述虚拟位置信息进行存储包括:
根据所述数据,确定待发送至的虚拟网络接口组件;
从所述虚拟网络接口组件对应的实体接收队列,获取对应的实体数据缓冲区的实体位置信息;
根据所述实体位置信息,存入所述数据。
11.根据权利要求10所述的方法,其特征在于,所述从所述虚拟网络接口组件对应的实体接收队列,获取对应的实体数据缓冲区的实体位置信息包括:
获取所述实体接收队列中的实体缓冲控制信息,所述实体缓存控制信息包括实体位置信息;
在所述根据所述实体位置信息,存入所述数据之后,所述方法还包括:
在所述实体缓冲控制信息中,标记接收到数据,以使物理机检测到接收的数据。
12.根据权利要求11所述的方法,其特征在于,所述方法还包括:
根据所述实体缓冲控制信息,在所述虚拟网络接口组件的虚拟接收队列中的虚拟缓冲控制信息中,标记接收到数据,以使虚拟网络接口组件检测到接收的数据。
13.根据权利要求11所述的方法,其特征在于,所述方法还包括:
根据所述实体缓存控制信息,通知所述虚拟网络接口组件接收到数据。
14.一种数据处理方法,其特征在于,包括:
接收数据存储指令,其中,所述数据存储指令用于将数据存入实体网络接口组件的实体数据缓冲区的的实体位置;
获取所述实体网络接口组件的实体数据缓冲区的实体位置所对应的虚拟网络接口组件的虚拟数据缓冲区的虚拟位置;
将所述数据存入所述虚拟位置。
15.一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如权利要求1-14一个或多个的方法。
16.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如权利要求1-14一个或多个的方法。
Priority Applications (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810539153.1A CN110554977A (zh) | 2018-05-30 | 2018-05-30 | 数据缓存方法、数据处理方法、计算机设备、存储介质 |
EP19811105.6A EP3813313A4 (en) | 2018-05-30 | 2019-05-21 | DATA CACHING METHOD, DATA PROCESSING METHOD, COMPUTER DEVICE, STORAGE MEDIA |
JP2020566722A JP7403478B2 (ja) | 2018-05-30 | 2019-05-21 | データバッファリング方法、データ処理方法、コンピュータデバイス、および記憶媒体 |
PCT/CN2019/087799 WO2019228228A1 (zh) | 2018-05-30 | 2019-05-21 | 数据缓存方法、数据处理方法、计算机设备、存储介质 |
US17/100,548 US20210103459A1 (en) | 2018-05-30 | 2020-11-20 | Data buffering method, data processing method, computer device, storage medium |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810539153.1A CN110554977A (zh) | 2018-05-30 | 2018-05-30 | 数据缓存方法、数据处理方法、计算机设备、存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN110554977A true CN110554977A (zh) | 2019-12-10 |
Family
ID=68697435
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810539153.1A Pending CN110554977A (zh) | 2018-05-30 | 2018-05-30 | 数据缓存方法、数据处理方法、计算机设备、存储介质 |
Country Status (5)
Country | Link |
---|---|
US (1) | US20210103459A1 (zh) |
EP (1) | EP3813313A4 (zh) |
JP (1) | JP7403478B2 (zh) |
CN (1) | CN110554977A (zh) |
WO (1) | WO2019228228A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111698167A (zh) * | 2020-04-01 | 2020-09-22 | 新华三大数据技术有限公司 | 一种报文处理方法及装置 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102467408A (zh) * | 2010-11-12 | 2012-05-23 | 阿里巴巴集团控股有限公司 | 一种虚拟机数据的访问方法和设备 |
CN103677674A (zh) * | 2013-12-27 | 2014-03-26 | 华为技术有限公司 | 一种数据处理方法及装置 |
US20140219287A1 (en) * | 2013-02-01 | 2014-08-07 | International Business Machines Corporation | Virtual switching based flow control |
CN106612306A (zh) * | 2015-10-22 | 2017-05-03 | 中兴通讯股份有限公司 | 虚拟机的数据共享方法及装置 |
CN107995129A (zh) * | 2017-11-30 | 2018-05-04 | 锐捷网络股份有限公司 | 一种nfv报文转发方法和装置 |
Family Cites Families (24)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6434620B1 (en) * | 1998-08-27 | 2002-08-13 | Alacritech, Inc. | TCP/IP offload network interface device |
US7620955B1 (en) * | 2001-06-08 | 2009-11-17 | Vmware, Inc. | High-performance virtual machine networking |
US7496699B2 (en) * | 2005-06-17 | 2009-02-24 | Level 5 Networks, Inc. | DMA descriptor queue read and cache write pointer arrangement |
US7721299B2 (en) | 2005-08-05 | 2010-05-18 | Red Hat, Inc. | Zero-copy network I/O for virtual hosts |
EP1977571A2 (en) * | 2006-01-12 | 2008-10-08 | Broadcom Israel R&D | Method and system for protocol offload and direct i/o with i/o sharing in a virtualized network environment |
US7657659B1 (en) * | 2006-11-30 | 2010-02-02 | Vmware, Inc. | Partial copying of data to transmit buffer for virtual network device |
US8667187B2 (en) * | 2008-09-15 | 2014-03-04 | Vmware, Inc. | System and method for reducing communication overhead between network interface controllers and virtual machines |
US20100223419A1 (en) * | 2009-03-02 | 2010-09-02 | International Business Machines Corporation | Copy circumvention in a virtual network environment |
US9008113B2 (en) * | 2010-12-20 | 2015-04-14 | Solarflare Communications, Inc. | Mapped FIFO buffering |
US8484392B2 (en) * | 2011-05-31 | 2013-07-09 | Oracle International Corporation | Method and system for infiniband host channel adaptor quality of service |
CN102591702B (zh) | 2011-12-31 | 2015-04-15 | 华为技术有限公司 | 虚拟化处理方法及相关装置和计算机系统 |
JP5748349B2 (ja) | 2012-03-16 | 2015-07-15 | 株式会社日立製作所 | 仮想計算機の制御方法及び仮想計算機システム |
US9288163B2 (en) * | 2013-03-15 | 2016-03-15 | Avago Technologies General Ip (Singapore) Pte. Ltd. | Low-latency packet receive method for networking devices |
US9317444B2 (en) * | 2013-03-15 | 2016-04-19 | Vmware, Inc. | Latency reduction for direct memory access operations involving address translation |
US9075557B2 (en) * | 2013-05-15 | 2015-07-07 | SanDisk Technologies, Inc. | Virtual channel for data transfers between devices |
CN103346981B (zh) * | 2013-06-28 | 2016-08-10 | 华为技术有限公司 | 虚拟交换方法、相关装置和计算机系统 |
US10261814B2 (en) * | 2014-06-23 | 2019-04-16 | Intel Corporation | Local service chaining with virtual machines and virtualized containers in software defined networking |
US9361145B1 (en) * | 2014-06-27 | 2016-06-07 | Amazon Technologies, Inc. | Virtual machine state replication using DMA write records |
US9747122B2 (en) * | 2015-04-16 | 2017-08-29 | Google Inc. | Virtual machine systems |
JP6579916B2 (ja) * | 2015-10-28 | 2019-09-25 | 株式会社日立製作所 | 仮想計算機間の通信経路制御方法および計算機システム |
JP2017108231A (ja) * | 2015-12-08 | 2017-06-15 | 富士通株式会社 | 通信制御プログラム、通信制御方法及び情報処理装置 |
US10178054B2 (en) * | 2016-04-01 | 2019-01-08 | Intel Corporation | Method and apparatus for accelerating VM-to-VM network traffic using CPU cache |
CN108243118B (zh) * | 2016-12-27 | 2020-06-26 | 华为技术有限公司 | 转发报文的方法和物理主机 |
CN107608806A (zh) * | 2017-09-25 | 2018-01-19 | 郑州云海信息技术有限公司 | 一种虚拟机间快速访问传输数据的系统及方法 |
-
2018
- 2018-05-30 CN CN201810539153.1A patent/CN110554977A/zh active Pending
-
2019
- 2019-05-21 WO PCT/CN2019/087799 patent/WO2019228228A1/zh unknown
- 2019-05-21 JP JP2020566722A patent/JP7403478B2/ja active Active
- 2019-05-21 EP EP19811105.6A patent/EP3813313A4/en active Pending
-
2020
- 2020-11-20 US US17/100,548 patent/US20210103459A1/en active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102467408A (zh) * | 2010-11-12 | 2012-05-23 | 阿里巴巴集团控股有限公司 | 一种虚拟机数据的访问方法和设备 |
US20140219287A1 (en) * | 2013-02-01 | 2014-08-07 | International Business Machines Corporation | Virtual switching based flow control |
CN103677674A (zh) * | 2013-12-27 | 2014-03-26 | 华为技术有限公司 | 一种数据处理方法及装置 |
CN106612306A (zh) * | 2015-10-22 | 2017-05-03 | 中兴通讯股份有限公司 | 虚拟机的数据共享方法及装置 |
CN107995129A (zh) * | 2017-11-30 | 2018-05-04 | 锐捷网络股份有限公司 | 一种nfv报文转发方法和装置 |
Non-Patent Citations (1)
Title |
---|
MIKE RAPOPORT: ""Zero-Copy Receive for vhost"", 《HTTPS://WWW.YOUTUBE.COM/WATCH?V=SZA5H7OD634》 * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111698167A (zh) * | 2020-04-01 | 2020-09-22 | 新华三大数据技术有限公司 | 一种报文处理方法及装置 |
CN111698167B (zh) * | 2020-04-01 | 2023-04-07 | 新华三大数据技术有限公司 | 一种报文处理方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
EP3813313A1 (en) | 2021-04-28 |
WO2019228228A1 (zh) | 2019-12-05 |
JP7403478B2 (ja) | 2023-12-22 |
JP2021525983A (ja) | 2021-09-27 |
US20210103459A1 (en) | 2021-04-08 |
EP3813313A4 (en) | 2022-03-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11256445B2 (en) | Virtual disk file format conversion method and apparatus | |
US9734085B2 (en) | DMA transmission method and system thereof | |
US9176765B2 (en) | Virtual machine system and a method for sharing a graphics card amongst virtual machines | |
TWI331282B (en) | Address space emulation method, processor, computer system, and computer-readable storage medium | |
WO2017024783A1 (zh) | 一种虚拟化方法、装置和系统 | |
EP3125126A1 (en) | Data processing system and data processing method | |
US20150143031A1 (en) | Method for writing data into storage device and storage device | |
US11397697B2 (en) | Core-to-core communication | |
JP7053713B2 (ja) | 低電力コンピュータイメージング | |
CN111831588A (zh) | 一种存储设备访问方法、装置和系统 | |
JP2013515983A (ja) | 仮想化環境においてi/o処理を行う方法および装置 | |
CN108287804B (zh) | 一种i2c控制器驱动方法及系统 | |
US20220050795A1 (en) | Data processing method, apparatus, and device | |
WO2023201987A1 (zh) | 请求处理方法、装置、设备及介质 | |
WO2018103022A1 (zh) | 帧缓存实现方法、装置、电子设备和计算机程序产品 | |
CN116774933A (zh) | 存储设备的虚拟化处理方法、桥接设备、系统及介质 | |
CN112765084A (zh) | 计算机设备、虚拟化加速设备、数据传输方法及存储介质 | |
US10216664B2 (en) | Remote resource access method and switching device | |
TW201333828A (zh) | 以中斷資料模擬訊息發訊中斷之方法 | |
CN115827506A (zh) | 数据写入方法、数据读取方法、装置、处理核和处理器 | |
US10521389B2 (en) | Method and apparatus for accessing non-volatile memory as byte addressable memory | |
CN109857553B (zh) | 内存管理方法及装置 | |
CN110554977A (zh) | 数据缓存方法、数据处理方法、计算机设备、存储介质 | |
US11249934B2 (en) | Data access method and apparatus | |
JP2015197802A (ja) | 情報処理装置、情報処理方法及びプログラム |
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 | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20191210 |