So great to see it in action! Thanks gea for the benchmark!

Looks like your benchmark is done with OmniOS, so SSD+HDD mirror is really a 
bad idea if on Illumos ZFS up to your OmniOS' version.

I can understand the benchmark result except for sole SSD randomrw.f be at 72.8 
MB/s (vs 118.2 MB/s), it's rather much slower than sole HD! 

Why? I don't understand but a wild guess - somehow the cache works in 
write-through mode on SSD only vdev, while on HD involved vdev, the cache works 
in write-back mode?

--

Then I googled more and found that OpenZFS people have tackled almost identical 
situation with great progress:

https://github.com/openzfs/zfs/issues/1461#issuecomment-18399909 
<https://github.com/openzfs/zfs/issues/1461#issuecomment-18399909>

> For example in my tests with 1 x disk and 1 x ram device:
> 
> Normal round robin: 80MB/s+80MB/s = 160MB/sec
> Balancing off pending: 80MB/s + 200MB/s = 280MB/s
> With slow vdevs offlined: 0MB/s + 400MB/s = 400MB/s


https://github.com/openzfs/zfs/issues/1461#issuecomment-18783825 
<https://github.com/openzfs/zfs/issues/1461#issuecomment-18783825>

> Just for reference here's the patch I've proposed running against a ssd+hdd 
> pool. Because it sounds like your most interested in IO/s I've run fio using 
> 16 threads and a 4k random read workloads.
> 
> $ zpool status -v
>     NAME        STATE     READ WRITE CKSUM
>     hybrid      ONLINE       0     0     0
>       mirror-0  ONLINE       0     0     0
>         ssd-1   ONLINE       0     0     0
>         hdd-1   ONLINE       0     0     0
>       mirror-1  ONLINE       0     0     0
>         ssd-2   ONLINE       0     0     0
>         hdd-2   ONLINE       0     0     0
>       mirror-2  ONLINE       0     0     0
>         ssd-3   ONLINE       0     0     0
>         hdd-3   ONLINE       0     0     0
>       mirror-3  ONLINE       0     0     0
>         ssd-4   ONLINE       0     0     0
>         hdd-4   ONLINE       0     0     0
> 
> $ iostat -mxz 5
> Device:         rrqm/s   wrqm/s     r/s     w/s    rMB/s    wMB/s avgrq-sz 
> avgqu-sz   await  svctm  %util
> hdd-1               0.00     0.00  156.80    0.00    19.60     0.00   256.00  
>    2.52   16.09   6.37  99.88
> hdd-2               0.00     0.00  149.80    0.00    18.73     0.00   256.00  
>    2.51   16.78   6.66  99.80
> hdd-3               0.00     0.00  150.40    0.00    18.80     0.00   256.00  
>    2.52   16.74   6.63  99.72
> hdd-4               0.00     0.00  154.20    0.00    19.28     0.00   256.00  
>    2.46   15.98   6.47  99.70
> ssd-1               0.00     0.00 1250.80    0.00   156.35     0.00   256.00  
>    1.32    1.06   0.62  77.70
> ssd-2               0.00     0.00 1237.20    0.00   154.65     0.00   256.00  
>    1.31    1.06   0.62  77.16
> ssd-3               0.00     0.00 1243.40    0.00   155.42     0.00   256.00  
>    1.33    1.07   0.62  77.68
> ssd-4               0.00     0.00 1227.60    0.00   153.45     0.00   256.00  
>    1.29    1.05   0.63  77.36
> 
> $ fio rnd-read-4k
> read: (groupid=0, jobs=16): err= 0: pid=13087
>   read : io=1324.3MB, bw=22594KB/s, iops=5648 , runt= 60018msec
>     clat (usec): min=6 , max=276720 , avg=2762.90, stdev=1493.94
>      lat (usec): min=6 , max=276720 , avg=2763.11, stdev=1493.94
>     bw (KB/s) : min=  109, max= 2743, per=6.40%, avg=1446.40, stdev=67.99
>   cpu          : usr=0.16%, sys=1.37%, ctx=336494, majf=0, minf=432
>   IO depths    : 1=100.0%, 2=0.0%, 4=0.0%, 8=0.0%, 16=0.0%, 32=0.0%, >=64=0.0%
>      submit    : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%,>=64=0.0%
>      complete  : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%,>=64=0.0%
>      issued r/w/d: total=339009/0/0, short=0/0/0
>      lat (usec): 10=0.53%, 20=2.81%, 50=0.02%, 100=0.01%, 750=0.01%
>      lat (usec): 1000=33.99%
>      lat (msec): 2=50.03%, 4=1.93%, 10=2.75%, 20=5.09%, 50=2.69%
>      lat (msec): 100=0.15%, 250=0.01%, 500=0.01%
> 
> Run status group 0 (all jobs):
>    READ: io=1324.3MB, aggrb=22593KB/s, minb=23136KB/s, maxb=23136KB/s,
> mint=60018msec, maxt=60018msec
> From the above results you can quickly see a few things.
> 
>   1. As expected the hard drives are nearly 100% utilized and limited at 
> roughly 150 IO/s. The ssds are not quite maxed out but they are handling the 
> vast majority of the IO/s at roughly 1200+ operations per second. Some 
> additional tuning is probably possible to increase that utilization but 
> that's not too shabby.
> 
>   2. Sustained IO/s for the pool is a respectable 5648, but as expected you 
> have a bimodal distribution for the latency. Some IO/s are very fast when 
> serviced by the SSD others are slow when the HDD is used, for this case the 
> worst case latency was a quite large 276ms with an average of 2.7ms. We could 
> probably do a bit more to bound the worst case latencies but I think this is 
> a good start.

