zoukankan      html  css  js  c++  java
  • perf 高级命令简介

    perf 高级命令简介

    1.使用 tracepoint

    perf 根据 tick 时间点进行采样后,人们便能够得到内核代码中的 hot spot

    使用ls命令来演示 sys_enter 这个tracepoint 的使用

    perf stat -e raw_syscalls:sys_enter ls // 

    perf record -e raw_syscalls:sys_enter ls

    perf report

    2.perf probe

    tracepoint 是静态检查点,使用probe插入动态检测点。

    perf probe schedule:12 cpu //在内核函数 schedule() 的第 12 行处加入了一个动态 probe 点,和 tracepoint 的功能一样,内核一旦运行到该 probe 点时,便会通知 perf。可以理解为动态增加了一个新的 tracepoint

    perf record -e probe:schedule -a sleep 1

    perf report

    3.Perf sched

    Perf sched 有五个子命令:

    perf sched record            # low-overhead recording of arbitrary workloads

    perf sched latency           # output per task latency metrics

    perf sched map             # show summary/map of context-switching

    perf sched trace             # output finegrained trace

    perf sched replay         # replay a captured workload using simlated threads

    用户一般使用 perf sched record 收集调度相关的数据,然后就可以用 perf sched latency 查看诸如调度延迟等和调度器相关的统计数据。

    perf sched record sleep 10     # record full system activity for 10 seconds

    perf sched latency --sort max  # report latencies sorted by max

    如果说 map 提供了高度概括的总体的报告,那么 trace 就提供了最详细,最底层的细节报告。

    其它测试调度器性能的命令略。

    4.perf lock

    5.perf Kmem

    Perf Kmem 专门收集内核 slab 分配器的相关事件。比如内存分配,释放等。可以用来研究程序在哪里分配了大量内存,或者在什么地方产生碎片之类的和内存管理相关的问题。

    Perf kmem 和 perf lock 实际上都是 perf tracepoint 的特例,您也完全可以用 Perf record -e kmem:* 或者 perf record -e lock:* 来完成同样的功能。但重要的是,这些工具在内部对原始数据进行了汇总和分析,因而能够产生信息更加明确更加有用的统计报表。

    6.Perf timechart

    perf timechart detail

    7.使用 Script 增强 perf 的功能

    perf 的输出虽然是文本格式,但还是不太容易分析和阅读。往往也需要进一步处理,perl python 是目前最强大的两种脚本语言。Tom Zanussi perl python 解析器嵌入到 perf 程序中,从而使得 perf 能够自动执行 perl 或者 python 脚本进一步进行处理,从而为 perf 提供了强大的扩展能力。因为任何人都可以编写新的脚本,对 perf 的原始输出数据进行所需要的进一步处理。这个特性所带来的好处很类似于 plug-in 之于 eclipse

    perf trace -l

    perf trace record failed-syscalls

    原文

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

    其它文章:

    http://lwn.net/Articles/373842/

    http://lwn.net/Articles/339361/

    http://lwn.net/Articles/353295/

  • 相关阅读:
    linux下mysql的安装
    linux下mysql设置主从
    linux下安装jdk8并且配置环境变量
    C#实现rabbitmq 延迟队列功能
    对angular.js的一点理解
    angular.js的路由和模板在asp.net mvc 中的使用
    通过Web Api 和 Angular.js 构建单页面的web 程序
    Orchard运用
    Orchard运用
    Orchard运用
  • 原文地址:https://www.cnblogs.com/mydomain/p/3220438.html
Copyright © 2011-2022 走看看