在Oracle Linux上安装dtrace
http://www.ohsdba.cn/index.php?g=Home&m=Article&a=show&id=171
如非注明,本站文章皆为原创。欢迎转载,转载时请注明出处和作者信息。
在Oracle Linux上使用DTrace可以帮你
观察整个软件体系、操作系统内核、系统库和应用程序的动态运行时性能
通过在运行时定义实时探测点识别性能瓶颈
开发探测器在谓词控制下触发时执行的脚本
检测并报告内存访问错误,而不是听任系统崩溃
如何安装dtrace
一般情况下,DTrace软件包不能从Public yum上获取,必须先注册ULN(Unbreakable Linux Network),然后才能下载和安装
yum install dtrace-utils
注意:在安装dtrace-utils之前需要安装dtrace-modules(这个可以从公共yum上获取)
其实只需要一个dtrace-utils的包,需要这个包做测试的,可以发信息给我(只限测试学习测试使用)
[root@ovm ~]# rpm -ivh dtrace-utils-0.5.0-4.el6.x86_64.rpm
Preparing... ########################################### [100%]
1:dtrace-utils ########################################### [100%]
[root@ovm ~]#
[root@ovm ~]# ls -l /usr/sbin/dtrace
-rwxr-xr-x. 1 root root 36880 Nov 4 2015 /usr/sbin/dtrace
[root@ovm ~]#
dtrace帮助信息
[root@ovm ~]# dtrace
Usage: dtrace [-32|-64] [-aACeFGhHlqSvVwZ] [-b bufsz] [-c cmd] [-D name[=def]]
[-I path] [-L path] [-o output] [-p pid] [-s script] [-U name]
[-x opt[=val]] [-X a|c|s|t] [-P provider [[ predicate ] action ]]
[-m [ provider: ] module [[ predicate ] action ]]
[-f [[ provider: ] module: ] func [[ predicate ] action ]]
[-n [[[ provider: ] module: ] func: ] name [[ predicate ] action ]]
[-i probe-id [[ predicate ] action ]] [ args ... ] predicate -> '/' D-expression '/'
action -> '{' D-statements '}' -32 generate 32-bit D programs and ELF files
-64 generate 64-bit D programs and ELF files -a claim anonymous tracing state
-A generate driver.conf(4) directives for anonymous tracing
-b set trace buffer size
-c run specified command and exit upon its completion
-C run cpp(1) preprocessor on script files
-D define symbol when invoking preprocessor
-e exit after compiling request but prior to enabling probes
-f enable or list probes matching the specified function name
-F coalesce trace output by function
-G generate an ELF file containing embedded dtrace program
-h generate a header file with definitions for static probes
-H print included files when invoking preprocessor
-i enable or list probes matching the specified probe id
-I add include directory to preprocessor search path
-l list probes matching specified criteria
-L add library directory to library search path
-m enable or list probes matching the specified module name
-n enable or list probes matching the specified probe name
-o set output file
-p grab specified process-ID and cache its symbol tables
-P enable or list probes matching the specified provider name
-q set quiet mode (only output explicitly traced data)
-s enable or list probes according to the specified D script
-S print D compiler intermediate code
-U undefine symbol when invoking preprocessor
-v set verbose mode (report stability attributes, arguments)
-V report DTrace API version
-w permit destructive actions
-x enable or modify compiler and tracing options
-X specify ISO C conformance settings for preprocessor
-Z permit probe descriptions that match zero probes
[root@ovm ~]#
探测器和提供程序
要使用DTrace,需要指定内核中感兴趣的位置(称为探测器),DTrace可以绑定一个请求来执行一组操作,如记录堆栈跟踪、时间戳或函数参数。探测器的作用类似于深埋于操作系统中用于记录信息的可编程遥感传感器。探测器触发时,DTrace会从其收集数据并向您回报数据。Oracle Linux DTrace探测器运行于被称作提供程序的DTrace内核模块中,提供程序执行插装以支持探测器。
如何使用modprobe命令加载支持您需要使用的DTrace探测器的模块。例如,如果要使用proc提供程序发布的探测器,将加载systrace模块:
# modprobe systrace
内核模块列表
| 内核模块 | 说明 | |
|---|---|---|
| dtrace | dtrace | 为 DTrace 本身提供探测器:BEGIN、END、ERROR,用于可选地在跟踪开始之前初始化 DTrace、执行跟踪后处理、处理执行期间其他探测器中的意外错误。 |
| io | io | 提供与数据输入和输出有关的监视探测器。 |
| proc | proc | 为监视进程创建和终止、新程序映像执行以及发送和处理信号提供探测器。 |
| profile | profile | 提供与定时中断关联的探测器。可以使用这些探测器以固定时间间隔对系统状态进行采样。 |
| sched | sdt | 提供与 CPU 调度有关的探测器。 |
| sdt | sdt | 提供静态定义的、位于内核中多个感兴趣的重要位置的跟踪探测器。 |
| syscall | systrace | 在每个系统调用的入口点和返回点提供探测器。这些探测器对了解应用程序与底层系统之间的交互尤为有用。 |
DTrace探测器来自一组被称作提供程序的内核模块,每个提供程序执行特定类型的插装来创建探测器。使用DTrace时,每个提供程序都有机会发布它可以为DTrace框架提供的探测器。然后,您可以对已发布的任何探测器启用和绑定跟踪操作。要列出系统上的所有可用探测器,可以使用dtrace -l。根据Oracle Linux平台、安装的软件和加载的提供程序模块的不同,探测器的数量也不同。
[root@ovm ~]# dtrace -l|wc -l
622
[root@ovm ~]#
[root@ovm ~]# dtrace -l|more
ID PROVIDER MODULE FUNCTION NAME
1 dtrace BEGIN
2 dtrace END
3 dtrace ERROR
每个探测器都显示一个整数 ID 和一个易于理解的名称,由四部分组成,在 dtrace 输出中显示为单独的四列。
provider — 发布此探测器的 DTrace 提供程序的名称。提供程序名称通常对应于执行插装以启用探测器的 DTrace 内核模块的名称
module — 如果此探测器对应于特定程序位置,则为探测器所在内核模块的名称
function — 如果此探测器对应于特定程序位置,则为探测器所在程序函数的名称
name — 探测器名称的最后一部分,即表明探测器语义的名称
当提及具体探测器时,这些部分一起显示,中间用冒号分隔,如:
provider:module:function:name
dtrace命令样本
# New processes with arguments
dtrace -n 'proc:::exec-success { trace(curpsinfo->pr_psargs); }' # Files opened by process
dtrace -n 'syscall::open*:entry { printf("%s %s",execname,copyinstr(arg0)); }' # Syscall count by program
dtrace -n 'syscall:::entry { @num[execname] = count(); }' # Syscall count by syscall
dtrace -n 'syscall:::entry { @num[probefunc] = count(); }' # Syscall count by process
dtrace -n 'syscall:::entry { @num[pid,execname] = count(); }' # Disk size by process
dtrace -n 'io:::start { printf("%d %s %d",pid,execname,args[0]->b_bcount); }' # Pages paged in by process
dtrace -n 'vminfo:::pgpgin { @pg[execname] = sum(arg0); }'
调用D语言脚本syscalls.d显示进程3961正在使用的系统调用及其频率
[root@ovm ~]# cat syscalls.d
#!/usr/sbin/dtrace -qs
syscall:::entry
/pid == $1/
{
@num[probefunc] = count();
}
[root@ovm ~]# ./syscalls.d 3961
^C rt_sigreturn 1
shutdown 1
accept 2
clone 3
connect 3
gettid 3
set_robust_list 3
socket 3
exit 4
getsockopt 4
getsockname 5
madvise 5
close 6
dup2 6
sched_getaffinity 6
mmap 7
epoll_ctl 10
rt_sigprocmask 13
setsockopt 13
fcntl 15
write 17
read 23
epoll_wait 39
mprotect 51
newstat 84
ioctl 95
poll 140
sendto 265
recvfrom 284
futex 1714
[root@ovm ~]#
Reference
https://en.wikipedia.org/wiki/DTrace
http://docs.oracle.com/cd/E37670_01/E50705/html/ol_intro_dtrace.html
http://docs.oracle.com/cd/E37670_01/E38608/html/dt_gs_about.html
http://www.oracle.com/technetwork/cn/articles/servers-storage-admin/dtrace-on-linux-1956556-zhs.html
http://dtrace.org/blogs/
http://dtrace.org/guide/preface.html
https://blogs.oracle.com/linux/entry/announcement_dtrace_for_oracle_linux
http://www.ibm.com/developerworks/cn/aix/library/au-dtraceprobes.html
http://www.oracle.com/technetwork/server-storage/solaris10/solaris-dtrace-wp-167895.pdf
https://github.com/dtrace4linux/linux
在Oracle Linux上安装dtrace的更多相关文章
- 在 Oracle Linux 上使用 DTrace
作者:Richard Friedman 简要介绍适用于 Oracle Linux 的 DTrace 探测器和提供程序,以及与 Oracle Solaris 中 DTrace 探测器和提供程序的区别.还 ...
- 在Oracle Linux上使用DTrace的相关指导
如果你使用的Oracle Linux,因为sun被Oracle收购后,Oracle Linux版本的DTrace可以直接在Oracle官网进行下载. 下载地址 http://www.oracle.co ...
- 数据库系统入门 | Oracle Linux上部署Oracle 11g服务,并实现SSH远程登录管理
文章目录 写在前面 一.实验内容 二.实验前期准备 1.软件目录 2.准备一些配置文件.脚本文件 三.实验方案(具体步骤) (一)在虚拟机上安装Oracle Linux (二)在Linux上安装Ora ...
- 在Linux上安装Oracle RAC 12 c(12.1) 虚拟机,一步一步向导
Oracle RAC 12 c(12.1)在Linux上安装虚拟机,一步一步向导 今天我们将看到如何安装 12 c版本1 RAC(真正的应用程序集群)数据库2 Linux 64位的虚拟机 使用VMWa ...
- linux上安装oracle
Linux上安装Oracle 10g: http://69520.blog.51cto.com/59520/91156
- [转载]linux上安装oracle
原文地址:linux上安装oracle作者:天涯恨客 1.创建oinstall组 [root@xieqing ~]# groupadd oinstall 创建dba组 [root@xieqing ~] ...
- 最全Pycharm教程(32)——依据FHS在Linux上安装Pycharm
1.主题 怎样在Linux上安装Pycharm,依据FHS. 2.平台要求 Intel Pentium III/800 MHz或更高. 内存最小512M.建议1G以上 屏幕最小分辨率1024x768 ...
- CentOS Linux上安装Oracle11g笔记
CentOS Linux上安装Oracle11g 到 otn.oracle.com 网站上下载 Linux版的oracle 11g 编辑 /etc/sysctl.conf : kernel.shmal ...
- Linux 上安装 weblogic12C (远程图形界面安装) (二)
上一篇Linux 上安装 weblogic12C (静默安装)介绍了静默方式安装weblogic12C的方式,这一篇主要介绍在windows主机上通过远程图形界面的方式安装weblogic的方式 一. ...
随机推荐
- UISearchBar的使用
searchBar = [[UISearchBar alloc] initWithFrame: CGRectMake(0.0, 0.0, self.view.bounds.size.width, 40 ...
- centos7系统优化
优化说明: 一.关闭selinux 二.更改为阿里yum源 三.提权dm用户可以使用sudo 四.优化ssh远程登录配置 五.设置中文字符集 六.设置时间同步 七.历史记录数及登录超时环境变量设置 八 ...
- Python 网络爬虫干货总结
Python 网络爬虫干货总结 爬取 对于爬取来说,我们需要学会使用不同的方法来应对不同情景下的数据抓取任务. 爬取的目标绝大多数情况下要么是网页,要么是 App,所以这里就分为这两个大类别来进行了介 ...
- js 做的随机8位验证码
开发思路: 画出放置验证码的模块.一个写有“看不清…”的小块,以及输入验证码的文本框 获取各个模块 封装一个函数Yan_ma(),设置验证码为8位,里面含有数字,小写字母,小写字母和中文.每种类型出现 ...
- Python列表,元组,字典,集合详细操作
菜鸟学Python第五天 数据类型常用操作及内置方法 列表(list) ======================================基本使用====================== ...
- raywenderlich.com Objective-C编码规范
原文链接 : The official raywenderlich.com Objective-C style guide 原文作者 : raywenderlich.com Team 译文出自 : r ...
- fork()函数,一次调用,两次返回
参考自:http://blog.csdn.net/dog_in_yellow/archive/2008/01/13/2041079.aspx 以前一直迷惑,什么叫一次调用,两次返回.通过上网搜索,终于 ...
- LightOJ 1422 区间DP Halloween Costumes
d(i, j)表示第i天到第j天至少要穿多少件衣服. 先不考虑第i天和后面 i+1 ~ j 天的联系,那就是至少要穿 1 + d(i+1, j)件衣服. 再看状态转移,如果后面第k(i+1 ≤ k ≤ ...
- 【10】css hack原理及常用hack
[10]css hack原理及常用hack 原理:利用不同浏览器对CSS的支持和解析结果不一样编写针对特定浏览器样式.常见的hack有1)属性hack.2)选择器hack.3)IE条件注释 IE条件注 ...
- 【12】link与@import的区别
[12]link与@import的区别 link是HTML方式, @import是CSS方式 link最大限度支持并行下载,@import过多嵌套导致串行下载,出现FOUC link可以通过rel=& ...