PDA

View Full Version : Selecting hardware for new Mezzmo server- support for multiple threads



milosz
05-30-2016, 05:54 PM
How well does Mezzmo make use of multiple cores?

I have a Xeon E5-2670 v3 box I could use for Mezzmo- this is 12 cores with two threads each, for 24 threads; the CPU runs at 2.3 GHz. It would be running Windows 7 / 64 with 16 GB of RAM. This CPU has all the latest SSE and AVX instructions: MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2, FMA3, F16C

The alternative would be to use an i7-920 running at 3.8 GHz. This has four cores with hyperthreading, so can run 8 threads. It has support for MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2 instructions sets.

If Mezzmo would make use of many threads running on multiple cores, the Xeon would be the better choice, generally speaking. If Mezzmo is just going to use a few threads, then the faster i7-920 would be the better choice.

Typically, my current Mezzmo server (Core 2 Quad 9950 2.8 GHz, 8 GB RAM) is transcoding-on-the-fly a 480i video and serving it to one device; occasionally there are two devices connected and so transcoding and serving of two 480i video will be taking place.

I know it's hard to predict performance, there are so many variables. I guess what I am asking is, what helps Mezzmo more- more threads or faster raw CPU clock speed?

Thanks

Paul
05-31-2016, 10:58 AM
In your above scenario, there is no clear winner since both CPUs offer a nice solution. I'd probably go with the Xeon, but the i7 would also work very well - for different reasons.

Mezzmo is multi-threaded by design so will take advantage of a CPU's cores/threads - especially when adding your files, collecting metadata, processing active playlists and maintaining your library. However, most heavy CPU usage occurs when transcoding video files. Mezzmo uses ffmpeg.exe for audio/video transcoding and ffmpeg does have some decoders/encoders that have multi-threaded processing. So for those codecs, a multi-threaded CPU is advantageous. But for the other codecs, a faster CPU is a better choice. You can check the FFmpeg forums to read more about their CPU support.

Note: Mezzmo v5.0 now has Intel Quick Sync hardware encoding support - which can provide excellent transcoding speeds (which can really improve your transcoding on-the-fly user experience). Check your CPUs for Quick Sync support as this may affect your decision.

milosz
05-31-2016, 05:48 PM
That's very interesting. So, instead of re-purposing either the i7-920 box or the Xeon E5-2670 v3 box, I will use an i7-4790k machine, as neither the old i7-920 or the Xeon E5-2670 v3 has the Quick Sync support. Hardware dedicated to transcoding is always better than more cores which may be trying to do software transcoding.

The i7-4790k is also a very fast chip, running stock at up to 4.4 GHz. It has an 8 MB L3 cache and can run 8 threads. Doesn't produce TOO much heat, either, you don't need a giant cooler for it. So I would think a machine based on i7-4790k would be a good Mezzmo server.

Interestingly, Intel doesn't include Quick Sync on any CPUs with more than 4 cores, and does not include it on any multi-cpu capable Xeons.

milosz
05-31-2016, 06:35 PM
http://www.anandtech.com/show/10361/intel-announces-xeon-e3-1500-v5-iris-pro-and-edram-for-streaming-video

milosz
06-02-2016, 08:46 AM
QuickSync VS CUDA

Interesting to read in various ffmpeg fora about Intel Quick Sync vs. Nvidia CUDA support. ffmpeg can do decoding & encoding using Intel Quick Sync hardware on Windows platforms, but not filtering; ffmpeg can do filtering using Nvidia CUDA hardware but not decoding / encoding. See https://trac.ffmpeg.org/wiki/HWAccelIntro

So, it makes sense to use an Intel CPU with Quick Sync on a Mezzmo box, because the heavy lifting in Mezzmo is transcoding, not filtering. Mezzmo about is serving DLNA devices streams in formats that they can display, lots of transcoding work is involved. Filtering in Mezzmo- not so much. Seems like filtering would be more common in a CGI application like Adobe AfterEffects, where CUDA support is useful. But for Mezzmo, because it supports ffmpeg transcoding, Quick Sync and not CUDA is the way to improve transcoding performance.

Paul
06-02-2016, 10:06 AM
Good analysis. Thanks for sharing this.

milosz
06-04-2016, 07:51 AM
Best CPU for Mezzmo Server (June 2016)

Looking closely at CPU specs, I found that the Xeon E3-1285 v3 has a "maximum graphics dynamic frequency" of 1.3 GHz while the i7-4790K has a "maximum graphics dynamic frequency" of 1.25 GHz. I suspect that the XEON E3-1285 V3 would be a good choice for a Mezzmo media server, MIGHT be ever so slightly faster on transcoding. Clock speeds- i7-4790K is 4.0 GHz /boost to 4.4 GHz XEON E3-1285 v3 is 3.6 GHz boost to 4.0 GHz. So the i7-4790K has a slight edge in clock speed. Both have 4 cores and both can run 8 threads. both have 8 MB L3 caches, and both can address a max of 32 GB of RAM. The Xeon E3-1285 v3 seems to be too old to be available through the channel, and seems $$ costly on eBay, upwards of $700. The i7-4790K retails around $340, and since the extra transcoding speed of the Xeon is very slight (if any at all) then the i7-4790K is the obvious choice for a top Mezzmo server at the moment, unless you have access to a cheaper Xeon E3-1285 v3.

There are faster CPUs, and CPUs with more cores- but there are no CPUs out there that offer faster Intel Quick Sync operation, and the Quick Sync hardware is the determining factor in transcode speed as far as I can tell.

jbinkley60
06-04-2016, 11:03 AM
I have an i7-4790k chip. Here's a ripping test using ffmpeg comparing software vs. IQS support.

Software:

DVD@8mbs - 336fps
Blu-Ray@24mbs - 72fps

Intel IQS:

DVD@8mbs - 730fps
Blu-Ray@24mbs - 180fps

I would expect the Mezzmo performance differences to be similar. I am not running Mezzmo on it to do a direct comparison during transcoding.

Paul
06-04-2016, 11:45 AM
Given that Mezzmo uses ffmpeg.exe for transcoding, then Mezzmo will see the same performance gains via hardware transcoding. And, that's what we are seeing in our tests :).

milosz
06-04-2016, 03:23 PM
@jbinkley60 - thanks for posting that. It's very interesting to see these numbers.

jbinkley60
06-05-2016, 03:22 AM
Here's one other test I had done previously using a GTX 970 video card and Nvidia drivers.

CUDA 970:

DVD@8mbs - 1150fps
Blu-Ray@24mbs - 385fps

If you want to do some heavy duty transcoding, this will do the job. Mezzmo doesn't support Nvidia and I think this would be overkill but in case anyone is interested. At lower bit rates these numbers go up much higher.