On 8/31/19 7:33 PM, Seema Pandit wrote:
Hi Michal,
Thank you for the reply.
I was having issues compiling qemu code on fedora29. So instead of dropping
prealloc in virsh, tried adding prealloc=yes in qemu command line.
prealloc=yes works. It does not lead to using more system memory when using
DAX.
+Dan
Here are the steps:
ndctl create-namespace -t pmem -m fsdax --align=4k -s 400G
mkfs.ext4 /dev/pmem0
mount -o dax /dev/pmem0 /mnt/pmem0
dd if=/dev/zero of=/mnt/pmem0/file1 bs=4k count=104857600
[root@system-name]# dd if=/dev/zero of=/mnt/pmem0/file1 bs=4k
count=104857600
dd: error writing '/mnt/pmem0/file1': No space left on device
101313980+0 records in
101313979+0 records out
414982057984 bytes (415 GB, 386 GiB) copied, 946.495 s, 438 MB/s
Slightly smaller file is created than asked.
[root@system-name]# du -sh
387G .
sample qemu command line which works:
qemu-system-x86_64 \
-name test \
-drive
file=/var/lib/libvirt/images/test-ad.qcow2,format=qcow2,index=0,media=disk
\ -m 2G,slots=4,maxmem=428G \ -smp 2 \ -machine pc,accel=kvm,nvdimm=on \
-enable-kvm \ -object
memory-backend-file,id=pmem1,prealloc=yes,share=on,mem-path=/mnt/pmem0/file1,size=386G,align=4K
\ -device nvdimm,memdev=pmem1,id=nv1 \ -daemonize
Looks like the only difference to the cmd line generated by libvirt and
this one then is align=4K. To confirm that, can you share the full qemu
cmd line as generated by libvirt please?
Libvirt does not do anything special with guest memory, so this is
matter of qemu cmd line and that's why we need to see what's different,
what works and what doesn't. Then we have some lead to understand the
problem IMO.
Michal