What is the best way to determine whether it is swapping? Is there a way I can tell the OS not to swap memcache specifically?
thanks, -wes On Fri, May 23, 2008 at 3:54 PM, dormando <[EMAIL PROTECTED]> wrote: > Hey, > > Unfortunately you just patched the wrong problem. Memcached does not > need an active garbage collector. > > Are you sure your machine was not swapping? Did you set the memory limit > too high? How did you verify it was "slow" ? What symptoms were you seeing? > > "evictions" counters only go up when a *valid* item is removed from > cache ahead of time. Your cache was never quite full enough to > preemptively expire valid items. > > Memcached is designed to use up to the limit of memory you specify, then > it will re-use that memory in a very efficient way, so it will never > release memory back to the operating system. If you're hitting swap, set > the maxbytes value to be lower with the "-m" option. > > -Dormando > > Ivan Szanto wrote: > > Hi, > > > > we wrote an external garbage collector for memcached and it works fine. > > We would like to make it available as an open source software. Is this > > interesting to the members of this list? > > Please let me know where we can post it. > > > > The story: > > > > We apply memcached to cache all kinds of items of a largish website > > written in php. > > We found it's working great! > > > > But after a couple of days of usage we began to have problems. These > > problems were helped by restarting memcached. > > After having a closer look at these problems, it appeared that the > > memory was gradually getting full. > > This was kind of strange, because we use an expiration time of 6 hours, > > which would mean that after a couple of days all items would have to be > > evicted except those that were put in the last 6 hours. > > > > We suspected that most of the expired items stay in the cache and never > > get evicted, because the value of the STATS evictions was always 0 and > > because we found a lot of items older than 6 hours. > > > > The only place I found in the code where evictions are taking place is > > in do_item_alloc, which means that an item can only be evicted in the > > case when there is the need for allocating a new item. This means there > > is no separate garbage collection as such in memcached. This is good, > > because that would need lots of CPU ticks to run, lowering the > > performance of the cache. > > > > We found that we need to evict expired items from the cache and > > therefore we implemented an external garbage collector. We run this > > program regularly and we found that this solves our problem. This means, > > memory usage is constantly low now. > > > > And once again: > > > > We would like to make it available as an open source software. Is this > > interesting to the members of this list? > > Please let me know where we can post it. > > > > Kind regards, > > Ivan > >
