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

Linux效能優化 第四章 效能工具:特定程序CPU

4.1程序效能統計資訊

4.1.1. 核心時間VS使用者時間

       一個應用程式所耗時間最基本的劃分是核心時間與使用者時間。核心時間是消耗在Linux核心上的時間,而使用者時間則是消耗在應用程式或庫程式碼上的時間。Linux有工具,如time和ps,可以(大致)表明應用程式將其時間花費在應用程式程式碼上還是話費在核心程式碼上。

4.1.2 庫時間VS應用程式時間

       任何應用程式,即便其複雜性非常低,也需要依賴系統庫才能執行復雜的操作。這些庫可能導致效能問題,因此,能夠檢視應用程式在某個庫中花費了多少時間很重要了。在庫被應用程式使用時,ltrace命令和oprofile工具包提供了分析庫效能的途徑。Linux載入器ld的內建工具幫助你確定使用多少個庫是否會減慢應用程式的啟動時間。

4.2工具

4.2.1 time

       time命令完成一項基本功能,當需要測試一條命令的效能時,通常會首先執行它。time命令如同秒錶一樣,可以測量命令執行的時間。

image.png

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

這個型別的所有呼叫的總數

 image.png

4.2.3 ltrace

       ltrace與strace的概念相似,但它跟蹤的是應用程式對庫的呼叫而不是對核心的呼叫。雖然ltrace主要用於提供對庫呼叫的引數和返回值的精確跟蹤,但是你也可以用它來彙總每個呼叫所花的時間。這使得你既可以發現應用程式有哪些呼叫,又可以發現每個呼叫時間是多長。

image.png

image.png

4.2.4 ps(程序狀態)

ps能給出執行程序的詳細的靜態和動態統計資訊。ps提供靜態資訊包括命令名和PID,動態資訊儲存記憶體和CPU的當前使用情況。 image.png

ps命令列選項

etime

統計資訊:經過時間是指從程式開始執行耗費的總的時間

time

統計資訊:CPU時間是指程序運行於CPU所話費的系統時間加上使用者時間

pcpu

統計資訊:程序當前消耗的CPU百分比

cmd

統計資訊:命令名