CPU usage is 90% or more when do 720p video call and SkypeKit uses almost 70% at this time.
We couldn't understand what should we do to improve this problem because SkypeKit is a black box.
We want to analyze which process resumes more CPU and what does the process do.
Please let me know how to investigate and improve it.
Hopefully, it is very helpful that you will provide us the SkypeKit image with debug information.
Could you provide
1) the CPU model that you are using
2) CPU frequency, and if any frequency scaling is being used
3) SkypeKit runtime version
4) SkypeKit runtime configuration, in particular if you are using
5) Audio codec in use, and audio stack configuration ( AEC, Beamforming .. )
5) Video bitrate and framerate, in both receive and send direction
6) The version of the far end client ( Skype Windows, Mac, iPhone, TV .. )
All of these, and other variables, could be affecting the performance.
1) CPU: ARM11
2) CPU: 700MHz
3) SkypeKit runtime version: v22.214.171.1240 (I used this version when I measured above)
4) SkypeKit runtime configuration: SkypeKit: linux-armv6-skypekit-voicepcm-videortp
5) Audio codec in use: SILK WB V3(16kHz sample rate)
5) Video bitrate and framerate: 1.5Mbps and 24fps@720p, 30fps@VGA or smaller
6) The version of the far end client: 126.96.36.199 for Windows
Depending on other details in the system, this is not out of line. Probably around half of this is burned on audio processing.
1) If you want to try and experiment with reducing audio processing load, try to configure the audio stack to turn off preprocessing elements, i.e. disable AEC and/or reduce SILK operating load, or perhaps disable SILK and use G729 only, for performance testing
2) Limit your maximum video quality. CPU requirements scale with Video bitrate and framerate. You may try and want to limit yours to VGA @ 15fps. Limiting can be done through VideoRTPInterface GET_H264_RECEIVER_PARAMETERS and GET_H264_SENDER_PARAMETERS calls. See videortp-test for example.
Make sure that your system does NOT exceed average 80% systemwide CPU load, or you will not be able achieve stable audio-video quality. I.e. system "Idle" shown by top and other utilities needs to stay at 20% or more in average.
(1)What happens when you reduce send and recv bitrates to 1mbps ?
(2)What happens when you wait and fetch data for 40 ms between subsequent Output DeviceReady .Do same experiment on InputDeviceReady also .
I observed that CPU load decreases by this way as Skypekit Runtime load decreases by calling these APIs at lesser rate.
Thank you for your advice.
We hear some breaking of audio with noise during video call.
Also I get almost same result when I reduce network bitrates.
I will test changing interval to call SkypePCMCallbackInterface .