- 浏览: 267142 次
- 性别:
- 来自: 天津
文章分类
最新评论
-
1260533105:
uncaught invalidstateerror:Fail ...
WebSocket -
sh747665463:
压力好大啊
【转】如果你不知道接下去学什么,就看这个
tprof 命令
tprof [ -c ] [ -C { all | CPUList } ] [ -d ] -D ] [ -e ] [ -F ] [ -j ] [ -k ] [ -l ] [ -m ObjectsList ] [ -M SourcePathList ] [ -p ProcessList ] [ -P { all | PIDsList } ] [ -s ] [ -S SearchPathList ] [ -t ] [ -T BufferSize ] [ -u ] [ -v ] [ -V VerboseFileName ] [ -z ] { { -r RootString } | { [ -A { all | CPUList }] [ -r RootString ] -x Program } }
- 除路径列表外,所有的列表类型输入用逗号分隔,路径列表用冒号分隔。
- 当此命令以实时方式运行时,每个 CPU 的概要分析方式自动禁用。
- 如果每个 CPU 概要分析被打开,则其微概要分析自动禁用。
- 如果指定 -x 标志不带 -A 标志,则 tprof 以实时方式运行。
- 如果指定 -x 标志带 -A 标志,则 tprof 以自动离线方式运行。
- 如果 -x 标志省略,则 tprof 以后处理方式或人工离线方式运行,这取决于有无 cooked 文件和 -F 标志。
tprof 命令报告单个程序和整个系统的 CPU 使用情况。对任何使用可能是 CPU 受限的 JAVA、C、C++ 或 FORTRAN 程序的人,和想了解程序的哪些部分大量占用 CPU 的人,该命令是一个有用的工具。
tprof 命令负责分配对象代码、进程、线程、子例程(用户方式、内核方式以及共享库),甚至是程序的源代码行或单个指令使用 CPU 的时间。给子例程分配使用 CPU 时间被称为概要分析,而给源程序代码行分配使用 CPU 时间被称为微概要分析。
对于子例程级概要分析,不用修改可执行程序即可运行 tprof 命令,就是说不必使用专用编译器标志进行重新编译。除非已除去回退表,否则即使可执行程序已卸载也还是如此运行。但是,必需进行重新编译才能获取微概要分析文件,除非列表文件已经可用。要在一个程序上执行微概要分析,要么用 -g 来编译该程序且源文件应可访问 tprof,要么用 -qlist 来编译该程序,且对象列表文件和源文件或者只有对象列表文件对于 tprof 应该是可访问的。要充分利用 tprof 微概要分析能力,最好既提供 .lst 列表文件又提供源文件。
tprof 可用以下四种方式运行:
- 实时或在线方式
- 人工离线方式
- 自动离线方式
- 后处理方式
如果指定 -x 标志但未指定 -A 标志,则 tprof 以实时方式运行。在实时方式下,tprof 在后台启动 AIX trace 实用程序并处理所产生的跟踪数据。当被概要分析的程序结束时,tprof 收集符号名称信息并生成报告。
此方式不允许对每个 CPU 进行概要分析。
如果指定 -A 标志带 -x 标志,则 tprof 以自动离线方式运行。在此方式下,tprof 启动 AIX trace 实用程序,并将跟踪数据记录在一个文件中。一旦跟踪数据收集完成,就收集符号名信息,tprof 打开跟踪日志文件并处理数据以生成报告。在此方式下,除了tprof 报告文件,tprof 生成以下文件:
- RootString.syms
- RootString.trc[-cpuid]
tprof 使用的所有输入文件和报告文件都被命名为 RootString.suffix,其中 RootString 要么用 -r 指定,要么是用 -x 指定的程序名。
任何时候 tprof 命令都可重新处理这些文件来生成概要分析报告。这被称为人工离线方式。RootString.syms 文件包含符号名称信息,与 gensyms 命令的输出相似。 RootString.trc [-cpuid] 文件是跟踪日志文件。当每个 CPU 跟踪功能打开时,-cpuid 被添加到名称上。在此情况下,每个文件仅包含来自一个 CPU 的跟踪数据。
如果 -c 和 -A 一起使用,则不生成这两个文件。而是创建了以下两个文件:
- RootString.csyms
- RootString.ctrc[ -cpuid ]
这些文件是 cooked,即它们是正常跟踪和名称文件的一个预处理版本。tprof 后处理 cooked 文件更快。
如果 -A 标志和 -x 标志都未指定,则 tprof 要么以人工离线方式运行,要么以后处理方式运行。要 tprof以后处理方式运行,以下文件必须可用:
- RootString.csyms
- RootString.ctrc[ -cpuid ]
当 tprof 带 -c 标志(以除了后处理方式以外的任何方式)运行时,就生成了这些文件。要tprof 以人工离线方式运行,以下文件必须可用:
- RootString.syms
- RootString.trc [-cpuid]
通过用户人工使用 gensyms 命令和 AIX 跟踪工具,或者通过不带 -c 标志以自动离线方式运行 tprof 来生成这些文件。
tprof 总是首先查找 RootString.csyms 和 RootString.ctrc[-cpuid]。仅当这些文件不可用时,才查找 RootString.syms 和 RootString.trc[-cpuid]。要阻止 tprof 查找 rootstring.csyms 和 RootString.ctrc[-cpuid],也就是说,强制使用人工离线方式,请使用 -F 标志。
tprof 生成一个名为 RootString.prof 的报告文件,该文件可以是进程、线程、对象代码和子例程级概要分析报告。该文件可包含以下部分和子节:
-
摘要报告部分
- 按进程名的 CPU 使用情况摘要
- 按线程(tid)的 CPU 使用情况摘要
-
全局(关于系统中所有进程的执行情况)概要文件部分
- 用户方式例程的 CPU 使用情况
- 内核例程的 CPU 使用情况
- 内核扩展的 CPU 使用情况摘要
- 每个内核扩展的子例程的 CPU 使用情况。
- 共享库的 CPU 使用情况摘要
- 每个共享库的子例程的 CPU 使用情况。
- 每个 JAVA 类的 CPU 使用情况。
- 每个 JAVA 类的每个 JAVA 方法的 CPU 使用情况。
-
进程和线程级概要分析部分(每个进程或线程为一个部分)
- 适用于本进程/线程的用户方式例程的 CPU 使用情况
- 适用于本进程/线程的内核例程的 CPU 使用情况
- 适用于本进程/线程的内核扩展的 CPU 使用情况摘要。
- 适用于本进程/线程的每个内核扩展的子例程的 CPU 使用情况。
- 适用于本进程/线程的共享库的 CPU 使用情况摘要。
- 适用于本进程/线程的每个共享库的子例程的 CPU 使用情况。
- 适用于本进程/线程的每个 JAVA 类的 CPU 使用情况。
- 适用于本进程/线程的每个 JAVA 类的 JAVA 方法的 CPU 使用情况。
摘要报告部分总是在 RootString.prof 报告文件中。基于概要分析标志,全局概要分析部分的各个子节可被打开和关闭:
- -u 打开子节 a
- -k 打开子节 b
- -e 打开子节 c 和 d
- -s 打开子节 e 和 f
- -j 打开子节 g 和 h
进程和线程级概要分析部分是为用 -p、-P 和 -t 标志选择的进程和线程创建的。存在于每个进程的每个线程的每个部分中的子节等同于存在于全局部分中的子节,使用概要分析标志(-u、-s、-k、-e、-j)来选择这些子节。
当用 -C 标志调用时,tprof 也有选择地生成每个 CPU 的概要分析报告(每个 CPU 生成一个概要分析报告)。生成的 tprof 报告有相同的结构,用约定的规则给它命名:RootString.prof[-cpuid]。
如果指定 -m,则 tprof 生成微概要分析报告。报告使用以下命名约定:RootString.source.mprof,其中 source 是源文件的基本名。如果有多个源文件有相同的基本名,则一个唯一标识它们的号码附加在报告文件名后面,例如,RootString.Filename.c.mprof-1。微概要分析报告含如下信息:
- 作过注释的源文件的全路径名。
- 与概要文件样本符合的、含有源文件的所有行号的热行概要文件部分,它按 CPU 的使用情况进行排序。对于每个源行,用一行来报告所有进程所用时间的百分比,其后跟有按单个进程细分的其它行。
- 一个该源文件中每个功能的源行概要分析部分,包括 CPU 使用情况。该部分包含源行号、CPU 的使用情况和源代码。如果该源文件的 .lst 文件可访问 tprof,则将来自 .lst 文件的指令行和来自源文件的源行集结在一起并适当分配 CPU 的使用。对于每个源文件,这将由指令提供中断。
如果一个源文件不存在,但有一个 .lst 文件存在,tprof 仅显示基于源文件行和来自 .lst 文件的指令的 CPU 使用情况。
如果这些文件都不存在,但源文件用 -g 编译过,则 tprof 可检索源文件行号,并生成一个相似的报告,但源文件代码列丢失。
如果请求每个 CPU 进行概要分析,则微概要分析自动禁用。如果 .c 文件包含在另一个.c 文件中,则 tprof 不能报告正确的源文件行信息。tprof 不能对 JAVA 类或方法进行微概要分析。
以下限制适用于运行 tprof 命令的非 root 用户:
- Tprof 将不能验证正在运行的内核与 /unix 文件相同。这就意味着即使显示警告消息,在多数情况下,正在运行的内核与 /unix 也是相同的,因此数据应该准确。
- 当由非 root 用户运行 gennames 时,给出与限制 #1(以上所述)相同的警告,并标记 gennames 文件。如果在脱机方式下运行 tprof,则 gennames 文件将 tprof 标记为未验证内核。
- tprof 将不能打开并读没有设置读许可权的文件上的符号。一些专用、共享库不具有读许可权,而一些内核扩展不可读。
解析 CPU 活动的程度取决于获得的样本数目以及热点的程度。当一个带有几个热点的程序可用相对较少的样本进行概要分析时,程序的较少执行的部分在概要分析报告中不可见,除非获得更多的样本。在用户程序运行少于一分钟的情况下,要在评估中获得高可信度的分辨率可能不够。
一个简单的方案是重复执行用户程序或脚本直到达到所需的分辨率。程序运行时间越长,概要分析分辨率就越高。如果你怀疑概要分析的准确度,运行 tprof 命令几次即可,然后比较所产生的概要分析文件。
在这三个命令之间最重要区别是 tprof 收集数据而不会影响被概要分析的程序的执行时间,而且除了生成微概要分析报告以外,无需重新编译就可以处理已实现优化和分解的二进制文件。 gprof 和 prof 都没有微概要分析的能力,也不能处理已进行优化或分解的二进制文件(它们需要专门编译标志),而且重要的是在执行期间会产生程序执行降速。
prof 和 gprof 工具都是标准的,是许多 UNIX 系统(包括此操作系统)上受支持的概要分析工具。prof 和 gprof 提供了子程序概要分析功能,以及每个子程序被调用的次数的精确计数。gprof 命令也提供了一个非常有用的调用图,显示每个子程序被特定父程序调用的次数和每个子程序调用其子的次数。tprof 命令既不提供子程序调用计数,也不提供调用图信息。
像 tprof 命令一样,prof 和 gprof 命令都通过采样用户程序的程序计数器来获取每个子程序的 CPU 消耗量估计。
tprof 收集整个系统的 CPU 的使用信息,而 prof 和 gprof 仅收集单个程序和仅在用户方式下所花时间的概要分析信息。tprof 也提供已概要分析的用户程序执行期间所有活动进程的摘要以及完全支持库和内核方式概要分析的摘要。
tprof 支持 JAVA 应用程序的概要分析,而 prof 和 gprof 不支持。
- 基本全局程序和线程级摘要
<!--[if !supportLists]-->2. <!--[endif]-->$ tprof -x sleep 10
<!--[if !supportLists]-->3. <!--[endif]-->2002 年 3月 20 日 星期一 00:39:26 系统:AIX 5.2 节点:dreaming 机器:000671894C00
<!--[if !supportLists]-->4. <!--[endif]-->启动命令 sleep 10
<!--[if !supportLists]-->5. <!--[endif]-->停止跟踪收集。
<!--[if !supportLists]-->6. <!--[endif]-->生成 sleep.prof
产生的 sleep.prof 文件仅包含摘要报告部分。
- 带有所有选项的全局概要分析
<!--[if !supportLists]-->8. <!--[endif]-->$ tprof -skeuj -x sleep 10
<!--[if !supportLists]-->9. <!--[endif]-->2002 年 3月 20 日 星期一 00:39:26 系统:AIX 5.2 节点:dreaing 机器:000671894C00
<!--[if !supportLists]-->10. <!--[endif]-->启动命令 sleep 10
<!--[if !supportLists]-->11. <!--[endif]-->停止跟踪收集。
<!--[if !supportLists]-->12. <!--[endif]-->生成 sleep.prof
产生的 sleep.prof 文件包含摘要报告部分和全局概要分析部分。
- 单个进程级概要分析
<!--[if !supportLists]-->14. <!--[endif]-->$ tprof -u -p workload -x workload
<!--[if !supportLists]-->15. <!--[endif]-->2002 年 3月 20 日 星期一 00:39:26 系统:AIX 5.2 节点:dreaing 机器:000671894C00
<!--[if !supportLists]-->16. <!--[endif]-->启动命令 workload,停止跟踪收集。
<!--[if !supportLists]-->17. <!--[endif]-->生成 workload.prof
产生的 workload.prof 文件包含摘要报告和全局用户方式概要分析部分,以及仅包含一个用户方式概要分析子节的进程‘workload’的一个进程级概要分析部分。
- 多个进程级概要分析
<!--[if !supportLists]-->19. <!--[endif]-->$ tprof -se -p send,receive -x startall
<!--[if !supportLists]-->20. <!--[endif]-->2002 年 3月 20 日 星期一 00:39:26 系统:AIX 5.2 节点:dreaming 机器:000671894C00
<!--[if !supportLists]-->21. <!--[endif]-->启动命令 startall
<!--[if !supportLists]-->22. <!--[endif]-->停止跟踪收集。
<!--[if !supportLists]-->23. <!--[endif]-->生成 startall.prof
产生的 startall.prof 文件包含摘要报告、全局共享库方式概要分析、全局内核扩展例程概要分析部分以及两个进程级概要分析部分:一个为进程‘send’,一个为进程‘receive’。每个进程级部分包含两个子节:一个为共享库概要分析信息,一个为内核扩展概要分析信息。
- 微概要分析
<!--[if !supportLists]-->25. <!--[endif]-->$ tprof -m ./tcalc -u -x ./tcalc
<!--[if !supportLists]-->26. <!--[endif]-->2002 年 3月 20 日 星期一 00:47:09 系统:AIX 5.2 节点:dreaming 机器:000671894C00
<!--[if !supportLists]-->27. <!--[endif]-->启动命令 ./tcalc
<!--[if !supportLists]-->28. <!--[endif]-->停止跟踪收集。
<!--[if !supportLists]-->29. <!--[endif]-->生成 tcalc.prof
<!--[if !supportLists]-->30. <!--[endif]-->生成 tcalc.tcalc.c.mprof
产生的 tcalc.prof 文件包含摘要报告和全局用户方式概要分析部分。产生的 tcalc.tcalc.c.mprof 文件包含微概要分析报告。
- 自动离线方式
<!--[if !supportLists]-->32. <!--[endif]-->tprof -c -A all -x sleep 10
<!--[if !supportLists]-->33. <!--[endif]-->启动命令 sleep 10
<!--[if !supportLists]-->34. <!--[endif]-->停止跟踪收集。
<!--[if !supportLists]-->35. <!--[endif]-->2002 年 3 月 20 日,星期一 00:52:52
<!--[if !supportLists]-->36. <!--[endif]-->系统:AIX 5.2 节点:dreaming 机器
====================================================================
tprof -x sleep 5
Process PID TID Total Kernel User Shared Other
======= === === ===== ====== ==== ====== =====
wait 8196 8197 40.36 40.36 0.00 0.00 0.00
wait 53274 61471 38.46 38.46 0.00 0.00 0.00
wait 49176 57373 4.62 4.62 0.00 0.00 0.00
wait 57372 69667 4.52 4.52 0.00 0.00 0.00
./xxxxx 209070 876621 2.62 1.45 0.63 0.54 0.00
./xxxxx 209070 1306857 2.35 0.45 1.09 0.81 0.00
./xxxxx 209070 1011735 1.90 0.36 1.09 0.45 0.00
./xxxxx 209070 1130543 1.90 0.54 0.90 0.45 0.00
./xxxxx 209070 1261733 1.54 0.18 1.09 0.27 0.00
./xxxxx 209070 1396843 0.72 0.54 0.00 0.18 0.00
dtgreet 110674 254095 0.72 0.45 0.00 0.27 0.00
/usr/bin/tprof 409664 872671 0.09 0.09 0.00 0.00 0.00
PID-1 -1 893131 0.09 0.00 0.00 0.09 0.00
/usr/bin/trcstop 430324 901143 0.09 0.00 0.00 0.09 0.00
======= === === ===== ====== ==== ====== =====
Total 100.00 92.04 4.80 3.17 0.00
命令执行之后,会产生一个sleep.prof的文件,上面就是截取的一段内容,可以根据./xxxx后面几列
的内容计算出5秒之内xxxxx进程占用的cpu时间,从而计算出比较精确的xxxx的即时的cpu占用率,
这里要说明的是ps -aux 出来的那个cpu占用率不是即时的。我只找出了这个方法使用程序来得到进程
的cpu占用率的即时值。topas的输出结果,java逮不到。
发表评论
-
转:Linux内核参数详解
2018-07-20 17:34 520https://blog.csdn.net/yueguan ... -
ipmitool
2018-07-17 17:53 760一、开关机,重启 1. ... -
awk 分组统计
2018-04-15 09:27 1343cat * |grep 'java.lang.ClassNot ... -
numa关闭
2016-10-20 09:54 1556zone_reclaim_mode参数为1,numa并没有关 ... -
shell单引号,双引号,反引号与反斜杠
2016-07-03 09:40 1215单引号:强调是什么就是什么不替换任何东西,会忽略任何引用值, ... -
shell 判断条件
2016-07-03 09:26 420前言: 无论什么编程语言都离不开条件判 ... -
转:linux 文件系统IO性能优化
2016-05-23 08:53 977对于LINUX SA来说,服 ... -
yum install 安装路径
2016-03-08 19:07 641一般是 /usr/local 一般一个软件是要复制多个文件 ... -
转:linux系统mysql安装后文件分布情况
2016-01-19 20:31 0MySQL安装完成后不象SQL Server默认安装在一个目 ... -
shell控制语句
2016-01-09 09:50 494linux shell有一套自己的流程控制语句,其中包括条件 ... -
shell for 循环
2016-01-09 09:40 0关于shell中的for循环用法很多,一直想总结一下,今天网 ... -
posrt 排序工具并行工作--快
2012-11-05 14:28 904一个文件n列,假设需要按照文件的第2列排序,第二列是in ... -
清理linux 系统缓存
2012-10-31 16:52 929echo 3 > /proc/sys/vm/drop_c ... -
关闭SELinux
2012-07-22 19:13 0关闭SELinux的方法: 修改/etc/seli ... -
实例详细说明linux下去除重复行命令uniq
2012-06-25 18:28 1319一、uniq干什么用的 linux下去除文本重复行的命令 ... -
grep+sed 全文件夹替换
2012-06-17 21:25 1345grep aaa -rl ./test |xargs s ... -
vim 查找替换
2012-06-04 16:58 895vi/vim 中可以使用 :s ... -
vi常用命令
2012-05-22 20:11 9001、复制多行,并粘贴 ... -
linux多文件替换关键字
2012-06-04 16:57 1044现在网上这样的方法只有两种,一种是Mahuinan法,一种是S ... -
TCP 参数
2012-01-16 15:25 2442net.ipv4.tcp_max_tw_buckets ...
相关推荐
tprof 命令 tput 命令 tr 命令 trace 守护进程 traceroute 命令 tracesoff 命令 traceson 命令 trbsd 命令 trcdead 命令 trcevgrp 命令 trcnm 命令 trcrpt 命令 trcstop 命令 trcupdate 命令 troff 命令 trpt 命令 ...
- **2.3.3 tprof 命令:** - `tprof` 用于跟踪进程的CPU时间分配情况,有助于识别导致性能瓶颈的应用程序或系统调用。 - **2.3.4 nice 和 renice 命令:** - 这些命令用于更改进程的优先级,从而影响它们在CPU...
- **Tprof命令**:提供更详细的CPU使用情况,特别是各个进程的具体消耗情况。 - **应用场景**:当Topas显示存在问题但未能明确指出具体原因时,使用Tprof可以帮助定位哪些进程占用资源最多。 ##### 3.3 收集Trace...
AIX常用命令://查看机器序列号,IBM的基本信息都可以通过该命令查询得到 #prtconf #oslevel -r == uname -a //操作系统版本 #oslevel //查看操作系统版本ex :5.1.0.0 #oslevel -r //ex:5100-04 == oslevel -q //...
33. **tprof**:性能分析工具。 34. **iostat**:监控I/O设备的统计信息。 35. **netpmon**:网络性能监控工具。 36. **filemon**:文件系统活动监控工具。 关于AIX系统位宽的切换: 1. **从32位切换到64位**:创建...
- **tprof**: 提供详细的性能分析报告。 - **iostat**: 显示磁盘I/O使用情况。 - **netpmon**: 监控网络性能。 - **filemon**: 监控文件系统活动。 #### 5. 安装与更新 - **installp -q -d/dev/cdrom –l**: 查看CD...
例如,命令`tprof -skeuj -x sleep 10`可以捕获一段时间内的CPU使用情况。 当tprof不能确定问题根源时,就需要使用更强大的trace工具。然而,收集trace数据需谨慎,因为它会增加系统负载,并且需要在问题重现时进行...
- **tprof**:用于分析程序的CPU使用情况。 - **ps**:报告当前系统中进程的状态。 - **nice** 和 **renice**:调整进程优先级,控制CPU资源分配。 - **svmon**:监控AIX系统中的物理和虚拟内存使用。 - **lslv**:...
使用 tprof 程序来分析程序的 CPU 使用 使用 pprof 命令来测量内核线程的 CPU 使用情况 用 emstat 工具检测指令仿真 用 alstat 工具检测对齐异常 用 fdpr 程序重构可执行程序 控制 CPU 争用 用 mkpasswd 命令进行...
- `tprof`命令提供系统整体CPU使用情况的剖析,例如`tprof -E -u -s -k -e -j -l -L <path> -t <report_name> -x <program>`,其中`-E`使用PMU采样, `-u`, `-s`, `-k`, `-e`, `-j`分别表示用户、共享库、内核、...
- 使用 `tprof` 来监控CPU使用情况,该命令会生成一个包含CPU使用统计信息的文件`_prof.all`。 - 使用 `vmstat 2 3` 和 `sar 1 3` 来监控系统CPU负载。 - 使用 `sar -P ALL 1 2` 来监控所有CPU的使用情况。 - 使用 `...
- `Tprof`: 用于跟踪系统调用。 - `filemon`: 用于监视文件访问。 - `emstat`: 显示事件监控器的状态。 #### 二、AIX系统管理日常工作(LV篇) **2.1 IBM AIX系统管理的日常工作** - **开关机步骤**: - 开机: ...
tprof是一个进程级的CPU使用监控工具,它可以实时或在线监视特定进程的CPU使用情况,这对于定位问题进程非常有用,特别是在处理死循环或者资源占用过高的情况时。 最后,ps命令是最基础但不可或缺的系统监控工具,...
4. **tprof**:是一个更详细的性能分析工具,它可以跟踪每个任务的CPU使用情况,帮助定位高CPU消耗的任务。 5. **ps**:用于查看当前运行的进程及其状态,结合其他命令可以深入分析CPU使用情况,如找出CPU消耗最高...
在 WPAR 中,某些命令的运行方式有所不同、或者根本不能运行,将在适当的时候对其中的部分命令进行介绍。还有一些其他的 AIX 6.1 性能改进,包括唯一的可调参数的文档说明,以及受限制的可调参数。 优化方法这个...
在初步诊断中,可以使用`topas`命令来实时监控这些指标。如果需要深入分析,可以使用`tprof`找出CPU占用率高的进程,以及在问题重现时使用`trace`收集更详细的数据。 **类别二:内存** 内存管理对系统性能也有显著...
- **应用场景**:通过定期运行 `vmstat` 命令,可以持续监控 CPU 的使用率,特别是当发现应用程序运行缓慢时,可以帮助快速定位问题是否由 CPU 过载引起。 ##### 2、sar - **概述**:`sar` 是另一个非常有用的性能...
4. `tprof`:用于程序性能分析,追踪特定进程的CPU使用,帮助找出程序中的瓶颈。 5. `ps`:Process Status,显示当前进程的状态,可以查看单个或多个进程的CPU占用率,辅助定位高CPU消耗的进程。 6. `nice`和`...