• perf 命令


    perf 命令是一款Linux系统性能分析工具,能够进行函数级热点查找

    常用的有 perf top 、perf record 、 perf report

    1、perf top 命令使用

    常用参数

    -e:指定性能事件
    -a:显示在所有CPU上的性能统计信息
    -C:显示在指定CPU上的性能统计信息
    -p:指定进程PID
    -t:指定线程TID
    -K:隐藏内核统计信息
    -U:隐藏用户空间的统计信息
    -s:指定待解析的符号信息
    ‐g or ‐‐call‐graph  <output_type,min_percent,call_order>
     graph: 使用调用树,将每条调用路径进一步折叠。这种显示方式更加直观。
     每条调用路径的采样率为绝对值。也就是该条路径占整个采样域的比率。
     fractal
     默认选项。类似与 graph,但是每条路径前的采样率为相对值。
     flat
     不折叠各条调用
     选项 call_order 用以设定调用图谱的显示顺序,该选项有 2个取值,分别是
     callee 与caller。
     将该选项设为callee 时,perf按照被调用的顺序显示调用图谱,上层函数被下层函数所调用。
     该选项被设为caller 时,按照调用顺序显示调用图谱,即上层函数调用了下层函数路径,也不显示每条调用路径的采样率
    

    1.1 示例、 内容会实时刷新,但这样查看当前结果并不会进行保存
    perf top -a -g -p `pidof mysqld`

    +   75.80%     0.02%  mysqld               [.] handle_connection                                                                                                  
    -   75.63%     0.24%  mysqld               [.] do_command                                                                                                         
       - 28.39% do_command                                                                                                                                            
          + 26.39% dispatch_command                                                                                                                                   
          - 2.27% Protocol_classic::get_command                                                                                                                       
             - 2.17% Protocol_classic::read_packet                                                                                                                    
                - 2.17% my_net_read                                                                                                                                   
                   + 2.23% net_read_packet                                                                                                                            
    +   68.98%     0.59%  mysqld               [.] dispatch_command                                                                                                   
    +   64.29%     0.06%  mysqld               [.] mysqld_stmt_execute                                                                                                
    +   63.52%     0.20%  mysqld               [.] Prepared_statement::execute_loop                                                                                   
    +   61.90%     0.11%  mysqld               [.] Prepared_statement::execute                                                                                        
    +   60.04%     0.29%  mysqld               [.] mysql_execute_command                                                                                              
    +   38.38%     0.11%  mysqld               [.] execute_sqlcom_select                                                                                              
    +   33.61%     0.05%  mysqld               [.] handle_query                                                                                                       
    +   32.14%     0.00%  libpthread-2.17.so   [.] start_thread                                                                                                       
    +   27.92%     0.00%  mysqld               [.] pfs_spawn_thread                                                                                                   
    +   25.31%     0.12%  [kernel]             [k] do_syscall_64                                                                                                      
    +   15.84%     0.07%  mysqld               [.] st_select_lex::optimize                                                                                            
    +   15.53%     0.23%  mysqld               [.] JOIN::optimize                                                                                                     
    +   15.36%     0.49%  mysqld               [.] btr_cur_search_to_nth_level                                                                                        
    +   15.03%     0.06%  mysqld               [.] JOIN::exec                                                                                                         
    +   12.84%     0.11%  mysqld               [.] JOIN::make_join_plan                                                                                               
    +   12.80%     0.78%  mysqld               [.] buf_page_get_gen                                                                                                   
    +   11.94%     0.06%  mysqld               [.] sub_select                                                                                                         
    +    9.44%     0.06%  mysqld               [.] buf_read_page_low                                                                                                  
    +    9.32%     0.00%  [kernel]             [k] entry_SYSCALL_64_after_hwframe                                                                                     
    +    8.82%     0.72%  mysqld               [.] row_search_mvcc                                                                                                    
    +    8.79%     0.08%  mysqld               [.] fil_io                                                                                                             
    +    8.19%     0.03%  mysqld               [.] buf_read_page                                                                                                      
    +    8.18%     0.00%  mysqld               [.] Sql_cmd_update::execute                                                                                            
    +    8.01%     0.01%  mysqld               [.] handler::ha_write_row                                                                                              
    +    7.75%     0.11%  mysqld               [.] ha_innobase::index_read                                                                                            
    +    7.69%     0.01%  mysqld               [.] Sql_cmd_update::try_single_table_update                                                                            
    +    7.24%     0.02%  mysqld               [.] open_tables_for_query                                                                                              
    +    7.17%     0.12%  libpthread-2.17.so   [.] __libc_send                                                                                                        
    +    7.13%     0.13%  mysqld               [.] open_tables                                                                                                        
    +    7.04%     0.11%  mysqld               [.] evaluate_join_record  
    


    #### 1.2 示例、perf record/perf report perf record 可以将分析信息保存到文件 perf report 可以查看文件中的性能信息

    例:将性能分析结果输出到 data.perf 文件中
    perf record -a -g -p `pidof mysqld` -o data.perf

    例:读取 data.perf 文件
    perf report -g -i data.perf

    2、利用 data.perf 性能文件,生成火焰图

    git hub:https://github.com/brendangregg/FlameGraph.git
    perf script -i perf.data > perf.unfold
    cd FlameGraph
    ./stackcollapse-perf.pl /root/perf.unfold &> perf.folded
    ./flamegraph.pl perf.folded > perf.svg
    
    #生成文件使用浏览器打开即可正常查看
    

    参考:https://www.shuzhiduo.com/A/WpdKrb1m5V/

  • 相关阅读:
    你好,明天
    一句话实现星级评价
    react路由
    react插件包
    react 组件列表
    css小demo
    react的项目坑
    配置react-sass
    node-sass下载失败 关于webpack
    react render
  • 原文地址:https://www.cnblogs.com/nanxiang/p/16013509.html
Copyright © 2020-2023  润新知