I needed to come back and correct my statement.
I disabled compression on the replication. I did both the pool and the replication, but in the end only needed to disable compression on the replication.
I also took your advice on doing something better for zil. I have two NVME drives in the server, they aren't great for this workload but have surely yielded respectable results for my synthetic testing. I am using two Samsung SM951's in a stripe for ZIL. They have no power loss protection, and are not the fastest on the market... but I am out of lab dollars for now. I will look into getting an Optane drive for ZIL and use the Samsung drives for L2ARC if I need them.
Depending on block size it varies from 100MB/s to 400MB/s
I am asking quite a lot from my cheapy setup, I only have 6K in these two servers and that is not bad for 100TB of usable space. $17/TB usable is not a bad price all things considered. I could probably rebuild my pools is a more space efficient manner and get similar numbers and drive my cost/TB down much further.
Write Test
512k Blocks
./fio --randrepeat=1 --ioengine=libaio --direct=1 --gtod_reduce=1 --name=test --filename=mount/test --iodepth=64 --size=8G --readwrite=randrw --rwmixread=0 --bs=512K
test: (g=0): rw=randrw, bs=512K-512K/512K-512K, ioengine=libaio, iodepth=64
fio-2.0.9
Starting 1 process
Jobs: 1 (f=1): [w] [100.0% done] [0K/185.4M /s] [0 /370 iops] [eta 00m:00s]
test: (groupid=0, jobs=1): err= 0: pid=1108: Fri Jan 19 12:22:24 2018
write: io=8192.0MB, bw=252099KB/s, iops=492 , runt= 33275msec
cpu : usr=1.79%, sys=5.33%, ctx=2065, majf=0, minf=17
IO depths : 1=0.1%, 2=0.1%, 4=0.1%, 8=0.1%, 16=0.1%, 32=0.2%, >=64=99.6%
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.1%, >=64=0.0%
issued : total=r=0/w=16384/d=0, short=r=0/w=0/d=0
Run status group 0 (all jobs):
WRITE: io=8192.0MB, aggrb=252099KB/s, minb=252099KB/s, maxb=252099KB/s, mint=33275msec, maxt=33275msec
Disk stats (read/write):
vda: ios=0/16335, merge=0/16243, ticks=0/2091323, in_queue=2096702, util=99.77%
1M Blocks
./fio --randrepeat=1 --ioengine=libaio --direct=1 --gtod_reduce=1 --name=test --filename=mount/test --iodepth=64 --size=8G --readwrite=randrw --rwmixread=0 --bs=1M
test: (g=0): rw=randrw, bs=1M-1M/1M-1M, ioengine=libaio, iodepth=64
fio-2.0.9
Starting 1 process
Jobs: 1 (f=1): [w] [100.0% done] [0K/301.8M /s] [0 /301 iops] [eta 00m:00s]
test: (groupid=0, jobs=1): err= 0: pid=1111: Fri Jan 19 12:23:19 2018
write: io=8192.0MB, bw=305451KB/s, iops=298 , runt= 27463msec
cpu : usr=2.20%, sys=6.18%, ctx=1480, majf=0, minf=17
IO depths : 1=0.1%, 2=0.1%, 4=0.1%, 8=0.1%, 16=0.2%, 32=0.4%, >=64=99.2%
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.1%, >=64=0.0%
issued : total=r=0/w=8192/d=0, short=r=0/w=0/d=0
Run status group 0 (all jobs):
WRITE: io=8192.0MB, aggrb=305451KB/s, minb=305451KB/s, maxb=305451KB/s, mint=27463msec, maxt=27463msec
Read Test
512K Blocks
./fio --randrepeat=1 --ioengine=libaio --direct=1 --gtod_reduce=1 --name=test --filename=mount/test --iodepth=64 --size=8G --readwrite=randrw --rwmixread=100 --bs=512K
test: (g=0): rw=randrw, bs=512K-512K/512K-512K, ioengine=libaio, iodepth=64
fio-2.0.9
Starting 1 process
Jobs: 1 (f=1): [r] [100.0% done] [438.6M/0K /s] [877 /0 iops] [eta 00m:00s]
test: (groupid=0, jobs=1): err= 0: pid=1105: Fri Jan 19 12:21:39 2018
read : io=8192.0MB, bw=425149KB/s, iops=830 , runt= 19731msec
cpu : usr=0.33%, sys=9.06%, ctx=2063, majf=0, minf=17
IO depths : 1=0.1%, 2=0.1%, 4=0.1%, 8=0.1%, 16=0.1%, 32=0.2%, >=64=99.6%
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.1%, >=64=0.0%
issued : total=r=16384/w=0/d=0, short=r=0/w=0/d=0
Run status group 0 (all jobs):
READ: io=8192.0MB, aggrb=425148KB/s, minb=425148KB/s, maxb=425148KB/s, mint=19731msec, maxt=19731msec
1M Blocks
./fio --randrepeat=1 --ioengine=libaio --direct=1 --gtod_reduce=1 --name=test --filename=mount/test --iodepth=64 --size=8G --readwrite=randrw --rwmixread=100 --bs=1M
test: (g=0): rw=randrw, bs=1M-1M/1M-1M, ioengine=libaio, iodepth=64
fio-2.0.9
Starting 1 process
Jobs: 1 (f=1): [r] [100.0% done] [289.8M/0K /s] [289 /0 iops] [eta 00m:00s]
test: (groupid=0, jobs=1): err= 0: pid=1117: Fri Jan 19 12:33:37 2018
read : io=8192.0MB, bw=404817KB/s, iops=395 , runt= 20722msec
cpu : usr=0.18%, sys=7.75%, ctx=1005, majf=0, minf=17
IO depths : 1=0.1%, 2=0.1%, 4=0.1%, 8=0.1%, 16=0.2%, 32=0.4%, >=64=99.2%
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.1%, >=64=0.0%
issued : total=r=8192/w=0/d=0, short=r=0/w=0/d=0
Run status group 0 (all jobs):
READ: io=8192.0MB, aggrb=404816KB/s, minb=404816KB/s, maxb=404816KB/s, mint=20722msec, maxt=20722msec
Disk stats (read/write):
vda: ios=24335/1, merge=1/0, ticks=2550564/119, in_queue=2556103, util=99.48%
I could do more synthetic testing, but its not worth the time. I will just put a workload on it, and see where I have issues.