CN114448909A - 基于ovs的网卡队列轮询方法、装置、计算机设备及介质 - Google Patents

基于ovs的网卡队列轮询方法、装置、计算机设备及介质 Download PDF

Info

Publication number
CN114448909A
CN114448909A CN202111617149.0A CN202111617149A CN114448909A CN 114448909 A CN114448909 A CN 114448909A CN 202111617149 A CN202111617149 A CN 202111617149A CN 114448909 A CN114448909 A CN 114448909A
Authority
CN
China
Prior art keywords
threads
pmd
network card
polling
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
Application number
CN202111617149.0A
Other languages
English (en)
Other versions
CN114448909B (zh
Inventor
湛松涛
李成
张衡
梁满仓
刘珂
韩丁
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Tianyi Cloud Technology Co Ltd
Original Assignee
Tianyi Cloud Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Tianyi Cloud Technology Co Ltd filed Critical Tianyi Cloud Technology Co Ltd
Priority to CN202111617149.0A priority Critical patent/CN114448909B/zh
Publication of CN114448909A publication Critical patent/CN114448909A/zh
Application granted granted Critical
Publication of CN114448909B publication Critical patent/CN114448909B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/50Queue scheduling
    • H04L47/62Queue scheduling characterised by scheduling criteria
    • H04L47/622Queue service order
    • H04L47/6225Fixed service order, e.g. Round Robin
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/70Virtual switches

Abstract

本发明提供基于ovs的网卡队列轮询方法、装置、计算机设备及介质。包括:确定虚拟机占用宿主机中用于创建虚拟机的cpu的核心数量比例。获取ovs配置pmd线程的线程总量。根据cpu核心数量比例和线程总量,确定用于轮询虚拟机网卡队列的pmd线程的第一数量。根据本地numa中的多个pmd线程,确定用于轮询网卡队列的第二数量pmd线程。若第二数量小于第一数量,则根据第一数量与第二数量之间的数量差以及非本地numa中的多个pmd线程,分配第三数量pmd线程。通过第二数量pmd线程和第三数量pmd线程,轮询虚拟机网卡队列。能够根据网卡队列的网络性能需求提供合理的pmd线程数量,提高虚拟机对应网卡的处理能力。

Description

基于ovs的网卡队列轮询方法、装置、计算机设备及介质
技术领域
本发明涉及计算机技术领域,具体涉及一种基于ovs的网卡队列轮询方法、装置、计算机设备及介质。
背景技术
随着云计算技术的推广,虚拟化技术得到极大的发展,为了支持同一台服务器的多台虚拟机的网络通信问题,在服务器内部虚拟化一台网络设备(交换机、路由器防火墙等)用于解决各个虚拟机的网络通信问题。其中,ovs(openvswitch)是一种常见的虚拟网络设备实现方案。当虚拟机的网卡接收到网络报文之后,ovs通过轮询模式驱动程序(PollMode Driver,pmd)线程轮询网卡设备处理数据包,进而实现网络转发。其中,一个pmd线程绑定一个cpu逻辑核心(core)。
服务器通常有多个非统一内存访问(Non Uniform Memory Access,numa),并且每个numa上都有一定数量的cpu core,因此,虚拟机可以在一个单独的numa上运行,也可跨越多个numa运行。当pmd线程和网卡(供虚拟机使用)部署在同一numa时,可以将该numa上的pmd线程分配给该网卡队列,控制网络报文的转发。
相关技术中,为虚拟机分配pmd线程时,仅能根据该虚拟机网卡所在的numa中的pmd线程轮询网卡队列,进而控制网络报文的转发。但采用该种方式,当虚拟机的规模较大,且该numa中的pmd线程数量较少时,则不能满足网卡的网络性能需求,进而导致该网卡的处理能力下降。
发明内容
因此,本发明要解决的技术问题在于克服现有技术中当numa中的pmd线程数量较少,不能满足该虚拟机的网络报文的转发,进而影响网卡处理能力的缺陷,从而提供一种基于ovs的网卡队列轮询方法、装置、计算机设备及介质。
在第一方面,本发明提供一种基于ovs的网卡队列轮询方法,应用于宿主机,所述宿主机中包括已创建的虚拟机和多个numa,所述方法包括:确定所述虚拟机占用所述宿主机中用于创建虚拟机的cpu的核心数量比例。获取ovs配置pmd线程的线程总量。根据所述cpu核心数量比例和所述线程总量,确定用于轮询所述虚拟机网卡队列的pmd线程的第一数量。根据本地numa中的多个pmd线程,确定用于轮询所述网卡队列的第二数量pmd线程,其中,所述本地numa为所述虚拟机对应网卡所在的numa。若所述第二数量小于所述第一数量,则根据所述第一数量与所述第二数量之间的数量差以及非本地numa中的多个pmd线程,分配用于轮询所述网卡队列的第三数量pmd线程。通过所述第二数量pmd线程和所述第三数量pmd线程,轮询所述虚拟机网卡队列。
结合第一方面,在第一方面的第一实施例中,所述方法还包括:根据所述第二数量与所述第三数量之间的比值以及所述网卡队列的轮询总量,确定所述第二数量pmd线程轮询所述网卡队列的第一轮询量。
结合第一方面的第一实施例,在第一方面的第二实施例中,所述方法还包括:确定所述第三数量pmd线程轮询所述网卡队列的第二轮询量。
结合第一方面、第一方面的第一实施例或者第二实施例,在第一方面的第三实施例中,所述方法还包括:若所述第二数量大于或者等于所述第一数量,则通过所述第一数量pmd线程,轮询所述虚拟机网卡队列。
在第二方面,本发明提供一种基于ovs的网卡队列轮询装置,应用于宿主机,所述宿主机中包括已创建的虚拟机和多个numa,所述装置包括:第一确定单元,用于确定所述虚拟机占用所述宿主机中用于创建虚拟机的cpu的核心数量比例。获取单元,用于获取ovs配置pmd线程的线程总量。第二确定单元,用于根据所述cpu核心数量比例和所述线程总量,确定用于轮询所述虚拟机网卡队列的pmd线程的第一数量。第一分配单元,用于根据本地numa中的多个pmd线程,确定用于轮询所述网卡队列的第二数量pmd线程,其中,所述本地numa为所述虚拟机对应网卡所在的numa。第二分配单元,用于若所述第二数量小于所述第一数量,则根据所述第一数量与所述第二数量之间的数量差以及非本地numa中的多个pmd线程,分配用于轮询所述网卡队列的第三数量pmd线程。第一轮询单元,用于通过所述第二数量pmd线程和所述第三数量pmd线程,轮询所述虚拟机网卡队列。
结合第二方面,在第二方面的第一实施例中,所述装置还包括:第三分配单元,用于根据所述第二数量与所述第三数量之间的比值以及所述网卡队列的轮询总量,确定所述第二数量pmd线程轮询所述网卡队列的第一轮询量。
结合第二方面的第一实施例,在第二方面的第二实施例中,所述装置还包括:第四分配单元,用于确定所述第三数量pmd线程轮询所述网卡队列的第二轮询量。
结合第二方面、第二方面的第一实施例或者第二实施例,在第二方面的第三实施例中,所述装置还包括:第二轮询单元,用于若所述第二数量大于或者等于所述第一数量,则通过所述第一数量pmd线程,轮询所述虚拟机网卡队列。
根据第三方面,本发明实施方式还提供一种计算机设备,包括存储器和轮询器,所述存储器和所述轮询器之间互相通信连接,所述存储器中存储有计算机指令,所述轮询器通过执行所述计算机指令,从而执行执行第一方面及其可选实施方式中任一项的基于ovs的网卡队列轮询方法。
根据第四方面,本发明实施方式还提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机指令,所述计算机指令用于使所述计算机执行第一方面及其可选实施方式中任一项的基于ovs的网卡队列轮询方法。
通过本发明提供的基于ovs的网卡队列轮询方法,能够基于虚拟机与宿主机之间的cpu核心数量比例,确定用于轮询该虚拟机网卡队列的pmd线程的第一数量,以便能够根据网卡队列的网络性能需求,提供合理的pmd线程数量。进而当本地numa中能够轮询该网卡队列的pmd线程数量小于第一数量的情况时,为使宿主机中的各numa所提供的pmd线程能够被充分利用,则可以结合非本地numa中的pmd线程共同轮询该网卡队列,从而满足该虚拟机所需的网络性能同时,有助于提高该虚拟机对应网卡的网络报文处理能力。
附图说明
为了更清楚地说明本发明具体实施方式或现有技术中的技术方案,下面将对具体实施方式或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施方式,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是根据一示例性实施例提出的一种pmd线程分配示意图。
图2是根据一示例性实施例提出的一种基于ovs的网卡队列轮询方法的流程图。
图3是根据一示例性实施例提出的另一种基于ovs的网卡队列轮询方法的流程图。
图4是根据一示例性实施例提出的又一种基于ovs的网卡队列轮询方法的流程图。
图5是根据一示例性实施例提出的又一种基于ovs的网卡队列轮询方法的流程图。
图6是根据一示例性实施例提出的另一种pmd线程分配示意图。
图7是根据一示例性实施例提出的又一种pmd线程分配示意图。
图8是根据一示例性实施例提出的一种基于ovs的网卡队列轮询装置的结构框图。
图9是根据一示例性实施例提出的一种计算机设备的硬件结构示意图。
具体实施方式
下面将结合附图对本发明的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
相关技术中,为虚拟机分配pmd线程时,是通过该虚拟机网卡所在的numa中的pmd线程轮询网卡队列。为保证numa的类同(affinity),ovs在分配pmd线程绑定的cpu core时,会根据每个numa中的cpu core个数在每个numa上为pmd线程分配固定比例的cpu core来执行pmd转发功能。
为便于描述,为各虚拟机网卡队列分配pmd线程的过程,可以如图1所示。图1是根据一示例性实施例提出的一种pmd线程分配示意图。宿主机中包括两个numa,分别为numa0和numa1,且各自绑定的cpu core数量均为48。若该固定比例为1:8,则ovs在分配pmd线程绑定的core时,会在numa0或numa1中,选取6个core与pmd线程绑定,进而为虚拟机网卡队列分配6个pmd线程。若在numa0和numa1上分别创建使用42个cpu core的虚拟机,则可以达到numa affinity的目的。其中,numa0分配的pmd1…pmd6用于处理虚拟机VM_1中的网络报文,numa1分配的pmd7…pmd12用于处理虚拟机VM_2的网络报文。其中,internet用于为ovs提供网络环境。
由于ovs为虚拟机分配pmd线程时,仅能根据该虚拟机网卡所在的numa中的pmd线程轮询网卡队列。若在numa0上创建使用63个cpu core的虚拟机时,该虚拟机所使用的cpucore数量大于numa0所能够提供的cpu core的数量(48-6=42),并且numa0为其提供网络转发的core则上限是6,则容易导致numa0中为pmd线程所分配的core过于繁忙。此时,若在numa1上创建使用21个cpu core的虚拟机,小于numa1所能够提供的cpu core的数量(48-6=42),则容易导致numa1中为pmd线程所分配的core过于空闲。
因此,若在numa上创建的虚拟机的cpu core数量远大于numa能够分配的pmd线程数量,则采用上述方式处理网络报文的转发,不能满足虚拟机对应网卡的网络性能需求,进而导致该虚拟机网卡的处理能力下降。
为解决上述问题,本发明实施例中提供一种基于ovs的网卡队列轮询方法,用于计算机设备中,需要说明的是,其执行主体可以是基于ovs的网卡队列轮询装置,该装置可以通过软件、硬件或者软硬件结合的方式实现成为存储设备的部分或者全部,其中,该计算机设备可以是终端或客户端或服务器,服务器可以是一台服务器,也可以为由多台服务器组成的服务器集群,本申请实施例中的终端可以是智能手机、个人电脑、平板电脑、可穿戴设备以及智能机器人等其他智能硬件设备。下述方法实施例中,均以执行主体是计算机设备为例来进行说明。
本发明实施例中的计算机设备,可以理解为是宿主机。宿主机内包括多个numa,可以在该宿主机中创建至少一个虚拟机。其中,虚拟机对应网卡所在的numa为本地numa,其他numa则为非本地numa。为便于描述,以下将numa为pmd线程分配cpu core,并将该cpu core绑定pmd线程的过程,简称为分配pmd线程。
通过本发明提供的基于ovs的网卡队列轮询方法,能够基于虚拟机与宿主机之间的cpu核心数量比例,确定用于轮询该虚拟机网卡队列的pmd线程的第一数量,以便能够根据网卡队列的网络性能需求,提供合理的pmd线程数量。进而当本地numa中能够轮询该网卡队列的pmd线程数量小于第一数量的情况时,为使宿主机中的各numa所提供的pmd线程能够被充分利用,则可以结合非本地numa中的pmd线程共同轮询该网卡队列,从而满足该虚拟机所需的网络性能同时,有助于提高该虚拟机对应网卡的网络报文处理能力。
图2是根据一示例性实施例提出的一种基于ovs的网卡队列轮询方法的流程图。如图2所示,基于ovs的网卡队列轮询方法包括如下步骤S201至步骤S206。
在步骤S201中,确定虚拟机占用宿主机中用于创建虚拟机的cpu的核心数量比例。
在本发明实施例中,由于虚拟机绑定的cpu core的数量越多,所需要的网络资源越多,因此,先确定虚拟机占用宿主机中用于创建虚拟机的cpu的核心数量比例,以便通过cpu core比例,确定轮询该虚拟机网卡队列所需的pmd线程数量,进而充分利用pmd线程的性能,使虚拟机网卡处理网络报文时,能够为其提供合理的网络资源,从而提高该虚拟机对应网卡的网络报文处理能力。
在一实施场景中,确定过程可以如下:若宿主机能提供的CPU资源为cpu0…cpu20+cpu21…cpu41+cpu48…cpu68+cpu69…cpu89=84个cpu core,虚拟机占用的CPU资源cpu0…cpu20+cpu21…cpu41+cpu48…cpu68=63个cpu core。则虚拟机占用宿主机中用于创建虚拟机的cpu的core比例=63/84=3/4。
在步骤S202中,获取ovs配置pmd线程的线程总量。
在步骤S203中,根据cpu核心数量比例和线程总量,确定用于轮询虚拟机网卡队列的pmd线程的第一数量。
在本发明实施例中,为避免pmd线程在轮询网卡队列时出现超负载或者欠负载的情况,则在确定处理该虚拟机网卡队列的pmd线程的第一数量时,根据cpu核心数量比例和线程总量进行确定,进而在分配pmd线程时,能够使各pmd线程的负载相同,达到合理使用pmd线程的目的。
在一示例中,可以根据cpu核心数量比例与线程总量之间的乘积,确定用于轮询虚拟机网卡队列的pmd线程的第一数量。例如:若确定的cpu core比例为3/4,线程总量为12,则第一数量=12*3/4=9,即,用于轮询虚拟机网卡队列的pmd线程的第一数量为9。
在步骤S204中,根据本地numa中的多个pmd线程,确定用于轮询网卡队列的第二数量pmd线程。
在本发明实施例中,本地numa为虚拟机对应网卡所在的numa。在轮询虚拟机网卡队列是在本地numa中进行处理的,因此,在分配pmd线程时,优先判断本地numa中所提供的pmd线程是否能够满足轮询网卡队列的需求。故,根据本地numa中的多个pmd线程,确定用于轮询网卡队列的第二数量pmd线程。在一例中,若本地numa中的pmd线程均处于空闲状态,且该本地numa上仅包括一个虚拟机,则第二数量则为本地numa所能够分配的所有数量。在另一例中,若本地numa中部分pmd线程已分配至为其他虚拟机轮询网卡队列,则该本地numa中处于空闲状态(待分配)的pmd线程的数量即为第二数量。
在步骤S205中,若第二数量小于第一数量,则根据第一数量与第二数量之间的数量差以及非本地numa中的多个pmd线程,分配用于轮询网卡队列的第三数量pmd线程。
在本发明实施例中,若第二数量小于第一数量,则表征本地numa中的pmd线程不能满足该虚拟网卡处理网络报文的需求,需要从非本地numa中调用为该虚拟机网卡队列进行轮询处理的pmd线程。因此,为明确需要非本地numa分配pmd线程的第三数量,则根据第一数量与第二数量之间的数量差以及非本地numa中的多个pmd线程进行确定。例如:若第一数量为9,第二数量为6,则所需要非本地numa分配用于轮询网卡队列的pmd线程的第三数量=9-6=3,即,需要非本地numa分配3个pmd线程用于轮询该网卡队列。
在步骤S206中,通过第二数量pmd线程和第三数量pmd线程,轮询虚拟机网卡队列。
在本发明实施例中,根据分配好用于轮询网卡队列的第二数量pmd线程和第三数量pmd线程,通过本地numa中的第二数量pmd线程和非本地numa中第三数量pmd线程,共同轮询虚拟机网卡队列,以使虚拟机对应的网卡具有足够的网络性能处理网络报文的转发。
通过上述实施例,能够基于虚拟机与宿主机之间的cpu核心数量比例,根据网卡队列的网络性能需求,确定轮询网卡队列所需的pmd线程数量。并且,当本地numa中能够轮询该网卡队列的pmd线程数量小于第一数量的情况时,为使宿主机中的各numa所提供的pmd线程能够被充分利用,则可以结合非本地numa中的pmd线程共同轮询该网卡队列,进而满足该虚拟机对应网卡的网络性能需求的同时,有助于提高该虚拟机对应网卡的网络报文处理能力。
在一实施例中,若当前非本地numa中能够为网卡队列分配pmd线程的第四数量小于第三数量,则根据第三数量与第四数量之间的数量差,从下一非本地numa的多个pmd线程中,分配与该数量差数值相同的pmd线程,进而结合本地numa、当前非本地numa以及下一非本地numa中用于轮询网卡队列的pmd线程,共同轮询该网卡队列。在一例中,若下一非本地numa的多个pmd线程中能够为网卡队列分配pmd线程的第五数量小于第三数量与第四数量之间的数量差,则继续从下一numa中获取用于轮询该网卡队列的pmd线程,直至各numa所分配用于轮询网卡队列的pmd数量满足第一数量,从而满足虚拟机对应网卡的网络性能需求。
图3是根据一示例性实施例提出的另一种基于ovs的网卡队列轮询方法的流程图。如图3所示,基于ovs的网卡队列轮询方法包括如下步骤。
在步骤S301中,确定虚拟机占用宿主机中用于创建虚拟机的cpu的核心数量比例。
在步骤S302中,获取ovs配置pmd线程的线程总量。
在步骤S303中,根据cpu核心数量比例和线程总量,确定用于轮询虚拟机网卡队列的pmd线程的第一数量。
在步骤S304中,根据本地numa中的多个pmd线程,确定用于轮询网卡队列的第二数量pmd线程。
在步骤S305中,若第二数量小于第一数量,则根据第一数量与第二数量之间的数量差以及非本地numa中的多个pmd线程,分配用于轮询网卡队列的第三数量pmd线程。
在步骤S306中,通过第二数量pmd线程和第三数量pmd线程,轮询虚拟机网卡队列。
在步骤S307中,根据第二数量与第三数量之间的比值以及网卡队列的轮询总量,确定第二数量pmd线程轮询网卡队列的第一轮询量。
在本发明实施例中,pmd线程的数量越多,能够提供的网络性能越多,因此,为合理分配各pmd线程轮询网卡队列所处理的轮询任务,则根据第二数量与第三数量之间的比值,确定本地numa所需轮询的第一轮询量,以保证各pmd线程在轮询网卡队列时的负载状态相同。因此,为确定本地numa中第二数量pmd线程执行轮询任务的第一轮询量,则根据第二数量与第三数量之间的比值进行确定。即,第一轮询量=第二数量/(第二数量+第三数量)*轮询总量。例如:第二数量与第三数量之间的比值为6:3,则在本地numa中pmd线程所处理的第一轮询量=6/(6+3)*轮询总量=2/3*轮询总量。
通过上述实施例,根据第二数量与第三数量之间的比值,有助于明确各numa分配的pmd线程所需要执行轮询任务的轮询量,进而均衡各pmd线程的负载情况,以便充分利用pmd线程所提供的网络性能。
图4是根据一示例性实施例提出的又一种基于ovs的网卡队列轮询方法的流程图。如图4所示,基于ovs的网卡队列轮询方法包括如下步骤。
在步骤S401中,确定虚拟机占用宿主机中用于创建虚拟机的cpu的核心数量比例。
在步骤S402中,获取ovs配置pmd线程的线程总量。
在步骤S403中,根据cpu核心数量比例和线程总量,确定用于轮询虚拟机网卡队列的pmd线程的第一数量。
在步骤S404中,根据本地numa中的多个pmd线程,确定用于轮询网卡队列的第二数量pmd线程。
在步骤S405中,若第二数量小于第一数量,则根据第一数量与第二数量之间的数量差以及非本地numa中的多个pmd线程,分配用于轮询网卡队列的第三数量pmd线程。
在步骤S406中,通过第二数量pmd线程和第三数量pmd线程,轮询虚拟机网卡队列。
在步骤S407中,根据第二数量与第三数量之间的比值以及网卡队列的轮询总量,确定第二数量pmd线程轮询网卡队列的第一轮询量。
在步骤S408中,确定第三数量pmd线程轮询网卡队列的第二轮询量。
在本发明实施例中,第二轮询量可以直接根据轮询总量与第一轮询量之间的数量差得到,即,第二轮询量=轮询总量-第一轮询量。或者,根据根据第二数量与第三数量之间的比值以及网卡队列的轮询总量进行确定。即,第二轮询量=第三数量/(第二数量+第三数量)*轮询总量。例如:第二数量与第三数量之间的比值为6:3,则在非本地numa中pmd线程所处理的第二轮询量=3/(6+3)*轮询总量=1/3*轮询总量。
通过上述实施例,能够明确各numa中pmd线程在轮询网卡队列时所需处理的轮询任务数量。
图5是根据一示例性实施例提出的又一种基于ovs的网卡队列轮询方法的流程图。如图5所示,基于ovs的网卡队列轮询方法包括如下步骤。
在步骤S501中,确定虚拟机占用宿主机中用于创建虚拟机的cpu的核心数量比例。
在步骤S502中,获取ovs配置pmd线程的线程总量。
在步骤S503中,根据cpu核心数量比例和线程总量,确定用于轮询虚拟机网卡队列的pmd线程的第一数量。
在步骤S504中,根据本地numa中的多个pmd线程,确定用于轮询网卡队列的第二数量pmd线程。
在步骤S505中,若第二数量小于第一数量,则根据第一数量与第二数量之间的数量差以及非本地numa中的多个pmd线程,分配用于轮询网卡队列的第三数量pmd线程。
在步骤S506中,通过第二数量pmd线程和第三数量pmd线程,轮询虚拟机网卡队列。
在步骤S507中,若第二数量大于或者等于第一数量,则通过所述第一数量pmd线程,轮询虚拟机网卡队列。
在本发明实施例中,若第二数量大于或者等于第一数量,则表征本地numa中的pmd线程能够满足网卡队列所需的网络性能需求,进而无需从非本地numa中为该网卡队列分配pmd线程,直接通过本地numa中的第一数量pmd线程,轮询虚拟机网卡队列。
通过上述实施例,能够根据本地numa中能够为网卡队列分配地pmd线程数量,确定是否需要从非本地numa中分配轮询该网卡队列的pmd线程,进而使pmd线程的分配方式更灵活。
在一示例中,由于轮询网卡队列时,是根据队列索引(idx)的先后顺序进行轮询的,因此,避免不同numa中的pmd进行在执行轮询任务时相互干扰,且优先由本地numa中的pmd线程轮询网卡队列,则根据队列索引的先后顺序,将前第一轮询量的各轮询任务分配至本地numa中的第二数量pmd线程进行轮询,将剩余的各轮询任务分配至非本地numa中的第三数量pmd线程进行轮询。
在另一示例中,当网卡队列由三个numa中的pmd线程共同处理时,则pmd线程执行轮询任务的分配过程可以如图6所示。图6是根据一示例性实施例提出的另一种pmd线程分配示意图。其中,numa_a为本地numa,numa_b和numa_c为非本地numa,且numa_b和numa_c分别分配一个qmd线程用于轮询numa_a上的网卡队列,queue_0、queue_1、queue_2、queue_3……queue_n表示各轮询任务,queue_idx表示当前轮询任务的索引。当numa_a中用于轮询网卡队列的pmd线程的第二数量为4,则numa_a对应处理的第一轮询量为4/(4+1+1)*轮询总量=2/3*轮询总量,进而将前2/3的轮询任务交由numa_a中的pmd线程进行轮询处理。将中间1/(4+1+1)*轮询总量=1/6*轮询总量交由numa_b中的pmd线程进行轮询处理。将最后1/(4+1+1)*轮询总量=1/6*轮询总量交由numa_c中的pmd线程进行轮询处理。
在一实施场景中,为网卡队列分配pmd线程的过程可以如图7所示。图7是根据一示例性实施例提出的又一种pmd线程分配示意图。
在宿主机中,cpu core的总量为96,分配至pmd线程的core数量为12,即,ovs配置pmd线程的线程总量为12,numa_0和numa_1中各包括42个用于为虚拟机提供的cpu core。当在numa_0上创建一个使用63个cpu core的虚拟机VM_1后,确定虚拟机VM_1占用宿主机中用于创建虚拟机的cpu的核心数量比例=63/(96-12)=3/4。确定轮询虚拟机VM_1网卡队列的pmd线程的第一数量=12*3/4=9。当numa_0能够为网卡队列分配pmd线程的第二数量为6时,则根据第一数量12和第二数量9,确定需要numa_1分配pmd线程的第三数量=12-9=3。进而可以确定ovs配置的12个pmd线程中,编号为pmd1~pmd9的pmd线程分配至虚拟机VM_1的网卡队列。根据第二数量与第三数量之间的比值,确定numa_0中pmd线程执行的第一轮询量和numa_1中pmd线程执行的第二轮询量。
若numa_1上创建一个使用21个cpu core的虚拟机VM_2,则将编号为pmd10~pmd12的pmd线程分配至虚拟机VM_2的网卡队列。
基于相同发明构思,本发明还提供一种应用于宿主机的基于ovs的网卡队列轮询装置。
图8是根据一示例性实施例提出的一种基于ovs的网卡队列轮询装置的结构框图。如图8所示,基于ovs的网卡队列轮询装置包括第一确定单元801、获取单元802、第二确定单元803、第一分配单元804、第二分配单元805和第一轮询单元806。
第一确定单元801,用于确定虚拟机占用宿主机中用于创建虚拟机的cpu的核心数量比例;
获取单元802,用于获取ovs配置pmd线程的线程总量;
第二确定单元803,用于根据cpu核心数量比例和线程总量,确定用于轮询虚拟机网卡队列的pmd线程的第一数量;
第一分配单元804,用于根据本地numa中的多个pmd线程,确定用于轮询网卡队列的第二数量pmd线程,其中,本地numa为虚拟机对应网卡所在的numa;
第二分配单元805,用于若第二数量小于第一数量,则根据第一数量与第二数量之间的数量差以及非本地numa中的多个pmd线程,分配用于轮询网卡队列的第三数量pmd线程;
第一轮询单元806,用于通过第二数量pmd线程和第三数量pmd线程,轮询虚拟机网卡队列。
在一实施例中,装置还包括:第三分配单元,用于根据第二数量与第三数量之间的比值以及网卡队列的轮询总量,确定第二数量pmd线程轮询网卡队列的第一轮询量。
在另一实施例中,装置还包括:第四分配单元,用于确定第三数量pmd线程轮询网卡队列的第二轮询量。
在又一实施例中,装置还包括:第二轮询单元,用于若第二数量大于或者等于第一数量,则通过所述第一数量pmd线程,轮询虚拟机网卡队列。
上述基于ovs的网卡队列轮询装置的具体限定以及有益效果可以参见上文中对于基于ovs的网卡队列轮询方法的限定,在此不再赘述。上述各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
图9是根据一示例性实施例提出的一种计算机设备的硬件结构示意图。如图9所示,该设备包括一个或多个处理器910以及存储器920,存储器920包括持久内存、易失内存和硬盘,图9中以一个处理器910为例。该设备还可以包括:输入装置930和输出装置940。
处理器910、存储器920、输入装置930和输出装置940可以通过总线或者其他方式连接,图9中以通过总线连接为例。
处理器910可以为中央处理器(Central Processing Unit,cpu)。处理器910还可以为其他通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等芯片,或者上述各类芯片的组合。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
存储器920作为一种非暂态计算机可读存储介质,包括持久内存、易失内存和硬盘,可用于存储非暂态软件程序、非暂态计算机可执行程序以及模块,如本申请实施例中的业务管理方法对应的程序指令/模块。处理器910通过运行存储在存储器920中的非暂态软件程序、指令以及模块,从而执行服务器的各种功能应用以及数据处理,即实现上述任意一种基于ovs的网卡队列轮询方法。
存储器920可以包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需要的应用程序;存储数据区可存储根据、需要使用的数据等。此外,存储器920可以包括高速随机存取存储器,还可以包括非暂态存储器,例如至少一个磁盘存储器件、闪存器件、或其他非暂态固态存储器件。在一些实施例中,存储器920可选包括相对于处理器910远程设置的存储器,这些远程存储器可以通过网络连接至数据处理装置。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
输入装置930可接收输入的数字或字符信息,以及产生与用户设置以及功能控制有关的键信号输入。输出装置940可包括显示屏等显示设备。
一个或者多个模块存储在存储器920中,当被一个或者多个处理器910执行时,执行如图2-图7所示的方法。
上述产品可执行本发明实施例所提供的方法,具备执行方法相应的功能模块和有益效果。未在本实施例中详尽描述的技术细节,具体可参见如图2-图7所示的实施例中的相关描述。
本发明实施例还提供了一种非暂态计算机存储介质,计算机存储介质存储有计算机可执行指令,该计算机可执行指令可执行上述任意方法实施例中的认证方法。其中,存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)、随机存储记忆体(RandomAccess Memory,RAM)、快闪存储器(Flash Memory)、硬盘(Hard Disk Drive,缩写:HDD)或固态硬盘(Solid-State Drive,SSD)等;存储介质还可以包括上述种类的存储器的组合。
显然,上述实施例仅仅是为清楚地说明所作的举例,而并非对实施方式的限定。对于所属领域的普通技术人员来说,在上述说明的基础上还可以做出其它不同形式的变化或变动。这里无需也无法对所有的实施方式予以穷举。而由此所引伸出的显而易见的变化或变动仍处于本发明创造的保护范围之中。

