《深入浅出DPDK》—第1章1.1节认识DPDK

第一部分 Part 1
DPDK基础篇
软件正在统治整个世界。
——马克·安德森
本书的开始部分会重点介绍DPDK诞生的背景、基本概念、核心算法,并结合实例讲解各种基于IA平台的数据面优化技术,包括相关的网卡加速技术。希望可以帮助初次接触DPDK的读者全面了解DPDK,为后面的阅读打下基础。

第1章 认识DPDK
什么是DPDK?对于用户来说,它可能是一个性能出色的包数据处理加速软件库;对于开发者来说,它可能是一个实践包处理新想法的创新工场;对于性能调优者来说,它可能又是一个绝佳的成果分享平台。当下火热的网络功能虚拟化,则将DPDK放在一个重要的基石位置。虽然很难用短短几语就勾勒出DPDK的完整轮廓,但随着认识的深入,我们相信你一定能够认可它传播的那些最佳实践方法,从而将这些理念带到更广泛的多核数据包处理的生产实践中去。
DPDK最初的动机很简单,就是证明IA多核处理器能够支撑高性能数据包处理。随着早期目标的达成和更多通用处理器体系的加入,DPDK逐渐成为通用多核处理器高性能数据包处理的业界标杆。
1.1 主流包处理硬件平台
DPDK用软件的方式在通用多核处理器上演绎着数据包处理的新篇章,而对于数据包处理,多核处理器显然不是唯一的平台。支撑包处理的主流硬件平台大致可分为三个方向。

  • 硬件加速器
  • 网络处理器
  • 多核处理器

根据处理内容、复杂度、成本、量产规模等因素的不同,这些平台在各自特定的领域都有一定的优势。硬件加速器对于本身规模化的固化功能具有高性能低成本的特点,网络处理器提供了包处理逻辑软件可编程的能力,在获得灵活性的同时兼顾了高性能的硬件包处理,多核处理器在更为复杂多变的高层包处理上拥有优势,随着包处理的开源生态系统逐渐丰富,以及近年来性能的不断提升,其为软件定义的包处理提供了快速迭代的平台。参见[Ref1-2]。
随着现代处理器的创新与发展(如异构化),开始集成新的加速处理与高速IO单元,它们互相之间不断地融合。在一些多核处理器中,已能看到硬件加速单元的身影。从软件包处理的角度,可以卸载部分功能到那些硬件加速单元进一步提升性能瓶颈;从硬件包处理的流水线来看,多核上运行的软件完成了难以固化的上层多变逻辑的任务;二者相得益彰。
1.1.1 硬件加速器
硬件加速器被广泛应用于包处理领域,ASIC和FPGA是其中最广为采用的器件。
ASIC(Application-Specific Integrated Circuit)是一种应特定用户要求和特定电子系统的需要而设计、制造的集成电路。ASIC的优点是面向特定用户的需求,在批量生产时与通用集成电路相比体积更小、功耗更低、可靠性提高、性能提高、保密性增强、成本降低等。但ASIC的缺点也很明显,它的灵活性和扩展性不够、开发费用高、开发周期长。
为了弥补本身的一些缺点,ASIC越来越多地按照加速引擎的思路来构建,结合通用处理器的特点,融合成片上系统(SoC)提供异构处理能力,使得ASIC带上了智能(Smart)的标签。
FPGA(Field-Programmable Gate Array)即现场可编程门阵列。它作为ASIC领域中的一种半定制电路而出现,与ASIC的区别是用户不需要介入芯片的布局布线和工艺问题,而且可以随时改变其逻辑功能,使用灵活。FPGA以并行运算为主,其开发相对于传统PC、单片机的开发有很大不同,以硬件描述语言(Verilog或VHDL)来实现。相比于PC或单片机(无论是冯·诺依曼结构还是哈佛结构)的顺序操作有很大区别。
全可编程FPGA概念的提出,使FPGA朝着进一步软化的方向持续发展,其并行化整数运算的能力将进一步在通用计算定制化领域得到挖掘,近年来在数据中心中取得了很大进展,比如应用于机器学习场合。我们预计FPGA在包处理的应用场景将会从通信领域(CT)越来越多地走向数据中心和云计算领域。
1.1.2 网络处理器
网络处理器(Network Processer Unit,NPU)是专门为处理数据包而设计的可编程通用处理器,采用多内核并行处理结构,其常被应用于通信领域的各种任务,比如包处理、协议分析、路由查找、声音/数据的汇聚、防火墙、QoS等。其通用性表现在执行逻辑由运行时加载的软件决定,用户使用专用指令集即微码(microcode)进行开发。其硬件体系结构大多采用高速的接口技术和总线规范,具有较高的I/O能力,使得包处理能力得到很大提升。除了这些特点外,NPU一般还包含多种不同性能的存储结构,对数据进行分类存储以适应不同的应用目的。NPU中也越来越多地集成进了一些专用硬件协处理器,可进一步提高片内系统性能。
图1-1是NP-5处理器架构框图,以EZCHIP公司的NP-5处理器架构为例,TOP部分为可编程部分,根据需要通过编写微码快速实现业务相关的包处理逻辑。NPU拥有高性能和高可编程性等诸多优点,但其成本和特定领域的特性限制了它的市场规模(一般应用于专用通信设备)。而不同厂商不同架构的NPU遵循的微码规范不尽相同,开发人员的成长以及生态系统的构建都比较困难。虽然一些NPU的微码也开始支持由高级语言(例如C)编译生成,但由于结构化语言本身原语并未面向包处理,使得转换后的效率并不理想。

