dtrace作为性能深入分析工具,可以检测出性能问题的根源,但是使用起来困难度比较大。请求使用案例分析
收起DTrace是一个优秀的动态跟踪工具。你可以使用dtrace命令来收集操作系统、应用程序或系统库的统计信息。dtrace可以让你详尽地了解系统在运行时的运行情况,以及瓶颈所在。下面是dtrace命令的基本使用方式:
用 ‘-n’ 选项定义一个dtrace脚本,可以使用probe和action两个关键字和若干个D语言语句进行DTrace的脚本编写。
用 ‘-s’ 选项指定脚本文件名或者直接将脚本写到命令行后面。
用 ‘-c’ 选项指定一个要追踪的目标程序,也可以用-p选项指定正在运行的进程的PID号。
用 ‘-o’ 选项指定输出文件的路径和名称,通常以 .txt 或 .out 结尾。
例如,下面的命令将监测进程id为1234的进程调用的系统函数,一旦某个函数调用时花费的时间超过100毫秒,它将打印出调用函数的进程ID、函数名称和花费的时间:
sudo dtrace -n 'pid1234:libc::entry {self->ts = timestamp;}
pid1234:libc::return /self->ts/ {"
printf("%d %s %d ms\n",pid,probefunc, (timestamp - self->ts) / 1000000);}'
注意,在一些系统上,dtrace需要使用 sudo 修改内核的一些设置。使用 dtrace 可能会对系统性能产生影响,所以一定要小心使用。