Determining Multi-Core Usage

Hi all,

Seeing as this is a question more about the technical side; I hope this is the right place. To sum up my story: I am president of a local amateur radio club who like many needed to go virtual for business meetings. I refuse to use Zoom so I instead setup a Jitsi on some spare hardware. This worked fine until 29 people showed up and even without anyone sending video; the server was way too overloaded to keep packets going out. It was a disaster.

In in the month between that disaster and the next meeting I went ahead and purchased a second-hand server for the task. Dual hex-core Xeons @ 2.4ghz with 32gb of ram; it’s older hardware but it’s still got the power. I decided to virtualize everything by running Xen bare metal with XCP-ng. The VM I’m using for Jitsi is Ubuntu 18.04 with 10vCPUs and 8GB ram. It’s hooked up to a gigabit connection.

Well the results for this months meeting were absolutely fantastic; in fact server wise it could not have worked more perfectly. There no more latency issues, a bunch of people ran video the entire time, people weren’t getting randomly dropped. There was obviously more than enough power to handle the 22 people that showed up. Of course I started doing the post checks to see just how much this stressed the system.

So this is where my question actually comes up; does Jitsi try to balance its load among all available processors?

When I looked back at XCP-ng Center’s CPU usage; it seemed to indicate all 10 vCPUs held at 30% usage; of course this chart doesn’t have a whole lot of visual resolution, but it seemed to indicate all 10 cores stayed pretty much evenly loaded.

The main thing I’m trying to do is figure out if Jitsi was in fact loading CPUs evenly so I know how many processors I have to actually assign to the VM. Was it really only needing just 30% of one core and just bouncing it between everything so rapidly it can’t show? Was it actually using 30% of all 10 vCPUs and dropping it back to five will result in 5 vCPUs being loaded at 60%?

Honestly, in the end it’s not important. The Jitsi only sees use for about half an hour once a month; so even if I leave it with 10vCPUs assigned the machine is sitting idle for about 729 hours of the month…so I’m not too worried about getting into an over-provisioned situation. I’m mostly just curious as to how the loading works so I can estimate not only the “bare minimum” number of processors I need to assign…but some idea of how many more people can show up before I start having issues.


look at the system load average

if you have 10 cores then your system can work ok up to 10 in load
with 5 cores your system work ok up to 5 in load and so on

l as soon as the load is above 1 then you know your workload is higher than one single CPU core to handle.

For large conferences my experience is that you need to make sure to trim down the client side workload, it is the client side web-browser that get overloaded, remove all bells and whistles from the web-user-interface.

Sadly I did not log the system load average and I was too busy running the meeting to look over at a shell; so I guess I will have to wait until next month and keep an eye on them or try to round up 50 friends to come and beat on it.

The client-side side stuff was what I was going to look in to next. The people that did have problems seemed to have client problems; so I’ll cut that down for the next one.