Profiling with Instruments¶
Instruments can be used for memory profiling and for statistical profiling.
Official Apple documentation¶
Basic Usage¶
Select “Time Profiler” from the “Choose a profiling template for:” dialog.
In the top left, next to the record and pause button, there will be a “[machine name] > All Processes”. Click “All Processes” and select “firefox” from the “Running Applications” section.
Click the record button (red circle in top left)
Wait for the amount of time that you want to profile
Click the stop button
Command line tools¶
There is instruments and iprofiler.
How do we monitor performance counters (cache miss etc.)? Instruments has a “Counters” instrument that can do this.
Memory profiling¶
Instruments will record a call stack at each allocation point. The call
tree view can be quite helpful here. Switch from “Statistics”. This
malloc
profiling is done using the malloc_logger
infrastructure
(similar to MallocStackLogging
). Currently this means you need to
build with jemalloc disabled (ac_add_options --disable-jemalloc
). You
also need the fix to Bug
719427
Kernel stacks¶
Under “File” -> “Recording Options” you can enable “Record Kernel Callstacks”.
To get full symbols and not just the exported ones, you’ll to install the matching
Kernel Debug Kit.
Instruments uses Spotlight to find the dSYMs with the matching uuid so if the
symbols are still not showing up it may help to move the appropriate dSYM file
to a place where Spotlight will notice it. You can double check the uuid of the
kernel in /System/Library/Kernels
with dwarfdump --uuid
and check that
Spotlight knows about the file with mdls
.
Misc¶
The DTPerformanceSession
api can be used to control profiling from
applications like the old CHUD API we use in Shark builds. Bug
667036
System Trace might be useful.