CN108694087A - 用于最优系统级性能的网络接口卡中的动态负载均衡 - Google Patents

用于最优系统级性能的网络接口卡中的动态负载均衡 Download PDF

Info

Publication number
CN108694087A
CN108694087A CN201810213728.0A CN201810213728A CN108694087A CN 108694087 A CN108694087 A CN 108694087A CN 201810213728 A CN201810213728 A CN 201810213728A CN 108694087 A CN108694087 A CN 108694087A
Authority
CN
China
Prior art keywords
receiving queue
core cpu
core
nic
cpu
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN201810213728.0A
Other languages
English (en)
Inventor
R·王
D·P·戴利
A·考夫曼
S·埃杜普甘蒂
T-Y·C·泰
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.)
Intel Corp
Original Assignee
Intel Corp
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 Intel Corp filed Critical Intel Corp
Publication of CN108694087A publication Critical patent/CN108694087A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5083Techniques for rebalancing the load in a distributed system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/505Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the load
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/3024Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a central processing unit [CPU]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3409Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment
    • G06F11/3433Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment for load management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer And Data Communications (AREA)
  • Quality & Reliability (AREA)
  • Computing Systems (AREA)
  • Computer Hardware Design (AREA)
  • Mathematical Physics (AREA)

Abstract

网络接口卡(NIC)可以被配置为对映射到第一接收队列的第一中央处理单元(CPU)核心进行监测,该第一接收队列具有接收队列长度。NIC还可以被配置为基于接收队列长度来确定CPU核心是否过载。NIC还可以被配置为响应于CPU核心过载的确定,将从第一接收队列指向CPU核心的数据分组重定向到另一CPU核心。

Description

