当前位置: 首页 > 专利查询>红帽公司专利>正文

针对用户空间分组处理的高效队列存取制造技术

技术编号:38987446 阅读:17 留言:0更新日期:2023-10-07 10:18
本公开涉及针对用户空间分组处理的高效队列存取。一种示例方法可以包括:确定与第一输入/输出(I/O)队列处置线程相关联的抢占标志是否等于指示对所述第一I/O队列处置线程的抢占即将发生的第一值,其中所述第一I/O队列处置线程正在第一处理器上执行,所述第一I/O队列处置线程与一个或多个队列标识符的第一集合相关联,并且每个队列标识符标识正由所述第一I/O队列处置线程处置的队列;以及响应于确定所述抢占标志等于所述第一值,将一个或多个队列标识符的所述第一集合转移到正在第二处理器上执行的第二I/O队列处置线程。转移队列标识符的所述第一集合可以包括从所述第一集合中移除所述一个或多个队列标识符。集合中移除所述一个或多个队列标识符。集合中移除所述一个或多个队列标识符。

【技术实现步骤摘要】
针对用户空间分组处理的高效队列存取


[0001]本公开总体上涉及计算机联网,并且更具体地涉及针对用户空间分组处理的高效队列存取。

技术介绍

[0002]数字通信网络使得计算机系统能够通过可以使用物理链路或无线链路的互连彼此通信。计算机系统可以将数据分成数据相对较小的分组(packet),每个分组包含该数据的一部分。计算机系统可以将可以通过通信网络更有效和可靠地传输的每个分组传输到目的地计算机系统。每个分组可以包括诸如源地址、目的地地址、长度和有效载荷(payload)的信息,该有效载荷是包括在该分组中的数据的部分。计算机系统可以使用网络接口控制器(NIC)传输每个分组,该网络接口控制器可以例如经由电缆将计算机系统连接到有线网络,或者例如经由天线将其连接到无线网络。每个分组可以根据通信协议经由通过网络的路由被发送到目的地计算机系统。协议可以包括指定如何经由网络发送信息的一组规则。例如,因特网协议(IP)和传输控制协议(TCP)指定了如何经由因特网将分组从源计算机系统发送到目的计算机系统。
附图说明
[0003]本公开通过示例而非限制的方式说明,并且当结合附图考虑时,参考以下详细描述可以更全面地理解本公开,其中:
[0004]图1描绘了根据本公开的一个或多个方面的使得用户空间应用能够高效地存取多个接收队列的示例计算系统的高级框图;
[0005]图2描绘了示出根据本公开的一个或多个方面的在抢占第一线程之前,队列处置从第一线程到第二线程的示例转移的交互图;
[0006]图3描绘了示出根据本公开的一个或多个方面的在抢占第一线程之前,队列处置从第一线程到第二线程的转移中所涉及的示例抢占标志和处置的队列列表的交互图;
[0007]图4描绘了根据本公开的一个或多个方面的用于管理线程抢占标志的示例方法的流程图;
[0008]图5描绘了根据本公开的一个或多个方面的用于在抢占第一线程之前将队列处置从第一线程转移到第二线程的示例方法的流程图;
[0009]图6和图7描绘了根据本公开的一个或多个方面的示例计算机系统的框图;以及
[0010]图8描绘了根据本公开的示例操作的说明性计算设备的框图。
具体实施方式
[0011]本文描述了针对用户空间分组处理的高效队列存取的系统和方法。计算机系统可以从网络接收分组形式的数据。分组可以由网络接口控制器(NIC)接收,该NIC可以使每个接收到的分组被存储在接收队列中。NIC可以触发向操作系统内核通知该分组的到达的中
断,并且操作系统内核可以例如通过以下方式来处理该分组:使分组被递送到对该分组执行进一步处理的网络协议栈。当该分组被网络协议栈处理时可能发生额外的内核中断,该处理的部分可以在用户空间中而不是由内核执行。该分组中的数据最终被递送到应用。
[0012]然而,中断该操作系统内核、在内核中执行分组处理操作、以及在内核空间和用户空间之间切换可能降低系统性能,例如,由于触发和处理中断所涉及的时间、以及内核用来处理分组而不是执行其他任务所使用的时间。可以使用旁路(bypass)内核的可替代性分组处理技术来改善分组处理性能。例如,内核旁路技术可以在不中断内核的情况下将传入的分组传递到用户空间进程(process)。内核旁路应用在用户空间中运行并且与NIC相关联。内核旁路应用可以针对传入分组而轮询一个或多个接收队列。如果传入分组到达,则轮询操作检测该分组,并且该分组可以被内核旁路应用和用户空间网络堆栈在用户空间中处理。用户空间网络堆栈可以使用计算机系统的多个处理器核(例如,CPU)来处理分组,并且NIC可以具有多个硬件接收队列。
[0013]NIC可以例如使用接收侧缩放(RSS)将每个接收到的分组分配给硬件接收队列之一。通过使用RSS,NIC可以将每个接收到的分组存储在基于该分组的源和目的地地址信息的散列而标识的硬件接收队列中。内核旁路应用可以分配一组用户空间接收队列,例如,为每个硬件接收队列分配一个用户空间接收队列。作为示例,内核旁路应用可以使用数据平面开发套件(DPDK)库来实现,该DPDK库以库的形式提供程序代码。内核旁路应用可以与该库交互以将分组出队(dequeue)并在用户空间中进一步处理分组。
[0014]作为示例,每个用户空间队列可以对应于处理器核之一。此外,内核旁路应用可以分配在用户空间中执行并处理来自用户空间接收队列的分组的一组处理线程(thread)。然而,确定适当数量的处理线程是一个困难的问题。使用太少的处理线程可能导致次优的吞吐量,例如,如果系统大部分是空闲的。使用太多的处理线程也可能导致效率低下。例如,可以为每个用户空间接收队列分配单独的线程。在这种情况下,当多个应用竞争核时,如果操作系统中断暂停了正处于转发分组进程的线程的执行,则该分组可能在大量时间内保持未被处理,从而阻塞(block)队列或导致分组重新排序。
[0015]另一种可能的解决方案是专用一个或多个处理器来处理来自接收队列的分组。然而,使处理器专用于执行分组处理引入了管理复杂性,并且可能难以确定适当数量的处理器,例如在一个处理器不足以处置分组处理负载的情况下。此外,将处理器专用于分组处理可能导致处理器的利用不足或过度利用,因为专用处理器在可能利用可用处理器资源的其他任务之间没有被复用。
[0016]本公开的各方面通过提供一种队列管理系统来解决上述和其他缺陷,该队列管理系统使得在第一处理器上执行的第一队列处置线程能够响应于确定对第一线程的抢占(preemption)即将发生,而将一个或多个输入/输出队列的处理高效地转移到在第二处理器上执行的第二队列处置线程。例如,如果线程将在阈值时间量内被操作系统抢占,则对该线程的抢占可能是即将到来的。对线程的抢占可以由操作系统执行,并且使得被抢占的线程等待一段时间,而执行可能与队列处理无关的另一任务的另一线程在曾在执行被抢占的线程的处理器上执行。被抢占的线程可以在随后的时间恢复执行,但是如果线程被抢占了大量时间,则该抢占可以降低该线程的性能并且潜在地导致分组被丢弃(drop)。例如,如果处理器正被许多线程使用,或者例如被具有比被抢占的线程更高的优先级的线程使用,则
线程可以被抢占大量时间。
[0017]队列管理系统可以包括队列存取管理器线程,该队列存取管理器线程可以在指定处理器上执行并且识别抢占即将到来的第一线程。然后,队列存取管理器线程可以使与第一线程相关联的抢占标志(flag)置位。第一线程可以在执行某些操作之前(例如,在轮询队列之前或在将分组从队列中出队之前)检查抢占标志。在确定了与第一线程相关联的抢占标志已被置位时,第一线程可以将其正在处置的队列转移到具有未被置位的抢占标志的第二线程。第二线程可以在与第一线程不同的处理器上,因此队列处置可以在第二处理器上继续,同时第一线程被抢占并等待恢复执行。“处置(handle)”队列在本文中应指将分组从队列中出队并对出队的分组执行操作,诸如将出队的分组传递到其他系统组件以进行进一步处理。队列处置线程可以针对分组而轮询每个队列本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种系统,包括:存储器设备,所述存储器设备包括一组存储器单元;以及处理设备,所述处理设备可操作地耦合到所述存储器设备,以执行操作,所述操作包括:确定与第一输入/输出(I/O)队列处置线程相关联的抢占标志是否等于指示对所述第一I/O队列处置线程的抢占即将发生的第一值,其中所述第一I/O队列处置线程正在第一处理器上执行,其中所述第一I/O队列处置线程与一个或多个队列标识符的第一集合相关联,并且其中每个队列标识符标识正由所述第一I/O队列处置线程处置的队列;以及响应于确定所述抢占标志等于所述第一值,将一个或多个队列标识符的所述第一集合转移到正在第二处理器上执行的第二I/O队列处置线程。2.根据权利要求1所述的系统,其中确定与第一I/O队列处置线程相关联的抢占标志是否等于第一值是在将分组从一个或多个队列标识符的所述第一集合中的队列标识符所标识的队列中出队之前执行的。3.根据权利要求1所述的系统,其中一个或多个队列标识符的所述第一集合经由所述第一I/O队列处置线程和所述第二I/O队列处置线程可存取的共享存储器而被转移到所述第二I/O队列处置线程。4.根据权利要求1所述的系统,其中将一个或多个队列标识符的所述第一集合转移到所述第二I/O队列处置线程包括:将所述一个或多个队列标识符添加到与所述第二I/O队列处置线程相关联的队列标识符的第二集合。5.根据权利要求1所述的系统,其中将一个或多个队列标识符的所述第一集合转移到所述第二I/O队列处置线程包括:从正由所述第一I/O队列处置线程处置的队列标识符的所述第一集合移除所述一个或多个队列标识符。6.根据权利要求1所述的系统,其中存储在共享存储器中的队列映射数据结构包括一个或多个队列

