[
https://jira.jboss.org/browse/ISPN-663?page=com.atlassian.jira.plugin.sys...
]
Trustin Lee commented on ISPN-663:
----------------------------------
If a user calls Cache.put(key, value), CacheStore.store() should call commit()
immediately. If more than one entry is passivated, CacheStore.store() doesn't need to
call commit() for every passivated entry but only for the last one (e.g. begin, a, b, c,
commit). We cannot implement this optimization correctly with what Manik suggested
because CacheStore itself has no idea if the current store() call represents the last
passivated entry. Without correct commit() calls, a user might think passivation is
complete while it's not actually committed yet.
With the proposed change, CacheStore always knows when to call commit(). Another
advantage is that the interceptor chain / eviction listener is invoked less often under
load since less events are generated. However, without proper escape analysis on VM
level, there might be some additional overhead regarding array / varargs creation.
Eviction with passivation using JdbmCacheStore is 100 times slower in
4.1 vs 4.0
--------------------------------------------------------------------------------
Key: ISPN-663
URL:
https://jira.jboss.org/browse/ISPN-663
Project: Infinispan
Issue Type: Bug
Components: Eviction, Loaders and Stores
Affects Versions: 4.1.0.Final
Environment: Win32 JRE 1.6.0_21
Reporter: Paul Nardone
Assignee: Trustin Lee
Fix For: 4.2.0.BETA1, 4.2.0.Final
Attachments: InfinispanPassivationTest.java
Eviction with passivation enabled using the JdbmCacheStore appears to be significantly
slower in 4.1.0.FINAL vs 4.0.0.FINAL.
The degredation in performance is so signficant to make it impossible to use
The performance issue seems to due as the JdbmCacheStore synching the filesystem via
FileDescriptor.sync() or similar which occurs during every object passivation and each
passivation occurs as a new object is added beyond the EvictionMaxEntries capacity.
The attached test inserts 1000 values into two caches
Both caches use a JdbmCacheStore and LRU
PASSIVATIONLRU10 runs with cache with EvictionMaxEntries 10
PASSIVATIONLRU1000 runs with cache with EvictionMaxEntries 1000
4.1.0.FINAL
PASSIVATIONLRU10 Time Taken : 51704
PASSIVATIONLRU1000 Time Taken : 4484
4.0.0.FINAL
PASSIVATIONLRU10 Time Taken : 281
PASSIVATIONLRU1000 Time Taken : 141
4.2.0.ALPHA2
PASSIVATIONLRU10 Time Taken : 51047
PASSIVATIONLRU1000 Time Taken : 5156
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
https://jira.jboss.org/secure/Administrators.jspa
-
For more information on JIRA, see:
http://www.atlassian.com/software/jira