Index of /aoe-exercise

      Name                    Last modified       Size  Description

[DIR] Parent Directory 05-Oct-2007 12:44 - [   ] aoe-exercise-1.00.ta..> 20-Sep-2006 14:06 18k

AoE-EXERCISE
------------


Overview
--------
This package includes two tools and a patch to vblade-10 to assist in the
analysis of AoE performance.

disk-exercise can be used to analyse the read/write performance of a local
(dev/hda2) or AoE (dev/etherd/e4.1) hard disk. It can also be used to put a
local/AoE hard disk under constant load for analysis by other tools.

aoe-exercise can be used in place of the aoe device driver to create raw AoE
traffic without the complexity of a device driver and filesystem in the way,
bypassing features which interfere with accurate performance measurements such
as read/write buffering and network re-tries.

vblade-10-exercise.patch is a patch which can be applied to vblade-10 that
allows it to display run-time performance statistics, and to disable disk-io
allowing you to see how your network+AoE performs without the disk I/O slowing
things down.


Installation
------------
To install aoe-exercise & disk-exercise to /usr/sbin:

	make
	make install

To build a patched vblade-10:

	<unpack vblade-10>
	cd vblade-10
	patch -Np0 -i <aoe-exercise directory>/vblade-10-exercise.patch
	make


Methodology
-----------
Take two machines, one will act as an AoE server with a local hard disk, a
vblade server and disk-exercise installed. The will act as an AoE Client with
the aoe module and both aoe-exercise and disk-exercise installed.

On the AoE server determine the read speed of the local hard drive:
	disk-exercise /dev/hda2

Now you know how fast it can read from the hard disk.


Start a vblade server on the AoE server with statistics enabled and hard disk
I/O disabled (it opens the hard disk supplied, but doesn't read or write
from/to it):
	vblade eth0 4 1 /dev/hda2 --stats --disable-disk-io

On the AoE client machine, ensure that the aoe modules is not loaded. Now we
can determine the read speed of AoE over your network:
	aoe-exercise eth0 4 1

If you get any packet loss try reducing the aoe-exercise window size:
	aoe-exercise --window-size 20 eth0 4 1

If the test does not last long enough, try increasing the number of packets
sent:
	aoe-exercise --packet-count 500000 eth0 4 1

For a 100TX ethernet, you should expect around 11MB/s to 12MB/s. I haven't
tested 1000TX ethernet as I don't have the neccessary equipment. If you have
a 1000TX network, you might also want to enable jumbo frames:

	aoe-exercise --jumbo --packet-count 500000 eth0 4 1

Note that jumbo frames haven't been tested, and that vblade-10 doesn't
support jumbo frames.


From the disk speed and AoE network speed you should be able to calcluate the
transfer speed of your AoE disk, it being the lower of these two values. To
confirm this kill vblade, and restart it:
	vblade eth0 4 1 /dev/hda2 --stats

Now run aoe-exercise again:
	aoe-exercise eth0 4 1

Note that while the output from aoe-exercise should be very close to the
value you calculated, because vblade-10 uses buffered I/O (which is a bad
thing - buffering should be client side only) the performance may be reported
higher than it really is because data is being read from memory rather than
the hard disk. This will only have a effect if the disk is slower than the
network.


Finally load the aoe module, and wait a few seconds for it talk to the server
and find the AoE disk. Then determine the performance of an AoE disk without
filesystem or client side disk caching in place:
	disk-exercise /dev/etherd/e4.1

This should be close to the values output by the second aoe-exercise run
above.


You can repeat these test for write operations by using the following command
instead:
	disk-exercise --operation write
	aoe-exercise --operation write


Data Errors
-----------
Both disk-exercise and aoe-exercise test the sectors that the read to look
for data errors (do the sectors read have the same contents that were written
to them earlier). If you haven't previously written to the disk with either of
these tools with the test data, then during read operations the tools will
report a large number of data errors which you can safely ignore.

If however you get data errors during a verified-write operation, there is a
serious problem.


disk-exercise
-------------
Options:

-o --operation read (Default)
               write
               verified-write
	Perform a linear read, write or verified write of the hard disk
        starting from the beginning. If the operation reaches the end of the
        hard disk it starts again from the beginning continuously. If the write
	operation is used, the sector number is written at the beginning and
	end of each sector. This is checked during read operations and if the
	values are not the same a data error is generated. If the verified
	write operation is used an additional random verification code is
	written to each sector, and once a chunk has been written, it is
	immediately re-read and compared with the original.

-m --mode direct (Default)
          buffered
          buffered-sync
	It's rare that you would ever want to use this option. It's only
	purpose is to demonstrate the performance difference between direct
	I/O where data is always read from or written to the disk and
	buffered I/O where data is read from or written to memory buffers for
	later flushing to disk. On a AoE client buffering is useful, on an AoE
	server buffering is very dangerous. The buffered-sync mode does normal
	buffered I/O but also performs a filesystem sync at the end of the test
	to flush any buffered writes to the hard disk.

-c --chunk-size <size> (Default: 20480)
	The size of a single I/O operation. This must be a multiple of the
	sector size (512). As this value decreases the performance will
	generally drop.

-d --duration <time> (Default = 10.0)
	How long (in seconds) the test is run for.


aoe-exercise
------------
Options:

-o --operation read (Default)
               write
	Perform a linear read or write of the hard disk starting from the
	beginning. If the operation reaches the end of the hard disk it
	starts again from the beginning continuously. If the write operation
	is used, the sector number is written at the beginning and end of
	each sector. This is checked during read operations and if the values
	are not the same a data error is generated.

-s --sector-count <sectors> (Default: 2)
	The number of sectors to transmit per packet. This is limited by your
	network's MTU (Maximum Transmission Unit). For 100TX networks the MTU
	is normally 1500 giving a maximum sector count of 2, while for
	1000TX (Gigabit ethernet) the MTU is normally 9216 giving a maximum
	sector count of 17.

-j --jumbo
	Equivalent to --sector-count 17

-w --window-size <packets> (Default: 25)
	The maximum number of request packets that may be issued that haven't
	been responded to. Increasing this value will increase the network
	performance, however if the value is too high you will get packet loss
	which is very bad for performance.

-p --packet-count <packets> (Default: 100000)
	The number of request packets to issue for the test. You should expect
	to receive an equal number of response packets (assuming no packet
	loss). Increase this value to increase the length of the test.


vblade-10-exercise.patch
------------------------
Options:

--stats
	Display performance statisics on the standard output every second.

--disable-disk-io
	Perform all functions as normal except that no data is actually read
	from or written to the hard disk. You still need to supply a hard
	disk as a parameter.


Disclaimer
----------
This software can write directly to your hard disk, and could erase it's entire
contents. Use it carefully. I accept no responsibility for any loss or damage
caused by the use of this software, and provide no warantee for it.