linux系统性能分析之perf

perf是一款Linux系统性能分析工具,可用于分析CPU性能、内存使用、IO性能等方面,它基于内核的事件采样机制,可以对系统进行各种性能分析,包括函数调用耗时、指令执行频率、缓存命中率、IO操作耗时等等。

centos7中默认未安装,请运行如下命令:

 yum  -y   install  perf


下面是一些perf命令的使用示例及其显示信息的含义:
perf top:实时监测系统性能,显示最耗费CPU的函数和指令,按照CPU时间从高到低排列。

完毕!
[root@localhost ~]# perf  top
Samples: 1K of event 'cpu-clock', 4000 Hz, Event count (approx.): 44445280 lost: 0/0 drop: 0/0          
Overhead  Shared Object                              Symbol                                             
  35.50%  [kernel]                                   [k] _raw_spin_unlock_irqrestore
   6.40%  libglib-2.0.so.0.5600.1                    [.] 0x0000000000049607
   5.03%  [kernel]                                   [k] mpt_put_msg_frame
   4.91%  [kernel]                                   [k] __do_softirq
   3.36%  [kernel]                                   [k] tick_nohz_idle_enter
   2.15%  [kernel]                                   [k] e1000_xmit_frame
   1.28%  libelf-0.176.so                            [.] gelf_getsym
   1.26%  [kernel]                                   [k] ata_sff_pio_task
   1.09%  [kernel]                                   [k] _raw_qspin_lock
   0.95%  libelf-0.176.so                            [.] gelf_getrela
   0.87%  perf                                       [.] 0x00000000001be3e4
   0.82%  libslang.so.2.2.4                          [.] SLsmg_write_chars
   0.81%  [kernel]                                   [k] finish_task_switch
   0.80%  [kernel]                                   [k] __d_lookup
   0.76%  [kernel]                                   [k] generic_exec_single
   0.61%  libglib-2.0.so.0.5600.1                    [.] 0x00000000000495e7
   0.57%  [kernel]                                   [k] queue_delayed_work_on
   0.56%  [kernel]                                   [k] watchdog
   0.54%  libvmtools.so.0.0.0                        [.] Backdoor_InOut
   0.52%  perf                                       [.] perf_evsel__parse_sample
   0.49%  [kernel]                                   [k] sysret_signal
   0.49%  [kernel]                                   [k] xfsaild
   0.49%  libc-2.17.so                               [.] __GI___printf_fp_l
   0.49%  libglib-2.0.so.0.5600.1                    [.] 0x00000000000495d7
   0.47%  perf                                       [.] dso__find_symbol
   0.46%  [kernel]                                   [k] ioread8_rep
   0.45%  libc-2.17.so                               [.] __times
   0.45%  libglib-2.0.so.0.5600.1                    [.] g_main_context_check
   0.45%  libmozjs-52.so.0.0.0                       [.] 0x00000000004a7578
   0.44%  libmozjs-52.so.0.0.0                       [.] 0x00000000004f05c5
   0.43%  [kernel]                                   [k] module_put
   0.43%  [kernel]                                   [k] native_set_pte_at


perf stat:统计指定命令的性能数据,包括CPU周期、指令数、缓存命中率等,还可以指定事件类型进行监测,如cache-references、cache-misses、page-faults等。


 Performance counter stats for 'system wide':

        767,060.61 msec cpu-clock                 #    2.000 CPUs utilized          
            38,056      context-switches          #    0.050 K/sec                  
             1,666      cpu-migrations            #    0.002 K/sec                  
            33,795      page-faults               #    0.044 K/sec                  
   <not supported>      cycles                                                      
                 0      stalled-cycles-frontend                                     
   <not supported>      instructions                                                
   <not supported>      branches                                                    
   <not supported>      branch-misses                                               

     383.535103505 seconds time elapsed


perf record:记录应用程序的性能事件,可以使用perf report分析结果,找出性能瓶颈,同时也可以用于进行CPU调试。perf report:显示perf record命令生成的性能数据报告,包括各种事件的数量、执行时间、调用栈信息等,以帮助分析性能问题。
perf annotate:显示函数源代码及相关指令的注释信息,以帮助定位代码问题。
perf trace:监测系统调用和信号,可以显示系统调用执行时间、返回码以及相关进程的信息等。
perf probe:动态添加探测点,收集函数调用信息,可以通过perf report命令来显示信息。
通过以上命令,可以方便地分析系统性能瓶颈,查找问题的根源,并进行优化。当然,需要根据具体情况选择使用相应的命令,从而达到更好的性能优化效果。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
### 回答1: perf是一个流行的系统级性能分析工具,它可以帮助用户监测系统资源的使用情况,找出程序的性能瓶颈,提高程序的运行效率。perf具有以下几个特点: 第一,perf可以监控CPU、内存、硬盘I/O、网络等系统资源的使用情况,通过分析这些数据,可以找到程序的瓶颈所在。 第二,perf支持多种测量模式,包括采样模式、跟踪模式、事件计数模式等,方便用户根据自己的需要进行性能分析。 第三,perf可以和其他一些工具结合使用,如火焰图、Callgrind等,可以更加直观地展示程序的性能瓶颈,便于用户找到问题。 第四,perf对于内核开发人员也十分有用,可以帮助他们在开发过程中找到内核的性能问题,优化内核代码。 总之,perf是一款功能强大的性能分析工具,可以帮助用户在开发过程中找到程序的性能问题,提高程序的运行效率。 ### 回答2: perf是一款开源的系统级性能分析工具,它可以帮助开发者实现对Linux系统的性能分析和优化。perf可以测量和记录CPU的使用率、缓存的效率、内存的占用、磁盘I/O的读写速度等关键性能指标。 perf具有很强的功能,如事件计数器、系统调用跟踪、板载性能监视器等。使用perf分析工具来优化代码是极为有效的,而且很容易实现。perf的操作简单易学,它使用命令行用户界面,可以轻松地探测出代码中的性能削弱点。 除此之外,perf还提供了分析结果保存、数据可视化和报告生成等功能,这些功能将有助于关键的性能指标的更好的整理和分析perf还支持监视多线程程序,可以帮助开发人员分析并发应用程序的性能瓶颈。 总的来说,perf是一款非常强大的系统级性能分析工具,它可以帮助开发人员进行更加高效、精确地性能分析。相比于其他分析工具,perf的性能表现更加稳定,且支持多种类型的分析,因此成为了许多开发人员在Linux系统上进行性能测试和优化的首选工具之一。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

IT大白鼠

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值