Claims (10)

1.一种基于ovs的网卡队列轮询方法,其特征在于,应用于宿主机,所述宿主机中包括已创建的虚拟机和多个numa,所述方法包括:
确定所述虚拟机占用所述宿主机中用于创建虚拟机的cpu的核心数量比例;
获取ovs配置pmd线程的线程总量;
根据所述cpu核心数量比例和所述线程总量,确定用于轮询所述虚拟机网卡队列的pmd线程的第一数量;
根据本地numa中的多个pmd线程,确定用于轮询所述网卡队列的第二数量pmd线程,其中,所述本地numa为所述虚拟机对应网卡所在的numa;
若所述第二数量小于所述第一数量,则根据所述第一数量与所述第二数量之间的数量差以及非本地numa中的多个pmd线程,分配用于轮询所述网卡队列的第三数量pmd线程;
通过所述第二数量pmd线程和所述第三数量pmd线程,轮询所述虚拟机网卡队列。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
根据所述第二数量与所述第三数量之间的比值以及所述网卡队列的轮询总量,确定所述第二数量pmd线程轮询所述网卡队列的第一轮询量。
3.根据权利要求2所述的方法,其特征在于,所述方法还包括:
确定所述第三数量pmd线程轮询所述网卡队列的第二轮询量。
4.根据权利要求1-3中任一项所述的方法,其特征在于,所述方法还包括:
若所述第二数量大于或者等于所述第一数量,则通过所述第一数量pmd线程,轮询所述虚拟机网卡队列。
5.一种基于ovs的网卡队列轮询装置,其特征在于,应用于宿主机,所述宿主机中包括已创建的虚拟机和多个numa,所述装置包括:
第一确定单元,用于确定所述虚拟机占用所述宿主机中用于创建虚拟机的cpu的核心数量比例;
获取单元,用于获取ovs配置pmd线程的线程总量;
第二确定单元,用于根据所述cpu核心数量比例和所述线程总量,确定用于轮询所述虚拟机网卡队列的pmd线程的第一数量;
第一分配单元,用于根据本地numa中的多个pmd线程,确定用于轮询所述网卡队列的第二数量pmd线程,其中,所述本地numa为所述虚拟机对应网卡所在的numa;
第二分配单元,用于若所述第二数量小于所述第一数量,则根据所述第一数量与所述第二数量之间的数量差以及非本地numa中的多个pmd线程,分配用于轮询所述网卡队列的第三数量pmd线程;
第一轮询单元,用于通过所述第二数量pmd线程和所述第三数量pmd线程,轮询所述虚拟机网卡队列。
6.根据权利要求5所述的装置,其特征在于,所述装置还包括:
第三分配单元,用于根据所述第二数量与所述第三数量之间的比值以及所述网卡队列的轮询总量,确定所述第二数量pmd线程轮询所述网卡队列的第一轮询量。
7.根据权利要求6所述的装置,其特征在于,所述装置还包括:
第四分配单元,用于确定所述第三数量pmd线程轮询所述网卡队列的第二轮询量。
8.根据权利要求5-7中任一项所述的装置,其特征在于,所述装置还包括:
第二轮询单元,用于若所述第二数量大于或者等于所述第一数量,则通过所述第一数量pmd线程,轮询所述虚拟机网卡队列。
9.一种计算机设备,其特征在于,包括存储器和轮询器,所述存储器和所述轮询器之间互相通信连接,所述存储器中存储有计算机指令,所述轮询器通过执行所述计算机指令,从而执行权利要求1-4中任一项所述的基于ovs的网卡队列轮询方法。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机指令,所述计算机指令用于使所述计算机执行权利要求1-4中任一项所述的基于ovs的网卡队列轮询方法。
CN202111617149.0A 2021-12-27 2021-12-27 基于ovs的网卡队列轮询方法、装置、计算机设备及介质 Active CN114448909B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202111617149.0A CN114448909B (zh) 2021-12-27 2021-12-27 基于ovs的网卡队列轮询方法、装置、计算机设备及介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202111617149.0A CN114448909B (zh) 2021-12-27 2021-12-27 基于ovs的网卡队列轮询方法、装置、计算机设备及介质

