LatencyTop:分析系統延遲的工具
當 Linux 走入桌面環境、企業應用,或者消費性電子產品時,過去我們認為的優點如快速的社群開發模式,反而成為間接的阻礙。如今,世界上幾乎沒有人可以完美地解釋 Linux kernel 每一行的功能與指出潛在的問題,更何況尚有一系列的系統軟體等著我們去處理,所以,如何以工具協助我們釐清問題,就是刻不容緩的議題。由 Intel 工程師 Arjan van de Ven (也是 powertop 的作者) 開發的 [
LatencyTop] 工具,透過對 kernel 小量的修改,讓我們得以從 user-space 得知 latency (系統延遲),並以 latencytop 來統計分析這些數據。考慮到 realtime audio/streaming video 一類的應用,偵測分析 latency 是相當高難度的動作,過去並無有效的途徑,往往得多次參照多項系統呼叫與程式輸出表現,予以交叉條整,現在 LatencyTOP 得以透過互動的方式,清楚呈現系統延遲的來源,進而消弭之,詳細資訊可參考 [
Finding system latency with LatencyTOP] 一文。
在 kernel 端的修改稱為 [
LatencyTOP infrastructure patch],提供名為 CONFIG_LATENCYTOP 的編譯選項,開啟後會由 kernel 開出 /proc/latency_stats 的資訊,在 2.6.24 以後的核心即整合此修改。LatencyTop 的執行畫面如下圖:

LatencyTop 的分析屬於 process-level 的,而圖中可見前九個 latency 來源,並可由此分析 Process "X" 在單位時間內的行為。作為 X server,其所需要與系統互動的行為是相當多元的,LatencyTop 舉出 buffer I/O、Page fault,與一些低階操作,同時,也可以發現圖中的 "Unknown reason",這表示尚有未明之處,需等待動作完成才能分析。
隨著 Linux kernel 的支援度提昇,LatencyTop 一類的工具紛紛發展完善後,也終將以更清楚的面貌,讓我們得以接近此等龐然大物並克服嚴峻的技術挑戰。
由 jserv 發表於 March 30, 2008 09:57 PM