无锁流水线网络数据分组带宽控制

文档序号:884567 发布日期:2021-03-19 浏览:5次 >En<

阅读说明:本技术 无锁流水线网络数据分组带宽控制 (Lock-free pipelined network data packet bandwidth control ) 是由 喻湘宁 马可 段建军 刘昆 于 2018-09-04 设计创作,主要内容包括:系统和方法被提供用于通过经由以下步骤来减少等待时间并控制带宽来改进具有多个处理器的计算系统中的多线程处理性能:基于带宽要求将与处理器相关联的网络数据分组分组到带宽组中;将与处理器相关联的网络数据分组聚合到无锁排出队列中;基于每个网络数据分组的相应长度对无锁排出队列执行带宽控制;以及向无锁排出队列中当前排队的网络数据分组的对应处理器发送处理器间中断(IPI)以继续处理当前排队的网络数据分组。(Systems and methods are provided for improving multithreading performance in a computing system having multiple processors by reducing latency and controlling bandwidth through the following steps: grouping network data packets associated with a processor into bandwidth groups based on bandwidth requirements; aggregating network data packets associated with a processor into a lock-free dequeue queue; performing bandwidth control on the lock-free drain queue based on a respective length of each network data packet; and sending an inter-processor interrupt (IPI) to a corresponding processor of the currently queued network data packet in the lock-free drain queue to continue processing the currently queued network data packet.)

具体实施方式

本文讨论的方法和系统涉及改进网络资源隔离,并且更具体地涉及通过减少等待时间并控制带宽来改进具有多个处理器的计算系统中的多线程处理性能。

在多租户场景中,系统为对于网络服务质量具有不同的要求的不同的服务共享同一物理网络接口卡(NIC)。系统可以包括用于控制与多个CPU相关联的网络数据分组的多个处理器,诸如CPU。CPU可以包括在物理机器上运行的物理CPU和在虚拟机上运行的虚拟CPU。不是使CPU专用于流或业务组,而是可以基于诸如在CPU之间提供某种性能公平性的循环方式的预定调度表来调度每个CPU以执行流控制任务,即,单个CPU不应比其他CPU更多地执行流控制任务。当前调度的CPU也可以被称为执行CPU。每个CPU可以将其网络数据分组保持在它自己的无锁队列中。执行CPU可以基于对应带宽要求将与多个CPU相关联的网络数据分组分组到带宽组中,并且将网络数据分组聚合到无锁排出队列中。作为聚合线程,执行CPU可以通过以下步骤来将网络数据分组聚合到无锁排出队列中:以高速率扫描多个CPU中的每个CPU的队列,例如每隔一到两微秒扫描,并且以多个CPU的预定次序如循环方式对与多个CPU相关联的相应的网络数据分组进行排队。在此聚合阶段,不访问网络数据分组的内容。网络数据分组因此很可能仍然在对应原始CPU的高速缓存中,从而确保网络数据分组的高速缓存局部性并避免多个线程同时地访问数据的问题。

执行CPU然后可以基于每个网络数据分组的相应长度例如通过对无锁排出队列执行令牌桶算法或者使用带宽组专用线程来对无锁排出队列执行带宽控制,并且作为排出线程,向无锁排出队列中当前排队的网络数据分组的对应CPU发送处理器间中断(IPI)以继续处理已排队的网络数据分组。

通过执行上述过程,系统可以有效地使聚合线程和排出线程与带宽组对齐,并且使入队和出队线程与适当的CPU对齐,使得原始发送CPU保留并处理其网络数据分组,这允许不同的过程或流水线、级的更好并发性。

为了通过使带宽共享和带宽限制解耦来进一步改进系统的带宽性能,执行CPU可以以低频如每秒一次的速率在多个CPU中的一个上运行带宽分配线程,并且动态地调整带宽组中的每一个的对应最大带宽。

图1图示了基于带宽的网络数据分组控制的示例过程100。