Publications (2)

Publication Number Publication Date
CN114448909A true CN114448909A (zh) 2022-05-06
CN114448909B CN114448909B (zh) 2023-10-13

Family

ID=81365520

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202111617149.0A Active CN114448909B (zh) 2021-12-27 2021-12-27 基于ovs的网卡队列轮询方法、装置、计算机设备及介质

Country Status (1)

Country Link
CN (1) CN114448909B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115794317A (zh) * 2023-02-06 2023-03-14 天翼云科技有限公司 一种基于虚拟机的处理方法、装置、设备及介质

Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104636187A (zh) * 2015-02-15 2015-05-20 浙江大学 基于负载预测的numa架构中虚拟机调度方法
CN106095580A (zh) * 2016-06-14 2016-11-09 上海交通大学 一种针对半虚拟化网卡的数据包高效发送方法
CN108062269A (zh) * 2017-12-05 2018-05-22 上海交通大学 一种基于dpdk的计算资源弹性伸缩方法及系统
CN109787777A (zh) * 2017-11-10 2019-05-21 北京金山云网络技术有限公司 一种网卡模式切换方法、装置、电子设备及存储介质
CN110673928A (zh) * 2019-09-29 2020-01-10 天津卓朗科技发展有限公司 线程绑定方法、装置、存储介质及服务器
CN112003797A (zh) * 2020-07-16 2020-11-27 苏州浪潮智能科技有限公司 一种虚拟化dpdk网络性能提高方法、系统、终端及存储介质
CN112698934A (zh) * 2019-10-22 2021-04-23 华为技术有限公司 资源调度方法和装置、pmd调度装置、电子设备、存储介质
US20210303356A1 (en) * 2020-03-25 2021-09-30 Red Hat, Inc. Flexible reverse ballooning for nested virtual machines
CN113535433A (zh) * 2021-07-21 2021-10-22 广州市品高软件股份有限公司 基于Linux系统的控制转发分离方法、装置、设备和存储介质

