从我所看到的,Linux上的DTrace实现受到许可和政治的阻碍。目前有哪些替代方案?
答案 0 :(得分:30)
Systemtap旨在解决与dtrace相同的问题,并具有类似的用户界面 - 用户编写将脚本附加到命名探针的小脚本。
据说它不稳定,默认情况下它通常不会编译到你的内核中,但是一旦我开始工作,我就没有任何问题。
您可以在this table on the systemtap website中看到它与dtrace的比较(可能是党派: - )
Dtrace已被部分爱好者Paul Fox移植到Linux上,可以下载供您试用 - 查看他blog上的链接。
据说kprobes是替代品,但我从未尝试过。
答案 1 :(得分:14)
SystemTap是基于Kprobes构建的更高级别的抽象。有关Kprobes如何工作的更多信息,您可以在LWN上阅读我的technical article。
正如亚历克斯所说,Systemtap基本上解决了与dtrace相同的问题,除了它有点慢(你可能不会觉得它是这样,取决于你试图用它做什么)而不是dtrace而不是像抛光或安全使用。
要安装SystemTap SDT开发包,请尝试:
yum install systemtap-sdt-devel
答案 2 :(得分:12)
sysdig
现在是一个很好的解决方案。
一些使用案例包括(他们的wiki has some exceptionally interesting examples):
根据磁盘带宽使用情况查看热门流程
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
答案 3 :(得分:6)
dtrace确实存在于linux(https://github.com/dtrace4linux)和http://crtags.blogspot.com。
答案 4 :(得分:5)
Oracle正在将DTrace移植到linux:https://oss.oracle.com/projects/DTrace/
不知道这只适用于他们的Linux发行版或任何其他版本。
答案 5 :(得分:1)
Linux有strace / ltrace(参见this post关于strace)。但它们并不等同于DTrace,它们只涵盖了DTrace可以做的一小部分(实际上,DTrace远远优于Linux提供的任何东西)。