Background: in most work loads, with the default glibc malloc() and without the use of any slab allocator, Redis apparently does not fragment memory even after many months of continuous uptime (I've an instance running since one year, with tons of expires and 10000 new keys created per second, without issues, for instance).
However some user experimented Redis fragmentation problems, especially when sorted sets are used. This makes sense as in sorted sets nodes have different sizes (accordingly to the number of links).
This contest have the goal to get in short time a program that is able to fragment memory in a easy to reproduce way, so that we can start working to an (optional) slab allocator for Redis that will be included in future releases.
As Redis allocations are already completely wrappered by zmalloc.c file to ship a version of Redis with a new allocator will be trivial and will not affect any other part of the system, so as long as we'll get a few memory fragmenting scripts, chances are that in short time we'll exit with a new version of Redis featuring this change.
Thank you!
p.s. I understand the prize is not stellar, but it's mostly symbolic of course ;)
The winner will be the first poster that will provide a program able to fragment Redis memory. Even if another program will be the first to be verified to work, the winner will be the first program that was posted and actually works.
However some user experimented Redis fragmentation problems, especially when sorted sets are used. This makes sense as in sorted sets nodes have different sizes (accordingly to the number of links).
This contest have the goal to get in short time a program that is able to fragment memory in a easy to reproduce way, so that we can start working to an (optional) slab allocator for Redis that will be included in future releases.
As Redis allocations are already completely wrappered by zmalloc.c file to ship a version of Redis with a new allocator will be trivial and will not affect any other part of the system, so as long as we'll get a few memory fragmenting scripts, chances are that in short time we'll exit with a new version of Redis featuring this change.
Thank you!
p.s. I understand the prize is not stellar, but it's mostly symbolic of course ;)