久久久久久久视色,久久电影免费精品,中文亚洲欧美乱码在线观看,在线免费播放AV片

<center id="vfaef"><input id="vfaef"><table id="vfaef"></table></input></center>

    <p id="vfaef"><kbd id="vfaef"></kbd></p>

    
    
    <pre id="vfaef"><u id="vfaef"></u></pre>

      <thead id="vfaef"><input id="vfaef"></input></thead>

    1. 站長資訊網(wǎng)
      最全最豐富的資訊網(wǎng)站

      linux perf是什么?怎么用?(使用總結(jié))

      下面由linux系統(tǒng)教程欄目給大家介紹總結(jié)關(guān)于linux perf的使用方法,希望對(duì)需要的朋友有所幫助!

      簡(jiǎn)介

      perf是linux系統(tǒng)中提供的性能分析工具,它基于一個(gè)叫“Performance counters”的內(nèi)核子系統(tǒng)實(shí)現(xiàn),同時(shí)支持硬件(CPU、PMU(Performance Monitoring Unit))和軟件(軟件計(jì)數(shù)器、tracepoint)層面的性能分析。

      perf中的事件

      perf與其他性能調(diào)優(yōu)工具一樣,都是通過對(duì)監(jiān)測(cè)對(duì)象進(jìn)行采樣,根據(jù)采樣點(diǎn)的分布來推斷整個(gè)程序的行為。通過perf list命令我們可以看到perf支持很多的采樣事件,比如branch-misses、cpu-clock等等。perf中預(yù)定義的事件屬于不同的類型,比如硬件產(chǎn)生的事件(cache 命中/分支miss)和軟件產(chǎn)生的事件(context switch/page fault)等等。

      tracepoint

      tracepoint是linux內(nèi)核中定義的一些hook,如果被開啟,它們就會(huì)在執(zhí)行到特定邏輯時(shí)被觸發(fā),方便其他工具獲取系統(tǒng)內(nèi)部的運(yùn)行狀態(tài)等信息,perf就是利用了tracepoint,它會(huì)記錄和統(tǒng)計(jì)tracepoint的各個(gè)事件,生成分析報(bào)告。

      使用方式

      perf 工具的具體使用方式如下:

      perf [--version] [--help] COMMAND [ARGS]

      其中的COMMAND列表可以通過執(zhí)行perf –help查看,下面列舉幾個(gè)常用的command。

      perf stat

      perf stat的作用是執(zhí)行一個(gè)命令并收集其運(yùn)行過程中的各個(gè)數(shù)據(jù),它可以提供一個(gè)程序運(yùn)行情況的總體概覽。比如:

      user@localhost:~$ perf stat hostname localhost  Performance counter stats for 'hostname':           0.313464      task-clock (msec)         #    0.481 CPUs utilized                            2      context-switches          #    0.006 M/sec                                    0      cpu-migrations            #    0.000 K/sec                                  153      page-faults               #    0.488 M/sec                              896,723      cycles                    #    2.861 GHz                                620,709      instructions              #    0.69  insn per cycle                     121,143      branches                  #  386.465 M/sec                                6,247      branch-misses             #    5.16% of all branches                0.000651441 seconds time elapsed

      上面這個(gè)例子,通過perf stat運(yùn)行了hostname命令,并將其運(yùn)行過程中的一些指標(biāo)匯總顯示了出來,比如task-clock、context-switches等待。默認(rèn)情況下,perf stat 會(huì)輸出幾個(gè)常用的事件的統(tǒng)計(jì),比如:

      task-clock-msecs:cpu 使用率 context-switches:進(jìn)程切換次數(shù) page-faults:發(fā)生缺頁的次數(shù) cpu-migrations:表示進(jìn)程運(yùn)行過程中發(fā)生了多少次CPU遷移,即被調(diào)度器從一個(gè)CPU轉(zhuǎn)移到另外一個(gè)CPU上運(yùn)行 cycles:處理器時(shí)鐘,一條機(jī)器指令可能需要多個(gè)cycles instructions: 機(jī)器指令數(shù)目 branches:遇到的分支指令數(shù) branch-misses是預(yù)測(cè)錯(cuò)誤的分支指令數(shù)

      除此之外,我們可以使用-e參數(shù)來指定我們感興趣的事件,比如:

      user@localhost:~$ perf stat -e cache-misses hostname localhost  Performance counter stats for 'hostname':           682      cache-misses                                                        0.000646676 seconds time elapsed

      perf top

      perf top的作用是實(shí)時(shí)地顯示系統(tǒng)當(dāng)前的性能統(tǒng)計(jì)信息。前面的perf stat用于對(duì)一個(gè)特定的程序進(jìn)行分析,而某些時(shí)候我們可能并不知道是哪個(gè)程序影響了系統(tǒng)性能,這時(shí)候就可以用perf top來查找可疑的程序。比如:

      Samples: 775  of event 'cpu-clock', Event count (approx.): 92931021 Overhead  Shared Object       Symbol    8.93%  [kernel]            [k] vsnprintf    7.73%  perf                [.] rb_next    5.92%  [kernel]            [k] kallsyms_expand_symbol.clone.0    5.07%  [kernel]            [k] format_decode    4.59%  [kernel]            [k] number    3.40%  perf                [.] symbols__insert    3.03%  libslang.so.2.2.1   [.] SLtt_smart_puts

      上面的例子顯示perf統(tǒng)計(jì)了cpu-clock事件的數(shù)據(jù),根據(jù)比例進(jìn)行了排序。和perf stat一樣,我們可以通過-e參數(shù)指定統(tǒng)計(jì)其他的事件,比如perf top -e context-switches可以查看進(jìn)程切換最多的top N個(gè)進(jìn)程。

      perf record & perf report

      perf record的作用和perf stat類似,它可以運(yùn)行一個(gè)命令并生成統(tǒng)計(jì)信息,不過perf record不會(huì)將結(jié)果顯示出來,而是將結(jié)果輸出到文件中。perf record生成的文件可以用perf report來進(jìn)行解析。

      perf record還可以通過-g參數(shù),在分析時(shí)生成calling graph,幫助定位更上層的邏輯分布。

      其他

      通過例子我們可以發(fā)現(xiàn),perf的分析結(jié)果中的Symbol一列顯示的都是c語言函數(shù)的名字。對(duì)于java來說,jit編譯產(chǎn)生的函數(shù)就會(huì)直接顯示在symbol里,而不是java的函數(shù)名,這時(shí)要定位問題就不是那么容易了,我們需要通過額外的手段將symbol和java程序的符號(hào)表對(duì)應(yīng)起來,具體后續(xù)再討論了。

      推薦學(xué)習(xí):《linux視頻教程》

      贊(0)
      分享到: 更多 (0)
      網(wǎng)站地圖   滬ICP備18035694號(hào)-2    滬公網(wǎng)安備31011702889846號(hào)