Skip to content

Releases: spaskalev/buddy_alloc

v0.1.4

25 Jul 10:48
Compare
Choose a tag to compare
  • Fixed a few bugs when resizing upwards
  • Minor performance improvements
  • The alignment and minimum allocation size can now be specified by defining BUDDY_ALLOC_ALIGN. This will be made more user-friendly in subsequent releases.
  • Enhanced debugging by adding an invariant check function and making the debug function output to a FILE *.

v0.1.3

17 Jul 15:10
Compare
Choose a tag to compare

Further performance improvements. The values in the tree are now unary encoded and read faster using a popcount builtin.

v0.1.2

15 Jul 13:59
Compare
Choose a tag to compare
  • Numerous performance improvements
  • Fixed two bugs related to downsizing the arena

Debug build performance of buddy_brk.c vs glibc's release malloc on stress-ng.

Note that buddy_brk.c does not return memory to the kernel, so take it with a grain of salt. Still, it is less than twice as slow as glibc now :)

$ env LD_PRELOAD=./buddy_shared.so ~/dev/stress-ng/./stress-ng --malloc 1 --malloc-ops 100000 2>&1
stress-ng: info:  [2896] defaulting to a 86400 second (1 day, 0.00 secs) run per stressor
stress-ng: info:  [2896] dispatching hogs: 1 malloc
stress-ng: info:  [2896] successful run completed in 0.16s
$ env ~/dev/stress-ng/./stress-ng --malloc 1 --malloc-ops 100000 2>&1
stress-ng: info:  [2900] defaulting to a 86400 second (1 day, 0.00 secs) run per stressor
stress-ng: info:  [2900] dispatching hogs: 1 malloc
stress-ng: info:  [2900] successful run completed in 0.11s

v0.1.1

10 Jul 17:17
8813167
Compare
Choose a tag to compare
  • Use an optimal fit strategy to avoid fragmentation
  • Fixed a bug in buddy_realloc that would cause data corruption.
  • Made buddy_malloc and buddy_calloc allocate on zero-sized requests.
  • Use the buddy_brk wrapper with perf and stress-ng to identify bottlenecks.
  • Fixed a few performance issues identified by the stress-ng tests.

Debug build performance of buddy_brk.c vs glibc's release malloc on stress-ng

$ env LD_PRELOAD=./buddy_shared.so ~/dev/stress-ng/./stress-ng --malloc 1 --malloc-ops 100000 2>&1
stress-ng: info:  [122434] defaulting to a 86400 second (1 day, 0.00 secs) run per stressor
stress-ng: info:  [122434] dispatching hogs: 1 malloc
stress-ng: info:  [122434] successful run completed in 0.48s

$ env ~/dev/stress-ng/./stress-ng --malloc 1 --malloc-ops 100000 2>&1
stress-ng: info:  [122437] defaulting to a 86400 second (1 day, 0.00 secs) run per stressor
stress-ng: info:  [122437] dispatching hogs: 1 malloc
stress-ng: info:  [122437] successful run completed in 0.11s

Initial

05 Jul 19:19
e3bd04e
Compare
Choose a tag to compare

Initial tagged release of the allocator. Semantic versioning will be used from now on.