Storage is both HW and software layer.
So the next question is what you use as the software layer at your storage?
I made this test on a Thretripper what nearly the same as you Epyc.
Intel Optane Memory 32GB direct attached on a VM no cache.
fio --filename=/dev/sdb --bs=4K --rw=write --name=test --direct=1 --sync=1 --ioengine=libaio --size=27G --numjobs=1
The result for a virtio-scsi-pci is avg 10412 IOPS
Run status group 0 (all jobs):
WRITE: io=27648MB, aggrb=41648KB/s, minb=41648KB/s, maxb=41648KB/s, mint=679768msec, maxt=679768msec
The result for a virtio-blk bus is avg 10819 IOPS
WRITE: io=27648MB, aggrb=43279KB/s, minb=43279KB/s, maxb=43279KB/s, mint=654159msec, maxt=654159msec
The raw speed on the host is avg 47087 IOPS
WRITE: io=5120.0MB, aggrb=188348KB/s, minb=188348KB/s, maxb=188348KB/s, mint=27836msec, maxt=27836msec