Happy Christmas to Everyone

As you've probably guessed things have been mad at work and home so I've had no chance to update the code or doc. I did update some of the online info (whilst having a coffee in Starbucks) which I'll carry on doing as time allows...

Just wanted to take the chance to wish every one, and their families, a Happy Christmas and a Fantastic New Year....

Lets try that again


I've uploaded a new build with some of the fixes I thought I included in my last update .

You can download it here.

And I really have started the documentation..... Expect a first cut shortly.

New build of swingbench (Build 341)

Okay... Whilst this is mostly a bug fix release.... and thanks for those who are sending them in.... more welcome Winking

I introduced two new piece's of functionality eek.... sorry.

The first enables to choose which charts to display in the overview chart. It can only currently be enabled by editing the config file. (Im not going to change the UI any further in this build). To enable it simply save any config file and edit the file... There's a new xml list in the Preferences section which should look like

<Name>Response Time</Name>
<Name>Transactions Per Second</Name>
<Name>Transactions Per Minute</Name>

You can edit the list and include only the ones you want to show, optionally including a maximum value. ie.

<Name>Transactions Per Second</Name>

The second change allows you to specify non autoscaling charts with maximum values inside of clusteroverview. This again needs to be edit inside of the clusteroverview.xml file


Im hoping the pain of a final (I promise) change will make things simpler for clusteroverview.

I've fixed a few further bugs as well. Some unhandled exceptions and things like the charts being grey in the overview chart when they clearly should have been white (shouldn't they?)

You can download it here


Website down

I had a few emails about the web site being down.

It turns out that I forgot to pay the bill... To be fair no one had told me that it was overdue.

Anyway apologies to anyone who had difficulties downloading software etc.

Turning on Debugging

Sometimes things go wrong... Sometime I make mistakes... I admit it.

To help me clear up those little issues debug information is essential... Previously to obtain this data you needed to edit the start up file. To simplify this process I've included a -debug option for the command line. So if you encounter some strange behavior, try turning this on first... Who knows it may solve the problem. if it still isn't obvious copy the text and contact me... I'll do my best to sort it out.

New build of datagenerator

I've uploaded a new build of datagenerator. This build has a few new features

  • A logging window during the generation phase that should make it easier to see what's going on
  • TimesTen support for datageneration (No reverse engineering at present)
  • Ability to turn on debugging from the command line (-debug)

Let me know if you encounter any problems via the comments page


Candidate build of Swingbench 2.3

I think Im getting close to a final version of swingbench 2.3. I've fixed tens of annoying bugs and have started testing(!!!). I've even started the 2.3 doc. Things are very busy at work so stick with me. I could really do with people sending me in bugs in this build. The more bugs the faster I'll fix them and the quicker the final build will make it through the door. This build features
  • TimesTen support for the jdbc order entry benchmark (requires datagenerator)
  • New log window for wizards
  • Numerous fixes
  • Fixes to orderentry benchmark

  • These will be the last enhancements. Only bug fixes from here on in.
  • Please provide feedback via the comments page or email me directly.

New version of TraceAnalyzer 0.1 build 99

Just finished a new build of TraceAnalyzer... I've uploaded it to the downloads page.

New features include
  • Support for 10046 traces
  • Bind parameters
  • Explain Plans
  • Wait Events
  • Formatting of SQL
It has few issues... the capture of bind values is a little flakey.... still trying to get my head around some of the parsing. I'll try and fix a few of the more obvious issues of the coming weeks...

New release of swingbench, build 273

I hadn't realised its been over 4 months since I released a build of swingbench. So here it is. Just a few things
  • I changed the format of the config file again... Sorry.... Im almost certain this will be the last change
  • The default chart is now overview although this can be changed in the preferences section
  • The test connection button works for Oracle but sadly not for TimesTen yet. I'll get this fixed shortly
  • Loads of minor fixes
Let me know if you have any problems here or on the comments page.

New build of Trace Analyzer nearly done as well.

