Linux 上 DTrace 的替代方案是啥? [关闭]

Posted

技术标签:

【中文标题】Linux 上 DTrace 的替代方案是啥? [关闭]【英文标题】:What's an alternative for DTrace on Linux? [closed]Linux 上 DTrace 的替代方案是什么? [关闭] 【发布时间】:2010-01-13 18:47:15 【问题描述】:

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

【问题讨论】:

Linux 上的 dtrace 有什么新东西吗? @Syntax_Error 是的,你不再需要它了:brendangregg.com/blog/2016-10-27/dtrace-for-linux-2016.html 【参考方案1】:

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

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

您可以在this table on the systemtap website 中看到它与 dtrace 的比较(可能是党派 :-)

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

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

【讨论】:

我不知道那个 DTrace 端口,我会检查一下。谢谢。【参考方案2】:

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

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

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

yum install systemtap-sdt-devel

【讨论】:

【参考方案3】:

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

一些用例包括(他们的wiki has some exceptionally interesting examples):

用于磁盘 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

【讨论】:

【参考方案4】:

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

【讨论】:

【参考方案5】:

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

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

【讨论】:

看起来他们现在已经全力以赴:theregister.co.uk/2018/02/19/…【参考方案6】:

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

【讨论】:

strace 更接近于truss 而不是dtrace

以上是关于Linux 上 DTrace 的替代方案是啥? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

CentOS 8/6 Linux 生命终结,2022 年最好的替代方案是啥?

dtrace 脚本输出是啥意思?

在 Oracle Linux 上使用 DTrace

Firefox(和 IE)的 WebSocket 替代方案是啥

在Oracle Linux上安装dtrace

ffserver 的替代方案是啥?