Linux上DTrace的替代方法是什么?

从我所看到的,Linux上的DTrace实现被许可和政治所阻碍。 目前有哪些select?

Systemtap旨在解决与dtrace类似的问题,并且具有类似的用户界面 – 用户可以编写将操作附加到命名探针的小脚本。

据说是不稳定的,默认情况下通常不会编译到你的内核中,但是一旦我find了它,我就没有任何问题了。

你可以在systemtap网站的这个表格中看到它与dtrace的比较(可能是partartan 🙂

Dtrace已经被发烧友Paul Fox部分移植到了Linux上,可以下载试用 – 查看他博客上的链接。

有人说kprobes是dtrace的替代品,但我从来没有尝试过。

SystemTap是在Kprobes上构build的更高级别的抽象。 有关Kprobes如何工作的更多信息,请阅读我的关于LWN的技术文章 。

正如Alex所说,Systemtap本质上是解决与dtrace相同的问题,除了它比dtrace稍微慢一点(你可能不会觉得这是因为你想用它做什么),而不是像抛光或安全使用。

要安装SystemTap SDT开发包,请尝试:

yum install systemtap-sdt-devel 

sysdig现在是一个很好的解决scheme。

一些使用情况包括(他们的wiki有一些非常有趣的例子 ):

对于磁盘I / O

  • 请参阅磁盘带宽使用率方面的最高进程

    sysdig -c topprocs_file

  • 列出使用大量文件的进程

    sysdig -c fdcount_by proc.name“fd.type = file”

  • 按读取和写入字节查看顶部文件

    sysdig -c topfiles_bytes

  • 打印Apache正在读取或写入的顶级文件

    sysdig -c topfiles_bytes proc.name = httpd

  • 基本的opensnoop:snoop文件在发生时打开

    sysdig -p“%12user.name%6proc.pid%12proc.name%3fd.num%fd.typechar%fd.name”evt.type = open

  • 请参阅R + W磁盘活动的顶级目录

    sysdig -c fdbytes_by fd.directory“fd.type = file”

  • 请参阅/ tmp目录中的R + W磁盘活动的顶级文件

    sysdig -c fdbytes_by fd.filename“fd.directory = / tmp /”

  • 观察所有名为“passwd”的文件的I / O活动

    sysdig -A -c echo_fds“fd.filename = passwd”

  • 按FDtypes显示I / O活动

    sysdig -c fdbytes_by fd.type

dtrace确实存在于linux( https://github.com/dtrace4linux )和http://crtags.blogspot.com

Oracle正在将DTrace移植到linux上: https : //oss.oracle.com/projects/DTrace/

不知道这只适用于他们的Linux发行版或任何其他。

Linux有strace / ltrace(看这篇文章关于strace)。 但是它们并不等同于DTrace,它们只是DTrace能做的一小部分(实际上,DTrace远远超过Linux提供的任何东西)。