1

Profiling Django app to figure out slow functions.

I just added some middleware to track function calls, following this blog: http://agiliq.com/blog/2015/07/profiling-django-middlewares/ and I see that the entry of cProfile stats for {posix.write} is one of the longest.

Any idea what that is, and where that comes from?

Other functions are referenced by their name and package path, so I'm not sure what {posix.write} means.

the log looks like this:

204051 function calls (197141 primitive calls) in 0.997 seconds

   Ordered by: internal time
   List reduced from 1204 to 50 due to restriction <50>

   ncalls  tottime  percall  cumtime  percall filename:lineno(function)
       35    0.305    0.009    0.305    0.009 {posix.write}
       95    0.206    0.002    0.207    0.002 {method 'execute' of 'psycopg2.extensions.cursor' objects}
       73    0.088    0.001    0.088    0.001 {select.select}
      898    0.023    0.000    0.047    0.000 /.venv/lib/python2.7/site-packages/django/db/models/base.py:388(__init__)
     1642    0.012    0.000    0.371    0.000 /.venv/lib/python2.7/site-packages/django/template/base.py:806(_resolve_lookup)
        1    0.010    0.010    0.011    0.011 {_sass.compile_filename}
        1    0.009    0.009    0.009    0.009 {psycopg2._psycopg._connect}
       34    0.009    0.000    0.009    0.000 {method 'recv' of '_socket.socket' objects}
       39    0.007    0.000    0.007    0.000 {posix.read}
9641/6353    0.006    0.000    0.321    0.000 {getattr}
      173    0.006    0.000    0.026    0.000 /.venv/lib/python2.7/site-packages/django/core/urlresolvers.py:425(_reverse_with_prefix)
    25769    0.006    0.000    0.007    0.000 {isinstance}

EDIT:

I understand that posix.write is the write function of posix. That I need to understand I guess is what part of Django uses that a lot and why it is showing up as taking 300+ms.

How would I go about tracking this down?

Thanks

MrE
  • 19,584
  • 12
  • 87
  • 105

0 Answers0