New
0.10.0
Major changes:
- Performance improvements; CPU overhead of allocation-heavy heavily multithreaded programs was cut down by up to ~80%
- You can now control whether child processes are profiled with the
MEMORY_PROFILER_TRACK_CHILD_PROCESSESenvironment variable (disabled by default) - The fragmentation timeline was removed from the UI
mmap/munmapcalls are now gathered by default (you can disable this withMEMORY_PROFILER_GATHER_MAPS)- Total actual memory usage is now gathered by periodically polling
/proc/self/smaps - Maps can now be browsed in the UI and analyzed through the scripting API
- Maps are now named according to their source using
PR_SET_VMA_ANON_NAME(Linux 5.17 or newer; on older kernels this is emulated in user space) - Glibc-internal
__mmapand__munmapare now hooked into - Bytehound-internal allocations now exclusively use mimalloc as their allocator
- New scripting APIs:
AllocationList::only_alive_atAllocationList::only_from_mapsGraph::start_atGraph::end_atGraph::show_address_spaceGraph::show_rssMapListMap
- Removed scripting APIs:
AllocationList::only_not_deallocated_after_at_leastAllocationList::only_not_deallocated_until_at_mostGraph::truncate_untilGraph::extend_until
- Removed lifetime filters in the UI:
only_not_deallocated_in_current_range,only_deallocated_in_current_range - Fixed a rare crash when profiling programs using jemalloc
- Added support for
aligned_alloc - Added support for
memalign - Relative scale in the generated graphs is now always relative to the start of profiling
- Gathered backtraces will now include an extra Bytehound-specific frame on the bottom to indicate which function was called
- Minor improvements to the UI