perf 高级命令简介

简介: perf 高级命令简介 1.使用 tracepoint 当 perf 根据 tick 时间点进行采样后,人们便能够得到内核代码中的 hot spot。 使用ls命令来演示 sys_enter 这个tracepoint 的使用。

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/

目录
相关文章
|
3月前
|
存储 安全 Linux
|
10月前
|
监控 Shell Linux
Linux Shell高级用法:优化和自动化你的工作流程
Linux Shell是一个非常强大的工具,可以用于自动化任务、处理文本和数据、进行系统管理等。在这篇文章中,我们将介绍一些Linux Shell的高级用法,帮助你更高效地利用Shell完成各种任务。
145 0
|
网络协议 Linux 数据库
|
2月前
|
存储 Linux Shell
探索Linux的`info`命令:数据处理的得力助手
`info`命令是Linux的数据处理助手,虽不直接处理数据,但提供详尽的文档支持。它是GNU项目的一部分,通过`.info`文件提供分节点的文档结构,支持搜索和交叉引用。常用参数包括`--help`、`--version`、`--node`和`--file`。例如,查询`bash` shell用法时,运行`info bash`。掌握导航、搜索功能和书签的使用能提升效率。与`man`命令结合使用,可获取全面的工具信息。定期更新Info pages以保持文档最新。
|
3月前
|
存储 SQL 关系型数据库
探秘MSSQL存储过程:功能、用法及实战案例
探秘MSSQL存储过程:功能、用法及实战案例
124 1
|
Linux Shell 开发工具
快速上手Linux核心命令(一):核心命令简介
快速上手Linux核心命令(一):核心命令简介
178 0
快速上手Linux核心命令(一):核心命令简介
|
Ubuntu 网络协议 调度
|
运维 监控 Python
学习笔记:python watchdog运维监控文件系统事件实战
相见恨晚的watchdog库,运维监视文件系统神器。
7607 0
|
开发工具 Docker 容器
如何用source insight写内核代码
别的文章都会做很多说明, 铺垫, 我就不多说了, 直接来重点 vim写代码的时候, 有一种情况不是很好处理, 比如 struct a{int x; int y; iny z} struct b{int x; int y; iny z} pb->z想从这里跳到到结构体b的定义需要编辑器理解pb的含义, 而不是简单的字符查找 那就让我们来用source insight吧 以
1548 0