当前位置:主页 > 计算机电子书 > 其它 > DPDK技术下载
DPDK应用基础

DPDK应用基础 PDF 高清版

  • 更新:2024-03-29
  • 大小:44.5 MB
  • 类别:DPDK技术
  • 作者:唐宏
  • 出版:人民邮电出版社
  • 格式:PDF

  • 资源介绍
  • 学习心得
  • 相关内容

《DPDK应用基础》是一本值得推荐的书籍,本书主要介绍了DPDK的应用及其在计算机视觉、语音识别、自然语言处理等领域的相关应用,书中详细介绍了深度学习的核心算法,对于想了解和深入研究这些领域的读者具有一定的参考价值,无论是对于专业人士还是对于普通读者,本书都能提供全面而深入的知识讲解,帮助读者更好地理解DPDK应用的基础知识,对于对此感兴趣的小伙伴们来说,这本书是不可多得的一本参考书。

DPDK应用基础

DPDK应用基础电子书封面

读者评价

为了学习和运用dpvs,先研究dpdk,网上只有英文文档,先通过中文的入门下,后面解读才轻松些,dpdk什么的中文资料太少,这本还可以。

这本书只能说第二部分的测试报告还有那么一点用

比较简单,但是介绍的比较全面,有了一个整体的了解

这本书很好的讲了DPDK在NFV中的应用,权威,详实,很受启发。研究DPDK真的不能错过这本书

大牛写的书,对我的帮助很大。文字深入浅出,读完基本可对DPDK应用的技术和实践经验有一个大致的认识,入门利器,且是人邮出版,质量无忧!

内容介绍

本书不仅深入浅出地介绍了DPDK的基础原理和安装调试方法,还详细介绍了DPDK在NFV中的应用场景和测试方法,并叙述了DPDK应用开发的技术细节和实践经验,是DPDK的入门必读,是了解NFV加速转发技术的绝佳指南。

