Skip to content

5.3.0

Latest
Compare
Choose a tag to compare
@interwq interwq released this 06 May 19:14
· 172 commits to dev since this release

This release contains many speed and space optimizations, from micro
optimizations on common paths to rework of internal data structures and
locking schemes, and many more too detailed to list below. Multiple percent
of system level metric improvements were measured in tested production
workloads. The release has gone through large-scale production testing.

New features:

  • Add the thread.idle mallctl which hints that the calling thread will be
    idle for a nontrivial period of time. (@davidtgoldblatt)
  • Allow small size classes to be the maximum size class to cache in the
    thread-specific cache, through the opt.[lg_]tcache_max option. (@interwq,
    @jordalgo)
  • Make the behavior of realloc(ptr, 0) configurable with opt.zero_realloc.
    (@davidtgoldblatt)
  • Add make uninstall support. (@sangshuduo, @Lapenkov)
  • Support C++17 over-aligned allocation. (@marksantaniello)
  • Add the thread.peak mallctl for approximate per-thread peak memory tracking.
    (@davidtgoldblatt)
  • Add interval-based stats output opt.stats_interval. (@interwq)
  • Add prof.prefix to override filename prefixes for dumps. (@zhxchen17)
  • Add high resolution timestamp support for profiling. (@tyroguru)
  • Add the --collapsed flag to jeprof for flamegraph generation.
    (@igorwwwwwwwwwwwwwwwwwwww)
  • Add the --debug-syms-by-id option to jeprof for debug symbols discovery.
    (@DeannaGelbart)
  • Add the opt.prof_leak_error option to exit with error code when leak is
    detected using opt.prof_final. (@yunxuo)
  • Add opt.cache_oblivious as an runtime alternative to config.cache_oblivious.
    (@interwq)
  • Add mallctl interfaces:

Bug fixes:

  • Fix the synchronization around explicit tcache creation which could cause
    invalid tcache identifiers. This regression was first released in 5.0.0.
    (@yoshinorim, @davidtgoldblatt)
  • Fix a profiling biasing issue which could cause incorrect heap usage and
    object counts. This issue existed in all previous releases with the heap
    profiling feature. (@davidtgoldblatt)
  • Fix the order of stats counter updating on large realloc which could cause
    failed assertions. This regression was first released in 5.0.0. (@azat)
  • Fix the locking on the arena destroy mallctl, which could cause concurrent
    arena creations to fail. This functionality was first introduced in 5.0.0.
    (@interwq)

Portability improvements:

Incompatible changes:

  • Maximum size class allowed in tcache (opt.[lg_]tcache_max) now has an upper
    bound of 8MiB. (@interwq)

Optimizations and refactors (@davidtgoldblatt, @Lapenkov, @interwq):

  • Optimize the common cases of the thread cache operations.
  • Optimize internal data structures, including RB tree and pairing heap.
  • Optimize the internal locking on extent management.
  • Extract and refactor the internal page allocator and interface modules.

Documentation: