1.工具型別
效能觀測工具可以按照系統級別和程序級別來分類,多數的工具要麼基於計數器要麼基於跟蹤。我們把這些效能放在如下圖中,包括一些常見工具作為示例
有一些工具不止適合乙個象限,例如:top還有乙個系統級別的檢視,dtrace也有程序級別的能力。還有一些效能工具是基於剖析(profiling)的。對系統和程序做一系列快照,以此來進行觀測。
1.1計數器
核心維護了各種統計資料,稱為計數器,用於對事件計數。通常計數器實現為無符號的整型數,發生事件時遞增。計數器的使用可以認為是「零開銷」的,因為它們預設是開啟的,而且始終由核心維護。
唯一的使用開銷是從使用者空間讀取它們的時候(可以忽略不計)。
系統級別
下面這些工具利用核心的計數器在系統軟硬體的環境中檢查系統級別的活動。
vmstat:虛擬記憶體和物理記憶體的統計,系統級別。
mpstat:每個cpu的使用情況。
iostat:每個i/o的使用情況,由塊裝置介面報告。
netstat:網路介面的統計,tcp/ip棧的統計,以及每個連線的一些統計資訊。
sar:各種各樣的統計,能歸檔歷史資料。
這些工具通常是系統全體使用者可見的(非root使用者)。統計出的資料也常常被監控軟體用來繪圖。
程序級別
下面這些工具以程序為導向的,使用的是核心為每個程序維護的計數器。
ps:程序狀態,顯示程序的各種統計資訊,包括記憶體和cpu的使用。
top:按乙個統計資料(如cpu使用)排序,顯示排名高的程序,基於solaris的系統對應的工具是prstat(1m)
pmap:將程序的記憶體段和使用統計一起列出。
一般來說,上述的這些工具是從/proc檔案系統裡讀取統計的資訊的。
1.2 跟蹤
跟蹤收集每乙個事件的資料以供分析。跟蹤框架一般預設是不啟用的,因為跟蹤捕獲資料會有cpu的開銷,另外還需要不小的儲存空間來存放資料。
這些開銷會拖慢所跟蹤的物件,在解釋測量時間的時候需要加以考慮。
日誌,包括系統日誌,可以認為是一種預設開啟的低頻率的跟蹤。日誌包括每乙個事件的資料,雖然通常只針對偶發事件,如錯誤和警告。
系統級別
利用核心功的跟蹤設施,下面這些跟蹤工具在系統軟硬體的環境中檢查系統級別的活動。
tcpdump:網路包跟蹤(用libpcap庫)
snoop:為基於solaris的系統打造的網路包跟蹤工具。
blktrace:塊i/o跟蹤(linux)
iosnoop:塊i/o跟蹤(基於dtrace)
execsnoop:跟蹤新程序(基於dtrace)
dtruss:系統級別的系統呼叫緩衝跟蹤(基於dtrace)
dtrace:跟蹤核心的內部活動和所有資源的使用情況(不僅僅是網路和塊i/o),支援靜態和動態的跟蹤。
systemtap:跟蹤核心的內部活動和所有資源的使用情況,支援靜態和動態的跟蹤。
perf:linux效能事件,跟蹤靜態和動態的探針。
dtrace和systemtap都是可程式設計環境,在它們之上可以構建系統級別的跟蹤工具
程序級別
以程序為導向的,基於的是作業系統提供的框架。
strace:基於linux系統的系統呼叫跟蹤。
truss:基於solaris系統的系統呼叫跟蹤。
gdb:源**級別的偵錯程式,廣泛應用於linux系統。
mdb:solaris系統的乙個具有可擴充套件性的偵錯程式。
偵錯程式能夠檢查每乙個事件的資料,不過做這件事情時需要停止目標程式的執行,然後再啟動。
諸如:dtrace、systemtap和perf這樣的工具,雖然更適合歸納到系統級別一類中,但是他們都支援對單個程序做檢查。
1.3 剖析
效能測試之 作業系統效能指標觀測及分析
1.對於linux 系統來說,free mem 很少並不一定代表記憶體不足,成為瓶頸。實際上這是由於 linux 的記憶體管理機制造成的,linux 會把free 的記憶體 完全沒使用過的記憶體 盡可能的利用起來,作為 buffers cached 當有程序申請記憶體時,如果沒有 free 會把bu...
系統效能分析工具
vmstat是virtual meomory ststistics 虛擬記憶體統計 的縮寫,很多linux發行版本都預設安裝了此命令工具,利用vmstat命令可以對作業系統的記憶體資訊 程序狀態 cpu活動等進行監控,不足之處是無法對某個程序進行深入分析。vmstat使用語法如下 vmstat v ...
Linux系統效能分析工具 操作篇
系統效能分析工具 上面的章節介紹了影響linux效能的幾個方面以及如何解決這些方面的問題,但是如何才能從系統上發現是某個方面或某幾個方面出現問題了呢,這就需要使用linux系統提供的幾個常用效能分析工具,下面就具體講述這幾個常用效能分析工具的使用。1 vmstat命令 vmstat是virtual ...