2022年Linux高级系统级性能分析工具-perf- .pdf

上传人:C****o 文档编号:32195796 上传时间:2022-08-08 格式:PDF 页数:7 大小:617.94KB
返回 下载 相关 举报
2022年Linux高级系统级性能分析工具-perf- .pdf_第1页
第1页 / 共7页
2022年Linux高级系统级性能分析工具-perf- .pdf_第2页
第2页 / 共7页
点击查看更多>>
资源描述

《2022年Linux高级系统级性能分析工具-perf- .pdf》由会员分享,可在线阅读,更多相关《2022年Linux高级系统级性能分析工具-perf- .pdf(7页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、Linux 的系统级性能剖析工具 perf(三)承刚TAOBAOKernel T第四章 perf stat4.1perf stat 的基本使用方法perf stat 工具用来剖析一个应用程序的性能概况。使用方法非常简单,下面的命令能够得到 ls 程序的一些典型性能数据:$perf stat ls上述命令给出的性能概况如图16 所示。图 16. perf stat ls的输出结果从图上可以看到, perf stat 工具利用 10 个典型性能事件剖析了应用程序。task clock事件表示目标任务 ls 真正占用处理器的时间,单位是毫秒。我们将其称为任务执行时间。如图16 所示, ls 在处理器

2、上执行了近4 毫秒。 “ 0.256 CPUsutilized”表示目标任务的处理器占用率。处理器占用率表示目标任务的执行时间与持续时间的比值。 持续时间是指从任务提交到执行结束之间的总时间。对操作系统有过了解的读者应该知道,Linux这种多任务分时操作系统中,一个任务不太可能在执行期间始终占据处理器。操作系统会根据调度策略(linux 目前使用名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 7 页 - - - - - - - - - CFS调度算法)合理安排各个任务轮流

3、使用处理器,每次调度会产生一次上下文切换。在此期间操作系统还需处理大量中断。因此,一个任务的执行时间可能会很短,但是它的持续时间会远高于此(除非此任务是优先级最高的实时任务)。以图 16 中的例子来说, ls 的执行时间为 3.98毫秒,而持续为 15.58 毫秒,处理器占用率为 0.256。在此期间,系统共发生了45 次上下文切换。平均每秒发生0.011*106次。上下文切换次数的均值是上下文切换次数与任务执行时间的比值。在多(核)处理器系统中,Linux为了维持各个处理器的负载均衡,会在特定条件下将某个任务从一个处理器迁往另外一个处理器。此时,我们便说发生了一次处理器迁移。从图16 上看到

4、, ls在执行期间没有被操作系统迁移过。Linux的内存管理子系统采用了分页机制。当应用程序请求的页面尚未建立、请求的页面不在内存中、 或者请求的页面虽然在内存中,但尚未建立物理地址与虚拟地址的映射关系时,都会触发一次缺页异常(page fault) 。内核在捕获缺页异常时,根据异常种类进行相应的处理。另外,TLB不命中,页面访问权限不匹配等情况也会触发缺页异常。内核中对 pagefaults (PERF_COUNT_SW_PAGE_FAULTS)事件的精确定义是缺页异常的处理函数do_page_fault()被执行。程序 ls 在执行期间共触发了320 次缺页异常。平均发生率为每秒0.08*

5、106次。cycles 为ls 程序消耗的处理器周期数。 如果将被 ls 占据的那部分时间看作一个抽象处理器,它的主频只需为0.75GHz便可以在 3.98 毫秒内完成 ls 命令的处理。instructions是指命令 ls 执行期间产生的处理器指令数。 IPC (instructions perfcycle)为 0.69。IPC是评价处理器与应用程序性能的重要指标。在X86这种 CSIC名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 7 页 - - - - - - -

6、 - - 处理器上, 很多指令需要多个处理器周期才能执行完毕。另外,有些指令在流水线上未必能成功引退 (retired) ,从而形成无效指令。 长指令与无效执行越多, IPC就越低,处理器的利用率与程序的执行效率也就越低。因此,IPC在一定程度下,让我们对程序的执行效率有一个宏观认识。branches 是指程序在执行期间遇到的分支指令数。branch misses 则是预测错误的分支指令数。 绝大多数现代处理器都具有分支预测与OOO (Out of Order)执行机制,以充分利用CPU内部的资源,减少流水线停顿周期。当处理器遇到分支指令时, 正常来说,需要等待分支条件计算完毕才能知道后续指令

7、流该往何处跳转。这就导致在等待分支条件计算期间,流水线上出现若干周期的停顿 (流水线 Hazard) 。体系结构的经典著作计算机体系结构:量化研究方法上说,分支指令产生的性能影响为10%30%2,流水线越长,性能影响就越大。为了减少分支指令造成的流水线停顿,从P5处理器开始引入了分支预测机制。当处理器无法判断指令的跳转方向时, 便通过分支预测单元选择一个最有可能的跳转方向。但是,既然是预测,就存在预测失败的可能。当分支预测失败时,会对处理器周期造成较大的浪费。在5 发射 10 级流水线的处理器中,当分支预测的准确率为 90%时,处理器带宽会浪费47%;而如果准确率提高到96%,带宽浪费可降低至

8、 26%3。Corei7 以及 Xeon5500 等较新的处理器在分支预测失效时,已经无需刷新全部流水线, 但错误指令加载与计算导致的无效开销依然不可小觑。这就要求我们在编写代码时,应尽量减少分支预测错误的次数。但在此之前,通过perf stat,perf top,perf record 等工具查查分支预测失效率,以及导致分支预测失效过高的热点代码是非常有必要的。 branchmisses一行中的 *% of allbranches 即为目标程序执行期间的分支预测失效率。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整

9、理 - - - - - - - 第 3 页,共 7 页 - - - - - - - - - 4.2perf stat 的参数介绍perf stat 工具也提供了若干参数,其中一些与perf top 类似,下面我们主要讲讲 perf stat 独有的参数。 e or event 选择性能事件,参考perf top 与 perf list 的相关章节。 filter配合 Tracepoints使用,等同于 ftrace 中 filter 的概念,根据正则表达式追踪指定的函数。 i or no inherit禁止子任务继承父任务的性能计数器。类似于 perf top 中的 i 参数,只是此处是禁止继

10、承机制。 c or scale 要求底层驱动记录计数器的run 与 enabled 时间。此选项默认打开,且不能关闭。 r or repeat 重复执行 n 次目标程序,并给出性能指标在n 次执行中的变化范围。命令:$perf stat r 10ls /dev/null将重复执行 10 次” ls /dev/null”,并给出如下结果:图 17. perf stat 连续执行 10 次后给出的统计信息与图 16 相比,图 17 上多了一列统计信息。 括号里的百分比为n 个性能数据的标准差与数学期望的比值。 这个值越大, 表示各样本与平均值之间的偏差就越名师资料总结 - - -精品资料欢迎下载

11、- - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 7 页 - - - - - - - - - 大,也就是说样本的波动幅度就越大。 v or verbose 开启此选项后, perf stat 将显示更丰富的信息,比如打开计数器时系统报出的错误信息,各个计数器的计数值、运行时间与使能时间等信息。 n or null 开启这个选项后, perf stat 仅仅输出目标程序的执行时间,而不开启任何性能计数器。执行命令:$perf stat n ls/dev/nullperf stat 将给出如图 18 所示的信息。图 1

12、8. perf stat n 的输出信息perf stat 通过系统调用 clock_gettime(CLOCK_MONOTONIC,&ts)记录目标程序的执行时间,而没有利用任何性能计数器。 d or detailed开启该选项后, perf stat 将给出更丰富的性能指标。执行命令:$perf stat d ls/dev/nullperf stat 将给出如图 19 所示的信息。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 7 页 - - - - - - - -

13、- 图 19. perf stat d 的显示信息与前图相比,开启 d选项后,perf stat 给出了 L1 dcache loads等 Cache相关的性能指标。 S or sync在执行目标程序前,先执行系统调用sync(),将内存缓冲区中的数据写回磁盘。从而使得目标程序在执行时能够获得更干净的环境。 A or no aggr 此选项必须与 a选项一起使用。 开启此选项后, perf stat 将给出每个处理器上相应的信息。执行命令:$perf stat a Als /dev/nullperf stat 给出的信息如图20 所示。图 20. perf stat A 的显示信息 x or

14、field separator如果希望将 perf stat 的信息导进数据库, 或者希望利用某些文本分析工具对输出信息进行分析,就需要获得格式化的输出结果。 x参数能够满足这项需求。如果我们希望各项输出信息之间通过 ; 分隔,可以采用如下命令:名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 6 页,共 7 页 - - - - - - - - - $perf stat x; ls /dev/nullperf stat 的输出信息如图21 所示。图 21. perf stat x的输出信息 o or output 可以通过此选项将perf stat 的结果输出到指定文件。 append以追加模式,将输出信息写入输出文件。 pre 通过此参数,可以指定在目标程序之前执行的程序。 post 通过此参数,可以指定在目标程序之后执行的程序。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 7 页,共 7 页 - - - - - - - - -

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 高考资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com