Patent Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104636187A (zh) * 2015-02-15 2015-05-20 浙江大学 基于负载预测的numa架构中虚拟机调度方法
CN106095580A (zh) * 2016-06-14 2016-11-09 上海交通大学 一种针对半虚拟化网卡的数据包高效发送方法
CN109787777A (zh) * 2017-11-10 2019-05-21 北京金山云网络技术有限公司 一种网卡模式切换方法、装置、电子设备及存储介质
CN108062269A (zh) * 2017-12-05 2018-05-22 上海交通大学 一种基于dpdk的计算资源弹性伸缩方法及系统
CN110673928A (zh) * 2019-09-29 2020-01-10 天津卓朗科技发展有限公司 线程绑定方法、装置、存储介质及服务器
CN112698934A (zh) * 2019-10-22 2021-04-23 华为技术有限公司 资源调度方法和装置、pmd调度装置、电子设备、存储介质
US20210303356A1 (en) * 2020-03-25 2021-09-30 Red Hat, Inc. Flexible reverse ballooning for nested virtual machines
CN112003797A (zh) * 2020-07-16 2020-11-27 苏州浪潮智能科技有限公司 一种虚拟化dpdk网络性能提高方法、系统、终端及存储介质
CN113535433A (zh) * 2021-07-21 2021-10-22 广州市品高软件股份有限公司 基于Linux系统的控制转发分离方法、装置、设备和存储介质

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
MISHAL SHAH等: "PowerDPDK: Software-Based Real-Time Power Measurement for DPDK Applications", 《020 IEEE CONFERENCE ON NETWORK FUNCTION VIRTUALIZATION AND SOFTWARE DEFINED NETWORKS (NFV-SDN)》 *
张柳霞: "基于DPDK平台的虚拟交换机关键技术研究与实现", 《CNKI优秀硕士学位论文全文库》 *
李龙飞;王剑峰;刘欢;史阳春;: "硬件支持的多虚拟机数据交换及动态带宽分配方法", 微电子学与计算机, no. 01 *

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115794317A (zh) * 2023-02-06 2023-03-14 天翼云科技有限公司 一种基于虚拟机的处理方法、装置、设备及介质

