Edgar Holddisk Benchmarks Using Linux Software Raid MD and different Filesystems.

First, all 14 Seagate 600GB SAS (15krpm) are in pass through mode on the 2 LSI-9211–8i PCIe cards, 6 on the first card and 8 on the second card due to the unfortunate fact that the system disks are on the same card (OS is installed in a raid1/mirror array constructed using the LSI BIOS utilities)). I would have preferred to have each of the 2 system disks on their own HBA and install the OS on a Linux SW (mdadm) raid1 volume and completely bypass the BIOS LSI raid stuff.

Note that the array creation in raid10 mode is with the near layout (the default) so it is probably worth it in this case to stagger the disks on each card, so that the mirror chunk is not on the same controller.

In a near=2 layout the data blocks are distributed like this for a 6 disk array: (the columns are the physical disk device)

-----------------------
A1  A1  A2  A2  A3  A3
A4  A4  A5  A5  A6  A6
A7  A7  A8  A8  A9  A9
A10 A10 A11 A11 A12 A12
... ... ... ... ... ...  

For a far layout, the disks are split in f sections and each chunk is repeated with an offset. With f=2 and 6 disks:

------------------------
A1  A2  A3  A4  A5  A6
A7  A8  A9  A10 A11 A12
A13 A14 A15 A16 A17 A18
... ... ... ... ... ...
A6  A1  A2  A3  A4  A5  
A12 A7  A8  A9  A10 A11 
A18 A13 A14 A15 A16 A17
... ... ... ... ... ...

Near n2 layout

edgar:~# sfdisk -l /dev/sdb

and create a partition layout (md only works with disk partitions, not whole disk block device).

edgar:~# for part in c d e f g h i j k l m n o; do sfdisk -d /dev/sdb | sfdisk /dev/sd$part; done
edgar:~# for part in b c d e f g h i j k l m n o; do sfdisk --change-id /dev/sd$part 1 fd; done
edgar:~# mdadm --create --bitmap=internal --level=raid10 --raid-devices=14 \
/dev/md0 /dev/sdb1 /dev/sdc1 /dev/sdd1 /dev/sde1 /dev/sdf1 /dev/sdg1 /dev/sdh1 \
/dev/sdi1 /dev/sdj1 /dev/sdk1 /dev/sdl1 /dev/sdm1 /dev/sdn1 /dev/sdo1
edgar:~# mdadm --examine --scan >> /etc/mdadm/mdadm.conf
edgar:~# dpkg-reconfigure mdadm
  • edgar:~# mkfs.xfs /dev/md0
edgar:~# mkdir /holddisk
edgar:~# mount -t xfs /dev/md0 /holddisk
edgar:~# chown amanda.disk /holddisk
edgar:~# xfs_info /holddisk
meta-data=/dev/md0 isize=256 agcount=32, agsize=32050048 blks
= sectsz=512 attr=2
data = bsize=4096 blocks=1025601024, imaxpct=5
= sunit=128 swidth=896 blks
naming =version 2 bsize=4096 ascii-ci=0
log =internal bsize=4096 blocks=500784, version=2
= sectsz=512 sunit=8 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
edgar:~# chown amanda.disk /holddisk
edgar:~# bonnie++ -d /holddisk -s 320G -u amanda:disk -n 0 -f -b
+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Version 1.96    | Sequential Output                            | Sequential Input             |              |          | Sequential Create                       | Random Create                           |
|-----------------+----------------------------------------------+------------------------------|Random        |----------+-----------------------------------------+-----------------------------------------|
|       | Size    | Per Char    | Block          | Rewrite       | Per Char    | Block          | Seeks        | Num      | Create      | Read        | Delete      | Create      | Read        | Delete      |
|       |         |             |                |               |             |                |              | Files    |             |             |             |             |             |             |
|-----------------+-------------+----------------+---------------+-------------+----------------+--------------+----------+-------------+-------------+-------------+-------------+-------------+-------------|
|                 | K/   | %    | K/sec   | %    | K/sec  | %    | K/   | %    | K/sec   | %    | /sec  | %    |          | /sec | %    | /sec | %    | /sec | %    | /sec | %    | /sec | %    | /sec | %    |
|                 | sec  | CPU  |         | CPU  |        | CPU  | sec  | CPU  |         | CPU  |       | CPU  |          |      | CPU  |      | CPU  |      | CPU  |      | CPU  |      | CPU  |      | CPU  |
|-----------------+------+------+---------+------+--------+------+------+------+---------+------+-------+------+----------+------+------+------+------+------+------+------+------+------+------+------+------|
|       | 320G    |      |      | 1091386 | 81   | 607099 | 52   |      |      | 1198788 | 46   | 373.2 | 23   |          |      |      |      |      |      |      |      |      |      |      |      |      |
|edgar  |---------+-------------+----------------+---------------+-------------+----------------+--------------+----------+-------------+-------------+-------------+-------------+-------------+-------------|
|       | Latency |             | 493ms          | 287ms         |             | 152ms          | 100ms        | Latency  |             |             |             |             |             |             |
+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+

  • mkfs.xfs -f -d su=64k,sw=14 -l version=2,su=64k /dev/md0
