《Linux系统编程与调试调优》四天线下课程--2018年1月17-20日上海

来源:互联网 发布:中金所杯 知乎 编辑:程序博客网 时间:2024/05/17 06:13

本课程针对从事Linux内核和应用开发以及系统性能调试调优的在职工程师

本课程详细讲解Linux的工具链、进程调度、内存管理、I/O模型、系统调用等系统原理,以及多进程、多线程、I/O编程的方法,融系统负载分析、内存分析、I/O分析、内核调试、应用调试等实践于理论。在讲解具体的调试和优化方法时,紧扣底层的原理,讲解Linux的各种调试和优化工具具体数据的含义,使得工程师在调试时知其然,知其所以然,能全盘慧眼把关一个Linux系统。



 

主办单位


中国高科技产业化研究会信号处理专家委员会 

北京中际赛威文化发展有限公司

北京中际孚歌科技有限公司

北京中际荣威科技有限公司


研修时间

2018年1月17-20日


学习地点


上  海(具体地点及路线图详见报到通知)



 

适合受众


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.调试coredump实例

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.  pagecache与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观察程序的时间分布

主讲老师

宋宝华

收费标准

4200元/人,含资料、午餐、课时费、证书。

联系报名


邴杰,扫码加微信

阅读全文
0 0
原创粉丝点击