1. 程式人生 > >Linux性能優化 第四章 性能工具:特定進程CPU

Linux性能優化 第四章 性能工具:特定進程CPU

信息保存 重要 性能優化 term 內置 -- 以及 body size

4.1進程性能統計信息

4.1.1. 內核時間VS用戶時間

一個應用程序所耗時間最基本的劃分是內核時間與用戶時間。內核時間是消耗在Linux內核上的時間,而用戶時間則是消耗在應用程序或庫代碼上的時間。Linux有工具,如timeps,可以(大致)表明應用程序將其時間花費在應用程序代碼上還是話費在內核代碼上。

4.1.2 庫時間VS應用程序時間

任何應用程序,即便其復雜性非常低,也需要依賴系統庫才能執行復雜的操作。這些庫可能導致性能問題,因此,能夠查看應用程序在某個庫中花費了多少時間很重要了。在庫被應用程序使用時,ltrace命令和oprofile工具包提供了分析庫性能的途徑。

Linux加載器ld的內置工具幫助你確定使用多少個庫是否會減慢應用程序的啟動時間。

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

ltracestrace的概念相似,但它跟蹤的是應用程序對庫的調用而不是對內核的調用。雖然

ltrace主要用於提供對庫調用的參數和返回值的精確跟蹤,但是你也可以用它來匯總每個調用所花的時間。這使得你既可以發現應用程序有哪些調用,又可以發現每個調用時間是多長。

技術分享圖片

技術分享圖片

4.2.4 ps(進程狀態)

ps能給出運行進程的詳細的靜態和動態統計信息。ps提供靜態信息包括命令名和PID,動態信息保存內存和CPU的當前使用情況。 技術分享圖片

ps命令行選項

etime

統計信息:經過時間是指從程序開始執行耗費的總的時間

time

統計信息:CPU時間是指進程運行於CPU所話費的系統時間加上用戶時間

pcpu

統計信息:進程當前消耗的CPU百分比

cmd

統計信息:命令名


Linux性能優化 第四章 性能工具:特定進程CPU