All of lore.kernel.org
 help / color / mirror / Atom feed
* default value for rr_min_io too high?
@ 2006-01-18 21:41 David Wysochanski
  2006-01-18 22:29 ` Christophe Varoqui
  2006-01-22 17:43 ` Alasdair G Kergon
  0 siblings, 2 replies; 8+ messages in thread
From: David Wysochanski @ 2006-01-18 21:41 UTC (permalink / raw)
  To: device-mapper development

I'm wondering where the value of 1000 came from, and
whether that's really a good default.

Some preliminary tests I've run with iSCSI seem to indicate
something lower (say 100) might be a better default, but
perhaps others have a differing opinion.  I searched the
list but couldn't find any discussion on it.

Thanks.

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: default value for rr_min_io too high?
  2006-01-18 21:41 default value for rr_min_io too high? David Wysochanski
@ 2006-01-18 22:29 ` Christophe Varoqui
  2006-01-20 23:57   ` Christophe Varoqui
  2006-01-22 17:43 ` Alasdair G Kergon
  1 sibling, 1 reply; 8+ messages in thread
From: Christophe Varoqui @ 2006-01-18 22:29 UTC (permalink / raw)
  To: device-mapper development

On mer, 2006-01-18 at 16:41 -0500, David Wysochanski wrote:
> I'm wondering where the value of 1000 came from, and
> whether that's really a good default.
> 
> Some preliminary tests I've run with iSCSI seem to indicate
> something lower (say 100) might be a better default, but
> perhaps others have a differing opinion.  I searched the
> list but couldn't find any discussion on it.
> 
I'm not really focused on performance, but this seems to be an
io-pattern dependant choice.

Higher values may help the elevators, (right ?) thus help the seeky
workloads. Lower values may certainly benefit from lower values to
really get the paths summed bandwidth.

Anyway, I can not back this with numbers. Any value will be fine with me
as a default, and I highlight that now you can also set per device
defaults like rr_min_io in hwtable.c

Regards,
cvaroqui

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: default value for rr_min_io too high?
  2006-01-18 22:29 ` Christophe Varoqui
@ 2006-01-20 23:57   ` Christophe Varoqui
  2006-02-01 18:30     ` David Wysochanski
  0 siblings, 1 reply; 8+ messages in thread
From: Christophe Varoqui @ 2006-01-20 23:57 UTC (permalink / raw)
  To: device-mapper development

On mer, 2006-01-18 at 23:29 +0100, Christophe Varoqui wrote:
> On mer, 2006-01-18 at 16:41 -0500, David Wysochanski wrote:
> > I'm wondering where the value of 1000 came from, and
> > whether that's really a good default.
> > 
> > Some preliminary tests I've run with iSCSI seem to indicate
> > something lower (say 100) might be a better default, but
> > perhaps others have a differing opinion.  I searched the
> > list but couldn't find any discussion on it.
> > 
> I'm not really focused on performance, but this seems to be an
> io-pattern dependant choice.
> 
> Higher values may help the elevators, (right ?) thus help the seeky
> workloads. Lower values may certainly benefit from lower values to
> really get the paths summed bandwidth.
> 
> Anyway, I can not back this with numbers. Any value will be fine with me
> as a default, and I highlight that now you can also set per device
> defaults like rr_min_io in hwtable.c
> 
Replying to myself,

I finally got the chance to challenge my sayings, and I'm proven badly
wrong :/

On a StorageWorks EVA110 FC array, 2 active 2Gb/s paths to 2 2Gb/s
target ports. 1 streaming read (sg_dd dio=1 if=/dev/mapper/mpath0
of=/dev/null bs=1M count=100k) :

rr_min_io = 1000 => aggregated throughput = 120 Mo/s
rr_min_io =  100 => aggregated throughput = 130 Mo/s
rr_min_io =   50 => aggregated throughput = 200 Mo/s
rr_min_io =   20 => aggregated throughput = 260 Mo/s
rr_min_io =   10 => aggregated throughput = 300 Mo/s