edgar:~# xfs_info /holddisk
meta-data=/dev/md0 isize=256 agcount=32, agsize=32050032 blk
= sectsz=512 attr=2
data = bsize=4096 blocks=1025601024, imaxpct=5
= sunit=16 swidth=224 blks
naming =version 2 bsize=4096 ascii-ci=0
log =internal bsize=4096 blocks=500784, version=2
= sectsz=512 sunit=16 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Version 1.96    | Sequential Output                            | Sequential Input             |              |          | Sequential Create                       | Random Create                           |
|-----------------+----------------------------------------------+------------------------------|Random        |----------+-----------------------------------------+-----------------------------------------|
|       | Size    | Per Char    | Block          | Rewrite       | Per Char    | Block          | Seeks        | Num      | Create      | Read        | Delete      | Create      | Read        | Delete      |
|       |         |             |                |               |             |                |              | Files    |             |             |             |             |             |             |
|-----------------+-------------+----------------+---------------+-------------+----------------+--------------+----------+-------------+-------------+-------------+-------------+-------------+-------------|
|                 | K/   | %    | K/sec   | %    | K/sec  | %    | K/   | %    | K/sec   | %    | /sec  | %    |          | /sec | %    | /sec | %    | /sec | %    | /sec | %    | /sec | %    | /sec | %    |
|                 | sec  | CPU  |         | CPU  |        | CPU  | sec  | CPU  |         | CPU  |       | CPU  |          |      | CPU  |      | CPU  |      | CPU  |      | CPU  |      | CPU  |      | CPU  |
|-----------------+------+------+---------+------+--------+------+------+------+---------+------+-------+------+----------+------+------+------+------+------+------+------+------+------+------+------+------|
|       | 320G    |      |      | 1099665 | 82   | 608266 | 52   |      |      | 1190683 | 45   | 357.6 | 22   |          |      |      |      |      |      |      |      |      |      |      |      |      |
|edgar  |---------+-------------+----------------+---------------+-------------+----------------+--------------+----------+-------------+-------------+-------------+-------------+-------------+-------------|
|       | Latency |             | 1289ms         | 319ms         |             | 18831us        | 121ms        | Latency  |             |             |             |             |             |             |
+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+

  • mkfs.xfs -f -d su=64k,sw=7 -l version=2,su=64k /dev/md0
mkfs.xfs: Specified data stripe unit 128 is not the same as the volume stripe unit 1024
mkfs.xfs: Specified data stripe width 896 is not the same as the volume stripe width 7168
meta-data=/dev/md0 isize=256 agcount=32, agsize=32050016 blks
= sectsz=512 attr=2, projid32bit=0
data = bsize=4096 blocks=1025600512, imaxpct=5
= sunit=16 swidth=112 blks
naming =version 2 bsize=4096 ascii-ci=0
log =internal log bsize=4096 blocks=500784, version=2
= sectsz=512 sunit=16 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Version 1.96    | Sequential Output                            | Sequential Input             |              |          | Sequential Create                       | Random Create                           |
|-----------------+----------------------------------------------+------------------------------|Random        |----------+-----------------------------------------+-----------------------------------------|
|       | Size    | Per Char    | Block          | Rewrite       | Per Char    | Block          | Seeks        | Num      | Create      | Read        | Delete      | Create      | Read        | Delete      |
|       |         |             |                |               |             |                |              | Files    |             |             |             |             |             |             |
|-----------------+-------------+----------------+---------------+-------------+----------------+--------------+----------+-------------+-------------+-------------+-------------+-------------+-------------|
|                 | K/   | %    | K/sec   | %    | K/sec  | %    | K/   | %    | K/sec   | %    | /sec  | %    |          | /sec | %    | /sec | %    | /sec | %    | /sec | %    | /sec | %    | /sec | %    |
|                 | sec  | CPU  |         | CPU  |        | CPU  | sec  | CPU  |         | CPU  |       | CPU  |          |      | CPU  |      | CPU  |      | CPU  |      | CPU  |      | CPU  |      | CPU  |
|-----------------+------+------+---------+------+--------+------+------+------+---------+------+-------+------+----------+------+------+------+------+------+------+------+------+------+------+------+------|
|       | 320G    |      |      | 1097755 | 82   | 609745 | 52   |      |      | 1191963 | 45   | 362.4 | 22   |          |      |      |      |      |      |      |      |      |      |      |      |      |
|edgar  |---------+-------------+----------------+---------------+-------------+----------------+--------------+----------+-------------+-------------+-------------+-------------+-------------+-------------|
|       | Latency |             | 1193ms         | 247ms         |             | 45000us        | 111ms        | Latency  |             |             |             |             |             |             |
+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  • mkfs.ext4 /dev/md0
mke2fs 1.41.12 (17-May-2010)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=128 blocks, Stripe width=896 blocks
256401408 inodes, 1025601024 blocks
51280051 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=4294967296
31299 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
4096000, 7962624, 11239424, 20480000, 23887872, 71663616, 78675968,
102400000, 214990848, 512000000, 550731776, 644972544

Writing inode tables: done
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done

This filesystem will be automatically checked every 21 mounts or
180 days, whichever comes first. Use tune2fs -c or -i to override.
+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Version 1.96    | Sequential Output                           | Sequential Input             |              |          | Sequential Create                       | Random Create                           |
|-----------------+---------------------------------------------+------------------------------|Random        |----------+-----------------------------------------+-----------------------------------------|
|       | Size    | Per Char    | Block         | Rewrite       | Per Char    | Block          | Seeks        | Num      | Create      | Read        | Delete      | Create      | Read        | Delete      |
|       |         |             |               |               |             |                |              | Files    |             |             |             |             |             |             |
|-----------------+-------------+---------------+---------------+-------------+----------------+--------------+----------+-------------+-------------+-------------+-------------+-------------+-------------|
|                 | K/   | %    | K/sec  | %    | K/sec  | %    | K/   | %    | K/sec   | %    | /sec  | %    |          | /sec | %    | /sec | %    | /sec | %    | /sec | %    | /sec | %    | /sec | %    |
|                 | sec  | CPU  |        | CPU  |        | CPU  | sec  | CPU  |         | CPU  |       | CPU  |          |      | CPU  |      | CPU  |      | CPU  |      | CPU  |      | CPU  |      | CPU  |
|-----------------+------+------+--------+------+--------+------+------+------+---------+------+-------+------+----------+------+------+------+------+------+------+------+------+------+------+------+------|
|       | 320G    |      |      | 923375 | 80   | 568904 | 57   |      |      | 1183264 | 43   | 290.0 | 35   |          |      |      |      |      |      |      |      |      |      |      |      |      |
|edgar  |---------+-------------+---------------+---------------+-------------+----------------+--------------+----------+-------------+-------------+-------------+-------------+-------------+-------------|
|       | Latency |             | 1283ms        | 255ms         |             | 188ms          | 108ms        | Latency  |             |             |             |             |             |             |
+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+

Far f2 layout

Zap the previous ‘near’ layout and start over again:

# Create one partition spanning the entire block device.
#
sfdisk -l /dev/sdb

# Duplicate it throughout the devices that will be used for the raid device.
#
for part in c d e f g h i j k l m n o; do sfdisk -d /dev/sdb | sfdisk /dev/sd$part; done

