zoukankan      html  css  js  c++  java
  • linux perf tool的编译以及使用

    1. 介绍

    Perf is a profiler tool for Linux 2.6+ based systems that abstracts away CPU hardware differences in Linux performance measurements and presents a simple commandline interface. Perf is based on the perf_events interface exported by recent versions of the Linux kernel. This article demonstrates the perf tool through example runs. Output was obtained on a Ubuntu 11.04 system with kernel 2.6.38-8-generic results running on an HP 6710b with dual-core Intel Core2 T7100 CPU). For readability, some output is abbreviated using ellipsis ([...]).

     2. perf支持的功能

    perf
    
     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
      archive         Create archive with object files with build-ids found in perf.data file
      bench           General framework for benchmark suites
      buildid-cache   Manage <tt>build-id</tt> cache.
      buildid-list    List the buildids in a perf.data file
      diff            Read two perf.data files and display the differential profile
      inject          Filter to augment the events stream with additional information
      kmem            Tool to trace/measure kernel memory(slab) properties
      kvm             Tool to trace/measure kvm guest os
      list            List all symbolic event types
      lock            Analyze lock events
      probe           Define new dynamic tracepoints
      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)
      script          Read perf.data (created by perf record) and display trace output
      stat            Run a command and gather performance counter statistics
      test            Runs sanity tests.
      timechart       Tool to visualize total system behavior during a workload
      top             System profiling tool.
    
     See 'perf help COMMAND' for more information on a specific command.

    3. perf的编译方法

    编译ARM版本的perf可以使用下面命令编译:

      cd kernel/tools/perf
      export CROSS_COMPILE=arm-linux-gnueabihf-
      /usr/bin/make ARCH=arm LDFLAGS="-static"

    4. perf的常用debug方法

    # CPU counter statistics for the specified command:
    perf stat command
    
    # Detailed CPU counter statistics (includes extras) for the specified command:
    perf stat -d command
    
    # CPU counter statistics for the specified PID, until Ctrl-C:
    perf stat -p PID
    
    # CPU counter statistics for the entire system, for 5 seconds:
    perf stat -a sleep 5
    
    # Various basic CPU statistics, system wide, for 10 seconds:
    perf stat -e cycles,instructions,cache-references,cache-misses,bus-cycles -a sleep 10
    
    # Various CPU level 1 data cache statistics for the specified command:
    perf stat -e L1-dcache-loads,L1-dcache-load-misses,L1-dcache-stores command
    
    # Various CPU data TLB statistics for the specified command:
    perf stat -e dTLB-loads,dTLB-load-misses,dTLB-prefetch-misses command
    
    # Various CPU last level cache statistics for the specified command:
    perf stat -e LLC-loads,LLC-load-misses,LLC-stores,LLC-prefetches command
    
    # Using raw PMC counters, eg, counting unhalted core cycles:
    perf stat -e r003c -a sleep 5 
    
    # PMCs: counting cycles and frontend stalls via raw specification:
    perf stat -e cycles -e cpu/event=0x0e,umask=0x01,inv,cmask=0x01/ -a sleep 5
    
    # Count syscalls per-second system-wide:
    perf stat -e raw_syscalls:sys_enter -I 1000 -a
    
    # Count system calls by type for the specified PID, until Ctrl-C:
    perf stat -e 'syscalls:sys_enter_*' -p PID
    
    # Count system calls by type for the entire system, for 5 seconds:
    perf stat -e 'syscalls:sys_enter_*' -a sleep 5
    
    # Count scheduler events for the specified PID, until Ctrl-C:
    perf stat -e 'sched:*' -p PID
    
    # Count scheduler events for the specified PID, for 10 seconds:
    perf stat -e 'sched:*' -p PID sleep 10
    
    # Count ext4 events for the entire system, for 10 seconds:
    perf stat -e 'ext4:*' -a sleep 10
    
    # Count block device I/O events for the entire system, for 10 seconds:
    perf stat -e 'block:*' -a sleep 10
    
    # Count all vmscan events, printing a report every second:
    perf stat -e 'vmscan:*' -a -I 1000

    reference: 

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

    http://www.brendangregg.com/perf.html#StaticKernelTracing

  • 相关阅读:
    ArcGIS API for javascript开发笔记(四)——GP服务调用之GP模型的规范化制作详解
    ArcGIS API for javascript开发笔记(三)——解决打印输出的中文为乱码问题
    ArcGIS API for javascript开发笔记(二)——解决ArcGIS Service中的服务在内网环境下无法进行javascript预览问题
    解决GP服务产生的结果无法自动发布为地图服务的问题
    解决oracle12c安装报“[INS-30131]执行安装程序验证所需的初始设置失败(原因:无法访问临时位置)”方法
    Pdf File Writer 中文应用(PDF文件编写器C#类库)
    七牛云存储客户端(本人开发,开源)
    如鹏网 net高级技术 第二章 委托和事件(复习)
    如鹏网 net高级技术 第一章 各种知识点(复习)
    写个QuartzHelper类
  • 原文地址:https://www.cnblogs.com/smilingsusu/p/14323686.html
Copyright © 2011-2022 走看看