I am running some performance tests and capturing stats from JVBs and from client sessions. I am using selenium grid to orchestrate a meeting with 50 participants, with video enabled for 15 participants.
From each client session I am grouping the frame rates of inbound video streams into categories:
- 0 FPS
- Less than 5 FPS
- Between 5 and 10 FPS
- Between 10 and 15 FPS
- Over 15 FPS
The 15 participants with video enabled are each receiving the video from the 14 other video enabled participants. 15 x 14 = 210
The 35 participants with video disabled are each receiving the 15 video streams from the 15 video enabled participants. 15 x 35 = 525
The total number of video streams being sent to clients is 735
When I review the stats collected from the clients, I see a high number of the video streams in the 0FPS category.
I remote connected to one of the selenium nodes while a meeting was in progress and could see the the participants were being displayed in the tile view, with only a few of the video enabled participants being visible in the browser window. To view the other video enabled participants I would have needed to scroll down.
My question is - if video enabled participants are not visible in my browser window - will the video streams of those participants not get sent to my session.
The selenium nodes that I am running in the grid are not able to avail of any gpu acceleration for video encoding/decoding, so during meetings the cpu usage is very high.
So I am not sure if the reason for low FPS is due to the performance limitations of my selenium nodes, or if Jitsi itself is optimising the load by restricting the video frames being sent based on what is visible in a clients browser session.