CN110618877A - 用于提供包队列的自适应轮询的技术 - Google Patents

用于提供包队列的自适应轮询的技术 Download PDF

Info

Publication number
CN110618877A
CN110618877A CN201910411432.4A CN201910411432A CN110618877A CN 110618877 A CN110618877 A CN 110618877A CN 201910411432 A CN201910411432 A CN 201910411432A CN 110618877 A CN110618877 A CN 110618877A
Authority
CN
China
Prior art keywords
queue
computing device
time period
packets
predicted time
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
CN201910411432.4A
Other languages
English (en)
Inventor
C.麦克纳马拉
J.布劳恩
T.肯特基
C.罗夫图斯
J.巴里
P.康诺尔
P.弗勒明
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 CN110618877A publication Critical patent/CN110618877A/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/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/5038Allocation 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 execution order of a plurality of tasks, e.g. taking priority or time dependency constraints into consideration
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/12Avoiding congestion; Recovering from congestion
    • 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
    • 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/54Interprogram communication
    • G06F9/546Message passing systems or structures, e.g. queues
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/50Queue scheduling
    • H04L47/62Queue scheduling characterised by scheduling criteria
    • H04L47/625Queue scheduling characterised by scheduling criteria for service slots or service orders
    • H04L47/6255Queue scheduling characterised by scheduling criteria for service slots or service orders queue load conditions, e.g. longest queue first
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/30Peripheral units, e.g. input or output ports
    • H04L49/3018Input queuing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • H04L49/901Buffering arrangements using storage descriptor, e.g. read or write pointers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/48Indexing scheme relating to G06F9/48
    • G06F2209/484Precedence
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/54Indexing scheme relating to G06F9/54
    • G06F2209/548Queue
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/28Flow control; Congestion control in relation to timing considerations
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/50Queue scheduling
    • H04L47/62Queue scheduling characterised by scheduling criteria
    • H04L47/622Queue service order
    • H04L47/623Weighted service order

Abstract

公开了用于提供包队列的自适应轮询的技术,包括一种计算设备。所述计算设备包括网络接口控制器和包括一组核和存储器的计算引擎,所述存储器包括队列以存储由网络接口控制器接收的包。计算引擎被配置为:针对队列确定预测的时间段以在没有溢出的情况下接收包;在所述时间段期间并且利用被分派为定期地针对包轮询队列的核来执行工作负载;以及利用所分派的核来轮询队列以从队列移除包。还描述并且要求保护其它实施例。

Description