随着SDN对于可编程网络,特别是可编程数据面的要求,网络处理器也可能会迎来新的发展机遇,但依然需要解决好不同架构的底层抽象以及上层业务的语义抽象。
1.1.3 多核处理器
现代CPU性能的扩展主要通过多核的方式进行演进。这样利用通用处理器同样可以在一定程度上并行地处理网络负载。由于多核处理器在逻辑负载复杂的协议及应用层面上的处理优势,以及越来越强劲的数据面的支持能力,它在多种业务领域得到广泛的采用。再加上多年来围绕CPU已经建立起的大量成熟软件生态,多核处理器发展的活力和热度也是其他形态很难比拟的。图1-2是Intel双路服务器平台框图,描述了一个典型的双路服务器平台的多个模块,CPU、芯片组C612、内存和以太网控制器XL710构成了主要的数据处理通道。基于PCIe总线的I/O接口提供了大量的系统接口,为服务器平台引入了差异化的设计。
当前的多核处理器也正在走向SoC化,针对网络的SoC往往集成内存控制器、网络控制器,甚至是一些硬件加速处理引擎。
这里列出了一些主流厂商的多核处理器的SoC平台。

  • IA multi-core Xeon
  • Tilear-TILE-Gx
  • Cavium Network-OCTEON & OCTEON II
  • Freescale-QorIQ
  • NetLogic Microsystem-XLP

    图1-3的Cavium OCTEON处理器框图以Cavium OCTEON多核处理器为例,它集成多个

    CPU核以及众多加速单元和网络接口,组成了一个片上系统(SoC)。在这些SoC上,对于可固化的处理(例如,流分类,QoS)交由加速单元完成,而对于灵活的业务逻辑则由众多的通用处理器完成,这种方式有效地融合了软硬件各自的优势。随着软件(例如,DPDK)在I/O性能提升上的不断创新,将多核处理器的竞争力提升到一个前所未有的高度,网络负载与虚拟化的融合又催生了NFV的潮流。
    更多内容请参考相关Cavium和Ezchip的信息([Ref1-3]和[Ref1-4])。

时间: 2024-07-29 19:47:26

《深入浅出DPDK》—第1章1.1节认识DPDK的相关文章

《深入浅出DPDK》—第1章1.2节初识DPDK

1.2 初识DPDK 本书介绍DPDK,主要以IA(Intel Architecture)多核处理器为目标平台.在IA上,网络数据包处理远早于DPDK而存在.从商业版的Windows到开源的Linux操作系统,所有跨主机通信几乎都会涉及网络协议栈以及底层网卡驱动对于数据包的处理.然而,低速网络与高速网络处理对系统的要求完全不一样. 1.2.1 IA不适合进行数据包处理吗 以Linux为例,传统网络设备驱动包处理的动作可以概括如下: 数据包到达网卡设备. 网卡设备依据配置进行DMA操作. 网卡发送

《深入浅出DPDK》—第1章1.7节实例

1.7 实例在对DPDK的原理和代码展开进一步解析之前,先看一些小而简单的例子,建立一个形象上的认知.1)helloworld,启动基础运行环境,DPDK构建了一个基于操作系统的,但适合包处理的软件运行环境,你可以认为这是个mini-OS.最早期DPDK,可以完全运行在没有操作系统的物理核(bare-metal)上,这部分代码现在不在主流的开源包中.2)skeleton,最精简的单核报文收发骨架,也许这是当前世界上运行最快的报文进出测试程序.3)l3fwd,三层转发是DPDK用于发布性能测试指标

