您的位置 首页 国产IC

你知道perf学习-linux自带功能剖析东西怎样用?

你知道perf学习-linux自带性能分析工具怎么用?-Linux性能调优工具,32内核以上自带的工具,软件性能分析。在2.6.31及后续版本的linux内核里,安装perf非常的容易。

什么是perf?

Linux功能调优东西,32内核以上自带的东西,软件功能剖析。在2.6.31及后续版别的linux内核里,装置perf十分的简单。

简直可以处理一切与功能相关的工作。

什么是功能工作?

指在处理器或许操作体系中发生,或许影响到程序功能的硬件工作或许软件工作。

首要重视点在哪里?

算法优化(空间复杂度、时刻复杂度)、代码优化(说到履行速度、削减内存占用)

点评程序对硬件资源的运用情况,例如各级cache的拜访次数,各级cache的丢掉次数、流水线中止周期、前端总线拜访次数等。

点评程序对操作体系资源的运用情况,体系调用次数、上下文切换次数、使命搬迁次数。

基本原理?

硬件的话选用PMC(performance monitoring unit)CPU的部件,在特定的条件下勘探的功能工作是否发生以及发生的次数。

软件功能测验,内置于kernel,散布在各个功能模块中,计算和操作体系相关功能工作。

怎么运用高精度的采样?

假如需求选用高精度的采样,需求在拟定功能工作时,在工作后增加后缀“:p”或许“:pp”

[cpp] view plain copy

0:无精度确保  

1:采样指令好触发功能时刻的指令误差为常数(:p)  

2:尽量确保误差为0(:pp)  

3:确保误差有必要为0(:ppp)  

有哪些常用的指令?

1、perf list 列出一切可以触发perf采样点的工作(当时硬件环境支撑的功能工作)

全体分为三类hardware(硬件发生)、software(内核软件发生)、tradepoint(内核中静态tracepoint触发工作)。

[html] view plain copy

List of pre-defined events (to be used in -e):  

cpu-cycles OR cycles                               [Hardware event]处理器周期工作  

stalled-cycles-frontend OR idle-cycles-frontend    [Hardware event]  

stalled-cycles-backend OR idle-cycles-backend      [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]  

alignment-faults                                   [Software event]  

emulaTIon-faults                                   [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]  

2、perf stat剖析程序的全体功能

使用10个典型工作剖析了应用程序。

task-clock:方针使命真真占用处理器的时刻,单位是毫秒,咱们称之为使命履行时刻,

后边是使命的处理器占用率(履行时刻和持续时刻的比值)

持续时刻值从使命提交到使命结束的总时刻(总时刻在stat结束之后会打印出来)。

context-switches:上下文切换次数,前半部分是切换次数,后边是均匀每秒发生次数(M是10的6次方)。

cpu-migrations:处理器搬迁,linux为了方位各个处理器的负载均衡,

会在特定的条件下将某个使命从一个处理器迁往别的一个处理器,此刻就是发生了一次处理器搬迁。

page-fault:缺页反常,linux内存办理子体系选用了分页机制,

当应用程序恳求的页面没有树立、恳求的页面不在内存中或许恳求的页面虽在在内存中,

可是没有树立物理地址和虚拟地址的映射联系是,会触发一次缺页反常。

cycles:使命耗费的处理器周期数

instructions:使命履行期间发生的处理器指令数,IPC(instructions perf cycle)

IPC是点评处理器与应用程序功能的重要目标。(许多指令需求多个处理周期才干履行结束),

IPC越大越好,阐明程序充分使用了处理器的特征。

branches:程序在履行期间遇到的分支指令数。

branch-misses:猜测过错的分支指令数

cache-misses:cache时效的次数

cache-references:cache的射中次数

常用的参数如下

[cpp] view plain copy

-e,指定功能工作  

-p,指定剖析进程的PID  

-t,指定待剖析线程的TID  

-r N,接连剖析N次  

-d,全面功能剖析,选用更多的功能工作  

一次剖析后的成果如下:

[html] view plain copy

Performance counter stats for process id '21787':  

42677.253367 task-clock                #    0.142 CPUs utilized           

587,906 context-switches          #    0.014 M/sec                   

29,209 CPU-migrations            #    0.001 M/sec                   

117 page-faults               #    0.000 M/sec                   

82,341,400,508 cycles                    #    1.929 GHz                     [83.48%]  

61,262,984,952 stalled-cycles-frontend   #   74.40% frontend cycles idle    [83.28%]  

43,113,701,768 stalled-cycles-backend    #   52.36% backend  cycles idle    [66.72%]  

44,023,301,495 instructions              #    0.53  insns per cycle         

#    1.39  stalled cycles per insn [83.50%]  

8,137,448,528 branches                  #  190.674 M/sec                   [83.22%]  

430,957,756 branch-misses             #    5.30% of all branches         [83.34%]  

300.393753095 seconds time elapsed  

3、perf top实时显现体系/进程的功能计算信息

默许功能工作“cycles CPU周期数”进行全体系的功能剖析

常见的参数如下:

[cpp] view plain copy

-p:指定进程PID  

-t:指定线程的TID  

-a:剖析整个体系的功能(默许)  

-d:界面刷新周期,默许是2秒  

成果输出中,份额是该符号引发的功能时刻在整个监测域中占的份额,一般称为热度。

[html] view plain copy

samples  pcnt function                                                                               DSO  

_______ _____ ______________________________________________________________________________________ _________  

61.00 19.4% native_write_msr_safe                                                                  [kernel]  

18.00  5.7% JVM_InternString                                                                       libjvm.so  

17.00  5.4% find_busiest_group                                                                     [kernel]  

17.00  5.4% _spin_lock                                                                             [kernel]  

12.00  3.8% dev_hard_start_xmit                                                                    [kernel]  

11.00  3.5% tg_load_down                                                                           [kernel]  

9.00  2.9% futex_wake                                                                             [kernel]  

8.00  2.5% do_futex                                                                               [kernel]  

7.00  2.2% load_balance_fair                                                                      [kernel]  

7.00  2.2% weighted_cpuload                                                                       [kernel]  

7.00  2.2% update_cfs_shares                                                                      [kernel]  

7.00  2.2% JVM_LatestUserDefinedLoader                                                            libjvm.so  

6.00  1.9% update_cfs_load                                                                        [kernel]  

5.00  1.6% _ZN16SystemDictionary30resolve_instance_class_or_nullE12symbolHandle6HandleS1_P6Thread libjvm.so  

5.00  1.6% br_sysfs_delbr                                                                         [bridge]  

5.00  1.6% futex_wait            

4、perf  record/report记载一段时刻内体系/进程的功能工作

默许在当时目录下生成数据文件:perf.data

report读取生成的perf.data文件,-i参数指定途径

了解perf,是功能剖析的开端。

http://www.ibm.com/developerworks/cn/linux/l-cn-perf1/

 

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/bandaoti/ic/88714.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部