-
Notifications
You must be signed in to change notification settings - Fork 71
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Hardware Requirements for a complete high performance backend #18
Comments
for sure i needing it too |
Being that this is a recently open sourced product, there may not be any documentation to share, even from the vendor. So we, the community can help fill this void for now: In my setup with a Xeon Silver 2110 Processor in the host, 3-cores assigned to the HPBE VM (separate from nextcloud VM). Each user I add to a room seems to add about 2% cpu load to the HPBE vm, each user seems to add about 1.5 mbps for their video feed, both ways. Ram usage didn't change noticeably in my testing with just a few users. This system requirements doc is pretty important, but the good news is, the HPBE app on its own is really small and lightweight, the big resource that will be used quickly though is Bandwidth. And that's easy to calculate too, basically 1.5mbps per user both directions. Also the HPBE app itself is essential just an API interface for Nextcloud to use Janus and the VideoRoom SFU functionality that Janus provides. So most of the system requirements will be related to the Janus app/daemon. And that question too has somewhat limited info, but a good place to start is the FAQ entry on system performance of the Janus system that supports the WebRTC and A/V aspects of the HPBE: |
The signaling server itself requires very little resources (CPU / bandwidth) as it's only forwarding the messages between clients. In most cases, the environment will be network-bound for streaming the audio/video/screensharing between the clients. The maximum bandwidth per stream can be configured in nextcloud-spreed-signaling/server.conf.in Line 86 in 3d73ab4
nextcloud-spreed-signaling/server.conf.in Line 90 in 3d73ab4
As @peacepenguin mentioned above, most of the requirements will be for running Janus. |
"What I did understand is that it should be separated from the normal NC since same ports will be used." Well... the part you say you understood, you apparently did not understand correctly. I think I read somewhere that it is recommended to run it on a separate server, but it is by no means required. Certainly not because of port conflicts. The only user facing ports that could be in conflict are 80/443, but your web server can handle this conflict using the domain name (assign a separate domain name for signaling). Backend services can, of course, be assigned available port numbers as needed. |
@fancycode |
@jakobroehrl yes, these settings apply to all streams of the signaling server instance. Changing the stream per connection is more a client-side thing, you can follow nextcloud/spreed#5535 for the implementation of simulcast in Nextcloud Talk which will allow exactly this: let the client decide which quality / bandwidth it wants to subscribe. |
@fancycode Last question: The last conference was bad, so I want to reduce the bitrate for the next try. |
Each client that publishes needs the configured bandwidth as upstream and N times the number of streams he needs to subscribe as downstream, i.e. in a meeting with 5 users where everybody publishes audio/video with a maximum of 1 MBit/s, everybody needs 1 MBit/s upstream and 4 MBit/s downstream. The server will need 5 MBit/s downstream and 20 MBit/s upstream. Without the HPB, each client would need 4 MBit/s upstream and 4 MBit/s downstream (+ more CPU requirements to perform the 4 individual video encodings). |
Would it really do 4 individual video encodings? That seems like a very poor design -- it should just do one encoding and send it to 4 recipients. |
Well, that's how peer-to-peer works. A client might have different connections to the different other participants, so it makes sense to potentially send different streams to the different other peers. |
Thanks, that was very helpful. |
With the HPB this is what already happens. A publisher only sends the stream to the server once and each subscriber receives it from there. The server doesn't mix the streams into one combined video, so subscribing has to happen for each stream. Streams are only sent to each participant individually if no HPB is used. |
After getting the news that the HPB got open sourced and is open to use for everyone (thank you!) I'm considering a installation for the local student representation (to start things ;-) ).
Unfortunaly - I found no information at all regarding the server requirements and number of servers needed. What I did understand is that it should be separated from the normal NC since same ports will be used.
I would propose to update the readme regarding:
The text was updated successfully, but these errors were encountered: