On Mon, 21 Sep 2015 12:17:53 -0400 "Kevin O'Connor" firstname.lastname@example.org wrote:
On Mon, Sep 21, 2015 at 03:14:04PM +0200, Marc Marí wrote:
Implement support for booting from a PMEM region compatible with NVDIMM and NFIT specifications.
The current implementation is still slow. When running a Linux guest on top of QEMU in x86:
Using actual -kernel option: QEMU startup time: .080 BIOS startup time: .060 Kernel setup time: .590 Total time: .730
Using -kernel option and fw_cfg DMA patch: QEMU startup time: .080 BIOS startup time: .039 Kernel setup time: .002 Total time: .121
Using this patch series and adding the vmlinuz as a NVDIMM device: QEMU startup time: .080 BIOS startup time: .065 Kernel setup time: .015 Total time: .160
Thanks Marc - very interesting!
Do you think NVDIMM support will ultimately be faster than DMA or are there other advantages to using NVDIMMs?
I've been experimenting with different approaches to improve speed, as you've already seen. I still don't know which will be faster.
The NVDIMM code is missing some improvements. I think it will be around the same speed as fw_cfg DMA. Unless I missed a big improvement.
But the advantage of NVDIMMs is flexibility. It is just a memory region. So you can put there anything that you want to access fast. It may be a vmlinuz, an initramfs, a normal file, or whatever. Maybe combining both fw_cfg DMA and NVDIMM can give good times for booting a minimal system up to the userspace.
At the moment, this NVDIMM code is just experimental and for testing to see its performance. But I tend to focus on the tree I have in front of me instead of the forest, so it's better if I share this code and get a few comments on it before getting into conclusions.
(When I say NVDIMM I should say NVDIMM PMEM or DAX. But as there's still no block mode in QEMU, it doesn't really matter).