致力于提升研发企业的持续创新能力

结盟众多企业“教练”, 共同设计、开发及提供人才培养解决方案,通过新颖多样的学习方式,针对性的定制化内容,助力企业全面提升竞争优势。

课程分类列表

DPDK_低延迟系统设计与深度优化
课程类别:开发语言工具

软件开发 软件调试 DPDK

课程讲师:

张银奎

课程周期:

2天

课程费用:

4800元/人

主要内容:本讲座以著名的 DPDK(Data Plane Development Kit)软件为案例,深度解析

影响软件响应速度的主要因素,挖掘降低延迟的关键技术,分享实现低延迟系统的最佳工程

实践。本讲座由《软件调试》和《格蠹汇编》的作者张银奎亲自讲授。 

 

时间长度:2 天 

形式:讲解 + 案例演示 

 

第一部分:低延迟系统基础 (2 小时) 

要点:时间测量,感受纳秒,CPU 的旅行,常见操作的时间,低延迟系统的典型场景,高频

交易系统的特点、核心模块和架构,网络数据包,传统网络栈,影响延迟的因素,中断,缺

页异常,系统调用,抢先式调度,NUMA,TLB,cache,精确测量时间的方法,RDTSC 

 

第二部分:案例研究之 DPDK 概览 (1.5 小时) 

要点:源于 INTEL,INTEL 软件团队简介,DPDK 简要历史,版本,协议,DPDK 的架构,设计

思想,核心组件,驱动层,KNI 模块,用户空间的库,包处理过程,安装,试验环境简介,

研究和学习方法 

 

第三部分:低延迟设计之内核穿透(1.5 小时) 

要点:两大空间,深挖系统调用,寄存器切换,栈切换,缓存温度,内核页表隔离,Meltdown

漏洞,案例分析之 DPDK,解读 KNI 驱动,案例分析之 Solarflare,与传统网络访问的比较 

 

第四部分:低延迟设计之回避中断(1.5 小时) 

要点:中断处理过程,中断处理例程,硬件中断,时钟中断,中断亲缘性,在 Linux 系统中

设置中断亲缘性,任务调度,Tickless kernel,软件中断,Linux 系统的软件中断,多 CPU

系统的中断处理,矛盾重重的 TLB-Shutdown 中断,Linux 下的中断处理,RES 中断,函数调

用中断,使用 Kernelshark 观察线程的执行轨迹和被中断打断的场景,案例解析 

 

第五部分:内存访问(1.5 小时) 

要点:内存层次体系,cache,cache 结构,cache hit 和 cache miss,提高 cache hit 的

关键思想,局部性,空间局部性和时间局部性,如何编写 cache 友好的代码,常用技巧,循

环交换,C++的虚方法,页表结构,页表项,页错误,Major Fault 和 Minor Fault,页错误

导致的延迟,大内存页原理,Linux 系统的大内存页支持,分配大内存页,评估大页的性能,

案例分析之 DPDK,配置大内存页 

 

第六部分:低延迟设计之 NUMA 基础(1.5 小时) 

要点: UMA 和 NUMA,硬件结构,Linux 系统的 NUMA 支持,内存布局,NUMA 的软件库和 API,

numastat,跨节点访问,节点距离,经验数据,实例分析 

 

第七部分:低延迟设计之内存池(1.5 小时) 

要点:内核池和用户态堆,堆简介,分配和释放内存的过程和开销,内存池设计的方法,可

利用的资源 

 

第八部分:低延迟设计之共享内存和相互通信(1.5 小时) 

要点:进程间通信,线程间通信,共享内存原理,使用共享内存通信,polling 机制,同步,

自旋锁,队列,无锁设计,使用 CPU 的互锁指令,案例分析 

 

第九部分:低延迟设计之绑定 CPU(Pinning)( 1 小时) 

要点: 对称多处理(SMP),设置亲缘性,taskset API 和工具,在 C/C++程序中设置线程亲

缘性,如何选择 CPU,定义绑定策略,在 VTune 中观察实际执行线程的 CPU,案例分析 

 

第十部分:案例研究之 DPDK 包处理框架(1.5 小时) 

要点:两种模式,Run-to-completion,流水线, 配置流水线,流水线实例解析,包转发,

负载均衡,流水线结构的可视化,DPDK 的测试程序,解析 DPDK 的包处理过程,异常基础,处理异常的最佳实践。


找到所需课程了吗?即刻 填写申请表格 与我们联络吧