用于最优系统级性能的网络接口卡中的动态负载均衡
技术领域
所公开的技术总体而言涉及网络接口卡(NIC),在本文中还称为主机结构接口(HFI)、中央处理单元(CPU)核心以及CPU核心负载分布管理。
背景技术
图1是示出系统100的示例的功能框图,系统100包括诸如网络装置的计算设备110。在示例中,计算设备110包括用于执行指令的中央处理单元(CPU)112以及用于存储这种指令的存储器114。CPU 112具有n个CPU核心。如本文所使用的,术语核心通常是指CPU的基本计算单元。存储器114可以包括随机存取存储器(RAM)、闪速存储器、硬盘、固态盘、光盘、或其任何合适的组合。
计算设备110还包括网络接口卡(NIC)116,其用于使得计算设备110能够例如通过通信介质(例如,有线或无线分组网络)的方式与至少一个其它计算设备120(例如,外部或其它远程设备)进行通信。计算设备110因此可以通过其NIC 116的方式向其它(多个)计算设备发送数据和/或从其它(多个)计算设备接收数据。例如,NIC 116具有n个接收队列,以用于接收来自其它(多个)计算设备的数据(例如,入口分组)。
通常,NIC可以通过接收侧缩放(RSS)或者流定向器的实现的方式将数据流(例如,数据分组)引导到多个接收队列中的任何接收队列。服务器通常利用这种能力来将连接(例如,传输控制协议(TCP)连接)分发到不同的CPU核心以便进行处理。
RSS的使用典型地包括过滤器的应用,该过滤器在所接收到的数据分组的分组报头上应用散列函数。然后,可以使用间接表来将每个数据分组映射到某个接收队列,例如,基于对应的散列值。然后可以将CPU核心分配给一个或多个特定队列上的工作,以便实现分布式处理。
由于RSS通常涉及将许多数据流映射到指向有限数量的CPU核心的有限数量的接收队列,所以典型地存在数据业务不均衡的高可能性,其中不利地要求一个或多个CPU核心处理更多量的数据业务。虽然这种CPU核心努力与传入数据分组保持同步,但是其它CPU核心保持相对空闲。这种情形效率低下,并且对于系统范围的性能不是最优的。
附图说明
本文所描述的概念通过示例的方式而非通过限制的方式在附图中示出。为了说明的简洁和清楚,除非另有说明,否则图中所示的元件不是按比例绘制的。
图1是示出具有包括中央处理单元(CPU)、存储器以及网络接口卡(NIC)的计算设备的系统的示例的功能框图。
图2是示出根据所公开的技术的某些实施例的具有包括网络接口卡(NIC)和至少一个中央处理单元(CPU)核心的计算设备的系统的第一示例的功能框图。
图3是示出根据所公开的技术的某些实施例的执行CPU核心负载均衡的计算机实现的方法的示例的流程图。
图4是示出根据所公开的技术的某些实施例的执行CPU核心负载均衡的计算机实现的方法的另一示例的流程图。
图5示出了根据所公开的技术的某些实施例的多个接收队列阈值的示例。
具体实施方式
尽管本公开的内容的概念易于进行各种修改和替代形式,但是其特定实施例已经通过附图中的示例的方式示出并且将在本文中进行详细描述。然而,应该理解,并不旨在将本公开的概念限制到所公开的特定形式,而是相反,意图是覆盖与本公开以及所附权利要求一致的所有修改、等同物以及替代方案。
说明书中对“一个实施例”、“实施例”、“说明性实施例”等的引用指示所描述的实施例可以包括特定的特征、结构或特性,但是每个实施例可以包括或可以不一定包括该特定的特征、结构或特性。此外,这种短语不一定指代相同的实施例。此外,当结合实施例描述特定的特征、结构、或特性时,可以结合另一所公开的实施例采用这样的特征、结构或特性,而不管这样的特征是否结合这种其它公开的实施例进行了明确的描述。
在一些情况下,所公开的实施例可以以硬件、固件、软件或其任何组合来实现。所公开的实施例还可以实现为由一种或多种暂时性或非暂时性机器可读(例如,计算机可读)存储介质承载或存储在其上的指令(例如,计算机程序产品),其可以由一个或多个处理器读取并执行。机器可读存储介质可以体现为用于存储或传输可由机器读取的形式的信息的任何存储设备、机制或其它物理结构(例如,易失性或非易失性存储器、介质盘、或其它介质设备)。
在附图中,可以以特定布置和/或排序来示出一些结构或方法特征。然而,应该认识到,可能不需要这种具体布置和/或排序。相反,在一些实施例中,这种特征可以以与说明性附图中所示的不同的方式和/或次序来布置。另外,在特定附图中包括的结构或方法特征并不意味着暗示在所有实施例中都需要这种特征,并且在一些实施例中,可以不包括这种特征或这种特征可以与其它特征组合。
所公开的技术的实施例总体上涉及用于执行多个CPU核心之间的动态负载分发的基于网络接口卡(NIC)的自适应技术。在这种实施例中,NIC可以有效且动态地对传入数据业务进行负载均衡,并且因此优化全系统性能。事实上,可以在具有许多工作负载的网络处理性能中实现显著的改进,而不需要软件支持。
实施例可以解决面向连接的数据业务和无连接的数据业务两者。NIC中的这种动态负载均衡通常包括检测CPU核心中的一个或多个是否过载。例如,可以通过使用一个或多个度量(例如,接收队列长度)实时测量CPU核心响应速度来完成这种检测。如果做出了某个CPU核心过载的确定,则最初指向或以其它方式映射到CPU核心的数据分组的一部分可以被定向到其它地方。例如,数据分组可以被重定向到相对空闲的CPU核心。
图2是示出根据所公开的技术的某些实施例的具有计算设备210的系统200的第一示例的功能框图,该计算设备210包括诸如以太网卡的网络接口卡(NIC)216和至少一个中央处理单元(CPU)核心230。应该注意,如本文所使用的,术语NIC和主机结构接口(HFI)是可互换的。
在该示例中,NIC 216具有n个接收队列(例如,寄存器或其它合适的数据存储部件),以用于接收来自其它计算设备的数据分组。NIC 216的第一接收队列217可以例如通过有线或无线连接从单独的计算设备接收一个或多个传入数据分组205。
NIC 216的n个接收队列中的每一个都可以被映射到一个或多个CPU核心。该映射可以是可重新配置的,例如,取决于特定实现方式的硬件规范和/或其它细节。在示例中,发送到第一接收队列217和第n接收队列218的数据分组被映射到第一CPU核心230。
响应于确定第一CPU核心230过载,例如,第一接收队列217和第n接收队列218中的任一个或两者的长度超过了某个阈值,来自第一接收队列217和第n接收队列218中的任一个或两者的数据分组可以被重定向(例如,被重新映射)到诸如第n CPU核心231的另一CPU核心。可以基于确定CPU核心与第一CPU核心230相比不那么繁忙来选择数据分组被重定向到的CPU核心。
某些实施例可以包括基于NIC的负载均衡器,其被配置为在重定向期间处理不同的运行时情形。例如,关于涉及TCP连接的情形,当系统确定处理数据业务的CPU核心过载时,可以识别SYN分组(其典型地标记新的数据流的开始)并将其引导到轻负载的CPU核心。流定向器可以实现识别该数据流的准确匹配规则以及将分组重定向到具有较轻负载的CPU核心的动作。这有利地维持了属于该流的后续数据分组的数据流密切度。另外,现有的连接可以继续由其原始的CPU核心选择来供应。
关于涉及无连接的工作负载的情形(例如,涉及(例如,存储器高速缓存的)密钥-值存储(KVS)的情形),例如,可以使用密钥的一部分来将数据分组定向到查找CPU核心以使跨核心监听最小化,并且还使系统性能最大化,通常因为相同的密钥典型地定向到用于查找的相同CPU核心。通过修改指向一些散列值的RSS间接表以接收服务于具有较轻负载的CPU核心的队列,实施例可以使得一旦检测到CPU核心拥塞,数据分组重定向就立即发生。
当前的负载均衡技术通常在位于多个服务器前方的可以在节点级而不是在CPU核心级工作的专用装置或服务器处执行。尽管其它技术可以以软件(例如,接收分组引导(RPS,RSS的软件实现))来实现,并且可以结合帮助监测CPU负载的实用程序(例如,mpstat)使用,但是这种技术不利地导致额外的时延并且还占用用于负载均衡任务的有价值的CPU周期。相反,所公开的技术的实施例有利地使得NIC能够实时透明地对负载进行均衡,而没有关键路径中的软件干扰。
实施例通常包括使用将数据分组/流引导到不同的接收队列以由不同的CPU核心进行处理的NIC能力,有利地引起对时延的改善,例如避免了针对TCP连接的核心-核心传送,并且还增加了数据吞吐量。在某些情形下,可能需要强制进行动态负载均衡以改变数据分组到CPU核心的映射。
在某些实施例中,RSS可以用于对数据分组报头执行散列函数,并且使用对应的间接表将数据流映射到分配给不同CPU核心的不同接收队列。多个数据队列可以映射到相同的CPU核心,并且这可以由用户进行配置。
其它实施例可以包括具有可编程的过滤器的流定向器,其可以用于基于例如对数据分组的一部分的准确匹配来识别特定的数据流或数据流的集合,并且然后将(多个)数据分组路由到特定的接收队列,例如,映射到特定的CPU核心。
图3是示出了根据所公开的技术的某些实施例的执行CPU核心负载均衡的计算机实现的方法300的示例的流程图。在框302处,由NIC监测特定的CPU核心。例如,NIC可以监测被映射到该CPU核心的接收队列的队列长度。接收队列的队列长度可以包括对在该特定时刻有多少针对接收队列的计算任务排队的量化测量,例如,尚未由对应的CPU核心进行处理的未解决接收分组(例如,数据分组)的数量。
在框304处,关于CPU核心是否过载做出确定。例如,可以由NIC至少部分地基于接收队列长度来做出这种确定。响应于CPU核心过载(例如,接收队列长度太大)的确定,如在框306处指示的,已经指向CPU核心的数据分组可以被重定向到不同的CPU核心,并且处理可以返回到框302;否则,处理简单地直接进行回到框302。
将认识到,在框302处开始的过程300的后续执行可以连续地、在周期基础上、或者例如响应于诸如用户请求的某个事件而完成。还将认识到,CPU核心可以是同一CPU或单独的CPU的一部分。
存在其中基于RSS的负载均衡处的当前尝试无法满足性能要求的多种情形,例如,其中TCP流使某个CPU核心过载的情形。利用RSS,具有某个散列值的数据分组报头可以基于对应的间接表被映射到某个CPU核心。如果某个CPU核心正在处理若干大的TCP流,或者暂时得到了太多的映射到该CPU核心的流,则该CPU核心变得过载。在这种情形下,例如,可以将新的数据流重新分配给具有较轻负载的CPU核心。
在涉及KVS类型的工作负载的情形下,对象级密切度通常使得基于应用的分区(例如,密钥空间划分)将请求分发给对应的CPU核心。具有相同密钥(或密钥的相同区域)的请求可以被发送到相同的CPU核心以便进行处理,从而显著地减少跨核心通信开销并且经常显著地改进性能。
为了执行动态负载均衡,必须检测CPU核心的过载。这可以通过使得CPU核心能够关于其利用率例如使用带外消息传递与NIC进行通信来实现。可替代地,NIC可以对某个CPU核心的接收队列长度进行观测。如果NIC确定某个接收队列长度超过了特定阈值,则其可以确定正在发生过载并且随后将数据业务引导到其它地方的CPU核心。
如本文所使用的,术语接收队列长度通常是指对在特定时刻有多少针对某个接收队列的计算任务正在等待由NIC进行处理的量化测量,例如,尚未由对应的CPU核心进行处理的未解决接收分组(例如,数据分组)的数量。
图4是示出根据所公开的技术的某些实施例的执行负载均衡的计算机实现的方法400的另一示例的流程图。在框402处,由NIC对被映射到某个CPU核心的特定接收队列(例如,NIC的接收队列)的队列长度进行监测。
在框404处,关于接收队列长度是否超过第一阈值做出确定。响应于接收队列长度确实超过第一阈值的确定,如在框406处指示的,已经指向CPU核心的数据分组可以被重定向到不同的CPU核心,并且处理可以返回到框402;否则,处理进行到框408。
在框408处,关于接收队列长度是否超过第二阈值做出确定。响应于接收队列长度确实超过第二阈值的确定,如在框410处指示的,已经指向CPU核心的数据分组可以被概率性地重定向到不同的CPU核心,并且处理可以返回到框402;否则,处理简单地返回到框402。
在其中接收队列长度超过第二阈值而不超过第一阈值的情形下,可以关于以下做出确定:接收队列长度与第一阈值有多接近,接收队列长度多快地接近第一阈值或远离第一阈值,映射到CPU核心的其它接收队列的队列长度,或其任何组合。
图5示出了根据所公开的技术的某些实施例的多个接收队列阈值的示例500。例如,示例500包括第一阈值505和第二阈值510,例如,上面结合图4讨论的第一阈值和第二阈值。
在涉及TCP连接的情形下,属于同一连接的数据分组通常不会被发送到不同的CPU核心。因此,当CPU核心被确定为过载时,NIC可以识别SYN分组并且将新的数据流重新引导到其它CPU核心。在这种实施例中,流定向器可以使过滤器较早地放置在NIC的接收路径中,并且可以将目标流添加到流定向器中以将该流的后续数据分组引导到相对空闲的CPU核心。随后,当新的数据分组进入时,NIC可以首先执行针对流定向器过滤器的匹配,并且如果存在匹配,则数据分组可以被引导到其新选择的CPU核心;否则,数据分组可以继续到RSS间接表(例如,默认地)。
针对KVS工作负载(例如,存储器高速缓存的),可以对数据进行划分(例如,分片),以使得每个CPU核心可以在不进行核心内通信的情况下以并行处理的方式排他性地访问其自己的分区。对象级核心密切度通常涉及基于应用的分区将请求分发给CPU核心。例如,共享相同密钥的请求将全部进入对该密钥的分区进行处理的CPU核心。实施例可以包括通过对接收队列长度进行监测来检测过载的CPU核心,并且重新配置RSS间接表,以使得拥塞的CPU核心被映射到更少的队列。
示例
下面提供了本文所公开的技术的说明性示例。该技术的实施例可以包括下面所描述的示例中的任何一个或多个以及这些示例的任何组合。
示例1包括一种网络接口卡(NIC),其被配置为对映射到第一接收队列的第一中央处理单元(CPU)核心进行监测,该第一接收队列具有接收队列长度;至少部分地基于接收队列长度来确定CPU核心是否过载;以及响应于CPU核心过载的确定,将从第一接收队列指向第一CPU核心的数据分组重定向到第二CPU核心。
示例2包括示例1的主题,NIC还被配置为确定第二CPU核心具有比第一CPU核心轻的负载。
示例3包括示例1-2中的任一个的主题,并且其中,确定CPU核心是否过载包括确定接收队列长度是否超过第一阈值,进一步其中,CPU核心过载的确定至少部分地基于接收队列长度确实超过第一阈值的确定。
示例4包括示例1-3中的任一个的主题,并且其中,确定CPU核心是否过载还包括:响应于接收队列长度未超过第一阈值的确定,确定接收队列长度是否超过第二阈值,进一步其中,CPU核心过载的确定至少部分地基于接收队列长度确实超过第二阈值的确定。
示例5包括示例4的主题,并且其中,重定向是概率性地执行的。
示例6包括示例1-5中的任一个的主题,并且其中,重定向包括NIC识别SYN分组并且将新的数据流重新引导到至少第二CPU核心。
示例7包括示例1-6中的任一个的主题,NIC还被配置为连续地重复进行监测和确定。
示例8包括示例7的主题,NIC还被配置为以指定的时间间隔重复进行接收和确定。
示例9包括示例1-8中的任一个的主题,并且其中,NIC是以太网卡。
示例10包括一种系统,其包括:第一计算设备的网络接口卡(NIC),NIC具有第一接收队列;第一计算设备的第一中央处理单元(CPU)核心,第一CPU核心被映射到第一接收队列;以及硬件,其被配置为至少部分地基于接收队列的接收队列长度来确定第一CPU核心是否过载。
示例11包括示例10的主题,该系统还包括第二CPU核心,第二CPU核心具有比第一CPU核心轻的负载。
示例12包括示例10-11中的任一个的主题,并且其中,硬件还被配置为使得指向第一CPU核心的数据分组被重定向到第二CPU核心。
示例13包括示例10-12中的任一个的主题,并且其中,硬件被配置为通过确定第一接收队列的接收队列长度超过第一阈值来确定第一CPU核心是否过载。
示例14包括示例10-13中的任一个的主题,并且其中,硬件被配置为通过确定第一接收队列的接收队列长度未超过第一阈值但是确实超过第二阈值来确定第一CPU核心是否过载。
示例15包括示例10-14中的任一个的主题,并且其中,NIC是以太网卡。
示例16包括一种或多种非暂时性计算机可读介质,其包括指令,该指令在由处理器执行时,使得处理器执行涉及网络接口卡(NIC)中的负载均衡的操作,该操作包括:对NIC的第一中央处理单元(CPU)核心进行监测,其中,第一CPU核心被映射到具有接收队列长度的第一接收队列;至少部分地基于接收队列长度来确定CPU核心是否过载;以及响应于CPU核心过载的确定,将从第一接收队列指向第一CPU核心的数据分组重定向到第二CPU核心。
示例17包括示例16的主题,并且其中,该操作还包括确定第二CPU核心具有比第一CPU核心轻的负载。
示例18包括示例16-17中的任一个的主题,并且其中,确定CPU核心是否过载包括确定接收队列长度是否超过第一阈值,进一步其中,CPU核心过载的确定至少部分地基于接收队列长度确实超过第一阈值的确定。
示例19包括示例16-18中的任一个的主题,并且其中,确定CPU核心是否过载还包括:响应于接收队列长度未超过第一阈值的确定,确定接收队列长度是否超过第二阈值,进一步其中,CPU核心过载的确定至少部分地基于接收队列长度确实超过第二阈值的确定。
示例20包括示例16-19中的任一个的主题,并且其中,重定向是概率性地执行的。
示例21包括示例16-20中的任一个的主题,并且其中,该操作还包括连续地重复进行监测和确定。
所公开的主题的先前描述的版本具有对于本领域普通技术人员而言已描述或将是显而易见的许多优点。即便如此,在所公开的装置、系统或方法的所有版本中不一定要求所有这些优点或特征。
另外,本书面描述参考了特定特征。应该理解,本说明书中的公开内容包括这些特定特征的所有可能的组合。例如,在特定方面或实施例的上下文中公开了特定特征的情况下,还可以尽可能地在其它方面和实施例的上下文中使用该特征。
另外,当在本申请中对具有两个或更多个限定的步骤或操作的方法进行参考时,所限定的步骤或操作可以以任何次序或同时地执行,除非上下文排除了这些可能性。
所公开的技术的实施例可以包含在各种类型的架构中。例如,某些实施例可以被实现为以下中的任一个或其组合:使用母板互连的一个或多个微芯片或集成电路、图形和/或视频处理器、多核心处理器、硬连线逻辑、由存储器设备存储并由微处理器执行的软件、固件、专用集成电路(ASIC)、和/或现场可编程门阵列(FPGA)。通过示例的方式,本文所使用的术语“逻辑”可以包括软件、硬件或其任何组合。
尽管本文已经说明并描述了具体的实施例,但是本领域的普通技术人员将认识到,在不脱离所公开的技术的实施例的范围的情况下,各种替代和/或等同的实现方式可以代替所示出和所描述的具体实施例。本申请旨在覆盖本文所说明和所描述的实施例的任何修改或变型。因此,显然旨在所公开的技术的实施例仅由所附权利要求及其等同内容进行限制。

