[infinispan-dev] Infinispan 4.1 | Eviction policies for Memcached protocol
Paul Ferraro
paul.ferraro at redhat.com
Mon Sep 27 10:49:51 EDT 2010
Owen? Columbia Comp Eng '98? What are you up to these days?
On Thu, 2010-09-23 at 02:23 -0500, Owen Tran wrote:
> Hi,
>
>
>
> I’m actively trying to replace memcached with Infinispan with the
> memcached server. Swapping it in with my existing whalin client was
> very simple, I just had to disable the binary protocol. The problem
> I’m facing is that evictions based on maxEntries aren’t working.
> Here’s the configuration I’m using (btw, I’ve tried playing with all
> the parameters by trying different strategies, using DEFAULT
> threadPolicy, change wakeUpInterval, and maxEntries by powers of 2.
>
>
>
> <infinispan>
>
> <global>
>
> <globalJmxStatistics enabled="true"/>
>
> </global>
>
> <default>
>
> <jmxStatistics enabled="true"/>
>
> <eviction wakeUpInterval="500" maxEntries="1024"
> strategy="LIRS" threadPolicy="PIGGYBACK"/>
>
> <expiration maxIdle="3600000" lifespan="-1"/>
>
> </default>
>
> </infinispan>
>
>
>
>
>
> Infinispan will remove entries that are expired, but it doesn’t seem
> to evict any items when the cache exceeds the number of maxEntries.
> I’ve enabled trace and using JMX to peer into the number of entries,
> and I easily exceed the maxEntries by running a junit test loading it
> with 10,000 entries.
>
>
>
> I noticed in the DefaultDataContainer it only handles immortalEntries
> with the bounded concurrency map. Is the memcached server somehow only
> setting items as mortal entries? If so, this means that the behavior
> for this memcached is really deficient, since you’re bound by memory
> and can’t LRU once maxEntries is reached. The only saving grace are
> the expiration settings. Is there a suggestion on how I can fix this
> so I can have the behavior of LRU with eviction?
>
>
>
> Thanks,
>
> Owen
>
>
>
>
>
> Code from DefaultDataContainer…
>
>
>
> protected DefaultDataContainer(int concurrencyLevel, int maxEntries,
> EvictionStrategy strategy, EvictionThreadPolicy policy) {
>
>
>
> // translate eviction policy and strategy
>
> switch (policy) {
>
> case PIGGYBACK:
>
> case DEFAULT:
>
> evictionListener = new DefaultEvictionListener();
>
> break;
>
> default:
>
> throw new IllegalArgumentException("No such eviction
> thread policy " + strategy);
>
> }
>
>
>
> Eviction eviction;
>
> switch (strategy) {
>
> case FIFO:
>
> case UNORDERED:
>
> case LRU:
>
> eviction = Eviction.LRU;
>
> break;
>
> case LIRS:
>
> eviction = Eviction.LIRS;
>
> break;
>
> default:
>
> throw new IllegalArgumentException("No such eviction
> strategy " + strategy);
>
> }
>
> immortalEntries = new BoundedConcurrentHashMap<Object,
> InternalCacheEntry>(maxEntries, concurrencyLevel, eviction,
> evictionListener);
>
> mortalEntries = new ConcurrentHashMap<Object,
> InternalCacheEntry>(64, 0.75f, concurrencyLevel);
>
> entryFactory = new InternalEntryFactory();
>
> }
>
>
>
> _______________________________________________________
> Owen Tran || VP, Engineering || ezRez Software, Inc.
>
>
>
>
>
>
> _______________________________________________
> infinispan-dev mailing list
> infinispan-dev at lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/infinispan-dev
More information about the infinispan-dev
mailing list