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提供的任何东西)。