《深入浅出DPDK》—第1章1.5节软件包处理的潜力——再识DPDK-阿里云开发者社区

开发者社区> 华章出版社> 正文
登录阅读全文

《深入浅出DPDK》—第1章1.5节软件包处理的潜力——再识DPDK

简介: DPDK很好地将IA上包处理的性能提升到一个高度,这个高度已经达到很多网络应用场景的最低要求,使得满足要求的场景下对于网络业务软化产生积极的作用。

本节书摘来自华章出版社《深入浅出DPDK》一书中的第1章,第1.5节软件包处理的潜力——再识DPDK,作者朱河清,梁存铭,胡雪焜,曹水 等,更多章节内容可以访问云栖社区“华章计算机”公众号查看。

1.5 软件包处理的潜力——再识DPDK
DPDK很好地将IA上包处理的性能提升到一个高度,这个高度已经达到很多网络应用场景的最低要求,使得满足要求的场景下对于网络业务软化产生积极的作用。
1.5.1 DPDK加速网络节点
在理解了IA上包处理面临的根本性挑战后,我们会对DPDK所取得的性能提升感到异常兴奋。更令人兴奋的是,按照DPDK所倡导的方法,随着处理器的每一代更新,在IA上的性能提升以很高的斜率不断发酵。当千兆、万兆接口全速转发已不再是问题时,DPDK已将目标伸向百万兆的接口。
DPDK软件包内有一个最基本的三层转发实例(l3fwd),可用于测试双路服务器整系统的吞吐能力,实验表明可以达到220Gbit/s的数据报文吞吐能力。值得注意的是,除了通过硬件或者软件提升性能之外,如今DPDK整系统报文吞吐能力上限已经不再受限于CPU的核数,当前瓶颈在于PCIe(IO总线)的LANE数。换句话说,系统性能的整体I/O天花板不再是CPU,而是系统所提供的所有PCIe LANE的带宽,能插入多少个高速以太网接口卡。
在这样的性能基础上,网络节点的软化就成为可能。对于网络节点上运转的不同形态的网络功能,一旦软化并适配到一个通用的硬件平台,随之一个自然的诉求可能就是软硬件解耦。解耦正是网络功能虚拟化(NFV)的一个核心思想,而硬件解耦的多个网络功能在单一通用节点上的隔离共生问题,是另一个核心思想虚拟化诠释的。当然这个虚拟化是广义的,在不同层面可以有不同的支撑技术。
NFV有很多诉求,业务面高性能,控制面高可用、高可靠、易运维、易管理等。但没有业务面的高性能,后续的便无从谈起。DPDK始终为高性能业务面提供坚实的支撑,除此以外,DPDK立足IA的CPU虚拟化技术和IO的虚拟化技术,对各种通道做持续优化改进的同时,也对虚拟交换(vswitch)的转发面进化做出积极贡献。应对绝对高吞吐能力的要求,DPDK支持各种I/O的SR-IOV接口;应对高性能虚拟主机网络的要求,DPDK支持标准virtio接口;对虚拟化平台的支撑,DPDK从KVM、VMWARE、XEN的hypervisor到容器技术,可谓全平台覆盖。
可以说,在如火如荼的网络变革的大背景下,DPDK以强劲的驱动力加速各种虚拟化的网络功能部署到现实的网络节点上。
1.5.2 DPDK加速计算节点
DPDK之于网络节点,主要集中在数据面转发方面,这个很容易理解;对于计算节点,DPDK也拥有很多潜在的机会。
C10K是IT界的一个著名命题,甚至后续衍生出了关于C1M和C10M的讨论。其阐述的一个核心问题就是,随着互联网发展,随着数据中心接口带宽不断提升,计算节点上各种互联网服务对于高并发下的高吞吐有着越来越高的要求。详见[Ref1-5]。
但是单一接口带宽的提高并不能直接导致高并发、高吞吐服务的发生,即使用到了一系列系统方法(异步非阻塞,线程等),但网络服务受限于内核协议栈多核水平扩展上的不足以及建立拆除连接的高开销,开始逐渐阻碍进一步高并发下高带宽的要求。另一方面,内核协议栈需要考虑更广泛的支持,并不能为特定的应用做特殊优化,一般只能使用系统参数进行调优。
当然,内核协议栈也在不断改进,而以应用为中心的趋势也会不断推动用户态协议栈的涌现。有基于BSD协议栈移植的,有基于多核模型重写的原型设计,也有将整个Linux内核包装成库的。它们大多支持以DPDK作为I/O引擎,有些也将DPDK的一些优化想法加入到协议栈的优化中,取得了比较好的效果。
可以说,由DPDK加速的用户态协议栈将会越来越多地支撑起计算节点上的网络服务。
1.5.3 DPDK加速存储节点
除了在网络、计算节点的应用机会之外,DPDK的足迹还渗透到存储领域。Intel?最近开源了SPDK(Storage Performance Development Kit),一款存储加速开发套件,其主要的应用场景是iSCSI性能加速。目前iSCSI系统包括前端和后端两个部分,在前端,DPDK提供网络I/O加速,加上一套用户态TCP/IP协议栈(目前还不包含在开源包中),以流水线的工作方式支撑起基于iSCSI的应用;在后端,将DPDK用户态轮询驱动的方式实践在NVMe上,PMD的NVMe驱动加速了后端存储访问。这样一个端到端的整体方案,用数据证明了卓有成效的IOPS性能提升。SPDK的详细介绍见:https://01.org/spdk
可以说,理解DPDK的核心方法,并加以恰当地实践,可以将I/O在IA多核的性能提升有效地拓展到更多的应用领域,并产生积极的意义。
1.5.4 DPDK的方法论
DPDK采用了很多具体优化方法来达到性能的提升,有一些是利用IA软件优化的最佳实践方法,还有一些是利用了IA的处理器特性。这里希望脱离这一个个技术细节,尝试着去还原一些核心的指导思想,试图从方法论的角度去探寻DPDK成功背后的原因,但愿这样的方法论总结,可以在开拓未知领域的过程中对大家有所助益。
1.专用负载下的针对性软件优化
专用处理器通过硬件架构专用优化来达到高性能,DPDK则利用通用处理器,通过优化的专用化底层软件来达到期望的高性能。这要求DPDK尽可能利用一切平台(CPU,芯片组,PCIe以及网卡)特性,并针对网络负载的特点,做针对性的优化,以发掘通用平台在某一专用领域的最大能力。
2.追求可水平扩展的性能
利用多核并行计算技术,提高性能和水平扩展能力。对于产生的并发干扰,遵循临界区越薄越好、临界区碰撞越少越好的指导原则。数据尽可能本地化和无锁化,追求吞吐率随核数增加而线性增长。
3.向Cache索求极致的实现优化性能
相比于系统优化和算法优化,实现优化往往较少被提及。实现优化对开发者的要求体现在需要对处理器体系结构有所了解。DPDK可谓集大量的实现优化之大成,而这些方法多数围绕着Cache进行,可以说能娴熟地驾驭好Cache,在追求极致性能的路上就已经成功了一半。
4.理论分析结合实践推导
性能的天花板在哪,调优是否还有空间,是否值得花更多的功夫继续深入,这些问题有时很难直接找到答案。分析、推测、做原型、跑数据、再分析,通过这样的螺旋式上升,慢慢逼近最优解,往往是实践道路上的导航明灯。条件允许下,有依据的理论量化计算,可以更可靠地明确优化目标。

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

分享:

华章出版社

官方博客
官网链接