CN108337188B - 通信量和负载感知动态队列管理 - Google Patents
通信量和负载感知动态队列管理 Download PDFInfo
- Publication number
- CN108337188B CN108337188B CN201810194113.8A CN201810194113A CN108337188B CN 108337188 B CN108337188 B CN 108337188B CN 201810194113 A CN201810194113 A CN 201810194113A CN 108337188 B CN108337188 B CN 108337188B
- Authority
- CN
- China
- Prior art keywords
- queue
- pool
- queues
- traffic
- data
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000000034 method Methods 0.000 claims description 189
- 238000012545 processing Methods 0.000 claims description 37
- 238000012544 monitoring process Methods 0.000 claims description 19
- 238000005457 optimization Methods 0.000 abstract description 14
- 230000008569 process Effects 0.000 description 142
- 238000007726 management method Methods 0.000 description 63
- 238000003860 storage Methods 0.000 description 42
- 239000010410 layer Substances 0.000 description 32
- 238000001914 filtration Methods 0.000 description 14
- 238000013468 resource allocation Methods 0.000 description 10
- 239000000872 buffer Substances 0.000 description 7
- 230000008859 change Effects 0.000 description 6
- 238000013459 approach Methods 0.000 description 5
- 230000006870 function Effects 0.000 description 5
- 239000008186 active pharmaceutical agent Substances 0.000 description 4
- 230000005012 migration Effects 0.000 description 4
- 238000013508 migration Methods 0.000 description 4
- 230000002085 persistent effect Effects 0.000 description 4
- 238000004590 computer program Methods 0.000 description 3
- 238000001152 differential interference contrast microscopy Methods 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 238000004513 sizing Methods 0.000 description 3
- 230000009471 action Effects 0.000 description 2
- 238000004458 analytical method Methods 0.000 description 2
- 238000009434 installation Methods 0.000 description 2
- 230000001052 transient effect Effects 0.000 description 2
- 101001094649 Homo sapiens Popeye domain-containing protein 3 Proteins 0.000 description 1
- 101000608234 Homo sapiens Pyrin domain-containing protein 5 Proteins 0.000 description 1
- 101000578693 Homo sapiens Target of rapamycin complex subunit LST8 Proteins 0.000 description 1
- 102100027802 Target of rapamycin complex subunit LST8 Human genes 0.000 description 1
- 230000002776 aggregation Effects 0.000 description 1
- 238000004220 aggregation Methods 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 230000001010 compromised effect Effects 0.000 description 1
- 230000003750 conditioning effect Effects 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 239000002355 dual-layer Substances 0.000 description 1
- 230000036541 health Effects 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 230000006855 networking Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
- 230000005641 tunneling Effects 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/90—Buffering arrangements
- H04L49/9047—Buffering arrangements including multiple buffers, e.g. buffer pools
-
- 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
- H04L47/62—Queue scheduling characterised by scheduling criteria
- H04L47/6295—Queue scheduling characterised by scheduling criteria using multiple queues, one for each individual QoS, connection, flow or priority
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
- H04L47/24—Traffic characterised by specific attributes, e.g. priority or QoS
- H04L47/2475—Traffic characterised by specific attributes, e.g. priority or QoS for supporting traffic characterised by the type of applications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
- H04L47/24—Traffic characterised by specific attributes, e.g. priority or QoS
- H04L47/2483—Traffic characterised by specific attributes, e.g. priority or QoS involving identification of individual flows
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/70—Admission control; Resource allocation
- H04L47/78—Architectures of resource allocation
- H04L47/781—Centralised allocation of resources
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/30—Peripheral units, e.g. input or output ports
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L43/00—Arrangements for monitoring or testing data switching networks
- H04L43/08—Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters
- H04L43/0876—Network utilisation, e.g. volume of load or congestion level
- H04L43/0888—Throughput
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
- Environmental & Geological Engineering (AREA)
Abstract
本发明涉及通信量和负载感知动态队列管理。一些实施例提供了有效且动态地管理多个队列的队列管理***,多个队列处理进出在主机上执行的多个虚拟机(VM)的通信量。这个***通过以下步骤管理队列:(1)将队列分成不同优先级池,其中为特定类型的通信量或VM(例如,用于需要低延迟的VM的通信量)保留较高优先级池,(2)动态地调节每个池中的队列数量(即,动态地调节池的大小),(3)基于一个或多个优化标准(例如,与队列的未充分使用或过度使用有关的标准),将VM动态地分派给新队列。
Description
本申请是申请号为201410191336.0、发明名称为“通信量和负载感知动态队列管理”、申请日为2014年5月8日的专利申请的分案申请,其全部内容通过引用合并于此。
技术领域
在过去的几年中,已经针对用多个队列通过网络接口卡(NIC)分配进出主机的传入和传出通信量,提出了队列管理***。图1示出一个这样的***。具体地讲,图1示出(1)在主机计算机(未示出)上执行的多个虚拟机(VM)102和(2)具有多个队列的NIC 100。如在此图中示出的,每个队列具有接收侧的缓冲器集合104和发送侧的缓冲器集合106,以分别处理传入和传出通信量。该***具有四种类型的队列,它们是:默认队列105、一些非默认队列115、LRO(大型接收卸载,large receive offload)队列120和RSS(接收侧调整,receiveside scaling)队列125。后两种类型的队列是与NIC支持的专用硬件LRO和RSS功能关联的专业队列。
背景技术
图1的队列管理***跨多个队列分配进出虚拟机(VM)的通信量。在这个***中,所有VM在默认队列105中开始。每当VM的通信量超过给定阈值时,把VM从默认队列移出到非默认队列115。当把VM从默认队列移出时,这种实现方式总是将VM移向负载最小的非默认队列而不管VM的要求。这造成三个主要问题。
第一,由于目前的实现方式是在没有考虑VM的通信量类型的情况下选择非默认队列,因此具有特别要求的VM可能受到其它VM干扰。例如,如果发送和接收对延迟敏感的通信量的特定VM与运行对延迟不太敏感、对吞吐量敏感的工作负荷的一些其它VM共用同一队列,则该特定VM的延迟和抖动一定会受影响。图1中的队列150是具有用于低延迟要求(LLR)VM 152和一些高延迟容忍(HLT)VM二者的通信量的超负荷队列的示例。在这种情形下,LLRVM 152可能因为各种HLT VM的通信量而在它可容忍的最大延迟内无法发送和接收通信量。
这个实现方式的第二个问题在于,它将固定数量的队列静态地分派给三个不同非默认队列池中的一个,这三个不同非默认队列池是非默认队列115、LRO(大型接收卸载)队列120和RSS(接收侧调整)队列125。在这种方法中,各个池在驱动器初始化期间分派和分配其所有的队列。默认地,各个池将得到相同数量的队列,即使该池实际上并不使用。这导致当池需要更多的队列来维持通信量时出现性能问题,因为超负荷的池将无法接管其它池中的空闲队列,因此无法进一步增长,即使该***具有容量。
第三个问题在于,VM的队列分派是一次性的,即,一旦VM移到队列,它将再也不移动到其它非默认队列。这造成两个问题。第一,因为分派是一次性的,所以如果VM随后需要更多资源来增长通信量,则它会最终变得受限于对其目前队列的利用。即使存在具有更多增长空间的不太忙的队列,这种现有方法不允许VM有这个机会。另外,这种方法尝试静态地使所有队列忙,即使并不需要那么多队列来服务于通信量。由于这种方法具有用于每个队列的专用内核上下文,因此具有不必要数量的活动队列导致更多活动的上下文。这些活动的上下文将不可避免地在中断到达时停止其它上下文(例如,vCPU)。因此,主机最终变得花费更多周期进行上下文切换,这损害了VM整合率。
发明内容
一些实施例提供了有效且动态地管理多个队列的队列管理***,这多个队列处理进出在主机上执行的多个虚拟机(VM)的通信量。这个***通过以下步骤管理队列:(1)将队列分成不同优先级池,其中为特定类型的通信量或VM(例如,用于需要低延迟的VM的通信量)保留较高优先级池,(2)动态地调节每个池中的队列的数量(即,动态地调节池的大小),(3)基于一个或多个优化标准(例如,与队列的未充分使用或过度使用有关的标准),将VM动态地重新分派给新队列。
在一些实施例中,队列管理***初始地在未分派的默认池中具有新初始化的VM。当VM的通信量超过预设阈值时,该***确定是否存在匹配VM通信量要求的池,并且,如果有的话,则将VM分派给该池。如果没有匹配的池,则该***创建新的池并且将VM分派给该池。在没有用于创建新的池的空闲队列的情形下,队列管理***先占取一个或多个分派的队列(即,分派给之前创建的池的队列)并且将先占取的队列分派给新创建的池。这个先占取处理重新均衡了现有池之中的队列,以空出一个或多个队列用于新的池。在一些实施例中,可通过资源分配标准(例如,池的最小和最大大小、池的相对优先级等)控制跨池的重新均衡处理。
另外,队列管理***可基于一个或多个标准(例如,相关联的管理线程(例如,内核上下文)的CPU负载、通信量类型、通信量负载、队列的其它实时负载指标等)来重新均衡池内的通信量。在一些实施例中,***针对不同的池使用不同的重新均衡标准。例如,在一些池中,***可能想要将VM装满一些队列,而对于其它池,***可能想要跨尽可能多的队列分配VM。在一些实施例中,队列管理***具有负载均衡器,该负载均衡器周期性地和/或在特定事件时执行重新均衡处理。
当VM的通信量降至阈值以下时,一些实施例的队列管理***将VM移回到默认队列。当VM是正使用非默认队列中的队列的最后一个VM时,则***将最后使用的队列移到空闲队列的池,使得它随后可被重新分配给任何池。
作为VM数据通信量的附加或者替代VM数据通信量,一些实施例的队列管理***动态地定义池,唯一地管理每个池,动态地改变池内的队列,并且动态地重新分派进出在主机上执行的非VM可寻址节点(例如,源端节点或目的地端节点)的数据通信量。具体地讲,一些实施例的***通过主机装置的NIC监控VM和/或非VM可寻址节点(例如,数据端节点)集合的数据通信量。基于该监控,该***指定至少用于非VM可寻址节点集合的池,并且将队列集合分派给该池。该***接着使用目的地或源媒体访问控制(MAC)过滤器或者五元组过滤,引导用于非VM可寻址节点集合的由主机装置接收或发送的数据通信量到分派的队列集合。
替选地,或者结合地,基于该监控,一些实施例的***可改变分派给用于VM和非VM可寻址节点集合的池的队列集合。如以上提到的,这种改变的示例包括当池的一个或多个队列被过度使用或未被充分使用时向池添加队列或者从池中去除队列。在一些实施例中,该***通过先占取另一个池中的队列(例如,通过使用上述先占取方法之一)向该池添加队列。
另外,替代上述操作或与上述操作结合,该***可基于该监控,将用于VM或非VM可寻址节点(例如,数据端节点)的数据通信量从该池中的第一队列重新分派给该池中的第二队列。例如,基于该监控,一些实施例的***检测通过第一队列的用于VM或非VM可寻址节点的通信量降至通信量的最小阈值量以下(例如,持续一段时间)。因为这种未充分使用,***将该通信量切换至第二队列。在进行该切换之前,一些实施例的***确定通过第二队列的通信量没有超过通信量的最大阈值量。
基于该监控,一些实施例的***检测通过第一队列的通信量超过通信量的最大阈值量(例如,持续一段时间)。因为这种过度使用,***将用于VM或非VM可寻址节点(例如,数据端节点)的通信量从第一队列切换至第二队列。同样,在进行该切换之前,一些实施例的***确定通过第二队列的通信量没有超过通信量的最大阈值量。
之前的“发明内容”旨在用作对本发明的一些实施例的简要介绍。它并不意味着是本文献中公开的所有独创性主题的介绍或概要。后面的“具体实施方式”和在“具体实施方式”中参照的附图将进一步描述“发明内容”中描述的实施例以及其它实施例。因此,为了理解本文献描述的所有实施例,需要对“发明内容”、“具体实施方式”和附图的全面阅读。此外,要求保护的主题将不受“发明内容”、“具体实施方式”和附图中的示例细节限制。
附图说明
在所附的权利要求书中阐明了本发明的新颖特征。然而,出于说明的目的,在下面的附图中阐明了本发明的一些实施例。
图1是具有用于低延迟要求(LLR)VM和一些高延迟容忍(HLT)VM二者的通信量的超负荷队列的示例。
图2示出基于通信量的类型或VM要求将队列概念性地分组成两个优先级池的示例。
图3示出用于三种不同类型的VM的三个优先级池的示例。
图4示出网络虚拟化层(NVL)中的负责PNIC中的队列的线程以及本发明的一些实施例的中断产生结构。
图5示出一些实施例的队列管理***。
图6概念性示出在一些实施例中负载均衡器执行的整体处理。
图7示出一些实施例的队列分派处理。
图8概念性地示出在一些实施例中由负载均衡器周期性地(例如,每隔几秒)调用的池调节处理。
图9示出由一些实施例的负载均衡器执行以评估VM对其队列的使用度的处理。
图10示出因为对第一队列的未充分使用或因为VM对其第一队列的未充分使用而将VM从第一队列重新分派给第二队列的示例。
图11示出因为对第一队列的过度使用而将VM从第一队列重新分派给第二队列的示例。
图12示出跨池的池均衡处理的示例。
图13示出一些实施例的队列管理***,所述队列管理***使用MAC地址过滤把在主机装置上执行的VM和非VM数据可寻址节点的数据通信量路由到队列的不同池和池内的不同队列。
图14和图15图示示出一些实施例使用五元组过滤器来区分在视频呈现期间由虚拟机发送或接收的VOIP和视频包的示例。
图16概念性地示出用来实现本发明的一些实施例的电子***。
具体实施方式
在下面对本发明的详细描述中,阐明和描述了本发明的众多细节、示例和实施例。然而,本领域的技术人员将明白和清楚的是,本发明不限于所阐明的实施例,并且可在没有所讨论的一些具体细节和示例的情况下实施本发明。
一些实施例提供了一种有效且动态地管理多个队列的队列管理***,这多个队列处理进出在主机上执行的多个虚拟机(VM)的通信量。该***通过以下步骤管理队列:(1)将队列分成不同优先级池,其中为特定类型的通信量或VM(例如,用于需要低延迟的VM的通信量)保留较高优先级池,(2)动态地调节每个池中的队列数量(即,动态地调节池的大小),(3)基于一个或多个优化标准(例如,与队列的未充分使用或过度使用有关的标准),将VM动态地重新分派给新队列。
在一些实施例中,队列管理***将队列分组成四种类型的池。它们是:
(1)默认池,该默认池在一些实施例中包括一个默认队列,该默认队列是在一些或全部VM初始化时用于一些或全部VM的初始队列(在其它实施例中,默认池包括一个以上默认队列);
(2)空闲池,该空闲池包括所有未使用的队列(即,没有分派给进出任何VM的通信量的队列);
(3)硬件特征池,该硬件特征池包括与特定硬件特征关联的队列,例如LRO和RSS;
(4)VM要求池,该VM要求池包括服务于具有不同种类要求的VM(例如,低延迟要求(LLR)VM和高延迟容忍(HLT)VM)的队列。
在这些实施例中的一些实施例中,除了默认池中的一个默认队列之外,队列管理***初始地具有未分派的空闲池中的所有队列。一些实施例一直没有分派默认队列,直到第一VM被初始化,而其它实施例甚至在第一VM被初始化之前就指定默认队列。
当VM的通信量超过预设阈值时,***确定是否存在匹配VM通信量要求的池(例如,是否存在针对超过其阈值的LLR VM的LLR池),如果有的话,***将VM分派给该池。如果没有匹配的池,则***形成新的池并且将VM分派给该池。当没有用于创建新的池的空闲队列时,队列管理***先占取一个或多个分派的队列(即,分派给之前指定的池的队列)并且将先占取的队列分派给新创建的池。该先占取处理重新均衡了现有池之中的队列,以空出一个或多个队列用于新的池。在一些实施例中,跨池的重新均衡处理是基于一个或多个资源分配标准,例如池的最小和最大大小、池的相对优先级等。
除了跨池均衡队列之外,一些实施例的队列管理***还重新均衡池内的通信量。该***在不同实施例中使用不同标准来重新均衡池内的通信量。这种标准的示例包括相关联的管理线程的CUP负载、通信量类型、通信量负载、队列的其它实时负载指标等。在一些实施例中,***针对不同的池使用不同的重新均衡标准。例如,在一些池中,***尝试将VM装满一些队列,而对于其它池,***尝试跨尽可能多的队列分配VM。在一些实施例中,队列管理***具有负载均衡器,该负载均衡器周期性地和/或在特定事件时执行重新均衡处理。
当VM的通信量降至阈值以下时,一些实施例的队列管理***将VM移回到默认队列。当VM是正使用非默认队列中的队列的最后一个VM时,则将最后使用的队列移到未分派队列的空闲池,使得它随后可被重新分配给任何池。因此,在这种方法下,队列一被分派VM,就将队列分派给非默认池之一,并且队列的最后一个VM一被重新分派或被关断,就将该队列分派回到空闲池。
作为VM数据通信量的附加或者替代VM数据通信量,一些实施例的队列管理***动态地定义池,唯一地管理每个池,动态地改变池内的队列,并且动态地重新分派进出在主机上执行的非VM可寻址节点(例如,源端节点或目的地端节点)的数据通信量。以下,首先描述针对VM执行这些操作。然后,在此讨论之后讨论针对非VM可寻址节点执行这些操作。
I.用于具有不同要求的VM的不同池
如以上提到的,一些实施例的队列管理***将队列分成不同优先级池,其中为特定类型的通信量或VM(例如,用于需要低延迟的VM的通信量)保留较高优先级池。图2示出基于通信量的类型或VM要求将队列概念性地分组成两个优先级池210和215的示例。具体地,图2示出(1)具有多个队列的物理NIC 200,和(2)具有不同要求的多个虚拟机(VM)202。VM在主机计算机(未示出)上执行。跨NIC的各种队列分配进出这些VM的通信量。如此图中示出的,每个队列具有接收侧的缓冲器集合204和发送侧的缓冲器集合206,以分别处理传入和传出通信量。在一些实施例中,多核处理器中的一个核管理每个队列。因此,在图2中示出的示例中,八个核将管理NIC的八个队列。
在一些NIC中,每个接收侧的缓冲器集合204是其自己在NIC中的独立的队列。同样地,在这些NIC中,每个发送侧的缓冲器集合206是其自己在NIC中的独立的队列。然而,即使在这些NIC中接收侧队列与发送侧队列分开并且独立,一些实施例的队列管理***也将一个接收侧队列与一个发送侧队列配对,使得队列对可被用作VM的一个队列构造。然而,其它实施例没有将队列“配对”。具体地,这些其它实施例不要求使用接收侧队列的VM都使用相同的发送侧队列;两个VM可使用相同的接收侧队列,但使用不同的发送侧队列。然而,为了保持图示简单,图3至图6和图10至图15中示出的每个队列是队列对,该队列对包括与发送侧队列配对的接收侧队列。
在图2中,队列管理***将物理NIC 200的队列分组成三种不同类型的池。它们是:(1)默认池205,(2)LLR池210,(3)HLT池215。如图2中所示,一些实施例中的默认池205只包括一个默认队列。在其它实施例中,它包括一个以上默认队列。默认队列服务于没有被分派给非默认池的队列的VM的通信量。当只有一个默认队列(例如,默认队列207)时,“默认”队列服务于没有被分派给非默认池的所有VM。在一些实施例中,默认队列207服务于所有低通信量VM,即,服务于具有比预设通信量阈值低的通信量的任何VM。这些VM的通信量太小,以致于应被置于非默认队列中。
以某些方式,默认队列207可被视为不属于任何池,因为从硬件的视角看,该队列只服务于没有匹配过滤器的所有VM,所述匹配过滤器将它们的传入和传出通信量的路由引导到另一队列。一些实施例的队列管理***启动默认队列上的每个VM,直到VM的通信量超过阈值。一旦VM的通信量超过阈值,***就为VM选择非默认队列,然后引导PNIC来分配用于VM的入站通信量的过滤器,并且引导虚拟化层来分配用于VM的出站通信量的过滤器。在一些实施例中,对出站通信量的过滤器是基于源MAC地址,而对入站通信量的过滤器是基于目的地MAC地址。这些过滤器引导虚拟化层和PNIC中的模块,以将传入和传出通信量路由到所选择的队列。应该注意,过滤器可基于其它标识符。例如,在一些实施例中,对出站通信量的过滤器是基于软件转发元件端口ID。
过滤器的分配允许概念性地被分派给非默认池的队列服务于VM的通信量。换句话讲,通过指定过滤器,***将VM的通信量与队列相链接。此外,通过将队列与其保持的概念上的“池”关联,队列管理***可应用不同的管理处理,以不同地管理不同池中的队列,从而管理具有不同要求的不同VM。以下,在部分II中对此进行进一步描述。
当针对要被分配给池的队列而言不存在池时,队列管理***首先定义池,然后将队列分配给该池,如以下进一步描述的。LLR池210和HLT池215是被创建用于应对具体VM要求的两个池。LLR池210包括旨在服务于LLR VM的队列,而HLT池215包括旨在服务于HLT VM的队列。如图2中所示,LLR VM 250和252通过LLR池210的LLR队列222和224发送和接收它们的数据包,而HLT VM通过HLT池215的HLT队列230-238发送和接收它们的数据包。
在一些实施例中,队列管理***通过具体地分配过滤器(在发送侧和接收侧二者)来概念性地定义这些池,使得LLR VM通信量经过一个队列集合,而HLT VM经过另一个队列集合。对于LLR VM,一些实施例的队列管理***优化LLR队列的分配,以确保VM通信量尽可量地跨LLR队列分散开,使得LLR VM受其它VM的通信量的影响最小。另一方面,对于HLT VM,一些实施例的***通过尝试减少由HLT VM使用的HLT队列的数量来优化HLT队列的分配,以使更多的空闲队列可用于新分配。
通过将用于LLR VM的队列与用于HLT VM的队列分开,一些实施例的队列管理***允许进出LLR VM的通信量经过不太拥塞的LLR队列。如此,LLR VM在发送和接收它们的数据包时可具有较低延迟。
尽管图2中图示的示例示出了三种类型的池,但本领域的普通技术人员将认识到,其它实施例使用更少的池或额外的池。例如,替代提供LLR池和HLT池两者,一些实施例的队列管理***只定义LLR池,并且引导全部HLT通信量通过默认池。为了处理所有这种HLT通信量,一些实施例的队列管理***定义默认池中的多个队列。
除了LLR池和/或HLT池之外,一些实施例的队列管理***还定义LRO和RSS池(类似于图1中示出的那些),以支持NIC的LRO和RRS硬件特征。另外,LLR池和HLT池是基于VM要求而制定的池的示例,其中,相比于HLT,LLR是更高优先级池,因为LLR旨在用于LLR VM通信量。在其它实施例中,队列管理***定义两个以上优先级池,以处理两种类型以上的VM要求。例如,图3示出用于三种不同类型的VM的三个优先级池的示例。这些池包括高池305、中间池310和低池315,并且它们的队列分别处理用于高优先级(HP)VM 320、中间优先级(MP)VM 325和低优先级(LP)VM 330的通信量。在一些实施例中,相比于较低优先级池,较高优先级池可具有较少的VM和/或每队列具有较少的总体通信量。
另外,替代定义LLR池或HLT池或者结合定义这种池,一些实施例的队列管理***定义高中断(HI)池或低中断(LI)池。在该上下文中,中断是指由PNIC产生的、通向负责PNIC中的队列的网络虚拟化层(NVL)中的线程的信号。图4示出这种线程以及本发明的一些实施例的中断产生结构。在一些实施例中,线程是被初始化成执行任务集合(例如,管理用于VM的网络堆栈中的接收侧模块或发送侧模块)的处理。另外,在一些实施例中,不同线程可作为多线程处理器的不同线程上和/或多核处理器的不同核上的独立处理来执行。
图4示出PNIC 400,PNIC 400包括(1)用于接收需要被中继到VM的传入通信量的一些队列,(2)用于管理传入通信量到队列的分派的接收侧(RX)处理引擎405,(3)用于监控队列状态的队列监控器410,(4)用于产生中断的中断发生器430,所述中断引导NVL的接收侧线程检索存储在队列中的数据。RX处理引擎包括如上所述并且以下进一步描述的、用于将VM的传入通信量与队列配对的MAC过滤器420。
图4还示出用于PNIC中的每个队列的接收侧(RX)线程427。在一些实施例中,线程427是管理通过PNIC进出虚拟机的通信量的网络虚拟化层的一部分。在一些实施例中,队列管理***是网络虚拟化层的一部分。
每个线程管理其相关联的队列。每当队列被接收到的数据包堵塞时,PNIC的队列监控器410检测该情况并且引导PNIC的中断发生器430生成针对执行队列的线程425的核的中断,以引导线程从队列中检索数据包。发生器通过PNIC驱动器435的API发送该中断,其进而生成针对核的中断。每当因这个操作调用队列的线程时,管理该队列并且执行该队列的线程的核必须中断它正在执行的其它任务,以执行该线程,使得它可从队列中检索数据包。这种中断影响处理器的操作效率。
因此,为了提高处理器的操作效率和/或降低关键VM的延迟,一些实施例的队列管理***定义HI池或LI池。HI池是包含承载需要以较低延迟传递的通信量的队列的池,而LI池是包含承载可容忍较大延迟的通信量的队列的池。
在一些实施例中,管理HI池的线程将比管理LI池的线程接收更多中断,如此,在一些实施例中,它由其上具有比操作LI池的核更小的负载的处理器核来操作。具体地讲,为了导致LLR VM的期望的低延迟,一些实施例的队列管理***指定处理用于LLR VM的通信量的队列作为HI池中的队列。基于该指定,它接着可执行各种任务,以优化对该队列的管理和对执行该队列的线程的核的管理。例如,一些实施例中的队列管理***减少分派给该HI队列的VM的数量,或者只将也是关键的并且需要低延迟的VM分派给该队列。与此结合或者作为替代方式,一些实施例的队列管理***还可引导处理器的调度器来减少执行该HI队列的线程的核上的负载,和/或引导PNIC针对该队列及早生成中断。
图4示出减少执行HI池的核上的负载的示例。具体地讲,在这个示例中,队列管理线程TQM1和TQM2用于管理作为HI队列的高优先级队列HPQ1和HPQ2。这些线程被分派给多核处理器450的核1和核2。如图4中所示,这些核上的负载相对轻,因为核2只执行线程TQM2,而核1执行线程TQM1和非队列管理线程TNQM1。这些核上的负载与核5上的负载形成对比,核5执行队列管理线程TQM5(针对低优先级队列5(LPQ5)),而且还执行三个其它非队列管理线程TNQM2-TNQM4。
为了导致HLT VM的较高的可接受延迟,一些实施例的队列管理***指定处理用于HLT VM的通信量的队列作为LI池中的LPQ。基于该指定,它接着可执行各种任务,以优化对该队列的管理和对执行该队列的线程的核的管理。例如,一些实施例中的队列管理***可将更多的VM分派给该队列。与此结合或者作为替代方式,一些实施例的队列管理***还可向处理器的调度器通知它可将额外的线程调度到执行该队列的线程的核上,和/或引导PNIC针对该队列生成较少中断(即,在生成中断之前允许该队列更多地填充)。
在一些实施例中,将HI池和/或LI池的指定与LLR池和/或HLT池的指定结合起来使用,而在其它实施例中,使用HI池和/或LI池的指定以取代LLR池和/或HLT池的指定。在一些实施例中,队列可被指定为LLR队列和HI队列二者。替选地,LLR VM可与HLT VM一起被包括在队列中,但该队列可被指定为HI队列,使得它的核未被严重地负载,因此可被频繁地中断以清空队列。
II.队列管理***
现在,将参照图5描述一些实施例的队列管理***。该***将队列分成不同优先级池,其中为特定类型的通信量或VM(例如,用于需要低延迟的VM的通信量)保留较高优先级池。它还动态地调节每个池中的队列(即,动态地调节池的大小),并且基于一个或多个优化标准(例如,与队列的未充分使用或过度使用有关的标准),将VM动态地重新分派给新队列。
图5示出(1)正在主机上执行的一些VM 505,(2)主机的由VM共用的物理NIC 515,(3)在主机上执行并且有助于通过共用的PNIC进出VM的通信量的网络虚拟化层510,(4)作为内核调度器的物理处理器调度器525(也被称为物理CPU或PCPU),该内核调度器引导处理器何时何地运行线程(也被称为上下文)之一。
PNIC 515具有一些队列517。这些队列包括用于存储由主机接收到的传入数据的接收侧队列和用于存储从VM发送的传出数据的发送侧队列。在一些实施例中,每个队列包括用于存储传入或传出数据的缓冲器集合。在一些实施例中,接收侧队列与发送侧队列分开并且独立,但虚拟化层将一个接收侧队列与一个发送侧队列配对,使得队列对可被用作VM的一个队列构造。然而,其它实施例没有将队列“配对”。换句话讲,这些实施例不要求使用接收侧队列的VM都使用同一发送侧队列;两个VM可使用同一接收侧队列,但使用不同发送侧队列。
PNIC还具有用于从有线或无线链接接收传入数据包的接收(RX)侧处理引擎511。RX处理引擎具有MAC过滤器514,MAC过滤器514被配置成基于目的地MAC将每个VM的传入通信量与一个队列对关联。虚拟化层保持用于传出数据包的相似的过滤器516,并且该层中的队列选择器518使用该过滤器中的数据来配置每个VM的传出通信量,以使用与传入通信量相同的队列对。在一些实施例中,过滤器516依据VM的源MAC地址或它的VNIC的源MAC地址来指定VM,而在其它实施例中,过滤器516依据VM的VNIC所连接的软件转发元件的端口ID来指定VM。在一些实施例中,PNIC还包括用于监控队列并且生成中断的电路,如以上参照图4描述的。
VM在超级监督者(未示出)之上执行,在一些实施例中,超级监督者包括网络虚拟化层510。图5示出每个VM包括虚拟NIC(VNIC)507。图5还示出网络虚拟化层510包括(1)用于每个VM的一个网络堆栈550,(2)软件转发元件535,(3)统计信息收集引擎540,(4)统计信息存储器545,和(5)动态负载均衡器555。每个网络堆栈包括VNIC仿真器527和I/O链529。每个网络堆栈由接收/发送线程531管理。
每个网络堆栈通过其VNIC仿真器连接到其VM并且连接到由所有VM的所有网络堆栈共用的软件转发元件535。每个网络堆栈通过交换机的端口(未示出)连接到软件转发元件。在一些实施例中,软件转发元件保持用于每个VNIC的单个端口。软件转发元件535执行数据包处理操作,以将它的一个端口接收的数据包转发到它的另一个端口,或者转发到在另一个主机上执行的另一个软件转发元件的一个端口。例如,在一些实施例中,软件转发元件尝试使用数据包中的数据(例如,数据包头部中的数据)来使数据包匹配基于流的规则,并且在发现匹配时,执行由匹配规则指定的动作。
在一些实施例中,在不同主机装置(例如,不同计算机)上执行的软件转发元件被配置成针对使用相同的共用计算和连网资源的不同租用者、用户、部门等的不同逻辑网络来实现不同的逻辑转发元件(LFE)。例如,在两个主机上执行的两个软件转发元件可执行L2交换功能。这些软件交换中的每个可部分地实现两个不同的逻辑L2交换,其中,每个逻辑L2交换连接一个实体的VM。在一些实施例中,软件转发元件提供L3路由功能,并且可被配置成利用在其它主机上执行的软件L3路由器来实现不同的逻辑路由器。
在虚拟化领域中,有些人将软件交换称为虚拟交换,因为它们是软件元件。然而,在本文献中,软件转发元件被称为物理转发元件(PFE),以将它们与逻辑转发元件池区分开,逻辑转发元件是与物理世界无关的逻辑构造。换句话讲,软件转发元件被称为PFE,因为它们在物理世界中存在并进行操作,而逻辑转发元件仅仅是向用户呈现的转发元件的逻辑表示。逻辑转发元件的示例是诸如逻辑交换、逻辑路由器等逻辑转发元件。美国专利申请14/070,360提供了PFE和LFE的额外示例,并且以引用方式并入本文。
软件转发元件535连接到PNIC,以发送传出数据包并且接收传入数据包。在一些实施例中,软件转发元件被定义成包括端口,该软件转发元件通过该端口连接到PNIC以发送和接收数据包。如以上提到的,在一些实施例中,在软件转发元件535和PNIC之间***队列选择器518。队列选择器选择用于检索传入数据包的接收侧队列和用于供应传出数据包的发送侧队列。如以上提到的,队列选择器使用过滤器516中的数据来识别用于供应特定VM传出通信量的发送侧队列。选择器没有使用过滤器中的数据来选择队列并且检索其用于VM的RX线程的数据包。在一些实施例中,队列选择器是网络堆栈的接收/发送线程531的一部分,如以下进一步描述的。如此,对于这些实施例,队列选择器518是接收/发送线程531在一些实施例中执行的队列选择操作的概念表示。
VM中的每个VNIC负责通过其关联的VNIC仿真器527在VM和网络虚拟化层之间交换数据包。每个VNIC仿真器与VM中的NIC驱动器交互,以将数据发送到VM并且从VM接收数据。在一些实施例中,VNIC是由虚拟NIC仿真器实现的物理NIC的软件抽象。例如,在一些实施例中,用于请求和获得连接ID的代码驻留在虚拟NIC仿真器的组件中。换句话讲,在一些实施例中,由每个VNIC仿真器实现并保持VNIC状态。诸如VNIC的虚拟装置尽管是作为VM的一部分的便于讨论的软件抽象,但实际上是由使用仿真器的虚拟软件来实现的。然而,每个VM的状态包括其虚拟装置的状态,虚拟装置的状态是由下层的虚拟化软件来控制和保持的。尽管图5示出用于每个VM的每个VNIC的一个VNIC仿真器,但是在一些实施例中,每个VNIC仿真器可以保持一个以上VNIC和/或一个以上VM的状态。
每个网络堆栈中的I/O链包括对每个数据包执行一系列任务的一系列模块。如以上并入的美国专利申请14/070,360中描述的,I/O链模块的两个示例是ARP和DHCP代理模块,ARP和DHCP代理模块解析ARP和DHCP广播消息,而不采取广播这些消息的手段。由I/O链中的模块执行的处理的其它示例包括防护墙和通信量隧穿操作。I/O链的输入/输出转到软件转发元件的端口之一。
在一些实施例中,每个网络堆栈550的接收/发送线程531是管理网络堆栈中的模块的内核级线程。这些线程还管理与堆栈的VM关联的PNIC队列517。具体地,在一些实施例中,每个队列的接收侧具有用于处理来自队列接收侧的轮询数据包和中断的专用RX内核线程。另外,每个VM具有用于处理从VM发送的数据包的专用TX内核线程。在一些实施例中,每对接收/发送线程由主机的多核处理器的核之一执行,因为这些实施例中推荐的队列的数量等于主机的多核处理器的核的数量。尽管在图5中使用单独的接收和发送线程来分别管理堆栈及其关联队列的接收和发送操作,但是本领域普通技术人员将认识到,在其它实施例中,使用一个线程来执行这两个任务。另外,在一些实施例中,RX/TX线程可与队列、核和/或VM不相关或严格相关。
如以上提到的,网络虚拟化层还包括统计信息收集引擎540、统计信息存储器545和动态负载均衡器555。统计信息收集引擎540、负载均衡器555和RX/TX线程531部分地形成一些实施例的队列管理***。由统计信息收集引擎540收集的统计信息向负载均衡器提供为确定何时将队列分派给池以及何时调节池所需的信息。
在不同实施例中,统计信息收集引擎从不同源中得到统计信息。例如,在一些实施例中,该统计信息收集引擎从任一CPU调度器525(针对CPU使用率)和RX/TX线程(针对网络通信量)“拉取(pull)”统计信息或者从任一CPU调度器525(针对CPU使用率)和RX/TX线程(针对网络通信量)接收被推送的统计信息。对于网络通信量,网络虚拟化层使得从各种源收集统计信息(例如,吞吐量、数据包比率、丢包率等),所述各种源包括网络堆栈的每层(即,由RX/TX线程管理的每个模块)。
在一些实施例中,统计信息收集引擎收集负载均衡器的以下网络统计信息:PNIC数据包比率、PNIC吞吐量和每个RX/TX线程的CPU使用率。在一些实施例中,CPU调度器525更新CPU使用率数据,而RX/TX线程更新PNIC数据包比率和吞吐量,因为它们是实际上与PNIC通信并且具有精确计数的线程。在一些实施例中,PNIC驱动器模块处于队列选择器以下,并且该PNIC驱动器是与PNIC通信并且更新PNIC负载统计信息的模块。另外,在一些实施例中,统计信息收集引擎不仅收集负载均衡器的PNIC统计信息,而且收集由VNIC仿真器采集的VNIC统计信息。
通过依靠VNIC统计信息,负载均衡器可决定,当对延迟敏感的VM的VNIC数据包比率在某个阈值以上时将对延迟敏感的VM移到独有队列,所述某个阈值会开始损害任何一个与其共用同一队列的VM。更通常地,负载均衡器555使用收集到的统计信息来确定要将哪个队列分派给哪个VM,何时将队列动态地分派给池以及何时动态地调节池。
在一些实施例中,负载均衡器周期性地(例如,每隔几秒、几毫秒、几微秒等)运行负载均衡处理。该处理从统计信息收集引擎保持的“负载统计信息”数据存储器545中拉取统计信息,并且基于这些统计信息,确定是否需要分配池,解除分配池,将VM分派给队列,调整池的大小和/或先占取队列。在一些实施例中,负载均衡器通过配置PNIC和虚拟化层的过滤器以将特定队列标识符与用于传出通信量的特定源MAC地址和用于传入通信量的特定目的地MAC相关联来将VM分派给队列。为了配置PNIC的MAC过滤器,负载均衡器使用PNIC驱动器的API来对每个队列的硬件特征和过滤器进行编程。
如图5中所示,负载均衡器具有三个模块,即,池561、队列均衡器559和池均衡器557。这些池是负载均衡器定义的PNIC队列的软件抽象分组。负载均衡器应用不同处理来管理不同“池”中的队列。如此,每个池可被视为具有相同“特征”的队列集合,其中,特征类似于硬件特征(类似RSS/LRO)。这种特征的示例包括VM要求(例如,低延迟或低中断比率)。
通过应用不同处理来管理不同池中的队列,负载均衡器可针对不同池不同地优化队列的分配和池大小的调整。池重新均衡器557基于池的资源分配标准调整每个池的大小并且在需要时先占取其它池中的队列。这种资源分配标准的示例包括池中的队列的最大/最小数量、池的总CPU使用率、池的网络通信量、池的服务质量(QoS)约束。队列重新均衡器559基于池的重新均衡标准,重新均衡同一池中的队列。这种池重新均衡标准的示例包括将VM填充尽可能少的队列(例如,针对HLT池),跨尽可能多的队列(例如,针对LLR池)分配VM等。在一些实施例中,管理两个不同池的两个不同处理指定不同的资源分配标准、不同的先占取标准、不同的重新平衡标准等。
III.调节VM分配并且调节池
图6概念性地示出在一些实施例中负载均衡器555执行的整体处理600。一些实施例中的负载均衡器555周期性地(例如,每隔几秒、几毫秒、几微秒等)执行该处理,以将VM分派给队列,重新均衡每个池内的队列并且保持跨池的期望均衡。
在一些实施例中,当计时器(例如,N秒计时器)期满时,开始处理600。如图6中所示,处理600初始地调用(在605)队列分派处理,该队列分派处理检查默认池中的VM以识别必须移到非默认池的任何VM,并且将识别的任何VM移到非默认池中的合适的非默认队列。在一些实施例中,当VM对默认队列的使用超过默认队列的阈值水平或VM对默认队列的使用的阈值水平时,队列分派处理将VM移到(在605)非默认队列。在605,该处理还识别非默认队列中的必须移回到默认池的任何VM,并且将任何识别的VM移回到默认池。在一些实施例中,当VM对其默认队列的使用在非默认队列的阈值水平或VM对非默认队列的使用的阈值水平以下时,队列分派处理将VM移回到(在605)默认池。以下,通过参照图7进一步描述一些实施例的队列分派处理。
在605之后,处理600调用(在610)池调节处理,以均衡每个池内的队列。在一些实施例中,池调节处理检查每个池,以基于池的一个或多个优化标准确定它是否必须将一个或多个VM在池中的队列之间移动、或者将一个或多个VM移到池中的新队列。一些实施例的池调节处理针对不同的池使用不同的优化标准。例如,在一些实施例中,用于LLR池的优化标准使得该处理倾向于将VM分配到LLR池的队列之间,而用于HLT池的优化标准使得该处理倾向于将VM聚集到HLT池中的较少队列上。基于这些标准及其在610的确定,处理600在池中的队列之间重新分派VM(在610)、或者将VM重新分派给池中的新队列。以下,进一步描述一些实施例的池调节处理。
接着,在615,处理600调用保持跨池的期望均衡的池均衡处理。在一些实施例中,池均衡处理检查跨各种池的队列使用率。基于该检查,均衡处理可将一个或多个队列分配给一个池。它还可基于该检验将一个或多个队列从另一个池解除分配。在一个调用中,该处理可将更多队列分配给一个以上的池,或者它可将一个以上的池中的队列解除分配。以下,进一步描述跨池的重新均衡处理。
普通技术人员将认识到,在其它实施例中,负载均衡处理600是不同的。例如,在一些实施例中,处理600没有单独的重新均衡操作615,而是作为操作605和610的一部分,隐含地或明确地执行该操作。另外,虽然以上和以下说明了作为操作605、610、615之一的一部分的某些子操作,但普通技术人员将认识到,这些子操作可在这些操作605、610、615中的不同操作中执行,或者作为对它们自身的不同操作或者不同操作的子操作来执行。
在615之后,处理600结束。
图7概念性地示出在一些实施例中负载均衡器555周期性地(例如,每隔几秒、几毫秒、几微秒等)调用的队列分派处理700。一些实施例中的负载均衡器555周期性地调用该处理,以识别和移动过度使用默认队列或未充分使用非默认队列的任何VM。如图7中所示,处理700初始地从统计信息存储器545收集(在705)统计信息,而不管所有VM对默认队列和非默认队列的使用情况。该处理使用获取的统计信息来执行分析,如以下进一步描述的。
接下来,基于获取的统计信息,处理识别(在710)使用默认池中的目前超过默认队列的阈值使用水平或VM对默认队列的使用的阈值使用水平(例如,当不同VM针对默认队列具有不同阈值使用水平时)的默认队列的任何VM。如以上提到的,一些实施例在VM被初始化时将每个VM分派给默认队列,但监控每个VM对默认队列的使用,并且当VM的使用超过阈值时将VM移到非默认队列。
在715,该处理确定是否能够在710识别到任何VM。如果识别不到,则该处理转到以下将进一步描述的765。否则,该处理转到720,以选择在710识别的VM之一,并且识别所选择的VM对于加入池的队列的要求。如以上提到的,本发明的一些实施例定义满足不同VM集合的一个或多个不同要求的队列的一个或多个非默认池。
接下来,在725,该处理确定它之前是否已经定义了针对所选择的VM要求的池。例如,假设所选择的VM是LLR VM,则该处理确定(在725)它之前是否已经定义了用于将LLR VM分配给该池的队列的LLR池。当该处理确定(在725)它之前已经定义了针对VM要求的池时,它接着确定(在730)它是否可将所选择的VM分派给之前定义的该池中的队列之一。换句话讲,在730,该处理确定该池的现有队列是否具有用于在720选择的VM的足够的可用容量。
当该池中的队列具有足够容量时,该处理将VM分派(在735)给该队列和该队列的池,然后转到以下将描述的740。如以上提到的,一些实施例通过过滤来创建VM和队列之间的关联,其使用源MAC地址将VM的传出通信量与特定队列关联并且使用目的地MAC地址将传入通信量与特定队列关联。一些实施例明确地指定VM和池之间的关联,而其它实施例隐含地通过VM的关联队列和池之间的关联来指定该关联。在735创建的VM和池之间的关联允许负载均衡器应用公共的处理集合来管理其队列上的VM、以及同一池中的该队列和其它队列上的其它VM。如以上提到的,在一些实施例中,这些处理集合不同于用于管理队列的其它池中的其它VM的处理集合。
当该处理确定(在725)针对所选择VM的要求(例如,LLR要求)而言不存在池时,该处理指定(在745)针对所选择VM的要求的池(例如,指定LLR池),然后转到750。当该处理确定(在730)之前针对VM的要求指定的池没有对于所选择的VM具有足够容量的任何队列时,该处理也转到750。
在750,该处理确定是否存在目前未分派给任何VM的任何PNIC队列(即,在队列的空闲池中是否存在任何队列)。如果存在,该处理(在755)选择空闲队列中的一个,将它分派给池,将所选择的VM分派给该队列和池,然后转到以下将描述的740。否则,该处理先占取(在760)由非空闲池中的另一个所使用的队列中的一个。先占取涉及首先将正在使用先占取队列的VM重新分派给池中的包括先占取队列的其它队列。在一些实施例中,该处理在一些情况下将无法先占取另一个池中的队列,因为VM的目前非默认池具有比其它非默认池低的优先级。一旦所有VM已经被重新分派并且队列已经处理了这种VM的所有通信量,该处理就将先占取队列分派(760)给针对所选择VM的要求的池。该处理还将所选择VM分派(在760)给该队列和池,然后转到740。
在740,该处理确定它是否已经处理了在710识别的所有VM。如果为否,该处理返回到720以选择识别的另一个VM。否则,在该处理已经将在710识别的每个VM分派给池和队列之后,该处理基于在705检索的统计信息,确定(在765)位于非默认队列中的任何VM是否应该被移回到默认池。在一些实施例中,当VM对非默认队列的使用降至非默认队列的阈值使用水平或VM对非默认队列的使用的阈值使用水平以下时,该处理将VM移回到默认队列。在这些实施例中的一些实施例中,该处理只在VM的使用已经在阈值使用水平以下持续足够长的时间段时才移动VM。当该处理在765识别了任何VM时,它将识别的VM移回到默认池的默认队列,并且从其之前分配的非默认队列的池中去除该VM。当在该重新分派之后没有其它VM使用之前分派的非默认队列时,处理700还将非默认队列重新分派(在765)给空闲队列的池。当该重新分配的队列是池中最后一个队列时,一些实施例的处理700还解除池的分配,因为它不再包含任何队列。然而,其它实施例在这种情形下不解除池的分配。在765之后,该处理结束。
图8概念性地示出在一些实施例中负载均衡器555周期性地(例如,每隔几秒、每隔数毫秒、每隔数微秒等)调用的池调节处理800。一些实施例中的负载均衡器555周期性地调用该处理,以重新均衡每个池内的队列。在一些实施例中,池调节处理检查每个池,以基于池的一个或多个优化标准确定它是否必须将一个或多个VM在池中的队列之间移动、或者将一个或多个VM移到池中的新队列。一些实施例的池调节处理针对不同的池使用不同的优化标准。例如,在一些实施例中,用于LLR池的优化标准使得该处理倾向于在LLR池的队列之间分配VM,而用于HLT池的优化标准使得该处理倾向于将VM聚集到HLT池中的队列上。
如图8中所示,处理800初始地从关于所有VM对默认队列和非默认队列的使用的统计信息存储器545收集(在805)统计信息。该处理使用检索到的统计信息来执行分析,如以下进一步描述的。在805之后,处理800选择(在810)非默认池中的一个进行检查(例如,选择LLR池进行检查)。接下来,在815,该处理确定池中的任何队列是否未被充分使用。如果发现任何这种队列,则该处理接着确定(在815)所选择池中的任何其它队列是否具有用于目前正在使用该处理在815识别的任何未充分使用队列的一个或多个VM的容量。当该处理识别具有过量容量的这种队列时,该处理将一个或多个VM从未充分使用的队列分派(在815)到具有过量容量的一个或多个队列。当在移动之后没有任何其它VM被分派给未充分使用的队列时,该处理还将未充分使用的队列从所选择池中解除分配(在815)(即,将未充分使用的队列分派给空闲池)。以此方式,未充分使用的队列可空出来,以在随后被分配给另一池或同一池。
在815之后,该处理识别(在820)所选择池中正被过度使用的任何队列。该处理接着确定(在825)所选择池是否存在任何队列具有过量容量来处理目前被分派给识别的过度使用队列的一个或多个VM的通信量。当该处理识别(在825)具有过量容量的一个或多个队列时,该处理将目前被分派给识别的过度使用队列的一个或多个VM分派(在830)给具有过量容量的一个或多个队列,然后转到以下将描述的835。
另一方面,当该处理确定(在825)所选择池没有任何过量容量的队列来处理目前正经过过度使用队列的通信量中的一些时,该处理确定(在840)是否存在任何空闲队列(例如,空闲池是否具有任何队列)。如果存在,则该处理将空闲队列中的一个或多个分配(在845)给所选择池(即,在810选择的池)。在845,该处理还将目前被分派给识别的过度使用队列的一个或多个VM分配给重新分配的队列,然后转到以下将描述的835。
当该处理确定(在840)没有空闲队列时,该处理确定(在850)它是否可先占取另一池中的队列。在一些实施例中,并非所有池可先占取其它池中的队列;只有一些池(例如,LLR池)可先占取其它池(例如,HLT池)中的队列。另外,在一些实施例中,在某些情形下(例如,当其它池本身没有严重超负荷时),一些池可先占取其它池中的队列。
当该处理确定(在850)它无法先占取另一池中的队列时,该处理转到835。另一方面,当该处理确定(在850)它可先占取另一池中的队列时,该处理将目前正在使用先占取队列的所有VM分派(在855)给与先占取池相同的池内的新队列。在重新分派所有VM之后,该处理接着将先占取队列分配(在855)给所选择池(即,在810选择的池),并且将目前被分派给识别的过度使用队列的一个或多个VM分派给新分配的队列,然后转到835。
在835,该处理确定它是否检查了它应该检查的所有非默认池。如果是,该处理结束。否则,该处理返回到810以选择另一个非默认池。该处理使用不同标准来评估不同池的队列的未充分使用和过度使用。例如,对于LLR池,过度使用阈值可以是50%负载并且未充分使用阈值可以是5%,而对于HLT池,过度使用阈值可以是90%并且未充分使用阈值可以是75%。
另外,如以上提到的,一些实施例基于不同池资源分配标准(例如,池中队列的最大/最小数量、池的总CPU使用率、池的网络通信量、池的服务质量(Qos)约束等)调整不同池的大小。类似地,一些实施例基于不同的重新均衡标准(例如,将VM填充尽可能少的队列(例如,针对HLT池)、跨尽可能多的队列分配VM(例如,针对LLR池)等)来重新均衡不同池中的队列。
在一些实施例中,图8的处理800检查未充分使用的队列,以将它们的VM重新分派给同一池中的其它队列,使得它可解除未充分使用队列的分配。作为检查未充分使用的队列的补充或替代,一些实施例的负载均衡器检查要分派给未默认队列的每个VM,以确定VM对其非默认队列的使用是否在阈值水平以下。图9示出一些实施例的负载均衡器执行的用于评估VM对其队列的使用率的处理900。
如该图中所示,处理900先开始选择(在905)非默认队列的VM。接下来,在910,该处理确定VM是否未充分使用其队列。例如,在一些实施例中,当只有通过队列的通信量的1%归属于VM时,认为VM未充分使用其队列。
当该处理确定(在910)VM没有未充分使用其队列时,该处理结束。否则,该处理确定(在915)与VM的目前队列相同的池中的另一队列是否具有用于所选择VM的容量。如果没有,则该处理结束。否则,该处理(在920)将VM分派给与VM的目前队列相同的池中的新队列。如果VM的之前队列没有被分派任何其它VM,则该处理接着解除之前队列的分配。
图10示出因为对第一队列的未充分使用或因为MV对其第一队列的未充分使用而将VM从第一队列重新分派给第二队列的示例。具体地讲,该图示出初始被分派给两个队列1025和1030的两个VM 1015和1020的网络堆栈1005和1010。在这两个VM被初始化时,这两个VM被分派给这两个队列。
在某个随后时间点,负载均衡器555检索关于各种队列的各种VM使用的统计信息。基于这些统计信息,负载均衡器检测VM 1020使用队列1030的容量的不足1%。因为该VM未充分使用其队列,所以负载均衡器接着定义网络虚拟化层中和PNIC中的过滤器,其将VM1020及其网络堆栈1010从队列1030重新分派给队列1025。如果没有其它VM正在使用队列1030,则负载均衡器还把队列1030重新分配给队列的空闲池。在一些实施例中,负载均衡器会把VM 1020重新分派给队列1025,这只有当确定在进行该重新分派(和同时使用队列1030的任何其它VM的重新分派)时,队列1030可从任何VM通信量中空出来,因此被重新分配给空闲池才进行。然而,在其它实施例中,负载均衡器仅仅基于VM自身对其队列的使用来进行其重新分配决定。
图11示出因为第一队列的过度使用而将VM从第一队列重新分派给第二队列的示例。具体地讲,这个图示出在相同的两个VM 1015和1020已经被分派给队列1025之后这两个VM的相同的两个网络堆栈1005和1010。在某个时间点,负载均衡器555检索关于各种队列的各种VM使用的统计信息。基于这些统计信息,负载均衡器检测队列1025正以其90%的容量处理通信量。因为这个队列正被过度使用,所以负载均衡器接着定义网络虚拟化层中和PNIC中的过滤器,其将VM 1020及其网络堆栈1010从队列1025重新分派给队列1030。
如以上提到的,一些实施例中的负载均衡器是保持跨池的期望均衡的池均衡处理。在一些实施例中,池均衡处理检查跨各种池的队列使用。基于该检查,均衡处理可将一个或多个队列分配给一个池。还可基于该检查将一个或多个队列从另一个池解除分配。在一次调用中,该处理可将更多队列分配给一个以上的池,或者它可解除一个以上的池中的队列的分配。
图12示出跨池的池均衡的示例。具体地讲,它示出在两个阶段1205和1210中将队列从低优先级池1215添加到高优先级池1220。在第一阶段中,负载均衡器555从统计信息存储器545检索统计信息。基于检索的统计信息,负载均衡器确定通过高优先级池1220的队列的负载(LH)大于通过低优先级池1215的队列的负载(LT)的特定百分比(例如,75%)。
因为一些实施例想要通过高优先级队列的负载显著小于通过低优先级队列的负载,所以负载均衡器设置过滤器,使得低优先级池中的队列1250从该池中被去除并且被添加到高优先级池中。在队列1250可切换到高优先级池之前,正在使用低优先级池中的队列1250的VM必须被分派给该池中的不同队列。图12示出将队列1250添加到高优先级队列之后,通过高优先级队列的负载(LH)小于通过低优先级队列的负载(LL)的指定百分比。
IV.非VM可寻址节点和其它过滤
以上已经描述了一些实施例,对于进出在主机装置上执行的一个或多个VM的数据通信量,动态地定义队列的池,唯一地管理每个池,动态地改变池内的队列,并且将VM的通信量重新分派给新队列。这些实施例中的许多实施例使用主机装置接收或发送的数据包的目的地或源MAC地址,以将VM数据通信量数据包分派给不同池和池内的不同队列。
然而,并非所有实施例使用MAC地址将数据通信量分派给池和池内的队列。另外,一些实施例的队列管理方法和设备用于除VM数据通信量之外的数据通信量。具体地讲,作为VM数据通信量的附加或者作为VM数据通信量的替代,一些实施例动态地定义池,唯一地管理每个池,动态地改变池内的队列,并且动态地重新分派进出在主机上执行的非VM可寻址节点(例如,源端节点或目的地端节点)的数据通信量。一些实施例的方法和设备用于执行这些操作,以区分通过队列的不同类型的数据通信量的路由。
以下,进一步描述一些这样的实施例。具体地讲,子部分A描述使用MAC地址过滤将非VM通信量数据路由到不同池的不同队列的一些实施例。接着,子部分B描述使用五元组IP过滤将不同类型的数据通信量路由到不同池的不同队列的一些实施例。
A.用于非VM通信量的MAC过滤
一些实施例使用MAC地址过滤将在主机装置上执行的非VM数据可寻址节点的数据通信量路由到队列的不同池和池内的不同队列。例如,一些实施例的方法监控通过主机装置的物理NIC的非VM可寻址节点(例如,数据端节点)集合的数据通信量。基于该监控,该方法指定至少用于非VM可寻址节点集合的池,并且将队列集合分派给该池。该方法接着使用目的地或源MAC过滤将用于非VM可寻址节点集合的由主机装置接收或发送的数据通信量引导到分派的队列集合。
可替选地或者可结合地,基于该监控,该方法可改变被分派给用于非VM可寻址节点集合的池的队列集合。这种改变的示例包括当池的一个或多个队列被过度使用或未充分使用时在池中添加队列或者从池中去除队列。在一些实施例中,该方法通过先占取另一个池中的队列(例如,通过使用上述先占取方法中的一种)在该池中添加队列。
另外,作为上述操作的替代或与上述操作结合,该方法可基于该监控,将用于非VM可寻址节点(例如,数据端节点)的数据通信量从该池中的第一队列重新分派给该池中的第二队列。例如,基于该监控,一些实施例的方法检测通过第一队列的用于非VM可寻址节点的通信量降至通信量的最小阈值量以下(例如,在一段时间内)。因为这种未充分使用,该方法将这个通信量切换至第二队列。在进行该切换之前,一些实施例的方法确定通过第二队列的通信量没有超过通信量的最大阈值量。
基于该监控,一些实施例的方法检测通过第一队列的通信量超过通信量的最大阈值量(例如,在一段时间内)。因为这种过度使用,该方法将用于非VM可寻址节点(例如,数据端节点)的通信量从第一队列切换至第二队列。同样,在进行该切换之前,一些实施例的方法确定通过第二队列的通信量没有超过通信量的最大阈值量。
图13示出一些实施例的队列管理***1300,队列管理***1300使用MAC地址过滤将在主机装置上执行的VM和非VM数据可寻址节点的数据通信量路由到队列的不同池和池内的不同队列。这个***类似于图5的***,不同的是,***只管理进出VM端节点的通信量,而***1300管理进出VM和非VM可寻址节点(例如,iSCSI(内部小型计算机***接口)安装器1305、NFS(网络文档存储)安装器1307和VM迁移器1309)的通信量。***1300将队列分成不同优先级池,其中为特定类型的可寻址节点保留较高优先级池。它还动态地调节每个池中的队列(即,动态地调节池的大小),并且基于一个或多个优化标准(例如,与队列的未充分使用或过度使用有关的标准)将可寻址节点动态地重新分派给池中的新队列。
图13示出(1)在主机(未示出)上执行的一些VM 505,(2)两个安装的存储卷1320和1325,(3)VM迁移数据1330,(4)主机的由VM和非VM节点共用的物理NIC 515,(5)有助于通过共用的PNIC进出VM的通信量的虚拟化层1310。如进一步示出的,虚拟化层包括一些非VM可寻址节点,例如iSCSI安装器1305、NFS安装器1307、VM迁移器1309。该层还包括用于每个VM或非VM可寻址节点的网络堆栈1311、1313、1315、1317或1319。虚拟化层还包括软件转发元件535(例如,软件交换)、队列选择器518、动态负载均衡器555、统计信息收集引擎540和统计信息存储器545。
在一些实施例中,图13的PNIC 515等同于图5的上述PNIC 515。如以上提到的,PNIC具有用于从有线或无线链接接收输入数据包的接收侧(RX)处理引擎511。RX处理引擎具有MAC过滤器514,MAC过滤器514被配置成基于目的地MAC将每个(VM或非VM)可寻址节点的传入通信量与一个队列对关联。虚拟化层保持用于传出数据包的类似的过滤器516,并且该层中的队列选择器518使用该过滤器中的数据配置每个可寻址节点的传出通信量,以使用与传入通信量相同的队列对。在一些实施例中,过滤器516依据VM的源MAC地址或VM的VNIC的源MAC地址来指定可寻址节点,而在其它实施例中,它依据VM的VNIC所连接的软件转发元件的端口ID来指定VM。因为图13的PNIC 515等同于图5的PNIC 515,所以为了不用不必要细节模糊对图13的描述,将不对图13的PNIC 515进行进一步描述。
VM和非VM可寻址节点在超级监督者(未示出)之上执行,在一些实施例中,超级监督者包括虚拟化层1310。VM和非VM可寻址节点可以是用于通过网络发送的数据包的源端节点和目的地端节点。如以上提到的,这些节点包括VM 505、卷安装器1305和1307和VM迁移器1309。iSCSI安装器1305将存储卷1320安装在主机上。该存储卷1320是通过iSCSI协议可访问的外部存储器(即,例如存储器服务器的主机外部的存储器)的一些或全部。类似地,NFS安装器1307将存储卷1325安装在主机上。该存储卷1325是通过NFS协议可访问的外部存储器(例如,存储服务器)的一些或全部。接着,在主机或其它装置上执行的模块(例如,VM)可访问安装的卷,就好像外部存储器驻留在主机中一样。VM迁移器1309收集关于在主机上执行的每个VM的数据,以有助于VM从一个主机在线迁移到另一个。这种VM迁移器的一个示例是在VMware公司的ESX超级监督者中使用的vMotion模块。
每个可寻址节点通过网络堆栈和转发元件的端口(未示出)连接到软件转发元件535。在一些实施例中,每个VM的网络堆栈包括VNIC仿真器527和I/O链529,并且由接收/发送线程531管理,如以上参照图5描述的。在一些实施例中,每个非VM可寻址节点的网络堆栈包括超级监督者内核网络接口和接收/发送线程。在一些实施例中,每个非VM可寻址节点的超级监督者内核网络接口(例如,VMware公司的vmknic)包括用于处理由非VM可寻址节点接收和由非VM可寻址节点发送的TCP/IP数据包的TCP/IP堆栈。例如,在一些实施例中,每个非VM可寻址节点的网络(1)将TCP/IP数据包头部附于它从其对应的安装卷1320/1325或迁移数据存储器1330发送的数据包,(2)从它接收的用于存储在其对应的安装卷或迁移数据存储器中的数据包中去除TCP/IP数据包头部。
在一些实施例中,非VM可寻址节点(例如,VM迁移器1309)的超级监督者内核网络接口不包括TCP/IP堆栈,而是包括其它数据包处理模块,例如RDMA(远程直接存储器访问)数据包处理模块。另外,在一些实施例中,非VM可寻址节点的网络堆栈包括其它I/O链模块,这些I/O链模块用于对由它们对应的卷或数据存储器发送和接收的数据包执行其它变换操作。类似于图5的接收/发送线程531,每个非VM可寻址节点的网络堆栈的接收/发送线程管理网络堆栈中的模块,与和堆栈的非VM可寻址节点关联的PNIC队列517交互,并且收集关于其堆栈的模块的操作的统计信息。
如以上提到的,虚拟化层还包括统计信息收集引擎540、统计信息存储器545和动态负载均衡器555。统计信息收集引擎540、负载均衡器555和RX/TX线程(未示出)部分地形成一些实施例的队列管理***。由统计信息收集引擎540收集的统计信息向负载均衡器提供为确定何时将队列分派给池以及何时调节池所需的信息。
在不同实施例中,统计信息收集引擎从不同源中得到统计信息。例如,在一些实施例中,该统计信息收集引擎从任一CPU调度器525(针对CPU使用率)和RX/TX线程(针对网络通信量)拉取统计信息或者从任一CPU调度器525(针对CPU使用率)和RX/TX线程(针对网络通信量)接收被推送的统计信息。对于网络通信量,虚拟化层使得从各种源收集统计信息(例如,吞吐量、数据包比率、丢包率等),所述各种源包括网络堆栈的每层(即,由RX/TX线程管理的每个模块)。
在一些实施例中,统计信息收集引擎收集负载均衡器的以下网络统计信息:PNIC数据包比率、PNIC吞吐量和每个RX/TX线程的CPU使用率。在一些实施例中,CPU调度器525更新CPU使用率数据,而RX/TX线程更新PNIC数据包比率和吞吐量,因为它们是实际上与PNIC通信并且具有精确计数的线程。在一些实施例中,PNIC驱动器模块处于队列选择器以下,并且该PNIC驱动器是与PNIC通信并且更新PNIC负载统计信息的模块。另外,在一些实施例中,统计信息收集引擎不仅收集负载均衡器的PNIC统计信息,而且还收集非VM可寻址节点采集的一个或多个VNIC统计信息。
通过依靠VNIC统计信息,负载均衡器可决定,当对延迟敏感的(VM或非VM)可寻址节点的数据包比率在某个阈值以上、或者它由于与其共用同一队列的一个或多个其它节点的吞吐量而受损害时,将它移到独有队列或更高优先级池。更一般地,负载均衡器555使用收集到的统计信息来确定将哪个队列分派给哪个可寻址节点,何时将队列动态地分派给池以及何时动态地调节池。
在一些实施例中,负载均衡器周期性地(例如,每隔几秒、几毫秒、几微秒等)运行负载均衡处理。该处理从统计信息收集引擎保持的“负载统计信息”数据存储器545检索统计信息,并且基于这些统计信息,确定是否需要将可寻址节点分派给队列,调整池的大小,和/或先占取队列。负载均衡器通过配置PNIC和虚拟化层的过滤器以将特定队列标识符与用于输出通信量的特定源MAC地址和用于输入通信量的特定目的地MAC关联来将节点分派给队列。为了配置PNIC的MAC过滤器,负载均衡器使用PNIC驱动器的API来对过滤器和各队列的硬件特征进行编程。
如图13中所示,负载均衡器具有三个模块,即,池561、队列均衡器559和池均衡器557。这些池是负载均衡器定义的PNIC队列的软件抽象分组。负载均衡器应用不同处理来管理不同“池”中的队列。如此,每个池可被视为具有相同“特征”的队列集合,其中,特征类似于硬件特征(类似RSS/LRO)。这种特征的示例包括VM要求(例如,低延迟或低中断比率)。
通过应用不同处理来管理不同池中的队列,负载均衡器可针对不同池不同地优化队列的分配和池大小的调整。池重新均衡器557基于池的资源分配标准调整每个池的大小并且在需要时先占取其它池中的队列。这种资源分配标准的示例包括池中队列的最大/最小数量、池的总CPU使用率、池的网络通信量、池的服务质量(QoS)约束等。队列重新均衡器559基于池的重新均衡标准,重新均衡同一池中的队列。这种池重新均衡标准的示例包括将可寻址节点填充尽可能少的队列(例如,针对HLT池),跨尽可能多的队列分配可寻址节点(例如,针对LLR池)等。在一些实施例中,负载均衡器555通过使用类似于以上参照图6至图9的上述处理的处理,管理PNIC队列来处理VM和非VM可寻址节点。在这些实施例中的一些实施例中,这些处理仅被修改为不仅监控和管理VM通信量而且监控和管理进出非VM可寻址节点的通信量(例如,进出安装器1305和1307和迁移器1309的通信量)。
B.用于区分不同类型的数据包的替代过滤
作为MAC地址过滤的替代,一些实施例使用其它过滤技术以不同方式处理不同类型的数据包,以便例如为不同的数据包类型集合定义不同的池,以不同方式管理每个池,动态地改变池内的队列,以及动态地重新分派不同类型的数据通信量。例如,基于非MAC数据包标识符,一些实施例的方法识别和监控通过主机装置的NIC的第一类型的数据通信量。基于该监控,该方法指定用于第一类型的数据通信量的池,将队列集合分派给该池。该方法接着使用非MAC地址过滤将第一类型的数据通信量引导到所分派的队列集合。
可替选地或者可结合地,基于该监控,该方法可改变分派给通过非MAC数据包标识符识别的用于第一类型的数据通信量的池的队列集合。这种改变的示例包括当该池的一个或多个队列被过度使用或未充分使用时在该池中添加或去除队列。在一些实施例中,该方法通过先占取另一个池中的队列(例如,通过使用上述先占取方法中的一种)在该池中添加队列。
另外,作为上述操作的替代或与上述操作结合,该方法可基于该监控,将第一类型的数据通信量从该池中的第一队列重新分派给该池中的第二队列。例如,基于该监控,一些实施例的方法检测通过第一队列的第一类型的数据通信量降至通信量的最小阈值量以下(例如,在一段时间内)。基于这种未充分使用,该方法将这个通信量切换至第二队列。在进行该切换之前,一些实施例的方法确定通过第二队列的通信量没有超过通信量的最大阈值量。
可替选地,基于该监控,一些实施例的方法可检测通过第一队列的第一类型的数据通信量超过通信量的最大阈值量(例如,在一段时间内)。因为这种过度使用,该方法将第一类型的数据通信量从第一队列切换至第二队列。同样,在进行该切换之前,一些实施例的方法确定通过第二队列的通信量没有超过通信量的最大阈值量。
不同的实施例使用不同的非MAC过滤。一些实施例使用数据包头部数据将数据包有效载荷归类为多种类型中的一种。例如,一些实施例使用L3和L4数据包头部中的五元组IP数据对数据包有效载荷进行归类。五元组数据包括源端口标识符、目的地端口标识符、源IP地址、目的地IP地址和协议。使用这五个标识符,一些实施例的过滤器可将IP数据包指定为任何数量的不同类型,例如VOIP数据包、视频数据包、音频数据包、FTP数据包、HTTP数据包、HTTPS数据包、远程桌面数据包(PCoIP、VNC、RDP)、管理数据包(认证、服务器健康监控、时间同步)、电子邮件数据包(POP3、SMTP)等。由于这些协议全都具有不同的通信模式,因此一些实施例将其中的一个或多个分成队列的不同池,并且使用不同的优化标准将数据通信量分配到每个池中的队列。
以下提供的列表示出可以如何使用五元组来通过使用下面的标志区分网络通信量、VoIP、视频流、远程桌面、管理、电子邮件:协议-src_ip-dst_ip-src_port-dest_port,其中,*表示通配符匹配。在这个列表中,假设VM是请求服务/数据/来自服务器的服务的客户端。
·网络:TCP-*-*-*-80/443(80是针对HTTP并且443是针对HTTPS)
·VoIP(Skype):TCP/UDP-*-*-23399-*或TCP/UDP-*-*-*-23399(传入和传出通信量)
·视频流(MMS):TCP/UDP-*-*-*-1755
·远程桌面(PCoIP):TCP/UDP-*-*-*-4172
·认证(Kerberos):TCP/UDP-*-*-*-88
·电子邮件(POP3):TCP-*-*-*-110
图14和图15图示示出了一些实施例使用五元组过滤器区分在视频呈现期间由虚拟机发送或接收的VOIP和视频数据包的示例。图14示出使用五元组区分由VM 1405正在发送的VOIP和视频数据包的情况。在这个示例中,动态负载均衡器555在队列选择器518中设置一组五元组过滤器1410,以将VOIP数据包从VM 1405路由到高优先级队列池1420,同时设置另一组五元组过滤器,以将视频数据包从这个VM路由到低优先级队列池1425。
图15示出使用五元组区分由VM 1405正在接收的VOIP和视频数据包的情况。在这个示例中,动态负载均衡器555在PNIC 515的RX处理引擎511中设置一组五元组过滤器1510,以将传入的VOIP数据包(针对VM 1405)发送到高优先级队列池1420,同时设置另一组五元组过滤器1510,以将传入的视频数据包(针对VM 1405)发送到低优先级队列池1425。
负载均衡器555设置五元组过滤器,以便将队列分组成池,然后它基于不同标准来管理该池。具体地讲,通过依靠统计信息存储器545中收集的统计信息,负载均衡器555可确定将哪个可寻址节点分派给哪个队列,何时将队列动态地分派给池,何时从池中动态地去除队列,何时将可寻址节点动态地重新分派给新队列。
在一些实施例中,负载均衡器周期性地(例如,每隔几秒、几毫秒、几微秒等)运行负载均衡处理。这个处理从统计信息收集引擎保持的“负载统计信息”数据存储器545检索统计信息,并且基于这些统计信息,确定是否需要将可寻址节点分派给队列、调整池的大小、和/或先占取队列。负载均衡器通过配置PNIC和虚拟化层的五元组过滤器以将特定队列标识符与特定五元组过滤器关联来将节点分派给队列。为了配置PNIC的过滤器,负载均衡器使用PNIC驱动器的API来对过滤器和各队列的硬件特征进行编程。
如以上参考图5和图13描述的,在一些实施例中,图14和图15的虚拟化层中的负载均衡器555具有三个模块(未示出)。这三个模块是(1)存储器,该存储器存储各个池、其相关队列的标识符、与每个队列关联的可寻址节点,(2)队列均衡器,(3)池均衡器。
图14和图15的负载均衡器555应用不同处理来管理不同“池”中的队列。如此,每个池可被视为具有相同“特征”的一组队列。通过应用不同处理来管理不同池中的队列,负载均衡器可针对不同池不同地优化队列的分配和池大小的调整。池重新均衡器基于池的资源分配标准调整每个池的大小,并且在需要时先占取其它池中的队列。以上提供了这种资源分配标准的示例(例如,池中队列的最大/最小数量、池的总CPU使用率、池的网络通信量、池的服务质量(QoS)约束等)。
队列重新均衡器基于池的重新均衡标准,重新均衡同一池中的队列,例如将可寻址节点填充尽可能少的队列(例如,针对HLT池),跨尽可能多的队列分配可寻址节点(例如,针对LLR池)等。在一些实施例中,图14和图15的负载均衡器555通过使用类似于以上参照图6至图9的上述处理的处理,管理PNIC队列来处理VM和非VM可寻址节点。在这些实施例中的一些实施例中,这些处理仅被修改为不仅监控和管理VM通信量而且监控和管理进出非VM可寻址节点的通信量。
V.电子***
上述特征和应用中的一些被实现为被指定为在计算机可读存储介质(也被称为计算机可读介质)上记录的一组指令的软件处理。当这些指令由一个或多个处理单元(例如,一个或多个处理器、处理器的核或其它处理单元)执行时,它们使得处理单元执行指令中指示的动作。计算机可读介质的示例包括但不限于CD-ROM、闪存驱动器、RAM芯片、硬驱动器、EPROM等。计算机可读介质不包括无线地或者通过有线连接传递的载波和电子信号。
在本说明书中,术语“软件”意指包括可被读入存储器中供处理器处理的、存在于只读存储器中的固件或存储在磁存储器中的应用。另外,在一些实施例中,多个软件发明可在保持不同的软件发明的同时被实现为较大程序的子部分。在一些实施例中,多个软件发明还可被实现为单独的程序。最终,一起实现本文描述的处理的单独程序的任何组合在本发明的范围内。在一些实施例中,程序当被安装以在一个或多个电子***上操作时定义一个或多个特定机器实现方式,这些实现方式执行和运行软件程序的操作。
图16概念性地示出用来实现本发明的一些实施例的电子***1600。电子***1600可以是上述主机装置中的任一个。这个***可以是执行上述处理和/或队列管理***中的任一个的任何装置。电子***1600可以是计算机(例如,台式计算机、个人计算机、平板计算机、服务器计算机、大型机、刀片计算机等)、电话、PDA或任何其它类型的电子装置。这种电子***包括各种类型的计算机可读介质和用于各种其它类型的计算机可读介质的接口。电子***1600包括总线1605、处理单元1610、***贮存器1625、只读贮存器1630、永久存储装置1635、输入装置1640和输出装置1645。
总线1605共同地代表所有以通信方式连接电子***1600的众多内部装置的***总线、***设备总线和芯片组总线。例如,总线1605将处理单元1610与只读贮存器1630、***贮存器1625和永久存储装置1635通信地连接。
从这些各种贮存器单元,处理单元1610获取要执行的指令和要处理的数据,以执行本发明的处理。在不同的实施例中,处理单元可以是单个处理器或多核处理器。
只读贮存器(ROM)1630存储电子***的处理单元1610和其它模块所需的统计信息数据和指令。另一方面,永久存储装置1635是读写贮存器装置。这个装置是非易失性贮存器单元,即使当电子***1600关闭时也存储指令和数据。本发明的一些实施例使用大容量存储装置(例如,磁盘或光盘及其对应的盘驱动器)作为永久存储装置1635。
其它实施例使用可移动存储装置(例如,软盘、闪存驱动器等)作为永久存储装置。类似于永久存储装置1635,***贮存器1625是读写贮存器装置。然而,不同于存储装置1635,***贮存器是易失性读写贮存器,例如随机存取贮存器。***贮存器存储处理器在运行时需要的指令和数据中的一些。在一些实施例中,本发明的处理被存储在***贮存器1625、永久存储装置1635和/或只读贮存器1630中。从这些各种贮存器单元,处理单元1610获取要执行的指令和要处理的数据,以执行一些实施例的处理。
总线1605还连接到输入装置1640和输出装置1645。输入装置使用户能够传送信息并且选择针对电子***的命令。输入装置1640包括字母数字键盘和指点装置(也被称为“光标控制装置”)。输出装置1645显示电子***产生的图像。输出装置包括打印机和显示装置,例如阴极射线管(CRT)或液晶显示器(LCD)。一些实施例包括诸如同时用作输入装置和输出装置的触摸屏的装置。
最后,如图16中所示,总线1605还通过网络适配器(未示出)将电子***1600连接到网络1665。以此方式,计算机可以成为计算机网络(例如,局域网(LAN))、广域网(WAN)、或以太网、或诸如因特网的网络中的网络的部分。电子***1600的任何或所有组件可与本发明结合使用。
一些实施例包括电子组件,例如将计算机程序指令存储在机器可读或计算机可读介质(可替选地,被称为计算机可读存储介质、机器可读介质、或机器可读存储介质)中的微处理器、存储器和贮存器。这种计算机可读介质的一些示例包括RAM、ROM、只读光盘(CD-ROM)、可记录光盘(CD-R)、可重写光盘(CD-RW)、只读数字通用盘(例如,DVD-ROM、双层DVD-ROM)、各种可记录/可重写DVD(例如,DVD-RAM、DVD-RW、DVD+RW等)、闪存存储器(例如,SD卡、迷你SD卡、微型SD卡等)、磁和/或固态硬盘驱动器、只读和可记录盘、超级密度光盘、任何其它光或磁介质、软盘。计算机可读介质可存储能由至少一个处理单元执行的计算机程序并且包括用于执行各种操作的一组指令。计算机程序或计算机代码的示例包括诸如由编译器生成的机器代码和包括由计算机、电子组件或微处理器使用解释器执行的更高级代码的文件。
虽然以上讨论主要指的是执行软件的微处理器或多核处理器,但一些实施例是由一个或多个集成电路(例如,专用集成电路(ASIC)或现场可编程门阵列(FPGA))执行的。在一些实施例中,这种集成电路执行存储在电路本身中的指令。
如本说明书中使用的,术语“计算机”、“服务器”、“处理器”和“贮存器”都是指电子或其它技术装置。这些术语不包括人或人的群组。出于说明书的目的,术语“显示”意指在电子装置上显示。如本说明书中使用的,术语“计算机可读介质”和“机器可读介质”完全限于将信息以计算机可读形式存储的有形物理物体。这些术语不包括任何无线信号、有线下载信号、任何其它短暂或瞬变信号。
虽然已经参照众多具体细节描述了本发明,但本领域的普通技术人员将认识到,在不脱离本发明的精神的情况下,可以以其它具体形式实施本发明。另外,多个图(包括图6至图9)概念性地示出处理。这些处理的具体操作可以不按照示出和描述的准确次序执行。具体操作可以不在连续一系列操作中执行,不同具体操作可在不同实施例中执行。此外,可使用多个子处理来实现处理,或者处理可被实现为更大宏处理的一部分。
Claims (17)
1.一种用于管理多个队列的方法,所述多个队列用于临时存储经过电子装置的物理网络接口卡PNIC的数据通信量,所述方法包括:
指定第一池并且至少将PNIC的所述多个队列中的第一队列分派给第一池;
将第一虚拟机VM初始化为在所述电子装置上执行的可寻址节点,其中第一虚拟机VM包括通过网络堆栈耦接到PNIC的第一虚拟网络接口卡VNIC;
将经过PNIC的数据通信量的子集分派给将由一个或多个队列支持的第一池,所述一个或多个队列被分派给至少包括第一队列的第一池,其中数据通信量的子集与第一虚拟机VM有关;
将第二虚拟机VM初始化为在所述电子装置上执行的可寻址节点,其中第二虚拟机VM包括通过网络堆栈耦接到PNIC的第二虚拟网络接口卡VNIC;
确定第二虚拟机VM具有相对于由所述PNIC支持的特定硬件功能有关的特定的通信量要求;
指定硬件特征池并且至少将所述PNIC的队列中的第二队列分派给所述硬件特征池,其中所述第二队列具有与所述第二虚拟机VM的所述特定的通信量要求匹配的所述特定硬件功能;以及
基于所述确定,将第二虚拟机VM的数据通信量分派给至少由所述第二队列支持的所述硬件特征池。
2.根据权利要求1所述的方法,其中确定第二虚拟机VM具有特定的通信量要求是响应于监控经过PNIC的数据通信量的。
3.根据权利要求1所述的方法,其中为具有特定的通信量要求的虚拟机VM保留硬件特征池。
4.根据权利要求1所述的方法,其中特定的通信量要求是第二虚拟机VM要求低延迟。
5.根据权利要求4所述的方法,其中所述硬件特征池是为要求低延迟的虚拟机VM保留的。
6.根据权利要求1所述的方法,还包括:确定PNIC的全部队列都不是空闲队列,以及作为响应,先占取当前被分派给其他池的第二队列,并且将第二队列重新分派给所述硬件特征池。
7.根据权利要求1所述的方法,还包括:
接收具有数据包头部的数据包,所述数据包头部包含数据元组集合;以及
通过检查所述数据包头部中的数据元组集合来确定数据包的类型。
8.根据权利要求7所述的方法,其中数据包是层2(L2)数据包,并且数据元组集合包括媒体访问控制(MAC)地址。
9.根据权利要求7所述的方法,其中数据包是层3(L3)数据包,并且数据元组集合包括源端口标识符、目的地端口标识符、源因特网协议IP地址、目的地IP地址和协议。
10.根据权利要求7所述的方法,其中所述数据包的类型包括因特网协议IP语音数据、视频数据、音频数据、远程桌面数据包、管理数据包和电子邮件数据包之一。
11.根据权利要求1所述的方法,还包括:
检测经过当前分派的队列的数据通信量的子集降至通信量的阈值量以下;以及
将数据通信量的子集分派给其他队列,
其中其他队列是数据通信量的其他子集之前所分派给的另一队列。
12.根据权利要求11所述的方法,其中:
通信量的阈值量是最小阈值量;
所述检测还包括:在将数据通信量的子集分派给所述另一队列之前,检测经过所述另一队列的数据通信量没有超过通信量的最大阈值量。
13.根据权利要求1所述的方法,还包括:
检测经过第一队列的数据通信量超过通信量的阈值量,其中经过第一队列的数据通信量不仅包括第一虚拟机VM的数据通信量的子集,而且包括其他数据通信量;以及
将第一虚拟机VM的数据通信量的子集分派给第一池中的其他队列,其中其他队列是数据通信量的其他子集所分派给的队列。
14.根据权利要求1所述的方法,还包括:
检测经过第一队列的第一虚拟机VM的数据通信量的子集超过通信量的最大阈值量;以及
将第一虚拟机VM的数据通信量的子集分派给第一池中的另一队列,其中另一队列是数据通信量的其他子集所分派给的队列。
15.根据权利要求14所述的方法,还包括:
在检测到经过第一队列的数据通信量超过通信量的最大阈值量时,将来自其他池的所述另一队列分派给第一池。
16.根据权利要求14所述的方法,还包括:检测经过所述另一队列的数据通信量没有超过对于所述另一队列的通信量的最大阈值量。
17.一种非暂态机器可读介质,存储由至少一个处理单元执行的程序,所述程序用于根据权利要求1至16中任一项所述的方法来管理计算装置的物理网络接口卡PNIC中的多个队列。
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201361870201P | 2013-08-26 | 2013-08-26 | |
US61/870,201 | 2013-08-26 | ||
US14/137,961 | 2013-12-20 | ||
US14/137,961 US10027605B2 (en) | 2013-08-26 | 2013-12-20 | Traffic and load aware dynamic queue management |
CN201410191336.0A CN104426799B (zh) | 2013-08-26 | 2014-05-08 | 管理网络接口卡中的队列的方法 |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410191336.0A Division CN104426799B (zh) | 2013-08-26 | 2014-05-08 | 管理网络接口卡中的队列的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108337188A CN108337188A (zh) | 2018-07-27 |
CN108337188B true CN108337188B (zh) | 2022-05-24 |
Family
ID=52480289
Family Applications (3)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810194113.8A Active CN108337188B (zh) | 2013-08-26 | 2014-05-08 | 通信量和负载感知动态队列管理 |
CN201810194114.2A Active CN108429702B (zh) | 2013-08-26 | 2014-05-08 | 用于管理网络接口卡中多个队列的方法及计算机可读介质 |
CN201410191336.0A Active CN104426799B (zh) | 2013-08-26 | 2014-05-08 | 管理网络接口卡中的队列的方法 |
Family Applications After (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810194114.2A Active CN108429702B (zh) | 2013-08-26 | 2014-05-08 | 用于管理网络接口卡中多个队列的方法及计算机可读介质 |
CN201410191336.0A Active CN104426799B (zh) | 2013-08-26 | 2014-05-08 | 管理网络接口卡中的队列的方法 |
Country Status (4)
Country | Link |
---|---|
US (5) | US9571426B2 (zh) |
JP (1) | JP5905921B2 (zh) |
CN (3) | CN108337188B (zh) |
AU (1) | AU2014206191B2 (zh) |
Families Citing this family (76)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
ES2639643T3 (es) | 2010-06-23 | 2017-10-27 | Telefonaktiebolaget Lm Ericsson (Publ) | Gestión de interferencias de señales de referencia en despliegues de redes heterogéneas |
WO2015012811A1 (en) * | 2013-07-23 | 2015-01-29 | Hewlett-Packard Development Company, L.P. | Work conserving bandwidth guarantees using priority |
US9571426B2 (en) | 2013-08-26 | 2017-02-14 | Vmware, Inc. | Traffic and load aware dynamic queue management |
CN104750543B (zh) * | 2013-12-26 | 2018-06-15 | 杭州华为数字技术有限公司 | 线程创建方法、业务请求处理方法及相关设备 |
JP2015149577A (ja) * | 2014-02-06 | 2015-08-20 | 株式会社日立製作所 | 帯域制御装置 |
US9755981B2 (en) | 2014-03-11 | 2017-09-05 | Vmware, Inc. | Snooping forwarded packets by a virtual machine |
US9742682B2 (en) * | 2014-03-11 | 2017-08-22 | Vmware, Inc. | Large receive offload for virtual machines |
CA2938033A1 (en) * | 2014-03-19 | 2015-09-24 | Nec Corporation | Reception packet distribution method, queue selector, packet processing device, and recording medium |
US9344373B2 (en) * | 2014-06-13 | 2016-05-17 | International Business Machines Corporation | Packet I/O support for a logical switch router architecture |
US9367343B2 (en) * | 2014-08-29 | 2016-06-14 | Red Hat Israel, Ltd. | Dynamic batch management of shared buffers for virtual machines |
US9940328B2 (en) * | 2015-03-02 | 2018-04-10 | Microsoft Technology Licensing, Llc | Dynamic threshold gates for indexing queues |
AU2016262118A1 (en) * | 2015-05-08 | 2017-11-23 | Eric Wilson | Job concentration system, method and process |
CN104980314B (zh) * | 2015-06-10 | 2017-11-17 | 上海市地震应急救援保障中心 | 一种基于动态优先级队列的集群节点监控轮询机制 |
US9992113B2 (en) | 2015-06-30 | 2018-06-05 | Vmware, Inc. | Virtual network interface controller performance using physical network interface controller receive side scaling offloads |
CN105162716A (zh) * | 2015-07-28 | 2015-12-16 | 上海华为技术有限公司 | 一种nfv架构下的流控方法及装置 |
US10445850B2 (en) * | 2015-08-26 | 2019-10-15 | Intel Corporation | Technologies for offloading network packet processing to a GPU |
US9984031B2 (en) | 2015-10-26 | 2018-05-29 | International Business Machines Corporation | Adapter selection based on a queue time factor |
US10164911B2 (en) * | 2015-11-20 | 2018-12-25 | Cisco Technology, Inc. | Shim layer used with a virtual machine virtual NIC and a hardware platform physical NIC |
US10547559B2 (en) | 2015-12-26 | 2020-01-28 | Intel Corporation | Application-level network queueing |
CN106020926B (zh) * | 2016-04-29 | 2019-10-25 | 华为技术有限公司 | 一种用于虚拟交换机技术中数据传输的方法及装置 |
CN107645478B (zh) * | 2016-07-22 | 2020-12-22 | 阿里巴巴集团控股有限公司 | 网络攻击防御***、方法及装置 |
US10963309B2 (en) * | 2016-09-16 | 2021-03-30 | Advanced Micro Devices, Inc. | Network interface controller-based scheduling of processing tasks in a distributed computing system |
US20180091447A1 (en) * | 2016-09-23 | 2018-03-29 | Intel Corporation | Technologies for dynamically transitioning network traffic host buffer queues |
KR102668521B1 (ko) * | 2016-12-01 | 2024-05-23 | 한국전자통신연구원 | 가상 코어 자동 스케일링을 지원하는 병렬 처리 방법 및 이를 위한 장치 |
US10554554B2 (en) * | 2016-12-06 | 2020-02-04 | Microsoft Technology Licensing, Llc | Hybrid network processing load distribution in computing systems |
US10715424B2 (en) | 2016-12-06 | 2020-07-14 | Microsoft Technology Licensing, Llc | Network traffic management with queues affinitized to one or more cores |
US10826841B2 (en) | 2016-12-06 | 2020-11-03 | Microsoft Technology Licensing, Llc | Modification of queue affinity to cores based on utilization |
CN108234350B (zh) * | 2016-12-21 | 2021-08-03 | 华为技术有限公司 | 一种调度方法及客户驻地设备 |
US20180191632A1 (en) * | 2016-12-30 | 2018-07-05 | Intel Corporation | Flexible packet scheduling |
CN106851594B (zh) * | 2017-03-10 | 2019-09-27 | Oppo广东移动通信有限公司 | 一种广播发送方法、装置及终端 |
US10620994B2 (en) * | 2017-05-30 | 2020-04-14 | Advanced Micro Devices, Inc. | Continuation analysis tasks for GPU task scheduling |
US10313926B2 (en) | 2017-05-31 | 2019-06-04 | Nicira, Inc. | Large receive offload (LRO) processing in virtualized computing environments |
CN109150722B (zh) * | 2017-06-16 | 2021-03-30 | 华为技术有限公司 | 一种业务转发的方法及网络设备 |
US10728166B2 (en) * | 2017-06-27 | 2020-07-28 | Microsoft Technology Licensing, Llc | Throttling queue for a request scheduling and processing system |
US10757076B2 (en) * | 2017-07-20 | 2020-08-25 | Nicira, Inc. | Enhanced network processing of virtual node data packets |
CN109327486B (zh) * | 2017-07-31 | 2022-01-14 | 西门子公司 | 上传数据至云平台的方法、***及网关和机器可读介质 |
CN107682265B (zh) * | 2017-09-07 | 2021-04-20 | 银清科技有限公司 | 支付***的报文路由方法及装置 |
US10375019B2 (en) | 2017-10-06 | 2019-08-06 | Stealthpath, Inc. | Methods for internet communication security |
US10367811B2 (en) | 2017-10-06 | 2019-07-30 | Stealthpath, Inc. | Methods for internet communication security |
US10374803B2 (en) | 2017-10-06 | 2019-08-06 | Stealthpath, Inc. | Methods for internet communication security |
US10361859B2 (en) | 2017-10-06 | 2019-07-23 | Stealthpath, Inc. | Methods for internet communication security |
US10397186B2 (en) | 2017-10-06 | 2019-08-27 | Stealthpath, Inc. | Methods for internet communication security |
US10630642B2 (en) | 2017-10-06 | 2020-04-21 | Stealthpath, Inc. | Methods for internet communication security |
US10348683B2 (en) * | 2017-11-02 | 2019-07-09 | Nicira Inc. | Network packet filtering via media access control (MAC) address learning |
US10623372B2 (en) * | 2017-12-06 | 2020-04-14 | Nicira, Inc. | Load balancing IPsec tunnel processing with extended Berkeley packet filter (eBPF) |
US10516601B2 (en) * | 2018-01-19 | 2019-12-24 | Citrix Systems, Inc. | Method for prioritization of internet traffic by finding appropriate internet exit points |
US10735341B2 (en) * | 2018-04-26 | 2020-08-04 | Nicira, Inc. | Dynamic provisioning of multiple RSS engines |
US10686716B2 (en) | 2018-07-23 | 2020-06-16 | Vmware, Inc. | Dynamic processing of packets using multiple receive queue features |
US11025546B2 (en) | 2018-07-25 | 2021-06-01 | Vmware, Inc. | Selection of paired transmit queue |
CN109150753B (zh) * | 2018-08-01 | 2022-04-22 | 新华三技术有限公司 | 消息分发方法及装置 |
US11550606B2 (en) * | 2018-09-13 | 2023-01-10 | Intel Corporation | Technologies for deploying virtual machines in a virtual network function infrastructure |
CN111083064A (zh) * | 2018-10-19 | 2020-04-28 | 顾播网株式会社 | 在多层网络环境中处理信息包的方法以及其装置 |
CN109688063B (zh) * | 2018-11-14 | 2021-05-18 | 华为技术有限公司 | 一种大型接收卸载功能的设置方法和装置 |
US10824461B2 (en) * | 2018-12-11 | 2020-11-03 | Sap Se | Distributed persistent virtual machine pooling service |
US11689470B2 (en) * | 2018-12-17 | 2023-06-27 | Intel Corporation | Allocation of processors for processing packets |
US11182205B2 (en) * | 2019-01-02 | 2021-11-23 | Mellanox Technologies, Ltd. | Multi-processor queuing model |
US11144226B2 (en) | 2019-04-11 | 2021-10-12 | Samsung Electronics Co., Ltd. | Intelligent path selection and load balancing |
US11216190B2 (en) * | 2019-06-10 | 2022-01-04 | Samsung Electronics Co., Ltd. | Systems and methods for I/O transmissions in queue pair-based NVMeoF initiator-target system |
CN110430112B (zh) * | 2019-06-26 | 2021-09-21 | 苏州浪潮智能科技有限公司 | 一种实现虚拟机网络io优先级的方法和装置 |
US11277343B2 (en) | 2019-07-17 | 2022-03-15 | Vmware, Inc. | Using VTI teaming to achieve load balance and redundancy |
US11277382B2 (en) * | 2019-07-22 | 2022-03-15 | Vmware, Inc. | Filter-based packet handling at virtual network adapters |
US11240294B2 (en) | 2019-08-23 | 2022-02-01 | Samsung Electronics Co., Ltd. | Systems and methods for spike detection and load balancing resource management |
US11558423B2 (en) | 2019-09-27 | 2023-01-17 | Stealthpath, Inc. | Methods for zero trust security with high quality of service |
CN112650578A (zh) * | 2019-10-12 | 2021-04-13 | 阿里巴巴集团控股有限公司 | 数据处理方法、调度平台、视频存储平台和视频处理引擎 |
US11509638B2 (en) | 2019-12-16 | 2022-11-22 | Vmware, Inc. | Receive-side processing for encapsulated encrypted packets |
US11818041B2 (en) * | 2020-06-08 | 2023-11-14 | Juniper Networks, Inc. | Containerized management of forwarding components in a router using routing engine processor |
US11175859B1 (en) * | 2020-07-14 | 2021-11-16 | Micron Technology, Inc. | Managing memory commands in a memory subsystem by adjusting a maximum number of low priority commands in a DRAM controller |
US20230308939A1 (en) * | 2020-08-20 | 2023-09-28 | Telefonaktiebolaget Lm Ericsson (Publ) | Technique for controlling performance management depending on network load |
US11997159B2 (en) * | 2020-12-22 | 2024-05-28 | Microsoft Technology Licensing, Llc | Proactive placement of virtualized computing resources and tuning of network resources based on seasonal variations |
US11645113B2 (en) * | 2021-04-30 | 2023-05-09 | Hewlett Packard Enterprise Development Lp | Work scheduling on candidate collections of processing units selected according to a criterion |
WO2023038994A1 (en) * | 2021-09-08 | 2023-03-16 | Intel Corporation | Systems, apparatus, and methods to improve webservers using dynamic load balancers |
US11729119B2 (en) | 2021-11-18 | 2023-08-15 | Cisco Technology, Inc. | Dynamic queue management of network traffic |
US11922026B2 (en) | 2022-02-16 | 2024-03-05 | T-Mobile Usa, Inc. | Preventing data loss in a filesystem by creating duplicates of data in parallel, such as charging data in a wireless telecommunications network |
US20230281031A1 (en) * | 2022-03-04 | 2023-09-07 | Vmware, Inc. | Live migration of paravirtual remote direct memory access (pvrdma) virtual machines via hardware-assisted queue pair suspend/resume and query/recreate operations |
US11971830B2 (en) * | 2022-03-22 | 2024-04-30 | Red Hat, Inc. | Efficient queue access for user-space packet processing |
US20240248740A1 (en) * | 2023-01-19 | 2024-07-25 | Vmware, Inc. | Dynamic migration between receive side scaling (rss) engine states |
Family Cites Families (84)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5751709A (en) | 1995-12-28 | 1998-05-12 | Lucent Technologies Inc. | Adaptive time slot scheduling apparatus and method for end-points in an ATM network |
US6680934B1 (en) | 1999-12-02 | 2004-01-20 | Nortel Networks Limited | System, device and method for expediting control flow in a communication system |
US7389358B1 (en) | 2000-09-13 | 2008-06-17 | Fortinet, Inc. | Distributed virtual system to support managed, network-based services |
US6959002B2 (en) | 2001-05-01 | 2005-10-25 | Integrated Device Technology, Inc. | Traffic manager for network switch port |
US7860120B1 (en) | 2001-07-27 | 2010-12-28 | Hewlett-Packard Company | Network interface supporting of virtual paths for quality of service with dynamic buffer allocation |
JP3633534B2 (ja) * | 2001-09-04 | 2005-03-30 | 日本電気株式会社 | 適応的ネットワーク負荷分散方式およびパケット交換装置 |
US8095668B2 (en) | 2001-11-09 | 2012-01-10 | Rockstar Bidco Lp | Middlebox control |
US20050022017A1 (en) | 2003-06-24 | 2005-01-27 | Maufer Thomas A. | Data structures and state tracking for network protocol processing |
US7369500B1 (en) | 2003-06-30 | 2008-05-06 | Juniper Networks, Inc. | Dynamic queue threshold extensions to random early detection |
US7003597B2 (en) * | 2003-07-09 | 2006-02-21 | International Business Machines Corporation | Dynamic reallocation of data stored in buffers based on packet size |
US7336675B2 (en) | 2003-12-22 | 2008-02-26 | Intel Corporation | Optimized back-to-back enqueue/dequeue via physical queue parallelism |
GB0404696D0 (en) * | 2004-03-02 | 2004-04-07 | Level 5 Networks Ltd | Dual driver interface |
US20050207407A1 (en) * | 2004-03-16 | 2005-09-22 | Baumberger Daniel P | Method, apparatus and system for improved packet demultiplexing on a host virtual machine |
US20050228971A1 (en) | 2004-04-08 | 2005-10-13 | Samra Nicholas G | Buffer virtualization |
US7936770B1 (en) | 2005-03-08 | 2011-05-03 | Enterasys Networks, Inc. | Method and apparatus of virtual class of service and logical queue representation through network traffic distribution over multiple port interfaces |
US7623538B1 (en) * | 2005-04-22 | 2009-11-24 | Sun Microsystems, Inc. | Hardware-based network interface per-ring resource accounting |
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 |
WO2007099276A1 (en) | 2006-03-02 | 2007-09-07 | British Telecommunications Public Limited Company | Message processing methods and systems |
US8295275B2 (en) | 2006-03-20 | 2012-10-23 | Intel Corporation | Tagging network I/O transactions in a virtual machine run-time environment |
US8635388B2 (en) * | 2006-03-31 | 2014-01-21 | Broadcom Corporation | Method and system for an OS virtualization-aware network interface card |
US8665892B2 (en) | 2006-05-30 | 2014-03-04 | Broadcom Corporation | Method and system for adaptive queue and buffer control based on monitoring in a packet network switch |
US8392565B2 (en) * | 2006-07-20 | 2013-03-05 | Oracle America, Inc. | Network memory pools for packet destinations and virtual machines |
US8014413B2 (en) | 2006-08-28 | 2011-09-06 | Intel Corporation | Shared input-output device |
US8204982B2 (en) | 2006-09-14 | 2012-06-19 | Quova, Inc. | System and method of middlebox detection and characterization |
US20080189769A1 (en) | 2007-02-01 | 2008-08-07 | Martin Casado | Secure network switching infrastructure |
US20080240140A1 (en) | 2007-03-29 | 2008-10-02 | Microsoft Corporation | Network interface with receive classification |
US8065676B1 (en) * | 2007-04-24 | 2011-11-22 | Hewlett-Packard Development Company, L.P. | Automated provisioning of virtual machines for a virtual machine buffer pool and production pool |
US8798056B2 (en) * | 2007-09-24 | 2014-08-05 | Intel Corporation | Method and system for virtual port communications |
US20090097495A1 (en) | 2007-10-11 | 2009-04-16 | Brocade Communications Systems, Inc. | Flexible virtual queues |
US7855982B2 (en) | 2007-11-19 | 2010-12-21 | Rajesh Ramankutty | Providing services to packet flows in a network |
US8160085B2 (en) * | 2007-12-21 | 2012-04-17 | Juniper Networks, Inc. | System and method for dynamically allocating buffers based on priority levels |
US8990799B1 (en) * | 2008-01-30 | 2015-03-24 | Emc Corporation | Direct memory access through virtual switch in device driver |
US8667187B2 (en) * | 2008-09-15 | 2014-03-04 | Vmware, Inc. | System and method for reducing communication overhead between network interface controllers and virtual machines |
US8572251B2 (en) * | 2008-11-26 | 2013-10-29 | Microsoft Corporation | Hardware acceleration for remote desktop protocol |
US7948986B1 (en) | 2009-02-02 | 2011-05-24 | Juniper Networks, Inc. | Applying services within MPLS networks |
US20100205381A1 (en) * | 2009-02-06 | 2010-08-12 | Canion Rodney S | System and Method for Managing Memory in a Multiprocessor Computing Environment |
US8018961B2 (en) | 2009-06-22 | 2011-09-13 | Citrix Systems, Inc. | Systems and methods for receive and transmission queue processing in a multi-core architecture |
US8873375B2 (en) * | 2009-07-22 | 2014-10-28 | Broadcom Corporation | Method and system for fault tolerance and resilience for virtualized machines in a network |
US8566822B2 (en) | 2009-07-22 | 2013-10-22 | Broadcom Corporation | Method and system for distributing hypervisor functionality over multiple physical devices in a network and configuring sub-hypervisor to control the virtual machines |
US8238324B2 (en) * | 2009-07-24 | 2012-08-07 | Broadcom Corporation | Method and system for network aware virtual machines |
US8463928B2 (en) * | 2009-10-27 | 2013-06-11 | Verisign, Inc. | Efficient multiple filter packet statistics generation |
US8537860B2 (en) * | 2009-11-03 | 2013-09-17 | International Business Machines Corporation | Apparatus for switching traffic between virtual machines |
JP5720577B2 (ja) | 2009-12-04 | 2015-05-20 | 日本電気株式会社 | サーバ及びフロー制御プログラム |
US8346999B2 (en) * | 2009-12-15 | 2013-01-01 | Intel Corporation | Dynamic receive queue balancing with high and low thresholds |
US8589941B2 (en) | 2010-04-23 | 2013-11-19 | International Business Machines Corporation | Resource affinity via dynamic reconfiguration for multi-queue network adapters |
US8477610B2 (en) * | 2010-05-31 | 2013-07-02 | Microsoft Corporation | Applying policies to schedule network bandwidth among virtual machines |
US8739177B2 (en) * | 2010-06-21 | 2014-05-27 | Intel Corporation | Method for network interface sharing among multiple virtual machines |
US9680750B2 (en) | 2010-07-06 | 2017-06-13 | Nicira, Inc. | Use of tunnels to hide network addresses |
US9009384B2 (en) * | 2010-08-17 | 2015-04-14 | Microsoft Technology Licensing, Llc | Virtual machine memory management in systems with asymmetric memory |
WO2012055070A1 (en) * | 2010-10-28 | 2012-05-03 | Intel Corporation | Cooperated approach to network packet filtering |
CN102014052B (zh) * | 2010-11-05 | 2013-12-11 | 中国科学院声学研究所 | 一种虚拟动态优先级分组调度方法 |
US8943259B2 (en) * | 2010-11-16 | 2015-01-27 | Vmware, Inc. | Relieving memory pressure in a host using database memory management |
US8935456B2 (en) * | 2010-11-16 | 2015-01-13 | Vmware, Inc. | Method and system for integrating database memory management in virtual machines |
CN102104538B (zh) * | 2010-12-08 | 2012-07-25 | 浙江工业大学 | 一种映射参数动态自适应的无线流媒体传输控制方法 |
US9008113B2 (en) * | 2010-12-20 | 2015-04-14 | Solarflare Communications, Inc. | Mapped FIFO buffering |
JP5706297B2 (ja) | 2011-02-18 | 2015-04-22 | アラクサラネットワークス株式会社 | パケット転送装置及びQoS制御回路の電力供給制御方法 |
CN102103518B (zh) * | 2011-02-23 | 2013-11-13 | 运软网络科技(上海)有限公司 | 一种在虚拟化环境中管理资源的***及其实现方法 |
KR20120097136A (ko) * | 2011-02-24 | 2012-09-03 | 삼성전자주식회사 | 가상화 환경에서의 메모리 풀 관리 |
US8644157B2 (en) * | 2011-03-28 | 2014-02-04 | Citrix Systems, Inc. | Systems and methods for handling NIC congestion via NIC aware application |
US8761187B2 (en) * | 2011-06-14 | 2014-06-24 | Futurewei Technologies, Inc. | System and method for an in-server virtual switch |
WO2012174471A1 (en) | 2011-06-16 | 2012-12-20 | uCIRRUS | Software virtual machine for acceleration of transactional data processing |
US9319459B2 (en) | 2011-09-19 | 2016-04-19 | Cisco Technology, Inc. | Services controlled session based flow interceptor |
US8782128B2 (en) * | 2011-10-18 | 2014-07-15 | International Business Machines Corporation | Global queue pair management in a point-to-point computer network |
US8665893B2 (en) * | 2011-10-21 | 2014-03-04 | Red Hat Israel, Ltd. | Switching of a receive queue associated with a virtual machine |
US8745237B2 (en) | 2011-10-21 | 2014-06-03 | Red Hat Israel, Ltd. | Mapping of queues for virtual machines |
US9397960B2 (en) * | 2011-11-08 | 2016-07-19 | Mellanox Technologies Ltd. | Packet steering |
US8665725B2 (en) * | 2011-12-20 | 2014-03-04 | Broadcom Corporation | System and method for hierarchical adaptive dynamic egress port and queue buffer management |
US8904008B2 (en) * | 2012-01-09 | 2014-12-02 | Microsoft Corporation | Assignment of resources in virtual machine pools |
CN102609298B (zh) * | 2012-01-11 | 2016-01-13 | 中国科学技术大学苏州研究院 | 基于硬件队列扩展的网卡虚拟化***及其方法 |
US8954964B2 (en) | 2012-02-27 | 2015-02-10 | Ca, Inc. | System and method for isolated virtual image and appliance communication within a cloud environment |
US9304801B2 (en) | 2012-06-12 | 2016-04-05 | TELEFONAKTIEBOLAGET L M ERRICSSON (publ) | Elastic enforcement layer for cloud security using SDN |
US9092269B2 (en) * | 2012-06-21 | 2015-07-28 | Microsoft Technology Licensing, Llc | Offloading virtual machine flows to physical queues |
US9104492B2 (en) | 2012-09-04 | 2015-08-11 | Wisconsin Alumni Research Foundation | Cloud-based middlebox management system |
JP5954074B2 (ja) | 2012-09-20 | 2016-07-20 | 富士通株式会社 | 情報処理方法、情報処理装置、及びプログラム。 |
US9571507B2 (en) | 2012-10-21 | 2017-02-14 | Mcafee, Inc. | Providing a virtual security appliance architecture to a virtual cloud infrastructure |
US9178815B2 (en) * | 2013-03-05 | 2015-11-03 | Intel Corporation | NIC flow switching |
US9112801B2 (en) * | 2013-03-15 | 2015-08-18 | International Business Machines Corporation | Quantized congestion notification in a virtual networking system |
US10069903B2 (en) | 2013-04-16 | 2018-09-04 | Amazon Technologies, Inc. | Distributed load balancer |
US9030936B2 (en) | 2013-06-12 | 2015-05-12 | Intel Corporation | Flow control with reduced buffer usage for network devices |
US9274853B2 (en) * | 2013-08-05 | 2016-03-01 | International Business Machines Corporation | Utilizing multiple memory pools during mobility operations |
EP2843891B1 (en) | 2013-08-26 | 2016-10-19 | VMWare, Inc. | Traffic and load aware dynamic queue management |
US9571426B2 (en) | 2013-08-26 | 2017-02-14 | Vmware, Inc. | Traffic and load aware dynamic queue management |
US9379992B2 (en) * | 2013-12-25 | 2016-06-28 | Cavium, Inc. | Method and an apparatus for virtualization of a quality-of-service |
-
2013
- 2013-12-20 US US14/137,955 patent/US9571426B2/en active Active
- 2013-12-20 US US14/137,948 patent/US20150055456A1/en not_active Abandoned
- 2013-12-20 US US14/137,957 patent/US9843540B2/en active Active
- 2013-12-20 US US14/137,961 patent/US10027605B2/en active Active
-
2014
- 2014-04-17 JP JP2014085854A patent/JP5905921B2/ja active Active
- 2014-05-08 CN CN201810194113.8A patent/CN108337188B/zh active Active
- 2014-05-08 CN CN201810194114.2A patent/CN108429702B/zh active Active
- 2014-05-08 CN CN201410191336.0A patent/CN104426799B/zh active Active
- 2014-07-25 AU AU2014206191A patent/AU2014206191B2/en active Active
-
2018
- 2018-07-17 US US16/038,166 patent/US20190140984A1/en active Pending
Also Published As
Publication number | Publication date |
---|---|
US20150055457A1 (en) | 2015-02-26 |
US20150055467A1 (en) | 2015-02-26 |
CN108429702B (zh) | 2022-03-11 |
AU2014206191A1 (en) | 2015-03-12 |
US9843540B2 (en) | 2017-12-12 |
US20150055456A1 (en) | 2015-02-26 |
US20150055468A1 (en) | 2015-02-26 |
CN104426799A (zh) | 2015-03-18 |
JP2015043196A (ja) | 2015-03-05 |
CN108429702A (zh) | 2018-08-21 |
US10027605B2 (en) | 2018-07-17 |
US20190140984A1 (en) | 2019-05-09 |
CN104426799B (zh) | 2018-04-10 |
AU2014206191B2 (en) | 2016-06-16 |
US9571426B2 (en) | 2017-02-14 |
JP5905921B2 (ja) | 2016-04-20 |
CN108337188A (zh) | 2018-07-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108337188B (zh) | 通信量和负载感知动态队列管理 | |
US9495192B2 (en) | NUMA I/O aware network queue assignments | |
US10530846B2 (en) | Scheduling packets to destination virtual machines based on identified deep flow | |
EP2843891B1 (en) | Traffic and load aware dynamic queue management | |
US11099906B2 (en) | Handling tenant requests in a system that uses hardware acceleration components | |
KR102008551B1 (ko) | 물리적 큐들로의 가상 머신 플로우들의 오프로딩 기법 | |
US8681614B1 (en) | Quality of service for inbound network traffic flows | |
US8160085B2 (en) | System and method for dynamically allocating buffers based on priority levels | |
EP2907276B1 (en) | System and method for efficient use of flow table space in a network environment | |
EP3283953B1 (en) | Providing services in a system having a hardware acceleration plane and a software plane | |
KR101639797B1 (ko) | 가상머신 패킷을 처리하는 네트워크 인터페이스 장치 및 그 방법 | |
US20200274820A1 (en) | Dynamic provisioning of multiple rss engines | |
US10097474B1 (en) | Shared rate limiting | |
JP6829156B2 (ja) | ネットワーク負荷分散装置および方法 | |
JP2016146077A (ja) | 計算機、通信制御方法および通信制御プログラム | |
KR20150114911A (ko) | 다중 프로세싱 환경에서의 스케줄링 방법 및 그 장치 | |
KR20180107706A (ko) | 계층적 네트워크에서 다중코어를 이용한 패킷 처리 방법 및 그 장치 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CP03 | Change of name, title or address | ||
CP03 | Change of name, title or address |
Address after: California, USA Patentee after: Weirui LLC Country or region after: U.S.A. Address before: California, USA Patentee before: VMWARE, Inc. Country or region before: U.S.A. |