Version 9

    This page is now obselete - this has been superceded by the new JMS performance benchmark

     

    JBoss JMS Performance Benchmarking framework.

     

    Overview

     

    The Performance Benchmarking framework is based on the Distributed Test Framework.All the classes extend DistributedTestCase

     

    • Main test case spawns separate VM for each producer / consumer.It also acts as a controller

    • Waiting for all the VMs to come up and be in the ready state: this is achieved by using Jgroups as the synchronization mechanism.

    • Synchronize send receive in such a way that receiver is ready to receive messages before the producer starts

    • Producer and consumer publish the start and end times to the controller using object called TimerHolder

    • Controller gathers theTimerHolder object and publishes the time taken for each message from the producer to the consumer.

    • TimerHolder object is sent in batches to reduce the CPU consumption for the same

    • The result is published as a report into a csv file which can be opened in any spreadsheet application and analysed

    • All the operations related to administered objects are abstracted out into an abstract class.The actual implementation is specified in the jmsperformance.properties file.

    Installation

    • The benchmark is made up of the following source files

      • org.jboss.dtf.DistributedTestCase

      • org.jboss.test.messaging.jms.perf.Calculator.java

      • org.jboss.test.messaging.jms.perf.DistributedProducerSynchConsumerTestCase.java

      • org.jboss.test.messaging.jms.perf.PerformanceReporter.java

      • org.jboss.test.messaging.jms.perf.ProducerClientTest.java

      • org.jboss.test.messaging.jms.perf.SynchMessageConsumerClientTest.java

      • org.jboss.test.messaging.jms.perf.TimerHolder.java

      • org.jboss.test.messaging.tools.ServerManager.java

      • org.jboss.test.messaging.tools.providers.JBossMessServerManager.java

      • org.jboss.test.messaging.tools.providers.JBossMQServerManager.java

      • jmsperformance.properties

        • Contents of this file are

    #providerclass=org.jboss.test.messaging.tools.providers.JBossMsgingServerManager
    providerclass=org.jboss.test.messaging.tools.providers.JBossMQServerManager
    #providerclass=org.jboss.test.messaging.tools.providers.ActiveMQServerManager
    num_msgs=10000
    timerHolderSize=10
    

     

    Getting Started

    • Performance test case are run like normal junit test cases from the jboss-head/jms/tests directory

     

     

     

    E:\rajdeep\jboss\jboss-head\jms\tests>ant -f build_mq.xml test -Dlog=warn -Dtest.classname=org.jboss.test.messaging.jms. perf.DistributedProducerSynchConsumerTestCase

    • Each JMS server implementation will need its own build file

    • Logging is specified as a command line using -Dlog=warn syntax

      • Each VM has its own log file in in the jboss-head/jms/tests/log directory

     

    Performance Test Report

     

    Performance test report will be published as a performance_report.csv file in the directory where the test has been run

    Sample File

    Test results for test: org.jboss.test.messaging.jms.perf.DistributedProducerSynchConsumerTestCase When run: Thu May 05 13:00:10 GMT 2005 Total No of Msgs:,50 ,Actual No of Msgs:,50 ,AvgTime:,23.6 Total No of Msgs:,100 ,Actual No of Msgs:,100 ,AvgTime:,27.0 Total No of Msgs:,150 ,Actual No of Msgs:,150 ,AvgTime:,48.6

     

    Diagrams

    PerfBench_figure1.JPG