操做系統性能觀測工具

1.工具類型 ios

  性能觀測工具能夠按照系統級別和進程級別來分類,多數的工具要麼基於計數器要麼基於跟蹤。咱們把這些性能放在以下圖中,包括一些常見工具做爲示例編程

  有一些工具不止適合一個象限,例如:top還有一個系統級別的視圖,Dtrace也有進程級別的能力。還有一些性能工具是基於剖析(profiling)的。對系統和進程作一系列快照,以此來進行觀測。網絡

 1.1計數器框架

   內核維護了各類統計數據,稱爲計數器,用於對事件計數。一般計數器實現爲無符號的整型數,發生事件時遞增。計數器的使用能夠認爲是「零開銷」的,由於它們默認是開啓的,並且始終由內核維護。tcp

惟一的使用開銷是從用戶空間讀取它們的時候(能夠忽略不計)。工具

系統級別oop

下面這些工具利用內核的計數器在系統軟硬件的環境中檢查系統級別的活動。性能

 vmstat:虛擬內存和物理內存的統計,系統級別。spa

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 剖析

相關文章
相關標籤/搜索