什么是Linux上的DTrace的替代品?

Jan*_*nie 40 linux dtrace

从我所看到的,Linux上的DTrace实现受到许可和政治的阻碍.目前有哪些替代方案?

Ale*_*own 30

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

它被认为是不稳定的,默认情况下通常不会编译到你的内核中,但是一旦我开始工作,我就没有任何问题.

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

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

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


Sud*_*shu 14

SystemTap是基于Kprobes构建的更高级别的抽象.有关Kprobes如何工作的更多信息,您可以阅读我关于LWN的技术文章.

正如Alex提到的那样,Systemtap基本上解决了与dtrace相同的问题,除了它有点慢(你可能不会觉得它是这样,取决于你正在尝试用它做什么)而不是dtrace而不是那么抛光或安全使用.

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

yum install systemtap-sdt-devel
Run Code Online (Sandbox Code Playgroud)


yll*_*ate 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