Erlang虚拟机基础设施dtrace探测点介绍和使用
Posted 三网教育
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Erlang虚拟机基础设施dtrace探测点介绍和使用相关的知识,希望对你有一定的参考价值。
IT 互联网 虚拟机
via 网络
三网IT教育-华东地区最专业、最权威的IT教育机构之一
最新的Erlang虚拟机(R15B01)很大的一个改进就是加入了对dtrace探测点的支持了, 主要目标是方便在生产实践中定位复杂的性能问题。
目前Erlang的虚拟机的探测点支持Linux的systemtap和freebsd的dtrace,我们刚好能够享受的到。
作者Scott Lystig Fritchie在去年的euc中做了个很有意思的报告,该PPT很详细的介绍了利用dtrace的探测点可以观察到erlang的行为如下:
Processes: spawn, exit, hibernate, scheduled, …
Messages: send, queued, received, exit signals
Memory: GC minor & major, proc heap grow & shrink
Data copy: within heap, across heaps
Function calls: function & BIF & NIF, entry & return
Network distribution: monitor, port busy, output events
Ports: open, command, control, busy/not busy
Drivers: callback API 100% instrumented
efile_drv.c fifile I/O driver: 100% instrumented
这些探测点基本上属于IO,进程调度,消息发送,driver等虚拟机最底层的和操作系统耦合的部分,对性能的影响巨大。
目前Erlang自己的基础设施并没有涵盖到这部分内容,如dbg,trace机制都无法了解到这些数据,导致在大型的集群系统里面一旦发现性能问题无法很好的展开调查,所以这些探测点刚好填补了空白。
目前这些dtrace probe点是用static marker实现的,细节可以参看这里 和 这里,好处是不用这些特性的时候,不会对性能有任何的影响,只需要为使用付代价。目前支持这种机制的语言和系统有java,python,mysql,pgsql等,可见威力强劲。
好拉,废话少说,我们来体验下。
下载最新的otp, 目前是R15B01, 简单的运行:
?
1
以上是关于Erlang虚拟机基础设施dtrace探测点介绍和使用的主要内容,如果未能解决你的问题,请参考以下文章 DTrace `pid` 提供程序不会触发一些 `return` 探测 |