# Change the partition id to '0xfd' or 'Linux raid autodetect'.
#
for part in b c d e f g h i j k l m n o; do sfdisk --change-id /dev/sd$part 1 fd; done

# For good measure, zap any previous md raidness footprints:
#
for part in b1 c1 d1 e1 f1 g1 h1 i1 j1 k1 l1 m1 n1 o1; do mdadm --zero-superblock /dev/sd$part; done 

# Create the raid10 volume using '--layout=n2' for 'near' layout (default if
# not specified) or '--layout=f2' for 'far' layout.
#
mdadm --create --bitmap=internal --level=raid10 --layout=f2 --raid-devices=14 /dev/md0 \
/dev/sdb1 /dev/sdc1 /dev/sdd1 /dev/sde1 /dev/sdf1 /dev/sdg1 /dev/sdh1 /dev/sdi1 /dev/sdj1 \
/dev/sdk1 /dev/sdl1 /dev/sdm1 /dev/sdn1 /dev/sdo1
  • mkfs.xfs /dev/md0

Use XFS default values:

edgar:~# xfs_info /holddisk 
meta-data=/dev/md0               isize=256    agcount=32, agsize=32050048 blks
         =                       sectsz=512   attr=2
data     =                       bsize=4096   blocks=1025601024, imaxpct=5
         =                       sunit=128    swidth=1792 blks
naming   =version 2              bsize=4096   ascii-ci=0
log      =internal               bsize=4096   blocks=500784, version=2
         =                       sectsz=512   sunit=8 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0

bonnie++ -d /holddisk -s 320G -u amanda:disk -n 0 -f -b

+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Version 1.96    | Sequential Output                            | Sequential Input             |              |          | Sequential Create                       | Random Create                           |
|-----------------+----------------------------------------------+------------------------------|Random        |----------+-----------------------------------------+-----------------------------------------|
|       | Size    | Per Char    | Block          | Rewrite       | Per Char    | Block          | Seeks        | Num      | Create      | Read        | Delete      | Create      | Read        | Delete      |
|       |         |             |                |               |             |                |              | Files    |             |             |             |             |             |             |
|-----------------+-------------+----------------+---------------+-------------+----------------+--------------+----------+-------------+-------------+-------------+-------------+-------------+-------------|
|                 | K/   | %    | K/sec   | %    | K/sec  | %    | K/   | %    | K/sec   | %    | /sec  | %    |          | /sec | %    | /sec | %    | /sec | %    | /sec | %    | /sec | %    | /sec | %    |
|                 | sec  | CPU  |         | CPU  |        | CPU  | sec  | CPU  |         | CPU  |       | CPU  |          |      | CPU  |      | CPU  |      | CPU  |      | CPU  |      | CPU  |      | CPU  |
|-----------------+------+------+---------+------+--------+------+------+------+---------+------+-------+------+----------+------+------+------+------+------+------+------+------+------+------+------+------|
|       | 320G    |      |      | 1043392 | 79   | 580224 | 51   |      |      | 2305452 | 94   | 331.6 | 21   |          |      |      |      |      |      |      |      |      |      |      |      |      |
|edgar  |---------+-------------+----------------+---------------+-------------+----------------+--------------+----------+-------------+-------------+-------------+-------------+-------------+-------------|
|       | Latency |             | 503ms          | 214ms         |             | 176ms          | 153ms        | Latency  |             |             |             |             |             |             |
+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  • edgar:~# mkfs.xfs -f -d su=64k,sw=14 -l version=2,su=64k /dev/md0
mkfs.xfs: Specified data stripe unit 128 is not the same as the volume stripe un
mkfs.xfs: Specified data stripe width 1792 is not the same as the volume stripe 
meta-data=/dev/md0               isize=256    agcount=32, agsize=32050032 blks
         =                       sectsz=512   attr=2, projid32bit=0
data     =                       bsize=4096   blocks=1025601024, imaxpct=5
         =                       sunit=16     swidth=224 blks
naming   =version 2              bsize=4096   ascii-ci=0
log      =internal log           bsize=4096   blocks=500784, version=2
         =                       sectsz=512   sunit=16 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
