)]}'
{"doc/source/common/numa-live-migration-warning.txt":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"ecc76b06b29a3b19d317a56d01b616417ccbe18a","unresolved":false,"context_lines":[{"line_number":1,"context_line":".. important::"},{"line_number":2,"context_line":""},{"line_number":3,"context_line":"   Unless :oslo.config:option:`specifically enabled"},{"line_number":4,"context_line":"   \u003cworkarounds.enable_numa_live_migration\u003e`, live migration is not currently"},{"line_number":5,"context_line":"   possible for instances with a NUMA topology. This includes instances using"},{"line_number":6,"context_line":"   CPU pinning, huge pages or PCI passthrough. Refer to `bug #1289064`__ for"},{"line_number":7,"context_line":"   more information."},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"   __ https://bugs.launchpad.net/nova/+bug/1289064"}],"source_content_type":"text/plain","patch_set":7,"id":"3f79a3b5_01b1f4e3","line":9,"range":{"start_line":2,"start_character":0,"end_line":9,"end_character":50},"updated":"2018-10-31 17:07:08.000000000","message":"the current warning is ignoring the fact that we have numa topology support in hyperv however this change only modifies the libvirt driver.\n\ncan you specifically call out that this applies to the libvirt driver only.","commit_id":"caa85cf50b657db14c5bd2136bf6e55c8800214f"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"84887120b2bf10e37b6fc9bd05dd46792ee9af5d","unresolved":false,"context_lines":[{"line_number":1,"context_line":".. important::"},{"line_number":2,"context_line":""},{"line_number":3,"context_line":"   Unless :oslo.config:option:`specifically enabled"},{"line_number":4,"context_line":"   \u003cworkarounds.enable_numa_live_migration\u003e`, live migration is not currently"},{"line_number":5,"context_line":"   possible for instances with a NUMA topology. This includes instances using"},{"line_number":6,"context_line":"   CPU pinning, huge pages or PCI passthrough. Refer to `bug #1289064`__ for"},{"line_number":7,"context_line":"   more information."},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"   __ https://bugs.launchpad.net/nova/+bug/1289064"}],"source_content_type":"text/plain","patch_set":7,"id":"3f79a3b5_e412bb64","line":9,"range":{"start_line":2,"start_character":0,"end_line":9,"end_character":50},"in_reply_to":"3f79a3b5_01b1f4e3","updated":"2018-11-01 10:13:57.000000000","message":"\u003e can you specifically call out that this applies to the libvirt\n \u003e driver only.\n\nWill do.","commit_id":"caa85cf50b657db14c5bd2136bf6e55c8800214f"},{"author":{"_account_id":8768,"name":"Chris Friesen","email":"chris.friesen@windriver.com","username":"cbf123"},"change_message_id":"7382e82d8eecd0015fde3e0cd7a33d5502e33839","unresolved":false,"context_lines":[{"line_number":1,"context_line":".. important::"},{"line_number":2,"context_line":""},{"line_number":3,"context_line":"   Unless :oslo.config:option:`specifically enabled"},{"line_number":4,"context_line":"   \u003cworkarounds.enable_numa_live_migration\u003e`, live migration is not currently"},{"line_number":5,"context_line":"   possible for instances with a NUMA topology. This includes instances using"},{"line_number":6,"context_line":"   CPU pinning, huge pages or PCI passthrough. Refer to `bug #1289064`__ for"},{"line_number":7,"context_line":"   more information."},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"   __ https://bugs.launchpad.net/nova/+bug/1289064"}],"source_content_type":"text/plain","patch_set":7,"id":"3f79a3b5_acc11733","line":9,"range":{"start_line":2,"start_character":0,"end_line":9,"end_character":50},"in_reply_to":"3f79a3b5_01b1f4e3","updated":"2018-10-31 17:53:45.000000000","message":"Does hyperv do the right thing currently with respect to live migrations of instances with numa topology?  If not, should we make this change apply to hyperv as well?","commit_id":"caa85cf50b657db14c5bd2136bf6e55c8800214f"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"84887120b2bf10e37b6fc9bd05dd46792ee9af5d","unresolved":false,"context_lines":[{"line_number":1,"context_line":".. important::"},{"line_number":2,"context_line":""},{"line_number":3,"context_line":"   Unless :oslo.config:option:`specifically enabled"},{"line_number":4,"context_line":"   \u003cworkarounds.enable_numa_live_migration\u003e`, live migration is not currently"},{"line_number":5,"context_line":"   possible for instances with a NUMA topology. This includes instances using"},{"line_number":6,"context_line":"   CPU pinning, huge pages or PCI passthrough. Refer to `bug #1289064`__ for"},{"line_number":7,"context_line":"   more information."},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"   __ https://bugs.launchpad.net/nova/+bug/1289064"}],"source_content_type":"text/plain","patch_set":7,"id":"3f79a3b5_4424cfc3","line":9,"range":{"start_line":2,"start_character":0,"end_line":9,"end_character":50},"in_reply_to":"3f79a3b5_acc11733","updated":"2018-11-01 10:13:57.000000000","message":"\u003e Does hyperv do the right thing currently with respect to live\n \u003e migrations of instances with numa topology?  If not, should we make\n \u003e this change apply to hyperv as well?\n\nDocumentation for this is thin on the ground, but as Hyper-V doesn\u0027t support CPU pinning or mempages and doesn\u0027t have XML to regenerate, any issues it could conceivably have would manifest differently to this.","commit_id":"caa85cf50b657db14c5bd2136bf6e55c8800214f"},{"author":{"_account_id":8768,"name":"Chris Friesen","email":"chris.friesen@windriver.com","username":"cbf123"},"change_message_id":"0e5598c503008336d7f3f46b2c701eab0dbf1e59","unresolved":false,"context_lines":[{"line_number":3,"context_line":"   Unless :oslo.config:option:`specifically enabled"},{"line_number":4,"context_line":"   \u003cworkarounds.enable_numa_live_migration\u003e`, live migration is not currently"},{"line_number":5,"context_line":"   possible for instances with a NUMA topology when using the libvirt driver."},{"line_number":6,"context_line":"   This includes instances using CPU pinning, huge pages or PCI passthrough."},{"line_number":7,"context_line":"   Refer to `bug #1289064`__ for more information."},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"   __ https://bugs.launchpad.net/nova/+bug/1289064"}],"source_content_type":"text/plain","patch_set":8,"id":"3f79a3b5_741acfc7","line":6,"range":{"start_line":6,"start_character":31,"end_line":6,"end_character":76},"updated":"2018-11-01 18:09:27.000000000","message":"what about the case where the flavor/image explicitly sets the guest topology?  (guest vcpu to guest numa mapping, number of guest numa nodes, etc.)  I think that\u0027d result in getting a NUMA topology as well.\n\nIs it worth mentioning here?","commit_id":"05c76eae0dc0595dd7277f73a1d41ba2206e179c"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"459c50796603bd2cb75d5ac02b2380c92acb50da","unresolved":false,"context_lines":[{"line_number":3,"context_line":"   Unless :oslo.config:option:`specifically enabled"},{"line_number":4,"context_line":"   \u003cworkarounds.enable_numa_live_migration\u003e`, live migration is not currently"},{"line_number":5,"context_line":"   possible for instances with a NUMA topology when using the libvirt driver."},{"line_number":6,"context_line":"   This includes instances using CPU pinning, huge pages or PCI passthrough."},{"line_number":7,"context_line":"   Refer to `bug #1289064`__ for more information."},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"   __ https://bugs.launchpad.net/nova/+bug/1289064"}],"source_content_type":"text/plain","patch_set":8,"id":"3f79a3b5_682ad997","line":6,"range":{"start_line":6,"start_character":31,"end_line":6,"end_character":76},"in_reply_to":"3f79a3b5_144a62ad","updated":"2018-11-02 17:21:26.000000000","message":"That\u0027s clearer, yes. Done.","commit_id":"05c76eae0dc0595dd7277f73a1d41ba2206e179c"},{"author":{"_account_id":8768,"name":"Chris Friesen","email":"chris.friesen@windriver.com","username":"cbf123"},"change_message_id":"4c3a62e1d2301428a24dc8f74a2d4ab7e2440b0e","unresolved":false,"context_lines":[{"line_number":3,"context_line":"   Unless :oslo.config:option:`specifically enabled"},{"line_number":4,"context_line":"   \u003cworkarounds.enable_numa_live_migration\u003e`, live migration is not currently"},{"line_number":5,"context_line":"   possible for instances with a NUMA topology when using the libvirt driver."},{"line_number":6,"context_line":"   This includes instances using CPU pinning, huge pages or PCI passthrough."},{"line_number":7,"context_line":"   Refer to `bug #1289064`__ for more information."},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"   __ https://bugs.launchpad.net/nova/+bug/1289064"}],"source_content_type":"text/plain","patch_set":8,"id":"3f79a3b5_144a62ad","line":6,"range":{"start_line":6,"start_character":31,"end_line":6,"end_character":76},"in_reply_to":"3f79a3b5_6a142aeb","updated":"2018-11-02 15:43:19.000000000","message":"ah, I read it as the second sentence was illustrating ways you could end up with a numa topology, but I can see how it would make sense the way you intended.\n\nWhat about something like this?\n\n\"...live migration is not currently possible for instances with a NUMA topology, whether specified explicitly or added implicitly due to the use of CPU pinning, huge pages, or PCI passthrough.\"","commit_id":"05c76eae0dc0595dd7277f73a1d41ba2206e179c"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"c085285b35a3ac4e0ce57289967a2ba84be8b2cd","unresolved":false,"context_lines":[{"line_number":3,"context_line":"   Unless :oslo.config:option:`specifically enabled"},{"line_number":4,"context_line":"   \u003cworkarounds.enable_numa_live_migration\u003e`, live migration is not currently"},{"line_number":5,"context_line":"   possible for instances with a NUMA topology when using the libvirt driver."},{"line_number":6,"context_line":"   This includes instances using CPU pinning, huge pages or PCI passthrough."},{"line_number":7,"context_line":"   Refer to `bug #1289064`__ for more information."},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"   __ https://bugs.launchpad.net/nova/+bug/1289064"}],"source_content_type":"text/plain","patch_set":8,"id":"3f79a3b5_6a142aeb","line":6,"range":{"start_line":6,"start_character":31,"end_line":6,"end_character":76},"in_reply_to":"3f79a3b5_741acfc7","updated":"2018-11-01 19:34:04.000000000","message":"I thought I\u0027d covered that with the previous sentence. What I\u0027m listing here is the additional (implicit) cases that would result in a NUMA topology. Open to rewording suggestions though, given that it\u0027s probably not as clear as it could be","commit_id":"05c76eae0dc0595dd7277f73a1d41ba2206e179c"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"69c02bb434da869a196bfc23dec60205219d1add","unresolved":false,"context_lines":[{"line_number":3,"context_line":"   Unless :oslo.config:option:`specifically enabled"},{"line_number":4,"context_line":"   \u003cworkarounds.enable_numa_live_migration\u003e`, live migration is not currently"},{"line_number":5,"context_line":"   possible for instances with a NUMA topology, whether specified explicitly or"},{"line_number":6,"context_line":"   added implicitly due to the use of CPU pinning, huge pages, or PCI"},{"line_number":7,"context_line":"   passthrough. Refer to `bug #1289064`__ for more information."},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"   __ https://bugs.launchpad.net/nova/+bug/1289064"}],"source_content_type":"text/plain","patch_set":9,"id":"3f79a3b5_753dcd8b","line":7,"range":{"start_line":6,"start_character":66,"end_line":7,"end_character":15},"updated":"2018-11-02 18:03:04.000000000","message":"also pci pasthough does not create a numa topology implicitly\n\nthis weird that its the only numaish thing that does not but ya numa affinity only kick in with pci device if the guest already has a numa topology from something else.","commit_id":"f476977513dc2b53773f4a3893df63566cd22d5a"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"69c02bb434da869a196bfc23dec60205219d1add","unresolved":false,"context_lines":[{"line_number":1,"context_line":".. important::"},{"line_number":2,"context_line":""},{"line_number":3,"context_line":"   Unless :oslo.config:option:`specifically enabled"},{"line_number":4,"context_line":"   \u003cworkarounds.enable_numa_live_migration\u003e`, live migration is not currently"},{"line_number":5,"context_line":"   possible for instances with a NUMA topology, whether specified explicitly or"},{"line_number":6,"context_line":"   added implicitly due to the use of CPU pinning, huge pages, or PCI"},{"line_number":7,"context_line":"   passthrough. Refer to `bug #1289064`__ for more information."},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"   __ https://bugs.launchpad.net/nova/+bug/1289064"}],"source_content_type":"text/plain","patch_set":9,"id":"3f79a3b5_5577718f","line":7,"range":{"start_line":3,"start_character":3,"end_line":7,"end_character":63},"updated":"2018-11-02 18:03:04.000000000","message":"libvirt is still missing from this text...","commit_id":"f476977513dc2b53773f4a3893df63566cd22d5a"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"726804cd6749c1057cfc0a4c1f6c98b35d5c3c56","unresolved":false,"context_lines":[{"line_number":3,"context_line":"   Unless :oslo.config:option:`specifically enabled"},{"line_number":4,"context_line":"   \u003cworkarounds.enable_numa_live_migration\u003e`, live migration is not currently"},{"line_number":5,"context_line":"   possible for instances with a NUMA topology, whether specified explicitly or"},{"line_number":6,"context_line":"   added implicitly due to the use of CPU pinning, huge pages, or PCI"},{"line_number":7,"context_line":"   passthrough. Refer to `bug #1289064`__ for more information."},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"   __ https://bugs.launchpad.net/nova/+bug/1289064"}],"source_content_type":"text/plain","patch_set":9,"id":"3f79a3b5_896a1fb2","line":7,"range":{"start_line":6,"start_character":66,"end_line":7,"end_character":15},"in_reply_to":"3f79a3b5_753dcd8b","updated":"2018-12-12 17:58:04.000000000","message":"Done","commit_id":"f476977513dc2b53773f4a3893df63566cd22d5a"}],"nova/api/openstack/compute/migrate_server.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"a294101b29803352c11924d09436cb186b5240fe","unresolved":false,"context_lines":[{"line_number":102,"context_line":"                                                         strict\u003dTrue)"},{"line_number":103,"context_line":""},{"line_number":104,"context_line":"        instance \u003d common.get_instance(self.compute_api, context, id,"},{"line_number":105,"context_line":"                                       expected_attrs\u003d[\u0027numa_topology\u0027])"},{"line_number":106,"context_line":"        try:"},{"line_number":107,"context_line":"            self.compute_api.live_migrate(context, instance, block_migration,"},{"line_number":108,"context_line":"                                          disk_over_commit, host, force,"}],"source_content_type":"text/x-python","patch_set":10,"id":"3f79a3b5_db51ab0e","line":105,"updated":"2018-12-12 23:09:18.000000000","message":"Given how much time I\u0027ve spent digging around why we pre-join on other tables when getting an instance, it would be nice to have a comment here about why this is needed (because of the pre-migration check in conductor https://review.openstack.org/#/c/611088/10/nova/conductor/tasks/live_migrate.py) - so please add a short comment about that for posterity.","commit_id":"28631806eefa716a7eed818110873db554433323"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"3774b0f65e3f571dd195587498c05685f1b48c17","unresolved":false,"context_lines":[{"line_number":102,"context_line":"                                                         strict\u003dTrue)"},{"line_number":103,"context_line":""},{"line_number":104,"context_line":"        instance \u003d common.get_instance(self.compute_api, context, id,"},{"line_number":105,"context_line":"                                       expected_attrs\u003d[\u0027numa_topology\u0027])"},{"line_number":106,"context_line":"        try:"},{"line_number":107,"context_line":"            self.compute_api.live_migrate(context, instance, block_migration,"},{"line_number":108,"context_line":"                                          disk_over_commit, host, force,"}],"source_content_type":"text/x-python","patch_set":10,"id":"3f79a3b5_d858c665","line":105,"in_reply_to":"3f79a3b5_db51ab0e","updated":"2018-12-13 12:04:12.000000000","message":"Done","commit_id":"28631806eefa716a7eed818110873db554433323"}],"nova/conductor/tasks/live_migrate.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"a294101b29803352c11924d09436cb186b5240fe","unresolved":false,"context_lines":[{"line_number":162,"context_line":"        if hypervisor_type !\u003d obj_fields.HVType.KVM:"},{"line_number":163,"context_line":"            return"},{"line_number":164,"context_line":""},{"line_number":165,"context_line":"        if \u0027numa_topology\u0027 in self.instance and self.instance.numa_topology:"},{"line_number":166,"context_line":"            msg \u003d (\u0027Instance %s has an associated NUMA topology. \u0027"},{"line_number":167,"context_line":"                   \u0027Instance NUMA topologies, including related attributes \u0027"},{"line_number":168,"context_line":"                   \u0027such as CPU pinning, huge page and emulator thread \u0027"}],"source_content_type":"text/x-python","patch_set":10,"id":"3f79a3b5_db1c4b67","line":165,"range":{"start_line":165,"start_character":8,"end_line":165,"end_character":76},"updated":"2018-12-12 23:09:18.000000000","message":"Can we do this *before* we lookup the compute node? Because we lookup the source compute node elsewhere in this task for pre-migration checks, it would be nice to not have to hit it if we really don\u0027t need to (if the instance doesn\u0027t have numa_topology).\n\nAlso, \"if \u0027numa_topology\u0027 in self.instance\" is very tightly coupled to the API (or something else) previously loading the field - which could make this fail if something changes above us in the stack - it\u0027s probably best to not do this and let it lazy-load if not already set. Your API change for this is an optimization.","commit_id":"28631806eefa716a7eed818110873db554433323"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"3774b0f65e3f571dd195587498c05685f1b48c17","unresolved":false,"context_lines":[{"line_number":162,"context_line":"        if hypervisor_type !\u003d obj_fields.HVType.KVM:"},{"line_number":163,"context_line":"            return"},{"line_number":164,"context_line":""},{"line_number":165,"context_line":"        if \u0027numa_topology\u0027 in self.instance and self.instance.numa_topology:"},{"line_number":166,"context_line":"            msg \u003d (\u0027Instance %s has an associated NUMA topology. \u0027"},{"line_number":167,"context_line":"                   \u0027Instance NUMA topologies, including related attributes \u0027"},{"line_number":168,"context_line":"                   \u0027such as CPU pinning, huge page and emulator thread \u0027"}],"source_content_type":"text/x-python","patch_set":10,"id":"3f79a3b5_b3172b43","line":165,"range":{"start_line":165,"start_character":8,"end_line":165,"end_character":76},"in_reply_to":"3f79a3b5_db1c4b67","updated":"2018-12-13 12:04:12.000000000","message":"Good call. I\u0027m not sure why I didn\u0027t do it that way first go round.","commit_id":"28631806eefa716a7eed818110873db554433323"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"a294101b29803352c11924d09436cb186b5240fe","unresolved":false,"context_lines":[{"line_number":163,"context_line":"            return"},{"line_number":164,"context_line":""},{"line_number":165,"context_line":"        if \u0027numa_topology\u0027 in self.instance and self.instance.numa_topology:"},{"line_number":166,"context_line":"            msg \u003d (\u0027Instance %s has an associated NUMA topology. \u0027"},{"line_number":167,"context_line":"                   \u0027Instance NUMA topologies, including related attributes \u0027"},{"line_number":168,"context_line":"                   \u0027such as CPU pinning, huge page and emulator thread \u0027"},{"line_number":169,"context_line":"                   \u0027pinning information, are not currently recalculated on \u0027"}],"source_content_type":"text/x-python","patch_set":10,"id":"3f79a3b5_1815e94b","line":166,"range":{"start_line":166,"start_character":29,"end_line":166,"end_character":31},"updated":"2018-12-12 23:09:18.000000000","message":"nit: You don\u0027t need this if you\u0027re using the instance kwarg in the logging call below...","commit_id":"28631806eefa716a7eed818110873db554433323"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"3774b0f65e3f571dd195587498c05685f1b48c17","unresolved":false,"context_lines":[{"line_number":163,"context_line":"            return"},{"line_number":164,"context_line":""},{"line_number":165,"context_line":"        if \u0027numa_topology\u0027 in self.instance and self.instance.numa_topology:"},{"line_number":166,"context_line":"            msg \u003d (\u0027Instance %s has an associated NUMA topology. \u0027"},{"line_number":167,"context_line":"                   \u0027Instance NUMA topologies, including related attributes \u0027"},{"line_number":168,"context_line":"                   \u0027such as CPU pinning, huge page and emulator thread \u0027"},{"line_number":169,"context_line":"                   \u0027pinning information, are not currently recalculated on \u0027"}],"source_content_type":"text/x-python","patch_set":10,"id":"3f79a3b5_b80e2a3a","line":166,"range":{"start_line":166,"start_character":29,"end_line":166,"end_character":31},"in_reply_to":"3f79a3b5_1815e94b","updated":"2018-12-13 12:04:12.000000000","message":"Done","commit_id":"28631806eefa716a7eed818110873db554433323"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"a294101b29803352c11924d09436cb186b5240fe","unresolved":false,"context_lines":[{"line_number":167,"context_line":"                   \u0027Instance NUMA topologies, including related attributes \u0027"},{"line_number":168,"context_line":"                   \u0027such as CPU pinning, huge page and emulator thread \u0027"},{"line_number":169,"context_line":"                   \u0027pinning information, are not currently recalculated on \u0027"},{"line_number":170,"context_line":"                   \u0027live migration. See bug #1289064 for more information\u0027"},{"line_number":171,"context_line":"                   )"},{"line_number":172,"context_line":""},{"line_number":173,"context_line":"            if CONF.workarounds.enable_numa_live_migration:"}],"source_content_type":"text/x-python","patch_set":10,"id":"3f79a3b5_382465c4","line":170,"range":{"start_line":170,"start_character":73,"end_line":170,"end_character":74},"updated":"2018-12-12 23:09:18.000000000","message":"nit: period","commit_id":"28631806eefa716a7eed818110873db554433323"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"3774b0f65e3f571dd195587498c05685f1b48c17","unresolved":false,"context_lines":[{"line_number":167,"context_line":"                   \u0027Instance NUMA topologies, including related attributes \u0027"},{"line_number":168,"context_line":"                   \u0027such as CPU pinning, huge page and emulator thread \u0027"},{"line_number":169,"context_line":"                   \u0027pinning information, are not currently recalculated on \u0027"},{"line_number":170,"context_line":"                   \u0027live migration. See bug #1289064 for more information\u0027"},{"line_number":171,"context_line":"                   )"},{"line_number":172,"context_line":""},{"line_number":173,"context_line":"            if CONF.workarounds.enable_numa_live_migration:"}],"source_content_type":"text/x-python","patch_set":10,"id":"3f79a3b5_58035613","line":170,"range":{"start_line":170,"start_character":73,"end_line":170,"end_character":74},"in_reply_to":"3f79a3b5_382465c4","updated":"2018-12-13 12:04:12.000000000","message":"Done","commit_id":"28631806eefa716a7eed818110873db554433323"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"a294101b29803352c11924d09436cb186b5240fe","unresolved":false,"context_lines":[{"line_number":173,"context_line":"            if CONF.workarounds.enable_numa_live_migration:"},{"line_number":174,"context_line":"                LOG.warning(msg, self.instance.uuid, instance\u003dself.instance)"},{"line_number":175,"context_line":"            else:"},{"line_number":176,"context_line":"                msg \u003d (_(\u0027Cannot live migrate instance. \u0027 + msg))  # noqa"},{"line_number":177,"context_line":"                LOG.error(msg, self.instance.uuid, instance\u003dself.instance)"},{"line_number":178,"context_line":"                raise exception.MigrationPreCheckError(reason\u003dmsg)"},{"line_number":179,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"3f79a3b5_7b089725","line":176,"range":{"start_line":176,"start_character":16,"end_line":176,"end_character":73},"updated":"2018-12-12 23:09:18.000000000","message":"I\u0027m not sure we need the new message part of this do we? MigrationPreCheckError already says \"Migration pre-check error: %(reason)s\", do we need more information?","commit_id":"28631806eefa716a7eed818110873db554433323"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"163b630cf3a3755cb9904239843e607dfaf99497","unresolved":false,"context_lines":[{"line_number":173,"context_line":"            if CONF.workarounds.enable_numa_live_migration:"},{"line_number":174,"context_line":"                LOG.warning(msg, self.instance.uuid, instance\u003dself.instance)"},{"line_number":175,"context_line":"            else:"},{"line_number":176,"context_line":"                msg \u003d (_(\u0027Cannot live migrate instance. \u0027 + msg))  # noqa"},{"line_number":177,"context_line":"                LOG.error(msg, self.instance.uuid, instance\u003dself.instance)"},{"line_number":178,"context_line":"                raise exception.MigrationPreCheckError(reason\u003dmsg)"},{"line_number":179,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"3f79a3b5_bbc14f86","line":176,"range":{"start_line":176,"start_character":16,"end_line":176,"end_character":73},"in_reply_to":"3f79a3b5_7b089725","updated":"2018-12-12 23:10:54.000000000","message":"To be clear, I don\u0027t think we need the new \"Cannot live migrate instance\" part with the concat. Just pass reason\u003dmsg.","commit_id":"28631806eefa716a7eed818110873db554433323"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"3774b0f65e3f571dd195587498c05685f1b48c17","unresolved":false,"context_lines":[{"line_number":173,"context_line":"            if CONF.workarounds.enable_numa_live_migration:"},{"line_number":174,"context_line":"                LOG.warning(msg, self.instance.uuid, instance\u003dself.instance)"},{"line_number":175,"context_line":"            else:"},{"line_number":176,"context_line":"                msg \u003d (_(\u0027Cannot live migrate instance. \u0027 + msg))  # noqa"},{"line_number":177,"context_line":"                LOG.error(msg, self.instance.uuid, instance\u003dself.instance)"},{"line_number":178,"context_line":"                raise exception.MigrationPreCheckError(reason\u003dmsg)"},{"line_number":179,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"3f79a3b5_78009205","line":176,"range":{"start_line":176,"start_character":16,"end_line":176,"end_character":73},"in_reply_to":"3f79a3b5_bbc14f86","updated":"2018-12-13 12:04:12.000000000","message":"Good point. I was already on the fence with this, on account of the need for the noqa. Dropped.","commit_id":"28631806eefa716a7eed818110873db554433323"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"a294101b29803352c11924d09436cb186b5240fe","unresolved":false,"context_lines":[{"line_number":174,"context_line":"                LOG.warning(msg, self.instance.uuid, instance\u003dself.instance)"},{"line_number":175,"context_line":"            else:"},{"line_number":176,"context_line":"                msg \u003d (_(\u0027Cannot live migrate instance. \u0027 + msg))  # noqa"},{"line_number":177,"context_line":"                LOG.error(msg, self.instance.uuid, instance\u003dself.instance)"},{"line_number":178,"context_line":"                raise exception.MigrationPreCheckError(reason\u003dmsg)"},{"line_number":179,"context_line":""},{"line_number":180,"context_line":"    def _check_host_is_up(self, host):"}],"source_content_type":"text/x-python","patch_set":10,"id":"3f79a3b5_fb1d8764","line":177,"range":{"start_line":177,"start_character":16,"end_line":177,"end_character":74},"updated":"2018-12-12 23:09:18.000000000","message":"We probably don\u0027t need this - it\u0027s already going to get logged because of MigrationPreCheckError.\n\nhttps://github.com/openstack/nova/blob/master/nova/conductor/manager.py#L439\n\nhttps://github.com/openstack/nova/blob/master/nova/conductor/manager.py#L401\n\nhttps://github.com/openstack/nova/blob/master/nova/scheduler/utils.py#L614","commit_id":"28631806eefa716a7eed818110873db554433323"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"142c9bf8e10284ba9c2b52a4e67a3c2408ef278e","unresolved":false,"context_lines":[{"line_number":174,"context_line":"                LOG.warning(msg, self.instance.uuid, instance\u003dself.instance)"},{"line_number":175,"context_line":"            else:"},{"line_number":176,"context_line":"                msg \u003d (_(\u0027Cannot live migrate instance. \u0027 + msg))  # noqa"},{"line_number":177,"context_line":"                LOG.error(msg, self.instance.uuid, instance\u003dself.instance)"},{"line_number":178,"context_line":"                raise exception.MigrationPreCheckError(reason\u003dmsg)"},{"line_number":179,"context_line":""},{"line_number":180,"context_line":"    def _check_host_is_up(self, host):"}],"source_content_type":"text/x-python","patch_set":10,"id":"3f79a3b5_c75c571d","line":177,"range":{"start_line":177,"start_character":16,"end_line":177,"end_character":74},"in_reply_to":"3f79a3b5_33123b58","updated":"2018-12-13 22:08:25.000000000","message":"A fault gets recorded anyway so it\u0027s probably fine to not have the instance uuid in the exception message.\n\nhttps://github.com/openstack/nova/blob/master/nova/scheduler/utils.py#L635","commit_id":"28631806eefa716a7eed818110873db554433323"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"3774b0f65e3f571dd195587498c05685f1b48c17","unresolved":false,"context_lines":[{"line_number":174,"context_line":"                LOG.warning(msg, self.instance.uuid, instance\u003dself.instance)"},{"line_number":175,"context_line":"            else:"},{"line_number":176,"context_line":"                msg \u003d (_(\u0027Cannot live migrate instance. \u0027 + msg))  # noqa"},{"line_number":177,"context_line":"                LOG.error(msg, self.instance.uuid, instance\u003dself.instance)"},{"line_number":178,"context_line":"                raise exception.MigrationPreCheckError(reason\u003dmsg)"},{"line_number":179,"context_line":""},{"line_number":180,"context_line":"    def _check_host_is_up(self, host):"}],"source_content_type":"text/x-python","patch_set":10,"id":"3f79a3b5_33123b58","line":177,"range":{"start_line":177,"start_character":16,"end_line":177,"end_character":74},"in_reply_to":"3f79a3b5_fb1d8764","updated":"2018-12-13 12:04:12.000000000","message":"The only issue here is that I\u0027m dropping the instance UUID from the log, so I guess we\u0027ll see the exception without the context about what instance specifically failed to migrate. I\u0027ve kept the log as a nicer option that duplicating the message, but can change if you\u0027d prefer just the exception","commit_id":"28631806eefa716a7eed818110873db554433323"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"142c9bf8e10284ba9c2b52a4e67a3c2408ef278e","unresolved":false,"context_lines":[{"line_number":175,"context_line":"        if CONF.workarounds.enable_numa_live_migration:"},{"line_number":176,"context_line":"            LOG.warning(msg, instance\u003dself.instance)"},{"line_number":177,"context_line":"        else:"},{"line_number":178,"context_line":"            LOG.error(msg, instance\u003dself.instance)"},{"line_number":179,"context_line":"            raise exception.MigrationPreCheckError(reason\u003dmsg)"},{"line_number":180,"context_line":""},{"line_number":181,"context_line":"    def _check_host_is_up(self, host):"}],"source_content_type":"text/x-python","patch_set":11,"id":"3f79a3b5_67aea3e6","line":178,"range":{"start_line":178,"start_character":12,"end_line":178,"end_character":50},"updated":"2018-12-13 22:08:25.000000000","message":"Again, this will get logged later:\n\nhttps://github.com/openstack/nova/blob/master/nova/scheduler/utils.py#L614\n\nSo this LOG.error isn\u0027t really necessary IMO.","commit_id":"9f2d0bc219dd0c50ed0c97daa006f3c2e9af02ac"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"567631d226542da456d7e41c89a1860455914932","unresolved":false,"context_lines":[{"line_number":175,"context_line":"        if CONF.workarounds.enable_numa_live_migration:"},{"line_number":176,"context_line":"            LOG.warning(msg, instance\u003dself.instance)"},{"line_number":177,"context_line":"        else:"},{"line_number":178,"context_line":"            LOG.error(msg, instance\u003dself.instance)"},{"line_number":179,"context_line":"            raise exception.MigrationPreCheckError(reason\u003dmsg)"},{"line_number":180,"context_line":""},{"line_number":181,"context_line":"    def _check_host_is_up(self, host):"}],"source_content_type":"text/x-python","patch_set":11,"id":"3f79a3b5_8d374eaf","line":178,"range":{"start_line":178,"start_character":12,"end_line":178,"end_character":50},"in_reply_to":"3f79a3b5_67aea3e6","updated":"2018-12-14 19:09:12.000000000","message":"Done - removed it.","commit_id":"9f2d0bc219dd0c50ed0c97daa006f3c2e9af02ac"}],"nova/conf/workarounds.py":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"ecc76b06b29a3b19d317a56d01b616417ccbe18a","unresolved":false,"context_lines":[{"line_number":188,"context_line":""},{"line_number":189,"context_line":"    cfg.BoolOpt("},{"line_number":190,"context_line":"        \u0027enable_numa_live_migration\u0027,"},{"line_number":191,"context_line":"        default\u003dFalse,"},{"line_number":192,"context_line":"        help\u003d\"\"\""},{"line_number":193,"context_line":"Enable live migration of instances with NUMA topologies."},{"line_number":194,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"3f79a3b5_f46b6d84","line":191,"range":{"start_line":191,"start_character":16,"end_line":191,"end_character":21},"updated":"2018-10-31 17:07:08.000000000","message":"i would prefer the default to be fliped but since you have added a way to configure this behavior im ok with it.\n\nfor backports of this if we do them i would like to see this set to True for backwards compatiblity.","commit_id":"caa85cf50b657db14c5bd2136bf6e55c8800214f"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"ac0585eb8956792be66b28bbcc67bc06a4684041","unresolved":false,"context_lines":[{"line_number":188,"context_line":""},{"line_number":189,"context_line":"    cfg.BoolOpt("},{"line_number":190,"context_line":"        \u0027enable_numa_live_migration\u0027,"},{"line_number":191,"context_line":"        default\u003dFalse,"},{"line_number":192,"context_line":"        help\u003d\"\"\""},{"line_number":193,"context_line":"Enable live migration of instances with NUMA topologies."},{"line_number":194,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"3f79a3b5_619ea8fb","line":191,"range":{"start_line":191,"start_character":8,"end_line":191,"end_character":22},"updated":"2018-12-13 02:16:02.000000000","message":"so assuming artom\u0027s spec gets implemented we will want to to enable this by default\n\nperhaps we should default to \"auto\" and state something like it will enable migration if it is supported and disable migration otherwise. this will have the effect of always disableing migration unless overriden untils artoms spec is implemented but not requiring config file change once it is.\n\nit wont be an issue if we complete the numa migrtion this cycle but if we dont it would be nice to not have to change the default value of the config that said the auto value is really just another way of doing that.\n\n\ni am fine with leaving the default be false also as in generall i would not expect most opertor to understand the EPA features. For what its worth, from my experiace the failure rate when using hugepages only, is low on  a small cloud ~15 node that is not too full and decreases as you add more hosts so even without future fixes i would personally always enable the migration since live migration is an admin only task and i would expect the admin to be able to manually select a node if the first migration attempt failed.","commit_id":"28631806eefa716a7eed818110873db554433323"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"142c9bf8e10284ba9c2b52a4e67a3c2408ef278e","unresolved":false,"context_lines":[{"line_number":188,"context_line":""},{"line_number":189,"context_line":"    cfg.BoolOpt("},{"line_number":190,"context_line":"        \u0027enable_numa_live_migration\u0027,"},{"line_number":191,"context_line":"        default\u003dFalse,"},{"line_number":192,"context_line":"        help\u003d\"\"\""},{"line_number":193,"context_line":"Enable live migration of instances with NUMA topologies."},{"line_number":194,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"3f79a3b5_87abbfd2","line":191,"range":{"start_line":191,"start_character":8,"end_line":191,"end_character":22},"in_reply_to":"3f79a3b5_135b7ff8","updated":"2018-12-13 22:08:25.000000000","message":"FWIW I agree with Stephen.","commit_id":"28631806eefa716a7eed818110873db554433323"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"3774b0f65e3f571dd195587498c05685f1b48c17","unresolved":false,"context_lines":[{"line_number":188,"context_line":""},{"line_number":189,"context_line":"    cfg.BoolOpt("},{"line_number":190,"context_line":"        \u0027enable_numa_live_migration\u0027,"},{"line_number":191,"context_line":"        default\u003dFalse,"},{"line_number":192,"context_line":"        help\u003d\"\"\""},{"line_number":193,"context_line":"Enable live migration of instances with NUMA topologies."},{"line_number":194,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"3f79a3b5_135b7ff8","line":191,"range":{"start_line":191,"start_character":8,"end_line":191,"end_character":22},"in_reply_to":"3f79a3b5_619ea8fb","updated":"2018-12-13 12:04:12.000000000","message":"If Artom\u0027s feature gets implemented this cycle, this whole option can go away again and can be ignored until that happens. My main reason for proposing it is (a) so we could explore backporting this to older releases, (ideally upstream, but downstream if this breaks too many rules) and (b) cover our asses if Artom doesn\u0027t manage to land things in time. Hopefully (b) won\u0027t prove to be an issue and I\u0027d rather debate (a) at a later date, once this is otherwise finished.","commit_id":"28631806eefa716a7eed818110873db554433323"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"038ea7dd01916bd998bd049cc0c9201131e158a4","unresolved":false,"context_lines":[{"line_number":188,"context_line":""},{"line_number":189,"context_line":"    cfg.BoolOpt("},{"line_number":190,"context_line":"        \u0027enable_numa_live_migration\u0027,"},{"line_number":191,"context_line":"        default\u003dFalse,"},{"line_number":192,"context_line":"        help\u003d\"\"\""},{"line_number":193,"context_line":"Enable live migration of instances with NUMA topologies."},{"line_number":194,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"3f79a3b5_2313b1b3","line":191,"range":{"start_line":191,"start_character":8,"end_line":191,"end_character":22},"in_reply_to":"3f79a3b5_87abbfd2","updated":"2018-12-14 14:44:49.000000000","message":"ya that makes sense i guess. once we have support there is no need to keep the option so ya ignore my previous comment.","commit_id":"28631806eefa716a7eed818110873db554433323"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"ac0585eb8956792be66b28bbcc67bc06a4684041","unresolved":false,"context_lines":[{"line_number":189,"context_line":"    cfg.BoolOpt("},{"line_number":190,"context_line":"        \u0027enable_numa_live_migration\u0027,"},{"line_number":191,"context_line":"        default\u003dFalse,"},{"line_number":192,"context_line":"        help\u003d\"\"\""},{"line_number":193,"context_line":"Enable live migration of instances with NUMA topologies."},{"line_number":194,"context_line":""},{"line_number":195,"context_line":"Live migration of instances with NUMA topologies is disabled by default when"}],"source_content_type":"text/x-python","patch_set":10,"id":"3f79a3b5_e1407861","line":192,"range":{"start_line":192,"start_character":8,"end_line":192,"end_character":12},"updated":"2018-12-13 02:16:02.000000000","message":"the help ignores mempages assignment e.g. hugepages.","commit_id":"28631806eefa716a7eed818110873db554433323"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"3774b0f65e3f571dd195587498c05685f1b48c17","unresolved":false,"context_lines":[{"line_number":189,"context_line":"    cfg.BoolOpt("},{"line_number":190,"context_line":"        \u0027enable_numa_live_migration\u0027,"},{"line_number":191,"context_line":"        default\u003dFalse,"},{"line_number":192,"context_line":"        help\u003d\"\"\""},{"line_number":193,"context_line":"Enable live migration of instances with NUMA topologies."},{"line_number":194,"context_line":""},{"line_number":195,"context_line":"Live migration of instances with NUMA topologies is disabled by default when"}],"source_content_type":"text/x-python","patch_set":10,"id":"3f79a3b5_f39043a6","line":192,"range":{"start_line":192,"start_character":8,"end_line":192,"end_character":12},"in_reply_to":"3f79a3b5_e1407861","updated":"2018-12-13 12:04:12.000000000","message":"Yup, I\u0027d forgotten to update this help text and the release note to remove the PCI references/add hugepage references. Done now.","commit_id":"28631806eefa716a7eed818110873db554433323"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"a294101b29803352c11924d09436cb186b5240fe","unresolved":false,"context_lines":[{"line_number":192,"context_line":"        help\u003d\"\"\""},{"line_number":193,"context_line":"Enable live migration of instances with NUMA topologies."},{"line_number":194,"context_line":""},{"line_number":195,"context_line":"Live migration of instances with NUMA topologies is disabled by default when"},{"line_number":196,"context_line":"using the libvirt driver. This includes live migration of instances with either"},{"line_number":197,"context_line":"an explicit NUMA topology or an implicit one due to the use of CPU pinning, PCI"},{"line_number":198,"context_line":"passthrough devices and SR-IOV-based network interfaces. Some form of CPU"}],"source_content_type":"text/x-python","patch_set":10,"id":"3f79a3b5_7b5f3711","line":195,"updated":"2018-12-12 23:09:18.000000000","message":"nice help\n\nhttp://logs.openstack.org/88/611088/10/check/openstack-tox-docs/c259e46/html/configuration/config.html#workarounds.enable_numa_live_migration","commit_id":"28631806eefa716a7eed818110873db554433323"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"ac0585eb8956792be66b28bbcc67bc06a4684041","unresolved":false,"context_lines":[{"line_number":194,"context_line":""},{"line_number":195,"context_line":"Live migration of instances with NUMA topologies is disabled by default when"},{"line_number":196,"context_line":"using the libvirt driver. This includes live migration of instances with either"},{"line_number":197,"context_line":"an explicit NUMA topology or an implicit one due to the use of CPU pinning, PCI"},{"line_number":198,"context_line":"passthrough devices and SR-IOV-based network interfaces. Some form of CPU"},{"line_number":199,"context_line":"pinning takes places for all of these instances and this is not currently"},{"line_number":200,"context_line":"re-calculated, as noted in `bug #1289064`_. This means that if instances were"},{"line_number":201,"context_line":"already present on the destination host, the migrated instance could be placed"}],"source_content_type":"text/x-python","patch_set":10,"id":"3f79a3b5_a1a4c04e","line":198,"range":{"start_line":197,"start_character":76,"end_line":198,"end_character":56},"updated":"2018-12-13 02:16:02.000000000","message":"these do not crete a numa topology for the guest.\nif the guest has a numa topology then we will afites the cpus and memeory with the pci/sriov device but unlike hugepages and cpu pinning simply using a sriov device or addign a passthough deivce via a flavor alias dose nto create a numa topology for the guest so we should remove this part.\n\ncpu pinning will not be done in any form for the sriov/passthough case unless you use another feature that enabels it.","commit_id":"28631806eefa716a7eed818110873db554433323"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"3774b0f65e3f571dd195587498c05685f1b48c17","unresolved":false,"context_lines":[{"line_number":194,"context_line":""},{"line_number":195,"context_line":"Live migration of instances with NUMA topologies is disabled by default when"},{"line_number":196,"context_line":"using the libvirt driver. This includes live migration of instances with either"},{"line_number":197,"context_line":"an explicit NUMA topology or an implicit one due to the use of CPU pinning, PCI"},{"line_number":198,"context_line":"passthrough devices and SR-IOV-based network interfaces. Some form of CPU"},{"line_number":199,"context_line":"pinning takes places for all of these instances and this is not currently"},{"line_number":200,"context_line":"re-calculated, as noted in `bug #1289064`_. This means that if instances were"},{"line_number":201,"context_line":"already present on the destination host, the migrated instance could be placed"}],"source_content_type":"text/x-python","patch_set":10,"id":"3f79a3b5_33b55b1b","line":198,"range":{"start_line":197,"start_character":76,"end_line":198,"end_character":56},"in_reply_to":"3f79a3b5_a1a4c04e","updated":"2018-12-13 12:04:12.000000000","message":"As above, fixed now and updated to reference huge pages instead.","commit_id":"28631806eefa716a7eed818110873db554433323"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"ac0585eb8956792be66b28bbcc67bc06a4684041","unresolved":false,"context_lines":[{"line_number":202,"context_line":"on the same dedicated cores as these instances. Alternately, if the host"},{"line_number":203,"context_line":"platforms were non-homogeneous, the instance could be assigned to non-existent"},{"line_number":204,"context_line":"cores or be inadvertently split across host NUMA nodes. Despite these known"},{"line_number":205,"context_line":"issues, there may be cases where live migration is necessary. By enabling this"},{"line_number":206,"context_line":"option, operators that are aware of the issues and are willing to manually work"},{"line_number":207,"context_line":"around them can enable live migration support for these instances."},{"line_number":208,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"3f79a3b5_4c2ba37c","line":205,"range":{"start_line":205,"start_character":8,"end_line":205,"end_character":60},"updated":"2018-12-13 02:16:02.000000000","message":"this implies that live migration with a numa topology is a hypothetical usecase today that operators may rarely use \nwhich is not true.\n\nthe main configuration where live migration with numatoplogys is frequently used today is compute nodes that use vhost-user based networking. e.g. ovs-dpdk,vpp,vrouter with dpdk.\n\nlive migration with hugepages but no other cpu pinnign is very common for nfv deploymentsor some hosting deployment where the workload low cpu usage but has high network bandwith or a high level of oversubscition.\n\ne.g. a large amount of low bandwith vms are run on a singel host which in aggreate has a high data rate.\n\nin this case cpu pinnign is not used to enable cpu over subscription. huge pages are used to enable a vhost-user based backend or just to improve performance.","commit_id":"28631806eefa716a7eed818110873db554433323"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"3774b0f65e3f571dd195587498c05685f1b48c17","unresolved":false,"context_lines":[{"line_number":202,"context_line":"on the same dedicated cores as these instances. Alternately, if the host"},{"line_number":203,"context_line":"platforms were non-homogeneous, the instance could be assigned to non-existent"},{"line_number":204,"context_line":"cores or be inadvertently split across host NUMA nodes. Despite these known"},{"line_number":205,"context_line":"issues, there may be cases where live migration is necessary. By enabling this"},{"line_number":206,"context_line":"option, operators that are aware of the issues and are willing to manually work"},{"line_number":207,"context_line":"around them can enable live migration support for these instances."},{"line_number":208,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"3f79a3b5_93cf8fb5","line":205,"range":{"start_line":205,"start_character":8,"end_line":205,"end_character":60},"in_reply_to":"3f79a3b5_4c2ba37c","updated":"2018-12-13 12:04:12.000000000","message":"That\u0027s not what I intended. What I was trying to say is that operators may want/need to use live migration even though there are these serious issues with it. As you know, the presence of a NUMA topology without specfic CPU pinning will still result in a pinning of sorts, in that the instance vCPU processes are confined to running over a subset of available host cores (corresponding to enabled cores for a given NUMA node). As such, it\u0027s not really to have hugepages and no CPU pinning whatsoever, meaning the issue with non-homogeneous hosts still applies here.","commit_id":"28631806eefa716a7eed818110873db554433323"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"0afeaa961bd1e9c8ee1646cf1ad162a843c81128","unresolved":false,"context_lines":[{"line_number":187,"context_line":"\"\"\"),"},{"line_number":188,"context_line":""},{"line_number":189,"context_line":"    cfg.BoolOpt("},{"line_number":190,"context_line":"        \u0027enable_numa_live_migration\u0027,"},{"line_number":191,"context_line":"        default\u003dFalse,"},{"line_number":192,"context_line":"        help\u003d\"\"\""},{"line_number":193,"context_line":"Enable live migration of instances with NUMA topologies."}],"source_content_type":"text/x-python","patch_set":11,"id":"3f79a3b5_27566bd2","line":190,"updated":"2018-12-13 22:11:50.000000000","message":"Thinking out loud, and maybe this has already been discussed before, but another way we could have handled this is with a policy rule that disallows everyone by default, but is more flexible in allowing certain users for performing the action. The downside is we generally want to check policy in the API but since this code is coupled to the libvirt compute driver, that gets tough in the API (although we could have just checked the source instance.host is libvirt or not like you\u0027re doing anyway). Anyway, just a though, but it\u0027s what we\u0027re doing with policy rule \"os_compute_api:servers:create:zero_disk_flavor\" in Stein:\n\nhttps://review.openstack.org/#/c/603910/","commit_id":"9f2d0bc219dd0c50ed0c97daa006f3c2e9af02ac"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"038ea7dd01916bd998bd049cc0c9201131e158a4","unresolved":false,"context_lines":[{"line_number":187,"context_line":"\"\"\"),"},{"line_number":188,"context_line":""},{"line_number":189,"context_line":"    cfg.BoolOpt("},{"line_number":190,"context_line":"        \u0027enable_numa_live_migration\u0027,"},{"line_number":191,"context_line":"        default\u003dFalse,"},{"line_number":192,"context_line":"        help\u003d\"\"\""},{"line_number":193,"context_line":"Enable live migration of instances with NUMA topologies."}],"source_content_type":"text/x-python","patch_set":11,"id":"3f79a3b5_e30db991","line":190,"in_reply_to":"3f79a3b5_27566bd2","updated":"2018-12-14 14:44:49.000000000","message":"live migratin is already resticted to admins by default right? so we could us a policy rule but i wonder what role we would restrict numa migration too by defualt?","commit_id":"9f2d0bc219dd0c50ed0c97daa006f3c2e9af02ac"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"564ef45e0fed46f814c4c8a928b60a8fb5ce41d5","unresolved":false,"context_lines":[{"line_number":187,"context_line":"\"\"\"),"},{"line_number":188,"context_line":""},{"line_number":189,"context_line":"    cfg.BoolOpt("},{"line_number":190,"context_line":"        \u0027enable_numa_live_migration\u0027,"},{"line_number":191,"context_line":"        default\u003dFalse,"},{"line_number":192,"context_line":"        help\u003d\"\"\""},{"line_number":193,"context_line":"Enable live migration of instances with NUMA topologies."}],"source_content_type":"text/x-python","patch_set":11,"id":"3f79a3b5_fa2d3d91","line":190,"in_reply_to":"3f79a3b5_6dce72bb","updated":"2018-12-17 13:51:50.000000000","message":"I went with the configuration option because it was the first thing that crossed my mind. If policy let\u0027s us do the same thing in a more fine grained manner, I don\u0027t see why not. That said, as Sean notes it is an admin-only operation by default. This means the policy approach would only give us something extra over the config option is someone has configured that other policy option and, if not, we\u0027d effectively still have a boolean option but configured via \u0027policy.yaml\u0027 instead of \u0027nova.conf\u0027, right? Maybe non-admin live migrations are common but it does sound unlikely, particularly when NFV/HPC\u0027y stuff like this is in play.","commit_id":"9f2d0bc219dd0c50ed0c97daa006f3c2e9af02ac"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"084145a2578ce25bfb25f4639b97ca8c92a040b5","unresolved":false,"context_lines":[{"line_number":187,"context_line":"\"\"\"),"},{"line_number":188,"context_line":""},{"line_number":189,"context_line":"    cfg.BoolOpt("},{"line_number":190,"context_line":"        \u0027enable_numa_live_migration\u0027,"},{"line_number":191,"context_line":"        default\u003dFalse,"},{"line_number":192,"context_line":"        help\u003d\"\"\""},{"line_number":193,"context_line":"Enable live migration of instances with NUMA topologies."}],"source_content_type":"text/x-python","patch_set":11,"id":"3f79a3b5_6dce72bb","line":190,"in_reply_to":"3f79a3b5_e30db991","updated":"2018-12-14 19:01:54.000000000","message":"You would block it by default for all users regardless of role.","commit_id":"9f2d0bc219dd0c50ed0c97daa006f3c2e9af02ac"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"142c9bf8e10284ba9c2b52a4e67a3c2408ef278e","unresolved":false,"context_lines":[{"line_number":192,"context_line":"        help\u003d\"\"\""},{"line_number":193,"context_line":"Enable live migration of instances with NUMA topologies."},{"line_number":194,"context_line":""},{"line_number":195,"context_line":"Live migration of instances with NUMA topologies is now disabled by default"},{"line_number":196,"context_line":"when using the libvirt driver. This includes live migration of instances with"},{"line_number":197,"context_line":"CPU pinning or hugepages. CPU pinning and huge page information for such"},{"line_number":198,"context_line":"instances is not currently re-calculated, as noted in `bug #1289064`_.  This"}],"source_content_type":"text/x-python","patch_set":11,"id":"3f79a3b5_a78d9b7f","line":195,"range":{"start_line":195,"start_character":52,"end_line":195,"end_character":55},"updated":"2018-12-13 22:08:25.000000000","message":"\"now\" is a point in time thing - really for a release note, not a config option description.","commit_id":"9f2d0bc219dd0c50ed0c97daa006f3c2e9af02ac"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"567631d226542da456d7e41c89a1860455914932","unresolved":false,"context_lines":[{"line_number":192,"context_line":"        help\u003d\"\"\""},{"line_number":193,"context_line":"Enable live migration of instances with NUMA topologies."},{"line_number":194,"context_line":""},{"line_number":195,"context_line":"Live migration of instances with NUMA topologies is now disabled by default"},{"line_number":196,"context_line":"when using the libvirt driver. This includes live migration of instances with"},{"line_number":197,"context_line":"CPU pinning or hugepages. CPU pinning and huge page information for such"},{"line_number":198,"context_line":"instances is not currently re-calculated, as noted in `bug #1289064`_.  This"}],"source_content_type":"text/x-python","patch_set":11,"id":"3f79a3b5_0d4b3e29","line":195,"range":{"start_line":195,"start_character":52,"end_line":195,"end_character":55},"in_reply_to":"3f79a3b5_a78d9b7f","updated":"2018-12-14 19:09:12.000000000","message":"Done","commit_id":"9f2d0bc219dd0c50ed0c97daa006f3c2e9af02ac"}],"nova/tests/unit/conductor/tasks/test_live_migrate.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"a294101b29803352c11924d09436cb186b5240fe","unresolved":false,"context_lines":[{"line_number":71,"context_line":""},{"line_number":72,"context_line":"        _p \u003d mock.patch(\u0027nova.objects.ComputeNode.get_by_host_and_nodename\u0027)"},{"line_number":73,"context_line":"        self.get_by_host_and_nodename \u003d _p.start()"},{"line_number":74,"context_line":"        self.get_by_host_and_nodename.return_value \u003d objects.ComputeNode("},{"line_number":75,"context_line":"            uuid\u003duuids.cn1, hypervisor_type\u003d\u0027xen\u0027)"},{"line_number":76,"context_line":"        self.addCleanup(_p.stop)"},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"    def _generate_task(self):"}],"source_content_type":"text/x-python","patch_set":10,"id":"3f79a3b5_3bae9fe5","line":75,"range":{"start_line":74,"start_character":8,"end_line":75,"end_character":50},"updated":"2018-12-12 23:09:18.000000000","message":"The tests are already controlling this so why do it here?","commit_id":"28631806eefa716a7eed818110873db554433323"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"5651e6f64791551fac4f978b012ecd9584f329d6","unresolved":false,"context_lines":[{"line_number":71,"context_line":""},{"line_number":72,"context_line":"        _p \u003d mock.patch(\u0027nova.objects.ComputeNode.get_by_host_and_nodename\u0027)"},{"line_number":73,"context_line":"        self.get_by_host_and_nodename \u003d _p.start()"},{"line_number":74,"context_line":"        self.get_by_host_and_nodename.return_value \u003d objects.ComputeNode("},{"line_number":75,"context_line":"            uuid\u003duuids.cn1, hypervisor_type\u003d\u0027xen\u0027)"},{"line_number":76,"context_line":"        self.addCleanup(_p.stop)"},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"    def _generate_task(self):"}],"source_content_type":"text/x-python","patch_set":10,"id":"3f79a3b5_d30987db","line":75,"range":{"start_line":74,"start_character":8,"end_line":75,"end_character":50},"in_reply_to":"3f79a3b5_3bae9fe5","updated":"2018-12-13 12:49:42.000000000","message":"It\u0027s not needed now that I\u0027ve changed the order of the check for NUMA and the check for the hypervisor type. In the previous ordering, if I didn\u0027t mock this out then I got a warning about database accesses from a NoDBTestCase subclass.","commit_id":"28631806eefa716a7eed818110873db554433323"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"a294101b29803352c11924d09436cb186b5240fe","unresolved":false,"context_lines":[{"line_number":178,"context_line":"        self.assertRaises(exception.InstanceInvalidState,"},{"line_number":179,"context_line":"                          self.task._check_instance_is_active)"},{"line_number":180,"context_line":""},{"line_number":181,"context_line":"    def test_check_instance_has_no_numa_passes_no_numa(self):"},{"line_number":182,"context_line":"        self.flags(enable_numa_live_migration\u003dFalse, group\u003d\u0027workarounds\u0027)"},{"line_number":183,"context_line":"        self.get_by_host_and_nodename.return_value \u003d objects.ComputeNode("},{"line_number":184,"context_line":"            uuid\u003duuids.cn1, hypervisor_type\u003d\u0027kvm\u0027)"}],"source_content_type":"text/x-python","patch_set":10,"id":"3f79a3b5_7b8df77c","line":181,"range":{"start_line":181,"start_character":46,"end_line":181,"end_character":54},"updated":"2018-12-12 23:09:18.000000000","message":"this is redundant with \"no_numa\" in the test name already","commit_id":"28631806eefa716a7eed818110873db554433323"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"5651e6f64791551fac4f978b012ecd9584f329d6","unresolved":false,"context_lines":[{"line_number":178,"context_line":"        self.assertRaises(exception.InstanceInvalidState,"},{"line_number":179,"context_line":"                          self.task._check_instance_is_active)"},{"line_number":180,"context_line":""},{"line_number":181,"context_line":"    def test_check_instance_has_no_numa_passes_no_numa(self):"},{"line_number":182,"context_line":"        self.flags(enable_numa_live_migration\u003dFalse, group\u003d\u0027workarounds\u0027)"},{"line_number":183,"context_line":"        self.get_by_host_and_nodename.return_value \u003d objects.ComputeNode("},{"line_number":184,"context_line":"            uuid\u003duuids.cn1, hypervisor_type\u003d\u0027kvm\u0027)"}],"source_content_type":"text/x-python","patch_set":10,"id":"3f79a3b5_f3236359","line":181,"range":{"start_line":181,"start_character":46,"end_line":181,"end_character":54},"in_reply_to":"3f79a3b5_7b8df77c","updated":"2018-12-13 12:49:42.000000000","message":"The function is called \u0027_check_instance_has_no_numa\u0027 and that\u0027s what I\u0027m testing. I\u0027m naming these test cases \u0027{function}_{status}_{reason}\u0027, just like we\u0027ve done elsewhere in this file (see the tests for \u0027check_instance_is_active\u0027 above)","commit_id":"28631806eefa716a7eed818110873db554433323"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"142c9bf8e10284ba9c2b52a4e67a3c2408ef278e","unresolved":false,"context_lines":[{"line_number":178,"context_line":"        self.assertRaises(exception.InstanceInvalidState,"},{"line_number":179,"context_line":"                          self.task._check_instance_is_active)"},{"line_number":180,"context_line":""},{"line_number":181,"context_line":"    def test_check_instance_has_no_numa_passes_no_numa(self):"},{"line_number":182,"context_line":"        self.flags(enable_numa_live_migration\u003dFalse, group\u003d\u0027workarounds\u0027)"},{"line_number":183,"context_line":"        self.get_by_host_and_nodename.return_value \u003d objects.ComputeNode("},{"line_number":184,"context_line":"            uuid\u003duuids.cn1, hypervisor_type\u003d\u0027kvm\u0027)"}],"source_content_type":"text/x-python","patch_set":10,"id":"3f79a3b5_27df4b6e","line":181,"range":{"start_line":181,"start_character":46,"end_line":181,"end_character":54},"in_reply_to":"3f79a3b5_f3236359","updated":"2018-12-13 22:08:25.000000000","message":"Ah right.","commit_id":"28631806eefa716a7eed818110873db554433323"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"a294101b29803352c11924d09436cb186b5240fe","unresolved":false,"context_lines":[{"line_number":184,"context_line":"            uuid\u003duuids.cn1, hypervisor_type\u003d\u0027kvm\u0027)"},{"line_number":185,"context_line":"        self.task._check_instance_has_no_numa()"},{"line_number":186,"context_line":""},{"line_number":187,"context_line":"    def test_check_instance_has_no_numa_passes_non_kvm(self):"},{"line_number":188,"context_line":"        self.flags(enable_numa_live_migration\u003dFalse, group\u003d\u0027workarounds\u0027)"},{"line_number":189,"context_line":"        self.get_by_host_and_nodename.return_value \u003d objects.ComputeNode("},{"line_number":190,"context_line":"            uuid\u003duuids.cn1, hypervisor_type\u003d\u0027xen\u0027)"}],"source_content_type":"text/x-python","patch_set":10,"id":"3f79a3b5_9b8a5364","line":187,"range":{"start_line":187,"start_character":32,"end_line":187,"end_character":39},"updated":"2018-12-12 23:09:18.000000000","message":"the instance has numa","commit_id":"28631806eefa716a7eed818110873db554433323"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"a294101b29803352c11924d09436cb186b5240fe","unresolved":false,"context_lines":[{"line_number":193,"context_line":"                                            memory\u003d1024)])"},{"line_number":194,"context_line":"        self.task._check_instance_has_no_numa()"},{"line_number":195,"context_line":""},{"line_number":196,"context_line":"    def test_check_instance_has_no_numa_passes_workaround(self):"},{"line_number":197,"context_line":"        self.flags(enable_numa_live_migration\u003dTrue, group\u003d\u0027workarounds\u0027)"},{"line_number":198,"context_line":"        self.get_by_host_and_nodename.return_value \u003d objects.ComputeNode("},{"line_number":199,"context_line":"            uuid\u003duuids.cn1, hypervisor_type\u003d\u0027kvm\u0027)"}],"source_content_type":"text/x-python","patch_set":10,"id":"3f79a3b5_3b877f5f","line":196,"range":{"start_line":196,"start_character":32,"end_line":196,"end_character":39},"updated":"2018-12-12 23:09:18.000000000","message":"again","commit_id":"28631806eefa716a7eed818110873db554433323"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"a294101b29803352c11924d09436cb186b5240fe","unresolved":false,"context_lines":[{"line_number":203,"context_line":"        self.task._check_instance_has_no_numa()"},{"line_number":204,"context_line":""},{"line_number":205,"context_line":"    @mock.patch.object(objects.ComputeNode, \u0027get_by_host_and_nodename\u0027)"},{"line_number":206,"context_line":"    def test_check_instance_has_no_numa_fails(self, mock_get):"},{"line_number":207,"context_line":"        self.flags(enable_numa_live_migration\u003dFalse, group\u003d\u0027workarounds\u0027)"},{"line_number":208,"context_line":"        mock_get.return_value \u003d objects.ComputeNode("},{"line_number":209,"context_line":"            uuid\u003duuids.cn1, hypervisor_type\u003d\u0027kvm\u0027)"}],"source_content_type":"text/x-python","patch_set":10,"id":"3f79a3b5_1b7f2369","line":206,"range":{"start_line":206,"start_character":32,"end_line":206,"end_character":39},"updated":"2018-12-12 23:09:18.000000000","message":"no numa? the instance has numa...","commit_id":"28631806eefa716a7eed818110873db554433323"}],"nova/virt/libvirt/driver.py":[{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"929ccf984be7fb1f47575aa6ea15282a8a502e48","unresolved":false,"context_lines":[{"line_number":6764,"context_line":"        # default to True here for all computes \u003e\u003d Queens."},{"line_number":6765,"context_line":"        dest_check_data.src_supports_native_luks \u003d True"},{"line_number":6766,"context_line":""},{"line_number":6767,"context_line":"        if \u0027numa_topology\u0027 in instance and instance.numa_topology:"},{"line_number":6768,"context_line":"            msg \u003d (_(\u0027Cannot live migrate instance %(uuid)s with associcated \u0027"},{"line_number":6769,"context_line":"                     \u0027NUMA topology. Instance NUMA topologies, including \u0027"},{"line_number":6770,"context_line":"                     \u0027related attributes such as CPU pinning, huge page and \u0027"}],"source_content_type":"text/x-python","patch_set":2,"id":"3f79a3b5_261bf81d","line":6767,"range":{"start_line":6767,"start_character":12,"end_line":6767,"end_character":25},"updated":"2018-10-17 16:43:48.000000000","message":"You need to add expected_attrs\u003d[\u0027numa_topology\u0027] where the API\u0027s _migrate_live() loads the instance.","commit_id":"a7355b8c4114aa8628e3c55058f03adb92fb6608"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"64cea152a27f1ddcd6e8757ec8d42f09be65c7c1","unresolved":false,"context_lines":[{"line_number":6764,"context_line":"        # default to True here for all computes \u003e\u003d Queens."},{"line_number":6765,"context_line":"        dest_check_data.src_supports_native_luks \u003d True"},{"line_number":6766,"context_line":""},{"line_number":6767,"context_line":"        if \u0027numa_topology\u0027 in instance and instance.numa_topology:"},{"line_number":6768,"context_line":"            msg \u003d (_(\u0027Cannot live migrate instance %(uuid)s with associcated \u0027"},{"line_number":6769,"context_line":"                     \u0027NUMA topology. Instance NUMA topologies, including \u0027"},{"line_number":6770,"context_line":"                     \u0027related attributes such as CPU pinning, huge page and \u0027"}],"source_content_type":"text/x-python","patch_set":2,"id":"3f79a3b5_50d23461","line":6767,"range":{"start_line":6767,"start_character":12,"end_line":6767,"end_character":25},"in_reply_to":"3f79a3b5_261bf81d","updated":"2018-10-19 17:03:32.000000000","message":"Good spot. Done.","commit_id":"a7355b8c4114aa8628e3c55058f03adb92fb6608"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"3c69cd004b04fd517dc09297dbf63abe51018a0e","unresolved":false,"context_lines":[{"line_number":6772,"context_line":"                     \u0027recalculated on live migration. See bug #1289064 for \u0027"},{"line_number":6773,"context_line":"                     \u0027more information.\u0027) % {\u0027uuid\u0027: instance.uuid})"},{"line_number":6774,"context_line":"            LOG.error(msg, instance\u003dinstance)"},{"line_number":6775,"context_line":"            raise exception.MigrationPreCheckError(reason\u003dmsg)"},{"line_number":6776,"context_line":""},{"line_number":6777,"context_line":"        return dest_check_data"},{"line_number":6778,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"3f79a3b5_99e73011","line":6775,"updated":"2018-10-25 09:17:59.000000000","message":"I really think we should opt-in the possibility for operators to accept live migrations.\nGiven live-migrate is not an end-user API, that\u0027s not an interop problem if some cloud accepts to live-migrate while others not.\n\nWhat we could also do is to pass the RequestSpec down to the driver, and look whether we have a requested_destination. If so, we could accept the live-migration. That said, it would be a well huger change (modifying RPC API etc.) which would be way more difficult to implement.","commit_id":"6e2392e53933fe1e767e23afa067a1be8cdba6a7"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"ca50c7cd9151fa69d7c6e41b527cf80f1bac8186","unresolved":false,"context_lines":[{"line_number":6772,"context_line":"                     \u0027recalculated on live migration. See bug #1289064 for \u0027"},{"line_number":6773,"context_line":"                     \u0027more information.\u0027) % {\u0027uuid\u0027: instance.uuid})"},{"line_number":6774,"context_line":"            LOG.error(msg, instance\u003dinstance)"},{"line_number":6775,"context_line":"            raise exception.MigrationPreCheckError(reason\u003dmsg)"},{"line_number":6776,"context_line":""},{"line_number":6777,"context_line":"        return dest_check_data"},{"line_number":6778,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"3f79a3b5_778011f7","line":6775,"in_reply_to":"3f79a3b5_770b31d3","updated":"2018-10-25 16:45:18.000000000","message":"so just capturing my input on this for irc.\n\ni agree this should have an explict config option and we should default to allowing migration.\n\nall openstack deployment using \novs-dpdk, vpp, snabswitch or vrouter use\nvhost-user interface in the guest.\n\nthat means all such deoployment use hugepages\n\nin the hugepages case there is no performace hit assocated with the migration as the migration will abort if the hugepages cannot be allocted.\n\nif we do not allow migration with numa toplogyies uncondtionally all deployments that use hugepages such\nas the netwrok backens above would losse live migration capablity which would be a huge regression.","commit_id":"6e2392e53933fe1e767e23afa067a1be8cdba6a7"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"32d3502ad8cfe72c1d4b047f5e09a9378ae732ee","unresolved":false,"context_lines":[{"line_number":6772,"context_line":"                     \u0027recalculated on live migration. See bug #1289064 for \u0027"},{"line_number":6773,"context_line":"                     \u0027more information.\u0027) % {\u0027uuid\u0027: instance.uuid})"},{"line_number":6774,"context_line":"            LOG.error(msg, instance\u003dinstance)"},{"line_number":6775,"context_line":"            raise exception.MigrationPreCheckError(reason\u003dmsg)"},{"line_number":6776,"context_line":""},{"line_number":6777,"context_line":"        return dest_check_data"},{"line_number":6778,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"3f79a3b5_0763961a","line":6775,"in_reply_to":"3f79a3b5_778011f7","updated":"2018-10-26 17:15:07.000000000","message":"\u003e so just capturing my input on this for irc.\n \u003e \n \u003e i agree this should have an explict config option and we should\n \u003e default to allowing migration.\n\nI\u0027ve added this but I\u0027ve defaulted to not allowing live migrations. More below.\n\n \u003e all openstack deployment using\n \u003e ovs-dpdk, vpp, snabswitch or vrouter use\n \u003e vhost-user interface in the guest.\n \u003e \n \u003e that means all such deoployment use hugepages\n \u003e \n \u003e in the hugepages case there is no performace hit assocated with the\n \u003e migration as the migration will abort if the hugepages cannot be\n \u003e allocted.\n\nNot necessarily. Given non-homogeneous hosts, it\u0027s possible that an instance will end up split over two host NUMA nodes on the destination host. If most vCPUs are allocated from one node and the hugepages are allocated for another, you\u0027re going to end up with a lot of cross-NUMA node traffic. This also assumes that most users utilizing a DPDK-accelerated vSwitch are not also using (a majority of) pinned instances. Given the well documented difficulties and costs (all those PMD cores) associated with deploying and configuring OVS-DPDK, I would not imagine many people would willingly deploying this on compute hosts where it wasn\u0027t absolutely necessary.\n\n \u003e if we do not allow migration with numa toplogyies uncondtionally\n \u003e all deployments that use hugepages such\n \u003e as the netwrok backens above would losse live migration capablity\n \u003e which would be a huge regression.\n\nThey don\u0027t lose the ability to do this. They just need to twist a knob to say \"I know about these issues and have prepared suitable workarounds.\" This serves to alert all operators who are currently performing these migrations, unaware of the impacts, as to the possible dangers of such requests. Deployment tooling can be customized to set the option for deployments where they envision this \"functionality\" being necessary (read: telco).","commit_id":"6e2392e53933fe1e767e23afa067a1be8cdba6a7"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"de3d9d01c3875c3b45b23227685a0674002c41c6","unresolved":false,"context_lines":[{"line_number":6772,"context_line":"                     \u0027recalculated on live migration. See bug #1289064 for \u0027"},{"line_number":6773,"context_line":"                     \u0027more information.\u0027) % {\u0027uuid\u0027: instance.uuid})"},{"line_number":6774,"context_line":"            LOG.error(msg, instance\u003dinstance)"},{"line_number":6775,"context_line":"            raise exception.MigrationPreCheckError(reason\u003dmsg)"},{"line_number":6776,"context_line":""},{"line_number":6777,"context_line":"        return dest_check_data"},{"line_number":6778,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"3f79a3b5_770b31d3","line":6775,"in_reply_to":"3f79a3b5_99e73011","updated":"2018-10-25 16:35:55.000000000","message":"Discussed this with cfriesen. We\u0027d suggested a configuration option for this in the past and I think that\u0027s the way to go. It\u0027s much simpler trying to guess what the operator wants and far more obvious to boot. Unless there\u0027s a good reason not to, this is the way I\u0027d rather go.","commit_id":"6e2392e53933fe1e767e23afa067a1be8cdba6a7"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"5107ae8087c9c02e18dafdd143a572faa514692c","unresolved":false,"context_lines":[{"line_number":6689,"context_line":"        filename \u003d dest_check_data.filename"},{"line_number":6690,"context_line":"        self._cleanup_shared_storage_test_file(filename)"},{"line_number":6691,"context_line":""},{"line_number":6692,"context_line":"    def check_can_live_migrate_source(self, context, instance,"},{"line_number":6693,"context_line":"                                      dest_check_data,"},{"line_number":6694,"context_line":"                                      block_device_info\u003dNone):"},{"line_number":6695,"context_line":"        \"\"\"Check if it is possible to execute live migration."}],"source_content_type":"text/x-python","patch_set":9,"id":"3f79a3b5_c9ba70d8","line":6692,"range":{"start_line":6692,"start_character":8,"end_line":6692,"end_character":37},"updated":"2018-11-28 16:44:15.000000000","message":"This only runs on one node, the source node, which could be old (rocky) if you\u0027re doing a rolling upgrade, and you won\u0027t hit this. Why not simply isolate this to conductor? You\u0027d know it\u0027s the libvirt driver if the migrate_data is of type LibvirtLiveMigrateData. Then you don\u0027t need to worry about mixed computes because conductor would handle either case.\n\nAlternatively, you could get the compute node for the instance and check it\u0027s hypervisor_type field (again, from conductor) and then you don\u0027t need to waste time doing scheduling and stuff like that.","commit_id":"f476977513dc2b53773f4a3893df63566cd22d5a"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"726804cd6749c1057cfc0a4c1f6c98b35d5c3c56","unresolved":false,"context_lines":[{"line_number":6689,"context_line":"        filename \u003d dest_check_data.filename"},{"line_number":6690,"context_line":"        self._cleanup_shared_storage_test_file(filename)"},{"line_number":6691,"context_line":""},{"line_number":6692,"context_line":"    def check_can_live_migrate_source(self, context, instance,"},{"line_number":6693,"context_line":"                                      dest_check_data,"},{"line_number":6694,"context_line":"                                      block_device_info\u003dNone):"},{"line_number":6695,"context_line":"        \"\"\"Check if it is possible to execute live migration."}],"source_content_type":"text/x-python","patch_set":9,"id":"3f79a3b5_0376e3d7","line":6692,"range":{"start_line":6692,"start_character":8,"end_line":6692,"end_character":37},"in_reply_to":"3f79a3b5_69d79cf5","updated":"2018-12-12 17:58:04.000000000","message":"Done (I think)","commit_id":"f476977513dc2b53773f4a3893df63566cd22d5a"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"400f24f40d573ae2406f239f300e17c6587f514c","unresolved":false,"context_lines":[{"line_number":6689,"context_line":"        filename \u003d dest_check_data.filename"},{"line_number":6690,"context_line":"        self._cleanup_shared_storage_test_file(filename)"},{"line_number":6691,"context_line":""},{"line_number":6692,"context_line":"    def check_can_live_migrate_source(self, context, instance,"},{"line_number":6693,"context_line":"                                      dest_check_data,"},{"line_number":6694,"context_line":"                                      block_device_info\u003dNone):"},{"line_number":6695,"context_line":"        \"\"\"Check if it is possible to execute live migration."}],"source_content_type":"text/x-python","patch_set":9,"id":"3f79a3b5_69d79cf5","line":6692,"range":{"start_line":6692,"start_character":8,"end_line":6692,"end_character":37},"in_reply_to":"3f79a3b5_c9ba70d8","updated":"2018-11-28 16:47:19.000000000","message":"\u003e Alternatively, you could get the compute node for the instance and check it\u0027s hypervisor_type field (again, from conductor) and then you don\u0027t need to waste time doing scheduling and stuff like that.\n\nThe conductor live migrate tasks already does perform some sanity checks:\n\nhttps://github.com/openstack/nova/blob/62245235bc15da6abcdfd3df1c24bd856d69fbb4/nova/conductor/tasks/live_migrate.py#L68\n\nThere is also this:\n\nhttps://github.com/openstack/nova/blob/62245235bc15da6abcdfd3df1c24bd856d69fbb4/nova/conductor/tasks/live_migrate.py#L160\n\nBut that\u0027s only called if the destination host is forced and we bypass the scheduler, so it would miss the non-forced case.","commit_id":"f476977513dc2b53773f4a3893df63566cd22d5a"}],"releasenotes/notes/disable-live-migration-with-numa-bc710a1bcde25957.yaml":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"a294101b29803352c11924d09436cb186b5240fe","unresolved":false,"context_lines":[{"line_number":11,"context_line":"    the host platforms were not homogeneous, the instance could be assigned to"},{"line_number":12,"context_line":"    non-existent cores or be inadvertently split across host NUMA nodes."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"    The long term solution to these issues is to recalculate the XML on the"},{"line_number":15,"context_line":"    destination node. When this work is completed, the restriction on live"},{"line_number":16,"context_line":"    migration with NUMA topologies will be lifted."},{"line_number":17,"context_line":""}],"source_content_type":"text/x-yaml","patch_set":10,"id":"3f79a3b5_5bd91b7f","line":14,"range":{"start_line":14,"start_character":8,"end_line":14,"end_character":26},"updated":"2018-12-12 23:09:18.000000000","message":"Did you want to link to https://blueprints.launchpad.net/nova/+spec/numa-aware-live-migration for this?","commit_id":"28631806eefa716a7eed818110873db554433323"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"3774b0f65e3f571dd195587498c05685f1b48c17","unresolved":false,"context_lines":[{"line_number":11,"context_line":"    the host platforms were not homogeneous, the instance could be assigned to"},{"line_number":12,"context_line":"    non-existent cores or be inadvertently split across host NUMA nodes."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"    The long term solution to these issues is to recalculate the XML on the"},{"line_number":15,"context_line":"    destination node. When this work is completed, the restriction on live"},{"line_number":16,"context_line":"    migration with NUMA topologies will be lifted."},{"line_number":17,"context_line":""}],"source_content_type":"text/x-yaml","patch_set":10,"id":"3f79a3b5_738d137d","line":14,"range":{"start_line":14,"start_character":8,"end_line":14,"end_character":26},"in_reply_to":"3f79a3b5_5bd91b7f","updated":"2018-12-13 12:04:12.000000000","message":"Done","commit_id":"28631806eefa716a7eed818110873db554433323"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"142c9bf8e10284ba9c2b52a4e67a3c2408ef278e","unresolved":false,"context_lines":[{"line_number":11,"context_line":"    the host platforms were not homogeneous, the instance could be assigned to"},{"line_number":12,"context_line":"    non-existent cores or be inadvertently split across host NUMA nodes."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"    The `long term solution \u003cnuma-aware-live-migration\u003e` to these issues is to"},{"line_number":15,"context_line":"    recalculate the XML on the destination node. When this work is completed,"},{"line_number":16,"context_line":"    the restriction on live migration with NUMA topologies will be lifted."},{"line_number":17,"context_line":""}],"source_content_type":"text/x-yaml","patch_set":11,"id":"3f79a3b5_c7cf77b4","line":14,"range":{"start_line":14,"start_character":56,"end_line":14,"end_character":57},"updated":"2018-12-13 22:08:25.000000000","message":"Missing the _ so this doesn\u0027t link. I\u0027m surprised this didn\u0027t break in the reno docs job.","commit_id":"9f2d0bc219dd0c50ed0c97daa006f3c2e9af02ac"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"567631d226542da456d7e41c89a1860455914932","unresolved":false,"context_lines":[{"line_number":11,"context_line":"    the host platforms were not homogeneous, the instance could be assigned to"},{"line_number":12,"context_line":"    non-existent cores or be inadvertently split across host NUMA nodes."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"    The `long term solution \u003cnuma-aware-live-migration\u003e` to these issues is to"},{"line_number":15,"context_line":"    recalculate the XML on the destination node. When this work is completed,"},{"line_number":16,"context_line":"    the restriction on live migration with NUMA topologies will be lifted."},{"line_number":17,"context_line":""}],"source_content_type":"text/x-yaml","patch_set":11,"id":"3f79a3b5_2de2ba00","line":14,"range":{"start_line":14,"start_character":56,"end_line":14,"end_character":57},"in_reply_to":"3f79a3b5_2368911d","updated":"2018-12-14 19:09:12.000000000","message":"Done","commit_id":"9f2d0bc219dd0c50ed0c97daa006f3c2e9af02ac"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"038ea7dd01916bd998bd049cc0c9201131e158a4","unresolved":false,"context_lines":[{"line_number":11,"context_line":"    the host platforms were not homogeneous, the instance could be assigned to"},{"line_number":12,"context_line":"    non-existent cores or be inadvertently split across host NUMA nodes."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"    The `long term solution \u003cnuma-aware-live-migration\u003e` to these issues is to"},{"line_number":15,"context_line":"    recalculate the XML on the destination node. When this work is completed,"},{"line_number":16,"context_line":"    the restriction on live migration with NUMA topologies will be lifted."},{"line_number":17,"context_line":""}],"source_content_type":"text/x-yaml","patch_set":11,"id":"3f79a3b5_2368911d","line":14,"range":{"start_line":14,"start_character":56,"end_line":14,"end_character":57},"in_reply_to":"3f79a3b5_c7cf77b4","updated":"2018-12-14 14:44:49.000000000","message":"without the _ i think it becomes a literal and is bolded instead of being a link so it wont raise a warning/error\nthat said i only vagues understand how sphixs works so thats just a guess.","commit_id":"9f2d0bc219dd0c50ed0c97daa006f3c2e9af02ac"}]}
