Date: 27 Feb 2001 15:35:42 -0600 From: Kirk Strauser <kirk@strauser.com> To: kirk@strauser.com Cc: freebsd-fs@freebsd.org, mtbear@modus.org, corwin@ghostwheel.honeypot.net Subject: A benchmark of Vinum with IDE drives Message-ID: <8766hverm9.fsf@pooh.honeypot>
next in thread | raw e-mail | index | archive | help
I decided to benchmark Vinum on various combinations of low-cost hardware that
a small-budget user might be likely to have. I thought that the results were
interesting enough that someone else might like to read them, and I certainly
thought that the FreeBSD community could use a few more actual numbers for
would-be enthusiasts to dig through. The outcome of my testing follows below.
######## An Outline ########
1. Introduction
A. Motivation
B. Setup notes
2. Identification
A. Individual Devices
B. Vinum Volume definitions
3. Benchmark Results
A. Methodology
1. Bonnie
2. rawio
B. Notes
C. Results - Individual Devices
1. Bonnie
2. rawio
D. Results - Vinum Volumes
1. Bonnie
2. rawio
4. Commentary
A. Objective
B. Subjective
######## The Presentation ########
1. Introduction
A. Motivation
I became interested in Vinum at roughly the same time as when I noticed
that my /usr partition was over 90% full. Specifically, a Linux-using
friend was talking about LVM (Logical Volume Manager) and it's
drive-concatenatio capabilities. This sounded like just the thing I
needed.
I need to explain something at this point. As you'll see below, my
testbed had an U/W SCSI 4GB drive that I used for /, /var, /tmp, etc., and
an ATA/66 13GB drive that held /usr, /usr/export, and other large
mountpoints. Given that's what I had to work with, that's what I tested.
Yes, I am *completely* aware that striping your volumes across two
completely different drives is a pretty stupid idea, but it was fun. More
impressively (to me), it worked - well, even. The point, though, is that
I really do know better than to use the setup for real work. It was just
a test; please don't make fun of me. Anyway, after the success of my
asymmetrical experiments, I went to my local TV, refrigerator, and
computer part superstore and bought two identical ATA/100 30GB drives,
which are now my production hardware.
Also, I went into this experiment knowing that SCSI would be a clear
performance leader. However, with the phenomenally low price of IDE
storage these days, the advantage simply isn't worth the extra cost for
most home or small-LAN uses. I wanted to know what kind of raw throughput
a home user or a small system administrator could get for their money if
they were willing to invest a little work.
My only criterion for these tests was sheer throughput. Some of the
setups were more robust than others by definition, but that was not the
purpose of the experiment.
My goal in running these tests was not to provide scientifically accurate
information to the world. I just wanted to find out what setup would give
the best results on my hardware. While searching the web for basic hints,
though, I discovered a total lack of hard numbers on the subject.
Furthermore, IDE drives are almost never mentioned, and then usually only
in a warning section. This is my little way to contribute to the body of
knowledge. I hope that someone finds it helpful.
B. Setup notes
The test system is an Intel Celeron 400MHz CPU on an Asus P3B-F
motherboard (BIOS version 1006) with 128MB of PC-100 ECC SDRAM. SCSI
support is via a Tekram DC-390F PCI controller (BIOS version 3.22). The
IDE controller is the motherboard's built-in Intel PIIX4 ATA33 chipset.
All IDE drives were configured as "master" for their tests. In tests
involving two IDE drives, each drive was on a separate controller. I did
a quick before-and-after Bonnie test with two drives on the same
controller, and it was sad. Pathetic. Not Good. Those results are not
posted here.
All sizes given are in "true" (2 ^ 10*n) measurements, rather than "sales"
(1000 ^ n) figures. That is, 1MB = 1,048,576 bytes (not 1,000,000!).
2. Identification
A. Individual Devices
1. ibm_scsi
a. Model DCAS-34330W S65A (4.1GB)
b. Ultra-wide SCSI, 3 platters, 8.5ms average seek time, 448KB buffer,
5400 RPM
2. ibm_ide
a. Model DJNA-371350 (12.9 GB, aka "Deskstar 22GXP")
b. Ultra ATA/66, 3 platters, 8.7ms average seek time, 1966KB buffer,
7200 RPM
3. maxtor1/2
a. Model 5T030H3 (29.3GB, aka "DiamondMax Plus 60")
b. Ultra ATA/100, 2 platters, 8.7ms average seek time, 2MB buffer,
7200 RPM
B. Vinum Volume definitions
1. A concat plex of one subdrive on a single IDE (ibm_ide) drive:
volume A_SINGLE
plex org concat
sd length 1g drive ibm_ide
2. A 256k striped plex with one subdrive on IDE (ibm_ide) and one subdrive
on SCSI (ibm_scsi):
volume A_STRIPE
plex org striped 256k
sd length 1g drive ibm_ide
sd length 1g drive ibm_scsi
3. A mirrored plex with subdrives on two IDE drives (maxtor1/2):
volume MIRROR
plex org concat
sd length 1g drive maxtor1
plex org concat
sd length 1g drive maxtor2
4. A 256k striped plex with subdrives on two IDE drives (maxtor1/2):
volume STRIPE256
plex org striped 256k
sd length 1g drive maxtor1
sd length 1g drive maxtor2
5. A 512k striped plex with subdrives on two IDE drives (maxtor1/2):
volume STRIPE512
plex org striped 512k
sd length 1g drive maxtor1
sd length 1g drive maxtor2
6. Two 256k striped plexes, each with subdrives on two IDE drives
(maxtor1/2), mirrored:
volume RAID10256
plex org striped 256k
sd length 512m drive maxtor1
sd length 512m drive maxtor2
plex org striped 256k
sd length 512m drive maxtor2
sd length 512m drive maxtor1
7. Two 512k striped plexes, each with subdrives on two IDE drives
(maxtor1/2), mirrored:
volume RAID10512
plex org striped 512k
sd length 512m drive maxtor1
sd length 512m drive maxtor2
plex org striped 512k
sd length 512m drive maxtor2
sd length 512m drive maxtor1
3. Benchmark Results
A. Methodology
Two tests were performed on the various drives and volumes: Bonnie and
rawio. Bonnie is a well-known filesystem benchmarking program that
measures the high-level throughput of a device. rawio differs in that it
is specifically designed to bypass any filesystem caching in order to
measure performance of the tested device itself.
1. Bonnie
Bonnie writes to a file on the specified volume using various methods,
then reads the contents back. In all cases, the default filelength of
100MB was used. The filesystem was initialized with newfs (without any
command line arguments) before each test. The command line used was:
bonnie -d {volume_name} > bonnie-{description}
2. rawio
rawio accessess the specified block device directly. Since it ignores
any filesystem data, newfs was not used on the device before each test
as it was with Bonnie. The command line used was:
rawio -a {volume_name} > rawio-{description}
B. Notes
All tests were not performed on all drive setups. If I had planned this a
little more before the start of the project, I would've made the tests
comprehensive.
In the results below, the highest throughtput and lowest CPU utilization in
each column are marked with an asterisk to the /right/ of the cell. No
other ordering or row-arranging was done.
C. Results - Individual Devices
1. Bonnie
-------Sequential Output-------- ---Sequential Input-- --Random--
-Per Char- --Block--- -Rewrite-- -Per Char- --Block--- --Seeks---
IBM_SCSI 7960 39.6* 7995 12.6* 3680 8.4* 7850 38.7* 7930 10.0*261.0 3.5*
IBM_IDE 14690*72.9 15050*25.5 6449 16.7 15728 78.0 17102 23.5 264.1 3.6
MAXTOR 13022 63.9 13470 22.0 7973*18.9 19455*95.7 29632*39.8 405.5* 5.2
2. rawio
Random read Sequential read Random write Sequential write
K/sec /sec K/sec /sec K/sec /sec K/sec /sec
IBM_SCSI 1062.3 67 1008.2 62 1071.5 67 1054.0 64
IBM_IDE 2013.6 125 1996.3 122 1910.5* 118* 1898.7 116
MAXTOR 2291.4* 142* 5136.4* 314* 1324.8 82 8914.6* 544*
D. Results - Vinum Volumes
1. Bonnie
-------Sequential Output-------- ---Sequential Input-- --Random--
-Per Char- --Block--- -Rewrite-- -Per Char- --Block--- --Seeks---
Machine K/sec %CPU K/sec %CPU K/sec %CPU K/sec %CPU K/sec %CPU /sec %CPU
A_SINGLE 15546*77.3 15794 25.2 7029 15.7 15956 78.4 16363 16.9 237.6 3.4*
A_STRIPE 14764 76.5 15002 27.8 5220 14.2 11533 58.5*12843 18.1 336.8 5.3
MIRROR 8668 44.5 9484 16.2 3047 7.4*16318 81.4 20151 20.6 607.2 7.7
STRIPE256 13907 70.1 18756 32.0 8380*20.5 19125 97.4 27116 28.5 608.8* 7.6
STRIPE512 13789 69.4 18782*31.3 7711 18.5 19165*96.1 27918*28.4 545.8 7.2
RAID10256 8026 41.1* 9431 16.1 4055 9.6 12748 63.6 13714 14.7*439.5 5.7
RAID10512 8065 41.1* 9423 15.7* 3418 8.0 13002 64.7 14765 15.4 412.8 5.3
2. rawio
Random read Sequential read Random write Sequential write
ID K/sec /sec K/sec /sec K/sec /sec K/sec /sec
A_STRIPE 2170.2 135 7060.9 431 2262.2* 140* 3596.3 219
MIRROR 3534.5* 218* 11908.9 727 1151.2 71 7739.2 472
STRIPE256 3246.0 202 18812.1 1148 2182.3 136 16774.7 1024
STRIPE512 3336.9 207 20659.3* 1261* 2240.7 139 16862.8* 1029*
RAID10256 3004.9 187 10564.1 645 1041.7 64 8011.8 489
RAID10512 3029.9 189 13488.9 823 1058.1 66 8400.0 513
4. Commentary
A. Objective
The numbers pretty well speak for themselves, but I'm going to chip in
anyway. In a nutshell, mirroring is very slow on this setup. I was
disappointed to see that it didn't hold up to striping even for reads,
except for it's slight lead in rawio's random test. Striping, on the other
hand, was an all-around winner. In fact, except for CPU loading, I found
no weak spot in this scheme at all.
The RAID-10 setups offered no bonus at all. I suspect that anyone needing
the robustness offered by such a setup would be using SCSI.
Unsurprisingly, the U/W SCSI drive was always the must CPU-friendly device
tested (and often by a huge margin). I make to claim to causality, though
- it may have been more cycle-hungry if it were able to achieve the raw
transfer rates of the newer IDE drives.
B. Subjective
I may never use a single-drive setup again. After settling into a
256k-striped configuration at the conclusion of the tests, everything seems
to fly along. Doing a "make search" in /usr/ports for the letter 'a' takes
.483 real seconds. NFS flies along. "make clean" is no longer agonizing.
Yes, there is a definite place for SCSI drives, particularly in any real
server. For the home user or administrator of a small file server, though,
Vinum on IDE is a spectacular combination of blazing performance and
rock-bottom price. If you haven't tried it already, make a backup of your
data and start experimenting!
To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-fs" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?8766hverm9.fsf>
