)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":8768,"name":"Chris Friesen","email":"chris.friesen@windriver.com","username":"cbf123"},"change_message_id":"4f08585a3b25f779da679ba8cf7335a52615dda7","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Stephen Finucane \u003cstephen.finucane@intel.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2015-07-27 11:41:14 +0100"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Add \u0027hw:cpu_threads_policy\u003dseparate\u0027 scheduling"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Change-Id: I18b3a6413450d5f0cbc3eb8e66a2bcda23293478"},{"line_number":10,"context_line":"Implements: blueprint virt-driver-cpu-thread-pinning"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":10,"id":"3a50d1a3_bc5a41f1","line":7,"updated":"2015-07-29 22:45:59.000000000","message":"maybe expand a little bit on how this behaves?  That way the reader doesn\u0027t need to go look up the blueprint.","commit_id":"2f37cb24e310b2b0586908d3a5c76412caa3994b"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"e488930521e4cf048409d73cfefb680cc5cf6b8f","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Stephen Finucane \u003cstephen.finucane@intel.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2015-07-27 11:41:14 +0100"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Add \u0027hw:cpu_threads_policy\u003dseparate\u0027 scheduling"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Change-Id: I18b3a6413450d5f0cbc3eb8e66a2bcda23293478"},{"line_number":10,"context_line":"Implements: blueprint virt-driver-cpu-thread-pinning"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":10,"id":"3a50d1a3_8346ee4d","line":7,"in_reply_to":"3a50d1a3_bc5a41f1","updated":"2015-07-30 10:39:55.000000000","message":"Yes, I need to flesh this (and the other \u0027Add XXX scheduling\u0027) message out.","commit_id":"2f37cb24e310b2b0586908d3a5c76412caa3994b"},{"author":{"_account_id":8768,"name":"Chris Friesen","email":"chris.friesen@windriver.com","username":"cbf123"},"change_message_id":"6468ee81d1e54566fe5c928c2c9b37badb19d914","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Add \u0027hw:cpu_threads_policy\u003dseparate\u0027 scheduling"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"The \u0027separate\u0027 CPU threads policy requires a host with an SMT"},{"line_number":10,"context_line":"architecture but ensures vCPUs are allocated from non-thread siblings."},{"line_number":11,"context_line":"This is useful for workloads that may see performance impacts due to"},{"line_number":12,"context_line":"contention."},{"line_number":13,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":15,"id":"fa80f949_6d737cb2","line":10,"updated":"2015-11-04 15:09:13.000000000","message":"For \u0027separate\u0027 (as well as \u0027isolate\u0027) I\u0027m not sure it makes sense to require an SMT host.  It seems to me that it would make more sense for it to mean:  can run on either SMT or non-SMT, but if it\u0027s on SMT then I want separate (or isolated) threads.\n\nRunning on non-SMT host essentially provides separate (and isolated) threads already, so it should be suitable for any workload that requests either of those policies.\n\nFrom an operator perspective it may make sense to prefer SMT hosts, but do we really want to prevent the instance from running if only non-SMT hosts are available?","commit_id":"d0ee89252e80d1850f4d67db7f1d2aea59d756db"},{"author":{"_account_id":8768,"name":"Chris Friesen","email":"chris.friesen@windriver.com","username":"cbf123"},"change_message_id":"e3d7ae32e1deaa0300858ccc029e4ad095034c79","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Add \u0027hw:cpu_threads_policy\u003dseparate\u0027 scheduling"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"The \u0027separate\u0027 CPU threads policy requires a host with an SMT"},{"line_number":10,"context_line":"architecture but ensures vCPUs are allocated from non-thread siblings."},{"line_number":11,"context_line":"This is useful for workloads that may see performance impacts due to"},{"line_number":12,"context_line":"contention."},{"line_number":13,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":15,"id":"fa80f949_5eae5d86","line":10,"in_reply_to":"fa80f949_4820e69b","updated":"2015-11-04 17:21:46.000000000","message":"Actually, the spec already says something like the above for isolate/separate:\n\n\"if the host has threads, each vCPU will be placed...\"\n\nNote the \"if\".  That seems to indicate that it would be valid to place such instances on hosts which do not have threads.\n\nOf course, the spec also says \"if the host has threads\" for the \"require\" case, which makes no sense and I\u0027ll add a comment in the spec review.","commit_id":"d0ee89252e80d1850f4d67db7f1d2aea59d756db"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"acaedae4e2b20d9ad6df969a693caec9df753925","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Add \u0027hw:cpu_threads_policy\u003dseparate\u0027 scheduling"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"The \u0027separate\u0027 CPU threads policy requires a host with an SMT"},{"line_number":10,"context_line":"architecture but ensures vCPUs are allocated from non-thread siblings."},{"line_number":11,"context_line":"This is useful for workloads that may see performance impacts due to"},{"line_number":12,"context_line":"contention."},{"line_number":13,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":15,"id":"fa80f949_4820e69b","line":10,"in_reply_to":"fa80f949_6d737cb2","updated":"2015-11-04 15:24:13.000000000","message":"I think it makes sense to redirect this discussion to the spec?\n\n    https://review.openstack.org/#/c/241355/","commit_id":"d0ee89252e80d1850f4d67db7f1d2aea59d756db"}],"nova/tests/unit/virt/test_hardware.py":[{"author":{"_account_id":8768,"name":"Chris Friesen","email":"chris.friesen@windriver.com","username":"cbf123"},"change_message_id":"4f08585a3b25f779da679ba8cf7335a52615dda7","unresolved":false,"context_lines":[{"line_number":2032,"context_line":"        inst_pin \u003d hw._numa_fit_instance_cell_with_pinning(host_pin, inst_pin)"},{"line_number":2033,"context_line":"        self.assertInstanceCellPinned(inst_pin)"},{"line_number":2034,"context_line":"        got_topo \u003d objects.VirtCPUTopology(sockets\u003d1, cores\u003d2, threads\u003d1)"},{"line_number":2035,"context_line":"        self.assertEqualTopology(got_topo, inst_pin.cpu_topology)"},{"line_number":2036,"context_line":""},{"line_number":2037,"context_line":"    def test_get_pinning_separate_policy_fits_w_usage(self):"},{"line_number":2038,"context_line":"        host_pin \u003d objects.NUMACell("}],"source_content_type":"text/x-python","patch_set":10,"id":"3a50d1a3_bcdfa139","line":2035,"updated":"2015-07-29 22:45:59.000000000","message":"Maybe check here and below that the set of pCPUs being used is what we expect?","commit_id":"2f37cb24e310b2b0586908d3a5c76412caa3994b"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"e488930521e4cf048409d73cfefb680cc5cf6b8f","unresolved":false,"context_lines":[{"line_number":2032,"context_line":"        inst_pin \u003d hw._numa_fit_instance_cell_with_pinning(host_pin, inst_pin)"},{"line_number":2033,"context_line":"        self.assertInstanceCellPinned(inst_pin)"},{"line_number":2034,"context_line":"        got_topo \u003d objects.VirtCPUTopology(sockets\u003d1, cores\u003d2, threads\u003d1)"},{"line_number":2035,"context_line":"        self.assertEqualTopology(got_topo, inst_pin.cpu_topology)"},{"line_number":2036,"context_line":""},{"line_number":2037,"context_line":"    def test_get_pinning_separate_policy_fits_w_usage(self):"},{"line_number":2038,"context_line":"        host_pin \u003d objects.NUMACell("}],"source_content_type":"text/x-python","patch_set":10,"id":"3a50d1a3_03717ea8","line":2035,"in_reply_to":"3a50d1a3_bcdfa139","updated":"2015-07-30 10:39:55.000000000","message":"Agreed.","commit_id":"2f37cb24e310b2b0586908d3a5c76412caa3994b"}],"nova/virt/hardware.py":[{"author":{"_account_id":8768,"name":"Chris Friesen","email":"chris.friesen@windriver.com","username":"cbf123"},"change_message_id":"7ca06205f60ef6a93dbc818fca1f761379366bd8","unresolved":false,"context_lines":[{"line_number":713,"context_line":"    elif instance_cell.cpu_threads_policy \u003d\u003d thread_policies.SEPARATE:"},{"line_number":714,"context_line":"        LOG.debug(\"Requested \u0027separate\u0027 threads policy for %d cores\","},{"line_number":715,"context_line":"                  len(instance_cell))"},{"line_number":716,"context_line":"        usable_cores \u003d map(lambda s: list(s)[:1], sibling_sets[threads_no])"},{"line_number":717,"context_line":""},{"line_number":718,"context_line":"        if len(usable_cores) \u003c len(instance_cell):"},{"line_number":719,"context_line":"            return"}],"source_content_type":"text/x-python","patch_set":15,"id":"fa80f949_8d04a07e","line":716,"updated":"2015-11-04 15:16:32.000000000","message":"Just curious...why [:1] instead of [0]?","commit_id":"d0ee89252e80d1850f4d67db7f1d2aea59d756db"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"acaedae4e2b20d9ad6df969a693caec9df753925","unresolved":false,"context_lines":[{"line_number":713,"context_line":"    elif instance_cell.cpu_threads_policy \u003d\u003d thread_policies.SEPARATE:"},{"line_number":714,"context_line":"        LOG.debug(\"Requested \u0027separate\u0027 threads policy for %d cores\","},{"line_number":715,"context_line":"                  len(instance_cell))"},{"line_number":716,"context_line":"        usable_cores \u003d map(lambda s: list(s)[:1], sibling_sets[threads_no])"},{"line_number":717,"context_line":""},{"line_number":718,"context_line":"        if len(usable_cores) \u003c len(instance_cell):"},{"line_number":719,"context_line":"            return"}],"source_content_type":"text/x-python","patch_set":15,"id":"fa80f949_a8a072f5","line":716,"in_reply_to":"fa80f949_8d04a07e","updated":"2015-11-04 15:24:13.000000000","message":"Because Python :)\n\n    \u003e\u003e\u003e x \u003d [1, 2, 3]\n    \u003e\u003e\u003e x[0]         \n    1                \n    \u003e\u003e\u003e x[:1]        \n    [1]","commit_id":"d0ee89252e80d1850f4d67db7f1d2aea59d756db"},{"author":{"_account_id":8768,"name":"Chris Friesen","email":"chris.friesen@windriver.com","username":"cbf123"},"change_message_id":"e3d7ae32e1deaa0300858ccc029e4ad095034c79","unresolved":false,"context_lines":[{"line_number":713,"context_line":"    elif instance_cell.cpu_threads_policy \u003d\u003d thread_policies.SEPARATE:"},{"line_number":714,"context_line":"        LOG.debug(\"Requested \u0027separate\u0027 threads policy for %d cores\","},{"line_number":715,"context_line":"                  len(instance_cell))"},{"line_number":716,"context_line":"        usable_cores \u003d map(lambda s: list(s)[:1], sibling_sets[threads_no])"},{"line_number":717,"context_line":""},{"line_number":718,"context_line":"        if len(usable_cores) \u003c len(instance_cell):"},{"line_number":719,"context_line":"            return"}],"source_content_type":"text/x-python","patch_set":15,"id":"fa80f949_5e773d3a","line":716,"in_reply_to":"fa80f949_a8a072f5","updated":"2015-11-04 17:21:46.000000000","message":"gah...that\u0027ll teach me. :)","commit_id":"d0ee89252e80d1850f4d67db7f1d2aea59d756db"}]}
