<p>Awesome!<br>
Are you really sure about eradicating the old implementation?</p>
<p>Cheers,<br>
Sanne</p>
<div class="gmail_quote">On 6 Jul 2011 19:39, &quot;Vladimir Blagojevic&quot; &lt;<a href="mailto:vblagoje@redhat.com">vblagoje@redhat.com</a>&gt; wrote:<br type="attribution">&gt; Hey,<br>&gt; <br>&gt; Ok I&#39;ve issued a pull request. Please review it <br>
&gt; <a href="https://github.com/infinispan/infinispan/pull/418">https://github.com/infinispan/infinispan/pull/418</a><br>&gt; I am very happy with performance increase observed in new LRU. It <br>&gt; significantly beats synchronized Map and performance is very close to <br>
&gt; ConcurrentHashMap itself.<br>&gt; I ran tests overnight for 12 hours (each test run is 20 minutes).<br>&gt; <br>&gt; Dan, please have a look at new MapStressTest and add enhancements you <br>&gt; discussed with Galder and Sanne. Once you integrate these changes lets <br>
&gt; do another round of testing of both LRU impls and if all goes well we <br>&gt; can drop old LRU entirely.<br>&gt; <br>&gt; Cheers,<br>&gt; Vladimir<br>&gt; <br>&gt; <br>&gt; <br>&gt; [ec2-user@ip-10-38-110-25 infinispan]$ ps -e | grep java<br>
&gt; [ec2-user@ip-10-38-110-25 infinispan]$ cat perf_new_lru.log<br>&gt; [INFO] Scanning for projects...<br>&gt; [INFO] Reactor build order:<br>&gt; [INFO]   Infinispan Common Parent<br>&gt; [INFO]   Infinispan Core<br>&gt; [INFO]   Infinispan Tools<br>
&gt; [INFO]   Infinispan Query API<br>&gt; [INFO]   Infinispan Tree API<br>&gt; [INFO]   Parent pom for cachestore modules<br>&gt; [INFO]   Infinispan JDBC CacheStore<br>&gt; [INFO]   Infinispan Lucene Directory Implementation<br>
&gt; [INFO]   Infinispan JDBM CacheStore<br>&gt; [INFO]   Infinispan BDBJE CacheStore<br>&gt; [INFO]   Infinispan CloudCacheStore<br>&gt; [INFO]   Parent pom for server modules<br>&gt; [INFO]   Infinispan Server Core Module<br>
&gt; [INFO]   Infinispan Server Hotrod Module<br>&gt; [INFO]   Infinispan Client Hotrod Module<br>&gt; [INFO]   Infinispan remote CacheStore<br>&gt; [INFO]   Infinispan CassandraCacheStore<br>&gt; [INFO]   Infinispan Server Memcached Module<br>
&gt; [INFO]   Infinispan WebSocket Server<br>&gt; [INFO]   Infinispan REST Server<br>&gt; [INFO]   Infinispan RHQ Plugin<br>&gt; [INFO]   Infinispan Spring Integration<br>&gt; [INFO]   Infinispan GUI Demo<br>&gt; [INFO]   Infinispan EC2 Demo<br>
&gt; [INFO]   Infinispan Distributed Executors and Map/Reduce Demo<br>&gt; [INFO]   Infinispan EC2 Demo UI<br>&gt; [INFO]   Infinispan Directory Demo<br>&gt; [INFO]   Infinispan Lucene Directory Demo<br>&gt; [INFO]   Infinispan GridFileSystem WebDAV interface<br>
&gt; [INFO]   Infinispan Distribution<br>&gt; [INFO] <br>&gt; ------------------------------------------------------------------------<br>&gt; [INFO] Building Infinispan Common Parent<br>&gt; [INFO]    task-segment: [test]<br>
&gt; [INFO] <br>&gt; ------------------------------------------------------------------------<br>&gt; [INFO] snapshot org.jboss.ws:jbossws-api:1.0.0-SNAPSHOT: checking for <br>&gt; updates from jboss-public-repository<br>
&gt; [INFO] snapshot org.jboss.ws:jbossws-api:1.0.0-SNAPSHOT: checking for <br>&gt; updates from jboss-public-repository-group<br>&gt; [INFO] snapshot org.jboss.ws:jbossws-parent:1.0.10-SNAPSHOT: checking <br>&gt; for updates from jboss-public-repository<br>
&gt; [INFO] snapshot org.jboss.ws:jbossws-parent:1.0.10-SNAPSHOT: checking <br>&gt; for updates from jboss-public-repository-group<br>&gt; [INFO] [enforcer:enforce {execution: enforce-java}]<br>&gt; [INFO] <br>&gt; ------------------------------------------------------------------------<br>
&gt; [INFO] Building Infinispan Core<br>&gt; [INFO]    task-segment: [test]<br>&gt; [INFO] <br>&gt; ------------------------------------------------------------------------<br>&gt; [INFO] [enforcer:enforce {execution: enforce-java}]<br>
&gt; [INFO] [resources:resources {execution: default-resources}]<br>&gt; [INFO] Using &#39;UTF-8&#39; encoding to copy filtered resources.<br>&gt; [INFO] Copying 17 resources<br>&gt; [INFO] [compiler:compile {execution: default-compile}]<br>
&gt; [INFO] Compiling 52 source files to <br>&gt; /home/ec2-user/infinispan/core/target/classes<br>&gt; [INFO] Preparing exec:java<br>&gt; [WARNING] Removing: java from forked lifecycle, to prevent recursive <br>&gt; invocation.<br>
&gt; [INFO] [enforcer:enforce {execution: enforce-java}]<br>&gt; [INFO] [exec:java {execution: default}]<br>&gt; Generating schema file in <br>&gt; /home/ec2-user/infinispan/core/src/main/resources/schema<br>&gt; Using file name infinispan-config-5.0.xsd for schema<br>
&gt; Generated schema file successfully<br>&gt; [INFO] [resources:testResources {execution: default-testResources}]<br>&gt; [INFO] Using &#39;UTF-8&#39; encoding to copy filtered resources.<br>&gt; [INFO] Copying 24 resources<br>
&gt; [INFO] [compiler:testCompile {execution: default-testCompile}]<br>&gt; [INFO] Nothing to compile - all classes are up to date<br>&gt; [INFO] [surefire:test {execution: default-test}]<br>&gt; [INFO] Surefire report directory: <br>
&gt; /home/ec2-user/infinispan/core/target/surefire-reports<br>&gt; <br>&gt; -------------------------------------------------------<br>&gt;   T E S T S<br>&gt; -------------------------------------------------------<br>&gt; Running TestSuite<br>
&gt; Performance for container BoundedConcurrentHashMap max capacity is <br>&gt; 1048576[numReaders,numWriters,numRemovers]=[8,2,1]<br>&gt; Average get ops/ms 188<br>&gt; Average put ops/ms 126<br>&gt; Average remove ops/ms 128<br>
&gt; Size = 743454<br>&gt; Performance for container BoundedConcurrentHashMap max capacity is <br>&gt; 1048576[numReaders,numWriters,numRemovers]=[32,4,2]<br>&gt; Average get ops/ms 54<br>&gt; Average put ops/ms 33<br>&gt; Average remove ops/ms 41<br>
&gt; Size = 762775<br>&gt; Performance for container BoundedConcurrentHashMap max capacity is <br>&gt; 1048576[numReaders,numWriters,numRemovers]=[64,8,3]<br>&gt; Average get ops/ms 26<br>&gt; Average put ops/ms 15<br>&gt; Average remove ops/ms 19<br>
&gt; Size = 758876<br>&gt; [testng-MapStressTest] Test <br>&gt; testBufferedConcurrentHashMapLRU(org.infinispan.stress.MapStressTest) <br>&gt; succeeded.<br>&gt; Test suite progress: tests succeeded: 1, failed: 0, skipped: 0.<br>
&gt; Performance for container BoundedConcurrentHashMap max capacity is <br>&gt; 131072[numReaders,numWriters,numRemovers]=[8,2,1]<br>&gt; Average get ops/ms 305<br>&gt; Average put ops/ms 99<br>&gt; Average remove ops/ms 213<br>
&gt; Size = 98200<br>&gt; Performance for container BoundedConcurrentHashMap max capacity is <br>&gt; 131072[numReaders,numWriters,numRemovers]=[32,4,2]<br>&gt; Average get ops/ms 89<br>&gt; Average put ops/ms 30<br>&gt; Average remove ops/ms 55<br>
&gt; Size = 96159<br>&gt; Performance for container BoundedConcurrentHashMap max capacity is <br>&gt; 131072[numReaders,numWriters,numRemovers]=[64,8,3]<br>&gt; Average get ops/ms 47<br>&gt; Average put ops/ms 12<br>&gt; Average remove ops/ms 19<br>
&gt; Size = 96977<br>&gt; [testng-MapStressTest] Test <br>&gt; testBufferedConcurrentHashMapLRU(org.infinispan.stress.MapStressTest) <br>&gt; succeeded.<br>&gt; Test suite progress: tests succeeded: 2, failed: 0, skipped: 0.<br>
&gt; Performance for container BoundedConcurrentHashMap max capacity is <br>&gt; 524288[numReaders,numWriters,numRemovers]=[8,2,1]<br>&gt; Average get ops/ms 234<br>&gt; Average put ops/ms 112<br>&gt; Average remove ops/ms 158<br>
&gt; Size = 393215<br>&gt; Performance for container BoundedConcurrentHashMap max capacity is <br>&gt; 524288[numReaders,numWriters,numRemovers]=[32,4,2]<br>&gt; Average get ops/ms 68<br>&gt; Average put ops/ms 32<br>&gt; Average remove ops/ms 47<br>
&gt; Size = 391512<br>&gt; Performance for container BoundedConcurrentHashMap max capacity is <br>&gt; 524288[numReaders,numWriters,numRemovers]=[64,8,3]<br>&gt; Average get ops/ms 35<br>&gt; Average put ops/ms 15<br>&gt; Average remove ops/ms 21<br>
&gt; Size = 390856<br>&gt; [testng-MapStressTest] Test <br>&gt; testBufferedConcurrentHashMapLRU(org.infinispan.stress.MapStressTest) <br>&gt; succeeded.<br>&gt; Test suite progress: tests succeeded: 3, failed: 0, skipped: 0.<br>
&gt; Performance for container CacheImpl max capacity is <br>&gt; 1048576[numReaders,numWriters,numRemovers]=[8,2,1]<br>&gt; Average get ops/ms 104<br>&gt; Average put ops/ms 48<br>&gt; Average remove ops/ms 58<br>&gt; Size = 738030<br>
&gt; Performance for container CacheImpl max capacity is <br>&gt; 1048576[numReaders,numWriters,numRemovers]=[32,4,2]<br>&gt; Average get ops/ms 30<br>&gt; Average put ops/ms 13<br>&gt; Average remove ops/ms 22<br>&gt; Size = 774764<br>
&gt; Performance for container CacheImpl max capacity is <br>&gt; 1048576[numReaders,numWriters,numRemovers]=[64,8,3]<br>&gt; Average get ops/ms 16<br>&gt; Average put ops/ms 6<br>&gt; Average remove ops/ms 13<br>&gt; Size = 776668<br>
&gt; [testng-MapStressTest] Test <br>&gt; testCache(org.infinispan.stress.MapStressTest) succeeded.<br>&gt; Test suite progress: tests succeeded: 4, failed: 0, skipped: 0.<br>&gt; Performance for container CacheImpl max capacity is <br>
&gt; 131072[numReaders,numWriters,numRemovers]=[8,2,1]<br>&gt; Average get ops/ms 220<br>&gt; Average put ops/ms 44<br>&gt; Average remove ops/ms 123<br>&gt; Size = 98304<br>&gt; Performance for container CacheImpl max capacity is <br>
&gt; 131072[numReaders,numWriters,numRemovers]=[32,4,2]<br>&gt; Average get ops/ms 66<br>&gt; Average put ops/ms 12<br>&gt; Average remove ops/ms 39<br>&gt; Size = 97832<br>&gt; Performance for container CacheImpl max capacity is <br>
&gt; 131072[numReaders,numWriters,numRemovers]=[64,8,3]<br>&gt; Average get ops/ms 34<br>&gt; Average put ops/ms 5<br>&gt; Average remove ops/ms 21<br>&gt; Size = 97802<br>&gt; [testng-MapStressTest] Test <br>&gt; testCache(org.infinispan.stress.MapStressTest) succeeded.<br>
&gt; Test suite progress: tests succeeded: 5, failed: 0, skipped: 0.<br>&gt; Performance for container CacheImpl max capacity is <br>&gt; 524288[numReaders,numWriters,numRemovers]=[8,2,1]<br>&gt; Average get ops/ms 144<br>
&gt; Average put ops/ms 44<br>&gt; Average remove ops/ms 77<br>&gt; Size = 393216<br>&gt; Performance for container CacheImpl max capacity is <br>&gt; 524288[numReaders,numWriters,numRemovers]=[32,4,2]<br>&gt; Average get ops/ms 42<br>
&gt; Average put ops/ms 12<br>&gt; Average remove ops/ms 28<br>&gt; Size = 392794<br>&gt; Performance for container CacheImpl max capacity is <br>&gt; 524288[numReaders,numWriters,numRemovers]=[64,8,3]<br>&gt; Average get ops/ms 22<br>
&gt; Average put ops/ms 6<br>&gt; Average remove ops/ms 16<br>&gt; Size = 387007<br>&gt; [testng-MapStressTest] Test <br>&gt; testCache(org.infinispan.stress.MapStressTest) succeeded.<br>&gt; Test suite progress: tests succeeded: 6, failed: 0, skipped: 0.<br>
&gt; Performance for container ConcurrentHashMap max capacity is <br>&gt; 1048576[numReaders,numWriters,numRemovers]=[8,2,1]<br>&gt; Average get ops/ms 303<br>&gt; Average put ops/ms 235<br>&gt; Average remove ops/ms 240<br>
&gt; Size = 711798<br>&gt; Performance for container ConcurrentHashMap max capacity is <br>&gt; 1048576[numReaders,numWriters,numRemovers]=[32,4,2]<br>&gt; Average get ops/ms 88<br>&gt; Average put ops/ms 68<br>&gt; Average remove ops/ms 70<br>
&gt; Size = 669381<br>&gt; Performance for container ConcurrentHashMap max capacity is <br>&gt; 1048576[numReaders,numWriters,numRemovers]=[64,8,3]<br>&gt; Average get ops/ms 45<br>&gt; Average put ops/ms 29<br>&gt; Average remove ops/ms 31<br>
&gt; Size = 758993<br>&gt; [testng-MapStressTest] Test <br>&gt; testConcurrentHashMap(org.infinispan.stress.MapStressTest) succeeded.<br>&gt; Test suite progress: tests succeeded: 7, failed: 0, skipped: 0.<br>&gt; Performance for container ConcurrentHashMap max capacity is <br>
&gt; 131072[numReaders,numWriters,numRemovers]=[8,2,1]<br>&gt; Average get ops/ms 261<br>&gt; Average put ops/ms 198<br>&gt; Average remove ops/ms 197<br>&gt; Size = 667905<br>&gt; Performance for container ConcurrentHashMap max capacity is <br>
&gt; 131072[numReaders,numWriters,numRemovers]=[32,4,2]<br>&gt; Average get ops/ms 75<br>&gt; Average put ops/ms 55<br>&gt; Average remove ops/ms 56<br>&gt; Size = 614548<br>&gt; Performance for container ConcurrentHashMap max capacity is <br>
&gt; 131072[numReaders,numWriters,numRemovers]=[64,8,3]<br>&gt; Average get ops/ms 37<br>&gt; Average put ops/ms 24<br>&gt; Average remove ops/ms 25<br>&gt; Size = 789004<br>&gt; [testng-MapStressTest] Test <br>&gt; testConcurrentHashMap(org.infinispan.stress.MapStressTest) succeeded.<br>
&gt; Test suite progress: tests succeeded: 8, failed: 0, skipped: 0.<br>&gt; Performance for container ConcurrentHashMap max capacity is <br>&gt; 524288[numReaders,numWriters,numRemovers]=[8,2,1]<br>&gt; Average get ops/ms 305<br>
&gt; Average put ops/ms 231<br>&gt; Average remove ops/ms 236<br>&gt; Size = 656558<br>&gt; Performance for container ConcurrentHashMap max capacity is <br>&gt; 524288[numReaders,numWriters,numRemovers]=[32,4,2]<br>&gt; Average get ops/ms 88<br>
&gt; Average put ops/ms 66<br>&gt; Average remove ops/ms 68<br>&gt; Size = 716811<br>&gt; Performance for container ConcurrentHashMap max capacity is <br>&gt; 524288[numReaders,numWriters,numRemovers]=[64,8,3]<br>&gt; Average get ops/ms 44<br>
&gt; Average put ops/ms 30<br>&gt; Average remove ops/ms 31<br>&gt; Size = 757864<br>&gt; [testng-MapStressTest] Test <br>&gt; testConcurrentHashMap(org.infinispan.stress.MapStressTest) succeeded.<br>&gt; Test suite progress: tests succeeded: 9, failed: 0, skipped: 0.<br>
&gt; Performance for container SynchronizedMap max capacity is <br>&gt; 1048576[numReaders,numWriters,numRemovers]=[8,2,1]<br>&gt; Average get ops/ms 171<br>&gt; Average put ops/ms 171<br>&gt; Average remove ops/ms 142<br>
&gt; Size = 679283<br>&gt; Performance for container SynchronizedMap max capacity is <br>&gt; 1048576[numReaders,numWriters,numRemovers]=[32,4,2]<br>&gt; Average get ops/ms 52<br>&gt; Average put ops/ms 52<br>&gt; Average remove ops/ms 38<br>
&gt; Size = 806142<br>&gt; Performance for container SynchronizedMap max capacity is <br>&gt; 1048576[numReaders,numWriters,numRemovers]=[64,8,3]<br>&gt; Average get ops/ms 26<br>&gt; Average put ops/ms 27<br>&gt; Average remove ops/ms 19<br>
&gt; Size = 860559<br>&gt; [testng-MapStressTest] Test <br>&gt; testHashMap(org.infinispan.stress.MapStressTest) succeeded.<br>&gt; Test suite progress: tests succeeded: 10, failed: 0, skipped: 0.<br>&gt; Performance for container SynchronizedMap max capacity is <br>
&gt; 131072[numReaders,numWriters,numRemovers]=[8,2,1]<br>&gt; Average get ops/ms 171<br>&gt; Average put ops/ms 172<br>&gt; Average remove ops/ms 151<br>&gt; Size = 722315<br>&gt; Performance for container SynchronizedMap max capacity is <br>
&gt; 131072[numReaders,numWriters,numRemovers]=[32,4,2]<br>&gt; Average get ops/ms 51<br>&gt; Average put ops/ms 54<br>&gt; Average remove ops/ms 47<br>&gt; Size = 810163<br>&gt; Performance for container SynchronizedMap max capacity is <br>
&gt; 131072[numReaders,numWriters,numRemovers]=[64,8,3]<br>&gt; Average get ops/ms 25<br>&gt; Average put ops/ms 26<br>&gt; Average remove ops/ms 22<br>&gt; Size = 848856<br>&gt; [testng-MapStressTest] Test <br>&gt; testHashMap(org.infinispan.stress.MapStressTest) succeeded.<br>
&gt; Test suite progress: tests succeeded: 11, failed: 0, skipped: 0.<br>&gt; Performance for container SynchronizedMap max capacity is <br>&gt; 524288[numReaders,numWriters,numRemovers]=[8,2,1]<br>&gt; Average get ops/ms 169<br>
&gt; Average put ops/ms 173<br>&gt; Average remove ops/ms 151<br>&gt; Size = 802294<br>&gt; Performance for container SynchronizedMap max capacity is <br>&gt; 524288[numReaders,numWriters,numRemovers]=[32,4,2]<br>&gt; Average get ops/ms 51<br>
&gt; Average put ops/ms 53<br>&gt; Average remove ops/ms 47<br>&gt; Size = 666371<br>&gt; Performance for container SynchronizedMap max capacity is <br>&gt; 524288[numReaders,numWriters,numRemovers]=[64,8,3]<br>&gt; Average get ops/ms 26<br>
&gt; Average put ops/ms 26<br>&gt; Average remove ops/ms 21<br>&gt; Size = 829093<br>&gt; [testng-MapStressTest] Test <br>&gt; testHashMap(org.infinispan.stress.MapStressTest) succeeded.<br>&gt; Test suite progress: tests succeeded: 12, failed: 0, skipped: 0.<br>
&gt; Tests run: 12, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: <br>&gt; 43,209.511 sec<br>&gt; <br>&gt; Results :<br>&gt; <br>&gt; Tests run: 12, Failures: 0, Errors: 0, Skipped: 0<br>&gt; <br>&gt; [INFO] <br>&gt; ------------------------------------------------------------------------<br>
&gt; [INFO] Building Infinispan Tools<br>&gt; [INFO]    task-segment: [test]<br>&gt; [INFO] <br>&gt; ------------------------------------------------------------------------<br>&gt; [INFO] snapshot org.infinispan:infinispan-core:5.0.0-SNAPSHOT: checking <br>
&gt; for updates from jboss-public-repository<br>&gt; [INFO] [enforcer:enforce {execution: enforce-java}]<br>&gt; [INFO] [resources:resources {execution: default-resources}]<br>&gt; [INFO] Using &#39;UTF-8&#39; encoding to copy filtered resources.<br>
&gt; [INFO] Copying 2 resources<br>&gt; [INFO] [compiler:compile {execution: default-compile}]<br>&gt; [INFO] Nothing to compile - all classes are up to date<br>&gt; [INFO] [resources:testResources {execution: default-testResources}]<br>
&gt; [INFO] Using &#39;UTF-8&#39; encoding to copy filtered resources.<br>&gt; [INFO] skip non existing resourceDirectory <br>&gt; /home/ec2-user/infinispan/tools/src/test/resources<br>&gt; [INFO] [compiler:testCompile {execution: default-testCompile}]<br>
&gt; [INFO] Nothing to compile - all classes are up to date<br>&gt; [INFO] [surefire:test {execution: default-test}]<br>&gt; [INFO] Surefire report directory: <br>&gt; /home/ec2-user/infinispan/tools/target/surefire-reports<br>
&gt; <br>&gt; -------------------------------------------------------<br>&gt;   T E S T S<br>&gt; -------------------------------------------------------<br>&gt; There are no tests to run.<br>&gt; <br>&gt; Results :<br>&gt; <br>
&gt; Tests run: 0, Failures: 0, Errors: 0, Skipped: 0<br>&gt; <br>&gt; [INFO] <br>&gt; ------------------------------------------------------------------------<br>&gt; [ERROR] BUILD FAILURE<br>&gt; [INFO] <br>&gt; ------------------------------------------------------------------------<br>
&gt; [INFO] No tests were executed!  (Set -DfailIfNoTests=false to ignore <br>&gt; this error.)<br>&gt; [INFO] <br>&gt; ------------------------------------------------------------------------<br>&gt; [INFO] For more information, run Maven with the -e switch<br>
&gt; [INFO] <br>&gt; ------------------------------------------------------------------------<br>&gt; [INFO] Total time: 720 minutes 23 seconds<br>&gt; [INFO] Finished at: Wed Jul 06 17:13:51 UTC 2011<br>&gt; [INFO] Final Memory: 206M/2001M<br>
&gt; [INFO] <br>&gt; ------------------------------------------------------------------------<br>&gt; [ec2-user@ip-10-38-110-25 infinispan]$<br>&gt; _______________________________________________<br>&gt; infinispan-dev mailing list<br>
&gt; <a href="mailto:infinispan-dev@lists.jboss.org">infinispan-dev@lists.jboss.org</a><br>&gt; <a href="https://lists.jboss.org/mailman/listinfo/infinispan-dev">https://lists.jboss.org/mailman/listinfo/infinispan-dev</a><br>
</div>