[Twisted-Python] Twisted reactor cpu usage

Ilya Biin me at ilyabiin.com
Fri Mar 2 13:54:57 EST 2012


I'm using epoll reactor and sample HTTP Proxy realization.

From another process i'm executing ~30 HTTP requests per second and
twisted process is consuming 10% cpu

The profiler output is:

        937706 function calls (934675 primitive calls) in 59.988 CPU seconds

  Ordered by: cumulative time
  List reduced from 312 to 15 due to restriction <15>

  ncalls  tottime  percall  cumtime  percall filename:lineno(function)
       1    0.000    0.000   59.988   59.988 base.py:1167(run)
       1    0.076    0.076   59.988   59.988 base.py:1172(mainLoop)
   12697   55.456    0.004   59.253    0.005 epollreactor.py:169(doPoll)
   13553    0.086    0.000    3.797    0.000 log.py:71(callWithLogger)
   13553    0.096    0.000    3.691    0.000 log.py:66(callWithContext)
   13553    0.047    0.000    3.481    0.000 context.py:117(callWithContext)
   13553    0.067    0.000    3.426    0.000 context.py:61(callWithContext)
   13552    0.095    0.000    3.359    0.000 posixbase.py:544(_doReadOrWrite)
    5454    0.097    0.000    1.736    0.000 tcp.py:182(doRead)
    5453    0.167    0.000    1.639    0.000 basic.py:543(dataReceived)
   12697    0.095    0.000    0.587    0.000 base.py:762(runUntilCurrent)
    4453    0.025    0.000    0.574    0.000 http.py:495(rawDataReceived)
    6000    0.036    0.000    0.547    0.000 http.py:1515(lineReceived)
    2000    0.029    0.000    0.454    0.000 tcp.py:371(doConnect)
    5098    0.104    0.000    0.428    0.000 abstract.py:212(doWrite)


        937706 function calls (934675 primitive calls) in 59.988 CPU seconds

  Ordered by: internal time
  List reduced from 312 to 15 due to restriction <15>

  ncalls  tottime  percall  cumtime  percall filename:lineno(function)
   12697   55.456    0.004   59.253    0.005 epollreactor.py:169(doPoll)
   59101    0.277    0.000    0.277    0.000 <string>:1(fileno)
    5098    0.252    0.000    0.252    0.000 tcp.py:212(writeSomeData)
   24453    0.198    0.000    0.198    0.000 __init__.py:1230(getEffectiveLevel)
    5453    0.167    0.000    1.639    0.000 basic.py:543(dataReceived)
    5098    0.104    0.000    0.428    0.000 abstract.py:212(doWrite)
    5454    0.097    0.000    1.736    0.000 tcp.py:182(doRead)
   13553    0.096    0.000    3.691    0.000 log.py:66(callWithContext)
   12697    0.095    0.000    0.587    0.000 base.py:762(runUntilCurrent)
   13552    0.095    0.000    3.359    0.000 posixbase.py:544(_doReadOrWrite)
   13553    0.086    0.000    3.797    0.000 log.py:71(callWithLogger)
       1    0.076    0.076   59.988   59.988 base.py:1172(mainLoop)
   16556    0.074    0.000    0.074    0.000 context.py:86(getContext)
   17451    0.073    0.000    0.094    0.000 epollreactor.py:71(_add)
   17098    0.068    0.000    0.085    0.000 epollreactor.py:112(_remove)
What is wrong? Why twisted perfomance is so poor here?

--
Ilya Biin


More information about the Twisted-Python mailing list