Linux Kernel Hacks 改善效能、提昇開發效率及節能的技巧與工具
內容描述
<內容特色>
Kernel 就是 OS 的核心。OS 的基本功能都是由 kernel 提供的。建立檔案、傳送封包等動作都是以 kernel 的功能完成。不過建立這些功能並不是單純的工作。儘管平常不會意識到,裡面深藏了許多高階技術。以檔案系統來說,或許會在放置檔案的時候考慮到極力減少磁碟搜尋動作,以網路的部份來說,或許會為路由表項目數龐大的情形做好準備,使得這種情形不會對系統整體造成太大的影響。記憶體管理、process 管理等部份也暗藏了各式各樣的技巧。看懂這些高階技術,正是 kernel hacking 的魅力之一。
不過最近的 Linux kernel 不再只提供基本的功能。隨著功能進化,它不斷實作了為某些領域特化的方便功能、還有許多獨特的功能。就算是 kernel hacker 應該也很少人能全部掌握吧。
本書將從進化至今的 Linux kernel 多數功能之中,選定許多人需要的、或是很有意思的功能,在說明這些工能的過程中,一併解釋內部的運作機制。同時也會討論到善用這些功能所需的工具與設定方法、調整技巧。
「節能」是本書會討論到的主題之一。不僅會說明使用方式,還會談到節能的思考方向、以及它與硬體的關聯。另外也會涵蓋最近受到注目的虛擬化、資源管理、納入標準檔案系統之一的 ext4 等等,廣泛涵蓋各種經典功能與新功能。經典功能的部份會盡可能調查最新的原始碼,討論變更點與新增功能。這部份是文件找不到、不探索 kernel 內部就無法得知的資訊,所以就算已經知道這些功能的讀者,或許也會有新發現。另外本書也會介紹與 kernel 有關的工具,其中包含 gcore 這個對重要的系統來說十分需要的工具。
最新的 Linux kernel 實作了強力的追蹤 (trace)、效能量測 (profiling) 功能。用起來很方便,也提供許多功能。不僅能勝任原先的目的,在 kernel hacking 的時候也大有幫助。對 kernel hacker 老手來說,應該也有參考價值。
本書包含許多在現場也能立刻派上用場的完整實例。如果讀者想完整發揮 kernel 功能的話,本書應該十分具有參考價值。
<章節目錄>
執筆群 監修者前言寫在前面Chapter 1 Kernel 入門1. 取得 Linux kernel2. 編譯 Linux kernel3. Kernel module 的作法4. 使用 Git5. 以 checkpatch.pl 檢查 patch 的格式6. 以 localmodconfig 縮短 kernel 編譯時間Chapter 2 資源管理8. Scheduling Policy(排程策略)9. RT Group Scheduling 與 RT Throttling10. Fair Group Scheduling11. Cpuset12. 以 Memory Cgroup 限制記憶體使用量13. 設定 Block I/O controller 的 I/O 優先度14. 虛擬記憶體系統調校15. ramzswap16. OOM Killer 的動作與機制Chapter 3 檔案系統17. 運用 ext418. 轉移到 ext419. ext4 調校20. 以 fio 量測 I/O 效能21. FUSEChapter 4 網路22. 網路頻寬控制23. TUN/TAP 裝置24. bridge 裝置25. VLAN 26. bonding 驅動程式27. Network Drop MonitorChapter 5 虛擬化28. 使用 Xen29. 使用 KVM30. 不使用 DVD 安裝 OS31. 變更虛擬 CPU 配置方法提昇性能32. 使用 Extended Page Tables(EPT)提昇 guest OS 性能33. 以 IOMMU 加速 guest OS34. 以 IOMMU+SR-IOV 加速 guest OS35. 以SR-IOV 控制頻寬36. 以 KSM 節省記憶體37. 掛載 guest OS 的磁碟38. 從 guest OS 識別虛擬機器環境39. guest OS 除錯Chapter 6 節能40. ACPI41. 利用 ACPI S-state42. 利用 CPU 節能(C、P-state)43. PCI 裝置 hotplug 44. 虛擬化環境下的節能45. 遠端管理機器電源46. USB 電力管理47. 顯示器節能48. 削減網路裝置使用的電力49. 關掉鍵盤 LED 省電?50. PowerTOP51. 硬碟節能Chapter 7 除錯52. SysRq 按鍵(Magic System Request Key)53. 使用 diskdump 採取 kernel crash dump54. 使用 Kdump 採取 kernel crash dump 55. 進行 crash 測試56. IPMI watchdog timer57. NMI watchdog timer 58. soft lockup59. crash 指令60. coredump filter61. 為 kernel crash dump 包含的 user mode process 建立 process core dump62. 以 lockdep 檢查系統的 deadlock63. 檢查 kernel 的記憶體釋放漏失Chapter 8 Pro_ling.Trace 64. 以 perf tools 量測效能(之一)65. 以 perf tools 量測效能(之二)66. 對 kernel 與 process 進行各種 profiling67. 追蹤 kernel 函式呼叫過程68. ftrace 的 plug-in tracer69. 紀錄 kernel 的運作事件70. 使用 trace-cmd 進行 kernel tracing71. 為 kernel 加入動態 trace event72. 使用 SystemTap 進行 kernel tracing73. 以 SystemTap 撰寫對話形式的程式74. 重複利用 SystemTap 的 script75. 運用 SystemTap索引