4006-998-758
3000+课程任你选择
低延迟系统设计与深度优化
研发学院 软件架构师 系统调试专家 开课时间:2021-07-30
张银奎

1996年毕业于上海交通大学信息与控制工程系,在软件产业工作20年,拥有13年Intel工作经历,任职于INTEL公司的上海研发中心,先后在PASD、DEG、CPG、PCCG、VPG等部门工作。在英特尔先后从事软件开发、系统测试、架构设计等工作,呈担任英特尔架构事业部视觉与并行计算事业群担任首席软件架构师职务。

对IA-32架构、操作系统内核、驱动程序、设计模式、软件调优、C和C++等有深厚的工作经验,对于精炼、易于维护的代码有不懈追求。10多年GPU、CPG等深度优化技术积累和代码重构经验,每天的主要工作除了设计和编写代码外,就是调试和重构C语言代码。


查看老师详情
课程内容

课程介绍


本讲座以著名的DPDK(Data Plane Development Kit)软件为案例,深度解析影响软件响应速度的主要因素,挖掘降低延迟的关键技术,分享实现低延迟系统的最佳工程实践。


课程目标


掌握著名软件DPDK的架构以及设计思想等核心要素,分析影响软件响应速度的各种因素,通过关键技术最终解决问题,实现低延迟系统。


课程特色


详细的理论讲解配合大量案例演示


课程对象


高频交易团队架构师等


课程大纲


主题

                                       内容

 

第一部分:低延迟系统基础 (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的包处理过程,异常基础,处理异常的最佳实践



返回上一级