perf命令文檔

perf

  • Linux下的性能分析工具
    perf [--version] [--help] [OPTIONS] COMMAND [ARGS]

選項

  • –debug 設置調試變量,值的範圍(0,10)
    • 使用實例:
      • --debug verbose #設置verbose爲1
      • --debug verbose=2 #設置verbose爲2
    • 允許設置的調試變量的列表:
      • verbose 通用調試消息
      • ordered-events 有序事件對象調試消息
      • data-convert 數據轉換命令調試消息
  • –buildid-dir 設置buildid緩存目錄。 它具有比buildid.dir配置文件選項更高的優先級。
  • -v
  • -h

描述

  • Linux性能計數器是一個新的基於內核的子系統,給所有的性能分析提供一個框架。
  • 覆蓋硬件級別特性(CPU/PMU,性能監控單元)以及軟件級別特性(軟件計數器,tracepoints)

perf top

  • perf-top是系統剖析工具
  • perf top [-e <EVENT> | --event=EVENT] [<options>]
  • 這個命令實時地生成並展示性能計數器剖析

選項

長短選項 詳解
-a, --all-cpus 系統範圍的採集(默認的)
-c , --count= 採樣的事件週期
-C , --cpu= 僅僅監控提供的CPU列表。多個CPU可以提供一個逗號分隔的列表,不能有空格,如0,1,可以用-表示多個cpu的一個範圍,如0-2。默認是監控所有的CPU
-d , --delay= 刷新之間延遲的秒數
-e , --event= 選擇PMU(Performance Monitoring Unit)事件.被選擇的可以是一個符號化的事件名稱(使用perf list命令可以列出所有的事件),或者是一個原始的PMU事件(eventsel+umask),形式如rNNN其中的NNN是一個十六進制的事件描述符
-E , --entries= 展示Display this many functions
-f , --count-filter= Only display functions with more events than this.
–group 將計數器放到一個計數器組中
-F , --freq= 以這個頻率來進行性能剖析
-i, --inherit 子任務不繼承計數器
-k , --vmlinux= 到vmlinux這種內核文件的路徑,註釋功能需要。
-m , --mmap-pages= mmap的數據頁數(必須爲2的次方),或者尾部帶有單位字符(B
-p , --pid= 在已經存在的進程ID上進行剖析,逗號分隔的列表
-t , --tid= 在已經存在的線程ID上進行剖析,逗號分隔的列表
-u, --uid= 記錄由uid擁有的線程的事件。名字或者數字都可以
-r , --realtime= 用這個RT SCHED_FIFO優先級來收集數據
–sym-annotate= 註釋此符號。
-K, --hide_kernel_symbols 隱藏內核符號
-U, --hide_user_symbols 隱藏用戶空間符號
–demangle-kernel 分解內核符號
-D, --dump-symtab 轉儲用於剖析的符號表
-v, --verbose Be more verbose (show counter open errors, etc).
-z, --zero 顯示更新的歷史記錄爲零
-s, --sort 按關鍵字排序,可以多個key排序。 pid, comm, dso, symbol, parent, srcline, weight, local_weight, abort, in_tx, transaction, overhead, sample, period。參考perf report中的–sort
–fields= 指定輸出字段。多個key可以用CSV格式指定。下面的字段是可用的overhead, overhead_sys, overhead_us, overhead_children, sample and period。當然可以包含任何排序key。默認情況下每個沒有在這裏指定的排序key都會自動加上
-n, --show-nr-samples 展示帶有采樣數的一列
–show-total-period 展示帶有各採樣週期和的一列
–dsos 僅僅考慮在這些dsos中的符號。這個選項將影響overhead列的百分比
–comms 僅僅考慮在這些comms中的符號。這個選項將影響overhead列的百分比
–symbols 僅僅考慮這些符號。這個選項將影響overhead列的百分比
-M, --disassembler-style= 給objdump設置反彙編器風格
–source 源代碼與彙編代碼交織在一起。 默認情況下啓用,使用–no-source禁用。
–asm-raw 顯示彙編指令的原始指令編碼。
-g 啓用調用圖(stack chain/backtrace)記錄。
–call-graph [mode,type,min[,limit],order[,key][,branch]] 設置並啓用調用圖(stack chain/backtrace)記錄,暗含-g
–children 將子級的調用鏈累積到父項,以便隨後可以顯示在輸出中。輸出將有一個新的“ Children”列,並將按數據進行排序。 它要求必須啓用-g /-call-graph選項。 有關更多詳細信息,請參見“開銷計算”部分。 默認情況下啓用,使用–no-children禁用。
–max-stack 解析調用鏈時設置堆棧深度限制,超出指定深度的任何內容都將被忽略。 這是在信息丟失和更快的處理之間做出的權衡,尤其是對於可能具有非常長的調用鏈堆棧的工作負載而言。默認值:/ proc / sys / kernel / perf_event_max_stack(如果存在),否則爲127。
–ignore-callees= 忽略與給定正則表達式匹配的函數的被調用者。 這具有將每個這樣的函數的調用者收集到調用圖樹中的一個位置中的效果。
–percent-limit 不要顯示開銷低於該百分比的條目。 (默認值:0)
–percentage 確定如何顯示已過濾條目的開銷百分比。 可以通過–comms,-dsos和/或–symbols選項以及TUI上的Zoom操作(線程,dso等)應用過濾器。相對表示它僅與過濾的條目有關,因此顯示的條目之和始終爲100%。 絕對表示在應用過濾器之前和之後均保留原始值。
-w, --column-widths=<width[,width…]> 強制將每列寬度設置爲提供的列表,以提高終端可讀性。 0表示沒有限制(默認行爲)。
–proc-map-timeout 在處理預先存在的線程/proc/XXX/mmap時,可能需要很長時間,因爲文件可能很大。 在這種情況下,需要超時。 此選項設置超時限制。 默認值爲500毫秒。
-b, --branch-any 啓用已採取的分支堆棧採樣。 可以對任何類型的採用分支進行採樣。 這是–branch-filter any的快捷方式。 有關更多信息,請參見–branch-filter。
-j, --branch-filter 啓用分支棧採樣.每個樣本捕獲一系列連續的分支。 每個樣本捕獲的分支數量取決於基礎硬件,相關分支的類型以及執行的代碼。 通過啓用過濾器可以選擇捕獲的分支類型。 有關修飾符的完整列表,請參見性能記錄手冊頁。該選項要求any,any_call,any_ret,ind_call和cond中至少一種分支類型。 特權級別可以省略,在這種情況下,關聯事件的特權級別將應用於分支過濾器。 內核(k)和管理程序(hv)特權級別均受許可權的約束。 在多個事件上採樣時,將爲所有采樣事件啓用分支堆棧採樣。 所有事件的採樣分支類型均相同。 必須將各種過濾器指定爲以逗號分隔的列表:–branch-filter any_ret,u,k請注意,此功能可能並非在所有處理器上都可用。
–raw-trace 顯示traceevent輸出時,不使用print fmt或插件。
–hierarchy 啓用層次化的輸出
–force 不要進行所有權驗證
–num-thread-synthesize 當合成已經存在的進程的事件時要運行的線程數。默認情況下,線程數等於在線CPU數。

perf record

perf report

perf list

perf stat

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章