Video Editing in a Hyper-V VM

posted in: IT, Uncategorized | 0

A while ago I switched over to running a Surface Pro 2 (SP2) as my Desktop/Tablet/Laptop replacement.   So far so good.   But I knew there would be some applications and things I do now and then that would stress even the beefy SP2 I have (Core i5 4300U, 8GB of ram, and 256GB SSD).

The SP2 works great for photography work with Lightroom, and Photoshop, but once you step into the world of video work, memory and CPU requirements go through the roof.

The problem:

A couple times a year I indulge my hobby of video editing, and composition of videos I shoot.   The tools I use are Adobe Premiere, Adobe After Effects, and tools like Dashware, and others.   Premiere and After Effects require massive memory for any large project.

I started working on compiling and editing video from my motorcycle trip this last Sept, and I immediately brought my SP2 to its knees. The project I am working on would do better with 16 – 24GB of ram at this point.   So I had to find a way to do this without being limited by what my SP2 can do.

The solution:

I posted an article a couple months ago about an upgrade I did on my Hyper-V host to increase its CPU speed with a pair of Xeon X5650 6 core processors.   The host itself already had 48GB of ram in it.

So I figure what if I use some of the space I am not using on the host to run a video editing desktop in it?  Would it work?     The video demands are pretty high and doing this all over RDP to a VM would be challenging I thought, but I figure I would give it a try.

Keep in mind this host does not have GPU acceleration in it, and RemoteFX is not being used (yet).

NUMA spanning is disabled on the host to keep performance consistent.

The VM:

image

So I setup a standard Hyper-V 2012 R2 Generation 1 VM running Windows 8.1 Pro x64.  I gave it 16GB of memory (leaving some for others on the NUMA node its assigned), and 12 cores (Max for the NUMA node it is on).

I placed the VHDX for the VM on a USB3.0 connected SSD to keep performance snappy, even in a dynamic disk VHDX.   The only things installed on the VM are the tools for video editing and composition.  (Adobe Premiere/After Effects CC 2014, Photoshop, and the Adobe Media Encoder.)

All data for the project is hosted on another VM file server on separate disk arrays.  (About 400GB of video and other media just for this project)  Being that they both share a virtual switch, bandwidth between the file server and the VM is able to hit 10Gbit if it needs.

RDP:

To access the VM I am using normal Windows 8.1 Remote Desktop client, and running it at full screen (1920×1200) on my Surface Pro 2.

I left most settings default on the connection including the 32bit color.  I forced the audio to play on the connecting machine, and set clipboard mirroring.   

How does It work?

 Without GPU acceleration, it works better than I thought.   The tools use all 16GB of memory allocated when doing any of the rendering or loading media files.   The CPU gets fully used doing rendering and results in a render time roughly 6x faster than my Surface Pro 2 could (in some cases more than 10x due to the massive cache, and higher speeds of the Xeon).

If I throw a CUDA enabled video card into the host and enable RemoteFX, I am sure this will jump even further.

From a RDP standpoint, there is some lag from time to time, especially when there is lots of video on the screen or full screen playback happening.  This makes audio/video syncing hit/miss.   I’ve found ways to work around it so far.   The audio relaying over RDP works very good and is reasonably on time and precise.

Certain features of After Effects demand large memory (1+GB per core) to use the CPU fully.   I may still give the VM more ram to help AE move faster.

One of the most unexpected perks, is I can fire up a render or calculation that will take an hour, and close the RDP connection and do what ever else I want and not impact my SP2 at all.

The bad?  Power use.   My host idles at about 300watt of power being used.   Doing these renders and that spikes to almost 500w.   This host is not light on the power usage or heat it gives off when running this.  the CPU itself spikes to about 72C when rendering!

So yeah… doing probably one of the most demanding video type operations over RDP to a standard Hyper-V 2012 R2 host, and having it work nearly perfect is a nice surprise!

Could you do this in Azure or other Cloud options?

This project got me thinking:  While VDI is not supported in Azure (but Windows 8.1 VMs run just fine), and currently there is no RemoteFX capabilities up there… soon I would bet there will be.     If you had a couple week project, and you needed massive memory and lots of CPU, and could do everything via RDP then this could be an option.  The biggest hurdle and delay would be getting the data up there, which you can mail MS a disk for $80 of any size for them to populate storage for you.   This could be far cheaper than buying a large server or desktop just for these kinds of “now and then” operations.

Next steps for me?

I am going to look for a cheaper CUDA enabled RemoteFX compatible video card to throw into the host… this will spike power usage even more, but could provide a huge performance increase.   I also want to upgrade the host to low voltage ram (~50watt average power savings) and 96GB of it… but that is down the road, as it could cost ~ $1000 for that upgrade and I have a house to buy coming up.

Comments are closed.