目录

  • 第一部分 基础原理
  • 第 1 章 背景概述 3
  • 11 产业背景 3
  • 111 x86 架构性能分析4
  • 112 NFV 中的网络转发性能分析5
  • 113 DPDK 的引入7
  • 114 本书范围 8
  • 12 DPDK 开源社区 9
  • 121 社区起源 9
  • 122 社区网站 10
  • 13 DPDK 源代码 11
  • 131 版本总述 11
  • 132 最新版本特性介绍12
  • 参考文献 13
  • 第 2 章 DPDK 技术简介 14
  • 21 软件架构 14
  • 22 巨页技术 16
  • 23 轮询技术 16
  • 24 CPU 亲和技术 16
  • 25 DPDK 性能影响因素 17
  • 251 硬件结构 17
  • 252 OS 版本及其内核18
  • 253 OVS 性能问题 20
  • 254 内存管理 20
  • 255 CPU 核间无锁通信 22
  • 256 目标 CPU 类型的正确设置 22
  • 第 3 章 DPDK 库函数 23
  • 31 EAL 库 24
  • 311 内核初始化与启动24
  • 312 内存 25
  • 313 多线程与亲和性25
  • 32 Ring 库 26
  • 321 单消费者入队 26
  • 322 单消费者出队 28
  • 33 Mempool 库  29
  • 34 mbuf 库  30
  • 341 数据存储 30
  • 342 缓冲区分配与释放31
  • 343 相关操作 31
  • 35 PMD 驱动 31
  • 351 需求与设计 31
  • 352 配置 32
  • 36 IVSHMEM 库 32
  • 361 API 概述  33
  • 362 环境配置 34
  • 37 Timer 库 34
  • 38 LPM 库 34
  • 381 API 概述  35
  • 382 实现说明 35
  • 39 Hash 库 36
  • 391 API 概述  36
  • 392 实现说明 36
  • 310 多进程支持 37
  • 3101 内存共享 38
  • 3102 局限性 38
  • 参考文献 39
  • 第 4 章 DPDK 安装与部署 40
  • 41 系统要求 40
  • 411 BIOS 设置要求 40
  • 412 DPDK 编译要求 40
  • 413 运行 DPDK 应用程序要求41
  • 42 使用源代码编译 DPDK 43
  • 421 安装 DPDK 安装包43
  • 422 安装 DPDK 目标环境43
  • 423 查看已安装的 DPDK 环境44
  • 424 启用 DPDK 用户空间 I/O 的模块44
  • 425 加载 VFIO 模块 45
  • 426 在内核模块绑定/解除网络端口45
  • 43 编译和运行示例应用程序46
  • 431 编译示例应用程序46
  • 432 运行示例应用程序47
  • 433 应用程序的逻辑核使用47
  • 434 应用程序巨页内存使用48
  • 435 其他应用示例程序48
  • 436 测试应用程序 48
  • 44 启用其他功能 49
  • 441 高精度事件计时器(HPET)功能49
  • 442 无权限运行 DPDK 应用程序49
  • 443 电源管理和节能功能50
  • 444 核隔离功能 50
  • 445 加载 DPDK KNI 内核模块50
  • 446 IOMMU 功能 51
  • 447 小数据分组高速转发功能51
  • 45 快速启动设置脚本 52
  • 451 脚本组织结构 52
  • 452 使用场景 53
  • 第 5 章 DPDK 自带应用软件调试54
  • 51 命令行应用例 54
  • 511 概述 54
  • 512 应用例编译 55
  • 513 应用例运行 55
  • 514 代码说明 55
  • 52 HelloWorld 应用例 56
  • 521 应用例编译 57
  • 522 运行应用例 57
  • 523 代码说明 57
  • 53 L2 转发应用例  58
  • 531 概述 58
  • 532 编译 59
  • 533 运行 59
  • 534 代码说明 60
  • 54 L3 转发应用例  65
  • 541 概述 65
  • 542 L3 转发应用例编译65
  • 543 L3 转发应用例运行65
  • 544 代码说明 66
  • 55 负载均衡应用例 69
  • 551 概述 69
  • 552 编译与运行 70
  • 553 代码说明 70
  • 56 QoS 调度应用例 72
  • 561 QoS 调度应用例概述72
  • 562 QoS 调度应用例编译72
  • 563 QoS 调度应用例运行73
  • 564 应用例代码说明 75
  • 57 定时器应用例 76
  • 571 应用例编译与运行76
  • 572 应用例代码说明 76
  • 58 分发器应用例 78
  • 581 概述 78
  • 582 分发器应用例编译79
  • 583 分发器应用例运行79
  • 584 分发器应用例代码说明79
  • 585 调试与统计信息 80
  • 参考文献 80
  • 第二部分 DPDK 应用与测试
  • 第 6 章 DPDK 在 NFV 的应用和相关测试方法 83
  • 61 DPDK 在 NFV 中的应用场景 83
  • 611 x86 服务器上的应用83
  • 612 虚拟机+OVS 的应用84
  • 613 虚拟机+SR-IOV 技术的应用86
  • 62 NFV 场景下的测试方法  87
  • 621 测试拓扑 87
  • 622 测试标准 88
  • 623 测试平台说明 89
  • 第 7 章 DPDK 专项测试与结论 92
  • 71 测试用例介绍 92
  • 72 专项测试详情 93
  • 721 x86 服务器三层转发测试93
  • 722 SR-IOV 测试 108
  • 723 OVS 测试 126
  • 第三部分 DPDK 应用开发及实例解析
  • 第 8 章 DPDK 应用开发基础 135
  • 81 网卡设备 135
  • 811 设备驱动 135
  • 812 应用接口 136
  • 813 设备接口 137
  • 82 进程 145
  • 821 线程 145
  • 822 单进程 146
  • 823 多进程 147
  • 参考文献 149
  • 第 9 章 vDPI 应用实例 150
  • 91 DPI 简介  150
  • 92 总体设计 151
  • 921 模型设计 151
  • 922 组件设计151
  • 93 实现方案设计 152
  • 94 基于 l3fwd 的实现方案 153
  • 941 DPDK 以太网接口 153
  • 942 DPI 以太网接口 154
  • 943 DPDK 与 DPI 的数据接口转换155
  • 944 代码解析 155
  • 95 基于 pipeline 的实现方案 157
  • 96 实例运行及性能测试 158
  • 参考文献 159
  • 第 10 章 mTCP 和 BRAS 应用实例 160
  • 101 mTCP 案例解析 160
  • 1011 mTCP 简介  160
  • 1012 mTCP 应用解析 161
  • 102 BRAS 案例解析  165 1021 BRAS 简介  165
  • 1022 BRAS 应用解析 166
  • 参考文献 168
  • 附录
  • 附录一 操作系统服务关闭说明 171
  • 附录二 操作系统安装 172
  • 附录三 DPDK 编译 173
  • 附录四 操作系统启动参数 174
  • 附录五 l3fwd 程序编译  175
  • 附录六 l3fwd 启动配置  178
  • 附录七 SR-IOV 测试配置 181
  • 附录八 OVS 安装 183
  • 附录九 OVS 测试配置 184
  • 附录十 l3fwd 在不同流量下启动配置 187

资源获取

资源地址1:https://pan.quark.cn/s/835ae5a91d3d

相关资源

网友留言

