How do we test?
We recommend that readers who aren't interested in test procedures jump over this and the following page and head directly to the test results.
||Intel X25-E SSD
||Intel Xeon 3060
||Corsair Dominator 9136 DDR2
||Gigabyte GeForce 7200
||Ubuntu 8.04.1 Hardy
We think everybody reading this article can imagine the following scenario: You just bought a hard drive which according the specs sheet should transfer 120 MByte/s reading and writing. In the reviews you read about astonishing 110 MByte/s but after you put the drive into you system it feels much slower. The whole story gets even worse when you start a benchmark which does randomread/write of 4 KByte blocks. There you only get two to three MBytes/s.
Because of this we don't want to publish screenshots of standard programs like HD-Tach, HD-Tune, ... we want our tests to be
- meaningful and
We test with activated caches and NCQ (Native Command Queueing) because they're also activated under daily use. But the data size tested is always at least twice the amount of the memory.
We noticed that the measuring error is constantly within ±2%. Therefore we mention it only here.
Databases fundamentally depend on the storage system. If you choose your storage system correctly you can boost the performance of your database on a conventional hard drive significantly. Therefore we use PostgreSQL version 8.3.3 with the script pgbench.
Additionally we evaluate the S.M.A.R.T. data to assess if there are already errors.
The following table give you a brief overview to which points we turn our centre of attention.
|Sequential Read/Write Tests
- Are the values within the specifications?
- Which influence has the block size?
- Which influence has the filesystems block size?
|Random Read/Write Tests
- How severe is the influence on the theoretically possible (sequential) datarate?
- Which influence has the block size?
- Which influence has the block size on the filesystem?
Linux, XFS, why?
There are different reasons why we take a operating system based on a Linux Kernel instead of a fresh Windows Vista/XP installation with all Service Packs.
- The filesystem XFS offers you a flexibility you can't get from NTFS.
- The testprogram iozone runs natively under linux.
- The test partly aims to server applications.
- Iozone gives you data on a statistical basis (error, deviation, etc.)
The filesystem is going to be built as follows:
mkfs.xfs -f -d sunit=128 -d swidth=4096 /dev/sdb
We mounted with the following options:
mount -o rw,noatime,logbufs=8 /dev/sdb /mnt/ssd
The throughput is being measured using the following parameters:
iozone -Rb test_xk.out -i0 -i1 -i2 -+n -r xk -s4g -t2
The operations per second are being measured using
the following parameters:
iozone -Rb test_xk.out -i0 -i1 -i2 -+n -r xk -s4g -t2 -O
The "x" stands for the block size
Why do we test different block sizes?
It is important to reproduce scenarios of daily usage. Certain parameters need to be variable during the test to make a statement about the product. In our test the parameters are the different block sizes. It defines the size in KBytes which is written/read on the drive during a transaction.
With this method one can test the reading and writing of either small and big files. In a normal personal computer environment you usually don't find many files smaller than 16 KByte. The relative amount of small files is much bigger on a mail or database server. Therefore tests with small block sizes are of interest for database-based applications.
In bigger RAID arrays the hard disk cache is usually disabled and the RAID-Controller takes over the job of caching. Exactly in such setups hard drives need to be very fast when reading or writing small amounts of data. Sequential throughput isn't interesting in this case.
Discuss this article in the forum