The performance of IBM Integration Bus depends on the infrastructure on which it runs. A common question to the IBM Integration Bus Performance Team relates to inconsistent performance, be that when moving product versions or platforms. Often the problem relates to the infrastructure layer on which the Integration Node is running.
The infrastructure layer is often managed by other departments within the enterprise, and it can be difficult to fully understand the exact specifications of hyperthreading / SMT, VirtualCPU, realCPU etc.
This new tool, the CPU Performance Rating (PerfRating) tool has been written to help compare and understand the amount of CPU available in these environments.
The PerfRating tool by default runs a single thread and reports a single core CPU performance rating. It also provides the elapsed time taken to complete the test. Using the “-NumberOfThreads” parameter the tool runs the specified number of threads across several cores defined on the system. By specifying “-NumberOfThreads all” the tool will run sufficient threads to achieve 100% CPU utilisation.
Please unzip the attached PerfRating.jar.zip to provide the required jar file.
Start an IBM Integration Bus command console to create the appropriate environment to run the PerfRating tool. The tool is then launched by running:
java -jar PerfRating.jar hursley.performance.tools.PerfRating [-NumberOfThreads x/all] [-help]
Below is a sample output from the command when running on a 4 Core system with Hyper-threading enabled using the “-NumberOfThreads all” flag
java -jar PerfRating.jar hursley.performance.tools.PerfRating -NumberOfThreads 1
IBM Integration Bus PerfRating Tool
Number of System CPU Cores: 8
OS Name: Mac OS X
OS Version: 10.11.1
Java Runtime Version: 1.8.0_65-b17
Java Vendor: Oracle Corporation
Java VM Version: 25.65-b01
Java Class Version: 52.0
Command Line option all – Setting Number of threads to 8
This command will put your system under full load on 8 threads
Are you sure you want to continue: yes/no
Running 8 threads
ThreadId:11 – Calculating sequence to number 50 2 times
ThreadId:12 – Calculating sequence to number 50 2 times
ThreadId:13 – Calculating sequence to number 50 2 times
ThreadId:14 – Calculating sequence to number 50 2 times
ThreadId:15 – Calculating sequence to number 50 2 times
ThreadId:16 – Calculating sequence to number 50 2 times
ThreadId:17 – Calculating sequence to number 50 2 times
ThreadId:18 – Calculating sequence to number 50 2 times
Took 348 seconds to run
Total CPU time: 2787476ms, for 16 calculations
Average Core Value:574
Target Use Cases
The PerfRating tool can be used to compare platforms, for example you are moving from Platform A to Platform B and want to make sure the new platform is equally as powerful in terms of CPU as the original.
We have used this tool to great success within the development team to highlight machine setup issues i.e. machines that were the same hardware but produced different performance results (by approx 20%). At first we presumed it was due to a difference in the software or test, but on further analysis using the results of the PerfRating tool we found the issue was due to BIOS settings not been set optimally.
Comparing Virtual Machines
When working with virtual machines its often very hard to to know how much resource your virtual machine really has access to. This tool can be used to give an indication as to how much CPU you are getting and how well it scales.
Note: Due to this being a java based app, the version of java can affect the results. Minor variations have been seen when using different versions from the same provider i.e. IBM but larger variation has been seen when comparing results using different providers i.e. IBM jre vs OpenJDK.
Prereq: This tool requires Java 1.7 or above.