《Linux系统编程与调试调优技术》四天线下课程--2017年10月25日上海开班

一、课程描述

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

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

This course aims at engineers working on Linux kernel and application development, and system performance profiling.

It covers awide range of Linux components, such as scheduler, memory management, I/O model, network protocol stack, multi-processes, multi-threads, system loading analysis, kernel debugging etc. While explaining the particular Linux debuggingand optimization methods, the course would dig into the principles of Linuxkernel and system, rather than give basic introductions. As a result, the course would enhance students' understanding of the Linux system architecture and the details of some important components, and boost their skills ondebugging and profiling.

二、主办单位:

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

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

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

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

三、研修时间:

2017年10月25-28日(24日上课当天报到) 

四、研修地点:

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

五、培训对象:

嵌入式相关领域的专业人士,具有开发和设计经验的硬件或软件开发工程师、系统移植工程师。

六、课程内容:

第一天

第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元/人,含资料、午餐、课时费、证书。

九、课程咨询:010-64113137

联系报名

0?wx_fmt=png

朋友们下周三上课,确定参加的马上联系一下  速度要快,要快,要快……

邴杰18611266160  微信:Bingjieok 

在线等……

你可能感兴趣的:(《Linux系统编程与调试调优技术》四天线下课程--2017年10月25日上海开班)