Linux性能優化 第四章 性能工具:特定進程CPU
4.1.1. 內核時間VS用戶時間
一個應用程序所耗時間最基本的劃分是內核時間與用戶時間。內核時間是消耗在Linux內核上的時間,而用戶時間則是消耗在應用程序或庫代碼上的時間。Linux有工具,如time和ps,可以(大致)表明應用程序將其時間花費在應用程序代碼上還是話費在內核代碼上。
4.1.2 庫時間VS應用程序時間
任何應用程序,即便其復雜性非常低,也需要依賴系統庫才能執行復雜的操作。這些庫可能導致性能問題,因此,能夠查看應用程序在某個庫中花費了多少時間很重要了。在庫被應用程序使用時,ltrace命令和oprofile工具包提供了分析庫性能的途徑。
4.2工具
4.2.1 time
time命令完成一項基本功能,當需要測試一條命令的性能時,通常會首先運行它。time命令如同秒表一樣,可以測量命令執行的時間。
4.2.2 strace
starce是當程序執行時,追蹤其發起的系統調用工具。系統調用是由或代表一個應用程序進行的Linux內核函數調用。strace可以展示準確的系統調用,它在確定應用程序是如何使用Linux內核方面是相當有用的。在分析大型程序或你完全不懂的程序時,跟蹤系統調用的頻率和長度是特別有價值的。通過查看strace的輸出,你可以了解應用程序如何使用內核,以及它依賴什麽類型的函數。
語法
strace [-c] [-p pid] [-o file] [--help] [command [arg …]] |
strace命令行選項
選項 | 說明 |
-c | 打印出統計信息的概要,而非所有系統調用的獨立列表 |
-p pid | 將給定PID添加到進程,並開始跟蹤 |
-o file | 輸出保存到file文件裏面 |
與CPU相關的strace輸出
%time | 對全部系統調用的總時間來說,該項為這一個系統調用所花時間的百分比 |
second | 這一個系統調用所花費的總秒數 |
calls | 這個類型的所有調用的總數 |
4.2.3 ltrace
ltrace與strace的概念相似,但它跟蹤的是應用程序對庫的調用而不是對內核的調用。雖然
4.2.4 ps(進程狀態)
ps能給出運行進程的詳細的靜態和動態統計信息。ps提供靜態信息包括命令名和PID,動態信息保存內存和CPU的當前使用情況。
ps命令行選項
etime | 統計信息:經過時間是指從程序開始執行耗費的總的時間 |
time | 統計信息:CPU時間是指進程運行於CPU所話費的系統時間加上用戶時間 |
pcpu | 統計信息:進程當前消耗的CPU百分比 |
cmd | 統計信息:命令名 |
Linux性能優化 第四章 性能工具:特定進程CPU