【GHS】分析核亲和性对高吞吐量的流的影响

编程开发   © 文章版权由 admin 解释,禁止匿名转载

#楼主# 2020-12-30

简介 网络吞吐量正在朝更高的数据传输率发展,与此同时,终端系统的处理器也在朝着多核发展。为了在多核终端系统上优化高速数据传输,像网络适配器卸载以及性能调优等技术已经受到了广泛的关注。此外,已经出现了一些多线程网络接收处理的方法。但对于如何调参,以及使用哪个卸载才能达到更高的性能的关注度远远不够,而且对于为什么这么设定的理解也远远不足。本论文会结合前人的研究成果来跟踪高速TCP流下,终端系统出现性能瓶颈的源头。 出于本论文的目的,我们认为协。议处理效率是指实现每单位(以Gbps为单位)吞吐量所消耗的系统资源(例如CPU和缓存),并使用低级系统事件计数器测量消耗的各种系统资源的总量。亲和性或核绑定用于决定终端系统上负责处理中断,网络和应用的处理核。我们得出亲和性对协议处理的效率会产生至关重要的影响,三种不同的亲和性方案下网络接收处理的性能瓶颈会发生急剧变化。 ### 介绍 由于多种物理限制,处理器内核达到了时钟速度的“极限”,此时CPU时钟频率将无法增加。而另一方面,光纤网络中的数据速率却在不断提高,更好的光学和精密设备改善了散射,吸收和离散的物理事实[1]。尽管物理层取得了这些进步,但我们仍然受到用于协议处理的系统软件层面的限制。因此,为了提高应用层的网络吞吐量,高效的协议处理和适当的系统层面的调优是必要的。 TCP是一种可靠的,面向连接的协议,它会保证发送者到接收者之间的数据的顺序,这样做会将大部分协议处理推到终端系统上。实现TCP协议的功能需要一定程度的复杂性,因为它是一个端到端协议,因此所有功能都需要在端系统中进行检测。这样,提升现有TCP实现效率的途径分为两类:首先,使用卸载尝试将TCP功能放到协议栈之下,以此来达到更好的传输层效率;其次,通过调参,但这些参数会给上层(软件,系统和系统管理)带来复杂性。 调参主要关注亲和性。亲和性(或核绑定)从根本上说是关于在网络多处理器系统中的哪个处理器上使用哪些资源的决定。Linux网络接收处理消息在现代系统上主要有两种实现方式:首先通过中断处理(通常会联合处理)
,一旦NIC接收到特定数量的报文后,就会向处理器发起中断,然后NIC会通过DMA将报文传输到处理器(*应该是先将报文放到DMA,然后再向处理器发起中断*),随后NIC驱动核OS内核会继续协议处理,直到给应用准备好数据;其次,通过NIC轮询(在Linux中称为NEW API,NAPI),这种方式下,内核会轮询NIC来检查是否有需要接收的网络数据,如果存在,则内核将根据传输层协议处理数据,以便根据socketAPI将数据将数据传递给应用程序。不论哪种方式,都存在两类亲和性:1)流亲和性,用于确定那个核将会中断处理网络流;2)应用亲和性,用于确定哪个核会执行接收网络数据的应用进程。流亲和性通过`/proc/irq//smp affinity`中的十六进制核描述符进行设置,而应用亲和性可以通过`taskset`或类似的工具进行设置。因此一个12核的终端系统,存在144种(12^2)可能的流和应用亲和性。 在本论文中,我们将通过详细的实验扩展先前的工作[3],[4],使用单个高速TCP流对每个亲和性组合进行压力测试。我们会使用终端系统的性能内省来理解选择的亲和性对接收系统效率的影响。我们可以得出有三种不同的亲和性场景,且每种场景下的性能瓶颈差异很大。 ### 相关工作 目前已有多项研究评估了多核系统中的网络I/O性能[5]–[8]。当前内核中一个主要的提升是默认启用NAPI [9]。NAPI用于解决接收活锁问题[8],即CPU消耗大量周期来处理中短。

成为第一个回答人

评论

登录后才可发表内容
  • 主题

    106

  • 帖子

    82

  • 关注者

    0

Copyright © 2019 凯特网.   Powered by HYBBS 2.3.4  

Runtime:1.7692s Mem:2053Kb