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

