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
Comments