)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"eeb4fbd61e4534fe02f7b795ba857d40dd9741f5","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"libvirt: place emulator threads on CONF.cpu_share_set"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Whether the hw:emulator_threads_policy is set to SHARE and the"},{"line_number":10,"context_line":"CONF.cpu_share_set is configured the guests emulator threads should"},{"line_number":11,"context_line":"float on the whole pCPUs defined by CONF.cpu_share_set."},{"line_number":12,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"9f6a8fd7_a2aeede4","line":9,"range":{"start_line":9,"start_character":0,"end_line":9,"end_character":7},"updated":"2018-04-17 18:51:32.000000000","message":"When","commit_id":"fda722521dd58a669149c46f71957d71ec9c3996"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"eeb4fbd61e4534fe02f7b795ba857d40dd9741f5","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Whether the hw:emulator_threads_policy is set to SHARE and the"},{"line_number":10,"context_line":"CONF.cpu_share_set is configured the guests emulator threads should"},{"line_number":11,"context_line":"float on the whole pCPUs defined by CONF.cpu_share_set."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"implement: bp/overhead-pin-set"},{"line_number":14,"context_line":"Signed-off-by: Sahid Orentino Ferdjaoui \u003csahid.ferdjaoui@redhat.com\u003e"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"9f6a8fd7_c2abe1d3","line":11,"range":{"start_line":11,"start_character":5,"end_line":11,"end_character":18},"updated":"2018-04-17 18:51:32.000000000","message":"across the pCPUs","commit_id":"fda722521dd58a669149c46f71957d71ec9c3996"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"d832ce3ceca6a0f7a07eaf4943ad9cafff494ca2","unresolved":false,"context_lines":[{"line_number":9,"context_line":"Some workloads run best when the hypervisor overhead processes"},{"line_number":10,"context_line":"(emulator threads in libvirt/QEMU) can be placed on different physical"},{"line_number":11,"context_line":"host CPUs than other guest CPU resources. This allows those workloads"},{"line_number":12,"context_line":"to prevent latency spikes for guest vCPU threads."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"To place emulator threads on a set of isolated physical CPUs, set the"},{"line_number":15,"context_line":"``CONF.cpu_shared_set`` configuration option to the set of host CPUs"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":8,"id":"9f6a8fd7_5289cdc7","line":12,"range":{"start_line":12,"start_character":3,"end_line":12,"end_character":10},"updated":"2018-04-18 11:33:40.000000000","message":"s/prevent/avoid/","commit_id":"06bccb14241646727b9c9c57f271fcfd58c29626"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"de990f77b5ee1c46e83030cfb5a6014da3fe8f2f","unresolved":false,"context_lines":[{"line_number":11,"context_line":"host CPUs than other guest CPU resources. This allows those workloads"},{"line_number":12,"context_line":"to prevent latency spikes for guest vCPU threads."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"To place emulator threads on a set of isolated physical CPUs, set the"},{"line_number":15,"context_line":"``CONF.cpu_shared_set`` configuration option to the set of host CPUs"},{"line_number":16,"context_line":"that should be used for best-effort CPU resources. Then set a flavor"},{"line_number":17,"context_line":"extra spec to ``hw:emulator_threads_policy\u003dshare`` to instruct nova to"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":13,"id":"5f7c97a3_9da17e97","line":14,"range":{"start_line":14,"start_character":0,"end_line":14,"end_character":61},"updated":"2018-05-10 16:11:56.000000000","message":"this is a little bit misleading. The above makes it sound like emulator threads will run on dedicated physical CPUs, but I think what you mean to say is this:\n\n \"To ensure emulator threads are placed on a different set\n of physical CPUs than those running guest dedicated vCPUs,\n ...\"","commit_id":"ccd4d4f2c19516858da9dc4c20fd860b1b8e8227"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"39ff3ea24d463410c5f1122100eaabf0f687a305","unresolved":false,"context_lines":[{"line_number":13,"context_line":""},{"line_number":14,"context_line":"To ensure emulator threads are placed on a different set of physical"},{"line_number":15,"context_line":"CPUs than those running guest dedicated vCPUs, set the"},{"line_number":16,"context_line":"``CONF.cpu_shared_set`` configuration option to the set of host CPUs"},{"line_number":17,"context_line":"that should be used for best-effort CPU resources. Then set a flavor"},{"line_number":18,"context_line":"extra spec to ``hw:emulator_threads_policy\u003dshare`` to instruct nova to"},{"line_number":19,"context_line":"place that workload\u0027s emulator threads on that set of host CPUs."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":15,"id":"5f7c97a3_c9360652","line":16,"range":{"start_line":16,"start_character":2,"end_line":16,"end_character":21},"updated":"2018-05-15 13:10:17.000000000","message":"CONF.compute.cpu_shared_set","commit_id":"2e23b997e67562703756b6129bb9f5294bbd89db"}],"nova/objects/instance_numa_topology.py":[{"author":{"_account_id":7634,"name":"Takashi Natsume","email":"takanattie@gmail.com","username":"natsumet"},"change_message_id":"54eecd81ac0670d9e308885e3adaac60d864ffe3","unresolved":false,"context_lines":[{"line_number":147,"context_line":"    # Version 1.1: Takes into account pagesize"},{"line_number":148,"context_line":"    # Version 1.2: InstanceNUMACell 1.2"},{"line_number":149,"context_line":"    # Version 1.3: Add emulator threads policy"},{"line_number":150,"context_line":"    VERSION \u003d \u00271.3\u0027"},{"line_number":151,"context_line":""},{"line_number":152,"context_line":"    def obj_make_compatible(self, primitive, target_version):"},{"line_number":153,"context_line":"        super(InstanceNUMATopology, self).obj_make_compatible(primitive,"}],"source_content_type":"text/x-python","patch_set":1,"id":"5f4e5783_7ab51331","line":150,"range":{"start_line":150,"start_character":4,"end_line":150,"end_character":19},"updated":"2017-10-11 07:06:21.000000000","message":"The object version should be bumped.","commit_id":"34ba26b6ae39dc9a4bc96d7bb2214e560b45c964"}],"nova/tests/unit/virt/libvirt/test_driver.py":[{"author":{"_account_id":20191,"name":"Dinesh Bhor","email":"bhordinesh07@gmail.com","username":"dineshbhor"},"change_message_id":"9da29f57826ff48ef606355de3c034dc8041ad00","unresolved":false,"context_lines":[{"line_number":3240,"context_line":"                    hardware, \u0027get_vcpu_pin_set\u0027,"},{"line_number":3241,"context_line":"                    return_value\u003dset([4, 5, 6, 7, 8])),"},{"line_number":3242,"context_line":"                mock.patch.object(host.Host, \u0027get_online_cpus\u0027,"},{"line_number":3243,"context_line":"                                  return_value\u003dset(range(10))),"},{"line_number":3244,"context_line":"                ):"},{"line_number":3245,"context_line":"            cfg \u003d drvr._get_guest_config(instance_ref, [],"},{"line_number":3246,"context_line":"                                         image_meta, disk_info)"}],"source_content_type":"text/x-python","patch_set":11,"id":"9f6a8fd7_b20b1628","line":3243,"range":{"start_line":3243,"start_character":47,"end_line":3243,"end_character":61},"updated":"2018-04-24 01:15:16.000000000","message":"-1: cpus defined using `cpu_shared_set` i.e., set([48, 49, 50]) should be online, right?","commit_id":"e9cd39abebcd79e059b83e26aab350a758265843"},{"author":{"_account_id":20191,"name":"Dinesh Bhor","email":"bhordinesh07@gmail.com","username":"dineshbhor"},"change_message_id":"0659a14aea95f4ba323e913c7fa598434a29ed27","unresolved":false,"context_lines":[{"line_number":3240,"context_line":"                    hardware, \u0027get_vcpu_pin_set\u0027,"},{"line_number":3241,"context_line":"                    return_value\u003dset([4, 5, 6, 7, 8])),"},{"line_number":3242,"context_line":"                mock.patch.object(host.Host, \u0027get_online_cpus\u0027,"},{"line_number":3243,"context_line":"                                  return_value\u003dset(range(10))),"},{"line_number":3244,"context_line":"                ):"},{"line_number":3245,"context_line":"            cfg \u003d drvr._get_guest_config(instance_ref, [],"},{"line_number":3246,"context_line":"                                         image_meta, disk_info)"}],"source_content_type":"text/x-python","patch_set":11,"id":"9f6a8fd7_e9b08e45","line":3243,"range":{"start_line":3243,"start_character":47,"end_line":3243,"end_character":61},"in_reply_to":"9f6a8fd7_9f6ef7fd","updated":"2018-04-26 01:02:36.000000000","message":"The logic here [1] prevents us from storing offline cpus from the set(vcpu_pin_set) defined by operator into NUMACell.cpuset. With this offline cpus can not be assigned to guests though they are defined in vcpu_pin_set.\u2028\nAs we are not checking ``cpu_shared_set`` with online cpus there might be a possibility that offline shared cpus will get assigned to guests.\n\n\n[1] https://github.com/openstack/nova/blob/master/nova/virt/libvirt/driver.py#L6239-L6244\n\n\n\n\u003e\u003e\u003e allowed_cpus \u003d set([0,2,3])\n\u003e\u003e\u003e online_cpus \u003d set([0,1,3])\n\u003e\u003e\u003e if allowed_cpus:\n             allowed_cpus \u0026\u003d online_cpus\n        else:\n              allowed_cpus \u003d online_cpus\n\u003e\u003e\u003e allowed_cpus\nset([0, 3])","commit_id":"e9cd39abebcd79e059b83e26aab350a758265843"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"8b5ba04e4c14bfd3cda1a0638e92c05727a1f8e1","unresolved":false,"context_lines":[{"line_number":3240,"context_line":"                    hardware, \u0027get_vcpu_pin_set\u0027,"},{"line_number":3241,"context_line":"                    return_value\u003dset([4, 5, 6, 7, 8])),"},{"line_number":3242,"context_line":"                mock.patch.object(host.Host, \u0027get_online_cpus\u0027,"},{"line_number":3243,"context_line":"                                  return_value\u003dset(range(10))),"},{"line_number":3244,"context_line":"                ):"},{"line_number":3245,"context_line":"            cfg \u003d drvr._get_guest_config(instance_ref, [],"},{"line_number":3246,"context_line":"                                         image_meta, disk_info)"}],"source_content_type":"text/x-python","patch_set":11,"id":"9f6a8fd7_9f6ef7fd","line":3243,"range":{"start_line":3243,"start_character":47,"end_line":3243,"end_character":61},"in_reply_to":"9f6a8fd7_b20b1628","updated":"2018-04-25 09:42:31.000000000","message":"Not really. Our current behavior with vcpu_pin_set referring to online pCPUs is not good.\n\nWe should only refer to libvirt returning online pCPUs if none of these options are defined. If they are defined so we should only consider them.","commit_id":"e9cd39abebcd79e059b83e26aab350a758265843"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"b7bb4518a486abb49ff80c4144c741e6d3cc9e6e","unresolved":false,"context_lines":[{"line_number":3240,"context_line":"                    hardware, \u0027get_vcpu_pin_set\u0027,"},{"line_number":3241,"context_line":"                    return_value\u003dset([4, 5, 6, 7, 8])),"},{"line_number":3242,"context_line":"                mock.patch.object(host.Host, \u0027get_online_cpus\u0027,"},{"line_number":3243,"context_line":"                                  return_value\u003dset(range(10))),"},{"line_number":3244,"context_line":"                ):"},{"line_number":3245,"context_line":"            cfg \u003d drvr._get_guest_config(instance_ref, [],"},{"line_number":3246,"context_line":"                                         image_meta, disk_info)"}],"source_content_type":"text/x-python","patch_set":11,"id":"9f6a8fd7_305afa29","line":3243,"range":{"start_line":3243,"start_character":47,"end_line":3243,"end_character":61},"in_reply_to":"9f6a8fd7_e9b08e45","updated":"2018-05-02 10:16:33.000000000","message":"OK you win :)","commit_id":"e9cd39abebcd79e059b83e26aab350a758265843"}],"nova/virt/libvirt/driver.py":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"c81fe544b66b039e2f9d14b0ef024ed1de5d983b","unresolved":false,"context_lines":[{"line_number":4402,"context_line":"        if emulator_threads_policy \u003d\u003d fields.CPUEmulatorThreadsPolicy.ISOLATE:"},{"line_number":4403,"context_line":"            if object_numa_cell.cpuset_reserved:"},{"line_number":4404,"context_line":"                emulatorpin_cpuset \u003d object_numa_cell.cpuset_reserved"},{"line_number":4405,"context_line":"        elif ((emulator_threads_policy \u003d\u003d"},{"line_number":4406,"context_line":"              fields.CPUEmulatorThreadsPolicy.SHARE) and"},{"line_number":4407,"context_line":"              shared_ids):"},{"line_number":4408,"context_line":"            emulatorpin_cpuset \u003d shared_ids"},{"line_number":4409,"context_line":"        elif not wants_realtime or vcpu not in vcpus_rt:"},{"line_number":4410,"context_line":"            emulatorpin_cpuset \u003d pin_cpuset.cpuset"}],"source_content_type":"text/x-python","patch_set":8,"id":"9f6a8fd7_971752a4","line":4407,"range":{"start_line":4405,"start_character":0,"end_line":4407,"end_character":26},"updated":"2018-04-18 14:08:12.000000000","message":"Hmm, this concerns me. If the user requests this feature, I think we should either honor that request or else fail to schedule. Not doing so would give the user the false impression that their instance had emulator threads offloaded to other cores when in fact they weren\u0027t because the host wasn\u0027t configured properly. Surely we should raise an exception here for that?\n\nEDIT: I do note that we\u0027re not doing that above. However, I think that perhaps that was an oversight that we shouldn\u0027t repeat.","commit_id":"06bccb14241646727b9c9c57f271fcfd58c29626"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"716d45a68d365321f07da5a3aa91f952af3983b2","unresolved":false,"context_lines":[{"line_number":4402,"context_line":"        if emulator_threads_policy \u003d\u003d fields.CPUEmulatorThreadsPolicy.ISOLATE:"},{"line_number":4403,"context_line":"            if object_numa_cell.cpuset_reserved:"},{"line_number":4404,"context_line":"                emulatorpin_cpuset \u003d object_numa_cell.cpuset_reserved"},{"line_number":4405,"context_line":"        elif ((emulator_threads_policy \u003d\u003d"},{"line_number":4406,"context_line":"              fields.CPUEmulatorThreadsPolicy.SHARE) and"},{"line_number":4407,"context_line":"              shared_ids):"},{"line_number":4408,"context_line":"            emulatorpin_cpuset \u003d shared_ids"},{"line_number":4409,"context_line":"        elif not wants_realtime or vcpu not in vcpus_rt:"},{"line_number":4410,"context_line":"            emulatorpin_cpuset \u003d pin_cpuset.cpuset"}],"source_content_type":"text/x-python","patch_set":8,"id":"9f6a8fd7_dad5efe6","line":4407,"range":{"start_line":4405,"start_character":0,"end_line":4407,"end_character":26},"in_reply_to":"9f6a8fd7_1af4c7ce","updated":"2018-04-18 14:41:07.000000000","message":"Ah, yes, I\u0027d forgotten that SHARE was already a policy and that we\u0027re simply changing the behaviour of the policy if and only if the new cpu_shared_set option is set. OK, then! Thanks for your patience :)","commit_id":"06bccb14241646727b9c9c57f271fcfd58c29626"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"8a8809ebd2d2c3f6e9aa9b4e3831f3c87fc934b1","unresolved":false,"context_lines":[{"line_number":4402,"context_line":"        if emulator_threads_policy \u003d\u003d fields.CPUEmulatorThreadsPolicy.ISOLATE:"},{"line_number":4403,"context_line":"            if object_numa_cell.cpuset_reserved:"},{"line_number":4404,"context_line":"                emulatorpin_cpuset \u003d object_numa_cell.cpuset_reserved"},{"line_number":4405,"context_line":"        elif ((emulator_threads_policy \u003d\u003d"},{"line_number":4406,"context_line":"              fields.CPUEmulatorThreadsPolicy.SHARE) and"},{"line_number":4407,"context_line":"              shared_ids):"},{"line_number":4408,"context_line":"            emulatorpin_cpuset \u003d shared_ids"},{"line_number":4409,"context_line":"        elif not wants_realtime or vcpu not in vcpus_rt:"},{"line_number":4410,"context_line":"            emulatorpin_cpuset \u003d pin_cpuset.cpuset"}],"source_content_type":"text/x-python","patch_set":8,"id":"9f6a8fd7_da540f24","line":4407,"range":{"start_line":4405,"start_character":0,"end_line":4407,"end_character":26},"in_reply_to":"9f6a8fd7_1af4c7ce","updated":"2018-04-18 14:51:01.000000000","message":"Drat, I forgot SHARE already exists and we\u0027re reusing that. We can\u0027t break backwards compatibility, as you note. I did note in the spec review though that personally I consider using SHARE like this a bad idea and ISOLATE would be a better choice. I guess this is because there are two possible interpretations for both terms:\n\n  - ISOLATE \u003d\u003e\n    1. each emulator thread is pinned a dedicated core\n    2. emulator threads isolated from the guest cores\n\n  - SHARE \u003d\u003e\n    1. each emulator thread is floating across some shared\n       cores (shared with vCPUs or other emulator threads)\n    2. emulator threads share vCPU cores\n\nI favor the latter reading because it seems more obvious to me and this was the source of my confusion here. However, I\u0027m not going to block on this unless others are similarly confused :)","commit_id":"06bccb14241646727b9c9c57f271fcfd58c29626"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"62889aae89789478c9d08a49559208691a61eb03","unresolved":false,"context_lines":[{"line_number":4402,"context_line":"        if emulator_threads_policy \u003d\u003d fields.CPUEmulatorThreadsPolicy.ISOLATE:"},{"line_number":4403,"context_line":"            if object_numa_cell.cpuset_reserved:"},{"line_number":4404,"context_line":"                emulatorpin_cpuset \u003d object_numa_cell.cpuset_reserved"},{"line_number":4405,"context_line":"        elif ((emulator_threads_policy \u003d\u003d"},{"line_number":4406,"context_line":"              fields.CPUEmulatorThreadsPolicy.SHARE) and"},{"line_number":4407,"context_line":"              shared_ids):"},{"line_number":4408,"context_line":"            emulatorpin_cpuset \u003d shared_ids"},{"line_number":4409,"context_line":"        elif not wants_realtime or vcpu not in vcpus_rt:"},{"line_number":4410,"context_line":"            emulatorpin_cpuset \u003d pin_cpuset.cpuset"}],"source_content_type":"text/x-python","patch_set":8,"id":"9f6a8fd7_1af4c7ce","line":4407,"range":{"start_line":4405,"start_character":0,"end_line":4407,"end_character":26},"in_reply_to":"9f6a8fd7_77639e1b","updated":"2018-04-18 14:35:34.000000000","message":"I don\u0027t think it\u0027s something we want and can do.\n\n- We are going to break backward compatibility since the SHARE option is already present and some operators may have already configured it for their flavors.\n\n- It has been indicated in the spec that if SHARE is configured and CONF.cpu_shared_set not. So the default behavior remains meaning that the emulator threads are going to be pinned to the pCPUs dedicated for the vCPUs threads of the instance.","commit_id":"06bccb14241646727b9c9c57f271fcfd58c29626"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"6245b0af6e16955c48d7a4335f178fc42182592c","unresolved":false,"context_lines":[{"line_number":4402,"context_line":"        if emulator_threads_policy \u003d\u003d fields.CPUEmulatorThreadsPolicy.ISOLATE:"},{"line_number":4403,"context_line":"            if object_numa_cell.cpuset_reserved:"},{"line_number":4404,"context_line":"                emulatorpin_cpuset \u003d object_numa_cell.cpuset_reserved"},{"line_number":4405,"context_line":"        elif ((emulator_threads_policy \u003d\u003d"},{"line_number":4406,"context_line":"              fields.CPUEmulatorThreadsPolicy.SHARE) and"},{"line_number":4407,"context_line":"              shared_ids):"},{"line_number":4408,"context_line":"            emulatorpin_cpuset \u003d shared_ids"},{"line_number":4409,"context_line":"        elif not wants_realtime or vcpu not in vcpus_rt:"},{"line_number":4410,"context_line":"            emulatorpin_cpuset \u003d pin_cpuset.cpuset"}],"source_content_type":"text/x-python","patch_set":8,"id":"9f6a8fd7_77639e1b","line":4407,"range":{"start_line":4405,"start_character":0,"end_line":4407,"end_character":26},"in_reply_to":"9f6a8fd7_971752a4","updated":"2018-04-18 14:15:44.000000000","message":"ack, a fair point. I think raising an error is probably a good thing.","commit_id":"06bccb14241646727b9c9c57f271fcfd58c29626"},{"author":{"_account_id":25625,"name":"Tetsuro Nakamura","email":"tetsuro.nakamura.bc@hco.ntt.co.jp","username":"tetsuro0907"},"change_message_id":"c403d23980fe10c231ad695fd6df3ca68a16aed1","unresolved":false,"context_lines":[{"line_number":4388,"context_line":"            a) If emulator threads policy is isolated, we pin emulator threads"},{"line_number":4389,"context_line":"               to one cpu we have reserved for it."},{"line_number":4390,"context_line":"            b) Otherwise;"},{"line_number":4391,"context_line":"                b1) If realtime IS NOT enabled, the emulator threads are"},{"line_number":4392,"context_line":"                    allowed to float cross all the pCPUs associated with"},{"line_number":4393,"context_line":"                    the guest vCPUs."},{"line_number":4394,"context_line":"                b2) If realtime IS enabled, at least 1 vCPU is required"},{"line_number":4395,"context_line":"                    to be set aside for non-realtime usage. The emulator"},{"line_number":4396,"context_line":"                    threads are allowed to float across the pCPUs that"}],"source_content_type":"text/x-python","patch_set":9,"id":"9f6a8fd7_5ee1c5cf","line":4393,"range":{"start_line":4391,"start_character":48,"end_line":4393,"end_character":36},"updated":"2018-04-19 02:28:24.000000000","message":"Since now this is not only the case, this can be updated if you respin.","commit_id":"55f129e78a430301f7f02d4edcec2d9092909192"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"db05bfc6750fb56eb7d815c3ddf1866dcd64f2ad","unresolved":false,"context_lines":[{"line_number":4388,"context_line":"            a) If emulator threads policy is isolated, we pin emulator threads"},{"line_number":4389,"context_line":"               to one cpu we have reserved for it."},{"line_number":4390,"context_line":"            b) Otherwise;"},{"line_number":4391,"context_line":"                b1) If realtime IS NOT enabled, the emulator threads are"},{"line_number":4392,"context_line":"                    allowed to float cross all the pCPUs associated with"},{"line_number":4393,"context_line":"                    the guest vCPUs."},{"line_number":4394,"context_line":"                b2) If realtime IS enabled, at least 1 vCPU is required"},{"line_number":4395,"context_line":"                    to be set aside for non-realtime usage. The emulator"},{"line_number":4396,"context_line":"                    threads are allowed to float across the pCPUs that"}],"source_content_type":"text/x-python","patch_set":9,"id":"9f6a8fd7_d872c0e3","line":4393,"range":{"start_line":4391,"start_character":48,"end_line":4393,"end_character":36},"in_reply_to":"9f6a8fd7_5ee1c5cf","updated":"2018-04-19 12:26:42.000000000","message":"Please find the change here:\n\n  https://review.openstack.org/#/c/562565/","commit_id":"55f129e78a430301f7f02d4edcec2d9092909192"},{"author":{"_account_id":20191,"name":"Dinesh Bhor","email":"bhordinesh07@gmail.com","username":"dineshbhor"},"change_message_id":"e7a8c5ee709cbeeb99762ea8ac9a5df12f36afdc","unresolved":false,"context_lines":[{"line_number":4410,"context_line":"              fields.CPUEmulatorThreadsPolicy.SHARE) and"},{"line_number":4411,"context_line":"              shared_ids):"},{"line_number":4412,"context_line":"            online_pcpus \u003d self._host.get_online_cpus()"},{"line_number":4413,"context_line":"            cpuset \u003d shared_ids \u0026 online_pcpus"},{"line_number":4414,"context_line":"            if not cpuset:"},{"line_number":4415,"context_line":"                msg \u003d (_(\"Invalid cpu_shared_set config, one or more of the \""},{"line_number":4416,"context_line":"                         \"specified cpuset is not online. Online cpuset(s): \""},{"line_number":4417,"context_line":"                         \"%(online)s, requested cpuset(s): %(req)s\"),"},{"line_number":4418,"context_line":"                       {\u0027online\u0027: sorted(online_pcpus),"},{"line_number":4419,"context_line":"                        \u0027req\u0027: sorted(shared_ids)})"},{"line_number":4420,"context_line":"                raise exception.Invalid(msg)"},{"line_number":4421,"context_line":"            emulatorpin_cpuset \u003d cpuset"},{"line_number":4422,"context_line":"        elif not wants_realtime or vcpu not in vcpus_rt:"},{"line_number":4423,"context_line":"            emulatorpin_cpuset \u003d pin_cpuset.cpuset"}],"source_content_type":"text/x-python","patch_set":12,"id":"5f7c97a3_adffc3a8","line":4420,"range":{"start_line":4413,"start_character":12,"end_line":4420,"end_character":44},"updated":"2018-05-07 02:52:58.000000000","message":"This incorrect configuration is going to be identified only if operator tries to create a VM.\n\nIMO this should be done at compute service startup same as we do for parsing \u0027vcpu_pin_set\u0027 and fail the service initialization if operator defines offline cpus to be used. I know that there is no placeholder for storing parsed shared_cpus(defined using \u0027cpu_shared_set\u0027) in NUMACell object but we can certainly do this validation at service startup.","commit_id":"a41c4f3c43c88968d8febfd3f3a71499a684706f"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"8e53950131378c7a146dea326898029985f6c670","unresolved":false,"context_lines":[{"line_number":4410,"context_line":"              fields.CPUEmulatorThreadsPolicy.SHARE) and"},{"line_number":4411,"context_line":"              shared_ids):"},{"line_number":4412,"context_line":"            online_pcpus \u003d self._host.get_online_cpus()"},{"line_number":4413,"context_line":"            cpuset \u003d shared_ids \u0026 online_pcpus"},{"line_number":4414,"context_line":"            if not cpuset:"},{"line_number":4415,"context_line":"                msg \u003d (_(\"Invalid cpu_shared_set config, one or more of the \""},{"line_number":4416,"context_line":"                         \"specified cpuset is not online. Online cpuset(s): \""},{"line_number":4417,"context_line":"                         \"%(online)s, requested cpuset(s): %(req)s\"),"},{"line_number":4418,"context_line":"                       {\u0027online\u0027: sorted(online_pcpus),"},{"line_number":4419,"context_line":"                        \u0027req\u0027: sorted(shared_ids)})"},{"line_number":4420,"context_line":"                raise exception.Invalid(msg)"},{"line_number":4421,"context_line":"            emulatorpin_cpuset \u003d cpuset"},{"line_number":4422,"context_line":"        elif not wants_realtime or vcpu not in vcpus_rt:"},{"line_number":4423,"context_line":"            emulatorpin_cpuset \u003d pin_cpuset.cpuset"}],"source_content_type":"text/x-python","patch_set":12,"id":"5f7c97a3_50c8d620","line":4420,"range":{"start_line":4413,"start_character":12,"end_line":4420,"end_character":44},"in_reply_to":"5f7c97a3_adffc3a8","updated":"2018-05-09 07:51:42.000000000","message":"I based myself on what we do for vcpu_pin_set. We do not check it during startup.\n\nI would imagine that\u0027s because some pCPUs can be offline after the service started-up","commit_id":"a41c4f3c43c88968d8febfd3f3a71499a684706f"},{"author":{"_account_id":25625,"name":"Tetsuro Nakamura","email":"tetsuro.nakamura.bc@hco.ntt.co.jp","username":"tetsuro0907"},"change_message_id":"4032b130f4f90022a204ef3517574cd3d7fc086e","unresolved":false,"context_lines":[{"line_number":4318,"context_line":"              shared_ids):"},{"line_number":4319,"context_line":"            online_pcpus \u003d self._host.get_online_cpus()"},{"line_number":4320,"context_line":"            cpuset \u003d shared_ids \u0026 online_pcpus"},{"line_number":4321,"context_line":"            if not cpuset:"},{"line_number":4322,"context_line":"                msg \u003d (_(\"Invalid cpu_shared_set config, one or more of the \""},{"line_number":4323,"context_line":"                         \"specified cpuset is not online. Online cpuset(s): \""},{"line_number":4324,"context_line":"                         \"%(online)s, requested cpuset(s): %(req)s\"),"},{"line_number":4325,"context_line":"                       {\u0027online\u0027: sorted(online_pcpus),"},{"line_number":4326,"context_line":"                        \u0027req\u0027: sorted(shared_ids)})"},{"line_number":4327,"context_line":"                raise exception.Invalid(msg)"},{"line_number":4328,"context_line":"            emulatorpin_cpuset \u003d cpuset"},{"line_number":4329,"context_line":"        elif not wants_realtime or vcpu not in vcpus_rt:"},{"line_number":4330,"context_line":"            emulatorpin_cpuset \u003d pin_cpuset.cpuset"}],"source_content_type":"text/x-python","patch_set":13,"id":"5f7c97a3_160a5620","line":4327,"range":{"start_line":4321,"start_character":0,"end_line":4327,"end_character":44},"updated":"2018-05-09 08:52:39.000000000","message":"Found a similar validation check in @L5633. Why not put this check there? Because here this function is only called when deploying VMs. \n\nTo put this in get_vcpu_total() is more generic and can warn operators before deploying VMs, IMO.","commit_id":"ccd4d4f2c19516858da9dc4c20fd860b1b8e8227"},{"author":{"_account_id":25625,"name":"Tetsuro Nakamura","email":"tetsuro.nakamura.bc@hco.ntt.co.jp","username":"tetsuro0907"},"change_message_id":"4032b130f4f90022a204ef3517574cd3d7fc086e","unresolved":false,"context_lines":[{"line_number":5630,"context_line":"                \"error: %(error)s with error code: %(error_code)s\","},{"line_number":5631,"context_line":"                {\u0027error\u0027: err_msg, \u0027error_code\u0027: error_code})"},{"line_number":5632,"context_line":"        if online_pcpus:"},{"line_number":5633,"context_line":"            if not (available_ids \u003c\u003d online_pcpus):"},{"line_number":5634,"context_line":"                msg \u003d (_(\"Invalid vcpu_pin_set config, one or more of the \""},{"line_number":5635,"context_line":"                         \"specified cpuset is not online. Online cpuset(s): \""},{"line_number":5636,"context_line":"                         \"%(online)s, requested cpuset(s): %(req)s\"),"},{"line_number":5637,"context_line":"                       {\u0027online\u0027: sorted(online_pcpus),"},{"line_number":5638,"context_line":"                        \u0027req\u0027: sorted(available_ids)})"},{"line_number":5639,"context_line":"                raise exception.Invalid(msg)"},{"line_number":5640,"context_line":"        elif sorted(available_ids)[-1] \u003e\u003d total_pcpus:"},{"line_number":5641,"context_line":"            raise exception.Invalid(_(\"Invalid vcpu_pin_set config, \""}],"source_content_type":"text/x-python","patch_set":13,"id":"5f7c97a3_162336aa","line":5638,"range":{"start_line":5633,"start_character":0,"end_line":5638,"end_character":54},"updated":"2018-05-09 08:52:39.000000000","message":"Similar online cpu check is already here.","commit_id":"ccd4d4f2c19516858da9dc4c20fd860b1b8e8227"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"de990f77b5ee1c46e83030cfb5a6014da3fe8f2f","unresolved":false,"context_lines":[{"line_number":5630,"context_line":"                \"error: %(error)s with error code: %(error_code)s\","},{"line_number":5631,"context_line":"                {\u0027error\u0027: err_msg, \u0027error_code\u0027: error_code})"},{"line_number":5632,"context_line":"        if online_pcpus:"},{"line_number":5633,"context_line":"            if not (available_ids \u003c\u003d online_pcpus):"},{"line_number":5634,"context_line":"                msg \u003d (_(\"Invalid vcpu_pin_set config, one or more of the \""},{"line_number":5635,"context_line":"                         \"specified cpuset is not online. Online cpuset(s): \""},{"line_number":5636,"context_line":"                         \"%(online)s, requested cpuset(s): %(req)s\"),"},{"line_number":5637,"context_line":"                       {\u0027online\u0027: sorted(online_pcpus),"},{"line_number":5638,"context_line":"                        \u0027req\u0027: sorted(available_ids)})"},{"line_number":5639,"context_line":"                raise exception.Invalid(msg)"},{"line_number":5640,"context_line":"        elif sorted(available_ids)[-1] \u003e\u003d total_pcpus:"},{"line_number":5641,"context_line":"            raise exception.Invalid(_(\"Invalid vcpu_pin_set config, \""}],"source_content_type":"text/x-python","patch_set":13,"id":"5f7c97a3_9df89e7b","line":5638,"range":{"start_line":5633,"start_character":0,"end_line":5638,"end_character":54},"in_reply_to":"5f7c97a3_162336aa","updated":"2018-05-10 16:11:56.000000000","message":"Right, but this is called only by the inventory-checking code when determining how many VCPU resources the compute node supports.\n\nOr are you suggesting DRY\u0027ing up the code a bit and adding a new utility function that raises Invalid when the online CPUs conflict with some set of CPUs supplied as a function parameter?","commit_id":"ccd4d4f2c19516858da9dc4c20fd860b1b8e8227"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"3627411106a434827353b7eed726a268afa05b6f","unresolved":false,"context_lines":[{"line_number":5630,"context_line":"                \"error: %(error)s with error code: %(error_code)s\","},{"line_number":5631,"context_line":"                {\u0027error\u0027: err_msg, \u0027error_code\u0027: error_code})"},{"line_number":5632,"context_line":"        if online_pcpus:"},{"line_number":5633,"context_line":"            if not (available_ids \u003c\u003d online_pcpus):"},{"line_number":5634,"context_line":"                msg \u003d (_(\"Invalid vcpu_pin_set config, one or more of the \""},{"line_number":5635,"context_line":"                         \"specified cpuset is not online. Online cpuset(s): \""},{"line_number":5636,"context_line":"                         \"%(online)s, requested cpuset(s): %(req)s\"),"},{"line_number":5637,"context_line":"                       {\u0027online\u0027: sorted(online_pcpus),"},{"line_number":5638,"context_line":"                        \u0027req\u0027: sorted(available_ids)})"},{"line_number":5639,"context_line":"                raise exception.Invalid(msg)"},{"line_number":5640,"context_line":"        elif sorted(available_ids)[-1] \u003e\u003d total_pcpus:"},{"line_number":5641,"context_line":"            raise exception.Invalid(_(\"Invalid vcpu_pin_set config, \""}],"source_content_type":"text/x-python","patch_set":13,"id":"5f7c97a3_dd6911f9","line":5638,"range":{"start_line":5633,"start_character":0,"end_line":5638,"end_character":54},"in_reply_to":"5f7c97a3_9cf89649","updated":"2018-05-14 09:24:26.000000000","message":"I can add an other check here and log a warning whether we detect some pCPUs configured to be used by cpu_shared_set offlines. But that will be a bit hacky I guess.\n\nAn other solution is to have a driver method that will be called by the compute manager periodically to check some specific features that for example the online pCPUs but that needs to be discussed and out of the scope of this serie.","commit_id":"ccd4d4f2c19516858da9dc4c20fd860b1b8e8227"},{"author":{"_account_id":25625,"name":"Tetsuro Nakamura","email":"tetsuro.nakamura.bc@hco.ntt.co.jp","username":"tetsuro0907"},"change_message_id":"8ada58e9bb458acb88e72dd57aac91c080291ea8","unresolved":false,"context_lines":[{"line_number":5630,"context_line":"                \"error: %(error)s with error code: %(error_code)s\","},{"line_number":5631,"context_line":"                {\u0027error\u0027: err_msg, \u0027error_code\u0027: error_code})"},{"line_number":5632,"context_line":"        if online_pcpus:"},{"line_number":5633,"context_line":"            if not (available_ids \u003c\u003d online_pcpus):"},{"line_number":5634,"context_line":"                msg \u003d (_(\"Invalid vcpu_pin_set config, one or more of the \""},{"line_number":5635,"context_line":"                         \"specified cpuset is not online. Online cpuset(s): \""},{"line_number":5636,"context_line":"                         \"%(online)s, requested cpuset(s): %(req)s\"),"},{"line_number":5637,"context_line":"                       {\u0027online\u0027: sorted(online_pcpus),"},{"line_number":5638,"context_line":"                        \u0027req\u0027: sorted(available_ids)})"},{"line_number":5639,"context_line":"                raise exception.Invalid(msg)"},{"line_number":5640,"context_line":"        elif sorted(available_ids)[-1] \u003e\u003d total_pcpus:"},{"line_number":5641,"context_line":"            raise exception.Invalid(_(\"Invalid vcpu_pin_set config, \""}],"source_content_type":"text/x-python","patch_set":13,"id":"5f7c97a3_9cf89649","line":5638,"range":{"start_line":5633,"start_character":0,"end_line":5638,"end_character":54},"in_reply_to":"5f7c97a3_9df89e7b","updated":"2018-05-11 04:31:13.000000000","message":"My thought is that  _get_emulatorpin_cpuset() is called only when VM is deployed but this _get_vcpu_total() is called periodically so we can put that check here to catch wrong configuration and warn operators before deploying VMs.\n\nHowever, this might be a wrong place as you said because this function is \"to get total VCPU resource\" and it\u0027s completely irrelevant with \"cpu_shared_set\"... Hmm... okay,  stop blocking this, but isn\u0027t there a good place to put that validation check without deploying VMs?","commit_id":"ccd4d4f2c19516858da9dc4c20fd860b1b8e8227"},{"author":{"_account_id":25625,"name":"Tetsuro Nakamura","email":"tetsuro.nakamura.bc@hco.ntt.co.jp","username":"tetsuro0907"},"change_message_id":"c1877aa31195d160c1a2edac9a4d61fdf835912f","unresolved":false,"context_lines":[{"line_number":5630,"context_line":"                \"error: %(error)s with error code: %(error_code)s\","},{"line_number":5631,"context_line":"                {\u0027error\u0027: err_msg, \u0027error_code\u0027: error_code})"},{"line_number":5632,"context_line":"        if online_pcpus:"},{"line_number":5633,"context_line":"            if not (available_ids \u003c\u003d online_pcpus):"},{"line_number":5634,"context_line":"                msg \u003d (_(\"Invalid vcpu_pin_set config, one or more of the \""},{"line_number":5635,"context_line":"                         \"specified cpuset is not online. Online cpuset(s): \""},{"line_number":5636,"context_line":"                         \"%(online)s, requested cpuset(s): %(req)s\"),"},{"line_number":5637,"context_line":"                       {\u0027online\u0027: sorted(online_pcpus),"},{"line_number":5638,"context_line":"                        \u0027req\u0027: sorted(available_ids)})"},{"line_number":5639,"context_line":"                raise exception.Invalid(msg)"},{"line_number":5640,"context_line":"        elif sorted(available_ids)[-1] \u003e\u003d total_pcpus:"},{"line_number":5641,"context_line":"            raise exception.Invalid(_(\"Invalid vcpu_pin_set config, \""}],"source_content_type":"text/x-python","patch_set":13,"id":"5f7c97a3_e54194a7","line":5638,"range":{"start_line":5633,"start_character":0,"end_line":5638,"end_character":54},"in_reply_to":"5f7c97a3_dd6911f9","updated":"2018-05-16 07:55:55.000000000","message":"Thank you for clarification.","commit_id":"ccd4d4f2c19516858da9dc4c20fd860b1b8e8227"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"0284579945e80e4cd95d34ef53af548dfdf282c1","unresolved":false,"context_lines":[{"line_number":4309,"context_line":"            if object_numa_cell.cpuset_reserved:"},{"line_number":4310,"context_line":"                emulatorpin_cpuset \u003d object_numa_cell.cpuset_reserved"},{"line_number":4311,"context_line":"        elif ((emulator_threads_policy \u003d\u003d"},{"line_number":4312,"context_line":"              fields.CPUEmulatorThreadsPolicy.SHARE) and"},{"line_number":4313,"context_line":"              shared_ids):"},{"line_number":4314,"context_line":"            online_pcpus \u003d self._host.get_online_cpus()"},{"line_number":4315,"context_line":"            cpuset \u003d shared_ids \u0026 online_pcpus"}],"source_content_type":"text/x-python","patch_set":17,"id":"5f7c97a3_1d2672cf","line":4312,"updated":"2018-06-01 10:13:06.000000000","message":"nit: indentation off by one here","commit_id":"9724ec118b880ca8713c69366f55df43494b8dbb"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"0284579945e80e4cd95d34ef53af548dfdf282c1","unresolved":false,"context_lines":[{"line_number":4311,"context_line":"        elif ((emulator_threads_policy \u003d\u003d"},{"line_number":4312,"context_line":"              fields.CPUEmulatorThreadsPolicy.SHARE) and"},{"line_number":4313,"context_line":"              shared_ids):"},{"line_number":4314,"context_line":"            online_pcpus \u003d self._host.get_online_cpus()"},{"line_number":4315,"context_line":"            cpuset \u003d shared_ids \u0026 online_pcpus"},{"line_number":4316,"context_line":"            if not cpuset:"},{"line_number":4317,"context_line":"                msg \u003d (_(\"Invalid cpu_shared_set config, one or more of the \""},{"line_number":4318,"context_line":"                         \"specified cpuset is not online. Online cpuset(s): \""},{"line_number":4319,"context_line":"                         \"%(online)s, requested cpuset(s): %(req)s\"),"},{"line_number":4320,"context_line":"                       {\u0027online\u0027: sorted(online_pcpus),"},{"line_number":4321,"context_line":"                        \u0027req\u0027: sorted(shared_ids)})"},{"line_number":4322,"context_line":"                raise exception.Invalid(msg)"},{"line_number":4323,"context_line":"            emulatorpin_cpuset \u003d cpuset"},{"line_number":4324,"context_line":"        elif not wants_realtime or vcpu not in vcpus_rt:"},{"line_number":4325,"context_line":"            emulatorpin_cpuset \u003d pin_cpuset.cpuset"}],"source_content_type":"text/x-python","patch_set":17,"id":"5f7c97a3_bd1e5e6d","line":4322,"range":{"start_line":4314,"start_character":0,"end_line":4322,"end_character":44},"updated":"2018-06-01 10:13:06.000000000","message":"Hmm, so if you\u0027d misconfigured this, you\u0027d never know until the operator tried to boot the instance? If so, that seems...wrong. Could you check this at startup time instead, in order to alert operators to a misconfiguration as soon as possible.","commit_id":"9724ec118b880ca8713c69366f55df43494b8dbb"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"10c9d90357a16eda232534f0034e0f17f282a6a9","unresolved":false,"context_lines":[{"line_number":4311,"context_line":"        elif ((emulator_threads_policy \u003d\u003d"},{"line_number":4312,"context_line":"              fields.CPUEmulatorThreadsPolicy.SHARE) and"},{"line_number":4313,"context_line":"              shared_ids):"},{"line_number":4314,"context_line":"            online_pcpus \u003d self._host.get_online_cpus()"},{"line_number":4315,"context_line":"            cpuset \u003d shared_ids \u0026 online_pcpus"},{"line_number":4316,"context_line":"            if not cpuset:"},{"line_number":4317,"context_line":"                msg \u003d (_(\"Invalid cpu_shared_set config, one or more of the \""},{"line_number":4318,"context_line":"                         \"specified cpuset is not online. Online cpuset(s): \""},{"line_number":4319,"context_line":"                         \"%(online)s, requested cpuset(s): %(req)s\"),"},{"line_number":4320,"context_line":"                       {\u0027online\u0027: sorted(online_pcpus),"},{"line_number":4321,"context_line":"                        \u0027req\u0027: sorted(shared_ids)})"},{"line_number":4322,"context_line":"                raise exception.Invalid(msg)"},{"line_number":4323,"context_line":"            emulatorpin_cpuset \u003d cpuset"},{"line_number":4324,"context_line":"        elif not wants_realtime or vcpu not in vcpus_rt:"},{"line_number":4325,"context_line":"            emulatorpin_cpuset \u003d pin_cpuset.cpuset"}],"source_content_type":"text/x-python","patch_set":17,"id":"5f7c97a3_a9bffc5e","line":4322,"range":{"start_line":4314,"start_character":0,"end_line":4322,"end_character":44},"in_reply_to":"5f7c97a3_0e971647","updated":"2018-06-01 14:25:26.000000000","message":"Ah, thanks for the links. Looked back through those and it seems this is necessary","commit_id":"9724ec118b880ca8713c69366f55df43494b8dbb"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"ab4fc8fe44a510b15d083b5f419e548178fa539b","unresolved":false,"context_lines":[{"line_number":4311,"context_line":"        elif ((emulator_threads_policy \u003d\u003d"},{"line_number":4312,"context_line":"              fields.CPUEmulatorThreadsPolicy.SHARE) and"},{"line_number":4313,"context_line":"              shared_ids):"},{"line_number":4314,"context_line":"            online_pcpus \u003d self._host.get_online_cpus()"},{"line_number":4315,"context_line":"            cpuset \u003d shared_ids \u0026 online_pcpus"},{"line_number":4316,"context_line":"            if not cpuset:"},{"line_number":4317,"context_line":"                msg \u003d (_(\"Invalid cpu_shared_set config, one or more of the \""},{"line_number":4318,"context_line":"                         \"specified cpuset is not online. Online cpuset(s): \""},{"line_number":4319,"context_line":"                         \"%(online)s, requested cpuset(s): %(req)s\"),"},{"line_number":4320,"context_line":"                       {\u0027online\u0027: sorted(online_pcpus),"},{"line_number":4321,"context_line":"                        \u0027req\u0027: sorted(shared_ids)})"},{"line_number":4322,"context_line":"                raise exception.Invalid(msg)"},{"line_number":4323,"context_line":"            emulatorpin_cpuset \u003d cpuset"},{"line_number":4324,"context_line":"        elif not wants_realtime or vcpu not in vcpus_rt:"},{"line_number":4325,"context_line":"            emulatorpin_cpuset \u003d pin_cpuset.cpuset"}],"source_content_type":"text/x-python","patch_set":17,"id":"5f7c97a3_0e971647","line":4322,"range":{"start_line":4314,"start_character":0,"end_line":4322,"end_character":44},"in_reply_to":"5f7c97a3_bd1e5e6d","updated":"2018-06-01 12:55:49.000000000","message":"We already discussed that in previous patchesets (starts PS12) We currently don\u0027t check that at startup for CONF.pin_cpu_set that because the host CPUs can be online/offline after the service started-up. Then we were thinking about to check that is the periodic task which collect resources but we ended-up that will be hacky and we don\u0027t want break that collect.","commit_id":"9724ec118b880ca8713c69366f55df43494b8dbb"}],"releasenotes/notes/emulator-threads-policy-e5b57767104531b8.yaml":[{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"eeb4fbd61e4534fe02f7b795ba857d40dd9741f5","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Introducing ``CONF.cpu_share_set`` option for compute nodes. Some"},{"line_number":5,"context_line":"    workloads require to have the hypervisor overhead processes"},{"line_number":6,"context_line":"    running on on an isolated place which do not create lateny spikes"},{"line_number":7,"context_line":"    for vCPUs threads running."},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"    For libvirt driver configuring the ``CONF.cpu_share_set`` and"},{"line_number":10,"context_line":"    configuring the flavor with ``hw:emulator_threads_policy\u003dshare``"}],"source_content_type":"text/x-yaml","patch_set":6,"id":"9f6a8fd7_021479f4","line":7,"range":{"start_line":4,"start_character":4,"end_line":7,"end_character":30},"updated":"2018-04-17 18:51:32.000000000","message":"Hmm, this is a bit awkwardly-worded. How about this instead?\n\n Introduces ``CONF.cpu_shared_set`` option for compute nodes.\n Some workloads run best when the hypervisor overhead processes\n (emulator threads in libvirt/QEMU) can be placed on different\n physical host CPUs than other guest CPU resources. This\n allows those workloads to prevent latency spikes for guest\n vCPU threads.","commit_id":"fda722521dd58a669149c46f71957d71ec9c3996"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"eeb4fbd61e4534fe02f7b795ba857d40dd9741f5","unresolved":false,"context_lines":[{"line_number":6,"context_line":"    running on on an isolated place which do not create lateny spikes"},{"line_number":7,"context_line":"    for vCPUs threads running."},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"    For libvirt driver configuring the ``CONF.cpu_share_set`` and"},{"line_number":10,"context_line":"    configuring the flavor with ``hw:emulator_threads_policy\u003dshare``"},{"line_number":11,"context_line":"    will result that the guest emulator threads to float on the whole"},{"line_number":12,"context_line":"    set of pCPUs configured by ``CONF.cpu_share_set``."}],"source_content_type":"text/x-yaml","patch_set":6,"id":"9f6a8fd7_42c11154","line":12,"range":{"start_line":9,"start_character":4,"end_line":12,"end_character":54},"updated":"2018-04-17 18:51:32.000000000","message":"How about this instead?\n\n \"To place a workload\u0027s emulator threads on a set of isolated\n physical CPUs, set the ``CONF.cpu_shared_set`` configuration\n option to the set of host CPUs that should be used for\n best-effort CPU resources. Then set a flavor extra spec\n to ``hw:emulator_threads_policy\u003dshare`` to instruct nova\n to place that workload\u0027s emulator threads on that set of\n host CPUs.\"","commit_id":"fda722521dd58a669149c46f71957d71ec9c3996"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"d832ce3ceca6a0f7a07eaf4943ad9cafff494ca2","unresolved":false,"context_lines":[{"line_number":5,"context_line":"    workloads run best when the hypervisor overhead processes"},{"line_number":6,"context_line":"    (emulator threads in libvirt/QEMU) can be placed on different"},{"line_number":7,"context_line":"    physical host CPUs than other guest CPU resources. This allows"},{"line_number":8,"context_line":"    those workloads to prevent latency spikes for guest vCPU threads."},{"line_number":9,"context_line":""},{"line_number":10,"context_line":"    To place a workload\u0027s emulator threads on a set of isolated"},{"line_number":11,"context_line":"    physical CPUs, set the ``CONF.cpu_shared_set`` configuration"}],"source_content_type":"text/x-yaml","patch_set":8,"id":"9f6a8fd7_f2c101e6","line":8,"range":{"start_line":8,"start_character":23,"end_line":8,"end_character":30},"updated":"2018-04-18 11:33:40.000000000","message":"avoid is the better word here, but meh :)","commit_id":"06bccb14241646727b9c9c57f271fcfd58c29626"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"483d8f2ac91013106f93223766016255d7717605","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Introduces ``CONF.cpu_shared_set`` option for compute nodes.  Some"},{"line_number":5,"context_line":"    workloads run best when the hypervisor overhead processes"}],"source_content_type":"text/x-yaml","patch_set":14,"id":"5f7c97a3_7649e95d","line":2,"updated":"2018-05-14 16:53:17.000000000","message":"We should also have the \"Emulator threads policy\" flavor extra spec documentation updated for the new config option:\n\nhttps://docs.openstack.org/nova/latest/user/flavors.html","commit_id":"02dcce1f8a7ee6681b64db6037c0afe38a180ffa"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"483d8f2ac91013106f93223766016255d7717605","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Introduces ``CONF.cpu_shared_set`` option for compute nodes.  Some"},{"line_number":5,"context_line":"    workloads run best when the hypervisor overhead processes"},{"line_number":6,"context_line":"    (emulator threads in libvirt/QEMU) can be placed on different"},{"line_number":7,"context_line":"    physical host CPUs than other guest CPU resources. This allows"}],"source_content_type":"text/x-yaml","patch_set":14,"id":"5f7c97a3_16599533","line":4,"range":{"start_line":4,"start_character":22,"end_line":4,"end_character":36},"updated":"2018-05-14 16:53:17.000000000","message":"This is in the [compute] group now isn\u0027t it? Also, don\u0027t use \"CONF.foo\" notation in the release notes, since that\u0027s code-speak. The normal way to refer to config options in release notes and docs is like ``[compute]/cpu_shared_set``.","commit_id":"02dcce1f8a7ee6681b64db6037c0afe38a180ffa"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"483d8f2ac91013106f93223766016255d7717605","unresolved":false,"context_lines":[{"line_number":7,"context_line":"    physical host CPUs than other guest CPU resources. This allows"},{"line_number":8,"context_line":"    those workloads to prevent latency spikes for guest vCPU threads."},{"line_number":9,"context_line":""},{"line_number":10,"context_line":"    To place a workload\u0027s emulator threads on a set of isolated"},{"line_number":11,"context_line":"    physical CPUs, set the ``CONF.cpu_shared_set`` configuration"},{"line_number":12,"context_line":"    option to the set of host CPUs that should be used for best-effort"},{"line_number":13,"context_line":"    CPU resources. Then set a flavor extra spec to"}],"source_content_type":"text/x-yaml","patch_set":14,"id":"5f7c97a3_36793193","line":10,"updated":"2018-05-14 16:53:17.000000000","message":"This is good information for the flavors doc.","commit_id":"02dcce1f8a7ee6681b64db6037c0afe38a180ffa"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"483d8f2ac91013106f93223766016255d7717605","unresolved":false,"context_lines":[{"line_number":8,"context_line":"    those workloads to prevent latency spikes for guest vCPU threads."},{"line_number":9,"context_line":""},{"line_number":10,"context_line":"    To place a workload\u0027s emulator threads on a set of isolated"},{"line_number":11,"context_line":"    physical CPUs, set the ``CONF.cpu_shared_set`` configuration"},{"line_number":12,"context_line":"    option to the set of host CPUs that should be used for best-effort"},{"line_number":13,"context_line":"    CPU resources. Then set a flavor extra spec to"},{"line_number":14,"context_line":"    ``hw:emulator_threads_policy\u003dshare`` to instruct nova to place"}],"source_content_type":"text/x-yaml","patch_set":14,"id":"5f7c97a3_9644c548","line":11,"range":{"start_line":11,"start_character":29,"end_line":11,"end_character":48},"updated":"2018-05-14 16:53:17.000000000","message":"ditto","commit_id":"02dcce1f8a7ee6681b64db6037c0afe38a180ffa"}],"releasenotes/notes/overhead_pin_set-422b1268eb542fc8.yaml":[{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"60659051dcbdd53fa7506537abadca89814af76a","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Introducing \u0027overhead_pin_set\u0027 option for compute nodes. Some"},{"line_number":5,"context_line":"    workloads require to have the hypervisor overhead processes"},{"line_number":6,"context_line":"    running on on an isolated place which do not create lateny spikes"},{"line_number":7,"context_line":"    for vCPUs threads running."},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"    For libvirt driver configuring the \u0027overhead_pin_set\u0027 and"},{"line_number":10,"context_line":"    configuring the flavor with hw:emulator_threads_policy\u003dhost will"},{"line_number":11,"context_line":"    result that all the threads to be pinned on the isolated pCPUs."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"issues:"},{"line_number":14,"context_line":"  - |"},{"line_number":15,"context_line":"    The currenlty implemented emulator threads placement policy"},{"line_number":16,"context_line":"    provide an isolated option which reserved an additionnal host CPU"},{"line_number":17,"context_line":"    per guest to handle hypervisor overhead. For some workloads that"},{"line_number":18,"context_line":"    is consuming too much host resources."}],"source_content_type":"text/x-yaml","patch_set":4,"id":"9f6a8fd7_a56044d0","line":18,"range":{"start_line":2,"start_character":1,"end_line":18,"end_character":41},"updated":"2018-04-18 08:18:29.000000000","message":"features:\n  - |\n    Introducing \u0027overhead_pin_set\u0027 option for compute nodes. Some\n    workloads require to have the hypervisor overhead processes\n    running on on an isolated place which do not create lateny spikes\n    for vCPUs threads running.\n\n    For libvirt driver configuring the \u0027overhead_pin_set\u0027 and\n    configuring the flavor with hw:emulator_threads_policy\u003dhost will\n    result that all the threads to be pinned on the isolated pCPUs.\n\nissues:\n  - |\n    The currenlty implemented emulator threads placement policy\n    provide an isolated option which reserved an additionnal host CPU\n    per guest to handle hypervisor overhead. For some workloads that\n    is consuming too much host resources.","commit_id":"449ffc127e06cc9af43ad7aab2fcfc070752fb0c"}]}
