低延迟系统设计与深度优化

低延迟系统设计与深度优化
    马上咨询


    张银奎  Intel 前英特尔软件架构师,系统调试专家

    微软全球最有(yǒu)价值技术专家(MVP),同济大學(xué)電(diàn)子与信息工程學(xué)院特邀讲师。 《软件调试》、《格蠹汇编》的作者,新(xīn)版《十万个為(wèi)什么》電(diàn)子分(fēn)册撰稿人之一,《程序员》杂志(zhì)调试之剑栏目作者 。
    1996年毕业于上海交通大學(xué)信息与控制工程系,在软件产业工作20年,在多(duō)家跨國(guó)公司历任开发工程师、软件架构师、开发经理(lǐ)、项目经理(lǐ)等职務(wù),对 IA-32 架构、操作系统内核、驱动程序、虚拟化技术、云计算、软件调优、尤其是软件调试有(yǒu)较深入研究。
    从2005年开始公开讲授“Windows内核及高级调试”课程,曾在微软的Webcast和各种技术会议上做过《Windows Vista内核演进》、《调试之剑》(全球软件案例研究峰会)、《感受和思考调试器的威力》(CSDN SD2.0大会)、《Windows启动过程》、《如何诊断和调试蓝屏错误》、《Windows體(tǐ)系结构——从操作系统的角度》等。
    讲师认為(wèi)软件瑕疵是个永恒的难题,因此在这方面投入了很(hěn)多(duō)时间,探索出了一套以调试器為(wèi)核心的方法。与瑕疵和调试相关的另一个永恒难题就是软件的安全性。安全漏洞,可(kě)以说是一种特别的瑕疵。发现和研究安全漏洞离不开调试方法。因此花(huā)费大量时间研究软件安全和渗透测试。
    翻译(合译)作品有(yǒu)《观止——微软创建NT和未来的夺命狂奔》、《数据挖掘原理(lǐ)》、《机器學(xué)习》、《人工智能(néng):复杂问题求解的结构和策略》等。 

    课程简介

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

    目标收益

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

    培训对象

    高频交易团队架构师等

    课程大纲

    第一部分(fēn):低延迟系统基础 (2小(xiǎo)时)
    要点:时间测量,感受纳秒(miǎo),CPU的旅行,常见操作的时间,低延迟系统的典型场景,高频交易系统的特点、核心模块和架构,网络数据包,传统网络栈,影响延迟的因素,中断,缺页异常,系统调用(yòng),抢先式调度,NUMA,TLB,cache,精确测量时间的方法,RDTSC

    第二部分(fēn):案例研究之DPDK概览 (1.5小(xiǎo)时) 
    要点:源于INTEL,INTEL软件团队简介,DPDK简要历史,版本,协议,DPDK的架构,设计思想,核心组件,驱动层,KNI模块,用(yòng)户空间的库,包处理(lǐ)过程,安装,试验环境简介,研究和學(xué)习方法

    第三部分(fēn):低延迟设计之内核穿透(1.5小(xiǎo)时) 
    要点:两大空间,深挖系统调用(yòng),寄存器切换,栈切换,缓存温度,内核页表隔离,Meltdown漏洞,案例分(fēn)析之DPDK,解读KNI驱动,案例分(fēn)析之Solarflare,与传统网络访问的比较

    第四部分(fēn):低延迟设计之回避中断(1.5小(xiǎo)时) 
    要点:中断处理(lǐ)过程,中断处理(lǐ)例程,硬件中断,时钟中断,中断亲缘性,在Linux系统中设置中断亲缘性,任務(wù)调度,Tickless kernel,软件中断,Linux系统的软件中断,多(duō)CPU系统的中断处理(lǐ),矛盾重重的TLB-Shutdown中断,Linux下的中断处理(lǐ),RES中断,函数调用(yòng)中断,使用(yòng)Kernelshark观察線(xiàn)程的执行轨迹和被中断打断的场景,案例解析

    第五部分(fēn):内存访问(1.5小(xiǎo)时) 
    要点:内存层次體(tǐ)系,cache,cache结构,cache hit和cache miss,提高cache hit的关键思想,局部性,空间局部性和时间局部性,如何编写cache友好的代码,常用(yòng)技巧,循环交换,C++的虚方法,页表结构,页表项,页错误,Major Fault和Minor Fault,页错误导致的延迟,大内存页原理(lǐ),Linux系统的大内存页支持,分(fēn)配大内存页,评估大页的性能(néng),案例分(fēn)析之DPDK,配置大内存页

    第六部分(fēn):低延迟设计之NUMA基础(1.5小(xiǎo)时) 
    要点: UMA和NUMA,硬件结构,Linux系统的NUMA支持,内存布局,NUMA的软件库和API,numastat,跨节点访问,节点距离,经验数据,实例分(fēn)析

    第七部分(fēn):低延迟设计之内存池(1.5小(xiǎo)时) 
    要点:内核池和用(yòng)户态堆,堆简介,分(fēn)配和释放内存的过程和开销,内存池设计的方法,可(kě)利用(yòng)的资源

    第八部分(fēn):低延迟设计之共享内存和相互通信(1.5小(xiǎo)时) 
    要点:进程间通信,線(xiàn)程间通信,共享内存原理(lǐ),使用(yòng)共享内存通信,polling机制,同步,自旋锁,队列,无锁设计,使用(yòng)CPU的互锁指令,案例分(fēn)析

    第九部分(fēn):低延迟设计之绑定CPU(Pinning)(1小(xiǎo)时) 
    要点: 对称多(duō)处理(lǐ)(SMP),设置亲缘性,taskset API和工具,在C/C++程序中设置線(xiàn)程亲缘性,如何选择CPU,定义绑定策略,在VTune中观察实际执行線(xiàn)程的CPU,案例分(fēn)析

    第十部分(fēn):案例研究之DPDK包处理(lǐ)框架(1.5小(xiǎo)时) 
    要点:两种模式,Run-to-completion,流水線(xiàn), 配置流水線(xiàn),流水線(xiàn)实例解析,包转发,负载均衡,流水線(xiàn)结构的可(kě)视化,DPDK的测试程序,解析DPDK的包处理(lǐ)过程,异常基础,处理(lǐ)异常的最佳实践