CN117632799A - 数据处理方法、装置、设备及存储介质 - Google Patents
数据处理方法、装置、设备及存储介质 Download PDFInfo
- Publication number
- CN117632799A CN117632799A CN202311661939.8A CN202311661939A CN117632799A CN 117632799 A CN117632799 A CN 117632799A CN 202311661939 A CN202311661939 A CN 202311661939A CN 117632799 A CN117632799 A CN 117632799A
- Authority
- CN
- China
- Prior art keywords
- data
- module
- data processing
- kernel
- circular buffer
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 238000003672 processing method Methods 0.000 title claims abstract description 36
- 239000000872 buffer Substances 0.000 claims abstract description 168
- 238000012545 processing Methods 0.000 claims abstract description 149
- 238000000034 method Methods 0.000 claims abstract description 66
- 230000006870 function Effects 0.000 claims description 67
- 230000008569 process Effects 0.000 claims description 41
- 230000007246 mechanism Effects 0.000 claims description 17
- 230000004044 response Effects 0.000 claims description 12
- 230000007717 exclusion Effects 0.000 claims description 11
- 238000012546 transfer Methods 0.000 claims description 3
- 230000005540 biological transmission Effects 0.000 description 9
- 238000010586 diagram Methods 0.000 description 5
- 238000005516 engineering process Methods 0.000 description 4
- 238000004891 communication Methods 0.000 description 3
- 238000004590 computer program Methods 0.000 description 3
- 230000006978 adaptation Effects 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 230000018109 developmental process Effects 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 238000013519 translation Methods 0.000 description 2
- 239000012792 core layer Substances 0.000 description 1
- 239000010410 layer Substances 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000006798 recombination Effects 0.000 description 1
- 238000005215 recombination Methods 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 230000011218 segmentation Effects 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
Classifications
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Information Transfer Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请提供一种数据处理方法、装置、设备及存储介质,所述方法包括:若确定满足数据处理条件,确定数据处理类型;所述数据处理类型为接收数据或发送数据;响应于所述数据处理类型为接收数据,选择与第一循环缓冲区关联的至少一个内核线程从所述第一循环缓冲区读取第一目标数据;并将所述第一目标数据通过虚拟网卡和数据桥转发至物理网卡;响应于数据处理类型为发送数据,选择与第二循环缓冲区关联的至少一个内核线程将第二目标数据写入至所述第二循环缓冲区;并向虚拟内核模块发送写入完成通知,以使所述虚拟内核模块向虚拟机操作系统发送数据读取通知。本申请的数据处理方法,降低了出现高速缓存丢失问题的次数。
Description
技术领域
本申请涉及计算机技术领域,尤其涉及一种数据处理方法、装置、设备及存储介质。
背景技术
Linux内核在设计vhost(Virtual Host,虚拟主机)这个核心层时,为了保证其他vhost设备,如vhost_blk,vhost_net,vhost_scsi,可以基于此模块开发,所以在对于vhostworker thread(操作系统中一个内核线程)的工作进行设计时,定义为处理vhost这层的vhost_dev(代表一种抽象后端设备)链表上挂的vhost_work(执行任务)。
目前,vhost_dev的发展越来越多,会出现一个vhost worker thread同时处理多个vring queue(循环缓冲区)数据的情况。而采用一个内核线程同时处理多个循环缓冲区中数据,会导致高速缓存丢失问题出现次数较多。
发明内容
本申请提供一种数据处理方法、装置、设备及存储介质,用以解决目前一个内核线程同时处理多个循环缓冲区中数据,会导致高速缓存丢失问题出现次数较多的问题。
本申请第一方面提供一种数据处理方法,包括:
若确定满足数据处理条件,确定数据处理类型;所述数据处理类型为接收数据或发送数据;
响应于所述数据处理类型为接收数据,选择与第一循环缓冲区关联的至少一个内核线程从所述第一循环缓冲区读取第一目标数据;并将所述第一目标数据通过虚拟网卡和数据桥转发至物理网卡;
响应于数据处理类型为发送数据,选择与第二循环缓冲区关联的至少一个内核线程将第二目标数据写入至所述第二循环缓冲区;并向虚拟内核模块发送写入完成通知,以使所述虚拟内核模块向虚拟机操作系统发送数据读取通知。
进一步地,如上所述的方法,所述若确定满足数据处理条件,确定数据处理类型,包括:
若接收到虚拟内核模块发送的读取通知,则确定满足数据处理条件;
根据所述读取通知确定数据处理类型为接收数据。
进一步地,如上所述的方法,宿主机操作系统中的后端驱动模块包括:多个抽象后端子模块;每个抽象后端子模块配置至少一个内核线程;
至少一个抽象后端子模块为接收子模块,所述接收子模块用于读取所述第一循环缓冲区中的第一目标数据;至少一个抽象后端子模块为发送子模块,所述发送子模块用于将第二目标数据写入至所述第二循环缓冲区。
进一步地,如上所述的方法,宿主机操作系统中的后端驱动模块包括:两个抽象后端子模块;每个抽象后端子模块配置一个内核线程;其中一个抽象后端子模块为接收子模块,所述接收子模块配置有接收函数;
所述选择与第一循环缓冲区关联的至少一个内核线程从所述第一循环缓冲区读取第一目标数据,包括:
基于接收子模块对应的内核线程从接收子模块中获取所述接收函数;
通过接收子模块对应的内核线程基于所述接收函数读取所述第一循环缓冲区中的第一目标数据。
进一步地,如上所述的方法,宿主机操作系统中的后端驱动模块包括:至少三个抽象后端子模块;每个抽象后端子模块配置一个内核线程;其中至少两个抽象后端子模块为接收子模块,所述接收子模块配置有接收函数;
所述选择与第一循环缓冲区关联的至少一个内核线程从所述第一循环缓冲区读取第一目标数据,包括:
确定接收子模块对应的空闲线程;所述空闲线程为处于空闲状态的内核线程;
若空闲线程的数量为多个,则基于线程互斥机制分配多个空闲线程从所述第一循环缓冲区读取第一目标数据;其中,对第一目标数据的读取处理基于所述接收函数。
进一步地,如上所述的方法,所述若确定满足数据处理条件,确定数据处理类型,包括:
若接收到虚拟网卡发送的第二目标数据,则确定满足数据处理条件;
根据第二目标数据确定数据处理类型为发送数据。
进一步地,如上所述的方法,宿主机操作系统中的后端驱动模块包括:两个抽象后端子模块;每个抽象后端子模块配置一个内核线程;其中一个抽象后端子模块为发送子模块,所述发送子模块配置有发送函数;
所述选择与第二循环缓冲区关联的至少一个内核线程将第二目标数据写入至所述第二循环缓冲区,包括:
基于发送子模块对应的内核线程从发送子模块中获取所述发送函数;
通过发送子模块对应的内核线程基于所述发送函数将第二目标数据写入所述第二循环缓冲区。
进一步地,如上所述的方法,宿主机操作系统中的后端驱动模块包括:至少三个抽象后端子模块;每个抽象后端子模块配置一个内核线程;其中至少两个抽象后端子模块为发送子模块,所述发送子模块配置有发送函数;
所述选择与第二循环缓冲区关联的至少一个内核线程将第二目标数据写入至所述第二循环缓冲区,包括:
确定发送子模块对应的空闲线程;所述空闲线程为处于空闲状态的内核线程;
若空闲线程的数量为多个,则基于线程互斥机制分配多个空闲线程将第二目标数据写入所述第二循环缓冲区;其中,对第二目标数据的写入处理基于所述发送函数。
本申请第二方面提供一种数据处理装置,包括:
确定模块,用于若确定满足数据处理条件,确定数据处理类型;所述数据处理类型为接收数据或发送数据;
接收模块,用于响应于所述数据处理类型为接收数据,选择与第一循环缓冲区关联的至少一个内核线程从所述第一循环缓冲区读取第一目标数据;并将所述第一目标数据通过虚拟网卡和数据桥转发至物理网卡;
发送模块,用于响应于数据处理类型为发送数据,选择与第二循环缓冲区关联的至少一个内核线程将第二目标数据写入至所述第二循环缓冲区;并向虚拟内核模块发送写入完成通知,以使所述虚拟内核模块向虚拟机操作系统发送数据读取通知。
进一步地,如上所述的装置,所述确定模块具体用于:
若接收到虚拟内核模块发送的读取通知,则确定满足数据处理条件;根据所述读取通知确定数据处理类型为接收数据。
进一步地,如上所述的装置,宿主机操作系统中的后端驱动模块包括:多个抽象后端子模块;每个抽象后端子模块配置至少一个内核线程;
至少一个抽象后端子模块为接收子模块,所述接收子模块用于读取所述第一循环缓冲区中的第一目标数据;至少一个抽象后端子模块为发送子模块,所述发送子模块用于将第二目标数据写入至所述第二循环缓冲区。
进一步地,如上所述的装置,宿主机操作系统中的后端驱动模块包括:两个抽象后端子模块;每个抽象后端子模块配置一个内核线程;其中一个抽象后端子模块为接收子模块,所述接收子模块配置有接收函数;
所述接收模块在选择与第一循环缓冲区关联的至少一个内核线程从所述第一循环缓冲区读取第一目标数据时,具体用于:
基于接收子模块对应的内核线程从接收子模块中获取所述接收函数;通过接收子模块对应的内核线程基于所述接收函数读取所述第一循环缓冲区中的第一目标数据。
进一步地,如上所述的装置,宿主机操作系统中的后端驱动模块包括:至少三个抽象后端子模块;每个抽象后端子模块配置一个内核线程;其中至少两个抽象后端子模块为接收子模块,所述接收子模块配置有接收函数;
所述接收模块在选择与第一循环缓冲区关联的至少一个内核线程从所述第一循环缓冲区读取第一目标数据时,具体用于:
确定接收子模块对应的空闲线程;所述空闲线程为处于空闲状态的内核线程;若空闲线程的数量为多个,则基于线程互斥机制分配多个空闲线程从所述第一循环缓冲区读取第一目标数据;其中,对第一目标数据的读取处理基于所述接收函数。
进一步地,如上所述的装置,所述确定模块具体用于:
若接收到虚拟网卡发送的第二目标数据,则确定满足数据处理条件;根据第二目标数据确定数据处理类型为发送数据。
进一步地,如上所述的装置,宿主机操作系统中的后端驱动模块包括:两个抽象后端子模块;每个抽象后端子模块配置一个内核线程;其中一个抽象后端子模块为发送子模块,所述发送子模块配置有发送函数;
所述发送模块在选择与第二循环缓冲区关联的至少一个内核线程将第二目标数据写入至所述第二循环缓冲区时,具体用于:
基于发送子模块对应的内核线程从发送子模块中获取所述发送函数;通过发送子模块对应的内核线程基于所述发送函数将第二目标数据写入所述第二循环缓冲区。
进一步地,如上所述的装置,宿主机操作系统中的后端驱动模块包括:至少三个抽象后端子模块;每个抽象后端子模块配置一个内核线程;其中至少两个抽象后端子模块为发送子模块,所述发送子模块配置有发送函数;
所述发送模块在选择与第二循环缓冲区关联的至少一个内核线程将第二目标数据写入至所述第二循环缓冲区时,具体用于:
确定发送子模块对应的空闲线程;所述空闲线程为处于空闲状态的内核线程;若空闲线程的数量为多个,则基于线程互斥机制分配多个空闲线程将第二目标数据写入所述第二循环缓冲区;其中,对第二目标数据的写入处理基于所述发送函数。
本申请第三方面提供一种数据处理设备,包括:处理器及存储器;
所述处理器及所述存储器电路互连;
所述存储器存储计算机执行指令;
所述处理器执行所述存储器存储的计算机执行指令,以实现如第一方面任一项所述的数据处理方法。
本申请第四方面提供一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机执行指令,所述计算机执行指令被处理器执行时用于实现第一方面任一项所述的数据处理方法。
本申请第五方面提供一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现第一方面任一项所述的数据处理方法。
本申请提供的一种数据处理方法、装置、设备及存储介质,所述方法包括:若确定满足数据处理条件,确定数据处理类型;所述数据处理类型为接收数据或发送数据;响应于所述数据处理类型为接收数据,选择与第一循环缓冲区关联的至少一个内核线程从所述第一循环缓冲区读取第一目标数据;并将所述第一目标数据通过虚拟网卡和数据桥转发至物理网卡;响应于数据处理类型为发送数据,选择与第二循环缓冲区关联的至少一个内核线程将第二目标数据写入至所述第二循环缓冲区;并向虚拟内核模块发送写入完成通知,以使所述虚拟内核模块向虚拟机操作系统发送数据读取通知。本申请的数据处理方法,通过设置多个内核线程处理多个循环缓冲区中数据,每个循环缓冲区关联至少一个内核线程,使用于接收数据的内核线程读取第一循环缓冲区中数据,用于发送数据的内核线程将数据写入第二循环缓冲区,从而使内核线程处理数据时仅会一直访问同一片内存区域,降低了出现高速缓存丢失问题的次数。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本申请的实施例,并与说明书一起用于解释本申请的原理。
图1为可以实现本申请实施例的数据处理方法的场景图;
图2为本申请一实施例提供的数据处理方法的流程示意图;
图3为本申请另一实施例提供的数据处理方法的流程示意图;
图4为本申请又一实施例提供的数据处理方法的流程示意图;
图5为本申请一实施例提供的数据处理装置的结构示意图;
图6为本申请提供的数据处理设备的结构示意图。
通过上述附图,已示出本申请明确的实施例,后文中将有更详细的描述。这些附图和文字描述并不是为了通过任何方式限制本申请构思的范围,而是通过参考特定实施例为本领域技术人员说明本申请的概念。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。
下面以具体地实施例对本申请的技术方案进行详细说明。下面这几个具体的实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例中不再赘述。下面将结合附图,对本申请的实施例进行描述。
术语解释:
虚拟化技术:虚拟化是一种资源管理技术,它将计算机的各种实体资源(CPU、内存、存储、网络等)予以抽象和转化出来,并提供分割、重新组合,以达到最大化利用物理资源的目的,虚拟化技术大概分为全虚拟化,半虚拟化,设备辅助虚拟化。
qemu-kvm:qemu(Quick EMUlator,虚拟操作系统模拟器),kvm(Kernel-BasedVirtual Machines,一种虚拟化技术)即上述的虚拟内核模块,qemu-kvm相结合为一种虚拟化实现方案。
Virtio:半虚拟化的具体实现接口。
Guest os:虚拟机内运行的操作系统,即虚拟机操作系统。
宿主机:服务器。
前端:Guest os内运行的驱动。
后端:宿主机上运行的驱动。
Vhost:Virtual Host,虚拟主机,模拟后端设备的一个通用框架。
vhost_dev:用来抽象,代表一个后端设备,即抽象后端子模块。
vhost_net:具体的一个后端设备,基于vhost开发,是vhost_dev的实例化,用于虚拟化领域模拟软件后端,其数据结构上继承vhost_dev,即后端驱动模块。
worker thread:操作系统中一个内核线程。
vhost_work:用来抽象worker thread的一次工作。
vring queue:一个循环缓冲区,用于存放数据,用于模拟真实物理网卡队列,即第一循环缓冲区和第二循环缓冲区。
Tap设备:即虚拟网卡,可以模拟一个物理的以太网接口。
Bridge:数据桥,用于连接虚拟网卡和物理网卡,以转发数据。
为了清楚理解本申请的技术方案,首先对现有技术的方案进行详细介绍。虚拟机跟后端设备通讯的桥梁是vring queue,而此vring queue是以page(页)对齐的内存区域,不同的vring queue使用不同的页表条目访问。页表条目会缓存在TLB(TranslationLookaside Buffer,转译后备缓冲器)中,通过TLB可以加速查表,找到物理地址,从而读取数据。如果TLB中缓存的页表过多,TLB会清除一些页表,再缓存些新的页表。由于内核中的任务,都会缓存页表到TLB中,导致TLB中资源紧张,每次任务切换或者任务停止时,TLB都会刷掉无用的缓存页表。如果当前任务的页表没有缓存到TLB中,那访问当前内存区域时,就会导致TLB cache miss(高速缓存丢失),使性能下降。
目前,以vhost_net为例,其使用两个vring queue模拟一个物理网卡队列,分别模拟发送和接收。而两个vring queue内存布局不在一个page(页)内,因此这个vhost worker处理这两个队列里的数据时会根据队列里数据情况,一会处理发送队列,一会处理接收队列的数据,这两个队列的页表也需要常驻在TLB缓存中。如果TLB中缓存的页表过多,硬件会清除一些页表,再缓存新的页表,从而可能导致当前任务的页表没有缓存到TLB中,出现高速缓存丢失的问题。
所以针对现有技术中一个内核线程同时处理多个循环缓冲区中数据,会导致高速缓存丢失问题出现次数较多的问题,发明人在研究中发现,为了解决该问题,可以通过特定方式将内核线程的工作内容分开,并增加并发机制,使一个内核线程始终与一个vringqueue循环缓冲区相关联,从而使内核线程处理数据时仅会一直访问同一片内存区域,降低高速缓存丢失问题出现次数。
具体的,若确定满足数据处理条件,确定数据处理类型。数据处理类型为接收数据或发送数据。
响应于数据处理类型为接收数据,选择与第一循环缓冲区关联的至少一个内核线程从第一循环缓冲区读取第一目标数据。并将第一目标数据通过虚拟网卡和数据桥转发至物理网卡。
响应于数据处理类型为发送数据,选择与第二循环缓冲区关联的至少一个内核线程将第二目标数据写入至第二循环缓冲区。并向虚拟内核模块发送写入完成通知,以使虚拟内核模块向虚拟机操作系统发送数据读取通知。
本申请的数据处理方法,通过设置多个内核线程处理多个循环缓冲区中数据,每个循环缓冲区关联至少一个内核线程,使用于接收数据的内核线程读取第一循环缓冲区中数据,用于发送数据的内核线程将数据写入第二循环缓冲区,从而使内核线程处理数据时仅会一直访问同一片内存区域,降低了出现高速缓存丢失问题的次数。
发明人基于上述的创造性发现,提出了本申请的技术方案。
下面对本申请实施例提供的数据处理方法的应用场景进行介绍。如图1所示,其中,1为宿主机操作系统,2为虚拟机操作系统,3为物理网卡,11为后端驱动模块,13为虚拟内核模块,14为抽象后端子模块,15为虚拟网卡,17为数据桥。其中,连接方式如图所示。每个抽象后端子模块14都配置有对应内核线程。循环缓冲区包括第一循环缓冲区和第二循环缓冲器,其中第一循环缓冲区为发送队列,第二循环缓冲区为接收队列。
示例性的,物理网卡3的数据传输至虚拟机操作系统2的步骤具体如下:
物理网卡3将第二目标数据经由数据桥17、虚拟网卡15发送至后端驱动模块11,此时,后端驱动模块11确定满足数据处理条件,确定数据处理类型为发送数据。后端驱动模块11选择与第二循环缓冲区关联的至少一个内核线程将第二目标数据写入至第二循环缓冲区(关联的内核线程仅处理第二循环缓冲区的数据)。
后端驱动模块11向虚拟内核模块13发送写入完成通知,以使虚拟内核模块13向虚拟机操作系统2发送数据读取通知。虚拟机操作系统2收到数据读取通知后,从第二循环缓冲区读取第二目标数据。
虚拟机操作系统2传输数据至物理网卡3的步骤具体如下:
虚拟机操作系统2的前端驱动模块存放第一目标数据至第一循环缓冲区,并通知虚拟内核模块13,以使虚拟内核模块13发送读取通知至后端驱动模块11。此时,后端驱动模块11确定满足数据处理条件,且数据处理类型为接收数据。
后端驱动模块11选择与第一循环缓冲区关联的至少一个内核线程从第一循环缓冲区读取第一目标数据,选择内核线程时可以通过分配抽象后端子模块14的方式。后端驱动模块11将第一目标数据通过虚拟网卡15和数据桥17转发至物理网卡3。
本应用场景中,内核线程可以根据实际应用设置数量,比如可以每个循环缓冲区设置对应2个内核线程处理,或者3个内核线程处理等。
下面结合说明书附图对本申请实施例进行介绍。
图2为本申请一实施例提供的数据处理方法的流程示意图,如图2所示,本实施例中,本申请实施例的执行主体为数据处理装置,该数据处理装置可以集成在数据处理设备中,数据处理设备中的宿主机操作系统包括数据桥Bridge、虚拟网卡Tap、后端驱动模块vhost_net和虚拟内核模块kvm,数据处理设备中的虚拟机操作系统包括前端驱动模块。本实施例提供的数据处理方法包括以下几个步骤:
步骤S101,若确定满足数据处理条件,确定数据处理类型。数据处理类型为接收数据或发送数据。
本实施例中,数据处理条件指可以触发数据处理的条件,比如收到虚拟内核模块的读取通知,此时,满足数据处理条件并确定数据处理类型为接收数据。
步骤S102,响应于数据处理类型为接收数据,选择与第一循环缓冲区关联的至少一个内核线程从第一循环缓冲区读取第一目标数据。并将第一目标数据通过虚拟网卡和数据桥转发至物理网卡。
本实施例中,与第一循环缓冲区关联的内核线程可以为多个,同时,每个内核线程可以与抽象后端子模块vhost_dev相对应。抽象后端子模块中绑定对应发送/接收函数,使内核线程处理vhost_dev上的单一发送或接收任务。从而构建了第一循环缓冲区-抽象后端子模块-内核线程的对应关系,使内核线程仅需处理一个循环缓冲区中的数据,降低出现高速缓存丢失问题的次数。
可选的,后端驱动模块包括:多个抽象后端子模块。每个抽象后端子模块配置至少一个内核线程。
其中,至少一个抽象后端子模块为接收子模块,接收子模块用于读取第一循环缓冲区中的第一目标数据。至少一个抽象后端子模块为发送子模块,发送子模块用于将第二目标数据写入至第二循环缓冲区。
循环缓冲区的数量与用户配的网卡队列个数有关,可以根据实际应用设置。
将第一目标数据通过虚拟网卡和数据桥转发至物理网卡的具体流程可以为:通过虚拟网卡的接口基于数据传输协议sendmsg将数据转发到内核协议栈入口,再流到数据桥上,最终发送至真实的物理网卡。
步骤S103,响应于数据处理类型为发送数据,选择与第二循环缓冲区关联的至少一个内核线程将第二目标数据写入至第二循环缓冲区。并向虚拟内核模块发送写入完成通知,以使虚拟内核模块向虚拟机操作系统发送数据读取通知。
与第二循环缓冲区关联的内核线程可以为多个,同时,每个内核线程可以与抽象后端子模块vhost_dev一一对应。因而,也可以构建第二循环缓冲区-抽象后端子模块-内核线程的对应关系,使内核线程仅需处理一个循环缓冲区中的数据,降低出现高速缓存丢失问题的次数。
向虚拟内核模块发送写入完成通知的方式可以是采用irqfd机制(一种通信机制)。
本申请实施例提供的一种数据处理方法,该方法包括:若确定满足数据处理条件,确定数据处理类型。数据处理类型为接收数据或发送数据。响应于数据处理类型为接收数据,选择与第一循环缓冲区关联的至少一个内核线程从第一循环缓冲区读取第一目标数据。并将第一目标数据通过虚拟网卡和数据桥转发至物理网卡。响应于数据处理类型为发送数据,选择与第二循环缓冲区关联的至少一个内核线程将第二目标数据写入至第二循环缓冲区。并向虚拟内核模块发送写入完成通知,以使虚拟内核模块向虚拟机操作系统发送数据读取通知。
本申请的数据处理方法,通过设置多个内核线程处理多个循环缓冲区中数据,每个循环缓冲区关联至少一个内核线程,使用于接收数据的内核线程读取第一循环缓冲区中数据,用于发送数据的内核线程将数据写入第二循环缓冲区,从而使内核线程处理数据时仅会一直访问同一片内存区域,降低了出现高速缓存丢失问题的次数。
图3为本申请另一实施例提供的数据处理方法的流程示意图,如图3所示,本实施例提供的数据处理方法,是在本申请上一实施例提供的数据处理方法的基础上,进行了进一步的细化。本实施例中,宿主机操作系统中的后端驱动模块包括:两个抽象后端子模块,每个抽象后端子模块配置一个内核线程。其中一个抽象后端子模块为接收子模块,接收子模块配置有接收函数,其中另一个抽象后端子模块为发送子模块,发送子模块配置有发送函数。则本实施例提供的数据处理方法包括以下步骤。
步骤S201,若确定满足数据处理条件,确定数据处理类型。数据处理类型为接收数据或发送数据。
可选的,本实施例中,S201可以具体如下:
若接收到虚拟内核模块发送的读取通知,则确定满足数据处理条件。
根据读取通知确定数据处理类型为接收数据。
虚拟内核模块发送读取通知可以基于eventfd机制(一种进程间通信机制)。
可选的,本实施例中,S201可以具体如下:
若接收到虚拟网卡发送的第二目标数据,则确定满足数据处理条件。
根据第二目标数据确定数据处理类型为发送数据。
虚拟网卡发送的第二目标数据由真实的物理网卡传输得到,因而,可以确定满足数据处理条件,需要进行发送数据处理。
步骤S202,响应于数据处理类型为接收数据,基于接收子模块对应的内核线程从接收子模块中获取接收函数。
步骤S203,通过接收子模块对应的内核线程基于接收函数读取第一循环缓冲区中的第一目标数据。
本实施例中,接收子模块中配置有接收函数,而在现有应用场景中,内核线程并不会知道需要处理的任务是什么。同时,后端驱动模块中存在接收函数和发送函数的数据包,内核线程在获取函数时可能会获取接收函数也可能会获取发送函数,从而导致处理接收数据任务时,获取的发送函数需要重新获取接收函数,而处理发送数据任务时,获取的接收函数需要重新获取发送函数的问题。因而,现有应用场景中在进行数据处理时的效率有待进一步提高。
本实施例中,通过构建第一循环缓冲区-接收子模块-内核线程的对应关系,同时,接收子模块中仅包含接收函数,内核线程在处理接收子模块的任务时,可以直接获取接收函数,并进行数据接收处理,提高了数据处理效率。
步骤S204,将第一目标数据通过虚拟网卡和数据桥转发至物理网卡。
本实施例中,S204的实现方式与上述实施例S102的实现方式类似,在此不再赘述。
步骤S205,响应于数据处理类型为发送数据,基于发送子模块对应的内核线程从发送子模块中获取发送函数。
步骤S206,通过发送子模块对应的内核线程基于发送函数将第二目标数据写入第二循环缓冲区。
本实施例中,通过构建第二循环缓冲区-发送子模块-内核线程的对应关系,同时,发送子模块中仅包含发送函数,内核线程在处理发送子模块的任务时,可以直接获取发送函数,并进行数据发送处理,提高了数据处理效率。
步骤S207,向虚拟内核模块发送写入完成通知,以使虚拟内核模块向虚拟机操作系统发送数据读取通知。
本实施例中,S207的实现方式与上述实施例S103的实现方式类似,在此不再赘述。
本实施例中,采用两个内核线程处理循环缓冲区的数据,其中一个内核线程处理第一循环缓冲区的数据,另一个内核线程处理第二循环缓冲区的数据,使内核线程处理数据时仅会一直访问同一片内存区域,降低了出现高速缓存丢失问题的次数。同时,采用两个内核线程处理循环缓冲区的数据,占用处理器的资源较少,且能提高数据处理效率。
图4为本申请又一实施例提供的数据处理方法的流程示意图,如图4所示,本实施例提供的数据处理方法,是在本申请前述一实施例提供的数据处理方法的基础上,进行了进一步的细化。本实施例中,宿主机操作系统中的后端驱动模块包括:多个抽象后端子模块。每个抽象后端子模块配置一个内核线程。其中至少两个抽象后端子模块为接收子模块,接收子模块配置有接收函数。其中至少一个抽象后端子模块为发送子模块,发送子模块配置有发送函数。或者,其中至少一个抽象后端子模块为接收子模块,至少两个抽象后端子模块为发送子模块。
步骤S301,若确定满足数据处理条件,确定数据处理类型。数据处理类型为接收数据或发送数据。
本实施例中,S301的实现方式与上述实施例S201的实现方式类似,在此不再赘述。
步骤S302,响应于数据处理类型为接收数据,确定接收子模块对应的空闲线程。空闲线程为处于空闲状态的内核线程。
步骤S303,若空闲线程的数量为多个,则基于线程互斥机制分配多个空闲线程从第一循环缓冲区读取第一目标数据。其中,对第一目标数据的读取处理基于接收函数。
本实施例中,构建的第一循环缓冲区-接收子模块-内核线程的对应关系中,内核线程为多个,即第一循环缓冲区中的数据由多个内核线程处理,为了提高处理效率,可以优先分配空闲线程进行处理,同时,基于线程互斥机制进行具体数据处理。
线程互斥机制基本原则为当第一循环缓冲区中存在内核线程读取数据时,此时,其他的内核线程无法参与读取,需等待当前内核线程完成数据读取后或计时结束后,才能参与数据处理。
步骤S304,将第一目标数据通过虚拟网卡和数据桥转发至物理网卡。
步骤S305,响应于数据处理类型为发送数据,确定发送子模块对应的空闲线程。
步骤S306,若空闲线程的数量为多个,则基于线程互斥机制分配多个空闲线程将第二目标数据写入第二循环缓冲区。其中,对第二目标数据的写入处理基于发送函数。
本实施例中,第二循环缓冲区的处理方式与第一循环缓冲区的处理方式类似,在此不再赘述。
步骤S307,向虚拟内核模块发送写入完成通知,以使虚拟内核模块向虚拟机操作系统发送数据读取通知。
本实施例中,后端驱动模块中的抽象后端子模块数量可以根据实际应用进行设置。
示例性的,后端驱动模块包括:三个抽象后端子模块。其中一个抽象后端子模块为接收子模块,其他两个抽象后端子模块为发送子模块。或者,其中一个抽象后端子模块为发送子模块,其他两个抽象后端子模块为接收子模块。
若抽象后端子模块中配置一个内核线程,则相当于采用三个内核线程处理第一循环缓冲区和第二循环缓冲区的数据。其中,采用两个内核线程处理循环缓冲区的数据,本质上是增加了处理器处理数据的时间,因此,相比采用单内核线程处理循环缓冲区的数据,数据处理和数据转发的性能更好,但同时,也会占用更多处理器的资源。
示例性的,后端驱动模块包括:四个抽象后端子模块。其中两个抽象后端子模块为接收子模块,其他两个抽象后端子模块为发送子模块。与前述三个抽象后端子模块时的示例类似,采用两个内核线程处理第一循环缓冲区的数据,以及采用其他两个内核线程处理第二循环缓冲区的数据,可以提高数据处理和数据转发的性能,但占用的处理器的资源也更多。
因此,若在实际应用中,需要处理的数据量较大,可以根据实际情况采用四个内核线程处理循环缓冲区的数据,或者采用五个或者更多的内核线程处理循环缓冲区的数据,进一步提高数据处理性能。若处理的数据量较少(第一循环缓冲区的数据相对更多或第二循环缓冲区的数据相对更多),可以采用三个内核线程处理循环缓冲区的数据。
此外,可选的,若在第一循环缓冲区对应单个内核线程的情况下,增加内核线程与第一循环缓冲区的关联,实现与用户态线程在vring queue上通讯。由于在linux中内核线程中默认是没有用户态线程的页表信息的,新开的线程需要继承这些信息。此时,可以通过qemu和各个基于vhost_dev开发的vhost设备驱动将用户态的页表信息配置到新开的线程中,实现内核线程与第一循环缓冲区的关联数量的增加。
同时,本实施例中,也可以为第一循环缓冲区对应单个内核线程,而第二循环缓冲区对应多个内核线程的方案,或者第一循环缓冲区对应多个内核线程,而第二循环缓冲区对应单个内核线程的方案。
本实施例中,采用多个内核线程单独处理发送和接收,各司其职,遵循了内存局部性原则,减小了高速缓存丢失问题概率,经测试验证,可以使整体数据转发性能提升20%。
图5为本申请一实施例提供的数据处理装置的结构示意图,如图5所示,本实施例中,该数据处理装置400可以设置在数据处理设备中。数据处理装置400包括:
确定模块401,用于若确定满足数据处理条件,确定数据处理类型。数据处理类型为接收数据或发送数据。
接收模块402,用于响应于数据处理类型为接收数据,选择与第一循环缓冲区关联的至少一个内核线程从第一循环缓冲区读取第一目标数据。并将第一目标数据通过虚拟网卡和数据桥转发至物理网卡。
发送模块403,用于响应于数据处理类型为发送数据,选择与第二循环缓冲区关联的至少一个内核线程将第二目标数据写入至第二循环缓冲区。并向虚拟内核模块发送写入完成通知,以使虚拟内核模块向虚拟机操作系统发送数据读取通知。
本实施例提供的数据处理装置可以执行图2所示方法实施例的技术方案,其实现原理和技术效果与图2所示方法实施例类似,在此不再一一赘述。
本申请提供的数据处理装置在上一实施例提供的数据处理装置的基础上,对数据处理装置进行了进一步的细化,则数据处理装置400包括:
可选地,本实施例中,确定模块401具体用于:
若接收到虚拟内核模块发送的读取通知,则确定满足数据处理条件。根据读取通知确定数据处理类型为接收数据。
可选地,本实施例中,宿主机操作系统中的后端驱动模块包括:多个抽象后端子模块。每个抽象后端子模块配置至少一个内核线程。
至少一个抽象后端子模块为接收子模块,接收子模块用于读取第一循环缓冲区中的第一目标数据。至少一个抽象后端子模块为发送子模块,发送子模块用于将第二目标数据写入至第二循环缓冲区。
可选地,本实施例中,宿主机操作系统中的后端驱动模块包括:两个抽象后端子模块。每个抽象后端子模块配置一个内核线程。其中一个抽象后端子模块为接收子模块,接收子模块配置有接收函数。
接收模块402在选择与第一循环缓冲区关联的至少一个内核线程从第一循环缓冲区读取第一目标数据时,具体用于:
基于接收子模块对应的内核线程从接收子模块中获取接收函数。通过接收子模块对应的内核线程基于接收函数读取第一循环缓冲区中的第一目标数据。
可选地,本实施例中,宿主机操作系统中的后端驱动模块包括:至少三个抽象后端子模块。每个抽象后端子模块配置一个内核线程。其中至少两个抽象后端子模块为接收子模块,接收子模块配置有接收函数。
接收模块402在选择与第一循环缓冲区关联的至少一个内核线程从第一循环缓冲区读取第一目标数据时,具体用于:
确定接收子模块对应的空闲线程。空闲线程为处于空闲状态的内核线程。若空闲线程的数量为多个,则基于线程互斥机制分配多个空闲线程从第一循环缓冲区读取第一目标数据。其中,对第一目标数据的读取处理基于接收函数。
可选地,本实施例中,确定模块401具体用于:
若接收到虚拟网卡发送的第二目标数据,则确定满足数据处理条件。根据第二目标数据确定数据处理类型为发送数据。
可选地,本实施例中,宿主机操作系统中的后端驱动模块包括:两个抽象后端子模块。每个抽象后端子模块配置一个内核线程。其中一个抽象后端子模块为发送子模块,发送子模块配置有发送函数。
发送模块403在选择与第二循环缓冲区关联的至少一个内核线程将第二目标数据写入至第二循环缓冲区时,具体用于:
基于发送子模块对应的内核线程从发送子模块中获取发送函数。通过发送子模块对应的内核线程基于发送函数将第二目标数据写入第二循环缓冲区。
可选地,本实施例中,宿主机操作系统中的后端驱动模块包括:至少三个抽象后端子模块。每个抽象后端子模块配置一个内核线程。其中至少两个抽象后端子模块为发送子模块,发送子模块配置有发送函数。
发送模块403在选择与第二循环缓冲区关联的至少一个内核线程将第二目标数据写入至第二循环缓冲区时,具体用于:
确定发送子模块对应的空闲线程。空闲线程为处于空闲状态的内核线程。若空闲线程的数量为多个,则基于线程互斥机制分配多个空闲线程将第二目标数据写入第二循环缓冲区。其中,对第二目标数据的写入处理基于发送函数。
本实施例提供的数据处理装置可以执行图2-图4所示方法实施例的技术方案,其实现原理和技术效果与图2-图4所示方法实施例类似,在此不再一一赘述。
根据本申请的实施例,本申请还提供了一种数据处理设备、一种计算机可读存储介质和一种计算机程序产品。
如图6所示,图6是本申请提供的数据处理设备的结构示意图。本文所示的部件、它们的连接和关系、以及它们的功能仅仅作为示例,并且不意在限制本文中描述的和/或者要求的本申请的实现。
如图6所示,该数据处理设备包括:处理器501和存储器502。各个部件利用不同的总线互相连接,并且可以被安装在公共主板上或者根据需要以其它方式安装。处理器可以对在数据处理设备执行的指令进行处理。
存储器502即为本申请所提供的非瞬时计算机可读存储介质。其中,存储器存储有可由至少一个处理器执行的指令,以使至少一个处理器执行本申请所提供的数据处理方法。本申请的非瞬时计算机可读存储介质存储计算机指令,该计算机指令用于使计算机执行本申请所提供的数据处理方法。
存储器502作为一种非瞬时计算机可读存储介质,可用于存储非瞬时软件程序、非瞬时计算机可执行程序以及模块,如本申请实施例中的数据处理方法对应的程序指令/模块(例如,附图5所示的确定模块401、接收模块402和发送模块403)。处理器501通过运行存储在存储器502中的非瞬时软件程序、指令以及模块,从而执行数据处理设备的各种功能应用以及数据处理,即实现上述方法实施例中的数据处理方法。
同时,本实施例还提供一种计算机产品,当该计算机产品中的指令由处理器执行时,使得能够执行上述实施例的数据处理方法。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本申请实施例的其它实施方案。本申请旨在涵盖本申请实施例的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本申请实施例的一般性原理并包括本申请实施例未公开的本技术领域中的公知常识或惯用技术手段。
应当理解的是,本申请实施例并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本申请实施例的范围仅由所附的权利要求书来限制。
Claims (11)
1.一种数据处理方法,其特征在于,包括:
若确定满足数据处理条件,确定数据处理类型;所述数据处理类型为接收数据或发送数据;
响应于所述数据处理类型为接收数据,选择与第一循环缓冲区关联的至少一个内核线程从所述第一循环缓冲区读取第一目标数据;并将所述第一目标数据通过虚拟网卡和数据桥转发至物理网卡;
响应于数据处理类型为发送数据,选择与第二循环缓冲区关联的至少一个内核线程将第二目标数据写入至所述第二循环缓冲区;并向虚拟内核模块发送写入完成通知,以使所述虚拟内核模块向虚拟机操作系统发送数据读取通知。
2.根据权利要求1所述的方法,其特征在于,所述若确定满足数据处理条件,确定数据处理类型,包括:
若接收到虚拟内核模块发送的读取通知,则确定满足数据处理条件;
根据所述读取通知确定数据处理类型为接收数据。
3.根据权利要求1或2所述的方法,其特征在于,宿主机操作系统中的后端驱动模块包括:多个抽象后端子模块;每个抽象后端子模块配置至少一个内核线程;
至少一个抽象后端子模块为接收子模块,所述接收子模块用于读取所述第一循环缓冲区中的第一目标数据;至少一个抽象后端子模块为发送子模块,所述发送子模块用于将第二目标数据写入至所述第二循环缓冲区。
4.根据权利要求3所述的方法,其特征在于,宿主机操作系统中的后端驱动模块包括:两个抽象后端子模块;每个抽象后端子模块配置一个内核线程;其中一个抽象后端子模块为接收子模块,所述接收子模块配置有接收函数;
所述选择与第一循环缓冲区关联的至少一个内核线程从所述第一循环缓冲区读取第一目标数据,包括:
基于接收子模块对应的内核线程从接收子模块中获取所述接收函数;
通过接收子模块对应的内核线程基于所述接收函数读取所述第一循环缓冲区中的第一目标数据。
5.根据权利要求3所述的方法,其特征在于,宿主机操作系统中的后端驱动模块包括:至少三个抽象后端子模块;每个抽象后端子模块配置一个内核线程;其中至少两个抽象后端子模块为接收子模块,所述接收子模块配置有接收函数;
所述选择与第一循环缓冲区关联的至少一个内核线程从所述第一循环缓冲区读取第一目标数据,包括:
确定接收子模块对应的空闲线程;所述空闲线程为处于空闲状态的内核线程;
若空闲线程的数量为多个,则基于线程互斥机制分配多个空闲线程从所述第一循环缓冲区读取第一目标数据;其中,对第一目标数据的读取处理基于所述接收函数。
6.根据权利要求1所述的方法,其特征在于,所述若确定满足数据处理条件,确定数据处理类型,包括:
若接收到虚拟网卡发送的第二目标数据,则确定满足数据处理条件;
根据第二目标数据确定数据处理类型为发送数据。
7.根据权利要求3所述的方法,其特征在于,宿主机操作系统中的后端驱动模块包括:两个抽象后端子模块;每个抽象后端子模块配置一个内核线程;其中一个抽象后端子模块为发送子模块,所述发送子模块配置有发送函数;
所述选择与第二循环缓冲区关联的至少一个内核线程将第二目标数据写入至所述第二循环缓冲区,包括:
基于发送子模块对应的内核线程从发送子模块中获取所述发送函数;
通过发送子模块对应的内核线程基于所述发送函数将第二目标数据写入所述第二循环缓冲区。
8.根据权利要求3所述的方法,其特征在于,宿主机操作系统中的后端驱动模块包括:至少三个抽象后端子模块;每个抽象后端子模块配置一个内核线程;其中至少两个抽象后端子模块为发送子模块,所述发送子模块配置有发送函数;
所述选择与第二循环缓冲区关联的至少一个内核线程将第二目标数据写入至所述第二循环缓冲区,包括:
确定发送子模块对应的空闲线程;所述空闲线程为处于空闲状态的内核线程;
若空闲线程的数量为多个,则基于线程互斥机制分配多个空闲线程将第二目标数据写入所述第二循环缓冲区;其中,对第二目标数据的写入处理基于所述发送函数。
9.一种数据处理装置,其特征在于,包括:
确定模块,用于若确定满足数据处理条件,确定数据处理类型;所述数据处理类型为接收数据或发送数据;
接收模块,用于响应于所述数据处理类型为接收数据,选择与第一循环缓冲区关联的至少一个内核线程从所述第一循环缓冲区读取第一目标数据;并将所述第一目标数据通过虚拟网卡和数据桥转发至物理网卡;
发送模块,用于响应于数据处理类型为发送数据,选择与第二循环缓冲区关联的至少一个内核线程将第二目标数据写入至所述第二循环缓冲区;并向虚拟内核模块发送写入完成通知,以使所述虚拟内核模块向虚拟机操作系统发送数据读取通知。
10.一种数据处理设备,其特征在于,包括:处理器及存储器;
所述处理器及所述存储器电路互连;
所述存储器存储计算机执行指令;
所述处理器执行所述存储器存储的计算机执行指令,以实现如权利要求1至8任一项所述的数据处理方法。
11.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有计算机执行指令,所述计算机执行指令被处理器执行时用于实现如权利要求1至8任一项所述的数据处理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311661939.8A CN117632799B (zh) | 2023-12-05 | 2023-12-05 | 数据处理方法、装置、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311661939.8A CN117632799B (zh) | 2023-12-05 | 2023-12-05 | 数据处理方法、装置、设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN117632799A true CN117632799A (zh) | 2024-03-01 |
CN117632799B CN117632799B (zh) | 2024-06-18 |
Family
ID=90037346
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311661939.8A Active CN117632799B (zh) | 2023-12-05 | 2023-12-05 | 数据处理方法、装置、设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117632799B (zh) |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104506379A (zh) * | 2014-12-12 | 2015-04-08 | 北京锐安科技有限公司 | 网络数据捕获方法和系统 |
US9411636B1 (en) * | 2011-07-07 | 2016-08-09 | Emc Corporation | Multi-tasking real-time kernel threads used in multi-threaded network processing |
CN110622478A (zh) * | 2018-04-08 | 2019-12-27 | 华为技术有限公司 | 数据同步处理的方法和装置 |
KR20210051325A (ko) * | 2019-10-30 | 2021-05-10 | 엘에스일렉트릭(주) | 비대칭 멀티프로세싱 시스템의 데이터 공유 장치 및 방법 |
CN113220225A (zh) * | 2021-04-06 | 2021-08-06 | 浙江大学 | Risc-v处理器的内存数据读写方法及装置、处理器、存储介质 |
WO2022116095A1 (en) * | 2020-12-03 | 2022-06-09 | Nvidia Corporation | Distributed neural network training system |
CN115269213A (zh) * | 2021-04-30 | 2022-11-01 | 腾讯科技(深圳)有限公司 | 数据接收方法、数据发送方法、装置、电子设备及介质 |
-
2023
- 2023-12-05 CN CN202311661939.8A patent/CN117632799B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9411636B1 (en) * | 2011-07-07 | 2016-08-09 | Emc Corporation | Multi-tasking real-time kernel threads used in multi-threaded network processing |
CN104506379A (zh) * | 2014-12-12 | 2015-04-08 | 北京锐安科技有限公司 | 网络数据捕获方法和系统 |
CN110622478A (zh) * | 2018-04-08 | 2019-12-27 | 华为技术有限公司 | 数据同步处理的方法和装置 |
KR20210051325A (ko) * | 2019-10-30 | 2021-05-10 | 엘에스일렉트릭(주) | 비대칭 멀티프로세싱 시스템의 데이터 공유 장치 및 방법 |
WO2022116095A1 (en) * | 2020-12-03 | 2022-06-09 | Nvidia Corporation | Distributed neural network training system |
CN113220225A (zh) * | 2021-04-06 | 2021-08-06 | 浙江大学 | Risc-v处理器的内存数据读写方法及装置、处理器、存储介质 |
CN115269213A (zh) * | 2021-04-30 | 2022-11-01 | 腾讯科技(深圳)有限公司 | 数据接收方法、数据发送方法、装置、电子设备及介质 |
Non-Patent Citations (4)
Title |
---|
F.D.NEESER .ETC: "SoftRDMA:Implementing iWARP over TCP kernel sockets", 《IBM JOURNAL OF RESEARCH AND DEVELOPMENT》, vol. 54, no. 1, 28 February 2010 (2010-02-28), pages 1 - 16, XP009151940, DOI: 10.1147/JRD.2009.2036396 * |
刘翔等: "动态内存分配器研究综述", 《计算机学报》, vol. 41, no. 10, 31 October 2018 (2018-10-31), pages 2359 - 2378 * |
宋卫平;沈磊;佘文魁;: "基于DPDK的虚拟化系统高性能网络模块的研究与实现", 科技创新导报, no. 20, 11 July 2020 (2020-07-11), pages 125 - 130 * |
李洪峻等: "基于ARM的无人侦察机信息处理系统设计", 《计算机工程》, vol. 32, no. 14, 31 July 2006 (2006-07-31), pages 230 - 232 * |
Also Published As
Publication number | Publication date |
---|---|
CN117632799B (zh) | 2024-06-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10691363B2 (en) | Virtual machine trigger | |
US9639464B2 (en) | Application-assisted handling of page faults in I/O operations | |
WO2018041075A9 (zh) | 一种应用于计算机的资源访问方法和计算机 | |
WO2017024783A1 (zh) | 一种虚拟化方法、装置和系统 | |
WO2018119952A1 (zh) | 一种设备虚拟化方法、装置、系统及电子设备、计算机程序产品 | |
US20140095769A1 (en) | Flash memory dual in-line memory module management | |
US8312201B2 (en) | Managing memory allocations loans | |
CN111431757B (zh) | 虚拟网络的流量采集方法及装置 | |
US8738890B2 (en) | Coupled symbiotic operating system | |
US7962926B2 (en) | Method, system, and program storage device for generating a retry message when a thread in a real-time application is unavailable to process a request to utilize the real-time application | |
CN110058946B (zh) | 设备虚拟化方法、装置、设备及存储介质 | |
US20230133273A1 (en) | System and interrupt handling method | |
US20220050795A1 (en) | Data processing method, apparatus, and device | |
CN113032103A (zh) | 基于高速网卡sr-iov功能的vf资源动态调度方法 | |
Zeng et al. | Raccoon: A novel network i/o allocation framework for workload-aware vm scheduling in virtual environments | |
US10810031B2 (en) | Dirty memory tracking with assigned devices by exitless paravirtualization | |
WO2020177567A1 (zh) | 一种迁移数据的方法、装置及系统 | |
CN117632799B (zh) | 数据处理方法、装置、设备及存储介质 | |
US20220335109A1 (en) | On-demand paging support for confidential computing | |
CN116360925A (zh) | 一种半虚拟化实现方法、装置、设备及介质 | |
CN113268356B (zh) | 基于LINUX系统的多GPU板卡bounding的系统、方法及介质 | |
CN117311833B (zh) | 一种存储控制方法、装置、电子设备及可读存储介质 | |
US11113091B2 (en) | Apparatus for forwarding a mediated request to processing circuitry in response to a configuration request | |
CN117827449A (zh) | 服务器的物理内存扩展架构、服务器、方法、设备及介质 | |
CN115480926A (zh) | 同步进程间通信方法、装置、设备及存储介质 |
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 |