https://github.com/openzfs/zfs/issues/1461#issuecomment-20507619 
<https://github.com/openzfs/zfs/issues/1461#issuecomment-20507619>

> This is better than a cure for cancer. Every time I watch you guys improve 
> ZFS, it's like magic.

---

That leads to the patch [Improve N-way mirror 
performance](https://github.com/openzfs/zfs/commit/556011dbec2d10579819078559a77630fc559112)
 merged into OpenZFS on Jul 12 2013, so seems a similar solution has not found 
its way into Illumos ZFS?

Can we initiate some effort to backport that into Illumos ZFS?

Best regards,
Compl


> On 2022-01-23, at 22:48, Günther Ernst Alka <g...@napp-it.org> wrote:
> 
> 
> I have made some benchmarks of the following mixed mirror 
> (fast Samsung SAS SSD 960, slow HGST 2TB HD, 12G HBA)
> 
> <p6HxZ77PXXgwzzSb.png>
> 
> a quick dd Benchmark of the hd alone (basic pool) gives
> 
> 12.8 GB in 94.3s = 143.82 MB/s Write
> 12.8 GB in 104.3s = 130.48 MB/s Read
> 
> a dd Benchmark of the ssd alone (basic pool) gives
> 
> 12.8 GB in 23.3s = 549.36 MB/s Write
> 12.8 GB in 16.8s = 870.75 MB/s Read
> 
> a dd Benchmark of the mirror gives
> 
> 12.8 GB in 94.4s = 135.59 MB/s Write
> 12.8 GB in 68.6s = 186.59 MB/s Read
> 
> a multistream filebench benchmark of the mirror gives (filebench 
> 5streamread/write to check effects of parallel io)
> 
> <cMT9iCkTNiNUk3LW.png>
> 
> 
> Result from dd (singlstream):
> Write mirror vs disks: Writing to the mixed pool is as slow as to the hd
> Read mirror vs disks: Reading from the mixed pool is only slightly faster as 
> from the hd
> 
> 
> singlestream filebench results
> 
>                                 randomread.f     randomrw.f     singlestreamr
> pri/sec cache=all  (hd)         103.4 MB/s       118.2 MB/s     1.0 GB/s
> 
>                                 randomread.f     randomrw.f     singlestreamr
> pri/sec cache=all (ssd)         120.6 MB/s       72.8 MB/s      1.1 GB/s  
> 
>                                 randomread.f     randomrw.f     singlestreamr
> pri/sec cache=all (mirror)      92.8 MB/s        117.0 MB/s     990.4 MB/s    
>                 
> ________________________________________________________________________________________
> 
> 
> Result from filebench  (multistream):
>    Write mirror vs disks: Writing to the mixed pool is as slow as to the hd
>    Read mirror vs disks: Single/Random Reading from the mixed pool is as slow 
> as from the hd
> 
> Filebench result
>    Single/Random Reading from the mixed pool is as slow as from the hd.
>    random r/w of the mixed pool is better than hd or ssd alone
>    Multistream Reading from the mixed pool is twice as fast as singlestream 
> read from the ssd or hd
>    and nearly twice as good as singlstreamread from the mixed pool
>    (read values are too good, readcache seems to improve values massively but 
> shows indeed the effect of parallel multistream reading)
> 
> In the end especially the bad write and weak read results indicate that a 
> mixed mirror is a bad idea
> 
> gea
> 
> 
> 
> SmartOS <https://smartos.topicbox.com/latest> / smartos-discuss / see 
> discussions <https://smartos.topicbox.com/groups/smartos-discuss> + 
> participants <https://smartos.topicbox.com/groups/smartos-discuss/members> + 
> delivery options 
> <https://smartos.topicbox.com/groups/smartos-discuss/subscription>Permalink 
> <https://smartos.topicbox.com/groups/smartos-discuss/T07ae623311b6e168-M23f1851fb3d90d30cce7482c>

------------------------------------------
illumos: illumos-discuss
Permalink: 
https://illumos.topicbox.com/groups/discuss/Tc34977e2e913194b-M52baae03e27a1259fcd51dcf
Delivery options: https://illumos.topicbox.com/groups/discuss/subscription

Reply via email to