网友NO.39486
翟晏如

1、中断处理。当网络中大量数据包到来时,会产生频繁的硬件中断请求,这些硬件中断可以打断之前较低优先级的软中断或者系统调用的执行过程,如果这种打断频繁的话,将会产生较高的性能开销。 2、内存拷贝。正常情况下,一个网络数据包从网卡到应用程序需要经过如下的过程:数据从网卡通过 DMA 等方式传到内核开辟的缓冲区,然后从内核空间拷贝到用户态空间,在 Linux 内核协议栈中,这个耗时操作甚至占到了数据包整个处理流程的 57.1%。 3、上下文切换。频繁到达的硬件中断和软中断都可能随时抢占系统调用的运行,这会产生大量的上下文切换开销。另外,在基于多线程的服务器设计框架中,线程间的调度也会产生频繁的上下文切换开销,同样,锁竞争的耗能也是一个非常严重的问题。 4、局部性失效。如今主流的处理器都是多个核心的,这意味着一个数据包的处理可能跨多个 CPU 核心,比如一个数据包可能中断在 cpu0,内核态处理在 cpu1,用户态处理在 cpu2,这样跨多个核心,容易造成 CPU 缓存失效,造成局部性失效。如果是 NUMA 架构,更会造成跨 NUMA 访问内存,性能受到很大影响。 5、内存管理。传统服务器内存页为 4K,为了提高内存的访问速度,避免 cache miss,可以增加 cache 中映射表的条目,但这又会影响 CPU 的检索效率。

网友NO.41476
任英范

高性能网络技术 随着云计算产业的异军突起,网络技术的不断创新,越来越多的网络设备基础架构逐步向基于通用处理器平台的架构方向融合,从传统的物理网络到虚拟网络,从扁平化的网络结构到基于 SDN 分层的网络结构,无不体现出这种创新与融合。 这在使得网络变得更加可控制和成本更低的同时,也能够支持大规模用户或应用程序的性能需求,以及海量数据的处理。究其原因,其实是高性能网络编程技术随着网络架构的演进不断突破的一种必然结果。

网友NO.24064
邴紫桐

DPDK-利用DPDK开发项目应该注意的性能点 0x01 缘由 最近也在尝试写一个DPDK应用程序,也是对之前的学习做一下检验。然而在编写过程中,发现自己陷入到一个码API的思路中,完全没有考虑到DPDK的设计思想,于是放开编程指南,学习下。 0x02 写高效的代码  Intel® 64 and IA-32 指导手册。 1.内存 内存拷贝:建议不要使用libc中的memcpy函数,而用rte_memcpy(),dpdk中做了一些优化。 内存分配:建议使用固定的内存池,减少动态回收内存碎片带来的性能开销,dpdk中的内存池库:librte_mempool、rte_malloc()。 并发访问同一块内存区域:避免多个核并发的访问同一块内存区域,减少Cache misses 应该有如下两种方式避免: 用RTE_PER_LCORE 变量;用一个结构表,每个结构必须Cache对齐; NUMA系统:尽量访问本地内存,不访问远端内存。DPDK中很多结构中创建函数中都需要制定对应的socket。以空间换时间的思路。  跨存储器通道分配:现代内存控制器有多个内存通道。 2.逻辑核间的通讯(通常是线程):DPDK建议用ring结构。 3.PMD驱动(DPDK轮询模式驱动) 避免局部写。 更低的包延迟:为了获得更高的吞吐量,DPDK尝试用突发的方式合并每个包的处理。 4.锁和原子操作  原子操作意味着在指令之前有一个锁定前缀,导致处理器的LOCK#信号在执行下一条指令时被断言。Read-Copy-Update (RCU) 算法代替rwlocks。 5.代码编写上考量 内联函数(inline):小的函数可以在头文件静态内联函数。 分支预测:intel C/C++编译器(icc/gcc)内建了likely() unlikely()函数。 6.设定CPU类型  DPDK通过配置文件中的CONFIG_RTE_MACHINE选项支持CPU微体系结构特定的优化。优化程度取决于编译器针对特定微架构进行优化的能力,因此,只要有可能,最好使用最新的编译器版本。除了编译器优化之外,一组预处理器定义会自动添加到构建过程中(不管编译器版本如何)。 这些定义对应于目标CPU应该能够支持的指令集。 例如,为任何支持SSE4.2的处理器编译的二进制文件将定义RTE_MACHINE_CPUFLAG_SSE4_2,从而为不同的平台启用编译时代码路径选择。 0x03 性能检测 VTune Performance Analyzer Essentials 0x04 总结 DPDK不仅仅学理论得学解决方案和实践操作。