北京Linux系统编程与调试调优课程培训

导读 本课程详细讲解Linux的工具链、进程调度、内存管理、I/O模型、系统调用等系统原理,以及多进程、多线程、I/O编程的方法,融系统负载分析、内存分析、I/O分析、内核调试、应用调试等实践于理论。
400-888-4846 193
华为 安全 虚拟化 系统与网络 自动化运维 数据库 云计算与物联网 项目管理/产品管理 编程语言 软件测试

课程详情

2021-04-16

教学对象

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

课程介绍

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

课程五、Linux多进程与多线程

1.多进程通信

2.多线程通信

3.正确的互斥和同步方法

4.可重入与线程安全

5.多进程、多线程调试

6.IPC调试、死锁

7.Linux的I/O模型

8.多线程与I/O

9.C10K问题

课程六、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观察程序的时间分布

上一篇: 北京容器技术课程培训 下一篇: 北京红帽RHCA-集群和存储管理课程培训

推荐课程

查看全部课程
北京IT认证培训中心

北京IT认证培训中心

海淀校区

查看全部校区 进入官方主页