ZFS cache-nek érdemesebb inkább RAM-ot bővíteni, modern DDR4-5 RAM-ok több giga per mp. ütemben nyomják, amit az OPtane 230 megásával.
Aszinkron írásnál igen. De pont ez a lényeg, adatbáziskezelők például , amik kis blokkokat irnak (4-16K blokkok) azonnal az ssd-re(szinkron irás,) azt viszont töménytelen mennyiségben, vagyis nagyon magas az iops követelmény. Ezen nem tudsz ram bővitéssel segíteni, az aszinkronnál igen, telik a hatalmas RAM, .nagy sebességgel, aztán majd valamikor lemezre, ssd-re íródnak az adatok, ha áramszünet, lefagyás van, nem akkora gond, mert ezek olyan adatok, amik nem fájnak annyira ha elvesznek. Szinkron irásnál meg azonnal menni kell a lemezre , ott nincs pufferelés ram-ba, az adatbázisban nem sérülhet a konzisztencia.
Itt jön képbe az olyan eszköz ami nagy sebességgel tud kisblokkos random szinkron irást, ami maradjunk a példámnál - az adatbázisokhoz kell.
ZFS azt csinálja , hogy ha van egy ilyen eszköz , ZIL, akkor a szinkron irás ide kerül naplózásra elsőnek, nem a lassab lemezekre. Mostmár ráér a lemezre írás. Ez a ZIL log. Ha valami lefagyás van, oltt vannak az adatok a ZIL ssd-n, és visszakapcsoláskor helyreállítja az adatkondzisztenciát a ZFS. Kicsit hasonló ez mint a hw. raid kártyák nem felejtó ramja az akkumulátorával.
Amúgy 4K randomnál a Samsung 980-nak kéne tudnia egy kb. 70-100 mega körül, ott valami nem jó, ha csak 4 megát tud.
Most akkor kinek higgyünk, a saját szemünknek , vagy a marketingnek ? Mérd le, és ha 100 MB/secet mérsz azonnál szóljál mert rohanok venni belőle.
En viszont ezt mérem, (Itt most SZINKRON random kisblokkos irásról beszélek , ami leginkább csak szerver környezetben érdekes) . De ott a fio, van windowsra is egyetlen mérés bárkinek, aztán jön a szomorú valóság, nvme egy platform, nem sebesség:
WD nvme ssd: (Jó, nem 4 hanem 10 MB/sec, asztali ilyen , lehet utánmérni sajáton)
C:\Users>wmic diskdrive get model,size
Model Size
WDC PC SN530 SDBPNPZ-256G-1002 256052966400
C:\tmp> fio --name=ssdtest --filename=testfileX1 --size=100M --bs=4k --iodepth=1 --rw=randwrite --randrepeat=1 --sync=1
--fsync=1
fsync/fdatasync/sync_file_range:
sync (nsec): min=71, max=7985, avg=125.58, stdev=132.78
sync percentiles (nsec):
| 1.00th=[ 89], 5.00th=[ 94], 10.00th=[ 96], 20.00th=[ 99],
| 30.00th=[ 101], 40.00th=[ 103], 50.00th=[ 104], 60.00th=[ 106],
| 70.00th=[ 110], 80.00th=[ 119], 90.00th=[ 161], 95.00th=[ 201],
| 99.00th=[ 516], 99.50th=[ 852], 99.90th=[ 1336], 99.95th=[ 1640],
| 99.99th=[ 7520]
cpu : usr=0.00%, sys=0.00%, ctx=0, majf=0, minf=0
IO depths : 1=200.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 rwts: total=0,25600,0,25599 short=0,0,0,0 dropped=0,0,0,0
latency : target=0, window=0, percentile=100.00%, depth=1
Run status group 0 (all jobs):
WRITE: bw=10.3MiB/s (10.8MB/s), 10.3MiB/s-10.3MiB/s (10.8MB/s-10.8MB/s), io=100MiB (105MB), run=9713-9713msec