Menu

Dreamcache memory management

2010-03-13
2013-04-18
  • martin grotzke

    martin grotzke - 2010-03-13

    Hi,

    I found dreamcache and it looks really promising as a memcached replacement, especially because of its extremely good write rates.

    I'm just digging deeper into memcached's memory layout, in more detail when items could be dropped from the cache. For memcached, the least recently used item is removed from a slab if a new item shall go into this slab and if this is full.
    Is this also the case for dreamcache, or is an item available as long as there's enough memory and the item is not yet expired?

    Thanx in advance,
    cheers,
    Martin

     
  • Jacek Psiuk

    Jacek Psiuk - 2010-03-14

    Hi Martin,

    It's nice to hear that someone dug out dreamcache and, which is
    better, finds it promising ;)

    There isn't anything like slabs in dreamcache. Items are deleted from
    the cache only when they expire OR there is no space left for new
    ones. We keep global LRU list and erase items according to that list
    (one LRU list for every space but you can always use one space).

    For memory management we chose to use tcmalloc - Google allocator -
    which does really great job. tcmalloc turned out to be the best choice
    from every one we tested (we never made our own memory allocator - we
    tested existing solutions).

    You're saying that dreamcache has good write rates. Is it proven by
    tests you made?

    Best regards,
    Jacek Psiuk

     
  • martin grotzke

    martin grotzke - 2010-03-14

    > There isn't anything like slabs in dreamcache. Items are deleted from
    > the cache only when they expire OR there is no space left for new
    > ones.
    Great! :)

    > We keep global LRU list and erase items according to that list
    > (one LRU list for every space but you can always use one space).
    What is a space? What do I have to do to use one space?

    > You're saying that dreamcache has good write rates. Is it proven by
    > tests you made?
    Nope, I was only referring to the numbers you provided. Still, I want to install dreamcache and get own numbers. However, I'm hesitating a little bit because of make install - I'd prefer to be able to rpm -hiv :-)

    Cheers,
    Martin

     
  • Damian Kiełbasa

    Hi Martin,

    What is a space? What do I have to do to use one space?

    For example, you want to store objects in two completely different categories or use dreamcache in two separate applications. In such issue you may want to use spaces (namespaces) to categorize your objects.
    If you want to use only one space, you don't need to care, the default space is provided.

    However, I can see, that multiple namespaces were disabled in latest release (mostly due to structural changes in libdreamcache), they are ready to be released next time.

    Nope, I was only referring to the numbers you provided. Still, I want to install dreamcache and get own numbers. However, I'm hesitating a little bit because of make install - I'd prefer to be able to rpm -hiv :-)

    We plan to make rpms in the future, if you want to try dreamcache without any risk, you may run configure with:

    --prefix=`pwd`/experiments
    

    Cheers,
    Damian

     

Log in to post a comment.