CPU utilization by webrtcbin plugin

Olivier Crête olivier.crete at collabora.com
Thu Aug 25 22:21:50 UTC 2022


Hi,

I'd start by running "perf top" to know exactly what is using CPU time.
I'm surprised that the nicesrc threads are taking so much, all this
does is receive the packets and feed them to a queue. The queue1 thread
is probably the one does DTLS, so it's less surprising that they would
use CPU time. But it's hard to say anything definitive without doing
profiling on your system.

Olivier


On Thu, 2022-08-25 at 23:51 +0530, Pradeep Acharya via gstreamer-devel
wrote:
> Hi ,
> Any suggestions on reducing CPU utilization would be helpful.
> Regards
> Pradeep
> 
> On Thu, Aug 4, 2022 at 7:06 PM Pradeep Acharya
> <pradeep.acharya1008 at gmail.com> wrote:
> > Hi,
> > This is a query related to CPU utilization and any optimization can
> > be done to reduce the CPU utilization.i've a media server that
> > connects to web app applications running in the browser  . The
> > media server uses webrtc bin plugin .
> > I use a single socket to transmit and receive audio/video .  I've
> > attached the png files extracted from the Dot file. Below is
> > configuration details of the server used
> > 
> > Num of CPU cores: 8
> > Model: Intel(R) Xeon(R) CPU  X5650  @ 2.67GHz
> > Audio codec: opus 
> > video codec : VP8 
> > video encoding by clients: 640 x480 @ ~ 500 kbps
> > 
> > The server does not decode or encode the RTP but just forward from
> > one client to another. When I execute the top command, I find that
> > the cpu % is around 14 to 16 % just for 2 clients . The cpu
> > utilization goes up higher and higher as the number of clients
> > connected to the server increases. For 8 participants it goes
> > beyond 400% , distributed among the cores. output of the top
> > command 
> > 
> > 2329570 root     -11   0 4074924  73708  18920 S   2.0   1.3  
> > 0:01.80 queue1:src
> > 2331060 root     -11   0 4074924  73708  18920 S   1.7   1.3  
> > 0:01.45 nicesrc1:src
> > 2329568 root     -11   0 4074924  73708  18920 S   1.3   1.3  
> > 0:05.39 nicesrc0:src
> > 2329569 root     -11   0 4074924  73708  18920 S   1.3   1.3  
> > 0:04.39 queue0:src
> > 2331061 root     -11   0 4074924  73708  18920 S   1.3   1.3  
> > 0:01.38 queue2:src
> > 2331062 root     -11   0 4074924  73708  18920 S   1.0   1.3  
> > 0:01.41 queue3:src
> > 2329567 root     -11   0 4074924  73708  18920 S   0.7   1.3  
> > 0:01.64 rtpsession-rtcp
> > 2329583 root     -11   0 4074924  73708  18920 S   0.7   1.3  
> > 0:00.94 rtpjitterbuffer
> > 2331058 root     -11   0 4074924  73708  18920 S   0.7   1.3  
> > 0:00.39 appsrc_Audio_36
> > 2331059 root     -11   0 4074924  73708  18920 S   0.7   1.3  
> > 0:00.64 rtpsession-rtcp
> > 2331079 root     -11   0 4074924  73708  18920 S   0.7   1.3  
> > 0:00.42 rtpjitterbuffer
> > 2331080 root     -11   0 4074924  73708  18920 S   0.7   1.3  
> > 0:00.38 rtpjitterbuffer
> > 2329580 root     -11   0 4074924  73708  18920 S   0.3   1.3  
> > 0:00.08 timer
> > 2329582 root     -11   0 4074924  73708  18920 S   0.3   1.3  
> > 0:01.42 rtpjitterbuffer
> > 2329584 root     -11   0 4074924  73708  18920 S   0.3   1.3  
> > 0:00.51 rtpjitterbuffer
> > 2331070 root     -11   0 4074924  73708  18920 S   0.3   1.3  
> > 0:00.40 appsrc_Audio_13
> > 2331084 root     -11   0 4074924  73708  18920 S   0.3   1.3  
> > 0:00.20 rtpjitterbuffer
> > 
> > From the above, I see that nicesrc plugin takes around 2 % of cpu
> > of one client  I think this plugin receives packets and puts them
> > to queue. Should this thread take 2 % cpu to receive RTP packets
> > from socket and put them to queue ?
> > other elements like nicesink, rtpjitterbuffer ,appsrc thread
> > consume CPU. Features like do-nack and TWCC are enabled for video 
> > 
> > 1. Is there any benchmark of CPU utilization that the webrtcbin
> > plugin should take for a 2 way TX and RX of audio,video RTP
> > packets @ 500 kbps ?  
> > 2. ARe there any element property config changes that need to be
> > done to reduce CPU utilization ?
> > 3. How to proceed to reduce cpu utilization ? Any suggestions that
> > help me  in figuring out are welcome
> > 
> >  
> > Thanks 
> > Pradeep

-- 
Olivier Crête
olivier.crete at collabora.com


More information about the gstreamer-devel mailing list