在具有用于控制与多个CPU相关联的网络数据分组的多个处理器如CPU的系统中,可以在框102处基于预定调度表来调度每个CPU,并且可以选择当前调度的CPU以在框104处在调度间隔内执行或实行网络数据分组控制任务。CPU可以包括在物理机器上运行的物理CPU和在虚拟机上运行的虚拟CPU。可以以循环方式生成预定调度表,这可以确保CPU之间的某种公平性,也就是说,不可以调度单个CPU以比其他CPU更多地执行网络数据分组控制任务。不是具有单独的专用CPU来执行网络数据分组控制任务,而是可以通过将网络数据分组控制任务散布在现有网络数据分组处理CPU之间来降低材料和复杂性方面的开销成本。每个CPU可以将其网络数据分组保持在它自己的无锁队列中。

在框106处,执行CPU可以基于对应网络数据分组的带宽要求将与多个CPU相关联的网络数据分组分组到带宽组中,并且作为聚合线程在框108处将网络数据分组聚合到无锁排出队列中。因为在此聚合阶段中不可以访问网络数据分组的内容,所以网络数据分组很可能仍然在对应原始CPU的高速缓存中,这可以确保网络数据分组的高速缓存局部性并避免多个线程同时地访问数据的问题。

在框110处,执行CPU可以基于每个网络数据分组的长度对无锁排出队列执行带宽控制。例如,执行CPU可以对无锁排出队列执行令牌桶算法或者使用带宽组专用线程。作为排出线程,执行CPU然后可以在框112处向无锁排出队列中当前排队的网络数据分组的CPU发送处理器间中断(IPI)以继续处理当前排队的网络数据分组。

以上参考图1描述的过程可以有效地使聚合线程和排出线程与带宽组对齐,并且通过使入队和出队线程与适当的CPU对齐来改进不同的过程或流水线、级的并发性,使得原始发送CPU保留并处理其网络数据分组。

图2图示了详述图1的框108的示例流程图。

在框202处,执行CPU可以以高频率例如以介于每一微秒一次与每两微秒一次之间的速率扫描多个CPU中的每个CPU的队列。在框204处,执行CPU可以以多个CPU的预定次序在无锁排出队列中对多个CPU的相应的网络数据分组进行排队。

为了通过使带宽共享和带宽限制解耦来改进系统的带宽性能,执行CPU可以在多个CPU中的一个上同时地运行带宽分配线程,并且动态地调整带宽组中的每一个的对应最大带宽。执行CPU可以以低频率例如以每秒一次的速率在每个CPU上运行带宽分配线程。

图3图示了用于实现上述用于基于带宽的网络数据分组控制的过程和方法的示例系统300。

本文描述的技术和机制可以由系统300的多个实例以及由包括云计算的任何其他计算设备、系统和/或环境来实现。图3中所示的系统300仅仅是系统的一个示例,而不旨在关于用于执行上述过程和/或程序的任何计算设备的使用或功能性的范围暗示任何限制。可以适合于与实施例一起使用的其他众所周知的计算设备、系统、环境和/或配置包括但不限于个人计算机、服务器计算机、手持或膝上型设备、多处理器系统、基于微处理器的系统、机顶盒、游戏机、可编程消费者电子设备、网络PC、小型计算机、大型计算机、包括以上系统或设备中的任一个的分布式计算环境、使用现场可编程门阵列(“FPGA”)和专用集成电路(“ASIC”)的实现方式和/或类似物。

系统300可以包括多个处理器(在此示例中将四个处理器302、304、306和308示出为CPU)和耦合到处理器的存储器310。处理器302、304、306和308中的每一个均可以继而作为执行处理器执行存储在存储器310中的计算机可执行指令,以执行如在下面参考图1和图2所描述的各种功能。处理器302、304、306和308可以包括中央处理单元(CPU)、图形处理单元(GPU)、CPU和GPU两者、或本领域中已知的其他处理单元或组件。附加地,处理器302、304、306和308中的每一个均可以拥有它自己的本地存储器,该本地存储器也可以存储程序模块、程序数据和/或一个或多个操作系统。

取决于系统300的确切配置和类型,存储器310可以为易失性的,诸如RAM,为非易失性的,诸如ROM、闪速存储器、微型硬盘驱动器、存储卡等,或它们的某种组合。存储器310可以包括可由处理器302、304、306和308执行的一个或多个计算机可执行模块(在此示例中示出了两个模块312和314)。

