41

From what I can see, a DTrace implementation on Linux is held up by licensing and politics. What are the alternatives currently?

4

6 回答 6

30

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

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

您可以在 systemtap 网站上的此表中查看它与 dtrace 的比较(可能是党派 :-)

Dtrace 已由爱好者 Paul Fox 部分移植到 Linux,您可以下载并试用 - 查看他博客上的链接。

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

于 2010-01-13T18:49:14.067 回答
14

SystemTap是建立在 Kprobes 之上的更高层次的抽象。有关 Kprobes 如何工作的更多信息,您可以阅读我关于 LWN的技术文章。

正如 Alex 所提到的,Systemtap 基本上解决了与 dtrace 相同的问题,只是它比 dtrace 慢一些(您可能不会认为它是这样,这取决于您尝试使用它做什么),并且没有那么完美或安全使用。

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

yum install systemtap-sdt-devel
于 2010-01-13T19:46:49.130 回答
12

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

一些用例包括(他们的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"

  • 按 FD 类型显示 I/O 活动

    sysdig -c fdbytes_by fd.type

于 2014-07-08T06:51:52.410 回答
6

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

于 2012-06-03T09:29:49.643 回答
4

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

不知道这是否仅适用于他们的 linux 发行版或其他任何发行版。

于 2013-04-18T13:08:09.400 回答
1

Linux 有 strace/ltrace(参见这篇关于 strace 的文章)。但它们并不真正等同于 DTrace,它们只涵盖了 DTrace 可以做的一小部分(实际上,DTrace 远远优于 Linux 提供的任何东西)。

于 2010-01-13T19:17:36.647 回答