Sziasztok,
Egy olyan problémába ütköztem, hogy a virtuális gépen belül a 4k random write sync IO kifejezetten lassú.
Ez ott okoz számomra nagyobb problémát, hogy a VM-en belül egy etcd munkálkodna, viszont az kifejezetten nem szereti a lassú fsync-et.
A stack (és hozzá minimál leírás):
- Fedora CoreOS VM - XFS root
- QEMU+KVM virtualizáció raw image-el (alapértelmezett cache és io beállítások)
- CentOS 7 - dom0 - ZFS RAIDZ2 az imagek alatt
ZFS esetén nincs SLOG és L2ARC (előre szólok kezdő ZFS-es vagyok, nem én menedzselem, ami infót hirtelen összetudtam róla gyűjteni és hasznosnak gondoltam, azt írom, de bármilyen plusz információ kell, akkor megpróbálom kinyerni + tanulni mellé :)).
Amit próbáltam:
- iothread hozzáadása
- cache writethrough és none beállítások
- io = native és cache = none beállítás
Sajnos egyik se hozott érdemi változást, így a segítségeteket szeretném kérni, hogy merre lenne érdemes elindulni, mit lenne jó kipróbálni, hogy a sync time lecsökkenjen (az IOPS meg felkusszanjon emiatt, mint kellemes mellékhatás :)), és ne vesszen el annyi valahol a QEMU+Virtio környékén.
Néztem fio-val és ioping-el egyaránt.
A használt ioping parancs, és hozzá kimenet:
ioping -i 0 -w 3 -W -Y .
dom0:
# ioping -i 0 -q -w 3 -W -Y .
--- . (zfs storage/) ioping statistics ---
160.8 k requests completed in 2.70 s, 628.0 MiB written, 59.5 k iops, 232.3 MiB/s
generated 160.8 k requests in 3.02 s, 628.0 MiB, 53.3 k iops, 208.2 MiB/s
min/avg/max/mdev = 6.38 us / 16.8 us / 91.8 ms / 507.8 us
VM:
# ioping -q -i 0 -w 3 -W -Y .
--- . (xfs /dev/vda4 19.5 GiB) ioping statistics ---
45 requests completed in 3.50 s, 180 KiB written, 12 iops, 51.4 KiB/s
generated 46 requests in 3.52 s, 184 KiB, 13 iops, 52.2 KiB/s
min/avg/max/mdev = 17.0 ms / 77.8 ms / 728.5 ms / 158.4 ms
Hozzászólások
ioping -i 0 -w 3 -W -Y .
--- . (zfs rpool/ROOT/pve-1) ioping statistics ---
46.5 k requests completed in 550.3 ms, 181.6 MiB written, 84.5 k iops, 330.0 MiB/s
generated 46.5 k requests in 3.02 s, 181.6 MiB, 15.4 k iops, 60.1 MiB/s
min/avg/max/mdev = 9.81 us / 11.8 us / 93.4 us / 2.98 us
VM
--- . (ext4 /dev/sda2) ioping statistics ---
5.83 k requests completed in 2.85 s, 22.8 MiB written, 2.05 k iops, 8.00 MiB/s
generated 5.83 k requests in 3.00 s, 22.8 MiB, 1.94 k iops, 7.60 MiB/s
min/avg/max/mdev = 321.6 us / 488.4 us / 4.81 ms / 232.8 us
slog: 1 db ssd kingston 256
https://blog.claryel.hu
Blokkméret, ashift, recordsize, etc talán?
https://jrs-s.net/2019/04/03/on-zfs-recordsize/
ÉS milyen lemezek , ssd , hdd ?
A 232.3 MiB/s soknak tűnik szinkron irásnak, ez már optane ssd lenne. (iopinget nem ismerem, ez valami cach-elt írás lehet inkább.).
Hagyományos hdd sync irás 4K random az úgy 350 KB/sec , az 50 a VM-ben elképzelhető.
fioval ezt használom "gyors" tesztelésre:
fio --name=4kteszt --filename=./tesztfile1 --size=100M --bs=4k --iodepth=1 --rw=randwrite --randrepeat=1 --sync=1 --fsync=1
https://blog.claryel.hu
fio-val , ugyanazon a gépen - csak a ZFS:
1 db 3 TB-os HDD :
NAME STATE READ WRITE CKSUM
TOS27 ONLINE 0 0 0
sde ONLINE 0 0 0
TOS27# fio --name=ssdtest --filename=./testfile1 --size=100M --bs=4k --iodepth=1 --rw=randwrite --randrepeat=1 --sync=1 --fsync=1 |grep WRITE
WRITE: bw=432KiB/s (442kB/s), 432KiB/s-432KiB/s (442kB/s-442kB/s), io=100MiB (105MB), run=237268-237268msec
RAIDZ2 , 2db 3TB-os HDD +slog ssd:
T3 ONLINE 0 0 0
mirror-0 ONLINE 0 0 0
sdc ONLINE 0 0 0
sdd ONLINE 0 0 0
logs
sdf ONLINE 0 0 0
T3# fio --name=ssdtest --filename=./testfile1 --size=100M --bs=4k --iodepth=1 --rw=randwrite --randrepeat=1 --sync=1 --fsync=1 |grep WRITE
WRITE: bw=21.5MiB/s (22.5MB/s), 21.5MiB/s-21.5MiB/s (22.5MB/s-22.5MB/s), io=100MiB (105MB), run=4656-4656msec
RAIDZ2 2db ssd:
NAME STATE READ WRITE CKSUM
rpool ONLINE 0 0 0
mirror-0 ONLINE 0 0 0
ata-INTEL_SSDSC2BA400G3_BTTV333501BR400HGN-part3 ONLINE 0 0 0
ata-INTEL_SSDSC2BA400G3_BTTV334200JY400HGN-part3 ONLINE 0 0 0
/# fio --name=ssdtest --filename=./testfile1 --size=100M --bs=4k --iodepth=1 --rw=randwrite --randrepeat=1 --sync=1 --fsync=1 |grep WRITE
WRITE: bw=12.7MiB/s (13.3MB/s), 12.7MiB/s-12.7MiB/s (13.3MB/s-13.3MB/s), io=100MiB (105MB), run=7862-7862msec
SLOG ssd sokat javít:
SSD sebességek 4k sync random írás:
OPTANE ssd-k: 230 MB/s vagy több
DC PLP : (power lost protection) ssdk: 60-80 MB sec
Asztali SSD-k (Samsung EVO, PRO, Nvme stb) 2-5 Mb/sec
https://blog.claryel.hu
Próbáltál közvetlen hardver hozzáférést adni az SSD-hez? Amennyiben van lehetőséged passthrough -ra.