I am looking for a way to profile php interpreted code. I suppose VTune don't offer native support for it but I wander if there are some APIs to be integrated in the Zend PHP engine for this purpose.
I had a look on JIT Profiling API as I was hooked by the title: "Profiling Runtime Generated and Interpreted Code with Intel® VTune™ Amplifier". Unfortunately it seems that the library might work for native JIT code but is useless for the case where there is no JIT in place and the bytecode is purely interpreted (meaning that VTune sampling interrupts will occur only in the PHP engine code, not in the interpreted bytecode).
Is there a way to configure some interpreter engine callbacks in VTune for providing the bytecode/source code related information? The APIs used for .NET & Java VM's for managed code profiling could they be reused somehow for other kind of VMs? Other options?
I don't think there is a way to use VTune(TM) Amplifier's result to interpret performance in PHP code level. I have escalated this feature request to development team.
Are there others who needs this feature in their projects?
Many thanks for the feedback Peter!
Actually, I am part of a team dealing with performance analysis and optimizations on open source scripting languages and we have a real interest about such kind of feature. We work on several projects, some of them dealing with jitted code (like HHVM) while others not (like PHP and Python). The list is open.
At my knowledge HHVM already has an extension based on JIT profiling API but even then there are frequent switches between jitted code and interpreted code, so I am not sure how effective it is the current implementation.