Also Published As

Publication number Publication date
CN114448909B (zh) 2023-10-13

Similar Documents

Publication Publication Date Title
US10891158B2 (en) Task scheduling method and apparatus
CN106371894B (zh) 一种配置方法、装置和数据处理服务器
US10572290B2 (en) Method and apparatus for allocating a physical resource to a virtual machine
CN109726005B (zh) 用于管理资源的方法、服务器系统和计算机可读介质
JP5510556B2 (ja) 仮想マシンのストレージスペースおよび物理ホストを管理するための方法およびシステム
CN111078363B (zh) 一种虚拟机的numa节点调度方法、装置、设备及介质
CN108064377B (zh) 一种多系统共享内存的管理方法及装置
CN107766145B (zh) 双系统下的内存管理方法和装置
CN112825042A (zh) 资源管理方法和装置、电子设备及存储介质
CN110162397B (zh) 资源分配方法、装置及系统
CN113849312A (zh) 数据处理任务的分配方法、装置、电子设备及存储介质
CN113032101A (zh) 虚拟机的资源分配方法、服务器及计算机可读存储介质
WO2016202154A1 (zh) 一种gpu资源的分配方法及系统
CN113821308A (zh) 片上系统、虚拟机任务处理方法及设备、存储介质
CN110998530A (zh) 一种虚拟机资源分配系统、方法及计算机程序
CN109729113B (zh) 管理专用处理资源的方法、服务器系统和计算机程序产品
CN114896068A (zh) 资源分配方法、资源分配装置、电子设备及存储介质
WO2016202153A1 (zh) 一种gpu资源的分配方法及系统
CN115033352A (zh) 多核处理器任务调度方法、装置及设备、存储介质
EP3358795A1 (en) Method and apparatus for allocating virtual resources in network functions virtualization (nfv) network
CN115904761A (zh) 片上系统、车辆及视频处理单元虚拟化方法
CN114448909B (zh) 基于ovs的网卡队列轮询方法、装置、计算机设备及介质
CN111382141A (zh) 主从架构配置方法、装置、设备以及计算机可读存储介质
CN107562510B (zh) 一种应用实例的管理方法及管理设备
CN114726657A (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