I have an Asterisk 11 server (AsteriskNOW installed without FreePBX, based on CentOS 6) running as a VM with 12 cores. The server has been updated with yum update to have the latest Asterisk and CentOS 6.6 updates.
It is currently running around 1000 simultaneous SIP-channels that are evenly spread on 200 different ConfBridge conferences. 60% of them use G.711 (SIP-trunks from ordinary phones) and 40% of them G.722 (SIP-phones).
My problem is that using htop, top or mpstat i see a single CPU core being very loaded, but not the others, like if there was a single thread using a lot of CPU. But if i change htop or top to look at threads instead of processes, then there is no single thread using more than a few % CPU.
Another strange thing is that Load Average shows very low values.
See the screenshot of htop below (PID: 2270 is the complete Asterisk process, and the asterisk PID’s below it are all the threads it consists of)
I am wondering:
[ul]Is the info about one CPU core being very loaded correct? What will happen when it reaches 100%?[/ul]
[ul]If the info is correct, why does Asterisk/CentOS not move some of the load to other CPU’s so the load is even, when you can clearly see that there is not a single thread using alot of CPU?[/ul]
[ul]Why is Load Average so low when you can clearly see that the Asterisk process uses 432% CPU? - Load Average should show something close to 4.0-4.5[/ul]
To test if Load Average was working correctly i have tried to create a bash loop script to put 100% CPU load on one core, and then run the script multible times simultanously. If i run the script twice to put 100% load on 2 CPU cores then Load Average shows 2.0 correctly.
Can anybody explain this, or give me some insights?