3 Replies Latest reply on Nov 1, 2011 2:26 PM by pete.haidinyak

    Slow write speed (3.2k puts @ second), what am I doing wrong?

    pete.haidinyak

      Hi,

         I am running 5.1.0.BETA3 on three Centos 5.5 x64 virtual server via VMWare Workstation 8.0 (64bit) on my local box which is a Xeon W3530 with 12G or RAM (Quad with HyperThread). My box is running Windows 7 (x64). The virtual servers each have 1G of RAM and one CPU. The configuration file looks like...

      <?xml version="1.0" encoding="UTF-8"?>

      <infinispan

            xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

            xsi:schemaLocation="urn:infinispan:config:4.2 http://www.infinispan.org/schemas/infinispan-config-4.2.xsd"

            xmlns="urn:infinispan:config:4.2">

        

         <global>

            <transport>

               <properties>

                  <property name="configurationFile" value="jgroups-udp.xml" />

               </properties>

            </transport>

            <globalJmxStatistics enabled="true"/>

         </global>

       

       

         <default>

            <jmxStatistics enabled="true"/>

            <clustering mode="distribution">

               <l1 enabled="false" lifespan="10000"/>

               <hash numOwners="2" rehashWait="5000" rehashRpcTimeout="10000" />

               <async/>

            </clustering>

         </default>

      </infinispan>

       

       

      The JGroups configuration is the stock udp file.

       

      My simple test code looks like this...

       

          public static void main(final String[] p_arguments)

          {

              Properties props = new Properties();

              props.put(ConfigurationProperties.SERVER_LIST, "cache03;cache02;cache01");

              props.put(ConfigurationProperties.REQUEST_BALANCING_STRATEGY, RoundRobinBalancingStrategy.class.getName());

              props.put("maxActive", 10);

       

       

              System.out.println("Connecting to the cache...");

       

       

              final RemoteCacheManager rcm = new RemoteCacheManager(props, false);

              rcm.start();

              RemoteCache rc = rcm.getCache();

              final Stopwatch stopwatch = SimonManager.getStopwatch("stopwatch");

              final Split split = stopwatch.start(); // start the stopwatch

              System.out.println("Start: " + stopwatch);

       

       

              for (int counter = 0; counter < 500000; counter++)

              {

                  rc.put((String.valueOf(counter)), (String.valueOf(counter)));

                  if (counter % 10000 == 0)

                  {

                      System.out.println("Counter: " + counter);

                  }

              }

       

       

              split.stop();

              System.out.println("Result: " + stopwatch); // here we print our stopwatch again

              rcm.stop();

       

       

          } // - End static main Method.

       

       

      What I am finding is with this configuration I can only write to the cache at around 3250 put per second and read at around 5k gets per second.

      The CPU's on my box and the virtual boxes are running around 15-20%. The virtual networks is at 7-8% utilization.

       

      Is this a 'normal' throughput for a configuration like this?

       

      Thanks

       

      -Pete