Jump to content

Slow disk performance from Windows VMs


Recommended Posts

Evening all, I am setting up a new UnRAID v6 system, but have hit a problem: disk access in my VMs is crushingly slow.

 

The system is built on a Asus Z9PED8 motherboard with 32GB of RAM and two 2GHz Xeon processors, each with six cores. The system has an array of five 2Tb drives, one running parity. I have created two Windows 10 VMs, one with GPU pass thru to a AMD 7770 Radeon card and one running on VLC. Both systems are set up as per the wiki, with indexing disabled, etc. But yet both systems are crushingly slow at disk access, with the task manager showing them being pegged at 100% most of the time.

sEtNxAs.png

 

Any ideas? A couple of the disks in my array are showing a few SMART errors (I have replacements on the way), but that should not be enough to cause this...

Link to comment

Okay, after doing a bit more reading, I think you are right. I figured there would be a certain penalty for using the array, but not that it would render windows VMs pretty much unusable. That's a pain for those of us who need Windows in the mix.

 

I'm going to throw a couple of cache devices in there to see how much faster that makes them, then try the unassigned pass-through approach if that doesn't work.

 

Question: would putting the windows VM disk image on the cache drive mean that it was not mirrored on the array? I am not clear on if this image would be copied to the array as part of the caching or not. I'd be prepared to accept the trade-off if the data was mirrored to the array occasionally rather than all the time.

Link to comment

Okay, after doing a bit more reading, I think you are right. I figured there would be a certain penalty for using the array, but not that it would render windows VMs pretty much unusable. That's a pain for those of us who need Windows in the mix.

 

I'm going to throw a couple of cache devices in there to see how much faster that makes them, then try the unassigned pass-through approach if that doesn't work.

 

Question: would putting the windows VM disk image on the cache drive mean that it was not mirrored on the array? I am not clear on if this image would be copied to the array as part of the caching or not. I'd be prepared to accept the trade-off if the data was mirrored to the array occasionally rather than all the time.

You should not use your array at all for disk images when running parity. You run it as you say on the cache disk or a disk outside the array using the unassigned plug-in, but then you have to use some scripts to make it autostart if I remember correctly.

The easiest is to use the cache disk (SSD). When setting up the share for the VM disks be sure to set it at cache only or it will be moved to the array by the mover. If you want the VMs to be mirrored, you use two drives as a cache pool. The default is that all files is written to two disks in the cache pool.

Take a look in the wiki and the unraid 6 manual for info about setting up the VMs and unraid. It has a lot of good info. 

Link to comment

Okay, after doing a bit more reading, I think you are right. I figured there would be a certain penalty for using the array, but not that it would render windows VMs pretty much unusable. That's a pain for those of us who need Windows in the mix.

 

I'm going to throw a couple of cache devices in there to see how much faster that makes them, then try the unassigned pass-through approach if that doesn't work.

 

Question: would putting the windows VM disk image on the cache drive mean that it was not mirrored on the array? I am not clear on if this image would be copied to the array as part of the caching or not. I'd be prepared to accept the trade-off if the data was mirrored to the array occasionally rather than all the time.

You should not use your array at all for disk images when running parity. You run it as you say on the cache disk or a disk outside the array using the unassigned plug-in, but then you have to use some scripts to make it autostart if I remember correctly.

The easiest is to use the cache disk (SSD). When setting up the share for the VM disks be sure to set it at cache only or it will be moved to the array by the mover. If you want the VMs to be mirrored, you use two drives as a cache pool. The default is that all files is written to two disks in the cache pool.

Take a look in the wiki and the unraid 6 manual for info about setting up the VMs and unraid. It has a lot of good info.

The only correction I'd make here is that vdisks containing an OS (or other more IO intensive apps) belong on the cache, but if you want to create a vdisk on the array to store generic files or even things like games, that's probably ok. It's the random IO that is generated by an OS which causes such a bad experience when the storage for it is on the parity protected array.

Link to comment

Good stuff all, thanks. I will add a couple of cache SSDs to the system and put the image there. As an interim measure, I would like to do a pass-through of an unassigned Hard Drive to a Windows VM (some of the stuff I do is quite dependent on disk access speed). I can't find a simple how-to on this. Has anyone written one?

Link to comment

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...