Regards,
cvaroqui

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: default value for rr_min_io too high?
  2006-01-18 21:41 default value for rr_min_io too high? David Wysochanski
  2006-01-18 22:29 ` Christophe Varoqui
@ 2006-01-22 17:43 ` Alasdair G Kergon
  2006-02-03 16:33   ` Christophe Varoqui
  1 sibling, 1 reply; 8+ messages in thread
From: Alasdair G Kergon @ 2006-01-22 17:43 UTC (permalink / raw)
  To: device-mapper development

On Wed, Jan 18, 2006 at 04:41:57PM -0500, David Wysochanski wrote:
> I'm wondering where the value of 1000 came from, and

Thin air.

> whether that's really a good default.
 
Unlikely.

That's why we made it configurable - to make it easy to try out
different values and use whatever you find best.

Alasdair
-- 
agk@redhat.com

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: default value for rr_min_io too high?
  2006-01-20 23:57   ` Christophe Varoqui
@ 2006-02-01 18:30     ` David Wysochanski
  2006-03-15 16:19       ` David Wysochanski
  0 siblings, 1 reply; 8+ messages in thread
From: David Wysochanski @ 2006-02-01 18:30 UTC (permalink / raw)
  To: christophe.varoqui, device-mapper development

Christophe Varoqui wrote:
> On mer, 2006-01-18 at 23:29 +0100, Christophe Varoqui wrote:
>  > On mer, 2006-01-18 at 16:41 -0500, David Wysochanski wrote:
>  > > I'm wondering where the value of 1000 came from, and
>  > > whether that's really a good default.
>  > >
>  > > Some preliminary tests I've run with iSCSI seem to indicate
>  > > something lower (say 100) might be a better default, but
>  > > perhaps others have a differing opinion.  I searched the
>  > > list but couldn't find any discussion on it.
>  > >
>  > I'm not really focused on performance, but this seems to be an
>  > io-pattern dependant choice.
>  >
>  > Higher values may help the elevators, (right ?) thus help the seeky
>  > workloads. Lower values may certainly benefit from lower values to
>  > really get the paths summed bandwidth.
>  >
>  > Anyway, I can not back this with numbers. Any value will be fine with me
>  > as a default, and I highlight that now you can also set per device
>  > defaults like rr_min_io in hwtable.c
>  >
> Replying to myself,
> 
> I finally got the chance to challenge my sayings, and I'm proven badly
> wrong :/
> 
> On a StorageWorks EVA110 FC array, 2 active 2Gb/s paths to 2 2Gb/s
> target ports. 1 streaming read (sg_dd dio=1 if=/dev/mapper/mpath0
> of=/dev/null bs=1M count=100k) :
> 
> rr_min_io = 1000 => aggregated throughput = 120 Mo/s
> rr_min_io =  100 => aggregated throughput = 130 Mo/s
> rr_min_io =   50 => aggregated throughput = 200 Mo/s
> rr_min_io =   20 => aggregated throughput = 260 Mo/s
> rr_min_io =   10 => aggregated throughput = 300 Mo/s
> 

What I seemed to see what the larger the I/O size the lower
I needed to go with rr_min_io to get best throughput.  Did
you run it with a smaller block size, say 4k?