系统300可以附加地包括用于接收诸如网络数据分组的数据并且用于输出处理的数据的输入/输出(I/O)接口316。系统300也可以包括通信模块318和网络接口模块320,从而允许系统300通过网络324与其他设备或系统322进行通信。网络324可以包括因特网、诸如有线网络或直接有线连接的有线介质、以及诸如声学、射频(RF)、红外和其他无线介质的无线介质。

在系统300中,可以基于预定调度表选择执行CPU,可以以循环方式生成该预定调度表,这可以确保CPU之间的某种公平性,也就是说,不可以调度单个CPU以比其他CPU更多地执行网络数据分组控制任务。例如,用作执行CPU的次序可以为CPU 302、CPU 304、CPU306、CPU 308,然后回到CPU 302,依此类推。取决于正在执行的过程,对于每个CPU用作执行CPU的间隔每次可能不是相同的,然而随着时间的推移,它将达到平均数。不是具有单独的专用CPU来执行网络数据分组控制任务,而是可以通过将网络数据分组控制任务散布在现有网络数据分组处理CPU之间来降低材料和复杂性方面的开销成本。每个CPU可以将其网络数据分组保持在它自己的无锁队列中。

执行CPU,在此示例中为CPU 302,可以基于对应网络数据分组的带宽要求来将与CPU 302、304、306和308相关联的网络数据分组分组到带宽组中,并且作为聚合线程将与CPU 302、304、306和308相关联的网络数据分组聚合到无锁排出队列中。执行CPU 302可以以高频率例如以介于一到两微秒之间一次的速率扫描CPU 302、304、306和308中的每一个的队列,并且以CPU 302、304、306和308的预定次序在无锁排出队列中对与CPU 302、304、306和308相关联的相应的网络数据分组进行排队,这可以基于循环方式。在此聚合阶段中,不访问网络数据分组的内容。网络数据分组因此很可能仍然在对应原始CPU的高速缓存中,从而确保网络数据分组的高速缓存局部性并避免由互斥即多个线程同时地访问数据所引起的问题。

然后,执行CPU 302可以基于每个网络数据分组的相应长度对无锁排出队列执行带宽控制,并且作为排出线程,向无锁排出队列中当前排队的网络数据分组的CPU发送处理器间中断(IPI)以继续处理当前已排队的网络数据分组。执行CPU 302可以通过对无锁排出队列执行令牌桶算法或者使用带宽组专用线程来对无锁排出队列执行带宽控制。

以上参考图3描述的系统可以有效地使聚合线程和排出线程与带宽组对齐,并且通过使入队和出队线程与适当的CPU对齐来改进不同的过程或流水线、级的并发性,使得原始发送CPU保留并处理其网络数据分组。

为了通过使带宽共享和带宽限制解耦来改进系统300的带宽性能,执行CPU 302可以以低频率例如每秒一次在多个CPU中的一个上运行带宽分配线程,并且动态地将带宽组中的每一个的对应最大带宽调整为最大可用带宽。

图4图示了基于带宽的网络数据分组控制的图示表示400。

网络数据分组402、404、406和408分别可以被保持在CPU 302、304、306和308的无锁队列中。执行CPU 302可以基于每个网络数据分组的带宽要求来基于网络数据分组402、404、406和408中的每个网络数据分组将网络数据分组402、404、406和408分组到带宽组中,并且像以上参考图1、图2和图3所描述的那样以CPU的预定次序将网络数据分组聚合到无锁排出队列410中。执行CPU 302然后可以例如通过对无锁排出队列410执行令牌桶算法来基于每个网络数据分组的长度对无锁排出队列410执行带宽控制。执行CPU 302然后可以向无锁排出队列430中当前排队的网络数据分组(来自所示CPU 308的网络数据分组408的网络数据分组)的CPU如CPU 308发送处理器间中断(IPI)以继续处理当前排队的网络数据分组。

可通过执行如在下面所定义的存储在计算机可读存储介质上的计算机可读指令来执行上述方法的一些或所有操作。如说明书和权利要求书中使用的术语“计算机可读指令”包括例程、应用、应用模块、程序模块、程序、组件、数据结构、算法等。可在各种系统配置上实现计算机可读指令,这些各种系统配置包括单处理器或多处理器系统、小型计算机、大型计算机、个人计算机、手持计算设备、基于微处理器的可编程消费者电子设备、它们的组合等。

