4 Replies Latest reply on Sep 11, 2014 8:02 AM by prashant.thakur

    Performance issue

    mvpratap

      I am Using inifinispan 6 with cluster of two nodes ..Each is running on a separate machine(Each with 2GB Ram and Intel I3 processor fedora OS and two systems connected through LAN).

       

      I did a Simple Performance Testing

      Node1 started first and after 10 seconds Node2 started So,that Cluster formed Successfully.

      I am adding 1000 objects per second in Node1..After that on Node2 i am getting those objects and i am updating the object and putting into cache and then removing..

       

      So,A total of 1000 Put,1000 Get,1000 Update Operations per Second.

       

      Which takes CPU of 150 iinitially.. and after that it takes CPU on machine 30 and other machine CPU is 50, which is very huge..

       

      I need 10,00,000 put 20,00,000 get 10,00,000 update operations per second..Is this acheivable through Infinispan.

       

      Can anybody share their performance Results..

       

      Here i attached my test program..

       

      kindly provide help.

        • 1. Re: Performance issue
          nadirx

          Your test is single-threaded, so make sure you use multiple threads on multiple nodes.

          Also use the IGNORE_RETURN_VALUE flag when doing puts if you don't need to retrieve the existing value.

          You may want to use radargun [1] to test Infinispan on your hardware

           

          [1] radargun/radargun · GitHub

          • 2. Re: Performance issue
            mvpratap

            Thanks for reply,

                 Is this possible with cluster of 5 nodes with normal machines.

            10,00,000 put 20,00,000 get 10,00,000 update operations per second.. objects of size varying between 1 to 30kb.

            can u share some benchmark(performance) results with GC,CPU,Transactions per second..  tested in distributed mode

            Thanks

            • 3. Re: Performance issue
              rvansa

              Hi,

               

              even if you use the commas in numbers in a strange fashion (do you want 1M or 10M operations?) there's no way you can get such speeds when using synchronous replication - network latency is too long to achieve that. Regrettably, I don't have much experience with asynchronous replication, but you can't just write a busy loop doing put()s - that would overload the system - you'd need to put certain load and see if the cluster is behaving correctly.

              Another parameter is the number of actually concurrent accesses - if the threads were synchronized on one lock, the performance would go down.

               

              Gets are similar, but with replicated mode you can actually achieve millions of operations per second, because the reads wouldn't go through the network.

              • 4. Re: Performance issue
                prashant.thakur

                We are also looking for performance numbers in DIST_SYNC mode puts with Number of Owners as 2 which is the minimum of we require one redundant sync copy ?

                Any figures from Infinispan dev team on this mode. At max we are able to achieve is between 10k - 11k with 2 nodes.

                 

                Below is our best performance number.

                 

                For 2 Nodes with client on separate machine than ones which host the Nodes -

                 

                Load 10k records from 40 threads - Time taken for all records to be processed - 39 s

                Load Details :

                Total Number of Records Processed - 400000

                Average Number of Records Processed Per Second - 10256

                Average Time Taken For Execution By Each Thread - 38.327374s

                 

                Sample configuration is

                   <namedCache name="DummyCache">       

                        <clustering mode="dist">           

                            <stateTransfer chunkSize="1000" fetchInMemoryState="true" awaitInitialTransfer="true" timeout="3600000"></stateTransfer>           

                            <hash numOwners="2" numSegments="60" capacityFactor="1">               

                            </hash>

                        </clustering>

                 

                  <transaction

                      transactionManagerLookupClass="org.infinispan.transaction.lookup.GenericTransactionManagerLookup"

                  transactionMode="TRANSACTIONAL"

                      lockingMode="OPTIMISTIC"/>

                        <jmxStatistics enabled="false"></jmxStatistics>       

                        <indexing enabled="false" indexLocalOnly="false">

                            <properties>

                            </properties>

                        </indexing>

                        <modules>

                        </modules>

                        <compatibility enabled="true" marshallerClass="com.subex.spark.common.distributedcaching.server.configuration.ExtendedProtoStreamMarshaller"></compatibility>

                    </namedCache>