
曙海教學(xué)優(yōu)勢
課程可定制,線上/線下/上門皆可,報名熱線:4008699035。本課程以項目實戰(zhàn)案例實現(xiàn)為主線,面向企事業(yè)單位項目開發(fā)實際,秉承21年積累的教學(xué)和研發(fā)經(jīng)驗,培訓(xùn)講師將會與您分享設(shè)計的全流程以及工具的綜合使用經(jīng)驗以及技巧。
  我們的課程培養(yǎng)了大批受企業(yè)歡迎的工程師。曙海培訓(xùn)的課程在業(yè)內(nèi)有廣泛的美譽度。大批企業(yè)和曙海
     建立了良好的合作關(guān)系,20多年來,合作企事業(yè)單位以達(dá)30多萬。
Linux系統(tǒng)編程與調(diào)試調(diào)優(yōu)培訓(xùn)課程
課程大綱?![]()
第1章???????? 進(jìn)入 Linux的精彩世界
1.1 Linux啟動過程(多核)
1.2 Linux系統(tǒng)組成
1.3 strace和ltrace
1.4 GNU工具鏈和GDB調(diào)試
1.5 GCC編譯的各個階段分解
1.6 ELF文件分析
1.7 反匯編, objdump, dwarfdump
1.8 readelf, nm, strip
1.9 GDB調(diào)試技巧: 斷點、watch、內(nèi)存與backtrace等
1.10 GDB與多線程
1.11 LD_PRELOAD與動態(tài)庫捕獲
1.12 gprof
1.13 gcov
1.14 崩潰轉(zhuǎn)儲core dump
第2章???????? Linux內(nèi)核進(jìn)程調(diào)度與調(diào)試
2.1 進(jìn)程生命周期
2.2 調(diào)度的上下文切換以及開銷
2.3 調(diào)度算法的出發(fā)點:吞吐率與響應(yīng)
?
實驗課
??? 1.寫一個工具自動分析文件系統(tǒng)中程序與庫的依賴關(guān)系圖;
??? 2.寫一個工具自動分析文件系統(tǒng)中程序與庫的符號依賴;
??? 3.gcov白盒覆蓋率
??? 4.gdb調(diào)試多線程
??? 5. gdb attach到一個運行進(jìn)程
??? 6.調(diào)試core dump實例
??? 7. 用?strace和ltrace跟蹤一個應(yīng)用對內(nèi)核和庫的調(diào)用
??? 8. 跟蹤和攔截Linux應(yīng)用程序?qū)討B(tài)庫的調(diào)用
?
?
?
2.2 進(jìn)程調(diào)度算法
2.2.1 SCHED_FIFO/RR
2.2.2 SCHED_NORMAL與CFS算法
2.2.3 nice
2.3 進(jìn)程調(diào)度時機
2.4 Linux實時性與RT解決方案
2.5 SMP
2.5.1 多核負(fù)載均衡
2.5.2 CPU熱插拔
2.5.3 CPU affinity
2.5.4 BFS算法
2.6 針對CPU資源的Cgroups
2.7 系列案例演示調(diào)度行為對系統(tǒng)響應(yīng)的影響
第3章???????? 內(nèi)核調(diào)試
3.1 printk 及其變體
3.2 內(nèi)核崩潰oops分析
3.3 內(nèi)核debug?選項
3.4 proc 和?sys
3.5 內(nèi)核啟動過程調(diào)試
3.6 內(nèi)核啟動時間優(yōu)化調(diào)試
3.7 待機和電源管理調(diào)試
3.8 用JTAG調(diào)試內(nèi)核
實驗課程
1.使用dev_xxx和pr_xxx打印信息
2.分析一次內(nèi)核崩潰oops并反匯編
3.寫一個透過/proc在用戶空間和內(nèi)核空間進(jìn)行交互的例子
4.使用JTAG和GDB調(diào)試內(nèi)核
5.運行一個多線程的程序,觀察top, htop, mpstat的情況
6.通過chrt, nice, renice, taskset方法改變進(jìn)程的調(diào)度屬性
7.通過cgroup分配CPU資源
?
第4章???????? ?內(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. 針對內(nèi)存資源的Cgroups
實驗課程
1.分析一個運行時Linux的內(nèi)存分布情況
2.用smem觀察進(jìn)程的內(nèi)存變化
3.用valgrind跟蹤一個有堆內(nèi)存泄露的進(jìn)程
4.啟動編譯器Addresssanitizer
4.寫一個有棧溢出的程序并觀察溢出表現(xiàn)
5.做I/O動作,觀察page cache變化
6.運行一個引起OOM的程序
7.運行一個程序的多個副本,觀察PSS變化
?
?
第5章???????? 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問題
第6章???????? Linux性能優(yōu)化
1. CPU負(fù)載分析:top, htop,?mpstat
2. I/O負(fù)載分析: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基準(zhǔn)程序(LMBench,Bonnie++, IOZone, Netperf/iperf等)
11. 特別彩蛋:?LEP(Linux Easy Profiling)
實驗課程
1.觀察一個有一定CPU、I/O負(fù)載的系統(tǒng)CPU、I/O情況
2.運行oprofile分析?binary的時間比例
3.使用Bonnie++分析文件系統(tǒng)的性能
4.修改diry_ratio等值分析文件系統(tǒng)性能
5.使用LMBench分析操作系統(tǒng)性能
6.觀察一個LTTng的結(jié)果
7.運行perf觀察CPU、I/O分布情況
8.運行perf觀察程序的時間分布
?
?
?