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/

目录
相关文章
|
7月前
|
监控 Linux API
实时监控文件系统:探索Python Watchdog库的神奇之处!
实时监控文件系统:探索Python Watchdog库的神奇之处!
149 3
|
7月前
|
监控 网络安全 数据库
第一章 专用工具和实用程序概述
第一章 专用工具和实用程序概述
48 1
|
6月前
|
Web App开发 JavaScript 前端开发
深入理解Playwright的高级功能和用法
Playwright是一个强大而灵活的Python库,用于自动化浏览器操作和测试。它提供了一套简洁、直观的API,使得编写可靠、可扩展的浏览器自动化脚本变得非常容易。无论是模拟用户交互、抓取网页数据还是进行端到端的Web应用程序测试,Playwright都是一个值得信赖的选择。 Playwright支持多种浏览器,包括Chrome、Firefox和WebKit(Safari)。这意味着您可以根据需要选择合适的浏览器来运行自动化脚本。Playwright还提供了跨浏览器的一致性保证,这意味着您可以在不同的浏览器上运行相同的脚本,并获得相似的结果。
|
7月前
|
Web App开发 JavaScript 前端开发
深入探索 Playwright:高级功能和用法
【2月更文挑战第6天】
249 1
|
7月前
|
存储 BI 网络安全
正在等待继续编辑 - Python - 基础知识专题 - 配置文件与日志管理
正在等待继续编辑 - Python - 基础知识专题 - 配置文件与日志管理
57 0
|
NoSQL 编译器 Linux
如何使用GDB工具来调试程序
如何使用GDB工具来调试程序
108 0
|
XML 监控 测试技术
Locust:简介和基本用法
如果要运行分布式Locust,必须在启动从机时指定主机(运行分布在单台机器上的Locust时不需要这样做,因为主机默认为127.0.0.1):
Locust:简介和基本用法
|
Linux 云计算 Python
【python | linux06】python中文件的开关及读写定位
文件作用:就是把一些数据存放起来,可以让程序下一次执行的时候直接使用,加载到内存中,而不必重新制作一份,省时省力。在Python,使用open函数,可以打开一个已经存在的文件,或者创建一个新文件open(文件名,访问模式).........
210 0
【python | linux06】python中文件的开关及读写定位