How to test RAID10 array performance [Debian Wheezy]?


 
Thread Tools Search this Thread
Top Forums UNIX for Advanced & Expert Users How to test RAID10 array performance [Debian Wheezy]?
# 1  
Old 09-24-2014
Hammer & Screwdriver How to test RAID10 array performance [Debian Wheezy]?

I have created a RAID10 array (near layout) with four 8 GiB virtual hard drives, making a 16 GiB array (/dev/md0 formatted as ext4). On the other hand, I have a 16 GiB RAID1 array (/dev/md1, also formatted as ext4).
The purpose of these setups is to compare the read and write performances of each array.

So far, I have used dd to perform the following tests:

dd (sequential write performance):

Code:
    dd if=/dev/zero of=/dev/md0 count=512 bs=1024k
    512+0 records in
    512+0 records out
    536870912 bytes (537 MB) copied, 6.60623 s, 81.3 MB/s

    dd if=/dev/zero of=/dev/md1 count=512 bs=1024k
    512+0 records in
    512+0 records out
    536870912 bytes (537 MB) copied, 5.74421 s, 93.5 MB/s

dd (sequential read performance):

Code:
    dd if=/dev/md0 of=/dev/null bs=4096k
    4093+1 records in
    4093+1 records out
    17168334848 bytes (17 GB) copied, 168.665 s, 102 MB/s

    dd if=/dev/md1 of=/dev/null bs=4096k
    4093+1 records in
    4093+1 records out
    17170300928 bytes (17 GB) copied, 44.6421 s, 385 MB/s

So I changed the RAID10 array layout to f2, and sequential read performance improved but the write performance decreased compared to n2 (which was the previous layout):

Code:
    dd if=/dev/md0 of=/dev/null bs=4096k
    4093+0 records in
    4093+0 records out
    17167286272 bytes (17 GB) copied, 110.424 s, 155 MB/s

    dd if=/dev/zero of=/dev/md0 count=512 bs=1024k
    512+0 records in
    512+0 records out
    536870912 bytes (537 MB) copied, 6.84386 s, 78.4 MB/s

I was expecting that the RAID10 array would have a better read performance that that of RAID1, but it isn't the case as per these tests - even when I have performed them several times to avoid outliers. I have also used iozone for benchmarking the same setups, with similar results.

I am also aware that other factors may impact performance, such as the hardware used (perhaps virtual hard drives may not provide the best scenario?) and the filesystem.

That being said, what would be the best setup for a RAID10 array that will undergo more reads than writes? (In addition, I am looking for further reasons to use RAID10 instead of RAID1 other than the fault tolerance provided by the latter).

Any tips and ideas will be more than welcome.

Thanks in advance.
# 2  
Old 09-24-2014
Hi Gacanepa,

You don't really provide enough information about the actual makeup of the disks, what is the actual backend you are using as this can make a significant difference. How are the devices accessed - there are a shedload more questions on this front.

In general and it is a generalisation the RAID10 (striped then mirrored) should provide the better performance (true also for RAID01) than RAID1. But it is not really possible to comment further than that without knowing a bit more information about your setup.

Regards

Dave
# 3  
Old 09-24-2014
Quote:
Originally Posted by gull04
Hi Gacanepa,

You don't really provide enough information about the actual makeup of the disks, what is the actual backend you are using as this can make a significant difference. How are the devices accessed - there are a shedload more questions on this front.

In general and it is a generalisation the RAID10 (striped then mirrored) should provide the better performance (true also for RAID01) than RAID1. But it is not really possible to comment further than that without knowing a bit more information about your setup.

Regards

Dave
Dave,

First off, thank you for taking the time to reply to my post. Here are some other details that I hope will be helpful (if there is any other backend information that you need, please let me know):

-Both RAID arrays (1 & 10) were created in the same system.

-uname -a:
Code:
Linux debian 3.2.0-4-486 #1 Debian 3.2.60-1+deb7u3 i686 GNU/Linux

-From lshw:
Code:
     *-memory
          description: System memory
          physical id: 1
          size: 502MiB
     *-cpu
          product: AMD Athlon(tm) II X2 250 Processor
          vendor: Advanced Micro Devices [AMD]
          physical id: 2
          bus info: cpu@0
          version: 15.6.3
          size: 3GHz
          width: 32 bits

-mdadm --detail /dev/md0:
Code:
/dev/md0:
        Version : 1.2
  Creation Time : Wed Sep 24 10:02:18 2014
     Raid Level : raid10
     Array Size : 16764928 (15.99 GiB 17.17 GB)
  Used Dev Size : 8382464 (7.99 GiB 8.58 GB)
   Raid Devices : 4
  Total Devices : 5
    Persistence : Superblock is persistent

    Update Time : Wed Sep 24 10:04:56 2014
          State : active 
 Active Devices : 4
