[Live-devel] live555MediaServer performance improvement

Konstantin Shpinev ks at microimpuls.com
Sun Jul 16 07:44:08 PDT 2017


40 clients, ~40% CPU usage.
gprof results:

Flat profile:

Each sample counts as 0.01 seconds.
  %   cumulative   self              self     total
 time   seconds   seconds    calls  us/call  us/call  name
 20.76      0.11     0.11   150000     0.73     3.47
 BasicTaskScheduler::SingleStep(unsigned int)
 11.32      0.17     0.06    61120     0.98     1.04
 DelayQueue::addEntry(DelayQueueEntry*)
  9.43      0.22     0.05    58657     0.85     1.36
 RTPInterface::sendPacket(unsigned char*, unsigned int)
  7.55      0.26     0.04    58296     0.69     0.69
 DelayQueue::removeEntry(long)
  5.66      0.29     0.03    58611     0.51     0.51
 MultiFramedRTPSink::buildAndSendPacket(unsigned char)
  3.77      0.31     0.02  3231064     0.01     0.01
 HandlerIterator::next()
  3.77      0.33     0.02   326217     0.06     0.06
 DelayQueue::synchronize()
  3.77      0.35     0.02   150000     0.13     0.18
 DelayQueue::handleAlarm()
  3.77      0.37     0.02   117586     0.17     0.17
 NetInterfaceTrafficStats::countPacket(unsigned int)
  3.77      0.39     0.02    58610     0.34     0.34
 SimpleRTPSink::doSpecialFrameHandling(unsigned int, unsigned char*,
unsigned int, timeval, unsigned int)
  3.77      0.41     0.02    58610     0.34     2.91
 MultiFramedRTPSink::sendPacketIfNecessary()
  3.77      0.43     0.02    58610     0.34     3.76
 MPEG2TransportStreamFramer::afterGettingFrame1(unsigned int, timeval)
  1.89      0.44     0.01   150000     0.07     0.12
 DelayQueue::timeToNextAlarm()
  1.89      0.45     0.01   117222     0.09     0.09
 FramedSource::getNextFrame(unsigned char*, unsigned int, void (*)(void*,
unsigned int, unsigned int, timeval
, unsigned int), void*, void (*)(void*), void*)
  1.89      0.46     0.01   116338     0.09     0.17
 BasicTaskScheduler::setBackgroundHandling(int, int, void (*)(void*, int),
void*)
  1.89      0.47     0.01    90105     0.11     0.11
 HandlerIterator::reset()
  1.89      0.48     0.01    61120     0.16     1.21
 BasicTaskScheduler0::scheduleDelayedTask(long, void (*)(void*), void*)
  1.89      0.49     0.01    58658     0.17     0.17
 writeSocket(UsageEnvironment&, int, in_addr, unsigned short, unsigned
char*, unsigned int)
  1.89      0.50     0.01    58610     0.17     3.42
 MultiFramedRTPSink::afterGettingFrame1(unsigned int, unsigned int,
timeval, unsigned int)
  1.89      0.51     0.01    58151     0.17     0.17
 HandlerDescriptor::~HandlerDescriptor()
  1.89      0.52     0.01       22   454.56   454.56
 MultiFramedRTPSink::MultiFramedRTPSink(UsageEnvironment&, Groupsock*,
unsigned char, unsigned int, char cons
t*, unsigned int)
  1.89      0.53     0.01
BasicTaskScheduler::~BasicTaskScheduler()
  0.00      0.53     0.00   410270     0.00     0.00
 MPEG2TransportStreamFramer::updateTSPacketDurationEstimate(unsigned char*,
double)
  0.00      0.53     0.00   326218     0.00     0.00  TimeNow()
  0.00      0.53     0.00   326217     0.00     0.00  operator-(Timeval
const&, Timeval const&)
  0.00      0.53     0.00   175833     0.00     0.00
 OutPacketBuffer::skipBytes(unsigned int)
  0.00      0.53     0.00   150000     0.00     0.00
 HandlerIterator::HandlerIterator(HandlerSet&)
  0.00      0.53     0.00   150000     0.00     0.00
 HandlerIterator::~HandlerIterator()

сб, 15 июл. 2017 г. в 22:11, Ross Finlayson <finlayson at live555.com>:

> > I my experience, scalability issues with our server software are usually
> caused by running up against limits in either (1) the capacity of their
> network, or (2) the number of open files (sockets) that are supported by
> the underlying operating system (see
> http://live555.com/liveMedia/faq.html#scalability ).  Increasing this
> limit usually solves the problem.
> >
> >
> > I'm using Linux server, so it's not it.
>
> Note that Linux kernels also have a limit on the number of open
> files/sockets.  This limit can be reconfigured.
>
>
> > The problem is high CPU usage.
>
> So which part(s) of the code are contributing most to the CPU usage.  Have
> you tried rebuilding the code for, and running it under, “gprof”?
>
>
> Ross Finlayson
> Live Networks, Inc.
> http://www.live555.com/
>
>
> _______________________________________________
> live-devel mailing list
> live-devel at lists.live555.com
> http://lists.live555.com/mailman/listinfo/live-devel
>
-- 
С уважением, Константин Шпинёв
ООО "Майкроимпульс"
раб.: +7 (499) 647-49-78
моб.: +7 (906) 844-57-66
skype: ksot1k
www.microimpuls.com
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.live555.com/pipermail/live-devel/attachments/20170716/0a687d85/attachment.html>


More information about the live-devel mailing list