1 Star2 Stars3 Stars4 Stars5 Stars (还没有评分)
Loading...

DTrace architecture简介

DTrace architecture(结构图)如下所示:

architecturearchitecture1

最上面是DTrace consumer程序,它们是运行在user-mode(用户态)的程序,并且使用libdtrace.so作为和DTrace driver打交道的接口。平时我们在命令行运行的dtrace命令其实就是一个DTrace consumer程序。

libdtrace.so的一个核心模块就是D脚本语言的编译器,它会把DTrace脚本或是命令行翻译成一种byte-code(字节码)程序。这些程序包含了和probe(探针)绑定的predicate(断言)和action(动作)。DTrace kernel framework[......]

阅读全文

1 Star2 Stars3 Stars4 Stars5 Stars (还没有评分)
Loading...

DTrace作者Bryan Cantrill参加reddit的AMA访谈

DTrace作者Bryan Cantrill201546日参加了redditAMA访谈,感兴趣的朋友可以关注一下。我也问了两个和DTrace相关的问题:

(1)如何看待DTrace的前景?会不会有新feature加入DTrace?如何看待OracleDTrace移植到Linux?

Q: As the father of DTrace, how do you think the prospect of the DTrace? Do you have any new feature plan for DTrace? What do you think of Oracle's po[......]

阅读全文

1 Star2 Stars3 Stars4 Stars5 Stars (还没有评分)
Loading...

Dtrace-example源码分析

Adam Leventhalgithub上建立了一个dtrace-example项目,介绍如何使用DTraceAPI做一个单独的trace工具。在这篇文章里,我就对这个项目的源码做一个简单的分析。

dtrace-example.c包含了4个函数,其中最主要的是main函数,代码如下:

int
main(int argc, char **argv)
{
    int err;

    if ((g_dtp = dtrace_open(DTRACE_VERSION, 0, &err)) == NULL) {
        die("failed to init[......]

阅读全文

1 Star2 Stars3 Stars4 Stars5 Stars (还没有评分)
Loading...

“Physical CPU”还是“logic CPU”?

上个月的DTrace mailing list里,有人问到,在DTrace的教程里,总被提到的“Per CPU”到底指的是什么?对此问题,Robert Mustacchi给出的解释是指一个“logic CPU”。我们知道,现在CPU早已经进入多核时代,一颗“Physical CPU”可以包含多个core,而一个core又可以包含多个hardware thread。每个hardware thread在操作系统看来,就是一个“logic CPU”,即一个可以被调度的CPU实例。举个例子,如果一颗“Physical CPU”包含4core,而每个core又包含2hardware thread,则[……]

阅读全文

1 Star2 Stars3 Stars4 Stars5 Stars (还没有评分)
Loading...

分享一篇文章《How My Printer Caused Excessive Syscalls & UDP Traffic》

今天推荐的文章讲述的是作者的操作系统莫名其妙地出现很多的系统调用,最后查出的原因是一台打印机引起的。作者利用DTrace一步一步debug的过程很值得我们学习和借鉴。另外,我从这篇文章中也学到了很多好用的英语短语,像“roll with the punches”,“flex muscles”等等。总之,建议大家有时间可以看看,相信会有所收获的。