Windows 10 SSD/NVME support

Discussions about using Windows guests in VirtualBox.
Post Reply
hd
Posts: 6
Joined: 11. Oct 2016, 22:13
Primary OS: MS Windows 10
VBox Version: PUEL
Guest OSses: XP, W10Pro

Windows 10 SSD/NVME support

Post by hd »

I'd like to understand the disk performance difference between host and guest machine when utilizing an NVME SSD on VB5.1.6.

Host:
Dell PowerEdge 730
Windows Server 2016 Datacenter (x64)
2x Intel Xeon E5-2667v3 8C16T
192GB RAM
128GB SSD OS Drive (where VB is installed)
1.6TB NVMe Mixed Use SSD PM1725 Express Flash HHHL (where vdi for guest resides)

Current Guest:
Windows 10 Pro (x64) - 4C8T - 16GB RAM - Guest Additions 5.1.6
Image
SSD checked under SATA controller - NVME controller does not boot (am I missing something here?):
Image


Performance of the NVME on the host (~1.5GB/s Write|~5.2GB/s Read):
Image

Performance of the NVME (where the vdi lives on the host) in the Guest OS (~1.5GB/s Write|~1.5GB/s Read):
Image

Am I missing a setting or set of drivers in the Guest that accounts for the ~3700MB/s difference between the host and the guest read speeds on this NVME?

I'm not complaining about these speeds, just wondering whether I missed something regarding NVME. I've seen some of the notes in changelog regarding controller support and compatibility, but don't see many threads with direct experience.
michaln
Oracle Corporation
Posts: 2973
Joined: 19. Dec 2007, 15:45
Primary OS: MS Windows 7
VBox Version: PUEL
Guest OSses: Any and all
Contact:

Re: Windows 10 SSD/NVME support

Post by michaln »

hd wrote:NVME controller does not boot (am I missing something here?)
Yes and no. Booting off NVMe requires EFI in the VM. Which is not currently documented anywhere. It should work with a Windows 10 guest.
scottgus1
Site Moderator
Posts: 20945
Joined: 30. Dec 2009, 20:14
Primary OS: MS Windows 10
VBox Version: PUEL
Guest OSses: Windows, Linux

Re: Windows 10 SSD/NVME support

Post by scottgus1 »

Theoretical suggestion I would try, since Virtualbox EFI apparently is experimental (manual, section 3.12):

Put a second virtual disk in your guest, as an NVME, stored on the host NVME. Boot the guest from the Sata vdi you have now but run the benchmark on the second NVME vdi.
hd
Posts: 6
Joined: 11. Oct 2016, 22:13
Primary OS: MS Windows 10
VBox Version: PUEL
Guest OSses: XP, W10Pro

Re: Windows 10 SSD/NVME support

Post by hd »

scottgus1 wrote:Theoretical suggestion I would try, since Virtualbox EFI apparently is experimental (manual, section 3.12):

Put a second virtual disk in your guest, as an NVME, stored on the host NVME. Boot the guest from the Sata vdi you have now but run the benchmark on the second NVME vdi.
Great idea! Just tried it. Initially I ran into a bunch of disk errors while transferring files to it, probably as a result of having checked "Use Host I/O Cache." As soon as I unchecked that, I was able to test with it:

NVME drive (N:) on NVME controller (SSD checked) -
Image

Marginally worse results under the NVME controller -
Image

I'll try to make EFI work while booting off the NVME controller next. Appreciate the quick feedback.
hd
Posts: 6
Joined: 11. Oct 2016, 22:13
Primary OS: MS Windows 10
VBox Version: PUEL
Guest OSses: XP, W10Pro

Re: Windows 10 SSD/NVME support

Post by hd »

After jumping through some hoops, I did manage to boot Windows 10 (1607 Build 14393.0) under an NVME controller, on the NVME drive from the host. The first thing I did was convert the partition table to GPT without data loss (using AOEMI, but I'm sure any partition manager can do this). The next step was to enable EFI in the VM settings, remove the attached storage under the SATA controller, and add an NVME controller with the same disk under it. This allowed the EFI to load, but led to a "INACCESSIBLE BOOT DEVICE" BSOD every time. After reading some threads regarding the BSOD, I tried putting the drive back under the SATA controller and just adding an additional drive under an NVME controller. This worked, and the OS booted. I initialized the secondary disk using diskmgmt.msc, and it showed up fine with no errors in Device Manager (OS drive is still under the SATA controller at this point, there is just an additional NVME controller and a test disk under it). I figured now that it has drivers/support in the OS, I'll try booting off of the NVME controller again. Restarted once more after removing the SATA controller and adding an NVME controller with the same disk, and finally it booted to the desktop with a single OS drive under an NVME controller through EFI.


Despite all this, there's no improvment in the actual performance inside of the Guest OS :(

Image

I don't know where the bottleneck is in the Guest OS with NVME, on the Windows side or on the VB support side.

/edit: If it helps anyone, here's my storage settings for the W10 Guest:
Image
jasonmicron
Posts: 1
Joined: 11. May 2011, 13:52
Primary OS: Linux other
VBox Version: OSE Fedora
Guest OSses: Windows 7

Re: Windows 10 SSD/NVME support

Post by jasonmicron »

michaln wrote:
hd wrote:NVME controller does not boot (am I missing something here?)
Yes and no. Booting off NVMe requires EFI in the VM. Which is not currently documented anywhere. It should work with a Windows 10 guest.
THANK YOU. I was pulling my hair out trying to determine why NVMe wouldn't boot to my Fedora 25 beta installation.
Post Reply