)]}'
{"doc/source/contributor/internals/code_profiling.rst":[{"author":{"_account_id":15554,"name":"Bence Romsics","email":"bence.romsics@gmail.com","username":"ebenrom","status":"working for Ericsson, UTC+1 (+DST)"},"change_message_id":"8faee4539c6ef63ffab420724c5c9112af7266c0","unresolved":false,"context_lines":[{"line_number":113,"context_line":"           Oct 20 01:52:40.788842 ubuntu-bionic-vexxhost-sjc1-0012393267 neutron-server[19578]: Function                                                                                                      called..."},{"line_number":114,"context_line":"           Oct 20 01:52:40.788842 ubuntu-bionic-vexxhost-sjc1-0012393267 neutron-server[19578]:                                                                                                                   ncalls  tottime  cumtime"},{"line_number":115,"context_line":"           Oct 20 01:52:40.788842 ubuntu-bionic-vexxhost-sjc1-0012393267 neutron-server[19578]: /usr/local/lib/python3.6/dist-packages/neutron_lib/db/api.py:132(wrapped)                                     -\u003e     1/0    0.000    0.000  /usr/local/lib/python3.6/dist-packages/oslo_db/"},{"line_number":116,"context_line":"           api.py:135(wrapper)"},{"line_number":117,"context_line":"           Oct 20 01:52:40.788842 ubuntu-bionic-vexxhost-sjc1-0012393267 neutron-server[19578]:                                                                                                                        1    0.000   16.883  /usr/local/lib/python3.6/dist-packages/sqlalche"},{"line_number":118,"context_line":"           my/orm/strategies.py:1317(\u003cgenexpr\u003e)"},{"line_number":119,"context_line":"           Oct 20 01:52:40.788842 ubuntu-bionic-vexxhost-sjc1-0012393267 neutron-server[19578]: /opt/stack/neutron/neutron/common/utils.py:678(inner)                                                         -\u003e       1    0.000    0.000  /usr/local/lib/python3.6/dist-packages/neutron_"}],"source_content_type":"text/x-rst","patch_set":18,"id":"3fa7e38b_5746c5c2","line":116,"updated":"2019-10-22 11:51:18.000000000","message":"Copy-paste seems to have broken the long lines.","commit_id":"f765332fddb15ed25421c28503bf6ad58bf5dd28"},{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"dbf51608e539ff5eed84f967d3eec1ab7686f00b","unresolved":false,"context_lines":[{"line_number":113,"context_line":"           Oct 20 01:52:40.788842 ubuntu-bionic-vexxhost-sjc1-0012393267 neutron-server[19578]: Function                                                                                                      called..."},{"line_number":114,"context_line":"           Oct 20 01:52:40.788842 ubuntu-bionic-vexxhost-sjc1-0012393267 neutron-server[19578]:                                                                                                                   ncalls  tottime  cumtime"},{"line_number":115,"context_line":"           Oct 20 01:52:40.788842 ubuntu-bionic-vexxhost-sjc1-0012393267 neutron-server[19578]: /usr/local/lib/python3.6/dist-packages/neutron_lib/db/api.py:132(wrapped)                                     -\u003e     1/0    0.000    0.000  /usr/local/lib/python3.6/dist-packages/oslo_db/"},{"line_number":116,"context_line":"           api.py:135(wrapper)"},{"line_number":117,"context_line":"           Oct 20 01:52:40.788842 ubuntu-bionic-vexxhost-sjc1-0012393267 neutron-server[19578]:                                                                                                                        1    0.000   16.883  /usr/local/lib/python3.6/dist-packages/sqlalche"},{"line_number":118,"context_line":"           my/orm/strategies.py:1317(\u003cgenexpr\u003e)"},{"line_number":119,"context_line":"           Oct 20 01:52:40.788842 ubuntu-bionic-vexxhost-sjc1-0012393267 neutron-server[19578]: /opt/stack/neutron/neutron/common/utils.py:678(inner)                                                         -\u003e       1    0.000    0.000  /usr/local/lib/python3.6/dist-packages/neutron_"}],"source_content_type":"text/x-rst","patch_set":18,"id":"3fa7e38b_0ad2145d","line":116,"in_reply_to":"3fa7e38b_5746c5c2","updated":"2019-10-26 22:00:12.000000000","message":"Good catch!. Fixed","commit_id":"f765332fddb15ed25421c28503bf6ad58bf5dd28"},{"author":{"_account_id":9531,"name":"liuyulong","display_name":"LIU Yulong","email":"i@liuyulong.me","username":"LIU-Yulong"},"change_message_id":"63fcdbc59c2d50b229cedfde88be96bdd5178a45","unresolved":false,"context_lines":[{"line_number":40,"context_line":"Once a method or function has been decorated, every one of its executions will"},{"line_number":41,"context_line":"add to the corresponding log file data grouped in 3 sections:"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"#. The top calls (sorted by CPU cumulative time) made by the decorated method"},{"line_number":44,"context_line":"   or function. The number of calls included in this section can be controlled"},{"line_number":45,"context_line":"   by a configuration option, as explained in"},{"line_number":46,"context_line":"   :ref:`config-neutron-for-code-profiling`. Following is a summary example of"}],"source_content_type":"text/x-rst","patch_set":22,"id":"3fa7e38b_e772bf12","line":43,"range":{"start_line":43,"start_character":18,"end_line":43,"end_character":47},"updated":"2019-11-07 13:58:18.000000000","message":"So how about add a config option to allow user to sort the call stack by other columns?\n\nhttps://docs.python.org/2/library/profile.html#pstats.Stats.sort_stats","commit_id":"eb3302207ff83b189f607570fe1c39cd370da0ad"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"0408d0b6a03da6f19791f22093fc1281172d83f4","unresolved":false,"context_lines":[{"line_number":40,"context_line":"Once a method or function has been decorated, every one of its executions will"},{"line_number":41,"context_line":"add to the corresponding log file data grouped in 3 sections:"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"#. The top calls (sorted by CPU cumulative time) made by the decorated method"},{"line_number":44,"context_line":"   or function. The number of calls included in this section can be controlled"},{"line_number":45,"context_line":"   by a configuration option, as explained in"},{"line_number":46,"context_line":"   :ref:`config-neutron-for-code-profiling`. Following is a summary example of"}],"source_content_type":"text/x-rst","patch_set":22,"id":"3fa7e38b_7a14dae9","line":43,"range":{"start_line":43,"start_character":18,"end_line":43,"end_character":47},"in_reply_to":"3fa7e38b_af94878d","updated":"2019-11-14 09:28:11.000000000","message":"I agree with Miguel. If You will want to profile some specific method You will have to push e.g. DNM patch and then You can simply set different sorting if You will need it.","commit_id":"eb3302207ff83b189f607570fe1c39cd370da0ad"},{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"b2d9e7b5e6354b5d3b498d6d094cb19a509bbf58","unresolved":false,"context_lines":[{"line_number":40,"context_line":"Once a method or function has been decorated, every one of its executions will"},{"line_number":41,"context_line":"add to the corresponding log file data grouped in 3 sections:"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"#. The top calls (sorted by CPU cumulative time) made by the decorated method"},{"line_number":44,"context_line":"   or function. The number of calls included in this section can be controlled"},{"line_number":45,"context_line":"   by a configuration option, as explained in"},{"line_number":46,"context_line":"   :ref:`config-neutron-for-code-profiling`. Following is a summary example of"}],"source_content_type":"text/x-rst","patch_set":22,"id":"3fa7e38b_af94878d","line":43,"range":{"start_line":43,"start_character":18,"end_line":43,"end_character":47},"in_reply_to":"3fa7e38b_e772bf12","updated":"2019-11-11 01:41:32.000000000","message":"I don\u0027t see the practical use for that at this point. Why add many options for a narrow set of users? If in the future, after using this feature, we discover such an option is need, we can add it. Let\u0027s start playing with this first and see what improvements.","commit_id":"eb3302207ff83b189f607570fe1c39cd370da0ad"},{"author":{"_account_id":9531,"name":"liuyulong","display_name":"LIU Yulong","email":"i@liuyulong.me","username":"LIU-Yulong"},"change_message_id":"63fcdbc59c2d50b229cedfde88be96bdd5178a45","unresolved":false,"context_lines":[{"line_number":132,"context_line":""},{"line_number":133,"context_line":".. _config-neutron-for-code-profiling:"},{"line_number":134,"context_line":""},{"line_number":135,"context_line":"Setting up  Neutron for code profiling"},{"line_number":136,"context_line":"--------------------------------------"},{"line_number":137,"context_line":""},{"line_number":138,"context_line":"To start profiling Neutron code, the following steps have to be taken:"}],"source_content_type":"text/x-rst","patch_set":22,"id":"3fa7e38b_c715439d","line":135,"range":{"start_line":135,"start_character":0,"end_line":135,"end_character":38},"updated":"2019-11-07 13:58:18.000000000","message":"According to the PTG dissussion, we should add some config information about log level.","commit_id":"eb3302207ff83b189f607570fe1c39cd370da0ad"},{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"b2d9e7b5e6354b5d3b498d6d094cb19a509bbf58","unresolved":false,"context_lines":[{"line_number":132,"context_line":""},{"line_number":133,"context_line":".. _config-neutron-for-code-profiling:"},{"line_number":134,"context_line":""},{"line_number":135,"context_line":"Setting up  Neutron for code profiling"},{"line_number":136,"context_line":"--------------------------------------"},{"line_number":137,"context_line":""},{"line_number":138,"context_line":"To start profiling Neutron code, the following steps have to be taken:"}],"source_content_type":"text/x-rst","patch_set":22,"id":"3fa7e38b_cf91c39c","line":135,"range":{"start_line":135,"start_character":0,"end_line":135,"end_character":38},"in_reply_to":"3fa7e38b_c715439d","updated":"2019-11-11 01:41:32.000000000","message":"I don\u0027t have any recollection of having committed to such a thing. Looking at the PTG notes (https://etherpad.openstack.org/p/Shanghai-Neutron-Planning/timeslider#16117) no such commitment was made. And also, please see my comment to  L43 above. Let\u0027s not over-engineer this for a very narrow set of users","commit_id":"eb3302207ff83b189f607570fe1c39cd370da0ad"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"0408d0b6a03da6f19791f22093fc1281172d83f4","unresolved":false,"context_lines":[{"line_number":132,"context_line":""},{"line_number":133,"context_line":".. _config-neutron-for-code-profiling:"},{"line_number":134,"context_line":""},{"line_number":135,"context_line":"Setting up  Neutron for code profiling"},{"line_number":136,"context_line":"--------------------------------------"},{"line_number":137,"context_line":""},{"line_number":138,"context_line":"To start profiling Neutron code, the following steps have to be taken:"}],"source_content_type":"text/x-rst","patch_set":22,"id":"3fa7e38b_dadaae49","line":135,"range":{"start_line":135,"start_character":0,"end_line":135,"end_character":38},"in_reply_to":"3fa7e38b_cf91c39c","updated":"2019-11-14 09:28:11.000000000","message":"+1 to what Miguel said. Lets keep it simple, at least for now","commit_id":"eb3302207ff83b189f607570fe1c39cd370da0ad"}],"neutron/conf/profiling.py":[{"author":{"_account_id":15554,"name":"Bence Romsics","email":"bence.romsics@gmail.com","username":"ebenrom","status":"working for Ericsson, UTC+1 (+DST)"},"change_message_id":"8faee4539c6ef63ffab420724c5c9112af7266c0","unresolved":false,"context_lines":[{"line_number":19,"context_line":"PROFILER_OPTS \u003d ["},{"line_number":20,"context_line":"    cfg.BoolOpt(\u0027enable_code_profiling\u0027,"},{"line_number":21,"context_line":"                default\u003dFalse,"},{"line_number":22,"context_line":"                help\u003d_(\u0027Enable code execution profiling with cProfile.\u0027)),"},{"line_number":23,"context_line":"    cfg.IntOpt(\u0027code_profiling_calls_to_log\u0027,"},{"line_number":24,"context_line":"               default\u003d50,"},{"line_number":25,"context_line":"               help\u003d_(\u0027Number of calls from the cProfile report to log\u0027)),"}],"source_content_type":"text/x-python","patch_set":18,"id":"3fa7e38b_371789a6","line":22,"updated":"2019-10-22 11:51:18.000000000","message":"May be worth adding a sentence like: \"Profiling statistics are logged at DEBUG level.\"","commit_id":"f765332fddb15ed25421c28503bf6ad58bf5dd28"},{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"dbf51608e539ff5eed84f967d3eec1ab7686f00b","unresolved":false,"context_lines":[{"line_number":19,"context_line":"PROFILER_OPTS \u003d ["},{"line_number":20,"context_line":"    cfg.BoolOpt(\u0027enable_code_profiling\u0027,"},{"line_number":21,"context_line":"                default\u003dFalse,"},{"line_number":22,"context_line":"                help\u003d_(\u0027Enable code execution profiling with cProfile.\u0027)),"},{"line_number":23,"context_line":"    cfg.IntOpt(\u0027code_profiling_calls_to_log\u0027,"},{"line_number":24,"context_line":"               default\u003d50,"},{"line_number":25,"context_line":"               help\u003d_(\u0027Number of calls from the cProfile report to log\u0027)),"}],"source_content_type":"text/x-python","patch_set":18,"id":"3fa7e38b_aac2e083","line":22,"in_reply_to":"3fa7e38b_371789a6","updated":"2019-10-26 22:00:12.000000000","message":"Done","commit_id":"f765332fddb15ed25421c28503bf6ad58bf5dd28"}],"neutron/profiling/profiled_decorator.py":[{"author":{"_account_id":15554,"name":"Bence Romsics","email":"bence.romsics@gmail.com","username":"ebenrom","status":"working for Ericsson, UTC+1 (+DST)"},"change_message_id":"8faee4539c6ef63ffab420724c5c9112af7266c0","unresolved":false,"context_lines":[{"line_number":65,"context_line":"                profiler_info \u003d utils.collect_profiler_info()"},{"line_number":66,"context_line":"                if not profiler_info:"},{"line_number":67,"context_line":"                    profiler_info \u003d {\u0027base_id\u0027: \u0027\u0027, \u0027parent_id\u0027: \u0027\u0027}"},{"line_number":68,"context_line":"                LOG.debug(\u0027os-profiler parent trace-id %(parent_id)s \u0027"},{"line_number":69,"context_line":"                          \u0027trace-id %(trace_id)s %(elapsed_time)7d millisecs \u0027"},{"line_number":70,"context_line":"                          \u0027elapsed for %(method)s(*%(args)s, **%(kwargs)s): \u0027"},{"line_number":71,"context_line":"                          \u0027%(profiler_data)s\u0027,"},{"line_number":72,"context_line":"                          {\u0027parent_id\u0027: profiler_info[\u0027parent_id\u0027],"}],"source_content_type":"text/x-python","patch_set":18,"id":"3fa7e38b_377c69ea","line":69,"range":{"start_line":68,"start_character":27,"end_line":69,"end_character":48},"updated":"2019-10-22 11:51:18.000000000","message":"This part looks a bit strange in environments where osprofiler is not enabled.","commit_id":"f765332fddb15ed25421c28503bf6ad58bf5dd28"},{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"dbf51608e539ff5eed84f967d3eec1ab7686f00b","unresolved":false,"context_lines":[{"line_number":65,"context_line":"                profiler_info \u003d utils.collect_profiler_info()"},{"line_number":66,"context_line":"                if not profiler_info:"},{"line_number":67,"context_line":"                    profiler_info \u003d {\u0027base_id\u0027: \u0027\u0027, \u0027parent_id\u0027: \u0027\u0027}"},{"line_number":68,"context_line":"                LOG.debug(\u0027os-profiler parent trace-id %(parent_id)s \u0027"},{"line_number":69,"context_line":"                          \u0027trace-id %(trace_id)s %(elapsed_time)7d millisecs \u0027"},{"line_number":70,"context_line":"                          \u0027elapsed for %(method)s(*%(args)s, **%(kwargs)s): \u0027"},{"line_number":71,"context_line":"                          \u0027%(profiler_data)s\u0027,"},{"line_number":72,"context_line":"                          {\u0027parent_id\u0027: profiler_info[\u0027parent_id\u0027],"}],"source_content_type":"text/x-python","patch_set":18,"id":"3fa7e38b_4abb2c0e","line":69,"range":{"start_line":68,"start_character":27,"end_line":69,"end_character":48},"in_reply_to":"3fa7e38b_377c69ea","updated":"2019-10-26 22:00:12.000000000","message":"In line 67, changed the null strings for \u0027not available\u0027. Let me know what you think","commit_id":"f765332fddb15ed25421c28503bf6ad58bf5dd28"},{"author":{"_account_id":15554,"name":"Bence Romsics","email":"bence.romsics@gmail.com","username":"ebenrom","status":"working for Ericsson, UTC+1 (+DST)"},"change_message_id":"b7fa5499e822f91e30ca6515b97665ac4fc2fc63","unresolved":false,"context_lines":[{"line_number":65,"context_line":"                profiler_info \u003d utils.collect_profiler_info()"},{"line_number":66,"context_line":"                if not profiler_info:"},{"line_number":67,"context_line":"                    profiler_info \u003d {\u0027base_id\u0027: \u0027\u0027, \u0027parent_id\u0027: \u0027\u0027}"},{"line_number":68,"context_line":"                LOG.debug(\u0027os-profiler parent trace-id %(parent_id)s \u0027"},{"line_number":69,"context_line":"                          \u0027trace-id %(trace_id)s %(elapsed_time)7d millisecs \u0027"},{"line_number":70,"context_line":"                          \u0027elapsed for %(method)s(*%(args)s, **%(kwargs)s): \u0027"},{"line_number":71,"context_line":"                          \u0027%(profiler_data)s\u0027,"},{"line_number":72,"context_line":"                          {\u0027parent_id\u0027: profiler_info[\u0027parent_id\u0027],"}],"source_content_type":"text/x-python","patch_set":18,"id":"3fa7e38b_15259e0a","line":69,"range":{"start_line":68,"start_character":27,"end_line":69,"end_character":48},"in_reply_to":"3fa7e38b_4abb2c0e","updated":"2019-11-12 08:13:29.000000000","message":"Looks good, thanks.","commit_id":"f765332fddb15ed25421c28503bf6ad58bf5dd28"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"0408d0b6a03da6f19791f22093fc1281172d83f4","unresolved":false,"context_lines":[{"line_number":55,"context_line":"                profiler.disable()"},{"line_number":56,"context_line":"                elapsed_time \u003d datetime.now() - start_time"},{"line_number":57,"context_line":"                elapsed_time_ms \u003d (elapsed_time.seconds * 1000.0 +"},{"line_number":58,"context_line":"                                  elapsed_time.microseconds / 1000.0)"},{"line_number":59,"context_line":"                stream \u003d io.StringIO()"},{"line_number":60,"context_line":"                stats \u003d pstats.Stats(profiler, stream\u003dstream).sort_stats("},{"line_number":61,"context_line":"                    SORT_BY)"}],"source_content_type":"text/x-python","patch_set":22,"id":"3fa7e38b_5ac79e65","line":58,"updated":"2019-11-14 09:28:11.000000000","message":"nitty nit: wrong indentation","commit_id":"eb3302207ff83b189f607570fe1c39cd370da0ad"}]}
