[Linux-cluster] cmirror performance

Jonathan E Brassow jbrassow at redhat.com
Fri Mar 9 21:49:35 UTC 2007


clean-up of previously posted script (plus colorized diff output for 
easier reading).

  brassow

-------------- next part --------------
A non-text attachment was scrubbed...
Name: perf_matrix.pl
Type: application/octet-stream
Size: 7334 bytes
Desc: not available
URL: <http://listman.redhat.com/archives/linux-cluster/attachments/20070309/6b3f5bfa/attachment.obj>
-------------- next part --------------


On Mar 9, 2007, at 11:49 AM, Jonathan E Brassow wrote:

> Nope, the first version is just slow.  Next version should be coming 
> with RHEL5.X (and should be going upstream), which should be faster.
>
> I just wrote up a perl script (which I haven't had a chance to really 
> clean-up yet) that will give performance numbers for various 
> request/transfer sizes.  I'm including it at the end.
>
> You must have lmbench package installed (for 'lmdd').  Then run:
> # to give you read performance numbers
> 'perf_matrix.pl if=<block device>'
>
> # to give you write performance numbers
> 'perf_matrix.pl of=<block device>'
>
> # to do multiple runs and discard numbers outside the std deviation
> # The more iterations you do, the more accurate your results
> 'perf_matrix.pl if=<block device> iter=5
>
> For more information on the options, do 'perf_matrix.pl -h'.
>
> Using the above, you can compare the numbers you're getting from the 
> base device, linear target, mirror target, etc over a wide range of 
> transfer/request sizes.
>
> Let's take a look at a couple examples.  (Request sizes increase to 
> the right by powers of two starting at 1kiB.  Transfer sizes increase 
> by rows by powers of two starting at 1MiB.  Results are in MiB/sec):
> prompt> perf_matrix.pl if=/dev/vg/linear iter=5 #linear reads, 5 
> iterations w/ results averaged
>  25.24 28.16 28.82 28.93 28.96 29.25 28.72 26.54 27.39 27.84 28.94 
> 0.00 0.00
>  30.48 31.57 31.66 31.32 31.89 32.19 31.66 32.00 33.98 34.23 31.93 
> 33.30 0.00
>  34.00 33.46 33.39 33.12 33.50 34.32 33.57 33.78 34.81 35.03 33.68 
> 34.25 34.68
>  34.82 34.33 34.32 34.20 34.49 34.89 35.20 35.24 35.39 35.33 35.56 
> 34.94 35.18
>  35.50 35.37 35.53 35.37 35.54 35.53 35.41 35.60 35.38 35.53 35.54 
> 35.45 35.33
>  35.72 35.76 35.82 35.81 35.81 35.80 35.81 35.82 35.81 35.84 35.66 
> 35.78 35.76
>  35.96 35.97 35.87 35.91 35.98 35.99 35.97 35.97 35.98 35.99 35.90 
> 35.96 35.95
>  36.05 36.05 36.05 36.03 36.03 36.03 36.06 36.08 36.06 36.07 36.07 
> 36.06 36.06
>  36.10 36.08 36.08 36.08 36.08 36.10 36.08 36.09 36.10 36.11 36.09 
> 36.10 36.11
>  36.11 36.11 36.11 36.11 36.11 36.11 36.11 36.12 36.12 36.12 36.12 
> 36.12 36.12
>  36.13 36.12 36.12 36.12 36.12 36.12 36.13 36.12 36.12 36.13 36.13 
> 36.13 36.13
>
> prompt> perf_matrix.pl of=/dev/vg/linear iter=5 #linear writes, 5 
> iterations w/ results averaged
>  11.74 9.00 31.77 31.82 31.78 31.84 31.93 32.03 32.37 32.98 34.52 0.00 
> 0.00
>  9.14 9.65 33.57 33.65 33.64 33.65 33.70 33.79 33.99 34.33 35.12 33.36 
> 0.00
>  9.63 9.70 33.03 33.01 34.65 34.65 34.67 33.09 33.16 33.35 33.70 32.88 
> 34.42
>  9.60 9.66 33.30 32.35 33.47 33.49 33.49 32.73 33.36 33.65 33.84 33.41 
> 33.37
>  9.68 9.74 33.31 33.36 32.90 32.94 32.94 33.21 33.08 32.99 33.16 33.33 
> 32.59
>  9.66 9.74 32.88 33.14 33.47 33.38 33.20 33.60 33.18 33.35 33.15 33.10 
> 33.22
>  9.68 9.73 32.66 32.73 33.30 33.39 33.22 33.18 33.23 32.97 33.01 33.10 
> 33.13
>  9.69 9.74 33.06 33.28 33.37 33.45 33.32 33.53 33.27 33.34 33.16 33.05 
> 33.08
>  9.59 9.66 31.88 32.34 32.14 32.41 33.21 32.49 32.41 32.47 32.39 32.69 
> 32.05
>  9.47 9.58 32.87 32.79 32.80 32.84 33.09 32.96 32.99 32.95 32.65 32.59 
> 32.83
>  9.45 9.52 33.35 33.10 33.17 33.12 33.05 33.12 33.97 33.14 32.72 33.07 
> 33.24
>
> # if I redirect the above output to files, I can then diff them
> prompt> perf_matrix.pl diff clinear-read.txt clinear-write.txt
>  -53.49% -68.04% 10.24% 9.99% 9.74% 8.85% 11.18% 20.69% 18.18% 18.46% 
> 19.28% -.--% -.--%
>  -70.01% -69.43% 6.03% 7.44% 5.49% 4.54% 6.44% 5.59% 0.03% 0.29% 9.99% 
> 0.18% -.--%
>  -71.68% -71.01% -1.08% -0.33% 3.43% 0.96% 3.28% -2.04% -4.74% -4.80% 
> 0.06% -4.00% -0.75%
>  -72.43% -71.86% -2.97% -5.41% -2.96% -4.01% -4.86% -7.12% -5.74% 
> -4.76% -4.84% -4.38% -5.14%
>  -72.73% -72.46% -6.25% -5.68% -7.43% -7.29% -6.98% -6.71% -6.50% 
> -7.15% -6.70% -5.98% -7.76%
>  -72.96% -72.76% -8.21% -7.46% -6.53% -6.76% -7.29% -6.20% -7.34% 
> -6.95% -7.04% -7.49% -7.10%
>  -73.08% -72.95% -8.95% -8.86% -7.45% -7.22% -7.65% -7.76% -7.64% 
> -8.39% -8.05% -7.95% -7.84%
>  -73.12% -72.98% -8.29% -7.63% -7.38% -7.16% -7.60% -7.07% -7.74% 
> -7.57% -8.07% -8.35% -8.26%
>  -73.43% -73.23% -11.64% -10.37% -10.92% -10.22% -7.95% -9.98% -10.22% 
> -10.08% -10.25% -9.45% -11.24%
>  -73.77% -73.47% -8.97% -9.19% -9.17% -9.06% -8.36% -8.75% -8.67% 
> -8.78% -9.61% -9.77% -9.11%
>  -73.84% -73.64% -7.67% -8.36% -8.17% -8.31% -8.52% -8.31% -5.95% 
> -8.28% -9.44% -8.47% -8.00%
>
> I can see that writes for a linear device are much worse when request 
> sizes are small, but get reasonably close when request sizes are >= 
> 4kiB.
>
> I haven't had a chance to do this with (cluster) mirrors yet.  It 
> would be interesting to see the difference in performance from linear 
> -> mirror and mirror -> cmirror...
>
> Once things are truly stable, I will concentrate more on performance.  
> (Also note:  While a mirroring is sync'ing itself, performance for 
> nominal operations will be degraded.)
>
>  brassow
>
> <perf_matrix.pl>
>
>
> On Mar 8, 2007, at 12:13 PM, Robert Clark wrote:
>
>>   I've been trying out cmirror for a few months on a RHEL4U4 cluster 
>> and
>> it's now working very well for me, although I've noticed that it does
>> have a bit of a performance hit.
>>
>>   My set-up has a 32G GFS filesystem on a mirrored LV shared via AoE
>> (with jumbo frame support). Just using dd with a 4k blocksize to write
>> files on the same LV when it's mirrored and then unmirrored shows a 
>> big
>> difference in speed:
>>
>>     Unmirrored: 12440kB/s
>>     Mirrored:    2969kB/s
>>
>> which I wasn't expecting as my understanding is that the cmirror 
>> design
>> introduces very little overhead.
>>
>>   The two legs of the mirror are on separate, identical AoE servers 
>> and
>> the filesystem is mounted on 3 out of 6 nodes in the cluster. This is
>> with the cmirror-kernel_2_6_9_19 tagged version and I've tried with 
>> both
>> core and disk logs.
>>
>>   I suspect a bad interaction between cmirror and something else, but
>> I'm not sure where to start looking. Any ideas?
>>
>> 	Thanks,
>>
>> 		Robert
>>
>> --
>> Linux-cluster mailing list
>> Linux-cluster at redhat.com
>> https://www.redhat.com/mailman/listinfo/linux-cluster
>>
> --
> Linux-cluster mailing list
> Linux-cluster at redhat.com
> https://www.redhat.com/mailman/listinfo/linux-cluster


More information about the Linux-cluster mailing list