perf性能分析工具命令简单实用

perf性能分析工具命令简单实用

perf list

使用 perf list 命令可以列出所有能够触发 perf 采样点的事件

Hardware Event 是由 PMU 硬件产生的事件,比如 cache 命中,当您需要了解程序对硬件特性的使用情况时,便需要对这些事件进行采样;

Software Event 是内核软件产生的事件,比如进程切换,tick 数等 ;

Tracepoint event 是内核中的静态 tracepoint 所触发的事件,这些 tracepoint 用来判断程序运行期间内核的行为细节,比如 slab 分配器的分配次数等。

perf stat

用法perf stat

可能的输出:

 Performance counter stats for 'java -jar chatServer-1.0.0-all.jar':

       1109.919825      task-clock (msec)         #    0.046 CPUs utilized          
             1,356      context-switches          #    0.001 M/sec                  
                92      cpu-migrations            #    0.083 K/sec                  
            10,399      page-faults               #    0.009 M/sec                  
         cycles                                                      
         instructions                                                
         branches                                                    
         branch-misses                                               

      24.177158519 seconds time elapsed

task-clock (msec):CPU 利用率,该值高,说明程序的多数时间花费在 CPU 计算上而非 IO。

context-switches:进程切换次数,记录了程序运行过程中发生了多少次进程切换,频繁的进程切换是应该避免的。

cpu-migrations:表示进程  运行过程中发生了多少次 CPU 迁移,即被调度器从一个 CPU 转移到另外一个 CPU 上运行。

page-faults:内存页面交换

perf top

perf top命令和top类似。Perf top 用于实时显示当前系统的性能统计信息。该命令主要用来观察整个系统当前的状态,比如可以通过查看该命令的输出来查看当前系统最耗时的内核函数或某个用户进程。

perf record and report

perf record

perf report

可能得输出

Samples: 5K of event 'cpu-clock', Event count (approx.): 1451250000                                                                                                                                                          
Overhead  Command  Shared Object       Symbol                                                                                                                                                                                
   1.84%  java     libjvm.so           [.] SymbolTable::lookup_only
   1.72%  java     [vdso]              [.] __vdso_clock_gettime
   1.31%  java     libjvm.so           [.] os::PlatformEvent::park
   1.10%  java     [kernel.kallsyms]   [k] finish_task_switch
   1.09%  java     libzip.so           [.] inflate_fast
   0.98%  java     [kernel.kallsyms]   [k] clear_page_c_e

 

参考资料:https://www.ibm.com/developerworks/cn/linux/l-cn-perf1/

你可能感兴趣的:(C/C++,PHP,Java)