Working Devices : 5
 Failed Devices : 0
  Spare Devices : 1

         Layout : far=2
     Chunk Size : 512K

           Name : debian:0  (local to host debian)
           UUID : 36b8594f:e14b8caf:df8dedff:99320083
         Events : 18

    Number   Major   Minor   RaidDevice State
       0       8       17        0      active sync   /dev/sdb1
       1       8       33        1      active sync   /dev/sdc1
       2       8       49        2      active sync   /dev/sdd1
       3       8       65        3      active sync   /dev/sde1

       4       8       81        -      spare   /dev/sdf1

-mdadm --detail /dev/md1:
Code:
/dev/md1:
        Version : 1.2
  Creation Time : Wed Sep 24 10:07:57 2014
     Raid Level : raid1
     Array Size : 16767872 (15.99 GiB 17.17 GB)
  Used Dev Size : 16767872 (15.99 GiB 17.17 GB)
   Raid Devices : 2
  Total Devices : 2
    Persistence : Superblock is persistent

    Update Time : Wed Sep 24 10:14:22 2014
          State : clean 
 Active Devices : 2
Working Devices : 2
 Failed Devices : 0
  Spare Devices : 0

           Name : debian:1  (local to host debian)
           UUID : 98144751:72e778b7:dc92a91c:fffbfb43
         Events : 17

    Number   Major   Minor   RaidDevice State
       0       8       97        0      active sync   /dev/sdg1
       1       8      113        1      active sync   /dev/sdh1

# 4  
Old 09-24-2014
Hi,

Can you also post the outpot of the following commands,

Code:
pvdisplay
lvdisplay
cat /etc/mdadm/mdadm.conf

Regards

Dave
# 5  
Old 09-24-2014
Dave,
Thanks again!
As for pvdisplay and lvdisplay, I must mention here that these RAID arrays are not on LVMs (but here is the output of the commands anyway):

Code:
root@debian:~# pvdisplay
  --- Physical volume ---
  PV Name               /dev/sda5
  VG Name               debian
  PV Size               9.76 GiB / not usable 2.00 MiB
  Allocatable           yes (but full)
  PE Size               4.00 MiB
  Total PE              2498
  Free PE               0
  Allocated PE          2498
  PV UUID               0VU3Cr-2uLV-68Y8-W9hZ-uwav-APT7-or633a
   
root@debian:~# lvdisplay
  --- Logical volume ---
  LV Path                /dev/debian/root
  LV Name                root
  VG Name                debian
  LV UUID                Vuyq6i-Ctxr-nz4f-MIYi-x6fB-Fgif-Gjommv
  LV Write Access        read/write
  LV Creation host, time debian, 2014-08-12 21:27:22 -0300
  LV Status              available
  # open                 1
  LV Size                332.00 MiB
  Current LE             83
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           254:0
   
  --- Logical volume ---
  LV Path                /dev/debian/usr
  LV Name                usr
  VG Name                debian
  LV UUID                VIKvTb-Kl4V-l2Uw-K5Zp-vjjG-BCoP-MFO2d5
  LV Write Access        read/write
  LV Creation host, time debian, 2014-08-12 21:27:23 -0300
  LV Status              available
  # open                 1
  LV Size                3.41 GiB
  Current LE             874
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           254:2
   
  --- Logical volume ---
  LV Path                /dev/debian/var
  LV Name                var
  VG Name                debian
  LV UUID                LPUuFP-JX6Q-ShWJ-otNN-aBvu-DKNg-SxJfcv
  LV Write Access        read/write
  LV Creation host, time debian, 2014-08-12 21:27:23 -0300
  LV Status              available
  # open                 1
  LV Size                1.66 GiB
  Current LE             425
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           254:3
   
  --- Logical volume ---
  LV Path                /dev/debian/swap_1
  LV Name                swap_1
  VG Name                debian
  LV UUID                fLMGxe-ksTR-VNbM-rknH-G6OR-Aq1z-Q2RIwP
  LV Write Access        read/write
  LV Creation host, time debian, 2014-08-12 21:27:23 -0300
  LV Status              available
  # open                 2
  LV Size                560.00 MiB
  Current LE             140
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           254:1
   
  --- Logical volume ---
  LV Path                /dev/debian/tmp
  LV Name                tmp
  VG Name                debian
  LV UUID                BgKzko-pArn-LGq9-gLRG-xYFM-clc1-dJkzyN
  LV Write Access        read/write
  LV Creation host, time debian, 2014-08-12 21:27:23 -0300
  LV Status              available
  # open                 1
  LV Size                300.00 MiB
  Current LE             75
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           254:4
   
  --- Logical volume ---
  LV Path                /dev/debian/home
  LV Name                home
  VG Name                debian
  LV UUID                viKzZn-oOmC-JI88-itWv-26vw-eVoG-6RWWGL
  LV Write Access        read/write
  LV Creation host, time debian, 2014-08-12 21:27:23 -0300
  LV Status              available
  # open                 1
  LV Size                3.52 GiB
  Current LE             901
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           254:5
   
