I'm not familiar with those emulators. However I think I could help you with pmem latencies you required.
I have 2 x 8280L with 12 x 512 GB DCPMMs. Presently I use non-interleaved setup.
{
"dev":"namespace5.0",
"mode":"fsdax",
"map":"dev",
"size":"494.15 GiB (530.59 GB)",
"uuid":"20046760-5932-4047-82b0-3a6d475a461b",
"sector_size":4096,
"align":2097152,
"blockdev":"pmem5"
}
linux-tg7k:/home/anton # mount|grep pmem
/dev/pmem5 on /mnt type xfs (rw,relatime,attr2,dax,dax=always,inode64,logbufs=8,logbsize=32k,noquota)
If we are talking about standart read()/write() system calls, I think we can use fio with psync ioengine.
linux-tg7k:/home/anton # numactl -N 0 fio --filename=/mnt/file --rw=randread --bs=4k --ioengine=psync --iodepth=1 --numjobs=1 --time_based --group_reporting --name=readlatency-test-job --runtime=30
readlatency-test-job: (g=0): rw=randread, bs=(R) 4096B-4096B, (W) 4096B-4096B, (T) 4096B-4096B, ioengine=psync, iodepth=1
fio-3.27-57-gfaff8
Starting 1 process
Jobs: 1 (f=1): [r(1)][100.0%][r=1556MiB/s][r=398k IOPS][eta 00m:00s]
readlatency-test-job: (groupid=0, jobs=1): err= 0: pid=5138: Mon Aug 9 07:59:08 2021
read: IOPS=402k, BW=1571MiB/s (1647MB/s)(46.0GiB/30001msec)
clat (nsec): min=1754, max=237747, avg=2265.89, stdev=418.54
lat (nsec): min=1774, max=237769, avg=2286.27, stdev=418.94
So the average 4kb random read time is 2286ns. This is far behind my best results (should be ~540 kiops & 1.6us), but that includes pmem lat + I/O stack (optimized with "dax" xfs mount option).
However, own pmem latency is ~350ns
Please let me know if you will have any questions.
Anton