An open LAMP benchmark suite
Perl Shell
Switch branches/tags
Nothing to show
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.


Environment Setup:

1. Prepare the KVM host:
   - Make sure qemu and libvirt are installed
   - Configure bridged networking
   - Make sure guests can get an IP address and set their hostname via DHCP
   - Make sure your host can launch VMs from arbitrary directories (you may
     need to put SELinux or AppArmour in permissive mode)

2. Prepare the Driver host:
   This machine will be generating lots of network traffic to your VMs so it
   should be on a fast link that you don't mind saturating.  You may use the
   KVM host as the driver, but the added jmeter activity will impact the
   quality of your results.

   - Install a recent, high-quality JRE (ie. IBM JRE 1.6)
   - Install Apache jmeter:

3. Install Cloudy on the KVM host:
   git clone git://
   cd cloudy

4. Create the base image:
   sudo ./create-baseimage

   - This will install Fedora 12 onto a new disk image that will be used as a
     template for the virtual machines.
   - Sudo must be used because qemu needs permission to set up the network.

5. Create individual VM instances:
   ./create-instance <nr>

   - You should create a sequence of these from 1..N

Executing the Benchmark:

1. Copy driver files to the driver host:
   scp client/cloudy.jmx client/ <driver-host>:

2. Start the cloudy VM instances:
   for i in `seq 1 $N`; do
       sudo virsh create instances/cloudy-$i/domain.xml

   - Sudo must be used because qemu needs permission to set up the network.
   - If this is the first time they are booted, the VMs will perform
     self-configuration (configure mediawiki, set hostname, etc). When this is
     complete, you should be able to see a wiki at http://cloudy-<nr>/wiki.
     You can check the status of configuration by going to http://cloudy-<nr>/.

3. Execute the jmeter test plan
   jmeter -n -t test.jmx -l <results-file> -Jnr_hosts=<nr_hosts> \
                                           -Jthreads=<threads> \
                                           -Jruntime=<runtime> \
      <results-file> is the file to record jmeter results to
      <nr_hosts> is the number of cloudy VMs to target simultaneously
      <threads> is the number simultaneous users (per VM)
      <runtime> sets the duration of the run (in seconds)
      <rampup> defines how long it should take for all threads to be started

4. Process the results:
   mkdir plots/
   ./ -o summary -p plots <results-file>

   - The summary file contains post-processed jmeter results (including quality
     of service and throughput metrics).