曙海教学优势
本课程,秉承二十一年积累的教学品质,以项目实现为导向,面向企事业项目实际需要,老师将会与您分享设计的全流程以及工具的综合使用经验、技巧。课程可定制,线上/线下/上门皆可,热线:4008699035。
曙海培训的课程培养了大批受企业欢迎的工程师。大批企业和曙海
建立了良好的合作关系,合作企业30万+。曙海培训的课程在业内有着响亮的知名度。
本课程针对在Linux之上开发多进程、多线程程序,它的主要内容包括各类开发工具、编译优化、执行乱序、动态链接库拦截、白盒测试,以及如何在Linux中设计好多进程的通信、多线程的通信并进行调试,如何避免多线程程序的内存故障、临界区竞态访问出错,如何规划好各个线程的各自的工作、设计好I/O模型等。
课程的后半部分,会讲解性能优化,分析清楚CPU、内存、I/O瓶颈,分析运行时耗时的代码,分析一些延迟的来源等,涉及到对ftrace、perf、kprobe、uprobe、eBPF/BCC、getdelays、火焰图等工具的讲解。
第一章 开发工具:编译,调试,拦截,跟踪和测试
第1节 进入 Linux的精彩世界
1 Linux启动过程(多核)
2 Linux系统组成
3 strace和ltrace
4 LD_PRELOAD与动态库捕获
5 meltdown漏洞
第2节 GCC和GDB
1 GNU工具链和GDB调试
2 GCC与编译优化
3 编译乱序与执行乱序
4 反汇编, objdump
5 GDB调试技巧: 断点、watch、内存与backtrace等
6 崩溃转储core dump
第3节 ELF文件分析
1 readelf, nm, strip
2 dwarfdump
3 程序、库依赖关系分析
第4节 GNU toolchain其他功能
1 gprof
2 gcov白盒测试
第二章 系统编程:多进程和多线程
第1节 Linux多进程编程
1. 多进程模型
2. 多进程通信
3. 进程间通信(IPC)调试
第2节 Linux多线程
1. 多线程程序创建
2. 线程生命周期
3. 线程调度策略和优先级设置
4. 正确的互斥和同步方法
5. 可重入与线程安全
6. IPC调试、死锁
7. 多进程、多线程调试
8. 线程的栈和栈溢出
9. 优先级翻转问题
第3节 多线程模型
1. 多线程程序的模型,线程的规划
2. 阿姆达尔定律
3. Linux的I/O模型
4. 多线程与I/O
5. C10K问题
第三章 系统优化:理论和工具
第1节 Linux性能模型
USE模型
吞吐率
延迟
排队论
CPU、mem和I/O
Lock和lock竞争
省电优化攻略
第2节 工具篇
Ftrace
Perf
eBPF/BCC
getdelays
latencytop
Powertop
剖析知识
第3节 CPU相关优化
模型与基础工具:top, mpstat
CPU的时间分布:中断、软中断、D状态(iowait)等
SCHED跟踪
CPU的stalled状态,CPI与IPC
Cache, branch miss
CPU在干什么:ON-CPU火焰图,代码热点
CPU在等什么:OFF-CPU火焰图
第4节 I/O相关优化
模型: iostat,iotop等
跟踪
Blktrace
Blk-mq
Page cache与I/O
Swap与I/O
第5节 网络相关优化
模型
跟踪
多队列网卡
RSS/RPS/XPS