Swingbench 2.3 available

Swingbench FAQ...

The following is a list of questions commonly asked about the swingbench benchmarking environment.

Questions...

Miscellaneous

Configuration

Benchmarks

Answers...

Miscellaneous

Is swingbench really free?

Yes. It comes as seen, there are no licenses or support charges. If you find it useful let us know.

Can I get support for swingbench?

No. There is no support mechanism for swingbench, it is not an official Oracle product (hence the reason for it being on my personal website). I'll fix obvious bugs but sadly my full time job does not allow me to provide advice on training or how to configure swingbench. I have started improving the documentation and rounding off some of the rough edges which should help.

Can I raise TAR's against swingbench?

No. As I indicated above there is no official support channel for Swingbench. If its something you simply can't figure out leave me a message on comments page and I'll get back to you as soon as I can.

How do I report a bug for Swingbench/TraceAnalyzer/DataGenerator?

Whilst no official system exisits for reporting bugs against swingbench you can email the problem directly to me via the comments page and I'll do my very best to resolve the issue in one of the following point releases. When you report the bug can you please ensure that you include

  • Swingbench version
  • The platform swingbench is running on
  • A description of the error
  • Any debug out put that you think is releveant (In 2.3 try running with the -debug option)

Can swingbench be used to benchmark hardware?

Whilst this is one of the main uses of Swingbench it has to be stated that because it is an unofficial product the author or Oracle coorporation will not offer an guarantees on the validity of the results. It should primarily be used as a guide line.

Why hasn't there been a new release lately?

Developing swingbench is not my full time (or even part time) job. It is done to support projects inside of Oracle.

Can I run swingbench against databases other than Oracle?

This is not the aim of Swingbench. It is designed as a support/demo tool of Oracle technology. We have no plans to extend its functionality to run against non Oracle databases. Currently it supports Oracle and TimesTen only.

Were do I find up to date information on swingbench?

I try and update my thoughts on the development of swingbench and any minor changes I make inside of my blog which you can find here.

Configuration

What is the maximum CPU load I should run a load generator at?

In theory the load generator(s) should be run on a seperate machine to the database and the average load should be kept below 70%. This generally results in reliable results

Whats the difference between swingbench,minibench and charbench

Swingbench, minibench and charbench are simply frontends on the swingbench kernel. Swinbench is a rich fully functional frontend that includes several real time charts and as a result has a significant cpu cost associated with it. Minibench is a simple graphical tool without the overhead of Swingbench but is useful for users who like to be able to see what is happening in an organised and controlled fashion. Charbench is a character front end that enables the load generator to be be run where it is not possible/sensible to use a graphical front end. All three of the front ends have the same functionality and are interchangeable with one another.

How many load generators (servers) will it take to fully load a database server with?

It Depends. Typically it is a ratio of one load generator CPU to two database CPU's That is to say it would take a 2 CPU machine to fully load a 4 CPU machine. This assumption is based on the CPU's being of equal processing power and the load being run with zero think time. It is usually the case that you will need as least 2-4 users/threads per CPU.

Whats the best version of swingbench to run my tests with?

Currently 2.2 is currently the most stable version of the code. It has had a number of bug fixes and functionality enhancements that should make it easier to use.

I don't get any charts, other than user count, inside of clusteroverview, what have I broken?

This usually occurs because the the "DisplayName" in clusteroverview.xml is different to the connect string being used by a load generator. Presently if you wish to measure the scalability of a cluster the DisplayName attribute must match one or more load generators connect strings. i.e if you have a load generator(s) with a connect string of //node1:1521/soeservice the DisplayName must be //node1:1521/soeservice.

Clusteroverview dosen't work on windows/linux when I upgrade to 2.2

Some of the parameters in both swingconfig.xml and clusteroverview.xml have changed between 2.1g and 2.2. The most signicant of these was the "Coordinator" Element this has a child called "Server" in 2.1g this has changed name to "Location" in 2.2. Please use the latest config files shipped in 2.2.

Can I run mulitiple load generators against a single database instance?

Yes. Infact it is adviseable when running a large load against a database to use multiple copies of swingbench. These can be coordinated using clusteroverview.

I keep geeting a java exception "java.lang.NoSuchMethodError: oracle.jdbc.pool.OracleDataSource". What am I doing wrong.

Swingbench require's the latest versions of jdbc to work properly. Download the 10g jdbc drivers from Oracle and use these even when running against a 9i database.

Which JVM should I use?

Currently swingbench requires at least a 1.5 JVM (Java 5) to run. Java 6 has been tested and works fine if your platform supports it

Why don't I see CPU and disk statistics inside of swingbench when running on the Windows platform?

The CPU/Disk monitor used by swingbench uses the common unix utility vmstat to calculate the load on a target platform. This utility is not availble by default for Windows however it can be obtained via the Cygwin environment (www.cygwin.com)

Benchmarks

Whats the difference between the Callingcircle benchmark and Order Entry benchmark?

Order entry models the classic order entry stress test. It has a similar profile to the TPC-C benchmark. This version models a online order entry system with users being required to log-on before purchasing goods. The Calling Circle benchmark represents a self-service OLTP application. The application models the customers of a telecommunications company registering, updating and inquiring on a calling circle of their most frequently called numbers in order to receive discounted call pricing. It is characterized by large amounts of dynamic PL/SQL and is CPU intensive. Calling Circle also requires the regeneration of data after each run.

Why do I need to keep generating new sets of data for each Callingcircle benchmark run?

Callingcircle transactions are based on "customers" that need to be processed or have their details updated. The generation process looks for likely candidates and writes them to files. Each benchmark run updates customer details and so new candidates need to be found. Eventually a significant proportion of available cusotmers have had their details updated and so the entire benchmark needs to be updated. It is also important that if you are using multiple load generators each has its own set of generated data.

How many transactions do I need to generate for a Callingcirle benchmark run?

It depends. The more powerful the machine/cluster the faster the transactions will be processed. 1 thousand transaction lasts only three minutes on a pentium 4 class processor. Therefore to generate a 30 minute load you'd need at least 10,000 transactions and probably 40,000 transactions for a 4 CPU machine.

Why are there two versions of the Order Entry benchmark?

One uses PL/SQL stored procedures to generate a load and the other uses discrete java routines and individual jdbc statements, as a result the later will generate a lot of network traffic. We would recomend the use of the PL/SQL version of the benchmark.

Order Entry dosen't appear to scale as well as Callingcircle, why?

Order Entry updates a relatively small table containing stock levels at each warehouse. This creates a great deal of contention and limits it scalability.

Let me know if its of any use via the comments page