Multiple (20+) simultaneous HD streams

Martinus2000

Cadet
Joined
Jun 14, 2019
Messages
3
Is it possible to build a FreeNAS-based server that would support streaming video in HD quality to at least 20 people?

If so, what would the hardware requirements be? Would I be better off building the PC myself (which I'd be comfortable with), or use on of the ready-made packages, such as the FreeServe 1U?

Thanks for your help to this FreeNas newbie.
 

sretalla

Powered by Neutrality
Moderator
Joined
Jan 1, 2016
Messages
9,700
What do you consider HD quality? Broadcast TS? (20Mbits/second) or is 720p (3Mbits) sufficient?

Do you assume that all files and players are ready for direct streaming? or is your media (and players) mixed and hence requiring transcoding (heavy on CPU)?

Where are the people? locally on your network (cabled/wifi?) or over the Internet?

As you can perhaps tell from my questions, it will be heavily dependent on bandwidth, content and cost (how much you're prepared to pay for hardware and Internet connection perhaps).

Standard hardware (probably not 1U) should be able to handle streams (without transcode) with no issue if you have the right bandwidth and properly designed pools to deliver the needed I/O. SSD pools may be better suited to the use case if cost isn't a concern.
 

Martinus2000

Cadet
Joined
Jun 14, 2019
Messages
3
Thanks. As far as I understand Netflix' HD is 5 Mbps, and that was the number I was working with.

All files would be pre-encoded for direct streaming.

People would be only on the local network cable/wifi.
 

sretalla

Powered by Neutrality
Moderator
Joined
Jan 1, 2016
Messages
9,700
All files would be pre-encoded for direct streaming.

People would be only on the local network cable/wifi.
In that case, it's a simple question of I/Os, so a pool with a good number of mirrored pairs (at least 4), a good amount of RAM and some L2ARC on SSD could get you to the desired result. CPU isn't very important in this use case, so whatever comes in the package you buy should be fine (4+cores).

You could also consider running a striped pool if you have the content saved elsewhere and don't care too much about downtime if a disk fails.
 

Jailer

Not strong, but bad
Joined
Sep 12, 2014
Messages
4,977
All files would be pre-encoded for direct streaming.
That would likely only be the case if you control all the client devices as well. If you're using Plex or something similar it's the client that determines whether it's direct streamed or transcoded.
 

Martinus2000

Cadet
Joined
Jun 14, 2019
Messages
3
Something new to learn every day...

So - to serve 20 clients, using Plex, what sort of CPU/Memory would I need to support that?

And how scaleable would that be, say at peaks 30 or 40?

Again, thanks for all your help, much apprechiated.
 

Chris Moore

Hall of Famer
Joined
May 2, 2015
Messages
10,079
And how scaleable would that be, say at peaks 30 or 40?
You would need a 10Gb connection from the server to the switch and clients could connect on 1Gb.
You would want to have eight to ten vdevs to ensure there was enough IO bandwidth to the pool. You might be able to manage with less, but it is better to have excess capacity than to have too little.
I would suggest a server like this:
https://www.ebay.com/itm/Supermicro-4U-SAS2-Storage-2x-E5-2630Lv2-16GB-IT-MODE-Rails/202704752979
with the addition of a 10Gb network interface and a 10Gb switch to handle the IO between the server and clients. Do you need a suggestion on switch gear?
How much storage capacity do you need?
 

Jailer

Not strong, but bad
Joined
Sep 12, 2014
Messages
4,977
So - to serve 20 clients, using Plex, what sort of CPU/Memory would I need to support that?
It depends entirely on what the clients are that are streaming. If they require transcoding then the system requirements go up dramatically. If they all support direct play then the requirements go down dramatically. Unless you know what each and every client is there's no way anyone here or on the plex forum can answer that question.
 

sretalla

Powered by Neutrality
Moderator
Joined
Jan 1, 2016
Messages
9,700
So - to serve 20 clients, using Plex, what sort of CPU/Memory would I need to support that?
As much RAM as you can manage in order to smooth out the multiple I/O streams. CPU should be sufficient to support Plex or whatever you plan to use for streaming (emby or whatever), but with properly encoded files and the right client configuration, I don't expect high CPU load for a 4 or 8 core CPU.

You'll need to do some testing up-front to convince yourself that it will all work well once you have the hardware.
 

Chris Moore

Hall of Famer
Joined
May 2, 2015
Messages
10,079
And how scaleable would that be, say at peaks 30 or 40?
If we guess that each stream would be around 5MB/s, 40 times that would be 200MB/s and that is faster than a 1Gb network interface, hence the reason for the 10Gb network suggestion, but this level of performance is well within the performance envelope of the very economical server that I suggested. To be sure you have enough random IO performance for 40 different videos to play, I would suggest that you use mirror vdevs and a good number of them. It is not the capability of the server but the limitation of mechanical disks that will create problems for you. A single stream is a sequential read and easy to do, but having many different streams becomes random IO because each stream needs the next chunk of data from a different location in the pool.
 
Top