计算机可读存储介质可以包括易失性存储器(诸如随机存取存储器(RAM))和/或非易失性存储器(诸如只读存储器(ROM)、闪速存储器等)。计算机可读存储介质也可以包括附加可移动存储装置和/或非可移动存储装置,包括但不限于可以提供计算机可读指令、数据结构、程序模块等的非易失性存储的闪速存储器、磁性存储装置、光学存储装置和/或磁带存储装置。

非暂时性计算机可读存储介质是计算机可读介质的示例。计算机可读介质包括至少两种类型的计算机可读介质,即计算机可读存储介质和通信介质。计算机可读存储介质包括用任何过程或技术加以实现以便存储诸如计算机可读指令、数据结构、程序模块或其他数据的信息的易失性和非易失性、可移动和非可移动介质。计算机可读存储介质包括但不限于相变存储器(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、闪速存储器或其他存储技术、紧致盘只读存储器(CD-ROM)、数字通用盘(DVD)或其他光学存储装置、磁盒、磁带、磁盘存储装置或其他磁性存储设备,或可用于存储信息以供由计算设备访问的任何其他非传输介质。存储器310是计算机可读存储介质的示例。相比之下,通信介质可以在诸如载波的调制数据信号或其他传输机制中体现计算机可读指令、数据结构、程序模块或其他数据。如本文所定义的,计算机可读存储介质不包括通信介质。

存储在一个或多个非暂时性计算机可读存储介质上的计算机可读指令当由一个或多个处理器执行时,可以执行以上参考图1-4描述的操作。通常,计算机可读指令包括执行特定功能或者实现特定抽象数据类型的例程、程序、对象、组件、数据结构等。描述操作的次序不旨在被解释为限制,并且可以任何次序和/或并行地组合任何数量的所描述的操作以实现过程。

示例条款

A.一种包括多个中央处理单元(CPU)以用于控制与所述多个CPU相关联的网络数据分组的系统中的方法,所述方法包括:基于对应网络数据分组的带宽要求将与所述多个CPU相关联的网络数据分组分组到带宽组中;将与所述多个CPU相关联的所述网络数据分组聚合到无锁排出队列中;以及基于每个网络数据分组的相应长度对所述无锁排出队列执行带宽控制。

B.如段落A所述的方法,还包括:向所述无锁排出队列中当前排队的网络数据分组的对应CPU发送处理器间中断(IPI)以继续处理所述当前排队的网络数据分组。

C.如段落A所述的方法,在基于所述带宽要求将与所述多个CPU相关联的所述网络数据分组到带宽组中之前,还包括:基于预定调度表来调度所述多个CPU中的每个CPU;以及选择当前调度的CPU,其中根据段落A所述的方法由所述当前调度的CPU执行。

D.如段落A所述的方法,其中将与所述多个CPU相关联的所述网络数据分组聚合到所述无锁排出队列中包括:以介于每一微秒一次与每两微秒一次之间的速率扫描所述多个CPU中的每个CPU的队列。

E.如段落A所述的方法,其中将与所述多个CPU相关联的所述网络数据分组聚合到所述无锁排出队列中包括:以所述多个CPU的预定次序在所述无锁排出队列中对与所述多个CPU相关联的所述相应的网络数据分组进行排队。

F.如段落A所述的方法,其中基于每个网络数据分组的相应长度对所述无锁排出队列执行所述带宽控制包括使用带宽组专用线程。

G.如段落A所述的方法,还包括:在所述多个CPU中的一个CPU上运行带宽分配线程;以及动态地调整所述带宽组中的每一个的对应最大带宽。

H.如段落F所述的方法,其中在所述一个CPU上运行所述带宽分配线程包括以每秒一次的速率在所述一个CPU上运行所述带宽分配线程。

I.如段落A所述的方法,其中网络数据分组被保持在对应CPU的无锁队列中。

J.一种系统,所述系统包括:多个中央处理单元(CPU);耦合到所述多个CPU的存储器,所述存储器存储可由所述多个CPU中的任何一个执行的计算机可执行指令,所述计算机可执行指令当被执行时,使所述多个CPU中的执行CPU执行包括以下步骤的操作:基于对应网络数据分组的带宽要求将与所述多个CPU相关联的网络数据分组分组到带宽组中;将与所述多个CPU相关联的所述网络数据分组聚合到无锁排出队列中;以及基于每个网络数据分组的相应长度对所述无锁排出队列执行带宽控制。

K.如段落J所述的系统,其中所述操作还包括:向所述无锁排出队列中当前排队的网络数据分组的对应CPU发送处理器间中断(IPI)以继续处理所述当前排队的网络数据分组。

L.如段落J所述的系统,其中基于预定调度表来选择所述执行CPU。

M.如段落J所述的系统,其中将与所述多个CPU相关联的所述网络数据分组聚合到所述无锁排出队列中包括:以介于每一微秒一次与每两微秒一次之间的速率扫描所述多个CPU中的每个CPU的队列。

N.如段落J所述的系统,其中将与所述多个CPU相关联的所述网络数据分组聚合到所述无锁排出队列中包括:以所述多个CPU的预定次序在所述无锁排出队列中对与所述多个CPU相关联的所述相应的网络数据分组进行排队。

O.如段落J所述的系统,其中基于每个网络数据分组的相应长度对所述无锁排出队列执行所述带宽控制包括使用带宽组专用线程。

P.如段落J所述的系统,还包括:在所述多个CPU中的一个CPU上运行带宽分配线程;以及动态地调整所述带宽组中的每一个的对应最大带宽。

Q.如段落P所述的系统,其中在所述一个CPU上运行所述带宽分配线程包括以每秒一次的速率在所述一个CPU上运行所述带宽分配线程。

R.如段落J所述的系统,其中网络数据分组被保持在对应CPU的无锁队列中。

S.一种计算机可读介质,所述计算机可读介质存储可由系统中的多个CPU中的任何一个执行的计算机可读指令,所述计算机可读指令当被执行时,使所述多个CPU中的执行CPU执行包括以下步骤的操作:基于对应网络数据分组的带宽要求将与所述多个CPU相关联的网络数据分组分组到带宽组中;将与所述多个CPU相关联的所述网络数据分组聚合到无锁排出队列中;以及基于每个网络数据分组的相应长度对所述无锁排出队列执行带宽控制。

T.如段落S所述的计算机可读介质,其中所述操作还包括:向所述无锁排出队列中当前排队的网络数据分组的对应CPU发送处理器间中断(IPI)以继续处理所述当前排队的网络数据分组。

U.如段落S所述的计算机可读介质,其中基于预定调度表来选择所述执行CPU。

V.如段落S所述的计算机可读介质,其中将与所述多个CPU相关联的所述网络数据分组聚合到所述无锁排出队列中包括:以介于每一微秒一次与每两微秒一次之间的速率扫描所述多个CPU中的每个CPU的队列。

W.如段落S所述的计算机可读介质,其中将与所述多个CPU相关联的所述网络数据分组聚合到所述无锁排出队列中包括:以所述多个CPU的预定次序在所述无锁排出队列中对与所述多个CPU相关联的所述相应的网络数据分组进行排队。

X.如段落S所述的计算机可读介质,其中基于每个网络数据分组的相应长度对所述无锁排出队列执行所述带宽控制包括使用带宽组专用线程。

Y.如段落S所述的计算机可读介质,其中所述操作还包括:在所述多个CPU中的一个CPU上运行带宽分配线程;以及动态地调整所述带宽组中的每一个的对应最大带宽。

Z.如段落Y所述的计算机可读介质,其中在所述一个CPU上运行所述带宽分配线程包括以每秒一次的速率在所述一个CPU上运行所述带宽分配线程。

AA.如段落S所述的计算机可读介质,其中网络数据分组被保持在对应CPU的无锁队列中。

结论

尽管已用特定于结构特征和/或方法学行为的语言描述了主题,但是应当理解,所附权利要求书中限定的主题不一定限于所描述的具体特征或行为。相反,具体特征和行为作为实现权利要求的示例性形式被公开。

15页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:压缩、解压缩以太帧的方法和通信设备

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!

技术分类