CN115794317A - 一种基于虚拟机的处理方法、装置、设备及介质 - Google Patents
一种基于虚拟机的处理方法、装置、设备及介质 Download PDFInfo
- Publication number
- CN115794317A CN115794317A CN202310069051.9A CN202310069051A CN115794317A CN 115794317 A CN115794317 A CN 115794317A CN 202310069051 A CN202310069051 A CN 202310069051A CN 115794317 A CN115794317 A CN 115794317A
- Authority
- CN
- China
- Prior art keywords
- numa
- message
- target
- queue
- virtual machine
- 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 26
- 238000000034 method Methods 0.000 claims abstract description 47
- 230000008569 process Effects 0.000 claims abstract description 15
- 101000598160 Homo sapiens Nuclear mitotic apparatus protein 1 Proteins 0.000 claims description 57
- 102100036961 Nuclear mitotic apparatus protein 1 Human genes 0.000 claims description 57
- 238000004590 computer program Methods 0.000 claims description 18
- 238000003860 storage Methods 0.000 claims description 10
- 230000009467 reduction Effects 0.000 abstract description 2
- 238000010586 diagram Methods 0.000 description 13
- 230000015556 catabolic process Effects 0.000 description 5
- 238000006731 degradation reaction Methods 0.000 description 5
- 101150087845 PMD1 gene Proteins 0.000 description 4
- 230000006870 function Effects 0.000 description 4
- 230000009471 action Effects 0.000 description 3
- 230000007334 memory performance Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000004075 alteration Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
Images
Classifications
-
- 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
-
- 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/50—Queue scheduling
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer And Data Communications (AREA)
- Multi Processors (AREA)
Abstract
本申请实施例提供了一种基于虚拟机的处理方法、装置、设备及介质,涉及计算机领域,包括:针对虚拟机中的每个NUMA,配置一个或多个报文队列;接收目标报文,并确定目标报文对应的目标NUMA;将目标报文暂存至针对目标NUMA配置的报文队列中,以通过目标NUMA的线程轮询处理针对目标NUMA配置的报文队列中的目标报文;获取目标报文的处理结果,并将处理结果暂存至针对目标NUMA配置的报文队列中,以向外反馈处理结果。实现了基于NUMA的队列配置,从而得以采用当前NUMA的线程处理当前NUMA的队列中的报文,令收发报文和处理报文均在同一NUMA中完成,避免了跨NUMA访问导致的性能下降。
Description
技术领域
本申请涉及计算机领域,具体涉及一种基于虚拟机的处理方法、装置、设备及介质。
背景技术
OVS(Open vSwitch,开放虚拟交换标准)和Virtio(半虚拟化hypervisor中位于设备之上的抽象层)虚拟网卡作为云计算网络部分的技术基石,其性能的高低极大的影响云计算的用户体验。
在现在的CPU技术中,通过增加NUMA(Non-uniformmemory access,非一致性内存访问)数量可以有效的增加CPU的核心数量,但跨NUMA访问的内存性能很差,如果软件中存在过多的跨NUMA访问存储,则会极大降低软件的性能。
而且,在OVS实现中,主要是对网络报文进行处理转发,对IO(输入输出)的吞吐要求较高,又由于跨NUMA访问的内存性能很差,所以跨NUMA访问对于OVS的性能影响极大。
发明内容
鉴于上述问题,提出了本申请实施例以便提供一种克服上述问题或者至少部分地解决上述问题的一种基于虚拟机的处理方法、装置、设备及介质。
为了解决上述问题,本申请实施例公开了一种基于虚拟机的处理方法,虚拟机包括至少两个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配置的报文队列中包括:
遍历针对目标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的队列中的报文,令收发报文和处理报文均在同一NUMA中完成,避免了跨NUMA访问导致的性能下降,进而极大地提升IO性能。
附图说明
图1是一种服务器的结构框图;
图2是本申请的一种基于虚拟机的处理方法实施例的构思图;
图3是本申请的一种基于虚拟机的处理方法实施例的步骤流程图;
图4是本申请的另一种基于虚拟机的处理方法实施例的步骤流程图;
图5是本申请的另一种基于虚拟机的处理方法实施例的运作流程图;
图6是本申请的另一种基于虚拟机的处理方法实施例的步骤流程图;
图7是本申请的另一种基于虚拟机的处理方法实施例的步骤流程图;
图8是本申请的基于虚拟机的处理方法实施例的运作流程图;
图9是本申请的一种基于虚拟机的处理装置实施例的结构框图。
具体实施方式
为使本申请的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本申请作进一步详细的说明。
在现有的技术方案中,网卡的所有队列集中在一个NUMA上,物理机OVS根据网卡所在的NUMA,分配PMD线程(polling modedriver,通常情况下,1个PMD线程绑定在1个CPUcore上面运行)轮询处理该网卡的数据报文。
如图1所示,例如一个存在两个NUMA的服务器,CPU0、CPU1、CPU2位于NUMA0,CPU7、CPU8、CPU9位于NUMA1,创建一个四核的虚拟机,其中的VCPU(虚拟化的CPU)和物理CPU的绑定关系为:PMD0绑定在NUMA0的CPU2上,PMD1绑定在NUMA1的CPU9上面。
由于现有的技术方案中网卡的所有队列都只会属于一个NUMA,导致虚拟机的VCPU2、VCPU3必须跨NUMA访问网卡,从而使得性能降低,OVS侧只有NUMA0的PMD0可以不跨NUMA处理虚拟机的网络报文。
但是多NUMA的虚拟机有其存在的必要性,其存在的必要性如下:第一,如果需要建立一个CPU核心特别多的虚拟机,一个NUMA上的CPU核心不满足要求时,必然要跨NUMA创建虚拟机,即虚拟机横跨两个以上的NUMA;第二,如果服务器上面创建多个虚拟机后,每个NUMA上剩余的CPU核心都不多的情况下,也必须跨NUMA来创建一个多核心的虚拟机。
基于此,本申请提供一种基于虚拟机的处理方法实施例,用于解决多NUMA虚拟机场景下,虚拟网卡的所有队列位于同一个NUMA,导致不可避免的跨NUMA访问内存,使得网络性能降低的问题。
参照图2,示出本申请的一种基于虚拟机的处理方法实施例的构思图,在创建网卡队列时,依次在所有的NUMA上分别分配队列,在NUMA0申请队列0和队列1,在NUMA1申请队列2和接收队列3;根据网卡特定队列所在的NUMA确定使用后端的哪个NUMA上面的PMD,例如,队列0位于NUMA0,则使用PMD0处理队列0的数据,队列2位于NUMA1,则使用PMD1处理队列2的数据;获取物理机OVS中对应网卡队列的TXQ(发送队列)所在的NUMA,OVS再优先申请和PMD在同一个NUMA的TXQ,例如,PMD0在NUMA0,则PMD0通过队列1发送报文给虚拟机,PMD1在NUMA1,则PMD1通过队列3发送报文给虚拟机。
通过上述的优化,数据报文在收发两个方向上,都可以在本地NUMA完成报文处理,避免了跨NUMA带来性能的损耗。
以下对本申请实施例进一步说明:
参照图3,示出本申请的一种基于虚拟机的处理方法实施例的步骤流程图,虚拟机包括至少两个NUMA,该方法可以包括如下步骤:
步骤301、针对虚拟机中的每个NUMA,配置一个或多个报文队列。
在需要配置报文队列时,针对虚拟机中的每个NUMA,为每个NUMA配置一个或多个报文队列。
在本申请一些实施例中,报文队列包括接收子队列、发送子队列,接收子队列用于接收报文,发送子队列用于发送报文。
通过设置接收子队列、发送子队列,报文队列可以通过不同的子队列进行接收报文和发送报文,避免了利用同一子队列接收报文和发送报文所引起的冲突。
步骤302、接收目标报文,并确定目标报文对应的目标NUMA。
当接收到目标报文时,可以通过物理机OVS确定目标报文对应的目标NUMA,其中,目标报文是待处理的报文。
步骤303、将目标报文暂存至针对目标NUMA配置的报文队列中,以通过目标NUMA的线程轮询处理针对目标NUMA配置的报文队列中的目标报文。
在确定目标报文对应的目标NUMA之后,将目标报文暂存至针对目标NUMA配置的报文队列中,从而得以通过目标NUMA的线程轮询处理针对目标NUMA配置的报文队列中的目标报文,进而使得接收报文和处理报文都在目标NUMA中完成。
在本申请一些实施例中,步骤303中的通过目标NUMA的线程轮询处理针对目标NUMA配置的报文队列中的目标报文可以包括如下子步骤:
子步骤11、通过目标NUMA的线程对针对目标NUMA配置的报文队列进行轮询。
在将目标报文暂存至针对目标NUMA配置的报文队列中后,通过目标NUMA的线程对针对目标NUMA配置的报文队列进行轮询,进而确定目标报文所暂存的报文队列。
子步骤12、当目标NUMA的线程轮询至暂存有目标报文的报文队列时,则对报文队列中的目标报文进行处理。
当目标NUMA的线程轮询至暂存有目标报文的报文队列时,则会读取到目标报文,从而对报文队列中的目标报文进行处理。
步骤304、获取目标报文的处理结果,并将处理结果暂存至针对目标NUMA配置的报文队列中,以向外反馈处理结果。
在对目标报文处理完毕后,会得到目标报文的处理结果,则将处理结果暂存至针对目标NUMA配置的报文队列中,以向外反馈处理结果。
在本申请实施例中,通过针对虚拟机中的每个NUMA,配置一个或多个报文队列,再接收目标报文,并确定目标报文对应的目标NUMA,然后将目标报文暂存至针对目标NUMA配置的报文队列中,以通过目标NUMA的线程轮询处理针对目标NUMA配置的报文队列中的目标报文,最后获取目标报文的处理结果,并将处理结果暂存至针对目标NUMA配置的报文队列中,以向外反馈处理结果,实现了基于NUMA的队列配置,从而得以采用当前NUMA的线程处理当前NUMA的队列中的报文,令收发报文和处理报文均在同一NUMA中完成,避免了跨NUMA访问导致的性能下降,进而极大地提升IO性能。
参照图4,示出本申请的另一种基于虚拟机的处理方法实施例的步骤流程图,虚拟机包括至少两个NUMA,该方法可以包括如下步骤:
步骤401、针对虚拟机中的每个NUMA,确定每个NUMA的线程个数。
在需要配置报文队列时,先针对虚拟机中的每个NUMA,确定每个NUMA的线程个数。
步骤402、根据每个NUMA的线程个数,配置一个或多个报文队列。
在确定每个NUMA的线程个数后,则根据每个NUMA的线程个数,为每个NUMA配置一个或多个报文队列。
在本申请一些实施例中,报文队列包括接收子队列、发送子队列,接收子队列用于接收报文,发送子队列用于发送报文。
通过设置接收子队列、发送子队列,报文队列可以通过不同的子队列进行接收报文和发送报文,避免了利用同一子队列接收报文和发送报文所引起的冲突。
在本申请一些实施例中,步骤402可以包括如下子步骤:
子步骤21、根据每个NUMA的线程个数,确定每个NUMA所需配置的报文队列个数。
在确定每个NUMA的线程个数后,则根据每个NUMA的线程个数,确定每个NUMA所需配置的报文队列个数。
子步骤22、根据每个NUMA所需配置的报文队列个数,配置一个或多个报文队列。
在确定每个NUMA所需配置的报文队列个数,则根据每个NUMA所需配置的报文队列个数,为每个NUMA配置一个或多个报文队列。
在本申请一些示例中,在子步骤22之后,该方法还可以包括如下步骤:
根据针对每个NUMA配置的报文队列,在每个NUMA中申请队列内存空间。
在配置完报文队列后,还需根据针对每个NUMA配置的报文队列,在每个NUMA中申请队列内存空间,从而确定各报文队列所属队列内存空间对应的地址。
将队列内存空间对应的地址发送至每个NUMA的线程,以使每个NUMA的线程确定其所要轮询处理的报文队列。
在每个NUMA中完成申请队列内存空间后,则将队列内存空间对应的地址发送至每个NUMA的线程,以使每个NUMA的线程确定其所要轮询处理的报文队列,从而避免线程随机轮询而导致的跨NUMA访问。
如图5所示,由于线程无法直接识别队列内存空间对应的虚拟机格式地址,所以还需对其进行转换,转换成物理机格式地址,再通过socket通信管道发送至物理机后端,以使线程接收并识别队列内存空间对应的物理机格式地址,从而确定其所要轮询处理的报文队列。
在本申请一些示例中,每个NUMA的线程个数与每个NUMA所需配置的报文队列个数相同。
在理想情况下,每个NUMA的线程个数与每个NUMA所需配置的报文队列个数相同,从而在针对每个NUMA配置的报文队列都存在待处理报文时,都能有足够的线程同时处理,又避免了每个NUMA的线程个数多于每个NUMA所需配置的报文队列个数而导致的部分线程完全空置。
步骤403、接收目标报文,并确定目标报文对应的目标NUMA。
当接收到目标报文时,可以通过物理机OVS确定目标报文对应的目标NUMA,其中,目标报文是待处理的报文。
步骤405、将目标报文暂存至针对目标NUMA配置的报文队列中,以通过目标NUMA的线程轮询处理针对目标NUMA配置的报文队列中的目标报文。
在确定目标报文对应的目标NUMA之后,将目标报文暂存至针对目标NUMA配置的报文队列中,从而得以通过目标NUMA的线程轮询处理针对目标NUMA配置的报文队列中的目标报文,进而使得接收报文和处理报文都在目标NUMA中完成。
步骤406、获取目标报文的处理结果,并将处理结果暂存至针对目标NUMA配置的报文队列中,以向外反馈处理结果。
在对目标报文处理完毕后,会得到目标报文的处理结果,则将处理结果暂存至针对目标NUMA配置的报文队列中,以向外反馈处理结果。
在本申请实施例中,通过针对虚拟机中的每个NUMA,确定每个NUMA的线程个数,并根据每个NUMA的线程个数,配置一个或多个报文队列,再接收目标报文,并确定目标报文对应的目标NUMA,然后将目标报文暂存至针对目标NUMA配置的报文队列中,以通过目标NUMA的线程轮询处理针对目标NUMA配置的报文队列中的目标报文,最后获取目标报文的处理结果,并将处理结果暂存至针对目标NUMA配置的报文队列中,以向外反馈处理结果,实现了基于NUMA的队列配置,从而得以采用当前NUMA的线程处理当前NUMA的队列中的报文,令收发报文和处理报文均在同一NUMA中完成,避免了跨NUMA访问导致的性能下降,进而极大地提升IO性能。
参照图6,示出本申请的一种基于虚拟机的处理方法实施例的步骤流程图,虚拟机包括至少两个NUMA,该方法可以包括如下步骤:
步骤601、针对虚拟机中的每个NUMA,配置一个或多个报文队列。
在需要配置报文队列时,针对虚拟机中的每个NUMA,为每个NUMA配置一个或多个报文队列。
在本申请一些实施例中,报文队列包括接收子队列、发送子队列,接收子队列用于接收报文,发送子队列用于发送报文。
通过设置接收子队列、发送子队列,报文队列可以通过不同的子队列进行接收报文和发送报文,避免了利用同一子队列接收报文和发送报文所引起的冲突。
步骤602、接收目标报文,并确定目标报文对应的目标NUMA。
当接收到目标报文时,可以通过物理机OVS确定目标报文对应的目标NUMA,其中,目标报文是待处理的报文。
步骤603、将目标报文暂存至针对目标NUMA配置的报文队列中,以通过目标NUMA的线程轮询处理针对目标NUMA配置的报文队列中的目标报文。
在确定目标报文对应的目标NUMA之后,将目标报文暂存至针对目标NUMA配置的报文队列中,从而得以通过目标NUMA的线程轮询处理针对目标NUMA配置的报文队列中的目标报文,进而使得接收报文和处理报文都在目标NUMA中完成。
步骤604、获取目标报文的处理结果。
在对目标报文处理完毕后,会得到目标报文的处理结果。
步骤605、遍历针对目标NUMA配置的报文队列,确定一个空闲的报文队列。
在获取到处理结果后,需要对针对目标NUMA配置的报文队列进行遍历,从而从中确定一个空闲的报文队列,以暂存处理结果。
在具体的实施方式中,在遍历针对目标NUMA配置的报文队列过程中,选择首次遍历到空闲的报文队列,以暂存处理结果。
在本申请一些实施例中,在步骤605之前,该方法还可以包括如下步骤:
遍历针对每个NUMA配置的报文队列,确定针对目标NUMA配置的报文队列。
通过遍历针对每个NUMA配置的报文队列,从而从中确定针对目标NUMA配置的报文队列。
步骤606、将处理结果暂存至空闲的报文队列中,以向外反馈处理结果。
在确定一个空闲的报文队列后,则将处理结果暂存至针对目标NUMA配置的报文队列中,以向外反馈处理结果。
在本申请实施例中,通过针对虚拟机中的每个NUMA,配置一个或多个报文队列,再接收目标报文,并确定目标报文对应的目标NUMA,然后将目标报文暂存至针对目标NUMA配置的报文队列中,以通过目标NUMA的线程轮询处理针对目标NUMA配置的报文队列中的目标报文,最后获取目标报文的处理结果,并遍历针对目标NUMA配置的报文队列,确定一个空闲的报文队列,将处理结果暂存至空闲的报文队列中,以向外反馈处理结果,实现了基于NUMA的队列配置,从而得以采用当前NUMA的线程处理当前NUMA的队列中的报文,令收发报文和处理报文均在同一NUMA中完成,避免了跨NUMA访问导致的性能下降,进而极大地提升IO性能。
参照图7,示出本申请的一种基于虚拟机的处理方法实施例的步骤流程图,虚拟机包括虚拟网卡和至少两个NUMA,该方法可以包括如下步骤:
步骤701、针对虚拟机中的每个NUMA,由虚拟网卡配置一个或多个报文队列。
在需要配置报文队列时,针对虚拟机中的每个NUMA,由虚拟网卡为每个NUMA配置一个或多个报文队列。
在本申请一些实施例中,报文队列包括接收子队列、发送子队列,接收子队列用于接收报文,发送子队列用于发送报文。
通过设置接收子队列、发送子队列,报文队列可以通过不同的子队列进行接收报文和发送报文,避免了利用同一子队列接收报文和发送报文所引起的冲突。
步骤702、通过虚拟网卡接收目标报文,并确定目标报文对应的目标NUMA。
当通过虚拟网卡接收到目标报文时,可以通过物理机OVS确定目标报文对应的目标NUMA,其中,目标报文是待处理的报文。
步骤703、将目标报文暂存至针对目标NUMA配置的报文队列中,以通过目标NUMA的线程轮询处理针对目标NUMA配置的报文队列中的目标报文。
在确定目标报文对应的目标NUMA之后,将目标报文暂存至针对目标NUMA配置的报文队列中,从而得以通过目标NUMA的线程轮询处理针对目标NUMA配置的报文队列中的目标报文,进而使得接收报文和处理报文都在目标NUMA中完成。
步骤704、获取目标报文的处理结果,并将处理结果暂存至针对目标NUMA配置的报文队列中,以通过虚拟网卡向外反馈处理结果。
在对目标报文处理完毕后,会得到目标报文的处理结果,则将处理结果暂存至针对目标NUMA配置的报文队列中,以通过虚拟网卡向外反馈处理结果。
在本申请实施例中,通过针对虚拟机中的每个NUMA,由虚拟网卡配置一个或多个报文队列,再通过虚拟网卡接收目标报文,并确定目标报文对应的目标NUMA,然后将目标报文暂存至针对目标NUMA配置的报文队列中,以通过目标NUMA的线程轮询处理针对目标NUMA配置的报文队列中的目标报文,最后获取目标报文的处理结果,并将处理结果暂存至针对目标NUMA配置的报文队列中,以通过虚拟网卡向外反馈处理结果,实现了基于NUMA的队列配置,从而得以采用当前NUMA的线程处理当前NUMA的队列中的报文,令收发报文和处理报文均在同一NUMA中完成,避免了跨NUMA访问导致的性能下降,进而极大地提升IO性能。
以下对上述的多个方法实施例所涉及的步骤流程进行说明:
如图8所示,基于虚拟机的处理方法实施例涉及的运作流程如下:
针对虚拟机中的每个NUMA,确定每个NUMA的PMD线程个数,并由虚拟网卡根据每个NUMA的PMD线程个数,为每个NUMA配置与其PMD线程个数相同的报文队列。
在配置完报文队列后,根据针对每个NUMA配置的报文队列,在每个NUMA中申请队列内存空间,并确定队列内存空间对应的虚拟机格式地址,再将队列内存空间对应的物理机格式地址发送至每个NUMA的线程,以使每个NUMA的PMD线程确定其所要轮询处理的报文队列。
通过虚拟网卡接收APP从本地发送的报文,并可以通过物理机OVS确定该报文所对应的目标NUMA,将该报文暂存至针对目标NUMA配置的报文队列中,以使目标NUMA的PMD线程对针对目标NUMA配置的报文队列进行轮询,从而当目标NUMA的PMD线程轮询至暂存有该报文的报文队列时处理该报文。
在对该报文处理完毕后,会得到该报文的处理结果,并需要确定一用于暂存该处理结果的报文队列,所以通过遍历针对每个NUMA配置的报文队列,从而从中确定针对目标NUMA配置的报文队列,再对针对目标NUMA配置的报文队列进行遍历,从而从中确定一个空闲的报文队列,以暂存处理结果。
在将该处理结果暂存至空闲的报文队列中后,再通过虚拟网卡向外反馈处理结果。
需要说明的是,对于方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请实施例并不受所描述的动作顺序的限制,因为依据本申请实施例,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作并不一定是本申请实施例所必须的。
参照图9,示出本申请的一种基于虚拟机的处理装置实施例的结构框图,该装置可以包括如下模块:
报文队列配置模块901,用于针对虚拟机中的每个NUMA,配置一个或多个报文队列。
目标NUMA确定模块902,用于接收目标报文,并确定目标报文对应的目标NUMA。
目标报文处理模块903,用于将目标报文暂存至针对目标NUMA配置的报文队列中,以通过目标NUMA的线程轮询处理针对目标NUMA配置的报文队列中的目标报文。
处理结果反馈模块904,用于获取目标报文的处理结果,并将处理结果暂存至针对目标NUMA配置的报文队列中,以向外反馈处理结果。
在本申请一些实施例中,报文队列配置模块901可以包括如下子模块:
线程个数确定子模块,用于针对虚拟机中的每个NUMA,确定每个NUMA的线程个数。
报文队列配置子模块,用于根据每个NUMA的线程个数,配置一个或多个报文队列。
在本申请一些示例中,报文队列配置子模块可以包括如下单元:
队列个数确定单元,用于根据每个NUMA的线程个数,确定每个NUMA所需配置的报文队列个数。
报文队列配置单元,用于根据每个NUMA所需配置的报文队列个数,配置一个或多个报文队列。
在具体的实施方式中,该装置还可以包括如下模块:
内存空间申请模块,用于根据针对每个NUMA配置的报文队列,在每个NUMA中申请队列内存空间。
空间地址发送模块,用于将队列内存空间对应的地址发送至每个NUMA的线程,以使每个NUMA的线程确定其所要轮询处理的报文队列。
在本申请一些实施例中,目标报文处理模块903可以包括如下子模块:
线程轮询子模块,用于通过目标NUMA的线程对针对目标NUMA配置的报文队列进行轮询。
线程处理子模块,用于当目标NUMA的线程轮询至暂存有目标报文的报文队列时,则对报文队列中的目标报文进行处理。
在本申请一些实施例中,处理结果反馈模块904可以包括如下子模块:
空闲队列确定子模块,用于遍历针对目标NUMA配置的报文队列,确定一个空闲的报文队列;
处理结果暂存子模块,用于将处理结果暂存至空闲的报文队列中。
在本申请一些示例中,该装置还可以包括如下模块:
目标NUMA队列确定模块,用于遍历针对每个NUMA配置的报文队列,确定针对目标NUMA配置的报文队列。
在本申请实施例中,通过针对虚拟机中的每个NUMA,配置一个或多个报文队列,再接收目标报文,并确定目标报文对应的目标NUMA,然后将目标报文暂存至针对目标NUMA配置的报文队列中,以通过目标NUMA的线程轮询处理针对目标NUMA配置的报文队列中的目标报文,最后获取目标报文的处理结果,并将处理结果暂存至针对目标NUMA配置的报文队列中,以向外反馈处理结果,实现了基于NUMA的队列配置,从而得以采用当前NUMA的线程处理当前NUMA的队列中的报文,令收发报文和处理报文均在同一NUMA中完成,避免了跨NUMA访问导致的性能下降,进而极大地提升IO性能。
对于装置实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
本申请实施例还提供了一种电子设备,可以包括处理器、存储器及存储在存储器上并能够在处理器上运行的计算机程序,计算机程序被处理器执行时实现如上述的基于虚拟机的处理方法。
本申请实施例还提供了一种非易失性可读存储介质,非易失性可读存储介质上存储计算机程序,计算机程序被处理器执行时实现如上述的基于虚拟机的处理方法。
本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
本领域内的技术人员应明白,本申请实施例的实施例可提供为方法、装置、或计算机程序产品。因此,本申请实施例可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请实施例是参照根据本申请实施例的方法、终端设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理终端设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理终端设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理终端设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理终端设备上,使得在计算机或其他可编程终端设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程终端设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本申请实施例的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本申请实施例范围的所有变更和修改。
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者终端设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者终端设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者终端设备中还存在另外的相同要素。
以上对本申请所提供的一种基于虚拟机的处理方法、装置、设备及介质,进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。
Claims (15)
1.一种基于虚拟机的处理方法,其特征在于,所述虚拟机包括至少两个NUMA,所述方法包括:
针对所述虚拟机中的每个NUMA,配置一个或多个报文队列;
接收目标报文,并确定所述目标报文对应的目标NUMA;
将所述目标报文暂存至针对所述目标NUMA配置的报文队列中,以通过所述目标NUMA的线程轮询处理针对所述目标NUMA配置的报文队列中的所述目标报文;
获取所述目标报文的处理结果,并将所述处理结果暂存至针对所述目标NUMA配置的报文队列中,以向外反馈所述处理结果。
2.根据权利要求1所述的方法,其特征在于,所述针对所述虚拟机中的每个NUMA,配置一个或多个报文队列包括:
针对所述虚拟机中的每个NUMA,确定所述每个NUMA的线程个数;
根据所述每个NUMA的线程个数,配置一个或多个报文队列。
3.根据权利要求2所述的方法,其特征在于,所述根据所述每个NUMA的线程个数,配置一个或多个报文队列包括:
根据所述每个NUMA的线程个数,确定所述每个NUMA所需配置的报文队列个数;
根据所述每个NUMA所需配置的报文队列个数,配置一个或多个报文队列。
4.根据权利要求3所述的方法,其特征在于,在所述配置一个或多个报文队列之后,所述方法还包括:
根据针对所述每个NUMA配置的报文队列,在所述每个NUMA中申请队列内存空间;
将所述队列内存空间对应的地址发送至所述每个NUMA的线程,以使所述每个NUMA的线程确定其所要轮询处理的报文队列。
5.根据权利要求3所述的方法,其特征在于,所述每个NUMA的线程个数与所述每个NUMA所需配置的报文队列个数相同。
6.根据权利要求1所述的方法,其特征在于,所述通过所述目标NUMA的线程轮询处理针对所述目标NUMA配置的报文队列中的所述目标报文包括:
通过所述目标NUMA的线程对针对所述目标NUMA配置的报文队列进行轮询;
当所述目标NUMA的线程轮询至暂存有所述目标报文的报文队列时,则对所述报文队列中的所述目标报文进行处理。
7.根据权利要求1所述的方法,其特征在于,所述将所述处理结果暂存至针对所述目标NUMA配置的报文队列中包括:
遍历针对所述目标NUMA配置的报文队列,确定一个空闲的报文队列;
将所述处理结果暂存至所述空闲的报文队列中。
8.根据权利要求7所述的方法,其特征在于,在所述遍历针对所述目标NUMA配置的报文队列之前,所述方法还包括:
遍历针对所述每个NUMA配置的报文队列,确定针对所述目标NUMA配置的报文队列。
9.根据权利要求1所述的方法,其特征在于,所述虚拟机还包括虚拟网卡,所述针对所述虚拟机中的每个NUMA,配置一个或多个报文队列包括:
针对所述虚拟机中的每个NUMA,由所述虚拟网卡配置一个或多个报文队列。
10.根据权利要求9所述的方法,其特征在于,所述接收目标报文,并确定所述目标报文对应的目标NUMA包括:
通过所述虚拟网卡接收目标报文,并确定所述目标报文对应的目标NUMA。
11.根据权利要求9所述的方法,其特征在于,所述将所述处理结果暂存至针对所述目标NUMA配置的报文队列中,以向外反馈所述处理结果包括:
将所述处理结果暂存至针对所述目标NUMA配置的报文队列中,以通过所述虚拟网卡向外反馈所述处理结果。
12.根据权利要求1至11任一所述的方法,其特征在于,所述报文队列包括接收子队列、发送子队列,所述接收子队列用于接收报文,所述发送子队列用于发送报文。
13.一种基于虚拟机的处理装置,其特征在于,所述虚拟机包括至少两个NUMA,所述装置包括:
报文队列配置模块,用于针对所述虚拟机中的每个NUMA,配置一个或多个报文队列;
目标NUMA确定模块,用于接收目标报文,并确定所述目标报文对应的目标NUMA;
目标报文处理模块,用于将所述目标报文暂存至针对所述目标NUMA配置的报文队列中,以通过所述目标NUMA的线程轮询处理针对所述目标NUMA配置的报文队列中的所述目标报文;
处理结果反馈模块,用于获取所述目标报文的处理结果,并将所述处理结果暂存至针对所述目标NUMA配置的报文队列中,以向外反馈所述处理结果。
14.一种电子设备,其特征在于,包括处理器、存储设备及存储在所述存储设备上并能够在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现如权利要求1至12中任一项所述的方法。
15.一种非易失性可读存储介质,其特征在于,所述非易失性可读存储介质上存储计算机程序,所述计算机程序被处理器执行时实现如权利要求1至12中任一项所述的方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310069051.9A CN115794317B (zh) | 2023-02-06 | 2023-02-06 | 一种基于虚拟机的处理方法、装置、设备及介质 |
PCT/CN2023/140012 WO2024164718A1 (zh) | 2023-02-06 | 2023-12-19 | 一种基于虚拟机的处理方法、装置、设备及介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310069051.9A CN115794317B (zh) | 2023-02-06 | 2023-02-06 | 一种基于虚拟机的处理方法、装置、设备及介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115794317A true CN115794317A (zh) | 2023-03-14 |
CN115794317B CN115794317B (zh) | 2023-04-21 |
Family
ID=85430039
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310069051.9A Active CN115794317B (zh) | 2023-02-06 | 2023-02-06 | 一种基于虚拟机的处理方法、装置、设备及介质 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN115794317B (zh) |
WO (1) | WO2024164718A1 (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115996203A (zh) * | 2023-03-22 | 2023-04-21 | 北京华耀科技有限公司 | 网络流量分域方法、装置、设备和存储介质 |
WO2024164718A1 (zh) * | 2023-02-06 | 2024-08-15 | 天翼云科技有限公司 | 一种基于虚拟机的处理方法、装置、设备及介质 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107070709A (zh) * | 2017-03-31 | 2017-08-18 | 上海交通大学 | 一种基于底层numa感知的nfv实现方法 |
US20190213127A1 (en) * | 2016-09-20 | 2019-07-11 | Huawei Technologies Co., Ltd. | Data transmission method and apparatus |
CN113760457A (zh) * | 2021-08-31 | 2021-12-07 | 北京金山云网络技术有限公司 | 一种虚拟机资源分配方法、装置、电子设备及存储介质 |
CN113923158A (zh) * | 2020-07-07 | 2022-01-11 | 华为技术有限公司 | 一种报文转发、路由发送和接收方法及装置 |
CN114448909A (zh) * | 2021-12-27 | 2022-05-06 | 天翼云科技有限公司 | 基于ovs的网卡队列轮询方法、装置、计算机设备及介质 |
CN114666276A (zh) * | 2022-04-01 | 2022-06-24 | 阿里巴巴(中国)有限公司 | 一种发送报文的方法和装置 |
CN115002046A (zh) * | 2022-05-26 | 2022-09-02 | 北京天融信网络安全技术有限公司 | 报文处理方法、numa节点、电子设备及存储介质 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115794317B (zh) * | 2023-02-06 | 2023-04-21 | 天翼云科技有限公司 | 一种基于虚拟机的处理方法、装置、设备及介质 |
-
2023
- 2023-02-06 CN CN202310069051.9A patent/CN115794317B/zh active Active
- 2023-12-19 WO PCT/CN2023/140012 patent/WO2024164718A1/zh unknown
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20190213127A1 (en) * | 2016-09-20 | 2019-07-11 | Huawei Technologies Co., Ltd. | Data transmission method and apparatus |
CN107070709A (zh) * | 2017-03-31 | 2017-08-18 | 上海交通大学 | 一种基于底层numa感知的nfv实现方法 |
CN113923158A (zh) * | 2020-07-07 | 2022-01-11 | 华为技术有限公司 | 一种报文转发、路由发送和接收方法及装置 |
CN113760457A (zh) * | 2021-08-31 | 2021-12-07 | 北京金山云网络技术有限公司 | 一种虚拟机资源分配方法、装置、电子设备及存储介质 |
CN114448909A (zh) * | 2021-12-27 | 2022-05-06 | 天翼云科技有限公司 | 基于ovs的网卡队列轮询方法、装置、计算机设备及介质 |
CN114666276A (zh) * | 2022-04-01 | 2022-06-24 | 阿里巴巴(中国)有限公司 | 一种发送报文的方法和装置 |
CN115002046A (zh) * | 2022-05-26 | 2022-09-02 | 北京天融信网络安全技术有限公司 | 报文处理方法、numa节点、电子设备及存储介质 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2024164718A1 (zh) * | 2023-02-06 | 2024-08-15 | 天翼云科技有限公司 | 一种基于虚拟机的处理方法、装置、设备及介质 |
CN115996203A (zh) * | 2023-03-22 | 2023-04-21 | 北京华耀科技有限公司 | 网络流量分域方法、装置、设备和存储介质 |
Also Published As
Publication number | Publication date |
---|---|
WO2024164718A1 (zh) | 2024-08-15 |
CN115794317B (zh) | 2023-04-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN115794317B (zh) | 一种基于虚拟机的处理方法、装置、设备及介质 | |
CN108462760B (zh) | 电子装置、集群访问域名自动生成方法及存储介质 | |
CN113918101B (zh) | 一种写数据高速缓存的方法、系统、设备和存储介质 | |
CN108021449B (zh) | 一种协程实现方法、终端设备及存储介质 | |
CN111328392A (zh) | 部分供应的虚拟机的部署 | |
DE112014001397T5 (de) | Flussrichterbasierter Niedriglatenznetzwerkbetrieb | |
CN108304272B (zh) | 一种数据io请求的处理方法及装置 | |
CN111831408A (zh) | 异步任务处理方法、装置、电子设备及介质 | |
CN115269326A (zh) | 基于芯片监控系统的任务处理方法、装置、介质及设备 | |
CN109120680B (zh) | 一种控制系统、方法及相关设备 | |
CN111699479A (zh) | 日志处理方法、设备及计算机可读存储介质 | |
CN113626173A (zh) | 调度方法、装置及存储介质 | |
US10581997B2 (en) | Techniques for storing or accessing a key-value item | |
KR102303424B1 (ko) | 랜덤 액세스 메모리를 포함하는 하나 이상의 처리 유닛을 위한 직접 메모리 액세스 제어 장치 | |
CN113472523A (zh) | 用户态协议栈报文处理优化方法、系统、装置及存储介质 | |
CN116560803B (zh) | 基于sr-iov的资源管理方法及相关装置 | |
CN113094172A (zh) | 应用于分布式存储系统的服务器管理方法和装置 | |
US11252457B2 (en) | Multimedia streaming and routing apparatus and operation method of the same | |
CN117370046A (zh) | 进程间通信方法、系统、设备和存储介质 | |
CN110737530B (zh) | 一种提升handle标识解析系统收包能力的方法 | |
CN112134813A (zh) | 一种基于应用进程优先级的带宽分配方法及电子设备 | |
CN113259474B (zh) | 一种存储管理方法、系统、存储介质及设备 | |
CN109002347B (zh) | 一种虚拟机内存分配方法、装置及系统 | |
CN114546631A (zh) | 任务调度方法、控制方法、核心、电子设备、可读介质 | |
CN112580086A (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 | ||
GR01 | Patent grant | ||
CP02 | Change in the address of a patent holder |
Address after: 100007 room 205-32, floor 2, building 2, No. 1 and No. 3, qinglonghutong a, Dongcheng District, Beijing Patentee after: Tianyiyun Technology Co.,Ltd. Address before: 100093 Floor 4, Block E, Xishan Yingfu Business Center, Haidian District, Beijing Patentee before: Tianyiyun Technology Co.,Ltd. |
|
CP02 | Change in the address of a patent holder |