У нас довольно большая база кода Perl.
Некоторые процессы, выполняемые в течение нескольких часов (задания ETL), внезапно начали потреблять намного больше оперативной памяти, чем обычно. Анализ изменений в соответствующем выпуске - медленный и утомительный процесс. Я надеюсь выявить виновника с помощью более автоматизированного анализа.
Наша рабочая среда - Perl 5.14 на Debian squeeze.
Однако у меня есть доступ ко многим машинам с OS X 10.5. Кажется, что Dtrace и Perl прекрасно работают вместе на этой платформе. Похоже, что использование dtrace в Linux требует дополнительной работы при загрузке. Я надеюсь, что шаблоны распределения памяти будут похожи между нашей живой системой и системой Dev OS X - или, по крайней мере, достаточно похожими, чтобы помочь мне найти источник этого нового использования памяти.
Эта колода слайдов:
https://dgl.cx/2011/01/dtrace-and-perl
показывает, как использовать dtrace для отображения количества вызовов malloc из perl sub. Мне интересно отслеживать общий объем памяти, который Perl выделяет при выполнении каждой подпрограммы в течение всего времени существования процесса.
Есть идеи, как это можно сделать?