edgar:~# bonnie++ -d /holddisk -s 320G -u amanda:disk -n 0 -f -b
+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Version 1.96    | Sequential Output                            | Sequential Input             |              |          | Sequential Create                       | Random Create                           |
|-----------------+----------------------------------------------+------------------------------|Random        |----------+-----------------------------------------+-----------------------------------------|
|       | Size    | Per Char    | Block          | Rewrite       | Per Char    | Block          | Seeks        | Num      | Create      | Read        | Delete      | Create      | Read        | Delete      |
|       |         |             |                |               |             |                |              | Files    |             |             |             |             |             |             |
|-----------------+-------------+----------------+---------------+-------------+----------------+--------------+----------+-------------+-------------+-------------+-------------+-------------+-------------|
|                 | K/   | %    | K/sec   | %    | K/sec  | %    | K/   | %    | K/sec   | %    | /sec  | %    |          | /sec | %    | /sec | %    | /sec | %    | /sec | %    | /sec | %    | /sec | %    |
|                 | sec  | CPU  |         | CPU  |        | CPU  | sec  | CPU  |         | CPU  |       | CPU  |          |      | CPU  |      | CPU  |      | CPU  |      | CPU  |      | CPU  |      | CPU  |
|-----------------+------+------+---------+------+--------+------+------+------+---------+------+-------+------+----------+------+------+------+------+------+------+------+------+------+------+------+------|
|       | 320G    |      |      | 1053321 | 79   | 581534 | 51   |      |      | 2320811 | 94   | 332.1 | 21   |          |      |      |      |      |      |      |      |      |      |      |      |      |
|edgar  |---------+-------------+----------------+---------------+-------------+----------------+--------------+----------+-------------+-------------+-------------+-------------+-------------+-------------|
|       | Latency |             | 918ms          | 264ms         |             | 35130us        | 126ms        | Latency  |             |             |             |             |             |             |
+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  • mkfs.xfs -f -d su=64k,sw=7 -l version=2,su=64k /dev/md0

edgar:~# xfs_info /holddisk 
meta-data=/dev/md0               isize=256    agcount=32, agsize=32050016 blks
         =                       sectsz=512   attr=2
data     =                       bsize=4096   blocks=1025600512, imaxpct=5
         =                       sunit=16     swidth=112 blks
naming   =version 2              bsize=4096   ascii-ci=0
log      =internal               bsize=4096   blocks=500784, version=2
         =                       sectsz=512   sunit=16 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
edgar:~# bonnie++ -d /holddisk -s 320G -u amanda:disk -n 0 -f -b
+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Version 1.96    | Sequential Output                            | Sequential Input             |              |          | Sequential Create                       | Random Create                           |
|-----------------+----------------------------------------------+------------------------------|Random        |----------+-----------------------------------------+-----------------------------------------|
|       | Size    | Per Char    | Block          | Rewrite       | Per Char    | Block          | Seeks        | Num      | Create      | Read        | Delete      | Create      | Read        | Delete      |
|       |         |             |                |               |             |                |              | Files    |             |             |             |             |             |             |
|-----------------+-------------+----------------+---------------+-------------+----------------+--------------+----------+-------------+-------------+-------------+-------------+-------------+-------------|
|                 | K/   | %    | K/sec   | %    | K/sec  | %    | K/   | %    | K/sec   | %    | /sec  | %    |          | /sec | %    | /sec | %    | /sec | %    | /sec | %    | /sec | %    | /sec | %    |
|                 | sec  | CPU  |         | CPU  |        | CPU  | sec  | CPU  |         | CPU  |       | CPU  |          |      | CPU  |      | CPU  |      | CPU  |      | CPU  |      | CPU  |      | CPU  |
|-----------------+------+------+---------+------+--------+------+------+------+---------+------+-------+------+----------+------+------+------+------+------+------+------+------+------+------+------+------|
|       | 320G    |      |      | 1048710 | 78   | 583268 | 51   |      |      | 2295685 | 93   | 328.0 | 21   |          |      |      |      |      |      |      |      |      |      |      |      |      |
|edgar  |---------+-------------+----------------+---------------+-------------+----------------+--------------+----------+-------------+-------------+-------------+-------------+-------------+-------------|
|       | Latency |             | 405ms          | 200ms         |             | 161ms          | 125ms        | Latency  |             |             |             |             |             |             |
+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+