线程关联条目,每个队列

线程关联条目将特定队列标识符与特定I/O队列处置线程相关联,并且其中将一个或多个队列标识符的所述第一集合转移到所述第二I/O队列处置线程包括:识别将指定队列标识符与所述第一I/O队列处置线程相关联的每个队列

线程关联条目;以及更新每个所识别的队列

线程关联,以将所述指定队列标识符与所述第二I/O队列处置线程相关联。7.根据权利要求1所述的系统,所述操作还包括:响应于确定所述抢占标志等于指示对所述第一I/O队列处置线程的抢占并非即将发生的第二值,将一个或多个分组从所述队列标识符中的至少一个队列标识符所标识的至少一个队列中出队;以及处理一个或多个出队的分组。8.根据权利要求1所述的系统,所述操作还包括:确定要由操作系统在所述第一处理器上运行的一系列线程已改变;以及响应于确定所述一系列线程已改变,向管理器线程发送通知,其中所述通知指示所述管理器线程确定对所述第一I/O队列处置线程的抢占是否即将发生。
9.一种存储指令的非暂时性机器可读存储介质,所述指令在被执行时使计算机系统执行操作,所述操作包括:确定与第一输入/输出(I/O)队列处置线程相关联的抢占标志是否等于指示对所述第一I/O队列处置线程的抢占即将发生的第一值,其中所述第一I/O队列处置线程正在第一处理器上执行,其中所述第一I/O队列处置线程与一个或多个队列标识符的第一集合相关联,并且其中每个队列标识符标识正由所述第一I/O队列处置线程处置的队列;以及响应于确定所述抢占标志等于所述第一值,将一个或多个队列标识符的所述第一集合转移到正在第二处理器上执行的第二I/O队列处置线程。10.根据权利要求9所述的非暂时性机器...

【专利技术属性】
技术研发人员:M齐尔金
申请(专利权)人:红帽公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1