用于提供包队列的自适应轮询的技术
背景技术
为了减少丢弃包的可能性,计算设备可以将至少一个核(例如,能够读取并且执行指令的处理器的处理器件)专用于轮询(例如,检查以确定是否有诸如包的任何项目是可用的)暂时存储由计算设备的网络接口控制器(NIC)接收的包的输入队列。更具体地,由专用的核执行的线程以固定的间隔轮询输入队列以检索包,以防止输入队列填满并且丢失包(例如,因为队列中没有容量来存储另外的包)。专用于轮询队列的核不执行针对接收的包所关联(例如,包含用于对应的工作负载的数据)的基础工作负载(例如,应用、一组操作等)的任何工作。在执行多个虚拟机(例如,每个代表云计算服务的不同客户)的计算设备中,分离的核典型地专用于轮询由每个虚拟机使用的对应的输入队列,使相当数量的核不可用于在执行基础工作负载上给予协助。
附图说明
在随附各图中通过示例方式而不是通过限制方式图示在此描述的概念。为了说明的简洁性和清楚性,在各图中图示的要素不必要按比例绘制。在认为适当的情况下,已经在各图当中重复了参考标记以指示对应的或者类似的要素。
图1是用于提供队列的自适应轮询的计算设备的至少一个实施例的简化图;
图2至图4是可以由图1的计算设备执行的用于提供队列的自适应轮询的方法的至少一个实施例的简化框图;以及
图5是在执行自适应轮询时由图1的计算设备执行的一系列操作的时间线。
具体实施方式
虽然本公开的概念可接受各种修改和替换形式,但是已经在附图中通过示例的方式示出了其特定实施例并且将在此对其进行详细描述。然而,应当理解的是,不存在将本公开的概念限制于所公开的特定形式的意图,而是相反,意图是要覆盖与本公开和所附权利要求一致的所有修改、等同物以及替换。
在说明书中对“一个实施例”、“实施例”、“说明性的实施例”等的引用指示所描述的实施例可以包括特定的特征、结构、或者特性,但是每个实施例可以或者可以不必包括所述特定的特征、结构、或者特性。此外,这样的表述不必要指代同一实施例。进一步地,当与实施例相关地描述特定的特征、结构、或者特性时,遵从的是与其它实施例(无论是否被明确描述)相关地实现这样的特征、结构、或者特性是在本领域技术人员的知识之内的。附加地,应当领会的是以“至少一个A、B和C”的形式包括在列表中的项目可以意味着(A);(B);(C);(A和B);(A和C);(B和C);或者(A、B和C)。类似地,以“A、B或C中的至少一个”的形式列出的项目可以意味着(A);(B);(C);(A和B);(A和C);(B和C);或者(A、B和C)。
在一些情况下,公开的实施例可以在硬件、固件、软件、或者它们的任何组合中实现。公开的实施例还可以被实现为由暂态或者非暂态机器可读(例如,计算机可读)存储介质承载的或者存储在暂态或者非暂态机器可读存储介质上的指令,其可以被一个或多个处理器读取以及执行。机器可读存储介质可以被体现为用于以由机器可读的形式来存储或者传输信息的任何存储设备、机制或者其它物理结构(例如,易失性或者非易失性存储器、介质盘、或者其它介质设备)。
在附图中,可以以特定的布置和/或顺序示出一些结构的或者方法的特征。然而,应当领会的是可以不要求这样的特定布置和/或顺序。相反,在一些实施例中,可以以与在说明性的图中示出的相比不同的方式和/或顺序来布置这样的特征。附加地,在特定的图中包括结构的或方法的特征不意味着暗示在所有的实施例中要求这样的特征,并且在一些实施例中,可以不包括这样的特征或者这样的特征可以与其它特征组合。
现在参照图1,用于提供队列的自适应轮询的计算设备110通过网络170与客户机设备160进行通信。在操作中,计算设备110可以使用处理器114的核140来执行一个或多个工作负载(例如,在一个或多个虚拟机中托管的(一个或多个)应用),以诸如代表客户机设备160执行服务。通过这样做,计算设备110对由计算设备110的网络接口控制器(NIC)122接收的包(例如,离散的数据单元)进行操作,所述包被由NIC 122放置到计算设备110的队列150中。在说明性的实施例中,计算设备110利用核140(例如,核142)轮询所接收的包的队列150,核140还执行所接收的包中(例如,在工作者线程中)的数据的处理。更具体地,在说明性的实施例中,计算设备110确定在其中队列150能够被安全地不受轮询的时间段(例如,在队列150溢出并且丢弃包之前)并且在该时间段期间利用核142执行工作负载操作,而不是将核140(例如,核142)排它地专用于持续地确定队列150是否包含要被操作的包(例如,轮询队列)。在一些实施例中,计算设备110可以基于最坏情况场景(例如,其中以网络接口控制器122能够接收包的最大理论速率将包接收到队列150中的潜在场景)来计算时间段。在其它实施例中,计算设备110可以将时间段计算为由NIC 122写入包描述符(例如,描述每个包的数据集)的元数据的函数。元数据可以指示在预先限定的时间帧内由NIC 122接收的包的数量(例如,瞬时突发大小)和/或对每个包中的基础净负载(例如,数据)的计算要求的分析(例如,加密净负载与另外的类型的净负载相比可能要求更多计算容量和/或更多时间来处理)。类似地,计算设备110可以确定其中输出队列(例如,诸如队列154的队列150,用于要被发送出NIC 122的包)能够继续而不被轮询的预测的时间段,并且在该时间段期间,执行工作负载操作而不是轮询输出队列154。作为结果,计算设备110较之典型的计算设备(其针对由计算设备执行的每个应用或者虚拟机使一个或多个核专用于持续地轮询队列)提供增加的效率(例如,更多处理容量)。
如在图1中示出的那样,说明性的计算设备110包括计算引擎112、输入/输出(I/O)子系统118、通信电路120、和一个或多个数据存储设备128。当然,在其它实施例中,计算设备110可以包括其它或者附加的组件,诸如在计算机中普遍地找到的那些(例如,显示器、外围设备等)。附加地,在一些实施例中,说明性的组件中的一个或多个可以被合并在另外的组件中或者另外形成另外的组件的一部分。进一步地,在一些实施例中,组件中的一个或多个可以与计算设备110的另外的组件相距任何距离(例如,跨数据中心分布)。计算引擎112可以被体现为能够执行在下面描述的各种计算功能的任何类型的设备或者设备的集合。在一些实施例中,计算引擎112可以被体现为单个设备,诸如集成电路、嵌入式系统、现场可编程门阵列(FPGA)、片上系统(SOC)、或者其它集成系统或设备。在说明性的实施例中,计算引擎112包括或者被体现为处理器114和存储器116。处理器114可以被体现为能够执行在此描述的功能的任何类型的处理器。例如,处理器114可以被体现为(一个或多个)多核处理器、微控制器、或者其它处理器或处理/控制电路。在一些实施例中,处理器114可以被体现为包括或者被耦合至FPGA、专用集成电路(ASIC)、可再配置硬件或者硬件电路、或者其它专用的硬件以促进执行在此描述的功能。在说明性的实施例中,处理器114包括一组核142、144、146、和148(统称为核140)。核140中的每个可以被体现为能够接收指令并且基于那些指令执行操作的任何设备或者电路。虽然在处理器114中示出四个核140,但是应当理解的是在其它实施例中,核140的数量可以是不同的。
主存储器116可以被体现为能够执行在此描述的功能的任何类型的易失性存储器(例如,动态随机存取存储器(DRAM)等)或者非易失性存储器或数据存储。易失性存储器可以是要求电力以保持由介质存储的数据的状态的存储介质。易失性存储器的非限制性示例可以包括各种类型的随机存取存储器(RAM),诸如动态随机存取存储器(DRAM)或者静态随机存取存储器(SRAM)。可以在存储器模块中使用的一种特定类型的DRAM是同步动态随机存取存储器(SDRAM)。在特定的实施例中,存储器组件的DRAM可以符合由JEDEC颁布的标准,诸如用于DDR SDRAM的JESD79F、用于DDR2 SDRAM的JESD79-2F、用于DDR3 SDRAM的JESD79-3F、用于DDR4 SDRAM的JESD79-4A、用于低功率DDR(LPDDR)的JESD 209、用于LPDDR2的JESD209-2、用于LPDDR3的JESD209-3、以及用于LPDDR4的JESD209-4。这样的标准(以及类似的标准)可以被称为基于DDR的标准,并且实现这样的标准的存储设备的通信接口可以被称为基于DDR的接口。
在一个实施例中,存储器设备是块可寻址存储器设备,诸如基于NAND或者NOR技术的那些。存储器设备还可以包括三维交叉点存储器设备(例如,英特尔 3D XPointTM存储器),或者其它字节可寻址写入在位非易失性存储器设备。在一个实施例中,存储器设备可以是或者可以包括:使用硫系玻璃的存储器设备、多阈值等级NAND闪速存储器、NOR闪速存储器、单级或多级相变存储器(PCM)、电阻存储器、纳米线存储器、铁电晶体管随机存取存储器(FeTRAM)、反铁电存储器、磁阻随机存取存储器(MRAM)、合并忆阻器技术的存储器、包括金属氧化物基、氧空位基的电阻式存储器、以及导电桥随机存取存储器(CB-RAM)、或者自旋转移力矩(STT)-MRAM、基于自旋电子磁结存储器的设备、基于磁隧道结(MTJ)的设备、基于DW(畴壁)和SOT(自旋轨道转移)的设备、基于晶闸管的存储器设备、或者在上面的任何存储器的组合或者其它存储器。存储器设备可以指代管芯本身和/或封装的存储器产品。
在一些实施例中,3D交叉点存储器(例如,英特尔3D XPointTM存储器)可以包括无晶体管可堆叠交叉点架构,其中存储器单元位于字线和位线的交叉处并且是单独地可寻址的并且其中位存储基于在体电阻上的改变。在一些实施例中,主存储器116的全部或者部分可以被集成到处理器114中。在操作中,主存储器116可以存储在操作期间使用的各种软件和数据,诸如应用、程序、库、以及驱动。在说明性的实施例中,存储器116定义一个或多个队列150(例如,队列152、154),其中的每个可以被体现为一组存储器,该组存储器在一个或多个存储器地址处可访问并且能够存储要被由核140、NIC 122、和/或计算设备110的其它组件中的一个或多个进行操作的数据集(例如,包)。例如,队列152可以暂时地存储由NIC 122接收(例如,通过网络170从客户机设备160或者从另外的源接收)的包,并且队列154可以暂时地存储要被由NIC 122(例如,通过网络170)发送的包。
计算引擎112经由I/O子系统118通信地耦合于计算设备110的其它组件,所述I/O子系统118可以被体现为电路和/或组件以促进与计算引擎112(例如,与处理器114和/或主存储器116)和计算设备110的其它组件进行输入/输出操作。例如,I/O子系统118可以被体现为或者另外包括:存储器控制器枢纽、输入/输出控制枢纽、集成传感器枢纽、固件设备、通信链路(例如,点对点链路、总线链路、布线、线缆、光导、印制电路板迹线等)、和/或其它组件和子系统以促进输入/输出操作。在一些实施例中,I/O子系统118可以形成片上系统(SoC)的一部分并且被连同处理器114、主存储器116、和计算机设备110的其它组件中的一个或多个一起合并到计算引擎112中。
通信电路120可以被体现为能够使得能够通过网络170在计算设备110和另外的计算设备(例如,客户机设备160等)之间进行通信的任何通信电路、设备、或者它们的集合。通信电路120可以被配置为使用任何一个或多个通信技术(例如,有线或者无线通信)和相关的协议(例如,以太网、蓝牙®、Wi-Fi®、WiMAX等)来实现这样的通信。
说明性的通信电路120包括网络接口控制器(NIC)122,其也可以被称为主机交换接口(HFI)。NIC 122可以被体现为一个或多个扩展板、子卡、网络接口卡、控制器芯片、芯片组、或者可以被计算设备110使用以与另外的计算设备(例如,客户机设备160等)连接的其它设备。在一些实施例中,NIC 122可以被体现为包括一个或多个处理器的片上系统(SoC)的一部分、或者被包括在也包含一个或多个处理器的多芯片封装上。在一些实施例中,NIC122可以包括本地处理器(未示出)和/或本地存储器(未示出),对于NIC 122来说这两者都是本地的。在这样的实施例中,NIC 122的本地处理器可以能够执行在此描述的计算引擎112的功能中的一个或多个。附加地或者替换地,在这样的实施例中,NIC 122的本地存储器可以被集成到在板级、插口级、芯片级、和/或其它级上的计算设备110的一个或多个组件中。在说明性的实施例中,NIC 122包括工作估计器逻辑单元124,其可以被体现为被配置为将元数据写入针对所接收的包(例如,被写入输入队列152的包)的包描述符的任何设备或者电路(例如,协同处理器、ASIC等),所述包描述符指示与包相关联的计算负载。例如,工作估计器逻辑单元124可以写入指示与包相关联的瞬时突发大小的元数据(例如,在诸如相对短的预先限定的时间段的突发当中NIC 122所接收的包的数量)和/或可以写入指示包所关联的工作负载(例如,加密工作负载、压缩工作负载、人工智能(AI)模型训练工作负载等)的类型的元数据。如在此描述的那样,在说明性的实施例中,与所接收的包相关联的计算负载与核140能够以其从输入队列152移除包的速率成反比地相关(例如,花费更多时间来处理的一组所接收的包相比于与具有更小计算负载的工作负载相关联的一组包将被更慢地从队列152移除)。
一个或多个说明性的数据存储设备128可以被体现为被配置用于短期或者长期存储数据的任何类型的设备,诸如例如:存储器设备和电路、存储器卡、硬盘驱动器、固态驱动器、或者其它数据存储设备。每个数据存储设备128可以包括存储用于数据存储设备128的数据和固件代码的系统分区。每个数据存储设备128还可以包括存储用于操作系统的数据文件和可执行文件的一个或多个操作系统分区。
客户机设备160可以具有与在图1中参照计算设备110描述的那些类似的组件。计算设备110的那些组件的描述同样地可应用于客户机设备的组件的描述,并且为了描述的清楚性不在此重复。进一步地,应当领会的是计算设备110和客户机设备160中的任何一个可以包括其它组件、子组件、以及在计算设备中普遍地找到的设备,所述这些并未在上面参照计算设备110进行讨论并且为了描述的清楚性在此不进行讨论。
如在上面描述的那样,计算设备110和客户机设备160被图示为经由网络170进行通信,网络170可以被体现为任何类型的有线或者无线通信网络,包括全球网络(例如,互联网)、局域网络(LAN)或者广域网络(WAN)、蜂窝网络(例如,全球移动通信系统(GSM)、3G、长期演进(LTE)、全球微波互联接入(WiMAX)等)、数字订户线(DSL)网络、线缆网络(例如,同轴网络、光纤网络等)、或者它们的任何组合。
现在参照图2,在操作中,计算设备110可以执行方法200以用于提供对一个或多个队列150的自适应轮询。方法200从框202开始,其中计算设备110确定是否执行自适应轮询。在说明性的实施例中,计算设备110可以响应于确定配置文件(例如,在数据存储设备128中)指示执行自适应轮询、响应于确定NIC 122装备有工作估计器逻辑单元124和/或基于其它因素而确定执行自适应轮询。无论如何,响应于确定执行自适应轮询,方法200前进到框204,其中计算设备110利用NIC 122接收一个或多个包。通过这样做,并且如在框206中指示的那样,计算设备110可以利用NIC 122将指示与所接收的包相关联的计算负载的元数据写入每个所接收的包的包描述符(例如,存储器116中描述对应的包的数据集)。例如,并且如在框208中指示的那样,计算设备110可以写入(例如,利用NIC 122的工作估计器逻辑单元124)指示在突发当中接收的包的数量(例如,在相对短的预先限定的时间帧内接收的包的数量)的元数据。附加地或者替换地,如在框210中指示的那样,计算设备110可以诸如通过针对与工作负载类型(例如,加密工作负载、压缩工作负载等)相关联(例如,在表中,通过人工智能推理模型等)的特定签名(例如,字节模式)分析包中的数据从而写入(例如,利用工作估计器逻辑单元124)指示与每个包相关联的工作负载类型的元数据。
随后,在框212中,计算设备110确定其中队列150可以在没有溢出的情况下(例如,在没有耗尽容量和丢弃包的情况下)接收包数据的预测的时间段。通过这样做,如在框214中指示的那样,计算设备110可以针对输入队列152确定预测的时间段。在说明性的实施例中,如在框216中指示的那样,计算设备110针对最坏情况场景确定预测的时间段。例如,并且如在框218中指示的那样,计算设备110可以将预测的时间段确定为队列容量(例如,队列能够存储的包的数量)和NIC 122的峰值包接收速率的函数。换句话说,如果NIC 122正在接收那些包并且以NIC 122能够操作的最大理论速度将它们放置到队列152中,则计算设备110可以确定队列152能够接收包多长时间。在框220中,计算设备110可以将时间段确定为(一个或多个)包描述符中指示所接收的包的瞬时数量(例如根据框208)的元数据的函数。这样的信息可以指示正在以其从NIC 122接收包的当前速率。
现在参照图3,如在框222中指示的那样,在确定与输入队列152相关联的预测的时间段当中,计算设备110可以将时间段确定为以其从队列152移除包的速率的函数。通过这样做,并且如在框224中指示的那样,计算设备110可以将时间段确定为计算设备110(例如,执行工作者线程以执行与包相关联的工作负载操作的核140)已经以其从输入队列152移除包的历史速率的函数。如在框226中指示的那样,计算设备110可以将速率确定为每个接收的包所关联的工作负载的类型以及与每个工作负载类型相关联的计算负载的函数。通过这样做,如在框228中指示的那样,计算设备110可以从与每个包相关联的包描述符中存在的元数据来确定工作负载类型。如在上面描述的那样,当接收到包时,NIC 122可以将元数据写入工作负载描述符(例如,在图2的框206中)。如在框230中指示的那样,计算设备110可以估计与计算负载成反比关系的、以其从队列152移除包的速率,所述计算负载与表现在包中的每个工作负载类型相关联(例如,与较大的计算负载相关联的工作负载类型将造成从输入队列152移除对应的包的较慢的速率,并且与较轻的计算负载相关联的工作负载类型将造成从输入队列152移除对应的包的较快的速率)。在一些实施例中,如在框232中指示的那样,计算设备110可以针对与不同的工作负载类型相关联的一组包确定加权平均速率(例如,与一个工作负载类型相关联的计算负载乘以输入队列152中与该工作负载类型相关联的包的数量,加上与另一个工作负载类型相关联的计算负载乘以与该工作负载类型相关联的包的数量,除以在队列152中的包的总数量)。
如在框234中指示的那样,计算设备110还可以针对要填满的输出队列154确定预测的时间段。通过这样做,如在框236中指示的那样,计算设备110可以将预测的时间段确定为NIC 122以其将包(例如,从输出队列154)发送出计算设备110(例如,去往另外的计算设备)的速率的函数。如在框238中指示的那样,计算设备110可以将预测的时间段确定为NIC122已经以其发送包的历史速率(例如,在预先限定的时间段上的平均速率)的函数。如在框240中指示的那样,计算设备110还可以将时间段确定为包被以其添加到输出队列154的速率的函数。通过这样做,如在框242中指示的那样,计算设备110可以将速率确定为由计算设备110当前正执行的工作负载的类型的函数。如在框244中指示的那样,计算设备110可以将速率确定为与每个工作负载类型相关联的计算负载的函数。附加地或者替换地,如在框246中指示的那样,计算设备110可以将速率确定为针对每个工作负载类型的包生成的历史速率的函数(例如,压缩工作负载可以使得在预先限定的时间段上每秒生成200个包,而加密工作负载可以使得在预先限定的时间段的每秒生成400个包等)。随后,方法200前进到图4的框248,其中计算设备110可以将工作负载划分为在预测的时间段(例如,在框212中针对要填满的输入队列152确定的预测的时间段)内匹配的任务(例如,操作的集合)。
现在参照图4的框250,计算设备110还可以调整被分派为轮询队列(例如,输入队列152)的核的优先级,以在预测的时间段内执行工作负载任务(例如,增加核142的优先级以使得核142能够执行否则将不会在框212中预测的时间段内被完成的任务)。如在框252中指示的那样,计算设备110使用还被分派为定期地轮询队列150的核(例如,核142)来执行工作负载(例如,在工作负载内的任务)。换句话说,核140在预测的时间段期间执行工作负载而不是排它地轮询队列150,同时对应的队列150继续填满但是不溢出。通过这样做,并且如在框254中指示的那样,计算设备110可以利用被分派为轮询输入队列152的核140(例如,核142)来执行工作负载任务。附加的并且如在框256中指示的那样,计算设备110可以利用被分派为轮询输出队列(例如,队列154)的核140(例如,核144)来执行工作负载任务。
在框258中,计算设备110确定是否已经经过了与输入队列152相关联的预测的时间段(例如根据框212)。通过这样做,计算设备110轮询输入队列152并且移除任何所接收的包。在轮询输入队列152当中,计算设备110可以暂停执行由被分派为轮询输入队列152的核(例如,核142)执行的工作负载任务。附加地,在框264中,计算设备110可以确定是否经过了与输出队列154相关联的预测的时间段(例如,在框234中确定的时间段)。如果是这样,则计算设备110可以针对任何包轮询输出队列154并且利用NIC 122将那些包发送出计算设备110。通过这样做,计算设备110还可以暂停执行由轮询核142执行的工作负载任务。随后,计算设备110循环回到图2的框202,其中计算设备110确定是否继续执行自适应轮询。
现在参照图5,示出了由计算设备110执行的操作序列的时间线500。如示出的那样,类似于图2的框204,在接收(“RX”)阶段包以一定间隔到达,并且类似于图2的框206,工作估计器逻辑单元124将元数据写入所接收的包的(一个或多个)包描述符。在说明性的实施例中,元数据指示与(一个或多个)包相关联的计算负载。附加地,计算设备110计算下一个读取最后期限或者时间以针对附加的包轮询输入队列152(例如,类似于图2的框212)。随后,计算设备110利用还被分派为定期地轮询输入队列152的核(例如,核142)来对在队列152中所接收的包执行工作(例如,工作负载任务)(例如,类似于图4的框252)。如果计算设备 110在已经经过了预测的时间段之前完成工作负载任务,则计算设备110可以执行附加的工作负载任务或者休眠(例如以低功率状态操作)。随后,当已经经过了预测的时间段时,计算设备110再次轮询输入队列152并且重复处理。
示例
在下面提供在此公开的技术的说明性示例。技术的实施例可以包括在下面描述的示例中的任何一个或多个以及任何组合。
示例1包括一种计算设备,计算设备包括:网络接口控制器;计算引擎,其包括多个核,并且包括存储器以包括队列以存储由网络接口控制器接收的包,其中计算引擎被配置为:针对队列确定预测的时间段以在没有溢出的情况下接收包;在所述时间段期间并且利用被分派为定期地针对包轮询队列的核来执行工作负载;以及利用所分派的核轮询队列以从队列移除包。
示例2包括示例1的主题,并且其中网络接口控制器被配置为将指示与所接收的包相关联的计算负载的元数据写入到与所接收的包相关联的包描述符。
示例3包括示例1和示例2中的任何一个的主题,并且其中元数据指示在预先限定的时间段内由网络接口控制器接收的包的数量。
示例4包括示例1至示例3中的任何一个的主题,并且其中元数据指示要被由核中的一个或多个执行的工作负载的类型。
示例5包括示例1至示例4中的任何一个的主题,并且其中队列是输入队列,并且存储器进一步包括输出队列以存储要被由网络接口控制器从计算设备发送的包,并且计算引擎进一步针对输出队列确定第二预测的时间段以在没有溢出的情况下接收包,并且在第二预测的时间段期间利用被分派为轮询输出队列的核来执行工作负载。
示例6包括示例1至示例5中的任何一个的主题,并且其中确定预测的时间段包括将预测的时间段确定为队列的容量和网络接口控制器的峰值包接收速率的函数。
示例7包括示例1至示例6中的任何一个的主题,并且其中确定预测的时间段包括将预测的时间段确定为在所接收的包的包描述符中存在的元数据的函数,其中元数据指示与所接收的包相关联的计算负载。
示例8包括示例1至示例7中的任何一个的主题,并且其中确定预测的时间段包括将预测的时间段确定为以其从队列移除包的速率的函数。
示例9包括示例1至示例8中的任何一个的主题,并且其中确定预测的时间段包括将预测的时间段确定为已经以其从队列移除包的历史速率的函数。
示例10包括示例1至示例9中的任何一个的主题,并且其中确定预测的时间段包括将以其从队列移除包的速率确定为每个接收包所关联的工作负载类型和与每个工作负载类型相关联的计算负载的函数。
示例11包括示例1至示例10中的任何一个的主题,并且其中计算引擎进一步被配置为至少从与每个包相关联的包描述符中存在的元数据来确定每个工作负载类型。
示例12包括示例1至示例11中的任何一个的主题,并且其中计算引擎进一步被配置为调整与计算负载成反比关系的速率,所述计算负载与每个工作负载类型相关联。
示例13包括示例1至示例12中的任何一个的主题,并且其中计算引擎被进一步配置为将速率确定为针对与多个不同的工作负载类型相关联的一组包的加权平均速率。
示例14包括示例1至示例13中的任何一个的主题,并且其中计算引擎进一步在预测的时间段的一部分中以低功率状态操作所分派的核。
示例15包括一个或多个机器可读存储介质,其包括存储在其上的多个指令,响应于执行所述多个指令,所述多个指令:引起计算设备针对队列确定预测的时间段以在没有溢出的情况下接收包;在该时间段期间并且利用被分派为定期地针对包轮询队列的核来执行工作负载;并且利用所分派的核轮询队列以从队列移除包。
示例16包括示例15的主题,并且其中多个指令进一步引起计算设备将指示与所接收的包相关联的计算负载的元数据写入到与所接收的包相关联的包描述符。
示例17包括示例15和示例16中的任何一个的主题,并且其中多个指令进一步引起计算设备写入由计算设备的网络接口控制器在预先限定的时间段内接收的包的数量。
示例18包括示例15至示例17中的任何一个的主题,并且其中多个指令进一步引起计算设备写入指示要被核中的一个或多个执行的工作负载的类型的元数据。
示例19包括示例15至示例18中的任何一个的主题,并且其中队列是输入队列,并且多个指令进一步引起计算设备针对输出队列确定第二预测的时间段以在没有溢出的情况下接收包,并且在第二预测的时间段期间利用被分派为轮询输出队列的核来执行工作负载。
示例20包括示例15至示例19中的任何一个的主题,并且其中多个指令进一步引起计算设备将预测的时间段确定为队列容量和网络接口控制器的峰值包接收速率的函数。
示例21包括示例15至示例20中的任何一个的主题,并且其中多个指令进一步引起计算设备将预测的时间段确定为所接收的包的包描述符中存在的元数据的函数,其中元数据指示与所接收的包相关联的计算负载。
示例22包括一种方法,该方法包括:由计算设备针对队列确定预测的时间段以在没有溢出的情况下接收包;在该时间段期间并且利用计算设备的被分派为定期地针对包轮询队列的核来执行工作负载;以及利用所分派的核来轮询队列以从队列移除包。
示例23包括示例22的主题,并且进一步包括利用网络接口控制器进行写入并且将指示与所接收的包相关联的计算负载的元数据写入到与所接收的包相关联的包描述符。
示例24包括示例22和示例23中的任何一个的主题,并且其中写入元数据包括写入由网络接口控制器在预先限定的时间段内接收的包的数量。
示例25包括一种计算设备,该计算设备包括:用于针对队列确定预测的时间段以在没有溢出的情况下接收包的部件;用于在该时间段期间并且利用计算设备的被分派为定期地针对包轮询队列的核来执行工作负载的电路;以及用于利用所分派的核来轮询队列以从队列移除包的电路。

