Erlang虚拟机基础设施dtrace探测点介绍和使用

Posted 三网教育

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Erlang虚拟机基础设施dtrace探测点介绍和使用相关的知识,希望对你有一定的参考价值。

IT 互联网 虚拟机

via 网络

三网IT教育-华东地区最专业、最权威的IT教育机构之一


Erlang虚拟机基础设施dtrace探测点介绍和使用


最新的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, 简单的运行:

?

(c)2006-2024 SYSTEM All Rights Reserved IT常识