課程大綱:
一、進入 Linux 的精彩世界
1、Linux 啟動過程(多核)
2、Linux 系統(tǒng)組成
3、strace和ltrace
4、GNU工具鏈和GDB調試
5、GCC編譯的各個階段分解
6、ELF文件分析
7、反匯編,objdump, dwarfdump
8、readelf, nm,strip
9、GDB調試技巧:斷點、watch、內存與backtrace 等
10、GDB與多線程
11、LD_PRELOAD與動態(tài)庫捕獲
12、gprof
13、gcov
14、崩潰轉儲core dump
二、Linux 內核進程調度與調試
1、進程生命周期
2、調度的上下文切換以及開銷
3、調度算法的出發(fā)點:吞吐率與響應
4、進程調度算法
—— SCHED_FIFO/RR
—— SCHED_NORMAL與CFS算法
—— nice
5、進程調度時機
6、Linux 實時性與RT解決方案
7、SMP
—— 多核負載均衡
—— CPU熱插拔
—— CPU affinity
—— BFS算法
8、針對CPU源的Cgroups
9、系列案例演示調度行為對系統(tǒng)響應的影響
三、內核調試
1、printk及其變體
2、內核崩潰oops分析
3、內核debug選項
4、proc和sys
5、內核啟動過程調試
6、內核啟動時間優(yōu)化調試
7、待機和電源管理調試
8、用JTAG調試內核
四、內存分析與內存泄露
1、MMU系統(tǒng)
2、page與zone
3、buddy系統(tǒng)
4、slab、kmalloc
5、用戶空間malloc與內核buddy等的關系
6、out-of-memory(OOM)與控制
7、進程的內存消耗
8、page cache與swap
9、zRAM
10、內存泄露剖析
11、Addresssanitizer與valgrind
12、針對內存資源的Cgroups
五、Linux 多進程與多線程
1、多進程通信
2、多線程通信
3、正確的互斥和同步方法
4、可重入與線程安全
5、多進程、多線程調試
6、IPC調試、死鎖
7、Linux 的 I/O模型
8、多線程與 I/O
9、C10K 問題
六、Linux 性能優(yōu)化
1、CPU負載分析:top, htop,mpstat
2、I/O負載分析:iostat, iotop
3、Linux邏輯分析儀:LTTng
4、綜合性能瓶頸:oprofile/perf
5、程序執(zhí)行時間分布分析
6、cache miss 分析
7、開機優(yōu)化:bootchart
8、功耗優(yōu)化: powertop 和 cpufreq-bench
9、ftrace
10、Linux 基準程序(LMBench,Bonnie++, IOZone,Netperf/iperf 等)
11、LEP(Linux EasyProfiling)
課程周期:
24課時(45分/課時)

