Changes between Version 20 and Version 21 of Getting-Started/BB10

Apr 19, 2013 10:55:58 AM (6 years ago)



  • Getting-Started/BB10

    v20 v21  
     234= Performance Tuning = #performance 
     236This section describes some performance tuning tips to reduce CPU utilization on the device. These are subset of the more [wiki:FAQ#cpu thorough performance tuning] as explained in the FAQ, please check that out for further reading. 
     238The recommendation below was based on experimentation on Z10 device. The full result of the experimentation is attached as PDF. The patch to measure CPU is also attached. 
     240=== Tune Resampling Quality === 
     242Because default media clock rate is 16Khz (the {{{pjsua_media_config.clock_rate}}} setting), sample rate conversion (a.k.a resampling) will be used whenever a media port with clock rate other than 16Khz is added to the conference bridge. This happens, for example, when call is established with narrowband codec such as G.711, GSM, iLBC, Speex-NB, and AMR-NB. 
     244By default high quality resampling with large filter is used, and this uses a lot of CPU. The small filter resample produces indistinguishable result on mobile devices, and uses much less CPU. The small filter resample can be activated by setting {{{pjsua_media_config.quality}}} to 4 (default is 8), or by declaring {{{PJSUA_DEFAULT_CODEC_QUALITY}}} to 4 in {{{config_site.h}}}. This is now the default value in {{{config_site_sample.h}}}, so if your {{{config_site.h}}} includes {{{config_site_sample.h}}} (which is recommended above), you will get this setting. 
     246Changing {{{pjsua_media_config.quality}}} from 8 to 4 reduces CPU utilization for PCMU call from 13% to 3%. 
     248=== Avoid Resampling Altogether === 
     250If all of your audio codecs are narrowband, then you should initialize PJSUA-LIB with 8Khz clock rate (set {{{pjsua_media_config.clock_rate}}} to 8000) to avoid resampling altogether. 
     252Without resampling, a PCMU call uses 0% CPU! 
     254=== configure-bb10 script does not enable optimization by default === 
     256This applies to PJSIP's {{{configure-bb10}}} script and also the {{{generic-configure-bb10}}} for building OpenCore AMR-NB that is distributed by PJSIP-Demo. Both do not put "-O2" by default. 
     258Adding "-O2" could potentially reduce CPU utilization by 20%. 
     260=== Codecs === 
     262Codec is the main contributor of CPU usage. Below is rough CPU utilization measurement for some codecs. Please see the attached PDF document for more complete results. 
     264Narrowband, without resampling (pjsua_media_config.clock_rate=8000): 
     265 - PCMU: 0% 
     266 - iLBC: 13% 
     267 - !OpenCore AMR-NB: 26% 
     269Narrowband, with small filter resampling (pjsua_media_config.clock_rate=16000, pjsua_media_config.quality=4): 
     270 - PCMU: 3% 
     271 - iLBC: 15% 
     272 - !OpenCore AMR-NB: 27% 
     274Wideband, without resampling (pjsua_media_config.clock_rate=16000): 
     275 - G.722: 5% 
     276 - !OpenCore Speex/WB: 20%