New iWork for Mac

So... Im not one to bang on about how easy to use Macs are simply because unless your using/used one its difficult to describe how trivial little things make doing stuff much easier. A good example of this is in the new Keynote 08 (powerpoint equivalent in iWork). It has an "Alpha" function which means that its trivial to remove the background from an imported image. I do a lot of powerpoint at work (yup I use a mac for work) and Im often forced to use icons or images that I've imported from the web... the problem with these is that they usually have a background in a color which is the complete opposite of the one Im using... so I either have to go with an ugly unprofessional looking slide or spend a few minutes in a "paint" package removing the background... In the new Keynote this takes seconds and is an example of Apple understanding the way that people do "stuff"...

There are hundreds of other examples in the new iLife and iWork packages that really make them stand out as examples of how people should do interfaces and work flows.... so if you get a chance take a look


Datawarehousing benchmark

Recently some of my colleagues and myself worked on a data warehousing benchmark. This comprised of a 1TB data set consisting of a 14 billion row fact table with 5 dimensions of a much smaller size. Nothing outrageous a classical star schema... bread and butter to Oracle. We used the following hardware configuration

2 Intel based servers.
  • 4 CPUs with Dual Cores (hyper threading enabled).
  • 64 GB of memory in each
  • 2 dual ported 4Gb HBAs
  • 2 dual ported 1Gb Nics
The storage consisted of
  • 10 low cost storage arrays
  • 20 controllers
  • 20 trays of disk with 14 15k 36GB drives in each
The fabric consisted of
  • 2 mid range 16 port fibre switches
The network consisted of
  • 1 mid range 16 port 1Gb switch (I know we really should have had two of these)

The point here is that the hardware was low end but with the ability to deliver plenty of CPU and I/O at very attractive price point. For those that aren't that interested in any more of the details the headline figures where that we performed full table scans at over 1.6GB/sec but due to compression we achieved logically three times this figure.

We used a stock 2.6 64 bit Linux kernel we modified the following kernel settings
  • wem, rmem were to set to 512k to reflect the fact that we were going to use 32k block sizes
  • Huge pages were enabled... its a much more sensible way of managing the shared memory required for the SGA
  • We enabled jumbo frames in the switch and set the MTU on the interconnect to 9000bytes
  • We used the deadline scheduler to improve I/O prioritisation.
  • Multipath was used to provide DMP over the 4 paths to disk from each of the servers.

The Oracle database was largely unchanged from the defaults with the exception of the following settings
  • 16GB for SGA and PGA
  • The fact table was compressed
  • 32k block sized to improve compression ratios
  • Two parallel instance groups to ensure execution of certain queries on a given node.
  • Query rewrite was enabled.
  • ocfs2 was used for the quorum and ocr files
  • ASM was used to provide storage for the datafiles etc. Each physical tray of disk was presented to ASM as logical disk of roughly 500Gb.
  • ASMlib was used to persist disk identity and simplify configuration.

The tests consisted of a series of SQL statements that were run serial, concurrently and as a series of streams. I cant give much in the way of specifics for obvious reasons but the machine ran at about 80% utilization during the test most of the queries returned sub minute when run against the full data and many sub second when materialized views were exploited.

However the real benefit came from the fact that low the cost commodity hardware made the system relatively cheap and easy to put together. Like any system there were things we would have liked to have done differently if we'd had the chance... The benchmark was done in 10 days (OS Install, disk, layout, Oracle install, data load etc.) and so things were done in a rush and with a little more thought could have been done much more efficiently... We are fairly certain we could have improved the I/O performance but we didn't have the luxury of experimentation and so we made a call and lived with the consequences... I strongly recommend that any one building one of these systems spends some time with Oracle Orion disk benchmarking system to determine an optimal layout. A recent customer evaluating several possible disk layout configurations showed over 100% difference between two subtly different versions.

Back again...

