I re-did facebook-memcached to make it consistent with dustin's github repository. (No more "src" subdirectory, and I redid the commit history so that it appears to be a branch from the original 1.2.3 release at http://github.com/dustin/memcached/commit/437beab948aec088dac361f27c89f3619fee3228 )
It is at http://github.com/fbmarc/facebook-memcached I left the original at http://github.com/fbmarc/facebook-memcached-old I hope this will make it easier to for anyone interested to compare, merge, and cherry-pick updates. I am a complete git n00b, so if you have suggestions on how I can repackage this repository to make life easier, feel free to enlighten me. The biggest difference between our branch and the main branch is the addition of flat-memory allocation. We did this for two reasons. First, we wanted to solve the slab-ghetto problem. That is the situation where one slab is forcing out hot keys for lack of memory while another slab holds onto stale objects. Second, we hoped we would improve memory usage with a flat, scatter-gather memory allocator. Our flat-memory allocator met the first goal but failed on the second. As of today, it takes about 10% more memory for our typical object distribution than the slab allocator. We're continuing to investigate how to improve this because the slab-ghetto problem is a constant nuisance for us. In the next couple of weeks I'm going to review all of the updates in dustin's master branch and pull as much as I can into ours. I'm also cleaning up our C UDP memcache client, php extension and proxy and will get them up on github as soon as I get everything in presentable shape. I'll make announcements here as I make updates, and, as always, look forward to your comments and questions.