)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"06b7b04479b82bff610af2b33116a345b5c88b7d","unresolved":false,"context_lines":[{"line_number":11,"context_line":"emulator thread pinning information along with guest vCPU pinning"},{"line_number":12,"context_line":"information. Unfortunately, there is a code path used for calculating"},{"line_number":13,"context_line":"vCPU pinning information in \u0027_pack_instance_onto_cores\u0027 which does not"},{"line_number":14,"context_line":"use this function and said code path was not ensure emulator thread"},{"line_number":15,"context_line":"pinning was now calculated."},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"Replace this code path with a call to \u0027_get_pinning\u0027, ensuring that all"},{"line_number":18,"context_line":"permutations follow a similar flow and that the emulator thread pinning"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"5f93b717_9cc18f83","line":15,"range":{"start_line":14,"start_character":37,"end_line":15,"end_character":27},"updated":"2018-01-29 17:58:04.000000000","message":"? did you mean: \"was not ensuring that the emulator thread pinning was being calculated\"","commit_id":"47cfa676e2bd683b19bcb16d4cc0ecc8fda83b3e"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"7bb2eeafa393904e15f4d47a02c45dd547f1daa4","unresolved":false,"context_lines":[{"line_number":11,"context_line":"emulator thread pinning information along with guest vCPU pinning"},{"line_number":12,"context_line":"information. Unfortunately, there is a code path used for calculating"},{"line_number":13,"context_line":"vCPU pinning information in \u0027_pack_instance_onto_cores\u0027 which does not"},{"line_number":14,"context_line":"use this function and said code path was not ensure emulator thread"},{"line_number":15,"context_line":"pinning was now calculated."},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"Replace this code path with a call to \u0027_get_pinning\u0027, ensuring that all"},{"line_number":18,"context_line":"permutations follow a similar flow and that the emulator thread pinning"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"5f93b717_8c54ea54","line":15,"range":{"start_line":14,"start_character":37,"end_line":15,"end_character":27},"in_reply_to":"5f93b717_9cc18f83","updated":"2018-01-30 10:26:31.000000000","message":"I did. Reworded entirely","commit_id":"47cfa676e2bd683b19bcb16d4cc0ecc8fda83b3e"}],"nova/tests/unit/virt/test_hardware.py":[{"author":{"_account_id":25625,"name":"Tetsuro Nakamura","email":"tetsuro.nakamura.bc@hco.ntt.co.jp","username":"tetsuro0907"},"change_message_id":"bc9d96d64d120e4d7b5ccf8fab623617ce52af63","unresolved":false,"context_lines":[{"line_number":3196,"context_line":"                cpu_policy\u003dfields.CPUAllocationPolicy.DEDICATED)])"},{"line_number":3197,"context_line":""},{"line_number":3198,"context_line":"        inst_topo \u003d hw.numa_fit_instance_to_host(host_topo, inst_topo)"},{"line_number":3199,"context_line":"        self.assertEqual({0: 1, 1: 2}, inst_topo.cells[0].cpu_pinning)"},{"line_number":3200,"context_line":"        self.assertEqual(set([3]), inst_topo.cells[0].cpuset_reserved)"}],"source_content_type":"text/x-python","patch_set":3,"id":"5f93b717_3bbc40db","line":3199,"range":{"start_line":3199,"start_character":26,"end_line":3199,"end_character":36},"updated":"2018-01-26 05:59:34.000000000","message":"Why can we say this phys core 1 is isolated cpu?\n\nIn dpdk use case, for example, we set isolcpus for the cores set in vcpu_pin_set, but we don\u0027t set isolcpus for the other cores. This means that we can\u0027t guarantee the actual sibling (phys core 0?) is used by other applications (or kernel system).\n\nFor this reason, I don\u0027t think it is a good idea to supply to end users this phys core 1 as an isolated cpu for VM.\n\nI\u0027m okay with this core to be put in `cpu_reserved`. But as an NFV operator, not for vcpu_pinning at least when the thread policy is isolated.","commit_id":"47cfa676e2bd683b19bcb16d4cc0ecc8fda83b3e"},{"author":{"_account_id":25625,"name":"Tetsuro Nakamura","email":"tetsuro.nakamura.bc@hco.ntt.co.jp","username":"tetsuro0907"},"change_message_id":"ec8e31f03459118326f2ccf5ab99998bc7f9d2cf","unresolved":false,"context_lines":[{"line_number":3196,"context_line":"                cpu_policy\u003dfields.CPUAllocationPolicy.DEDICATED)])"},{"line_number":3197,"context_line":""},{"line_number":3198,"context_line":"        inst_topo \u003d hw.numa_fit_instance_to_host(host_topo, inst_topo)"},{"line_number":3199,"context_line":"        self.assertEqual({0: 1, 1: 2}, inst_topo.cells[0].cpu_pinning)"},{"line_number":3200,"context_line":"        self.assertEqual(set([3]), inst_topo.cells[0].cpuset_reserved)"}],"source_content_type":"text/x-python","patch_set":3,"id":"5f93b717_2d393940","line":3199,"range":{"start_line":3199,"start_character":26,"end_line":3199,"end_character":36},"in_reply_to":"5f93b717_021471f4","updated":"2018-01-29 00:40:46.000000000","message":"Oops, I was reading this test as CPUThreadAllocationPolicy is isolated cases. Sorry, please forget about the comments above.\n\nYup, this is fine with me. And can\u0027t we enhance the bug fix to the case where CPUThreadAllocationPolicy is \u0027isolated\u0027?  Actually, I looked into that case and submitted some patches on top of this branch.","commit_id":"47cfa676e2bd683b19bcb16d4cc0ecc8fda83b3e"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"38ea464b3730c13ed89e407d8f962258dbb3974a","unresolved":false,"context_lines":[{"line_number":3196,"context_line":"                cpu_policy\u003dfields.CPUAllocationPolicy.DEDICATED)])"},{"line_number":3197,"context_line":""},{"line_number":3198,"context_line":"        inst_topo \u003d hw.numa_fit_instance_to_host(host_topo, inst_topo)"},{"line_number":3199,"context_line":"        self.assertEqual({0: 1, 1: 2}, inst_topo.cells[0].cpu_pinning)"},{"line_number":3200,"context_line":"        self.assertEqual(set([3]), inst_topo.cells[0].cpuset_reserved)"}],"source_content_type":"text/x-python","patch_set":3,"id":"5f93b717_021471f4","line":3199,"range":{"start_line":3199,"start_character":26,"end_line":3199,"end_character":36},"in_reply_to":"5f93b717_3bbc40db","updated":"2018-01-26 09:21:19.000000000","message":"But that\u0027s unrelated to this change. This behavior already exists in the existing implementation:\n\n  https://github.com/openstack/nova/blob/bf1f835c/nova/virt/hardware.py#L868-L875\n\nIf you think it shouldn\u0027t behave this way, then that\u0027s a bug (well, an RFE), but I don\u0027t see how it should be fixed here","commit_id":"47cfa676e2bd683b19bcb16d4cc0ecc8fda83b3e"},{"author":{"_account_id":25625,"name":"Tetsuro Nakamura","email":"tetsuro.nakamura.bc@hco.ntt.co.jp","username":"tetsuro0907"},"change_message_id":"ec8e31f03459118326f2ccf5ab99998bc7f9d2cf","unresolved":false,"context_lines":[{"line_number":3196,"context_line":"                cpu_policy\u003dfields.CPUAllocationPolicy.DEDICATED)])"},{"line_number":3197,"context_line":""},{"line_number":3198,"context_line":"        inst_topo \u003d hw.numa_fit_instance_to_host(host_topo, inst_topo)"},{"line_number":3199,"context_line":"        self.assertEqual({0: 1, 1: 2}, inst_topo.cells[0].cpu_pinning)"},{"line_number":3200,"context_line":"        self.assertEqual(set([3]), inst_topo.cells[0].cpuset_reserved)"}],"source_content_type":"text/x-python","patch_set":3,"id":"5f93b717_4d15a59b","line":3200,"range":{"start_line":3199,"start_character":7,"end_line":3200,"end_character":70},"updated":"2018-01-29 00:40:46.000000000","message":"Since CPUThreadAllocationPolicy is \u0027prefered\u0027 by default, \n\n  cpu_pinning\u003d{0: 2, 1: 3}, cpuset_reserved\u003dset([1])\n\nis more appropriate allocation, isn\u0027t it?\n\nIt seems that if the enhancement mentioned above (in https://review.openstack.org/#/c/538700/) is available for us, we could correct this there, otherwise, we might have to consider about this allocation improvement separately.","commit_id":"47cfa676e2bd683b19bcb16d4cc0ecc8fda83b3e"}],"nova/virt/hardware.py":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"7bb2eeafa393904e15f4d47a02c45dd547f1daa4","unresolved":false,"context_lines":[{"line_number":691,"context_line":"    # We build up a data structure that answers the question: \u0027Given the"},{"line_number":692,"context_line":"    # number of threads I want to pack, give me a list of all the available"},{"line_number":693,"context_line":"    # sibling sets (or groups thereof) that can accommodate it\u0027"},{"line_number":694,"context_line":"    sibling_sets \u003d collections.defaultdict(list)"},{"line_number":695,"context_line":"    for sib in available_siblings:"},{"line_number":696,"context_line":"        for threads_no in range(1, len(sib) + 1):"},{"line_number":697,"context_line":"            sibling_sets[threads_no].append(sib)"},{"line_number":698,"context_line":"    LOG.debug(\u0027Built sibling_sets: %(siblings)s\u0027, {\u0027siblings\u0027: sibling_sets})"},{"line_number":699,"context_line":""},{"line_number":700,"context_line":"    pinning \u003d None"}],"source_content_type":"text/x-python","patch_set":3,"id":"5f93b717_6f3dd0c2","line":697,"range":{"start_line":694,"start_character":0,"end_line":697,"end_character":48},"updated":"2018-01-30 10:26:31.000000000","message":"Per question on 879, if we have siblings then \u00271\u0027 is going to be a valid key. The previous change in this series ensured we will always have siblings.","commit_id":"47cfa676e2bd683b19bcb16d4cc0ecc8fda83b3e"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"06b7b04479b82bff610af2b33116a345b5c88b7d","unresolved":false,"context_lines":[{"line_number":874,"context_line":"                fields.CPUThreadAllocationPolicy.REQUIRE and"},{"line_number":875,"context_line":"                not pinning):"},{"line_number":876,"context_line":"            threads_no \u003d 1"},{"line_number":877,"context_line":"            # we create a \"fake\" sibling set by splitting all sibling sets and"},{"line_number":878,"context_line":"            # treating each core as if it has no siblings"},{"line_number":879,"context_line":"            sibling_set \u003d [set([x]) for x in itertools.chain(*sibling_sets[1])]"},{"line_number":880,"context_line":"            pinning, cpuset_reserved \u003d _get_pinning("},{"line_number":881,"context_line":"                threads_no, sibling_set,"}],"source_content_type":"text/x-python","patch_set":3,"id":"5f93b717_1ce1ffd0","line":878,"range":{"start_line":877,"start_character":0,"end_line":878,"end_character":57},"updated":"2018-01-29 17:58:04.000000000","message":"why though?","commit_id":"47cfa676e2bd683b19bcb16d4cc0ecc8fda83b3e"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"7bb2eeafa393904e15f4d47a02c45dd547f1daa4","unresolved":false,"context_lines":[{"line_number":874,"context_line":"                fields.CPUThreadAllocationPolicy.REQUIRE and"},{"line_number":875,"context_line":"                not pinning):"},{"line_number":876,"context_line":"            threads_no \u003d 1"},{"line_number":877,"context_line":"            # we create a \"fake\" sibling set by splitting all sibling sets and"},{"line_number":878,"context_line":"            # treating each core as if it has no siblings"},{"line_number":879,"context_line":"            sibling_set \u003d [set([x]) for x in itertools.chain(*sibling_sets[1])]"},{"line_number":880,"context_line":"            pinning, cpuset_reserved \u003d _get_pinning("},{"line_number":881,"context_line":"                threads_no, sibling_set,"}],"source_content_type":"text/x-python","patch_set":3,"id":"5f93b717_4f17b446","line":878,"range":{"start_line":877,"start_character":0,"end_line":878,"end_character":57},"in_reply_to":"5f93b717_1ce1ffd0","updated":"2018-01-30 10:26:31.000000000","message":"Done","commit_id":"47cfa676e2bd683b19bcb16d4cc0ecc8fda83b3e"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"06b7b04479b82bff610af2b33116a345b5c88b7d","unresolved":false,"context_lines":[{"line_number":876,"context_line":"            threads_no \u003d 1"},{"line_number":877,"context_line":"            # we create a \"fake\" sibling set by splitting all sibling sets and"},{"line_number":878,"context_line":"            # treating each core as if it has no siblings"},{"line_number":879,"context_line":"            sibling_set \u003d [set([x]) for x in itertools.chain(*sibling_sets[1])]"},{"line_number":880,"context_line":"            pinning, cpuset_reserved \u003d _get_pinning("},{"line_number":881,"context_line":"                threads_no, sibling_set,"},{"line_number":882,"context_line":"                instance_cell.cpuset,"}],"source_content_type":"text/x-python","patch_set":3,"id":"5f93b717_3cdb9b1b","line":879,"range":{"start_line":879,"start_character":62,"end_line":879,"end_character":77},"updated":"2018-01-29 17:58:04.000000000","message":"is the sibling_sets dict guaranteed to have a key of 1?","commit_id":"47cfa676e2bd683b19bcb16d4cc0ecc8fda83b3e"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"7bb2eeafa393904e15f4d47a02c45dd547f1daa4","unresolved":false,"context_lines":[{"line_number":876,"context_line":"            threads_no \u003d 1"},{"line_number":877,"context_line":"            # we create a \"fake\" sibling set by splitting all sibling sets and"},{"line_number":878,"context_line":"            # treating each core as if it has no siblings"},{"line_number":879,"context_line":"            sibling_set \u003d [set([x]) for x in itertools.chain(*sibling_sets[1])]"},{"line_number":880,"context_line":"            pinning, cpuset_reserved \u003d _get_pinning("},{"line_number":881,"context_line":"                threads_no, sibling_set,"},{"line_number":882,"context_line":"                instance_cell.cpuset,"}],"source_content_type":"text/x-python","patch_set":3,"id":"5f93b717_cf598435","line":879,"range":{"start_line":879,"start_character":62,"end_line":879,"end_character":77},"in_reply_to":"5f93b717_3cdb9b1b","updated":"2018-01-30 10:26:31.000000000","message":"Yes, see above (line 697)","commit_id":"47cfa676e2bd683b19bcb16d4cc0ecc8fda83b3e"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"06b7b04479b82bff610af2b33116a345b5c88b7d","unresolved":false,"context_lines":[{"line_number":886,"context_line":""},{"line_number":887,"context_line":"    if not pinning:"},{"line_number":888,"context_line":"        return"},{"line_number":889,"context_line":""},{"line_number":890,"context_line":"    LOG.debug(\u0027Selected cores for pinning: %s, in cell %s\u0027, pinning,"},{"line_number":891,"context_line":"                                                            host_cell_id)"},{"line_number":892,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"5f93b717_3caddb87","line":889,"updated":"2018-01-29 17:58:04.000000000","message":"unrelated whitespace change","commit_id":"47cfa676e2bd683b19bcb16d4cc0ecc8fda83b3e"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"7bb2eeafa393904e15f4d47a02c45dd547f1daa4","unresolved":false,"context_lines":[{"line_number":886,"context_line":""},{"line_number":887,"context_line":"    if not pinning:"},{"line_number":888,"context_line":"        return"},{"line_number":889,"context_line":""},{"line_number":890,"context_line":"    LOG.debug(\u0027Selected cores for pinning: %s, in cell %s\u0027, pinning,"},{"line_number":891,"context_line":"                                                            host_cell_id)"},{"line_number":892,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"5f93b717_8f3ffcb2","line":889,"in_reply_to":"5f93b717_3caddb87","updated":"2018-01-30 10:26:31.000000000","message":"Done","commit_id":"47cfa676e2bd683b19bcb16d4cc0ecc8fda83b3e"}]}