I wonder if anyone noticed that I haven't posted any new entries lately... no ahhh well. Anyway work has been crazy and I have to confess I've had little or no chance to update any of my projects. I have used them and spotted lots of things I'd like to get done.... I hoping to get some time next week to some testing and then documentation for 2.3.....

I'll be updating my blog of the next couple of days with the findings from a benchmark we did recently nothing overwhelming just things I'd like to remember and that might be useful to other people....

Fix for 2.2 of swingbench

I managed to break minibench in my last update of swingbench 2.2. I've uploaded a new build and taken advantage of the opportunity to refresh the libraries. Sadly this will mandate 1.5 as the new JVM. Apologies if this causes any inconvenience.

New Viewlets and Presentation

I've just added a pdf containing an overview presentation of Swingbench here. I've also uploaded some viewlets to give you a feel for how Swingbench looks in 2.2 and and 2.3. Expect more soon.

Thanks to everyone that attended the RAC SIG webseminar

The RAC SIG on the 7th June

Just a quick reminder. I'll be doing a presentation to the RAC SIG on the 7th of June starting at 9am Pacific Time.


I'll be giving an overview of swingbench, showing the various components and what it can be used for. I'll also give a demo of the new 2.3 version of swingbench and what will make it into the production build. With a bit of luck I'll also find time to answer questions...

I was also hoping that I could include a few of your stories whether positive or negative... So if you have any feedback you'd like to include drop me a line through the comments page.



More fixes for datagenerator

Fixes include

• All menus now working
• Added sizing wizard to menu
• New Column wizard for DB sampler
• lots of other minor fixes
• zip file is now version numbered.

Let me know if this helps

Yet another set of bug fixes to datagenerator

Some new bug fixes for datagenerator

• Fixed various Array out of Bound Exceptions
• Stopped users creating an empty table without columns
• Stopped users creating a column without datagenerators
• Fixes a few other minor bugs
• Add a new emp/dept default config file.

Keep the bug reports coming

Update to datagenerator

So I finally managed to find time to fix a few bugs inside of datagenerator.

• Commit and batch size can now be specified and work properly
• Database column sampling now works
• Fixed a bug that stopped the specification of parent child relationships in some instances
• Build number now shown in title bar.

Let me know what you think.

Update of 2.2 and 2.3

A fewer minor patches to both swingbench 2.2 and 2.3 including

• Faster orderentry schema build
• Fix in the 2.2 oewizard where users where unable to specify the size of the schema

you can download the new builds here

Update of 2.3

I've updated 2.3 (I told you I'd be patching regularly) to include new command line functionality for charbench and a few fixes to some of the benchmarks.

I've replaced the old command line options of -vc,-vt, etc. with a more flexible option. you can now choose to list as many or as few metrics as you desire.

./charbench -v users,tpm,tps,cpu,disk,dml

Displays the time of the reading, users logged on, transactions per minute, transactions per second, cpu, disk, and dml operations. Adding the -rr option (refresh rate) allows you t change the speed of update.

./charbench -v users,tpm,tps,cpu,disk,dml -rr 1

Will update the reading every second.

It can be downloaded from the usual location.

New Build of 2.3... At last

So I've finally got enough of swingbench 2.3 finished to feel confident I can at least show you where I am There's just one or two things I need to include before I can feel confident that I can take it out of beta. But before I tell you what those are let me tell you what's new.

• Updated GUI to include all configuration parameters

• New overview chart including all relevant info (see below)

• Numerous bug fixes
• Changes to configuration file (Sorry!!)
• Some new command line parameters for charbench

I've still got a few things to finish, these include
• Frequency support for transactions i.e run once every 20 minutes
• Statistic collection window.

So expect more frequent releases over the next few days.

Like always you can get the latest build here

Presentation to the US RAC SIG

I'll be doing a webcast on swingbench to the US RAC SIG on June 4th. I believe it will be starting at 9.30 PT (check the web sit for confirmation). I hope to detail what swingbench is capable of, the best practices when using swingbench and what I'll be doing next. I think Im suppose to be answering questions as well so you'll get a chance to have ago at me for all those annoying bugs....

