下面是对作者对DTrace做的一个简要介绍。
DTrace(全称Dynamic Tracing),也称为动态跟踪,是由 Sun™ 开发的一个用来在生产和试验性生产系统上找出系统瓶颈的工具,可以以对核心(kernel)和应用程序(user application)进行动态跟踪并且对系统运行不构成任何危险的技术。在任何情况下它都不是一个调试工具, 而是一个实时系统分析寻找出性能及其他问题的工具。 DTrace 是个特别好的分析工具,带有大量的帮助诊断系统问题的特性。还可以使用预先写好的脚本利用它的功能。 用户也可以通过使用 DTrace D 语言创建他们自己定制的分析工具[1][2], 以满足特定的需求。
1997年,供职于Sun而现已是Solaris内核研发部高级工程师的Bryan Cantrill 和他的工作组在紧张地研究一个性能问题,他出现在刚刚提及的Sun E10000服务器。该服务器在运行基准测试时,速度突然在一段时间内奇怪地降低。工作组经过六天夜以继日的工作后,终于发现了问题的根本原因。某个“愚蠢之极”的配置错误将服务器配置成了路由器。
“我很受震惊,”Cantrill 说到, “这是任何一个客户都可能碰到的问题,但是他们可不敢奢望让内核研发人员为之夜以继日地工作,编写自定义代码以弄清楚问题。我们得找出一个更好的方法。” 经过两年半的紧张研发,Cantrill和他的工作组终于研究出了这个更好的方法: Dtrace 。
DTrace是过去十年中在操作系统方面最具意义的革新之一。Solaris中分散着30,000多的位置指针,也叫探测器probes,DTrace可激活成千上万的探测器,记录所关注的位置指定的数据,如命中,即可从该地址显示用户进程或系统内核的数据,从而了解系统,包括:
1。任何函数的参数
2。内核的任何全局变量
3。函数调用的时间(NS,十亿分之一秒,无任何其他PC/Unix在ns一级精度)
4。跟踪堆栈,包括指明函数调用的代码
5。函数调用时运行的进程
6。产生函数调用的线程
附:《DTrace 动态跟踪》(DTrace Dynamic Tracing in Oracle Solaris, Mac OS X and FreeBSD)英文版[PDF]
转载于:https://blog.51cto.com/zorro/891705