holtwick / briefing

🔮 Secure direct video group chat
https://brie.fi/ng
GNU Affero General Public License v3.0
1.44k stars 241 forks source link

Performance testing? #63

Open subhendukundu opened 4 years ago

subhendukundu commented 4 years ago

I am amazed with the video quality tho :) It was working with low bandwidth as well. Now, did we do any performance testing? I mean how much bandwidth it will consume on an average? Can we control the quality, so that bandwidth can differ? Also importantly, How are we scaling it up at the moment? How many people can join a room? How much CPU does it need to run? I can help with Kubernetes if not done already. :)

holtwick commented 4 years ago

@subhendukundu any help would be very welcome! Thanks for your offer.

Initially I did some optimizations by modifying the SDP info. https://github.com/holtwick/briefing/blob/master/app/src/logic/connection.js#L87 But it looks like the browsers are negotiating perfect values anyway themselves.

The maximum user count depends on bandwith and CPU. I guess 12 is a maximum value. If audio only probably more.

subhendukundu commented 4 years ago

Gotcha! So before I start playing around with the Kubernetes with this.

  1. What's the current size of the VM? So that I know how much it's using for 12.
  2. To make 50 or more people in the same room, TURN need to scale? or the server it self?
holtwick commented 4 years ago

Sorry for the late answer. Well Briefing has no central server besides signaling and STUN/TURN. The performance therefore would needed to be testes for the client side web app. TURN should only be required if no direct p2p connection is possible, which is not the case most of the time.

subhendukundu commented 4 years ago

Gotcha! I can try to put a puppeteer test case with some load testing using different videoes with different quality trying to mock the real video call. I will see if I can pull it off. Also, I think we should put together a design architectural diagram. It should answer a few fundamentals questions for example,

  1. Why we don't SFU, and making it totally secure (I did see the read have some part of it)?
  2. If we don't need STUN/TURN, how is performance, after testing it out?

Also, basic comparison with standard video calls vs briefing calls, in terms of

This would clear the picture why briefing is amazing 😊. Please let me your thoughts, also how we can proceed, I will contribute.

holtwick commented 4 years ago

Good idea. I started some documentation in the wiki: https://github.com/holtwick/briefing/wiki

subhendukundu commented 4 years ago

Sure! I will take a look and try to put some docs where I think I can contribute. Can you please add up slack and projects planning on the github? So that anyone feels they can contribute then can see the open items planned for next release. Also, fro adding up apps, I am writing my flutter apps, I will try to create a pull request to this for a basic example or with a different design to this repo.