0 Replies Latest reply on Jun 7, 2009 6:05 AM by timfox

    Measuring server performance

    timfox

      I added a couple of undocumented features to the server that are useful in getting readings of server performance, they just need to be added in jbm-configuration.xml:

      log-journal-write-rate true/false - if true then the server will log out its journal write rate in real time in bytes/sec to stdout. This is useful to see just how fast the journal is really going.

      And a new one:

      perf-blast-pages - if this is specified then, immediately after startup, the server will do a self performance test, blasting the journal with records in a loop, to see how fast it can really go. The journal record size is always currentBufferSize (since this gives the best performance) - (we could add a parameter to specify the blast buffer size too).
      The number of pages is the number of buffers (flushes) it does in the loop.

      Trying this on both my laptop and messaging01 gives great results:

      Here's some output from messaging-01:

       [java] 05:58:23,130 INFO [org.jboss.messaging.core.asyncio.impl.TimedBuffer] Write rate = 1.4141455538694993E8 bytes / sec
       [java] 05:58:25,158 INFO [org.jboss.messaging.core.asyncio.impl.TimedBuffer] Write rate = 1.3275241025641026E8 bytes / sec
       [java] 05:58:27,134 INFO [org.jboss.messaging.core.asyncio.impl.TimedBuffer] Write rate = 1.3100566801619433E8 bytes / sec
       [java] 05:58:29,162 INFO [org.jboss.messaging.core.asyncio.impl.TimedBuffer] Write rate = 1.5828171992110455E8 bytes / sec
       [java] 05:58:31,138 INFO [org.jboss.messaging.core.asyncio.impl.TimedBuffer] Write rate = 1.2397447773279352E8 bytes / sec
       [java] 05:58:33,166 INFO [org.jboss.messaging.core.asyncio.impl.TimedBuffer] Write rate = 1.4451528205128205E8 bytes / sec
       [java] 05:58:35,142 INFO [org.jboss.messaging.core.asyncio.impl.TimedBuffer] Write rate = 1.2052521457489878E8 bytes / sec
       [java] 05:58:37,170 INFO [org.jboss.messaging.core.asyncio.impl.TimedBuffer] Write rate = 1.3036105719921105E8 bytes / sec
       [java] 05:58:39,146 INFO [org.jboss.messaging.core.asyncio.impl.TimedBuffer] Write rate = 1.3664388663967611E7 bytes / sec
      
      
      


      I.e. we get around 140 MiBytes per sec. Which is almost saturating the very fast server disks.

      In practice when sending/consuming real messages we never get beyond around 50MiB, so this tells us we can optimise a lot more!