)]}'
{"nova/virt/hardware.py":[{"author":{"_account_id":7634,"name":"Takashi Natsume","email":"takanattie@gmail.com","username":"natsumet"},"change_message_id":"720306c5b32ee4df4b6b0ec2a8b7dfb80f0449ce","unresolved":false,"context_lines":[{"line_number":750,"context_line":"    def _get_pinning(threads_no, sibling_set, instance_cores):"},{"line_number":751,"context_line":"        \"\"\"Generate a CPU-vCPU pin mapping.\"\"\""},{"line_number":752,"context_line":"        LOG.debug(\u0027Attempting to pin:\u0027"},{"line_number":753,"context_line":"                 \u0027    threads_no: %(thread_no)s\u0027"},{"line_number":754,"context_line":"                 \u0027    sibling_set: %(sibling_set)s\u0027"},{"line_number":755,"context_line":"                 \u0027    instance_cores: %(cores)s\u0027,"},{"line_number":756,"context_line":"                    {\u0027threads_no\u0027: threads_no,"}],"source_content_type":"text/x-python","patch_set":1,"id":"3ac371cc_7048755c","line":753,"range":{"start_line":753,"start_character":36,"end_line":753,"end_character":45},"updated":"2016-08-15 02:52:21.000000000","message":"s/thread_no/threads_no/","commit_id":"3a248faf82aa63f9a5b989ab4c435705a103f8c0"},{"author":{"_account_id":8802,"name":"Vladik Romanovsky","email":"vromanso@redhat.com","username":"vladikr"},"change_message_id":"47f6582ff0bf36c61a8b0967f73cc3204f99053a","unresolved":false,"context_lines":[{"line_number":750,"context_line":"    def _get_pinning(threads_no, sibling_set, instance_cores):"},{"line_number":751,"context_line":"        \"\"\"Generate a CPU-vCPU pin mapping.\"\"\""},{"line_number":752,"context_line":"        LOG.debug(\u0027Attempting to pin:\u0027"},{"line_number":753,"context_line":"                 \u0027    threads_no: %(thread_no)s\u0027"},{"line_number":754,"context_line":"                 \u0027    sibling_set: %(sibling_set)s\u0027"},{"line_number":755,"context_line":"                 \u0027    instance_cores: %(cores)s\u0027,"},{"line_number":756,"context_line":"                    {\u0027threads_no\u0027: threads_no,"}],"source_content_type":"text/x-python","patch_set":1,"id":"3ac371cc_2277be3b","line":753,"range":{"start_line":753,"start_character":36,"end_line":753,"end_character":45},"in_reply_to":"3ac371cc_7048755c","updated":"2016-08-15 13:59:01.000000000","message":"Thanks!","commit_id":"3a248faf82aa63f9a5b989ab4c435705a103f8c0"},{"author":{"_account_id":17973,"name":"Ludovic Beliveau","email":"lbeliveau@gmail.com","username":"lbeliveau"},"change_message_id":"7f67781be4f83c4b5ac467cf6bd7e296142e06ef","unresolved":false,"context_lines":[{"line_number":798,"context_line":"        # instances among physical cores"},{"line_number":799,"context_line":"        for threads_no, sibling_set in sorted("},{"line_number":800,"context_line":"                (t for t in sibling_sets.items()), reverse\u003dTrue):"},{"line_number":801,"context_line":"            LOG.debug(\u0027Trying to calculate pinning: \u0027"},{"line_number":802,"context_line":"                     \u0027    threads_no: %(threads_no)s\u0027"},{"line_number":803,"context_line":"                     \u0027    sibling_set: %(siblings)s\u0027,"},{"line_number":804,"context_line":"                     {\u0027threads_no\u0027: threads_no,"}],"source_content_type":"text/x-python","patch_set":1,"id":"3ac371cc_c21d0a11","line":801,"updated":"2016-08-15 13:59:15.000000000","message":"Nit: s/Trying to calculate pinning/Trying with pinning/","commit_id":"3a248faf82aa63f9a5b989ab4c435705a103f8c0"},{"author":{"_account_id":17973,"name":"Ludovic Beliveau","email":"lbeliveau@gmail.com","username":"lbeliveau"},"change_message_id":"7f67781be4f83c4b5ac467cf6bd7e296142e06ef","unresolved":false,"context_lines":[{"line_number":809,"context_line":"            # if this is all that is available. Enforce this by ensuring we\u0027re"},{"line_number":810,"context_line":"            # using sibling sets that contain at least one sibling"},{"line_number":811,"context_line":"            if (instance_cell.cpu_thread_policy \u003d\u003d"},{"line_number":812,"context_line":"                    fields.CPUThreadAllocationPolicy.REQUIRE):"},{"line_number":813,"context_line":"                if threads_no \u003c\u003d 1:"},{"line_number":814,"context_line":"                    continue"},{"line_number":815,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"3ac371cc_e295a640","line":812,"updated":"2016-08-15 13:59:15.000000000","message":"Maybe add a debug here ...","commit_id":"3a248faf82aa63f9a5b989ab4c435705a103f8c0"},{"author":{"_account_id":8802,"name":"Vladik Romanovsky","email":"vromanso@redhat.com","username":"vladikr"},"change_message_id":"969cc7014815c026ff3c953d196ff676fba476a2","unresolved":false,"context_lines":[{"line_number":809,"context_line":"            # if this is all that is available. Enforce this by ensuring we\u0027re"},{"line_number":810,"context_line":"            # using sibling sets that contain at least one sibling"},{"line_number":811,"context_line":"            if (instance_cell.cpu_thread_policy \u003d\u003d"},{"line_number":812,"context_line":"                    fields.CPUThreadAllocationPolicy.REQUIRE):"},{"line_number":813,"context_line":"                if threads_no \u003c\u003d 1:"},{"line_number":814,"context_line":"                    continue"},{"line_number":815,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"3ac371cc_eb037740","line":812,"in_reply_to":"3ac371cc_e295a640","updated":"2016-08-16 17:59:25.000000000","message":"Done","commit_id":"3a248faf82aa63f9a5b989ab4c435705a103f8c0"},{"author":{"_account_id":17973,"name":"Ludovic Beliveau","email":"lbeliveau@gmail.com","username":"lbeliveau"},"change_message_id":"7f67781be4f83c4b5ac467cf6bd7e296142e06ef","unresolved":false,"context_lines":[{"line_number":813,"context_line":"                if threads_no \u003c\u003d 1:"},{"line_number":814,"context_line":"                    continue"},{"line_number":815,"context_line":""},{"line_number":816,"context_line":"            pinning \u003d _get_pinning(threads_no, sibling_set,"},{"line_number":817,"context_line":"                                   instance_cell.cpuset)"},{"line_number":818,"context_line":"            if pinning:"},{"line_number":819,"context_line":"                break"}],"source_content_type":"text/x-python","patch_set":1,"id":"3ac371cc_82b5d2ce","line":816,"updated":"2016-08-15 13:59:15.000000000","message":"Not sure we need debug at L801 since _get_pinning will output all debug we need.  This might be redundant ...","commit_id":"3a248faf82aa63f9a5b989ab4c435705a103f8c0"},{"author":{"_account_id":8802,"name":"Vladik Romanovsky","email":"vromanso@redhat.com","username":"vladikr"},"change_message_id":"969cc7014815c026ff3c953d196ff676fba476a2","unresolved":false,"context_lines":[{"line_number":813,"context_line":"                if threads_no \u003c\u003d 1:"},{"line_number":814,"context_line":"                    continue"},{"line_number":815,"context_line":""},{"line_number":816,"context_line":"            pinning \u003d _get_pinning(threads_no, sibling_set,"},{"line_number":817,"context_line":"                                   instance_cell.cpuset)"},{"line_number":818,"context_line":"            if pinning:"},{"line_number":819,"context_line":"                break"}],"source_content_type":"text/x-python","patch_set":1,"id":"3ac371cc_4b93ab4f","line":816,"in_reply_to":"3ac371cc_82b5d2ce","updated":"2016-08-16 17:59:25.000000000","message":"Agree, thanks.","commit_id":"3a248faf82aa63f9a5b989ab4c435705a103f8c0"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"76cd60ef69824b7f5165e07d2061b4d3373e184a","unresolved":false,"context_lines":[{"line_number":806,"context_line":"            if (instance_cell.cpu_thread_policy \u003d\u003d"},{"line_number":807,"context_line":"                    fields.CPUThreadAllocationPolicy.REQUIRE):"},{"line_number":808,"context_line":"                if threads_no \u003c\u003d 1:"},{"line_number":809,"context_line":"                    LOG.debug(\u0027Skipping threads_no: %s, as it does not satisfy\u0027"},{"line_number":810,"context_line":"                              \u0027 the require policy\u0027, threads_no)"},{"line_number":811,"context_line":"                    continue"},{"line_number":812,"context_line":""},{"line_number":813,"context_line":"            pinning \u003d _get_pinning(threads_no, sibling_set,"}],"source_content_type":"text/x-python","patch_set":3,"id":"fa7ab95a_44ef811d","line":810,"range":{"start_line":809,"start_character":0,"end_line":810,"end_character":64},"updated":"2016-08-30 14:22:01.000000000","message":"threads_no will never be 0 or negative. I don\u0027t think we should log here - if we do, we should also log as an \u0027else\u0027 condition for line 815","commit_id":"0bbf8f3cd35639ee7df517bffa4c9b0692cade7e"},{"author":{"_account_id":8802,"name":"Vladik Romanovsky","email":"vromanso@redhat.com","username":"vladikr"},"change_message_id":"e7ce07fd164c354a86290c1d3c23e7879098da23","unresolved":false,"context_lines":[{"line_number":806,"context_line":"            if (instance_cell.cpu_thread_policy \u003d\u003d"},{"line_number":807,"context_line":"                    fields.CPUThreadAllocationPolicy.REQUIRE):"},{"line_number":808,"context_line":"                if threads_no \u003c\u003d 1:"},{"line_number":809,"context_line":"                    LOG.debug(\u0027Skipping threads_no: %s, as it does not satisfy\u0027"},{"line_number":810,"context_line":"                              \u0027 the require policy\u0027, threads_no)"},{"line_number":811,"context_line":"                    continue"},{"line_number":812,"context_line":""},{"line_number":813,"context_line":"            pinning \u003d _get_pinning(threads_no, sibling_set,"}],"source_content_type":"text/x-python","patch_set":3,"id":"fa7ab95a_bc5cc1f1","line":810,"range":{"start_line":809,"start_character":0,"end_line":810,"end_character":64},"in_reply_to":"fa7ab95a_44ef811d","updated":"2016-08-31 02:28:20.000000000","message":"Well, it can be 1.. I think it\u0027s important to log why do we skip it. I agree, we should log the pinning as well.","commit_id":"0bbf8f3cd35639ee7df517bffa4c9b0692cade7e"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"76cd60ef69824b7f5165e07d2061b4d3373e184a","unresolved":false,"context_lines":[{"line_number":857,"context_line":"        return"},{"line_number":858,"context_line":""},{"line_number":859,"context_line":"    if host_cell.siblings:"},{"line_number":860,"context_line":"        LOG.debug(\u0027Hyperthreading enabled, taking siblings into account for \u0027"},{"line_number":861,"context_line":"                 \u0027packing\u0027)"},{"line_number":862,"context_line":"        # Try to pack the instance cell onto cores"},{"line_number":863,"context_line":"        numa_cell \u003d _pack_instance_onto_cores("},{"line_number":864,"context_line":"            host_cell.free_siblings, instance_cell, host_cell.id,"}],"source_content_type":"text/x-python","patch_set":3,"id":"fa7ab95a_a4ea0dd9","line":861,"range":{"start_line":860,"start_character":18,"end_line":861,"end_character":27},"updated":"2016-08-30 14:22:01.000000000","message":"nit: We\u0027re checking for thread siblings, but that doesn\u0027t mean we\u0027re using hyperthreading (it could be a POWER host). How about something simpler:\n\n    Using thread siblings for packing","commit_id":"0bbf8f3cd35639ee7df517bffa4c9b0692cade7e"},{"author":{"_account_id":8802,"name":"Vladik Romanovsky","email":"vromanso@redhat.com","username":"vladikr"},"change_message_id":"e7ce07fd164c354a86290c1d3c23e7879098da23","unresolved":false,"context_lines":[{"line_number":857,"context_line":"        return"},{"line_number":858,"context_line":""},{"line_number":859,"context_line":"    if host_cell.siblings:"},{"line_number":860,"context_line":"        LOG.debug(\u0027Hyperthreading enabled, taking siblings into account for \u0027"},{"line_number":861,"context_line":"                 \u0027packing\u0027)"},{"line_number":862,"context_line":"        # Try to pack the instance cell onto cores"},{"line_number":863,"context_line":"        numa_cell \u003d _pack_instance_onto_cores("},{"line_number":864,"context_line":"            host_cell.free_siblings, instance_cell, host_cell.id,"}],"source_content_type":"text/x-python","patch_set":3,"id":"fa7ab95a_7148a2cd","line":861,"range":{"start_line":860,"start_character":18,"end_line":861,"end_character":27},"in_reply_to":"fa7ab95a_a4ea0dd9","updated":"2016-08-31 02:28:20.000000000","message":"Agree","commit_id":"0bbf8f3cd35639ee7df517bffa4c9b0692cade7e"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"76cd60ef69824b7f5165e07d2061b4d3373e184a","unresolved":false,"context_lines":[{"line_number":924,"context_line":"        instance_cell \u003d new_instance_cell"},{"line_number":925,"context_line":""},{"line_number":926,"context_line":"    elif limit_cell:"},{"line_number":927,"context_line":"        LOG.debug(\u0027No pinning requested, using limit_cell\u0027)"},{"line_number":928,"context_line":"        memory_usage \u003d host_cell.memory_usage + instance_cell.memory"},{"line_number":929,"context_line":"        cpu_usage \u003d host_cell.cpu_usage + len(instance_cell.cpuset)"},{"line_number":930,"context_line":"        cpu_limit \u003d len(host_cell.cpuset) * limit_cell.cpu_allocation_ratio"}],"source_content_type":"text/x-python","patch_set":3,"id":"fa7ab95a_645725ca","line":927,"range":{"start_line":927,"start_character":47,"end_line":927,"end_character":57},"updated":"2016-08-30 14:22:01.000000000","message":"What is limit_cell? :)","commit_id":"0bbf8f3cd35639ee7df517bffa4c9b0692cade7e"},{"author":{"_account_id":8802,"name":"Vladik Romanovsky","email":"vromanso@redhat.com","username":"vladikr"},"change_message_id":"e7ce07fd164c354a86290c1d3c23e7879098da23","unresolved":false,"context_lines":[{"line_number":924,"context_line":"        instance_cell \u003d new_instance_cell"},{"line_number":925,"context_line":""},{"line_number":926,"context_line":"    elif limit_cell:"},{"line_number":927,"context_line":"        LOG.debug(\u0027No pinning requested, using limit_cell\u0027)"},{"line_number":928,"context_line":"        memory_usage \u003d host_cell.memory_usage + instance_cell.memory"},{"line_number":929,"context_line":"        cpu_usage \u003d host_cell.cpu_usage + len(instance_cell.cpuset)"},{"line_number":930,"context_line":"        cpu_limit \u003d len(host_cell.cpuset) * limit_cell.cpu_allocation_ratio"}],"source_content_type":"text/x-python","patch_set":3,"id":"fa7ab95a_1cf76df6","line":927,"range":{"start_line":927,"start_character":47,"end_line":927,"end_character":57},"in_reply_to":"fa7ab95a_645725ca","updated":"2016-08-31 02:28:20.000000000","message":":) a place holder","commit_id":"0bbf8f3cd35639ee7df517bffa4c9b0692cade7e"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"a8b9d69b2b16d307b8668c6c1f39866bb4604716","unresolved":false,"context_lines":[{"line_number":679,"context_line":"              satisfy the sibling requirements for the instance."},{"line_number":680,"context_line":"    \"\"\""},{"line_number":681,"context_line":"    LOG.debug(\u0027Packing an instance onto a set of siblings: \u0027"},{"line_number":682,"context_line":"             \u0027    available_siblings: %(siblings)s\u0027"},{"line_number":683,"context_line":"             \u0027    instance_cell: %(cells)s\u0027"},{"line_number":684,"context_line":"             \u0027    host_cell_id: %(host_cell_id)s\u0027"},{"line_number":685,"context_line":"             \u0027    threads_per_core: %(threads_per_core)s\u0027,"}],"source_content_type":"text/x-python","patch_set":6,"id":"1a430d35_98c2ab51","line":682,"range":{"start_line":682,"start_character":14,"end_line":682,"end_character":18},"updated":"2017-02-09 10:21:32.000000000","message":"Nit: there are no new lines here, so not sure this will render quite as you are intending, but its useful info all the same.","commit_id":"ec816a6ab73274b09afb350a2e06915b935417a5"}]}
