[kwlug-disc] MDADM and RAID
Chris Irwin
chris at chrisirwin.ca
Tue Mar 2 11:52:33 EST 2010
On Tue, Mar 2, 2010 at 08:05, Lori Paniak <ldpaniak at fourpisolutions.com> wrote:
> What kind of hardware are you running on? Software RAID 5 is going to
> require a non-trivial amount of CPU power to do the parity calcs. What
> do 'top' and 'free' say?
My processor is an AMD Athlon 64 X2 4600+. That translates to 2.4GHz
64-bit processor. I'm running 64-bit Ubuntu 9.10 on it. I have 4GB
RAM, free -m reports I have 2GB free. I ran some tests below. I'm not
sure how to do some really objective disk tests, but am open to
suggestion.
During this time I was watching top. dd used 50% CPU (which I believe
means it is 50% of one core, i.e. not maxing out a processor). When it
ran sync, a process called "md1_raid5" used up to 25% cpu. The machine
is otherwise idle at the moment.
My unscientific test command was the following:
for i in $(seq 1 5); do
sync;
echo -e "\n===Iteration ${i}===";
time $( dd bs=1M count=500 if=/dev/zero of=/home/chris/zero; sync );
done
For my raid5 test, I wrote to my home, which is on that array. For my
non-raid comparison (non-raid disk plugged into same controller) I
wrote to where that was mounted. Both are ext4 filesystems. I averaged
the 'real' time over the five runs.
raid5 gives: 12.232
bare disk gives: 6.8586
Now I'm not expecting miracles and I'm willing to take a performance
hit to spare the cost of a dedicated raid controller, but is 50%
throughput really the norm for raid5 with mdadm? And that is just with
this simple test, I experienced much worse than 50% throughput with my
lvm migration....
For anybody who is curious, here is the raw output from my tests:
[chris at jupitertwo:~]$ for i in $(seq 1 5); do sync; echo -e
"\n===Iteration ${i}==="; time $( dd bs=1M count=500 if=/dev/zero
of=/home/chris/zero; sync ); done
===Iteration 1===
500+0 records in
500+0 records out
524288000 bytes (524 MB) copied, 1.25245 s, 419 MB/s
real 0m11.135s
user 0m0.010s
sys 0m3.430s
===Iteration 2===
500+0 records in
500+0 records out
524288000 bytes (524 MB) copied, 1.26102 s, 416 MB/s
real 0m11.994s
user 0m0.000s
sys 0m4.710s
===Iteration 3===
500+0 records in
500+0 records out
524288000 bytes (524 MB) copied, 1.1752 s, 446 MB/s
real 0m12.962s
user 0m0.010s
sys 0m5.180s
===Iteration 4===
500+0 records in
500+0 records out
524288000 bytes (524 MB) copied, 1.16783 s, 449 MB/s
real 0m12.707s
user 0m0.010s
sys 0m5.160s
===Iteration 5===
500+0 records in
500+0 records out
524288000 bytes (524 MB) copied, 1.16648 s, 449 MB/s
real 0m12.362s
user 0m0.000s
sys 0m4.710s
[chris at jupitertwo:~]$ for i in $(seq 1 5); do sync; echo -e
"\n===Iteration ${i}==="; time $( dd bs=1M count=500 if=/dev/zero
of=/mnt/backup/chris/zero; sync ); done
===Iteration 1===
500+0 records in
500+0 records out
524288000 bytes (524 MB) copied, 1.14573 s, 458 MB/s
real 0m6.909s
user 0m0.000s
sys 0m4.240s
===Iteration 2===
500+0 records in
500+0 records out
524288000 bytes (524 MB) copied, 1.24725 s, 420 MB/s
real 0m6.886s
user 0m0.010s
sys 0m4.350s
===Iteration 3===
500+0 records in
500+0 records out
524288000 bytes (524 MB) copied, 1.20556 s, 435 MB/s
real 0m6.856s
user 0m0.000s
sys 0m4.480s
===Iteration 4===
500+0 records in
500+0 records out
524288000 bytes (524 MB) copied, 1.11238 s, 471 MB/s
real 0m6.663s
user 0m0.000s
sys 0m4.370s
===Iteration 5===
500+0 records in
500+0 records out
524288000 bytes (524 MB) copied, 1.25068 s, 419 MB/s
real 0m6.979s
user 0m0.000s
sys 0m4.530s
--
Chris Irwin
<chris at chrisirwin.ca>
More information about the kwlug-disc
mailing list