《深入浅出DPDK》—第2章2.5节Cache预取

2.5 Cache预取以上章节讲到了多种和Cache相关的技术,但是事实上,Cache对于绝大多数程序员来说都是透明不可见的.程序员在编写程序时不需要关心是否有Cache的存在,有几级Cache,每级Cache的大小是多少:不需要关心Cache采取何种策略将指令和数据从内存中加载到Cache中:也不需要关心Cache何时将处理完毕的数据写回到内存中.这一切,都是硬件自动完成的.但是,硬件也不是完全智能的,能够完美无缺地处理各种各样的情况,保证程序能够以最优的效率执行.因此,一些体系架构引入了能够

《Google软件测试之道》—第2章2.2节测试认证

本节书摘来自异步社区<Google软件测试之道>一书中的第2章2.2节测试认证,作者[美]James Whittaker , Jason Arbon , Jeff Carollo,更多章节 2.2 测试认证 Patrick Copeland在本书的序中强调了让开发人员参与测试的难度.招聘到技术能力强的测试人员只是刚刚开始的第一步,我们依然需要开发人员参与进来一起做测试.其中我们使用的一个 关键方法就是被称为"测试认证"(译注:Test Certified)的计划.现在回过头

dpdk-如何在DPDK中使用fork子进程的方式将DPDK配置到多个核上去

问题描述 如何在DPDK中使用fork子进程的方式将DPDK配置到多个核上去 在l2fwd中的演示程序里,将DPDK配置到两个核上,提高收发包的效率,这样可以吗,请教一下如何去做,谢谢谢,望了解的即时告诉我,谢谢谢!!急! 有可能我没有吧问题说明白,请在下留言,我会即时联系您! 解决方案 http://www.cnblogs.com/zzqcn/p/4024205.html

《深入浅出DPDK》—第3章3.1节并行计算

第3章 并 行 计 算 处理器性能提升主要有两个途径,一个是提高IPC(每个时钟周期内可以执行的指令条数),另一个是提高处理器主频率.每一代微架构的调整可以伴随着对IPC的提高,从而提高处理器性能,只是幅度有限.而提高处理器主频率对于性能的提升作用是明显而直接的.但一味地提高频率很快会触及频率墙,因为处理器的功耗正比于主频的三次方. 所以,最终要取得性能提升的进一步突破,还是要回到提高IPC这个因素.经过处理器厂商的不懈努力,我们发现可以通过提高指令执行的并行度来提高IPC.而提高并行度主要有两

《深入浅出DPDK》—第2章2.6节Cache一致性

2.6 Cache一致性 我们知道,Cache是按照Cache Line作为基本单位来组织内容的,其大小是32(较早的ARM.1990年-2000年早期的x86和PowerPC).64(较新的ARM和x86)或128(较新的Power ISA机器)字节.当我们定义了一个数据结构或者分配了一段数据缓冲区之后,在内存中就有一个地址和其相对应,然后程序就可以对它进行读写.对于读,首先是从内存加载到Cache,最后送到处理器内部的寄存器:对于写,则是从寄存器送到Cache,最后通过内部总线写回到内存.这

《深入浅出DPDK》—第1章1.8节小结

1.8 小结什么是DPDK?相信读完本章,读者应该对它有了一个整体的认识.DPDK立足通用多核处理器,经过软件优化的不断摸索,实践出一套行之有效的方法,在IA数据包处理上取得重大性能突破.随着软硬件解耦的趋势,DPDK已经成为NFV事实上的数据面基石.着眼未来,无论是网络节点,还是计算节点,或是存储节点,这些云服务的基础设施都有机会因DPDK而得到加速.在IT和CT不断融合的过程中,在运营商网络和数据中心网络持续SDN化的过程中,在云基础设施对数据网络性能孜孜不倦的追求中,DPDK将扮演越来越重

《深入浅出DPDK》—第3章3.2节指令并发与数据并行

3.2 指令并发与数据并行前面我们花了较大篇幅讲解多核并发对于整体性能提升的帮助,从本节开始,我们将从另外一个维度--指令并发,站在一个更小粒度的视角,去理解指令级并发对于性能提升的帮助.3.2.1 指令并发现代多核处理器几乎都采用了超标量的体系结构来提高指令的并发度,并进一步地允许对无依赖关系的指令乱序执行.这种用空间换时间的方法,极大提高了IPC,使得一个时钟周期完成多条指令成为可能.图3-6中Haswell微架构流水线是Haswell微架构的流水线参考,从中可以看到Scheduler下挂了