Chinaunix首页 | 论坛 | 博客
  • 博客访问: 690737
  • 博文数量: 192
  • 博客积分: 1875
  • 博客等级: 上尉
  • 技术积分: 2177
  • 用 户 组: 普通用户
  • 注册时间: 2010-10-23 23:21
个人简介

有时候,就是想窥视一下不知道的东东,因为好奇!

文章分类

全部博文(192)

文章存档

2024年(8)

2023年(3)

2019年(1)

2018年(1)

2017年(2)

2016年(69)

2015年(53)

2014年(14)

2013年(1)

2012年(5)

2011年(25)

2010年(9)

分类: LINUX

2016-02-25 21:21:52

perf tools工具,使用记录备忘。
perf tools是linux综合性能概要分析工具。可用于查找系统整体性能降低的原因。是由于Oprofile与内核的维护频率不同,导致Oprofile不能识别内核上支持的CPU,而开始开发的工具。

0. 环境
     ubuntu 14.04.3 LTS
1. 安装
   perf工具集安装命令
    sudo apt-get install linux-tools-generic-its-trusty linux-tools-3.19.0-25-generic linux-cloud-tools-3.19.0.25-generic
    如下图
    
2. 运行perf tools
  a. 列出事件列表
   perf list
   
以上事件名称可作为-e选项的参数(perf top -e),进行基于不同指标的概要分析。sudo perf list可列出更多事件
b. 进行概要分析
#sudo perf top
 输出如下:每2秒更新一次
  
上图中,显示的是各函数所消耗的CPU周期的百分比,所在文件名,符号(或地址)。找不到符号的函数地址直接以16进制数显示

c. 对指定事件进行概要分析, 例如
   sudo perf top -e net:netif_rx
   

d. 以“选定事件”/“记录数据“/”分析数据”的步骤进行分析。
   具体以“perf list”选定事件,以“perf record”记录事件,以"perf report"分析事件。
  record命令需要使用下列方法之一指定分析对象
  (1)通过进程ID指定(--pid)。
  (2)通过线程ID指定(--tid)。
  (3)指定特定CPU上所有的进程(--profile_cpu)。
  (4)指定所有CPU上的进程(--all)。
  (5)从命令行指定要执行的命令。
   举例如下:
   sudo perf record -e faults -- stress -c 8 -i 2 -m 2 --timeout 10s
   
   查看结果如下:
   sudo perf report
    
    结果显示在哪个执行文件,库,或者内核的哪个函数发生了页错误。
   将光标移到想要查看的行。按下回车可以查看对应的汇编代码。如下图是“usleep”的显示结果。
   
  如进入“Annotate usleep”会显示包括事件位置周边的反汇编相关报告
  如进入“Zoom into stress(4600) thread”仅显示与选择事件在相同纯种内的页错误
  如进入“Zoom into libc-2.19so DSO”仅显示libc-2.19.so中的页错误。

   下图是按下“Annotate usleep”的显示结果。显示“mov %edi, %eax”发生页面错误。在此界面按·「TAB」可依次显示文件内不同页面错误位置。
   

e. 获取综合统计性能
   例:显示"ls /"汇总的所有命令
    sudo perf stat ls /
   
   以上task-clock表示花费的时间。
          context-switchs表示进程或线程切换次数
          cpu-migrations正在运行的CPU切换的次数
          page-faults页错误发生次数
          cycles时钟数量表示的进程所花费怕CPU时间
          stalled-cycles-frontend ?
          stalled-cycles-backend ?
          instructions执行的命令条数
          branches分枝命令的数量和频率
          branches-misses分枝预测错误的数量和频率
 
f. 用perf scrept追踪事件
  也就是说perf tools可与ftrace进行同样的操作。在perf list的输出中,Tracepoint event所示的事件就是追踪用的事件。
 (1)下面使用perf record获取的进程调度程序相关事件,并通过perf script输出。
 
  
 (2)自己写脚本实现事件的统计(本环境中perf script带选项皆失败)。
      perf script具有根据记录事件生成脚本模型的功能。
      例:调查系统调用和内核中内存分配的脚本实例。
      首先,用perf record记录必要事件的数据文件。如下图
      
       生成脚本的模型失败,提示不支持perl脚本如下
     
 (3) 获取可用的脚本列表
      sudo perf script -l
     
 当前环境似乎对perf script的选项支持并不好。
 
阅读(2956) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~