perf之record
如果CPU的使用率突然暴涨,如何迅速定位是哪个进程、哪段代码引起的呢?我们需要一个profiling工具,对CPU上执行的代码进行采样、统计,告诉我们CPU到底在忙些什么。
perf 就是这样的工具。我们举个例子看看 perf 是怎样工作的。
首先我们用以下命令模拟出CPU利用率暴涨的现象:
$ cat /dev/zero > /dev/null
然后我们看到 CPU 1 的 %system 飙升到95%:
# sar -P ALL -u 2 2 08:21:16 PM CPU %user %nice %system %iowait %steal %idle
08:21:18 PM all 2.25 0.00 48.25 0.00 0.00 49.50
08:21:18 PM 0 0.50 0.00 1.00 0.00 0.00 98.51
08:21:18 PM 1 4.02 0.00 95.98 0.00 0.00 0.00
现在我们用 perf 工具采样:
# perf record -a -e cycles -o cycle.perf -g sleep 10
[ perf record: Woken up 18 times to write data ]
[ perf record: Captured and wrote 4.953 MB cycle.perf (~216405 samples) ]
注:”-a”表示对所有CPU采样,如果只需针对特定的CPU,可以使用”-C”选项。
把采样的数据生成报告:
# perf report -i cycle.perf | more ...
# Samples: 40K of event 'cycles'
# Event count (approx.): 18491174032
#
# Overhead Command Shared Object Symbol
# ........ ............... .............................. ................
#
75.65% cat [kernel.kallsyms] [k] __clear_user
|
--- __clear_user
|
|--99.56%-- read_zero
| vfs_read
| sys_read
| system_call_fastpath
| __GI___libc_read
--0.44%-- [...] 2.34% cat [kernel.kallsyms] [k] system_call
|
--- system_call
|
|--56.72%-- __write_nocancel
|
--43.28%-- __GI___libc_read
...
我们很清楚地看到,CPU利用率有75%来自 cat 进程 的 sys_read 系统调用,perf 甚至精确地告诉了我们是消耗在 read_zero 这个 kernel routine 上。
转自:http://linuxperf.com/?p=36
perf之record的更多相关文章
- 系统级性能分析工具 — Perf
从2.6.31内核开始,linux内核自带了一个性能分析工具perf,能够进行函数级与指令级的热点查找. perf Performance analysis tools for Linux. Perf ...
- 系统级性能分析工具perf的介绍与使用[转]
测试环境:Ubuntu16.04(在VMWare虚拟机使用perf top存在无法显示问题) Kernel:3.13.0-32 系统级性能优化通常包括两个阶段:性能剖析(performance pro ...
- 容器中的诊断与分析2——live diagnosis——perf
Linux下的内核测试工具——perf使用简介 系统级性能分析工具 — Perf linux perf - 性能测试和优化工具:示例&应用 从2.6.31内核开始,linux内核自带了一个性能 ...
- perf 高级命令简介
perf 高级命令简介 1.使用 tracepoint 当 perf 根据 tick 时间点进行采样后,人们便能够得到内核代码中的 hot spot. 使用ls命令来演示 sys_enter 这个tr ...
- perf之sched
如果你对你的进程的响应时间极其苛刻,有一天你发现你的进程响应时间变慢了,而恰好这个机器上也有其他的进程在跟你的进程争用CPU,你想看看你的进程被内核调度的情况,那么你需要用perf-sched工具. ...
- perf命令
@(Linux基础)[perf命令] perf命令 ---- 简介 Perf是内置于Linux内核源码树中的性能剖析(profiling)工具,它基于事件采样原理,以性能事件为基础,支持针对处理器相关 ...
- Perf -- Linux下的系统性能调优工具,第 2 部分 特殊用法以及内核调优示例
https://www.ibm.com/developerworks/cn/linux/l-cn-perf2/ 本文内容简介 之前介绍了 perf 最常见的一些用法,关注于 Linux 系统上应用程序 ...
- 内核调试-perf introduction
perf概念 perf_event Perf_events是目前在Linux上使用广泛的profiling/tracing工具,除了本身是内核(kernel)的组成部分以外,还提供了用户空间(user ...
- 系统级性能分析工具 — Perf【转】
转自:https://blog.csdn.net/zhangskd/article/details/37902159 版权声明:本文为博主原创文章,转载请注明出处. https://blog.csdn ...
随机推荐
- mysql分布式数据库中间件对比
目前数据库中间件有很多,基本这些中间件在下都有了解和使用,各种中间件优缺点及使用场景也都有些心的.所以总结一个关于中间件比较的系列,希望可以对大家有帮助. 1. 什么是中间件 传统的架构模式就是 应用 ...
- java正则校验,密码必须由字母和数字组成
一个匹配数字和字母密码的正则表达式 2011 年 12 月 14 日 | Filed under: 正则表达式 and tagged with: 密码 , 正则表达式 , 零宽断言 一个用户注册功能的 ...
- 【Spark】SparkStreaming-foreachrdd foreachpartition
SparkStreaming-foreachrdd foreachpartition foreachrdd foreachpartition_百度搜索 SparkStreaming之foreachRD ...
- spring mvc 学习01 搭建
/** * */ /** * @author Administrator * */ package com.study01.controller; import org.springframework ...
- ERROR in index.web.js from UglifyJs
使用weexpack构建weex应用时,npm run serve一直报这个错误 ERROR in index.web.js from UglifyJs Unexpected token: name ...
- 【指导】SonarQube 部署说明
转载:https://blog.csdn.net/cuiaamay/article/details/52057091 1,安装 1.1 安装依赖 需要保证Oracle JRE 8 及以上,或者 Ope ...
- 电子商务 B2C 结构图【转载+整理】
本文内容 商品展示 内容展示 订单确认 支付系统 用户中心 商品&促销 CRM 订单处理 WMS 采购管理 财务管理 报表管理 系统设置 WA系统 商品展示 按照 Ebay 内部分类,任何 ...
- python连接mysql实例分享_python
示例一 #coding=UTF-8 import sys import MySQLdb import time reload(sys) sys.setdefaultencoding('utf-8') ...
- python网络爬虫 - 设定重试次数内反复抓取
import urllib.request def download(url, num_retries=2): print('Downloading:', url) try: html = urlli ...
- Iterator接口用法
1.所有实现Collection接口的容器类都有一个iteractor方法,用于返回一个实现了Iteractor接口的对象, 2.Iteractor对象成为迭代器,用以实现对容器内元素的遍历操作 3. ...