I will try to get some more definitive #'s and post.

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: default value for rr_min_io too high?
  2006-01-22 17:43 ` Alasdair G Kergon
@ 2006-02-03 16:33   ` Christophe Varoqui
  2006-02-04  9:37     ` Christophe Varoqui
  0 siblings, 1 reply; 8+ messages in thread
From: Christophe Varoqui @ 2006-02-03 16:33 UTC (permalink / raw)
  To: device-mapper development

On Sun, Jan 22, 2006 at 05:43:24PM +0000, Alasdair G Kergon wrote:
> On Wed, Jan 18, 2006 at 04:41:57PM -0500, David Wysochanski wrote:
> > I'm wondering where the value of 1000 came from, and
> 
> Thin air.
> 
> > whether that's really a good default.
>  
> Unlikely.
> 
> That's why we made it configurable - to make it easy to try out
> different values and use whatever you find best.
> 
I'm less and less confident we can find good figures, even for a specific workload.
Here is another round of numbers.

Is there still a plan for pluging the elevator in the devmapper device ?
This could help us produce predictable figures (the ones admins like).

Regards,
cvaroqui

Hardware :
- 2x2Gb/s Qlogic HBA
- 1x100GB Vraid1 in a 2C2D EVA3000 StorageWorks array

Test :
- 1 streaming read at a time
- Variations of rr_min_io and dd blocksize

Results :

min_io				dd block size (kB)				
	4	8	16	32	64	128	256	512	1024

8	111	53	51	47	32	59	50	41	61
16	28	79	46	55	112	52	83	68	61
32	41	33	46	31	116	36	75	106	37
64	48	36	67	36	81	54	71	53	47
128	46	46	57	54	66	54	66	59	44
256	56	50	63	63	69	53	57	55	63
512	56	49	55	58	66	60	88	56	57
1024	62	54	70	62	91	82	89	61	61

Script used :
#!/bin/bash

MULTIPATH=/root/foo/multipath/multipath
DEV=/dev/mapper/mpath1
DD="sg_dd sync=1 time=1 dio=1"
SIZE="1024*1024"
MINIO="8 16 32 64 128 256 512 1024"
BS="4 8 16 32 64 128 256 512 1024"

#
# @1 : desired min_io
#
function set_minio
{
        sed s/XX/$1/ /root/multipath.conf > /etc/multipath.conf
        $MULTIPATH $MULTIPATH_OPT >/dev/nul
}

# header
echo "0 $BS"

for minio in $(echo $MINIO)
do
        set_minio $minio
        echo -n "$minio "
        for bs in $(echo $BS)
        do
                count=$(($SIZE/$bs))
                echo -n "$($DD if=$DEV of=/dev/null bs=${bs}k count=${count} 2>&1|head -1|awk '{print $8}') "
        done
        echo
done

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: default value for rr_min_io too high?
  2006-02-03 16:33   ` Christophe Varoqui
@ 2006-02-04  9:37     ` Christophe Varoqui
  0 siblings, 0 replies; 8+ messages in thread
From: Christophe Varoqui @ 2006-02-04  9:37 UTC (permalink / raw)
  To: device-mapper development

On ven, 2006-02-03 at 17:33 +0100, Christophe Varoqui wrote:
> On Sun, Jan 22, 2006 at 05:43:24PM +0000, Alasdair G Kergon wrote:
> > On Wed, Jan 18, 2006 at 04:41:57PM -0500, David Wysochanski wrote:
> > > I'm wondering where the value of 1000 came from, and
> > 
> > Thin air.
> > 
> > > whether that's really a good default.
> >  
> > Unlikely.
> > 
> > That's why we made it configurable - to make it easy to try out
> > different values and use whatever you find best.
> > 
> I'm less and less confident we can find good figures, even for a specific workload.
> Here is another round of numbers.
> 
> Is there still a plan for pluging the elevator in the devmapper device ?
> This could help us produce predictable figures (the ones admins like).
> 
I read in the LWN article titled "Request Queues I" at
http://lwn.net/Articles/27055/ that :

"One request queue can be shared across multiple physical drives, but
the normal usage is to create a separate queue for each drive."

Is it still the case ?

Would it be better to coalesce the different paths request queues upon
multipath map load and re-split them upon unload ?

> Regards,
> cvaroqui
> 
> Hardware :
> - 2x2Gb/s Qlogic HBA
> - 1x100GB Vraid1 in a 2C2D EVA3000 StorageWorks array
> 
> Test :
> - 1 streaming read at a time
> - Variations of rr_min_io and dd blocksize
> 
> Results :
> 
> min_io				dd block size (kB)				
> 	4	8	16	32	64	128	256	512	1024
> 
> 8	111	53	51	47	32	59	50	41	61
> 16	28	79	46	55	112	52	83	68	61
> 32	41	33	46	31	116	36	75	106	37
> 64	48	36	67	36	81	54	71	53	47
> 128	46	46	57	54	66	54	66	59	44
> 256	56	50	63	63	69	53	57	55	63
> 512	56	49	55	58	66	60	88	56	57
> 1024	62	54	70	62	91	82	89	61	61
> 
> Script used :
> #!/bin/bash
> 
> MULTIPATH=/root/foo/multipath/multipath
> DEV=/dev/mapper/mpath1
> DD="sg_dd sync=1 time=1 dio=1"
> SIZE="1024*1024"
> MINIO="8 16 32 64 128 256 512 1024"
> BS="4 8 16 32 64 128 256 512 1024"
> 
> #
> # @1 : desired min_io
> #
> function set_minio
> {
>         sed s/XX/$1/ /root/multipath.conf > /etc/multipath.conf
>         $MULTIPATH $MULTIPATH_OPT >/dev/nul
> }
> 
> # header
> echo "0 $BS"
> 
> for minio in $(echo $MINIO)
> do
>         set_minio $minio
>         echo -n "$minio "
>         for bs in $(echo $BS)
>         do
>                 count=$(($SIZE/$bs))
>                 echo -n "$($DD if=$DEV of=/dev/null bs=${bs}k count=${count} 2>&1|head -1|awk '{print $8}') "
>         done
>         echo
> done
> 
> --
> dm-devel mailing list
> dm-devel@redhat.com
> https://www.redhat.com/mailman/listinfo/dm-devel

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: default value for rr_min_io too high?
  2006-02-01 18:30     ` David Wysochanski