root@debian:~#

mdadm.conf (I just realize the definition for /dev/md1 is missing, but I am failing to understand how that would help to the understanding of why the RAID10, with its current configuration, is not performing as well as it should be)
Code:
# Please refer to mdadm.conf(5) for information about this file.
#

# by default (built-in), scan all partitions (/proc/partitions) and all
# containers for MD superblocks. alternatively, specify devices to scan, using
# wildcards if desired.
#DEVICE partitions containers

# auto-create devices with Debian standard permissions
CREATE owner=root group=disk mode=0660 auto=yes

# automatically tag new arrays as belonging to the local system
HOMEHOST <system>

# instruct the monitoring daemon where to send mail alerts
MAILADDR root

# definitions of existing MD arrays
ARRAY /dev/md/0 metadata=1.2 UUID=d9a83766:cdec2926:53d85d4a:01f535ca name=debian:0

# This file was auto-generated on Wed, 10 Sep 2014 23:25:15 -0300
# by mkconf 3.2.5-5

# 6  
Old 09-24-2014
Hi,

The missing entry in mdadm.conf is a problem - but probably not the cause of your issue. But to eliminate it you should update the file and re-run the test.

You can I think get the correct information by running,

Code:
mdadm --detail /dev/md/1

Also a quick question, how have you created the "virtual drives"?

Regarda

Dave
# 7  
Old 09-24-2014
I created the virtual drives via VirtualBox wizard (select VM --> Settings --> Storage --> SATA --> Add new disk
Login or Register to Ask a Question

Previous Thread | Next Thread

8 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

If test array element multiplication

Ya, I know, who in this day and age is mirroring rootvg...? But yes, my shop does and I need to script checking for it. I also know I could just inverse the the logic and call the LV mirrored if the LPs and PPs were not equal. But I want to do the math in the if test and also know I could... (5 Replies)
Discussion started by: gtsonoma
5 Replies

2. AIX

Power RAID10 array reconstruct fails ?

Hello, P7 machine PCI Express x8 Planar 3Gb SAS Adapter RAID10 array(2 disks)(not AIX lvm) was configured and working, then one disk failed and IBM support replaced that. Now raid array is degraded, data is not lost. I see new disk model(same as original) serial and etc. What I did trying... (0 Replies)
Discussion started by: vilius
0 Replies

3. HP-UX

Test cases for file system mount/umount performance in HP

Hi Folks, Could anyone please assist me with the what could be the scenarios to test the file system mount/umount performance check in HPUX. Thanks in advance, Vaishey (5 Replies)
Discussion started by: Vaishey
5 Replies

4. Shell Programming and Scripting

Bash - array loop performance

Hi, another little question... "sn" is an array whose elements can vary from about 55,000 to about 150,000 elements. Each element consists of an integer between 0-255, eg: ${sn} contain the value: 103 . For a decrypt-procedure I need scroll all the elements 4 or 5 times. Here is an example of... (15 Replies)
Discussion started by: math4
15 Replies

5. Linux

Unload kernel module at boot time (Debian Wheezy 7.2, 3.2.0-4-686-pae kernel)

Hi everyone, I am trying to prevent the ehci_hcd kernel module to load at boot time. Here's what I've tried so far: 1) Add the following line to /etc/modprobe.d/blacklist.conf (as suggested here): 2) Blacklisted the module by adding the following string to 3) Tried to blacklist the module... (0 Replies)
Discussion started by: gacanepa
0 Replies

6. Shell Programming and Scripting

[solved] awk: test assoc. array for content

Hi all, I am looking for a quick/short way in awk to check if an associative array has any content. I know I can split() it to an indexed array and check if the 1st element is set, or cycle through it with something like for( ele in arr ), but I want to avoid that, as I am looking for a shorter... (3 Replies)
Discussion started by: zaxxon
3 Replies

7. Shell Programming and Scripting

How do I test the first char of each line in an array

Hi folks, I am self-learning as I can I have a script that has read a file into an array. I can read out each line in the array with the code: for INDEX in {0..$LENGTH} ## $LENGTH was determined at the read in do echo "${data}" done What I need to do is test the first char... (2 Replies)
Discussion started by: Marc G
2 Replies

8. Debian

apt-get problems on Wheezy

I am having some troubles with apt-get. I did an apt-get update and an apt-get upgrade. Some dependencies did not download, and so I had to do `apt-get -f install` to fix that. The thing is I get an error about /var/lib/dpkg/available root@hayek:~# apt-get -f install Reading package lists...... (3 Replies)
Discussion started by: John Tate
3 Replies
Login or Register to Ask a Question