Thanks for the answer.

2014년 8월 4일 월요일 오후 2시 34분 10초 UTC+9, Dormando 님의 말:
>
> > Hello Dormando, 
> > Thanks for the answer. 
> > 
> > The LRU fiddling only happens once a minute per item, so hot items don't 
> affect the lock as much. The more you lean toward hot 
> > items the better it scales as-is. 
> > => For linked-list traversal, pthreads acquire item-partitioned lock. 
> But threads acquire global lock for LRU update.  
> > So, all the GET commands that found requested item on the hash table 
> tries to acquire the same lock, so, I think the total hit 
> > rate is more affecting factor to the lock contention  
> > than how often each item is touched for LRU update. I missed something?? 
>
> The GET command only acquires the LRU lock if it's been more than a minute 
> since the last time it was retrieved. That's all there is to it. 
>
=> Oh, you meant the 'ITEM_UPDATE_INTERVAL' parameter. okay, i understand 
what you mean!!
 

>
> > I don't think anything stops it. Rebalance tends to stay within one 
> class. It was on my list of scalability fixes to work on, 
> > but I postponed it for a few reasons. 
> > One is that most tend to have over half of their requests in one slab 
> class. So splitting the lock doesn't give as much of a 
> > long term benefit. 
> > So, I wanted to come back to it later and see what other options were 
> plausible for scaling the lru within a single slab class. 
> > Nobody's complained about the performance after the last round of work 
> as well, so it stays low priority. 
> > Are your objects always only hit once per minute? What kind of 
> performance are you seeing and what do you need to get out of it? 
> > => Thanks for your comments. I was trying to find some proper network 
> speed(1Gb,10Gb) for current memcached operation.  
> > I saw the best performance around 4~6 threads (1.1M rps) with the help 
> of multi-get.  
>
> With the LRU out of the way it does go up to 12-16 threads. Also if you 
> use numactl to pin it to one node it seems to do better... but most people 
> just don't hit it that hard, so it doesn't matter? 
>
=> Yes, my test also showed better scalability after changing the LRU lock.
By numactl, do you mean that multiple instances of memcached ? (i.e. one 
instance per node)
I agree with that multiple instances with numactl will increase the 
scalability and performance.
I will give a try in numa mode. Thanks a lot.

>
> > 
> > 2014년 8월 2일 토요일 오전 8시 19분 59초 UTC+9, Dormando 님의 말: 
> > 
> > 
> > On Jul 31, 2014, at 10:01 AM, Byung-chul Hong <byungch...@gmail.com> 
> wrote: 
> > 
> >       Hello, 
> > I'm testing the scalability of memcached-1.4.20 version in a GET 
> dominated system. 
> > For a linked-list traversal in a hash table (do_item_get), it is 
> protected by interleaved lock (per bucket), 
> > so it showed very high scalability.  
> > But, after linked-list traversal, LRU update is protected by a global 
> lock (cache_lock), 
> > so the scalability was limited around 4~6 threads by global lock of the 
> LRU update global in a Xeon server system 
> > (10Gb ethernet). 
> > 
> > 
> > The LRU fiddling only happens once a minute per item, so hot items don't 
> affect the lock as much. The more you lean toward 
> > hot items the better it scales as-is.  
> > 
> > 
> > 
> > As i know, LRU is maintained per slab class, so LRU update modifies only 
> the items contained in the same class. 
> > So, i think the global lock of LRU update may be changed to interleaved 
> lock per slab class. 
> > By SET command at the same time, store and removal of items in the same 
> class can happen concurrently,  
> > but SET operation also can be changed to get the slab class lock before 
> adding/removing some new items to/from the 
> > slab class.  
> > 
> > In case of store/removal of the "linked item" in the hash table (which 
> may reside on the different slab class),  
> > it only updates the h_next value of current item, and it does not touch 
> LRU pointers (next, prev).  
> > So, i think it would be safe to change to interleaved lock. 
> > 
> > Are there any other reasons that LRU update requires a global lock that 
> I missed ?? 
> > (I'm not using slab rebalance and giving an initial hash power value 
> large enough, and clients only use GET, SET 
> > commands) 
> > 
> > 
> > I don't think anything stops it. Rebalance tends to stay within one 
> class. It was on my list of scalability fixes to work 
> > on, but I postponed it for a few reasons. 
> > 
> > One is that most tend to have over half of their requests in one slab 
> class. So splitting the lock doesn't give as much of 
> > a long term benefit. 
> > 
> > So, I wanted to come back to it later and see what other options were 
> plausible for scaling the lru within a single slab 
> > class. Nobody's complained about the performance after the last round of 
> work as well, so it stays low priority. 
> > 
> > Are your objects always only hit once per minute? What kind of 
> performance are you seeing and what do you need to get out 
> > of it? 
> > 
> > It would be highly appreciated for any comments!! 
> > 
> > -- 
> > 
> > --- 
> > You received this message because you are subscribed to the Google 
> Groups "memcached" group. 
> > To unsubscribe from this group and stop receiving emails from it, send 
> an email to memcached+...@googlegroups.com. 
> > For more options, visit https://groups.google.com/d/optout. 
> > 
> > -- 
> > 
> > --- 
> > You received this message because you are subscribed to the Google 
> Groups "memcached" group. 
> > To unsubscribe from this group and stop receiving emails from it, send 
> an email to memcached+...@googlegroups.com <javascript:>. 
> > For more options, visit https://groups.google.com/d/optout. 
> > 
> >

-- 

--- 
You received this message because you are subscribed to the Google Groups 
"memcached" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to memcached+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to