perf學習-linux內建效能分析工具

來源:互聯網
上載者:User

perf學習-linux內建效能分析工具 什麼是perf?linux效能調優工具,32核心以上內建的工具,軟體效能分析。在2.6.31及後續版本的Linux核心裡,安裝perf非常的容易。幾乎能夠處理所有與效能相關的事件。 什麼是效能事件?指在處理器或者作業系統中發生,可能影響到程式效能的硬體事件或者軟體事情。 主要關注點在哪裡?演算法最佳化(空間複雜度、時間複雜度)、代碼最佳化(提到執行速度、減少記憶體佔用)評估程式對硬體資源的使用方式,例如各級cache的訪問次數,各級cache的丟失次數、流水線停頓周期、前端匯流排訪問次數等。評估程式對作業系統資源的使用方式,系統調用次數、環境切換次數、任務遷移次數。 基本原理?硬體的話採用PMC(performance monitoring unit)CPU的組件,在特定的條件下探測的效能事件是否發生以及發生的次數。軟體效能測試,內建於kernel,分布在各個功能模組中,統計和作業系統相關效能事件。 如何使用高精度的採樣?如果需要採用高精度的採樣,需要在制定效能事情時,在事件後添加尾碼“:p”或者“:pp” 0:無精度保證1:採樣指令好觸發效能時間的指令偏差為常數(:p)2:盡量保證偏差為0(:pp)3:保證偏差必須為0(:ppp) 有哪些常用的命令?1、perf list 列出所有能夠觸發perf採樣點的事件(當前硬體環境支援的效能事件)總體分為三類hardware(硬體產生)、software(核心軟體產生)、tradepoint(核心中靜態tracepoint觸發事件)。 List of pre-defined events (to be used in -e):  cpu-cycles OR cycles                               [Hardware event]處理器周期事件  stalled-cycles-frontend OR idle-cycles-frontend    [Hardware event]  stalled-cycles-backend OR idle-cycles-backend      [Hardware event]  instructions                                       [Hardware event]  cache-references                                   [Hardware event]  cache-misses                                       [Hardware event]  branch-instructions OR branches                    [Hardware event]  branch-misses                                      [Hardware event]  bus-cycles                                         [Hardware event]   cpu-clock                                          [Software event]  task-clock                                         [Software event]  page-faults OR faults                              [Software event]  minor-faults                                       [Software event]  major-faults                                       [Software event]  context-switches OR cs                             [Software event]  cpu-migrations OR migrations                       [Software event]  alignment-faults                                   [Software event]  emulation-faults                                   [Software event]   L1-dcache-loads                                    [Hardware cache event]  L1-dcache-load-misses                              [Hardware cache event]  L1-dcache-stores                                   [Hardware cache event]  L1-dcache-store-misses                             [Hardware cache event]  L1-dcache-prefetches                               [Hardware cache event]  L1-dcache-prefetch-misses                          [Hardware cache event]  L1-icache-loads                                    [Hardware cache event]  L1-icache-load-misses                              [Hardware cache event]  L1-icache-prefetches                               [Hardware cache event]  L1-icache-prefetch-misses                          [Hardware cache event]  LLC-loads                                          [Hardware cache event]  LLC-load-misses                                    [Hardware cache event]  LLC-stores                                         [Hardware cache event]  LLC-store-misses                                   [Hardware cache event]  LLC-prefetches                                     [Hardware cache event]  LLC-prefetch-misses                                [Hardware cache event]  dTLB-loads                                         [Hardware cache event]  dTLB-load-misses                                   [Hardware cache event]  dTLB-stores                                        [Hardware cache event]  dTLB-store-misses                                  [Hardware cache event]  dTLB-prefetches                                    [Hardware cache event]  dTLB-prefetch-misses                               [Hardware cache event]  iTLB-loads                                         [Hardware cache event]  iTLB-load-misses                                   [Hardware cache event]  branch-loads                                       [Hardware cache event]  branch-load-misses                                 [Hardware cache event] 2、perf stat剖析器的整體效能利用10個典型事件剖析了應用程式。task-clock:目標任務真真佔用處理器的時間,單位是毫秒,我們稱之為任務執行時間,後面是任務的處理器佔用率(執行時間和期間的比值)期間值從任務提交到任務結束的總時間(總時間在stat結束之後會列印出來)。context-switches:環境切換次數,前半部分是切換次數,後面是平均每秒發生次數(M是10的6次方)。cpu-migrations:處理器遷移,linux為了位置各個處理器的負載平衡,會在特定的條件下將某個任務從一個處理器遷往另外一個處理器,此時便是發生了一次處理器遷移。page-fault:缺頁異常,linux記憶體管理子系統採用了分頁機制,當應用程式請求的頁面尚未建立、請求的頁面不在記憶體中或者請求的頁面雖在在記憶體中,但是尚未建立物理地址和虛擬位址的映射關係是,會觸發一次缺頁異常。cycles:任務消耗的處理器周期數instructions:任務執行期間產生的處理器指令數,IPC(instructions perf cycle)IPC是評價處理器與應用程式效能的重要指標。(很多指令需要多個處理周期才能執行完畢),IPC越大越好,說明程式充分利用了處理器的特徵。branches:程式在執行期間遇到的分支指令數。branch-misses:預測錯誤的分支指令數cache-misses:cache時效的次數cache-references:cache的叫用次數 常用的參數如下 -e,指定效能事件-p,指定分析進程的PID-t,指定待分析線程的TID-r N,連續分析N次-d,全面效能分析,採用更多的效能事件一次分析後的結果如下: Performance counter stats for process id '21787':      42677.253367 task-clock                #    0.142 CPUs utilized                   587,906 context-switches          #    0.014 M/sec                            29,209 CPU-migrations            #    0.001 M/sec                               117 page-faults               #    0.000 M/sec                    82,341,400,508 cycles                    #    1.929 GHz                     [83.48%]   61,262,984,952 stalled-cycles-frontend   #   74.40% frontend cycles idle    [83.28%]   43,113,701,768 stalled-cycles-backend    #   52.36% backend  cycles idle    [66.72%]   44,023,301,495 instructions              #    0.53  insns per cycle                                                   #    1.39  stalled cycles per insn [83.50%]    8,137,448,528 branches                  #  190.674 M/sec                   [83.22%]      430,957,756 branch-misses             #    5.30% of all branches         [83.34%]     300.393753095 seconds time elapsed  3、perf top即時顯示系統/進程的效能統計資訊預設效能事件“cycles CPU周期數”進行全系統的效能剖析常見的參數如下: -p:指定進程PID-t:指定線程的TID-a:分析整個系統的效能(預設)-d:介面重新整理周期,預設是2秒結果輸出中,比例是該符號引發的效能時間在整個監測域中占的比例,通常稱為熱度。 samples  pcnt function                                                                               DSO_______ _____ ______________________________________________________________________________________ _________   61.00 19.4% native_write_msr_safe                                                                  [kernel]  18.00  5.7% JVM_InternString                                                                       libjvm.so  17.00  5.4% find_busiest_group                                                                     [kernel]  17.00  5.4% _spin_lock                                                                             [kernel]  12.00  3.8% dev_hard_start_xmit                                                                    [kernel]  11.00  3.5% tg_load_down                                                                           [kernel]   9.00  2.9% futex_wake                                                                             [kernel]   8.00  2.5% do_futex                                                                               [kernel]   7.00  2.2% load_balance_fair                                                                      [kernel]   7.00  2.2% weighted_cpuload                                                                       [kernel]   7.00  2.2% update_cfs_shares                                                                      [kernel]   7.00  2.2% JVM_LatestUserDefinedLoader                                                            libjvm.so   6.00  1.9% update_cfs_load                                                                        [kernel]   5.00  1.6% _ZN16SystemDictionary30resolve_instance_class_or_nullE12symbolHandle6HandleS1_P6Thread libjvm.so   5.00  1.6% br_sysfs_delbr                                                                         [bridge]   5.00  1.6% futex_wait                                                                             [kernel] 4、perf  record/report記錄一段時間內系統/進程的效能事件預設在目前的目錄下產生資料檔案:perf.datareport讀取產生的perf.data檔案,-i參數指定路徑
 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.