曙海教学优势
本课程以项目实现为导向,面向企事业项目实际需要,秉承二十一年积累的教学品质,老师将会与您分享设计的全流程以及工具的综合使用经验、技巧。线上/线下/上门皆可,课程可定制,热线:4008699035。
曙海培训的课程培养了大批受企业欢迎的工程师。曙海培训的课程在业内有着响亮的知名度。大批企业和曙海
建立了良好的合作关系,合作企业30万+。
Linux系统编程与调试调优培训课程
课程大纲
第1章 进入 Linux的精彩世界
1.1 Linux启动过程(多核)
1.2 Linux系统组成
1.3 strace和ltrace
1.4 GNU工具链和GDB调试
1.5 GCC编译的各个阶段分解
1.6 ELF文件分析
1.7 反汇编, objdump, dwarfdump
1.8 readelf, nm, strip
1.9 GDB调试技巧: 断点、watch、内存与backtrace等
1.10 GDB与多线程
1.11 LD_PRELOAD与动态库捕获
1.12 gprof
1.13 gcov
1.14 崩溃转储core dump
第2章 Linux内核进程调度与调试
2.1 进程生命周期
2.2 调度的上下文切换以及开销
2.3 调度算法的出发点:吞吐率与响应
实验课
1.写一个工具自动分析文件系统中程序与库的依赖关系图;
2.写一个工具自动分析文件系统中程序与库的符号依赖;
3.gcov白盒覆盖率
4.gdb调试多线程
5. gdb attach到一个运行进程
6.调试core dump实例
7. 用 strace和ltrace跟踪一个应用对内核和库的调用
8. 跟踪和拦截Linux应用程序对动态库的调用
2.2 进程调度算法
2.2.1 SCHED_FIFO/RR
2.2.2 SCHED_NORMAL与CFS算法
2.2.3 nice
2.3 进程调度时机
2.4 Linux实时性与RT解决方案
2.5 SMP
2.5.1 多核负载均衡
2.5.2 CPU热插拔
2.5.3 CPU affinity
2.5.4 BFS算法
2.6 针对CPU资源的Cgroups
2.7 系列案例演示调度行为对系统响应的影响
第3章 内核调试
3.1 printk 及其变体
3.2 内核崩溃oops分析
3.3 内核debug 选项
3.4 proc 和 sys
3.5 内核启动过程调试
3.6 内核启动时间优化调试
3.7 待机和电源管理调试
3.8 用JTAG调试内核
实验课程
1.使用dev_xxx和pr_xxx打印信息
2.分析一次内核崩溃oops并反汇编
3.写一个透过/proc在用户空间和内核空间进行交互的例子
4.使用JTAG和GDB调试内核
5.运行一个多线程的程序,观察top, htop, mpstat的情况
6.通过chrt, nice, renice, taskset方法改变进程的调度属性
7.通过cgroup分配CPU资源
第4章 内存分析与内存泄露
1. MMU系统
2. page与zone
3. buddy系统
4. slab、kmalloc
5. 用户空间malloc与内核buddy等的关系
6. out-of-memory (OOM)与控制
7. 进程的内存消耗
8. page cache与swap
9. zRAM
10. 内存泄露剖析
11. Addresssanitizer与valgrind
12. 针对内存资源的Cgroups
实验课程
1.分析一个运行时Linux的内存分布情况
2.用smem观察进程的内存变化
3.用valgrind跟踪一个有堆内存泄露的进程
4.启动编译器Addresssanitizer
4.写一个有栈溢出的程序并观察溢出表现
5.做I/O动作,观察page cache变化
6.运行一个引起OOM的程序
7.运行一个程序的多个副本,观察PSS变化
第5章 Linux多进程与多线程
1. 多进程通信
2. 多线程通信
3. 正确的互斥和同步方法
4. 可重入与线程安全
5. 多进程、多线程调试
6. IPC调试、死锁
7. Linux的I/O模型
8. 多线程与I/O
9. C10K问题
第6章 Linux性能优化
1. CPU负载分析:top, htop, mpstat
2. I/O负载分析:iostat, iotop
3. Linux逻辑分析仪:LTTng
4. 综合性能瓶颈:oprofile/perf
5. 程序执行时间分布分析
6. cache miss分析
7. 开机优化:bootchart
8. 功耗优化: powertop 和 cpufreq-bench
9. ftrace
10. Linux基准程序(LMBench,Bonnie++, IOZone, Netperf/iperf等)
11. 特别彩蛋: LEP(Linux Easy Profiling)
实验课程
1.观察一个有一定CPU、I/O负载的系统CPU、I/O情况
2.运行oprofile分析 binary的时间比例
3.使用Bonnie++分析文件系统的性能
4.修改diry_ratio等值分析文件系统性能
5.使用LMBench分析操作系统性能
6.观察一个LTTng的结果
7.运行perf观察CPU、I/O分布情况
8.运行perf观察程序的时间分布