4. SystemTap
SystemTap 是一个异常强大年夜的跟踪器。它可以做任何工作:分析、跟踪点、kprobes、uprobes(它就来自 SystemTap)、USDT、内核内编程等等。它将法度榜样编译成内核模块并加载它们 —— 这是一种很难包管安然的办法。它开辟是在内核代码树之外进行的,并且在过却竽暌箍现过很多问题(内核崩溃或冻结)。很多并不是 SystemTap 的错误 —— 它平日是初次对内核应用某些跟踪功能,并率先碰到 bug。最新版本的 SystemTap 是异常好的(你须要大年夜它的源代码编译),然则,很多人仍然没有大年夜早期版本的问题暗影中走出来。如不雅你想去应用它,花一些时光去测试情况,然后,在 irc.freenode.net 的 #systemtap 频道与开辟者进行评论辩论。(Netflix 有一个容错架构,我们应用了 SystemTap,然则我们或许比起你来说,更少担心它的安然性)我最诟病的工作是,它似乎假设你有办法获得内核调试信息,而我并没有这些信息。没有它我实际上可以做很多工作,然则缺乏相干的文档和示例(我如今本身开端帮着做这些了)。
5. LTTng
LTTng 对事宜收集进行了优化,机能要好于其它的跟踪器,也支撑很多的事沂攀类型,包含 USDT。它的开辟是在内核代码树之外进行的。它的核心部分异常简单:经由过程一个很小的固定指令集写入事宜到跟踪缓冲区。如许让它既安然又快速。缺点是做内核内编程不太轻易。我认为那不是个大年夜问题,因为它优化的很好,可以充分的扩大,尽管须要后期处理。它也摸索了一种不合的分析技巧。很多的“黑匣子”记录了所有感兴趣的事宜,以便可以在 GUI 中今后分析它。我担心该记录会错掉之前没有预感的事宜,我真的须要花一些时光去看看它在实践中是若何工作的。这个跟踪器上我花的时光起码(没有特其余原因)。
6. ktap
ktap 是一个很有前程的跟踪器,它在内核中应用了一个 lua 虚拟机,不须要调试信息和在嵌入时设备上可以工作的很好。这使得它进入了人们的视野,在某个时刻似乎要成为 Linux 上最好的跟踪器。然而,因为 eBPF 开端集成到了内核,而 ktap 的集成工作被推迟了,直到它可以或许应用 eBPF 而不是它本身的虚拟机。因为 eBPF 在几个月以前之后仍然在集成过程中,ktap 的开辟者已经等待了很长的时光。我欲望在本年的晚些时光它可以或许重启开辟。
7. dtrace4linux
dtrace4linux 重要由一小我(Paul Fox)应用营业时光将 Sun DTrace 移植到 Linux 中的。它令人印象深刻,一些供给器可以工作,还不是很完美,它最多应当算是实验性的对象(不安然)。我认为对于许可证的担心,使人们对它保持谨慎:它可能永远也进入不了 Linux 内核,因为 Sun 是基于 CDDL 许可证宣布的 DTrace;Paul 的办法是将它作为一个插件。我异常欲望看到 Linux 上的 DTrace,并且欲望这个项目可以或许完成,我想我参加 Netflix 时将花一些时光来帮它完成。然则,我一向在应用内置的跟踪器 ftrace 和 perf_events。
8. OL DTrace
Oracle Linux DTrace 是将 DTrace 移植到 Linux (尤其是 Oracle Linux)的重大年夜尽力。以前这些年典范多宣布版本都一向稳定的进步,开辟者甚至谈到了改良 DTrace 测试套件,这显示出这个项目很有前程。很多有效的功能已经完成:体系调用、分析、sdt、proc、sched、以及 USDT。我一向在等待着 fbt(函数界线跟踪,对内核的动态跟踪),它将成为 Linux 内核上异常强大年夜的功能。它最终可否成功取决于可否吸引足够多的人去应用 Oracle Linux(并为支撑付费)。另一个羁绊是它并非完全开源的:内核组件是开源的,但用户级代码我没有看到。
9. sysdig
sysdig 是一个很新的跟踪器,它可以应用类似 tcpdump
的语法来处理体系调用事宜,并用 lua 做后期处理。它也是令人印象深刻的,并且很高兴能看到在体系跟踪范畴的立异。它的局限性是,它的体系调用只能是在当时,并且,它转储所有事宜到用户级进行后期处理。你可以应用体系调用来做很多工作,固然我欲望能看到它去支撑跟踪点、kprobes、以及 uprobes。我也欲望看到它支撑 eBPF 以查看内核内概览。sysdig 的开辟者如今正在增长对容器的支撑。可以存眷它的进一步成长。
深刻浏览
我本身的工作中应用到的跟踪器包含:
- ftrace : 我的 perf-tools 集合(查看示例目次);我的 lwn.net 的 ftrace 跟踪器的文┞仿; 一个 LISA14 演讲;以及帖子: 函数计数、 iosnoop、 opensnoop、 execsnoop、 TCP retransmits、 uprobes 和 USDT。
- perf_events : 我的 perf_events 示例 页面;在 SCALE 的一个 Linux Profiling at Netflix 演讲;和帖子:CPU 采样、静态跟踪点、热力争、计数、内核行级跟踪、off-CPU 时光火焰图。
- eBPF : 帖子 eBPF:一个小的进步,和一些 BPF-tools (我须要宣布更多)。
- SystemTap : 良久以前,我写了一篇 应用 SystemTap 的文┞仿,它有点过时了。比来我宣布了一些 systemtap-lwtools,展示了在没有内核调试信息的情况下,SystemTap 是若何应用的。
- LTTng : 我应用它的时光很短,不足以宣布什愦文┞仿。
- ktap : 我的 ktap 示例 页面包含一行法度榜样和脚本,固然它是早期的版本。
- dtrace4linux : 在我的 体系机能 书中包含了一些示例,并且在以前我为了某些工作开辟了一些小的修补,比如, timestamps。
- OL DTrace : 因为它是对 DTrace 的直接移植,我早期 DTrace 的工作大年夜多与之相干(链接太多了,可以去 我的主页 上搜刮)。一旦它加倍完美,我可以开辟很多专用对象。
推荐阅读
沙龙晃荡 | 3月31日 京东、微博拭魅战专家与你合营商量容器技巧实践! 在进行物联网采购时,很多企业或组织机构缺点地认为物联网成功有一个标准的应用办法。实际情况倒是,没有最好的物联网>>>详细阅读
本文标题:性能分析和调试工具:Linux跟踪器之选
地址:http://www.17bianji.com/lsqh/40662.html
1/2 1