An update for future me and anone else interested in optane Pmem. pve-qemu is compiled with --enable-libpmem as default.
if namespaces are fsdax or dax, 2M aligned and passed to VM aligned to 128m native performance can be achived.
i followed
https://nvdimm.docs.kernel.org/2mib_fs_dax.html
Rocky linux ( and i assume redhat) can be booted from a passed through nvdimm if the passed through namespace type is changed to sector. may work with type Raw also as this also was detected in the rocky linux GUI installer. i chose to put the Boot and EFI partitions on a regualr qemu disk as i couldnt get OVMF to boot the nvdimm directly.
Benchmarks from FIO using this bash script:
https://gist.github.com/dullage/7e7f7669ade208885314f83b1b3d6999
Real hardware:
hpe dl380 gen10
xeon gold 6230
2x 256g optane pmem dcpmm 100 interleaved, app direct.
fdax namespace with sectorsize 512 xfs mounted with dax
Sequential Read: 2929MB/s IOPS=11
Sequential Write: 3359MB/s IOPS=13
512KB Read: 3333MB/s IOPS=6666
512KB Write: 3798MB/s IOPS=7596
Sequential Q32T1 Read: 2929MB/s IOPS=366
Sequential Q32T1 Write: 3386MB/s IOPS=423
4KB Read: 1534MB/s IOPS=392901
4KB Write: 1462MB/s IOPS=374491
4KB Q32T1 Read: 1527MB/s IOPS=391026
4KB Q32T1 Write: 1064MB/s IOPS=272385
4KB Q8T8 Read: 9306MB/s IOPS=2382414
4KB Q8T8 Write: 1350MB/s IOPS=345745
fdax namespace passed to fedora VM with Dax mount
Sequential Read: 548MB/s IOPS=4
Sequential Write: 219MB/s IOPS=1
512KB Read: 891MB/s IOPS=1782
512KB Write: 217MB/s IOPS=434
Sequential Q32T1 Read: 1178MB/s IOPS=294
Sequential Q32T1 Write: 222MB/s IOPS=55
4KB Read: 79MB/s IOPS=20467
4KB Write: 84MB/s IOPS=21504
4KB Q32T1 Read: 230MB/s IOPS=58977
4KB Q32T1 Write: 149MB/s IOPS=38235
4KB Q8T8 Read: 697MB/s IOPS=178685
4KB Q8T8 Write: 174MB/s IOPS=44784
fdax namespace passed to fedora VM with Dax mount 2M aligned
Sequential Read: 2723MB/s IOPS=10
Sequential Write: 3192MB/s IOPS=12
512KB Read: 3820MB/s IOPS=7641
512KB Write: 3565MB/s IOPS=7130
Sequential Q32T1 Read: 2770MB/s IOPS=346
Sequential Q32T1 Write: 3176MB/s IOPS=397
4KB Read: 1534MB/s IOPS=392901
4KB Write: 1348MB/s IOPS=345289
4KB Q32T1 Read: 1557MB/s IOPS=398637
4KB Q32T1 Write: 975MB/s IOPS=249756
4KB Q8T8 Read: 9433MB/s IOPS=2414965
4KB Q8T8 Write: 1268MB/s IOPS=324658
devdax namespace passed to fedora VM with Dax mount 2M aligned
Sequential Read: 2869MB/s IOPS=11
Sequential Write: 3224MB/s IOPS=12
512KB Read: 3798MB/s IOPS=7596
512KB Write: 3595MB/s IOPS=7191
Sequential Q32T1 Read: 2949MB/s IOPS=368
Sequential Q32T1 Write: 3240MB/s IOPS=405
4KB Read: 1559MB/s IOPS=399123
4KB Write: 1551MB/s IOPS=397187
4KB Q32T1 Read: 1568MB/s IOPS=401568
4KB Q32T1 Write: 1012MB/s IOPS=259240
4KB Q8T8 Read: 9366MB/s IOPS=2397834
4KB Q8T8 Write: 1326MB/s IOPS=339499
devdax namespace passed to Rocky VM with sector namespace. rocky installed on root with EFI and boot on qemu disk
Sequential Read: 2869MB/s IOPS=11
Sequential Write: 925MB/s IOPS=3
512KB Read: 2863MB/s IOPS=5727
512KB Write: 930MB/s IOPS=1861
Sequential Q32T1 Read: 2929MB/s IOPS=366
Sequential Q32T1 Write: 928MB/s IOPS=116
4KB Read: 1025MB/s IOPS=262564
4KB Write: 663MB/s IOPS=169870
4KB Q32T1 Read: 1207MB/s IOPS=309132
4KB Q32T1 Write: 655MB/s IOPS=167782
4KB Q8T8 Read: 7107MB/s IOPS=1819621
4KB Q8T8 Write: 3130MB/s IOPS=801293