Skip to content

0.10.0

Compare
Choose a tag to compare
@koute koute released this 17 Nov 06:23
· 9 commits to master since this release

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_PROCESSES environment variable (disabled by default)
  • The fragmentation timeline was removed from the UI
  • mmap/munmap calls are now gathered by default (you can disable this with MEMORY_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 __mmap and __munmap are now hooked into
  • Bytehound-internal allocations now exclusively use mimalloc as their allocator
  • New scripting APIs:
    • AllocationList::only_alive_at
    • AllocationList::only_from_maps
    • Graph::start_at
    • Graph::end_at
    • Graph::show_address_space
    • Graph::show_rss
    • MapList
    • Map
  • Removed scripting APIs:
    • AllocationList::only_not_deallocated_after_at_least
    • AllocationList::only_not_deallocated_until_at_most
    • Graph::truncate_until
    • Graph::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