@BerraBing Du kan inte förvänta dig att ZFS L2ARC (läs-cache) kommer hjälpa vid sekventiell skrivning. Enkelt sett så fylls denna cache endast vid repetitiv läsning av samma data innan denna data hunnit avlägsnas från primär cache (ARC) i RAM. Och den fylls långsamt. Samt överlever inte omstart.
Som @xxargs säger bör du undersöka dina WD Green mer i detalj.
Det är svårt för mig att göra någon direkt jämförelse med min egen server, men jag testade lite överföring till mina ZFS-pooler genom en Windows 10-VM på samma VMware-host som min FreeNAS-server. Jag testade överföring mellan pooler, samt från en RAM-disk i Windows. Ingen pool har cache (L2ARC) eller log (SLOG), bara fyra (raid10) eller två (raid1) diskar.
Jag skriver filer i ca 180-280 MB/s (snittar runt 230) till en 60% fylld pool bestående av 4x WD Black 640GB i mostvarande raid10 (stripe+mirror). Dessa diskar har över 7 år på nacken.
Jag får även ca 60% av ovan prestanda (90-120 MB/s), men med något större variation (ibland över 200 MB/s för flera GB i sträck), när jag skriver en likvärdig fil till min andra pool som består av två Seagate NAS 4TB i en enkel raid1 (mirror.) Denna pool är precis över 80% full vilket är övre gränsen för vad som rekommenderas för prestanda.
Ovan resultat är med jumbo frames (MTU 9000) och vmxnet3 på båda sidor. Kör jag över ett E1000E-interface utan jumbo frames (MTU 1500) i Windows, mot vmxnet3 utan jumbo frames i FreeNAS, så går prestandan ner ca 10-20%.
Jag har minskat ner maximal tid innan en transaktionsgrupp skrivs till disk, från 5 till 2 sekunder, vilket jag tror (kanske inbillar mig) ger mig mer jämn prestanda. (Jag sätter "loader" type tunable "vfs.zfs.txg.timeout" till 2.)
Det kan också vara bra att utesluta nätverksrelaterat strul. FreeBSD, som FreeNAS baseras på, kanske helt enkelt fungerar sämre än Linux i din miljö.
Hur snabbt skriver du data till din pool? Testa t.ex. genom att skapa ett dataset utan komprimering och skriva data dit via "dd". Se till att mängden data du skriver inte är för liten så den helt äts upp av en transaktionsgrupp (1/8 av RAM per default).
Exempel för 10 GB: dd if=/dev/zero of=/mnt/minpool/test/zerofile bs=1G count=10
Jag har ca 18 GB RAM för FreeNAS, så min skrivcache ligger runt 2 GB, men skrivs också ut efter max 2 sekunder. Data nedan är från 3 körningar per pool.
2 diskar i raid1: 83, 88, samt 89 sekunder för 10 GB (115-123 MB/s)
4 diskar i raid 10: 45, 58, samt 51 sekunder för 10 GB (176-227 MB/s)
Hur snabbt kan du skriva över nätverket? Testa genom att över nätverket skriva en högt komprimerbar fil till ett dataset med lz4-komprimering igång. T.ex. kan du kopiera över en eller flera av dessa filer med enbart 0:or till btrfs-poolen, eller en RAM-disk för den delen. Windows kommer skicka all data som den är, men FreeNAS kommer applicera sin enkla, och i det här fallet extrema, komprimering, så du kommer i stort sett se hur snabbt du kan föra över i absolut bästa fall till en blixtsnabb pool.
Att direkt i FreeNAS skriva en fil med bara nollor till en pool med lz4-komprimering tar för mig ca 4-5 sekunder, dvs runt 2 GB/s.
För min even del verkar min Windows-VM slå i taket vid en snitthastighet på ca 250 MB/s från RAM-disk till FreeNAS via både SMB och iSCSI. För SMB ser jag en initial burst på 1-2 sekunder med nära dubbla hastigheten, oklart vad det kommer från. För iSCSI ser hastigheten ut att börja lågt för att sedan rampa upp mer långsamt.
Det här blev längre än jag tänkt mig... Hoppas det hjälper någon.