@ 2006-03-15 16:19       ` David Wysochanski
  0 siblings, 0 replies; 8+ messages in thread
From: David Wysochanski @ 2006-03-15 16:19 UTC (permalink / raw)
  To: device-mapper development; +Cc: christophe.varoqui

Wysochanski, David wrote:
>
> Christophe Varoqui wrote:
> > On mer, 2006-01-18 at 23:29 +0100, Christophe Varoqui wrote:
> >  > On mer, 2006-01-18 at 16:41 -0500, David Wysochanski wrote:
> >  > > I'm wondering where the value of 1000 came from, and
> >  > > whether that's really a good default.
> >  > >
> >  > > Some preliminary tests I've run with iSCSI seem to indicate
> >  > > something lower (say 100) might be a better default, but
> >  > > perhaps others have a differing opinion.  I searched the
> >  > > list but couldn't find any discussion on it.
> >  > >
> >  > I'm not really focused on performance, but this seems to be an
> >  > io-pattern dependant choice.
> >  >
> >  > Higher values may help the elevators, (right ?) thus help the seeky
> >  > workloads. Lower values may certainly benefit from lower values to
> >  > really get the paths summed bandwidth.
> >  >
> >  > Anyway, I can not back this with numbers. Any value will be fine 
> with me
> >  > as a default, and I highlight that now you can also set per device
> >  > defaults like rr_min_io in hwtable.c
> >  >
> > Replying to myself,
> >
> > I finally got the chance to challenge my sayings, and I'm proven badly
> > wrong :/
> >
> > On a StorageWorks EVA110 FC array, 2 active 2Gb/s paths to 2 2Gb/s
> > target ports. 1 streaming read (sg_dd dio=1 if=/dev/mapper/mpath0
> > of=/dev/null bs=1M count=100k) :
> >
> > rr_min_io = 1000 => aggregated throughput = 120 Mo/s
> > rr_min_io =  100 => aggregated throughput = 130 Mo/s
> > rr_min_io =   50 => aggregated throughput = 200 Mo/s
> > rr_min_io =   20 => aggregated throughput = 260 Mo/s
> > rr_min_io =   10 => aggregated throughput = 300 Mo/s
> >
>
> What I seemed to see what the larger the I/O size the lower
> I needed to go with rr_min_io to get best throughput.  Did
> you run it with a smaller block size, say 4k?
>
> I will try to get some more definitive #'s and post.
>
> -- 
> dm-devel mailing list
> dm-devel@redhat.com
> https://www.redhat.com/mailman/listinfo/dm-devel
>
As promised, here's some data I ran on a netapp filer with iscsi and
dm-multipath with a tool that is similar to iometer (multithreaded
and generates direct IOs, one per thread).  In general, I agree
about needing to tune for a given configuration as there's multiple
levels of queuing, and rr_min_io should make sense with all of that,
the workload, etc.

DISCLAIMER: This shouldn't be viewed as official perf numbers for
netapp filers but was just done to tune rr_min_io.  Also, the
test had a very small # of disk spindles so don't read too much
into things like low overall throughput on 100% WRITEs.

Initiator:
- rhel4 u3, 2 GigE NICs

Target:
- netapp filer, 2 iSCSI ports
- single lun exported to host via both ports

                                        rr_min_io
I/O size          8       16      32      64      128     256     
512     1024
------------------------------------------------------------------------------
512byte           9       9       9.6     9.3     9.3     9.7      
10      10
4k               53      54      57      58      63      61        
58      56
8k               85      85      87      86      85      77        
75      73
64k             109     110     111     109     109      94        
93      93
256k            134     136     135     134     133     134       
135     126
------------------------------------------------------------------------------
Throughput (MB/s) for a given I/O size and rr_min_io value
128 threads, 60/40 read/write, 100% random


                                        rr_min_io
I/O size          8       16      32      64      128     256     
512     1024
------------------------------------------------------------------------------
512byte          12       12      12      12       11      11      
11      11
4k               67       70      69      70       73      75      
74      75
8k              107      108     107     109      109     101      
90      95
64k             167      168     168     168      168     153     
129     120
256k            175      174     175     174      175     177     
174     156
------------------------------------------------------------------------------
Throughput (MB/s) for a given I/O size and rr_min_io value
128 threads, 100% read, 100% sequential, 100MB working set (cached reads)



                                        rr_min_io
I/O size          8       16      32      64      128     256     
512     1024
------------------------------------------------------------------------------
512byte           7.8      8       8       8        9       9       
9       9
4k               44       44      44      45       44      41      
40      40
8k               65       65      64      63       62      57      
55      53
64k              69       70      70      70       69      66      
62      58
256k             92       95      93      94       93      94      
93      84
------------------------------------------------------------------------------
Throughput (MB/s) for a given I/O size and rr_min_io value
128 threads, 100% write, 100% sequential


                                        rr_min_io
I/O size          8       16      32      64      128     256     
512     1024
------------------------------------------------------------------------------
512byte          11.5     12      12      11.7     11      11      
11       11
4k               66       70      70      71       74      75      
73       75
8k              107      108     108     109      109     100      
89       95
64k             167      168     169     169      170     154     
128      120
256k            172      173     174     171      173     174     
168      153
------------------------------------------------------------------------------
Throughput (MB/s) for a given I/O size and rr_min_io value
128 threads, 100% read, 100% random


                                        rr_min_io
I/O size          8       16      32      64      128     256     
512     1024
------------------------------------------------------------------------------
512byte           7.6      8       8       8        9       9       
8.7    8.5
4k               45       45      45      46       45      42      40     38
8k               66       67      65      65       64      59      55     52
64k              71       71      71      71       70      65      61     58
256k             93       93      95      95       95      94      94     85
------------------------------------------------------------------------------
Throughput (MB/s) for a given I/O size and rr_min_io value
128 threads, 100% write, 100% random

^ permalink raw reply	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2006-03-15 16:19 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2006-01-18 21:41 default value for rr_min_io too high? David Wysochanski
2006-01-18 22:29 ` Christophe Varoqui
2006-01-20 23:57   ` Christophe Varoqui
2006-02-01 18:30     ` David Wysochanski
2006-03-15 16:19       ` David Wysochanski
2006-01-22 17:43 ` Alasdair G Kergon
2006-02-03 16:33   ` Christophe Varoqui
2006-02-04  9:37     ` Christophe Varoqui

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.