我们有一个相当大的 perl 代码库。
一些运行多个小时的进程(ETL 作业)突然开始消耗比平时更多的 RAM。分析相关版本的变化是一个缓慢而令人沮丧的过程。我希望使用更自动化的分析来确定罪魁祸首。
我们的实时环境是 Debian Squeeze 上的 perl 5.14。
不过,我可以使用很多 OS X 10.5 机器。Dtrace 和 perl 似乎在这个平台上很好地结合在一起。似乎在 linux 上使用 dtrace 需要启动更多工作。我希望我们的实时系统和开发 OS X 系统之间的内存分配模式会相似——或者至少相似到足以帮助我找到这种新内存使用的来源。
这个幻灯片:
https://dgl.cx/2011/01/dtrace-and-perl
显示如何使用 dtrace 显示 perl sub 对 malloc 的调用次数。我有兴趣跟踪 perl 在进程生命周期内执行每个子程序时分配的内存总量。
关于如何做到这一点的任何想法?