Claims (25)

1.一种计算设备,包括:
网络接口控制器;
计算引擎,其包括多个核,并且包括存储器以包括队列以存储由网络接口控制器接收的包;
其中计算引擎被配置为:
针对队列确定预测的时间段以在没有溢出的情况下接收包;
在所述时间段期间并且利用被分派为定期地针对包轮询队列的核来执行工作负载;以及
利用所述被分派的核轮询队列以从队列移除包。
2.如权利要求1所述的计算设备,其中网络接口控制器被配置为:
将指示与所接收的包相关联的计算负载的元数据写入到与所接收的包相关联的包描述符。
3.如权利要求1所述的计算设备,其中元数据指示由网络接口控制器在预先限定的时间段内接收的包的数量。
4.如权利要求1所述的计算设备,其中元数据指示要被由核中的一个或多个执行的工作负载的类型。
5.如权利要求1所述的计算设备,其中所述队列是输入队列并且所述存储器进一步包括输出队列以存储要被由所述网络接口控制器从所述计算设备发送的包,并且所述计算引擎进一步针对所述输出队列确定第二预测时间段以在没有溢出的情况下接收包,并且在所述第二预测时间段期间,利用被分派为轮询所述输出队列的核来执行工作负载。
6.如权利要求1所述的计算设备,其中为了确定所述预测的时间段包括为了将所述预测的时间段确定为所述队列的容量和所述网络接口控制器的峰值包接收速率的函数。
7.如权利要求1所述的计算设备,其中确定预测的时间段包括将预测的时间段确定为在所接收的包的包描述符中存在的元数据的函数,其中元数据指示与所接收的包相关联的计算负载。
8.如权利要求1所述的计算设备,其中确定预测的时间段包括将预测的时间段确定为以其从队列移除包的速率的函数。
9.如权利要求1所述的计算设备,其中确定预测的时间段包括将预测的时间段确定为已经以其从队列移除包的历史速率的函数。
10.如权利要求1所述的计算设备,其中确定预测的时间段包括将以其从队列移除包的速率确定为每个接收包所关联的工作负载类型和与每个工作负载类型相关联的计算负载的函数。
11.如权利要求10所述的计算设备,其中计算引擎进一步被配置为至少从与每个包相关联的包描述符中存在的元数据确定每个工作负载类型。
12.如权利要求11所述的计算设备,其中计算引擎进一步被配置为调整与计算负载成反比关系的速率,所述计算负载与每个工作负载类型相关联。
13.一种计算设备,包括:
用于针对队列确定预测的时间段以在没有溢出的情况下接收包的部件;
用于在所述时间段期间并且利用所述计算设备的被分派为定期地针对包轮询队列的核来执行工作负载的部件;以及
用于利用所述被分派的核来轮询队列以从队列移除包的部件。
14.如权利要求13所述的计算设备,进一步包括:
用于将指示与所接收的包相关联的计算负载的元数据写入到与所接收的包相关联的包描述符的部件。
15.如权利要求13所述的计算设备,其中元数据指示由网络接口控制器在预先限定的时间段内接收的包的数量。
16.如权利要求13所述的计算设备,其中元数据指示要由核中的一个或多个执行的工作负载的类型。
17.如权利要求13所述的计算设备,其中队列是输入队列并且存储器包括输出队列以存储要被由网络接口控制器从所述计算设备发送的包,所述计算设备进一步包括用于针对输出队列确定第二预测的时间段以在没有溢出的情况下接收包并且在第二预测的时间段期间利用被分派为轮询输出队列的核来执行工作负载的部件。
18.如权利要求13所述的计算设备,其中用于确定预测的时间段的部件包括用于将预测的时间段确定为队列的容量和网络接口控制器的峰值包接收速率的函数的部件。
19.如权利要求13所述的计算设备,其中用于确定预测的时间段的部件包括用于将预测的时间段确定为在所接收的包的包描述符中存在的元数据的函数的部件,其中元数据指示与所接收的包相关联的计算负载。
20.如权利要求13所述的计算设备,其中用于确定预测的时间段的部件包括用于将预测的时间段确定为以其从队列移除包的速率的函数的部件。
21.如权利要求13所述的计算设备,其中用于确定预测的时间段的部件包括用于将预测的时间段确定为已经以其从队列移除包的历史速率的函数的部件。
22.如权利要求13所述的计算设备,其中用于确定预测的时间段的部件包括用于将以其从队列移除包的速率确定为每个接收包所关联的工作负载类型和与每个工作负载类型相关联的计算负载的函数的部件。
23.一种方法,包括:
由计算设备针对队列确定预测的时间段以在没有溢出的情况下接收包;
在所述时间段期间并且利用所述计算设备的被分派为定期地针对包轮询队列的核来执行工作负载;以及
利用所述被分派的核轮询队列以从队列移除包。
24.如权利要求23所述的方法,进一步包括利用网络接口控制器进行写入并且将指示与所接收的包相关联的计算负载的元数据写入到与所接收的包相关联的包描述符。
25.如权利要求23所述的方法,其中写入元数据包括写入由网络接口控制器在预先限定的时间段内接收的包的数量。
CN201910411432.4A 2018-06-18 2019-05-17 用于提供包队列的自适应轮询的技术 Pending CN110618877A (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US16/011,103 US20190044860A1 (en) 2018-06-18 2018-06-18 Technologies for providing adaptive polling of packet queues
US16/011103 2018-06-18

Publications (1)

Publication Number Publication Date
CN110618877A true CN110618877A (zh) 2019-12-27

Family

ID=65230428

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910411432.4A Pending CN110618877A (zh) 2018-06-18 2019-05-17 用于提供包队列的自适应轮询的技术

Country Status (3)

Country Link
US (1) US20190044860A1 (zh)
EP (2) EP3585017A3 (zh)
CN (1) CN110618877A (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11703939B2 (en) * 2018-09-28 2023-07-18 Shanghai Cambricon Information Technology Co., Ltd Signal processing device and related products

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7516454B1 (en) * 2004-03-24 2009-04-07 Lightsurf Technologies, Inc. Feedback integration of dynamic operations
JP5411936B2 (ja) * 2009-07-21 2014-02-12 日本電信電話株式会社 音声信号区間推定装置と音声信号区間推定方法及びそのプログラムと記録媒体
WO2012019114A1 (en) * 2010-08-06 2012-02-09 Citrix Systems, Inc. Systems and methods for a para-virtualized driver in a multi-core virtual packet engine device
US8694994B1 (en) * 2011-09-07 2014-04-08 Amazon Technologies, Inc. Optimization of packet processing by delaying a processor from entering an idle state
WO2014116888A1 (en) * 2013-01-25 2014-07-31 REMTCS Inc. Network security system, method, and apparatus
EP2811709B1 (en) * 2013-06-04 2017-09-13 Alcatel Lucent Quality of experience measurements in a unicast linear television network
JP2017011423A (ja) * 2015-06-19 2017-01-12 富士通株式会社 データ処理システム及びデータ処理方法
US9792907B2 (en) * 2015-11-24 2017-10-17 Intel IP Corporation Low resource key phrase detection for wake on voice
US10341264B2 (en) * 2016-06-30 2019-07-02 Intel Corporation Technologies for scalable packet reception and transmission
US10541927B2 (en) * 2016-12-29 2020-01-21 Google Llc System and method for hardware-independent RDMA
US10810038B2 (en) * 2017-09-22 2020-10-20 International Business Machines Corporation Accounting and enforcing non-process execution by container-based software receiving data over a network
US10970269B2 (en) * 2018-05-07 2021-04-06 Microsoft Technology Licensing, Llc Intermediate consistency levels for database configuration

Also Published As

Publication number Publication date
EP3585017A2 (en) 2019-12-25
US20190044860A1 (en) 2019-02-07
EP3771164B1 (en) 2023-11-29
EP3585017A3 (en) 2020-02-12
EP3771164A1 (en) 2021-01-27

Similar Documents

Publication Publication Date Title
US20220075661A1 (en) Technologies for scheduling acceleration of functions in a pool of accelerator devices
US11922227B2 (en) Technologies for providing efficient migration of services at a cloud edge
US20190042305A1 (en) Technologies for moving workloads between hardware queue managers
US11805070B2 (en) Technologies for flexible and automatic mapping of disaggregated network communication resources
US11847008B2 (en) Technologies for providing efficient detection of idle poll loops
EP3629189A2 (en) Technologies for using a hardware queue manager as a virtual guest to host networking interface
EP3460673A1 (en) Technologies for providing efficient kernel reprovisioning in an accelerator device
US20190101880A1 (en) Techniques to direct access requests to storage devices
EP3716085B1 (en) Technologies for flexible i/o endpoint acceleration
EP3640797A1 (en) Dynamic traffic-aware interface queue switching among processor cores
CN110618877A (zh) 用于提供包队列的自适应轮询的技术
EP3716088A1 (en) Technologies for flexible protocol acceleration
KR20210151250A (ko) 확장 메모리 인터페이스
US10664396B2 (en) Systems, methods and apparatus for fabric delta merge operations to enhance NVMeoF stream writes
CN111492348A (zh) 用于利用硬件加速来实现保证的网络质量的技术
CN113227956B (zh) 计算瓦片
US11431648B2 (en) Technologies for providing adaptive utilization of different interconnects for workloads
US9389672B2 (en) Quality-of-service management in power-throttled storage devices
US20190324802A1 (en) Technologies for providing efficient message polling
KR20210134048A (ko) 확장 메모리 연산
KR20210108487A (ko) 저장 디바이스 동작 오케스트레이션
US20190042308A1 (en) Technologies for providing efficient scheduling of functions
EP3758296A1 (en) Technologies for transmit scheduler dynamic configurations

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