So if your interested join in and I'll do my best to keep it informative and entertaining.


New functionality for 2.2

I've backported some functionality from 2.3 to 2.2. This enables the user to specify the runtime for swingbench from the command line. I've also added a new command line option to specify a login delay from the command line as well. This is useful for throttling back connections for large numbers of sessions.


./charbench -cs //kgy11034/orcl -rt 0:30 -a -uc 1000 -min 1500 -max 2500 -ld 10

Will run charbench for 30 minutes and then automatically log off the users... the -ld 10 will put a 10 millisecond delay in between connections giving the server a bit of breathing space...

you should be able to run all tests using a script like this

./charbench -cs //kgy11034/orcl -rt 0:30 -a -uc 1000 -min 1500 -max 2500 -ld 10
./charbench -cs //kgy11034/orcl -rt 0:30 -a -uc 2000 -min 1500 -max 2500 -ld 10
./charbench -cs //kgy11034/orcl -rt 0:30 -a -uc 3000 -min 1500 -max 2500 -ld 10
./charbench -cs //kgy11034/orcl -rt 0:30 -a -uc 4000 -min 1500 -max 2500 -ld 10

I've also recompiled 2.2 with a 1.4 JVM to support backwards compatibility.

Sometimes we all make mistakes...

Its not easy keeping an idea on all aspects of swingbench and sometimes I let stuff get through that really shouldn't. I try my best. I made a amateurish mistake on sequence numbers in the order entry bench. I've uploaded a new build of 2.2 which I'll include in the new 2.3 build shortly. If you find these annoying little bugs or potentially big issues drop me a line and I'll do my best to put it right.

A little coordinator/cpumonitor issue

I ran into this issue just recently. I couldn't get swingbench to talk to the coordinator and sadly the large RMI stack traces didn't explain it very well. It turns out that Java RMI expects the hostname and hostname.domain in the /etc/hosts file to be on a separate line to the localhost entry i.e. on the second line.

For example change localhost localhost.localdomain saturn saturn.planets

to localhost localhost.localdomain saturn saturn.planets

Making this simple modification gets everything working as expected. This problem is common in a DHCP environment (not ideal for benchmarking) where you acquire ip address and potentially hostnames dynamincally. Its good practice to keep them on separate lines anyway.

More Coming...


So I know I've been quiet recently but that doesn't mean to say I haven't been busy in-fact its been mad at work lately and thats meant that I haven't had a lot of time to work on swingbench or any of my other pet projects. So where am I now? Well there will be a new drop out shortly including some changes to the user interface. Im not sure whether I like them or not. The good news is that all of the options that were once hidden inside of swingbench config file can now be changed from the user interface and its given me the chance to include some that I've meant to put in for some time. The problem with this is that its made the UI a bit busy. I've implemented the change using sub tabs and I swore I'd never to do this as I think it confuses the end user.... I'll let yo decide but the one thing it has confirmed to me is that I'll have to move 2.4 on the a tree based UI similar to the one I use in datagenerator... So what's to come in the next couple of weeks...

• UI changes as I mentioned
• New overview chart replacing the existing one, to feature TPM, TPS, Average response time (?), CPU and Disk I/O.
• Temporal based transactions i.e Run once every 20 minutes or just run once.
• Start recording statistics after x mins, stop recording after x mins.

Now for the bad news. The changes have been quite extensive and have included significant changes to the config file which means any bespoke changes you've made will have to be redone. The changes also mean I could have broken a lot of stuff so expect frequent and regular updates over the next few weeks. I'll also be updating my blog more frequently as well...

Expect the first drop at the start of next week.

TimesTen Fix

I know I had promised an update of the front end to swingbench in my next release however its been pointed out to me that I managed to break my TimesTen support in one of the earlier releases. I've just uploaded a new build that should fix these issues. I've also uploaded a simple TimesTen walkthrough. It can be found here