• perf 工具介绍1


    https://perf.wiki.kernel.org/index.php/Tutorial

    http://os.51cto.com/art/201105/265133.htm

    在LINUX 源代码中安装perf

    [root@localhost perf]# pwd
    /usr/src/kernels/linux-2.6.32/tools/perf

    [root@localhost perf]# yum install binutils-devel

    [root@localhost perf]# make

    [root@localhost perf]# make install
    install -d -m 755 '/root/bin'
    install perf '/root/bin'

    [root@localhost perf]# mount   -t  debugfs none  /sys/kernel/debug/

    [root@localhost perf]# perf list List of pre-defined events (to be used in -e): cpu-cycles OR cycles [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] 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] rNNN [raw hardware event descriptor]
      skb:kfree_skb                              [Tracepoint event]
      skb:skb_copy_datagram_iovec                [Tracepoint event]
      block:block_rq_abort                       [Tracepoint event]
      block:block_rq_insert                      [Tracepoint event]
      block:block_rq_issue                       [Tracepoint event]
      block:block_rq_requeue                     [Tracepoint event]
      block:block_rq_complete                    [Tracepoint event]
      block:block_bio_bounce                     [Tracepoint event]
      block:block_bio_complete                   [Tracepoint event]
      block:block_bio_backmerge                  [Tracepoint event]
      block:block_bio_frontmerge                 [Tracepoint event]
      block:block_bio_queue                      [Tracepoint event]
      block:block_getrq                          [Tracepoint event]
      block:block_sleeprq                        [Tracepoint event]
      block:block_plug                           [Tracepoint event]
      block:block_unplug_timer                   [Tracepoint event]
      block:block_unplug_io                      [Tracepoint event]
      block:block_split                          [Tracepoint event]
      block:block_remap                          [Tracepoint event]
      block:block_rq_remap                       [Tracepoint event]
      kmem:kmalloc                               [Tracepoint event]
      kmem:kmem_cache_alloc                      [Tracepoint event]
      kmem:kmalloc_node                          [Tracepoint event]
      kmem:kmem_cache_alloc_node                 [Tracepoint event]
      kmem:kfree                                 [Tracepoint event]
      kmem:kmem_cache_free                       [Tracepoint event]
      kmem:mm_page_free_direct                   [Tracepoint event]
      kmem:mm_pagevec_free                       [Tracepoint event]
      kmem:mm_page_alloc                         [Tracepoint event]
      kmem:mm_page_alloc_zone_locked             [Tracepoint event]
      kmem:mm_page_pcpu_drain                    [Tracepoint event]
      kmem:mm_page_alloc_extfrag                 [Tracepoint event]
      power:power_start                          [Tracepoint event]
      power:power_end                            [Tracepoint event]
      power:power_frequency                      [Tracepoint event]
      module:module_load                         [Tracepoint event]
      module:module_free                         [Tracepoint event]
      module:module_get                          [Tracepoint event]
      module:module_put                          [Tracepoint event]
      module:module_request                      [Tracepoint event]
      workqueue:workqueue_insertion              [Tracepoint event]
      workqueue:workqueue_execution              [Tracepoint event]
      workqueue:workqueue_creation               [Tracepoint event]
      workqueue:workqueue_destruction            [Tracepoint event]
      timer:timer_init                           [Tracepoint event]
      timer:timer_start                          [Tracepoint event]
      timer:timer_expire_entry                   [Tracepoint event]
      timer:timer_expire_exit                    [Tracepoint event]
      timer:timer_cancel                         [Tracepoint event]
      timer:hrtimer_init                         [Tracepoint event]
      timer:hrtimer_start                        [Tracepoint event]
      timer:hrtimer_expire_entry                 [Tracepoint event]
      timer:hrtimer_expire_exit                  [Tracepoint event]
      timer:hrtimer_cancel                       [Tracepoint event]
      timer:itimer_state                         [Tracepoint event]
      timer:itimer_expire                        [Tracepoint event]
      irq:irq_handler_entry                      [Tracepoint event]
      irq:irq_handler_exit                       [Tracepoint event]
      irq:softirq_entry                          [Tracepoint event]
      irq:softirq_exit                           [Tracepoint event]
      sched:sched_kthread_stop                   [Tracepoint event]
      sched:sched_kthread_stop_ret               [Tracepoint event]
      sched:sched_wait_task                      [Tracepoint event]
      sched:sched_wakeup                         [Tracepoint event]
      sched:sched_wakeup_new                     [Tracepoint event]
      sched:sched_switch                         [Tracepoint event]
      sched:sched_migrate_task                   [Tracepoint event]
      sched:sched_process_free                   [Tracepoint event]
      sched:sched_process_exit                   [Tracepoint event]
      sched:sched_process_wait                   [Tracepoint event]
      sched:sched_process_fork                   [Tracepoint event]
      sched:sched_signal_send                    [Tracepoint event]
      sched:sched_stat_wait                      [Tracepoint event]
      sched:sched_stat_runtime                   [Tracepoint event]
      sched:sched_stat_sleep                     [Tracepoint event]
      sched:sched_stat_iowait                    [Tracepoint event]
      syscalls:sys_enter                         [Tracepoint event]
      syscalls:sys_exit                          [Tracepoint event]
    [root@localhost perf]# perf --help
    
     usage: perf [--version] [--help] COMMAND [ARGS]
    
     The most commonly used perf commands are:
       annotate    Read perf.data (created by perf record) and display annotated code
       list        List all symbolic event types
       record      Run a command and record its profile into perf.data
       report      Read perf.data (created by perf record) and display the profile
       sched       Tool to trace/measure scheduler properties (latencies)
       stat        Run a command and gather performance counter statistics
       timechart   Tool to visualize total system behavior during a workload
       top         System profiling tool.
       trace       Read perf.data (created by perf record) and display trace output
    
     See 'perf help COMMAND' for more information on a specific command
    usage: perf stat [<options>] <command>
    
        -e, --event <event>   event selector. use 'perf list' to list available events
        -i, --inherit         child tasks inherit counters
        -p, --pid <n>         stat events on existing pid
        -a, --all-cpus        system-wide collection from all CPUs
        -c, --scale           scale/normalize counters
        -v, --verbose         be more verbose (show counter open errors, etc)
        -r, --repeat <n>      repeat command and print average + stddev (max: 100)
        -n, --null            null run - dont start any counters
    [root@localhost perf]# perf stat  dd if=/dev/zero of=/dev/null count=1000000 1000000+0 records in
    1000000+0 records out
    512000000 bytes (512 MB) copied, 0.522033 seconds, 981 MB/s
    
     Performance counter stats for 'dd if=/dev/zero of=/dev/null count=1000000':
    
         514.982845  task-clock-msecs         #      0.978 CPUs 
                  2  context-switches         #      0.000 M/sec
                  0  CPU-migrations           #      0.000 M/sec
                200  page-faults              #      0.000 M/sec
                  0  cycles                   #      0.000 M/sec
                  0  instructions             #      0.000 IPC  
                  0  cache-references         #      0.000 M/sec
                  0  cache-misses             #      0.000 M/sec
    
        0.526756322  seconds time elapsed
    [root@localhost perf]# perf stat -e r1a8 -a sleep 1
    
     Performance counter stats for 'sleep 1':
    
                  0  raw 0x1a8                #      0.000 M/sec
    
        1.003503666  seconds time elapsed
    [root@localhost perf]# perf stat -r 5 sleep 1
    
     Performance counter stats for 'sleep 1' (5 runs):
    
           3.083876  task-clock-msecs         #      0.003 CPUs    ( +-  13.690% )
                  1  context-switches         #      0.000 M/sec   ( +-   0.000% )
                  0  CPU-migrations           #      0.000 M/sec   ( +-     nan% )
                143  page-faults              #      0.046 M/sec   ( +-   0.171% )
                  0  cycles                   #      0.000 M/sec   ( +-     nan% )
                  0  instructions             #      0.000 IPC     ( +-     nan% )
                  0  cache-references         #      0.000 M/sec   ( +-     nan% )
                  0  cache-misses             #      0.000 M/sec   ( +-     nan% )
    
        1.005166673  seconds time elapsed   ( +-   0.050% )
  • 相关阅读:
    程序员学习新技术的10个建议
    ES6 let和const总结归纳
    ES6 对象扩展运算符 res运算符
    ES6 变量的解构赋值
    ES6的开发环境搭建
    vue给同一元素绑定单击click和双击事件dblclick,执行不同逻辑
    "双非"应届生校招如何获得大厂青睐?(内附前端大厂面经+技术岗超全求职攻略)
    移动端300ms与点透总结
    Web移动端适配总结
    正则表达式总结
  • 原文地址:https://www.cnblogs.com/zengkefu/p/4942437.html
Copyright © 2020-2023  润新知