Re: Raid5 performance issue

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Mr. Roos,

It is very hard to get an array "to speed" without hitting it at very
high queue depths.  In this area, spinning disks and SSDs actually
behave quite differently.

With hard drives, I suspect your single disk tests are taking
advantage of the disks' on-controller cache and is doing read-ahead
and thus streaming.  With the array in place, you are probably doing
512K reads (check the array chunk size) so the disks will see bursts
of 512K reads with big gaps.  The gaps are large enough that the
rotation has gone too far and the caching makes you wait a rotation.
This is just a guess.

You can test this hypothesis by doing the test with block sizes that
are exact stripe size (or multiples thereof).  Check
/sys/block/md?/md/optimial_io_size.  This should be ( number of drives
- number of parity drives - number of spares ) * chunk size.  This
might be a really large number, so the block stack will cut the
requests up anyway (there is a 1M limit for struct bio in most
layers), but with HDDs the scheduler should have time to do some
magic.

You might actually do better on this test with smaller chunk sizes.
Then again, this test is far from representative of a production
workload, so tuning for it might be folly.

Doug Dumitru



On Fri, Dec 23, 2016 at 5:43 AM, Marc Roos <M.Roos@xxxxxxxxxxxxxxxxx> wrote:
>
> I have grown a raid5 over the years with drives and resized partitions,
> now I have upgraded to centos7 (from centos5). And I have the impression
> the speed is not what it used to be.
>
> Can this be because of some missalignment? How can this be verified?
>
>
> If I monitor the individual disks with dstat it reads the raid drives at
> very low speeds
>
> dd if=/dev/md21 of=/dev/null bs=1M count=1500 iflag=direct
> 1500+0 records in
> 1500+0 records out
> 1572864000 bytes (1.6 GB) copied, 19.5879 s, 80.3 MB/s
>
>
>    0     0 :   0     0 :   0     0 :   0     0 :   0     0 :   0     0 :
>   0     0
>    0     0 :   0     0 :   0     0 :   0     0 :   0     0 :   0     0 :
>   0     0
>    0     0 :   0     0 :   0     0 :   0     0 :   0     0 :   0     0 :
>   0     0
>  256k    0 : 320k    0 : 320k    0 : 192k    0 : 256k    0 : 320k    0 :
> 256k    0
> 4672k    0 :4672k    0 :4672k    0 :4800k    0 :4672k    0 :4672k    0
> :4736k    0
>   11M    0 :  11M    0 :  11M    0 :  11M    0 :  11M    0 :  11M    0 :
>  11M    0
>   10M    0 :  10M    0 :  10M    0 :  10M    0 :  10M    0 :  10M    0 :
>  10M    0
>   10M    0 :  10M    0 :  10M    0 :  10M    0 :  10M    0 :  10M    0 :
>  10M    0
>   13M    0 :  13M    0 :  13M    0 :  13M    0 :  13M    0 :  13M    0 :
>  13M    0
>   10M    0 :  10M    0 :  10M    0 :  10M    0 :  10M    0 :  10M    0 :
>  10M    0
>   11M    0 :  11M    0 :  11M    0 :  11M    0 :  11M    0 :  11M    0 :
>  11M    0
>   19M    0 :  19M    0 :  19M    0 :  19M    0 :  19M    0 :  19M    0 :
>  19M    0
> 9984k    0 :9792k    0 :9792k    0 :9792k    0 :9984k    0 :9984k    0
> :9856k    0
>   13M    0 :  13M    0 :  13M    0 :  13M    0 :  13M    0 :  13M    0 :
>  13M    0
>   11M    0 :  11M    0 :  11M    0 :  11M    0 :  11M    0 :  11M    0 :
>  11M    0
>   12M    0 :  12M    0 :  12M    0 :  12M    0 :  12M    0 :  12M    0 :
>  12M    0
> 7872k    0 :7744k    0 :7808k    0 :7744k    0 :7936k    0 :7744k    0
> :7744k    0
>   11M    0 :  11M    0 :  11M    0 :  11M    0 :  11M    0 :  11M    0 :
>  11M    0
>   19M    0 :  19M    0 :  19M    0 :  19M    0 :  19M    0 :  19M    0 :
>  19M    0
> 7488k    0 :7360k    0 :7296k    0 :7360k    0 :7296k    0 :7296k    0
> :7296k    0
>   10M    0 :  10M    0 :  10M    0 :  10M    0 :  10M    0 :  10M    0 :
>  10M    0
>   14M    0 :  14M    0 :  14M    0 :  14M    0 :  14M    0 :  14M    0 :
>  14M    0
> 9472k    0 :9536k    0 :9536k    0 :9536k    0 :9472k    0 :9536k    0
> :9472k    0
>    0     0 :   0     0 :   0     0 :   0     0 :   0     0 :   0     0 :
>   0     0
>
> When I test the individual disks with
>
> for disk in sdm sdl sdi sde sdk sdf sdd;do `dd if=/dev/$disk
> of=/dev/null bs=1M count=1500 iflag=direct &`  ;done
>
> [root@san2 ~]# 1500+0 records in
> 1500+0 records out
> 1572864000 bytes (1.6 GB) copied, 8.96022 s, 176 MB/s
> 1500+0 records in
> 1500+0 records out
> 1572864000 bytes (1.6 GB) copied, 9.59289 s, 164 MB/s
> 1500+0 records in
> 1500+0 records out
> 1572864000 bytes (1.6 GB) copied, 10.0863 s, 156 MB/s
> 1500+0 records in
> 1500+0 records out
> 1572864000 bytes (1.6 GB) copied, 10.5833 s, 149 MB/s
> 1500+0 records in
> 1500+0 records out
> 1572864000 bytes (1.6 GB) copied, 10.6084 s, 148 MB/s
> 1500+0 records in
> 1500+0 records out
> 1572864000 bytes (1.6 GB) copied, 11.0205 s, 143 MB/s
> 1500+0 records in
> 1500+0 records out
> 1572864000 bytes (1.6 GB) copied, 11.3199 s, 139 MB/s
>
>
>
>   0     0 :   0     0 :   0     0 :   0     0 :   0     0 :   0     0 :
>  0     0
>    0     0 :   0     0 :   0     0 :   0     0 :   0     0 :   0     0 :
>   0     0
> 4096k    0 :5120k    0 :  32M    0 : 512k    0 :  29M    0 :  35M    0
> :5120k    0
>   62M    0 :  51M    0 : 157M    0 : 145M    0 : 144M    0 : 153M    0 :
>  38M    0
>  153M    0 : 148M    0 : 158M    0 : 174M    0 : 135M    0 : 151M    0 :
> 150M    0
>  152M    0 : 144M    0 : 154M    0 : 179M    0 : 150M    0 : 146M    0 :
> 149M    0
>  149M    0 : 147M    0 : 155M    0 : 186M    0 : 148M    0 : 155M    0 :
> 157M    0
>  156M    0 : 128M    0 : 154M    0 : 188M    0 : 136M    0 : 153M    0 :
> 155M    0
>  159M    0 : 136M    0 : 157M    0 : 206M    0 : 147M    0 : 155M    0 :
> 151M    0
>  153M    0 : 147M    0 : 162M    0 : 153M    0 : 144M    0 : 127M    0 :
> 147M    0
>  153M    0 : 138M    0 : 159M    0 : 153M    0 : 134M    0 : 145M    0 :
> 146M    0
>  147M    0 : 144M    0 : 154M    0 : 116M    0 : 144M    0 : 153M    0 :
> 143M    0
>  154M    0 : 150M    0 :  60M    0 :   0     0 : 141M    0 : 131M    0 :
> 153M    0
>   61M    0 : 147M    0 :   0     0 :   0     0 :  51M    0 :   0     0 :
> 109M    0
>    0     0 :  17M    0 :   0     0 :   0     0 :   0     0 :   0     0 :
>   0     0
>
> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -.
> F1 Outsourcing Development Sp. z o.o.
> Poland
>
> t:  +48 (0)124466845
> f:  +48 (0)124466843
> e:  marc@xxxxxxxxxxxxxxxxx
>
>
> --
> To unsubscribe from this list: send the line "unsubscribe linux-raid" in
> the body of a message to majordomo@xxxxxxxxxxxxxxx
> More majordomo info at  http://vger.kernel.org/majordomo-info.html



-- 
Doug Dumitru
EasyCo LLC
--
To unsubscribe from this list: send the line "unsubscribe linux-raid" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html



[Index of Archives]     [Linux RAID Wiki]     [ATA RAID]     [Linux SCSI Target Infrastructure]     [Linux Block]     [Linux IDE]     [Linux SCSI]     [Linux Hams]     [Device Mapper]     [Device Mapper Cryptographics]     [Kernel]     [Linux Admin]     [Linux Net]     [GFS]     [RPM]     [git]     [Yosemite Forum]


  Powered by Linux