Claims (21)

1.一种网络接口卡(NIC),其被配置为:
对映射到第一接收队列的第一中央处理单元(CPU)核心进行监测,所述第一接收队列具有接收队列长度;
至少部分地基于所述接收队列长度来确定所述CPU核心是否过载;以及
响应于所述CPU核心过载的确定,将从所述第一接收队列指向所述第一CPU核心的数据分组重定向到第二CPU核心。
2.根据权利要求1所述的NIC,还被配置为确定所述第二CPU核心具有比所述第一CPU核心轻的负载。
3.根据权利要求1所述的NIC,其中,所述NIC被配置为通过确定所述接收队列长度是否超过第一阈值来确定所述CPU核心是否过载,并且进一步其中,所述CPU核心过载的确定至少部分地基于所述接收队列长度确实超过所述第一阈值的确定。
4.根据权利要求3所述的NIC,其中,所述NIC还被配置为通过以下操作来确定所述CPU核心是否过载:响应于所述接收队列长度未超过所述第一阈值的确定,确定所述接收队列长度是否超过第二阈值,并且进一步其中,所述CPU核心过载的确定至少部分地基于所述接收队列长度确实超过所述第二阈值的确定。
5.根据权利要求4所述的NIC,其中,所述重定向是概率性地执行的。
6.根据权利要求1所述的NIC,其中,所述重定向包括识别SYN分组并且将新的数据流重新引导到至少所述第二CPU核心。
7.根据权利要求1所述的NIC,其中,所述NIC还被配置为连续地重复进行监测和确定。
8.根据权利要求7所述的NIC,其中,所述NIC还被配置为以指定的时间间隔重复进行接收和确定。
9.根据权利要求1所述的NIC,其中,所述NIC是以太网卡。
10.一种用于执行第一计算设备中的数据业务负载均衡的系统,所述系统包括:
所述第一计算设备的网络接口卡(NIC),所述NIC具有第一接收队列;
所述第一计算设备的第一中央处理单元(CPU)核心,所述第一CPU核心被映射到所述第一接收队列;以及
硬件,所述硬件被配置为至少部分地基于所述接收队列的接收队列长度来确定所述第一CPU核心是否过载。
11.根据权利要求10所述的系统,还包括第二CPU核心,所述第二CPU核心具有比所述第一CPU核心轻的负载。
12.根据权利要求11所述的系统,其中,所述硬件还被配置为使得指向所述第一CPU核心的数据分组被重定向到所述第二CPU核心。
13.根据权利要求12所述的系统,其中,所述硬件被配置为通过确定所述第一接收队列的接收队列长度超过第一阈值来确定所述第一CPU核心是否过载。
14.根据权利要求13所述的系统,其中,所述硬件被配置为通过确定所述第一接收队列的接收队列长度未超过所述第一阈值但是确实超过第二阈值来确定所述第一CPU核心是否过载。
15.根据权利要求10所述的系统,其中,所述NIC是以太网卡。
16.一种或多种非暂时性计算机可读介质,其包括指令,所述指令在由处理器执行时,使得所述处理器执行涉及网络接口卡(NIC)中的负载均衡的操作,所述操作包括:
对所述NIC的第一中央处理单元(CPU)核心进行监测,其中,所述第一CPU核心被映射到具有接收队列长度的第一接收队列;
至少部分地基于所述接收队列长度来确定所述CPU核心是否过载;以及
响应于所述CPU核心过载的确定,将从所述第一接收队列指向所述第一CPU核心的数据分组重定向到第二CPU核心。
17.根据权利要求16所述的一种或多种非暂时性计算机可读介质,其中,所述操作还包括确定所述第二CPU核心具有比所述第一CPU核心轻的负载。
18.根据权利要求16所述的一种或多种非暂时性计算机可读介质,其中,确定所述CPU核心是否过载包括确定所述接收队列长度是否超过第一阈值,进一步其中,所述CPU核心过载的确定至少部分地基于所述接收队列长度确实超过所述第一阈值的确定。
19.根据权利要求18所述的一种或多种非暂时性计算机可读介质,其中,确定所述CPU核心是否过载还包括:响应于所述接收队列长度未超过所述第一阈值的确定,确定所述接收队列长度是否超过第二阈值,进一步其中,所述CPU核心过载的确定至少部分地基于所述接收队列长度确实超过所述第二阈值的确定。
20.根据权利要求19所述的一种或多种非暂时性计算机可读介质,其中,所述重定向是概率性地执行的。
21.根据权利要求16所述的一种或多种非暂时性计算机可读介质,其中,所述操作还包括连续地重复进行监测和确定。
CN201810213728.0A 2017-03-31 2018-03-15 用于最优系统级性能的网络接口卡中的动态负载均衡 Pending CN108694087A (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US15/476,379 US20180285151A1 (en) 2017-03-31 2017-03-31 Dynamic load balancing in network interface cards for optimal system level performance
US15/476,379 2017-03-31

Publications (1)

Publication Number Publication Date
CN108694087A true CN108694087A (zh) 2018-10-23

Family

ID=63525260

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810213728.0A Pending CN108694087A (zh) 2017-03-31 2018-03-15 用于最优系统级性能的网络接口卡中的动态负载均衡

Country Status (3)

Country Link
US (2) US20180285151A1 (zh)
CN (1) CN108694087A (zh)
DE (1) DE102018204859A1 (zh)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109450816A (zh) * 2018-11-19 2019-03-08 迈普通信技术股份有限公司 一种队列调度方法、装置、网络设备及存储介质
CN110688229A (zh) * 2019-10-12 2020-01-14 北京百度网讯科技有限公司 任务处理方法和装置
CN111988211A (zh) * 2019-05-21 2020-11-24 华为技术有限公司 网络设备的报文分流方法和装置
CN112073327A (zh) * 2020-08-19 2020-12-11 广东省新一代通信与网络创新研究院 一种抗拥塞的软件分流方法、装置及存储介质
CN113965527A (zh) * 2020-07-02 2022-01-21 迈络思科技有限公司 具有布防和/或自布防特征的时钟队列
CN115362662A (zh) * 2020-04-07 2022-11-18 思科技术公司 智能网络接口卡的流量管理

Families Citing this family (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10439930B2 (en) * 2017-04-26 2019-10-08 Futurewei Technologies, Inc. Packet batch processing with graph-path based pre-classification
US10802885B2 (en) * 2017-05-17 2020-10-13 Samsung Electronics Co., Ltd. Method and apparatus for data processing based on multicore
US10572400B2 (en) * 2017-06-15 2020-02-25 Mellanox Technologies, Ltd. Shared processing of a packet flow by multiple cores
US11593134B2 (en) 2018-01-26 2023-02-28 Nicira, Inc. Throttling CPU utilization by implementing a rate limiter
US11646980B2 (en) 2018-03-30 2023-05-09 Intel Corporation Technologies for packet forwarding on ingress queue overflow
US20190319933A1 (en) * 2018-04-12 2019-10-17 Alibaba Group Holding Limited Cooperative tls acceleration
US10476801B1 (en) * 2018-04-27 2019-11-12 Nicira, Inc. Dynamic distribution of RSS engines to virtual machines based on flow data
US10686716B2 (en) 2018-07-23 2020-06-16 Vmware, Inc. Dynamic processing of packets using multiple receive queue features
US10834005B2 (en) * 2018-07-23 2020-11-10 Dell Products L.P. Buffer shortage management system
US11025546B2 (en) 2018-07-25 2021-06-01 Vmware, Inc. Selection of paired transmit queue
US11182205B2 (en) * 2019-01-02 2021-11-23 Mellanox Technologies, Ltd. Multi-processor queuing model
US10721186B1 (en) * 2019-03-30 2020-07-21 Fortinet, Inc. Packet processing with per-CPU (central processing unit) flow tables in a network device
US20220286399A1 (en) * 2019-09-11 2022-09-08 Intel Corporation Hardware queue scheduling for multi-core computing environments
CN110618880B (zh) * 2019-09-19 2022-05-27 中国银行股份有限公司 一种跨系统数据传递系统和方法
US11483246B2 (en) 2020-01-13 2022-10-25 Vmware, Inc. Tenant-specific quality of service
US20210224138A1 (en) * 2020-01-21 2021-07-22 Vmware, Inc. Packet processing with load imbalance handling
US11599395B2 (en) * 2020-02-19 2023-03-07 Vmware, Inc. Dynamic core allocation
CN111314249B (zh) * 2020-05-08 2021-04-20 深圳震有科技股份有限公司 一种5g数据转发平面的避免数据包丢失的方法和服务器
US11539633B2 (en) 2020-08-31 2022-12-27 Vmware, Inc. Determining whether to rate limit traffic
US20220269424A1 (en) * 2021-02-19 2022-08-25 Vast Data Ltd. Resource allocation in a storage system
US11799784B2 (en) 2021-06-08 2023-10-24 Vmware, Inc. Virtualized QoS support in software defined networks
CN114553678B (zh) * 2022-02-09 2024-02-13 紫光云(南京)数字技术有限公司 一种云网络软slb流量问题的诊断方法
WO2024069219A1 (en) * 2022-09-30 2024-04-04 Telefonaktiebolaget Lm Ericsson (Publ) Receive side application auto-scaling
CN115858152B (zh) * 2022-11-27 2024-05-28 北京泰策科技有限公司 一种基于单端口的dns负载均衡性能优化方案
US11973693B1 (en) * 2023-03-13 2024-04-30 International Business Machines Corporation Symmetric receive-side scaling (RSS) for asymmetric flows

Citations (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6760775B1 (en) * 1999-03-05 2004-07-06 At&T Corp. System, method and apparatus for network service load and reliability management
US20050033809A1 (en) * 2003-08-08 2005-02-10 Teamon Systems, Inc. Communications system providing server load balancing based upon weighted health metrics and related methods
US20050129046A1 (en) * 2003-12-12 2005-06-16 Alok Kumar Method and system to determine whether a circular queue is empty or full
US20080181245A1 (en) * 2007-01-31 2008-07-31 Claude Basso System and Method for Multicore Communication Processing
US20110142064A1 (en) * 2009-12-15 2011-06-16 Dubal Scott P Dynamic receive queue balancing
US8762534B1 (en) * 2011-05-11 2014-06-24 Juniper Networks, Inc. Server load balancing using a fair weighted hashing technique
US20140280709A1 (en) * 2013-03-15 2014-09-18 Yadong Li Flow director-based low latency networking
US20140301388A1 (en) * 2013-04-06 2014-10-09 Citrix Systems, Inc. Systems and methods to cache packet steering decisions for a cluster of load balancers
US20160127276A1 (en) * 2014-11-04 2016-05-05 Fermi Research Alliance, LLC. Packet capture engine for commodity network interface cards in high-speed networks
US20160156462A1 (en) * 2013-08-30 2016-06-02 L-3 Communications Corporation Cryptographic Device with Detachable Data Planes
US20160182380A1 (en) * 2014-12-22 2016-06-23 Telefonaktiebolaget L M Ericsson (Publ) Adaptive load balancing in packet processing
CN105900063A (zh) * 2014-06-26 2016-08-24 郑基雄 多处理环境中的调度方法和装置
US20160378565A1 (en) * 2015-06-26 2016-12-29 Advanced Micro Devices Method and apparatus for regulating processing core load imbalance
WO2017014758A1 (en) * 2015-07-21 2017-01-26 Hewlett Packard Enterprise Development Lp Providing power to a server
CN106506393A (zh) * 2016-02-05 2017-03-15 华为技术有限公司 一种数据流处理方法、装置和系统
US9602437B1 (en) * 2012-10-03 2017-03-21 Tracey M. Bernath System and method for accelerating network applications using an enhanced network interface and massively parallel distributed processing
CN106527653A (zh) * 2016-10-12 2017-03-22 东软集团股份有限公司 调整cpu频率的方法及装置

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8565092B2 (en) * 2010-11-18 2013-10-22 Cisco Technology, Inc. Dynamic flow redistribution for head of line blocking avoidance
US9450881B2 (en) * 2013-07-09 2016-09-20 Intel Corporation Method and system for traffic metering to limit a received packet rate
US10079877B2 (en) * 2016-02-04 2018-09-18 Citrix Systems, Inc. System and method for cloud aware application delivery controller
US10341241B2 (en) * 2016-11-10 2019-07-02 Hughes Network Systems, Llc History-based classification of traffic into QoS class with self-update
US10511708B2 (en) * 2017-03-15 2019-12-17 Citrix Systems, Inc. Systems and methods for quality of experience for interactive application in hybrid wan
US10050884B1 (en) * 2017-03-21 2018-08-14 Citrix Systems, Inc. Method to remap high priority connection with large congestion window to high latency link to achieve better performance

Patent Citations (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6760775B1 (en) * 1999-03-05 2004-07-06 At&T Corp. System, method and apparatus for network service load and reliability management
US20050033809A1 (en) * 2003-08-08 2005-02-10 Teamon Systems, Inc. Communications system providing server load balancing based upon weighted health metrics and related methods
US20050129046A1 (en) * 2003-12-12 2005-06-16 Alok Kumar Method and system to determine whether a circular queue is empty or full
US20080181245A1 (en) * 2007-01-31 2008-07-31 Claude Basso System and Method for Multicore Communication Processing
US20110142064A1 (en) * 2009-12-15 2011-06-16 Dubal Scott P Dynamic receive queue balancing
US8762534B1 (en) * 2011-05-11 2014-06-24 Juniper Networks, Inc. Server load balancing using a fair weighted hashing technique
US9602437B1 (en) * 2012-10-03 2017-03-21 Tracey M. Bernath System and method for accelerating network applications using an enhanced network interface and massively parallel distributed processing
US20140280709A1 (en) * 2013-03-15 2014-09-18 Yadong Li Flow director-based low latency networking
US20140301388A1 (en) * 2013-04-06 2014-10-09 Citrix Systems, Inc. Systems and methods to cache packet steering decisions for a cluster of load balancers
US20160156462A1 (en) * 2013-08-30 2016-06-02 L-3 Communications Corporation Cryptographic Device with Detachable Data Planes
CN105900063A (zh) * 2014-06-26 2016-08-24 郑基雄 多处理环境中的调度方法和装置
US20160127276A1 (en) * 2014-11-04 2016-05-05 Fermi Research Alliance, LLC. Packet capture engine for commodity network interface cards in high-speed networks
US20160182380A1 (en) * 2014-12-22 2016-06-23 Telefonaktiebolaget L M Ericsson (Publ) Adaptive load balancing in packet processing
US20160378565A1 (en) * 2015-06-26 2016-12-29 Advanced Micro Devices Method and apparatus for regulating processing core load imbalance
WO2017014758A1 (en) * 2015-07-21 2017-01-26 Hewlett Packard Enterprise Development Lp Providing power to a server
CN106506393A (zh) * 2016-02-05 2017-03-15 华为技术有限公司 一种数据流处理方法、装置和系统
CN106527653A (zh) * 2016-10-12 2017-03-22 东软集团股份有限公司 调整cpu频率的方法及装置

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109450816A (zh) * 2018-11-19 2019-03-08 迈普通信技术股份有限公司 一种队列调度方法、装置、网络设备及存储介质
CN111988211A (zh) * 2019-05-21 2020-11-24 华为技术有限公司 网络设备的报文分流方法和装置
CN110688229A (zh) * 2019-10-12 2020-01-14 北京百度网讯科技有限公司 任务处理方法和装置
CN110688229B (zh) * 2019-10-12 2022-08-02 阿波罗智能技术(北京)有限公司 任务处理方法和装置
CN115362662A (zh) * 2020-04-07 2022-11-18 思科技术公司 智能网络接口卡的流量管理
CN115362662B (zh) * 2020-04-07 2024-03-08 思科技术公司 智能网络接口卡的流量管理
CN113965527A (zh) * 2020-07-02 2022-01-21 迈络思科技有限公司 具有布防和/或自布防特征的时钟队列
CN112073327A (zh) * 2020-08-19 2020-12-11 广东省新一代通信与网络创新研究院 一种抗拥塞的软件分流方法、装置及存储介质
CN112073327B (zh) * 2020-08-19 2023-02-24 广东省新一代通信与网络创新研究院 一种抗拥塞的软件分流方法、装置及存储介质

Also Published As

Publication number Publication date
DE102018204859A1 (de) 2018-10-04
US20180285151A1 (en) 2018-10-04
US20210141676A1 (en) 2021-05-13

Similar Documents

Publication Publication Date Title
CN108694087A (zh) 用于最优系统级性能的网络接口卡中的动态负载均衡
RU2643626C1 (ru) Способ распределения принимаемых пакетов, селектор очереди, устройство обработки пакетов и носитель информации
US10740162B2 (en) Intercepting socket metadata
US10044797B2 (en) Load balancing of distributed services
JP5925846B2 (ja) 待ち時間低減パケット処理を備えたソケット管理
US20150222561A1 (en) Bandwidth control apparatus
US9501326B2 (en) Processing control system, processing control method, and processing control program
CN106357726B (zh) 负载均衡方法及装置
US20140115183A1 (en) Information processing method, recording medium, and information processing apparatus
CN110166570A (zh) 业务会话管理方法、装置、电子设备
US10348683B2 (en) Network packet filtering via media access control (MAC) address learning
US9736235B2 (en) Computer system, computer, and load balancing method
CN112437023B (zh) 虚拟化安全网元数据处理方法、系统、介质和云平台
WO2016177191A1 (zh) 一种报文的处理方法及装置
WO2017218700A1 (en) Systems and methods for non-uniform memory access aligned i/o for virtual machines
Bruschi et al. Openvolcano: An open-source software platform for fog computing
Lei et al. Parallelizing packet processing in container overlay networks
KR101448413B1 (ko) Atca-기반 장비에서 통신 트래픽을 스케줄링하기 위한 방법 및 장치
US11003506B2 (en) Technique for determining a load of an application
US11271839B2 (en) Dynamic asynchronous communication management
US10476945B2 (en) Consistent flow assignment in load balancing
US11509590B2 (en) Determining network device statistics associated with fast counters and slow counters
JP7481627B2 (ja) 異常検知方法及び異常検知プログラム
CN109660495A (zh) 一种文件传输方法和装置
JP2019009630A (ja) ネットワーク負荷分散装置および方法

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination