Linux 行程與資源監控(Processes & Resources)

★★★★Draft

FromHow Linux Works

📚 From the Books

Linux 行程與資源監控(Processes & Resources)Linux & Networking

系統有三種基本硬體資源:CPUmemoryI/O,process 彼此競爭這些資源,kernel 負責公平分配。維運排查的底層工夫,就是知道系統變慢時該掏出哪一把工具、它到底在量什麼——與其執著調校,不如透過工具去理解 kernel 怎麼分配資源。

🧠 Intuition

TIP

排查按「問題長什麼樣」選工具:想看誰在吃 CPUtop(每秒更新、預設把最活躍的排最上);想知道某 process 開了哪些檔案lsof;程式一啟動就崩、log 又沒線索時,用 strace 追 system call、ltrace 追 library call。

⚖️ Tradeoffs

看 load average vs 看 per-process 指標
  • load averageuptime)給的是全系統的宏觀水位——準備執行的 process 平均數量,一眼看出系統忙不忙。
  • 但高 load average 不一定代表有問題:若 memory 和 I/O 資源充足,系統仍可能運作良好;真正該警覺的是 load 很高明顯變慢,可能已在 thrash。
  • 要定位到「是哪個 process」則要下沉到 per-process 工具:pidstat -p pid 以 vmstat 風格逐行輸出、不覆蓋前次結果,還能用 -r(memory)、-d(disk)細看;iotop 則以 TID 為單位顯示 I/O。
strace 精準定位 vs 觀測開銷與雜訊
  • toplsof 都幫不上忙(程式一啟動就崩),strace 能逐條印出 system call 並顯示精確錯誤,特別適合追「缺失的檔案」這類 Unix 最常見問題。
  • 代價是輸出量大:開頭的 execve()brk() 與中段大量 shared library 載入通常可忽略,真正有用的多在尾端的 openat()read()close()
  • ltrace 追的 library call 數量遠多於 system call,務必過濾輸出;且對 statically linked binaries 無效。相較之下 vmstat 開銷極小,適合先快速看 swap/I/O/CPU 全貌。

🔑 Takeaways

✍️ My Notes

No notes yet — jot your takeaways or Q&A here.

📖 Further Reading