)]}'
{"specs/mitaka/approved/virt-driver-cpu-pinning.rst":[{"author":{"_account_id":1779,"name":"Daniel Berrange","email":"berrange@redhat.com","username":"berrange"},"change_message_id":"a9a9fa9bb19f748f183d931a16e2c12c1f757377","unresolved":false,"context_lines":[{"line_number":57,"context_line":""},{"line_number":58,"context_line":" - auto: The host may or may not have hyperthreads. This retains the legacy"},{"line_number":59,"context_line":"   \"prefer\" behavior, whereby siblings are prefered when available. This is"},{"line_number":60,"context_line":"   the default if no policy is specified."},{"line_number":61,"context_line":" - avoid: The host cannot have hyperthreads."},{"line_number":62,"context_line":" - separate: The host may or may not have hyperthreads. If hyperthreads are"},{"line_number":63,"context_line":"   present, each vCPU will be placed on a different core, i.e. no two vCPUs"}],"source_content_type":"text/x-rst","patch_set":3,"id":"ba8a016a_0463e6b2","line":60,"updated":"2015-11-16 10:25:24.000000000","message":"Can we just call this \u0027prefer\u0027 - \u0027auto\u0027 is a particularly unhelpful name, since every single one of these policies is \"automatic\".","commit_id":"06886cd0048d3eaff172a5c3e8d1766413a3da68"},{"author":{"_account_id":19212,"name":"Antonio López","email":"antonio.lopezgracia@telefonica.com","username":"alogra"},"change_message_id":"30b3e82830fd621c163993ac4d970181b958e309","unresolved":false,"context_lines":[{"line_number":57,"context_line":""},{"line_number":58,"context_line":" - auto: The host may or may not have hyperthreads. This retains the legacy"},{"line_number":59,"context_line":"   \"prefer\" behavior, whereby siblings are prefered when available. This is"},{"line_number":60,"context_line":"   the default if no policy is specified."},{"line_number":61,"context_line":" - avoid: The host cannot have hyperthreads."},{"line_number":62,"context_line":" - separate: The host may or may not have hyperthreads. If hyperthreads are"},{"line_number":63,"context_line":"   present, each vCPU will be placed on a different core, i.e. no two vCPUs"}],"source_content_type":"text/x-rst","patch_set":3,"id":"ba8a016a_025cf6eb","line":60,"in_reply_to":"ba8a016a_0463e6b2","updated":"2015-11-17 13:03:48.000000000","message":"I agree, \"auto\" meaning is not clear, \"prefer\" would me much more meaningfull.","commit_id":"06886cd0048d3eaff172a5c3e8d1766413a3da68"},{"author":{"_account_id":8768,"name":"Chris Friesen","email":"chris.friesen@windriver.com","username":"cbf123"},"change_message_id":"85a881338a6048e36906333146b6887d334f7fc8","unresolved":false,"context_lines":[{"line_number":58,"context_line":" - auto: The host may or may not have hyperthreads. This retains the legacy"},{"line_number":59,"context_line":"   \"prefer\" behavior, whereby siblings are prefered when available. This is"},{"line_number":60,"context_line":"   the default if no policy is specified."},{"line_number":61,"context_line":" - avoid: The host cannot have hyperthreads."},{"line_number":62,"context_line":" - separate: The host may or may not have hyperthreads. If hyperthreads are"},{"line_number":63,"context_line":"   present, each vCPU will be placed on a different core, i.e. no two vCPUs"},{"line_number":64,"context_line":"   will be placed on thread siblings. If hyperthread are not present, behavior"}],"source_content_type":"text/x-rst","patch_set":3,"id":"da85f559_22628e17","line":61,"updated":"2015-11-13 03:43:19.000000000","message":"don\u0027t think this is needed, but I don\u0027t feel strongly enough to try to hold up the approval.","commit_id":"06886cd0048d3eaff172a5c3e8d1766413a3da68"},{"author":{"_account_id":7055,"name":"Tapio Tallgren","username":"tapiotallgren","inactive":true},"change_message_id":"459c713c8c58d8db5fc9c6acca8e4b4fa4167bb5","unresolved":false,"context_lines":[{"line_number":58,"context_line":" - auto: The host may or may not have hyperthreads. This retains the legacy"},{"line_number":59,"context_line":"   \"prefer\" behavior, whereby siblings are prefered when available. This is"},{"line_number":60,"context_line":"   the default if no policy is specified."},{"line_number":61,"context_line":" - avoid: The host cannot have hyperthreads."},{"line_number":62,"context_line":" - separate: The host may or may not have hyperthreads. If hyperthreads are"},{"line_number":63,"context_line":"   present, each vCPU will be placed on a different core, i.e. no two vCPUs"},{"line_number":64,"context_line":"   will be placed on thread siblings. If hyperthread are not present, behavior"}],"source_content_type":"text/x-rst","patch_set":3,"id":"ba8a016a_1ca6d2c1","line":61,"in_reply_to":"da85f559_22628e17","updated":"2015-11-16 14:12:48.000000000","message":"I also see no use for this.\n\nIn theory, some might want to run vCPU1 and vCPU2 on the same physical core on hyperthread siblings, but it would be difficult how this would be faster than running them on two different physical threads - vCPU1 and vCPU2 would need to communicate heavily using shared memory and not be able to run simultaneously all the time.","commit_id":"06886cd0048d3eaff172a5c3e8d1766413a3da68"},{"author":{"_account_id":19284,"name":"Pablo Montes","email":"pablo.montesmoreno@telefonica.com","username":"PabloMontes"},"change_message_id":"793eb0acf65967fe53e7e22965a622507974cd4f","unresolved":false,"context_lines":[{"line_number":62,"context_line":" - separate: The host may or may not have hyperthreads. If hyperthreads are"},{"line_number":63,"context_line":"   present, each vCPU will be placed on a different core, i.e. no two vCPUs"},{"line_number":64,"context_line":"   will be placed on thread siblings. If hyperthread are not present, behavior"},{"line_number":65,"context_line":"   will implicitly emulate the avoid policy."},{"line_number":66,"context_line":" - isolate: The host may or many not have hyperthreads. If hyperthreads are"},{"line_number":67,"context_line":"   present, each vCPU will be placed on a different core and no vCPUs from"},{"line_number":68,"context_line":"   other guests will be able to be placed on the same core, i.e. one thread"}],"source_content_type":"text/x-rst","patch_set":3,"id":"da85f559_5e51a60d","line":65,"updated":"2015-11-13 08:55:40.000000000","message":"In order to optimize the compute nodes usage in this case HT nodes should be preferred. E.g. if a \u0027separate\u0027 is instantiated in a non HT node it is possible that a later \u0027isolate\u0027 instance would not have room","commit_id":"06886cd0048d3eaff172a5c3e8d1766413a3da68"},{"author":{"_account_id":7055,"name":"Tapio Tallgren","username":"tapiotallgren","inactive":true},"change_message_id":"459c713c8c58d8db5fc9c6acca8e4b4fa4167bb5","unresolved":false,"context_lines":[{"line_number":62,"context_line":" - separate: The host may or may not have hyperthreads. If hyperthreads are"},{"line_number":63,"context_line":"   present, each vCPU will be placed on a different core, i.e. no two vCPUs"},{"line_number":64,"context_line":"   will be placed on thread siblings. If hyperthread are not present, behavior"},{"line_number":65,"context_line":"   will implicitly emulate the avoid policy."},{"line_number":66,"context_line":" - isolate: The host may or many not have hyperthreads. If hyperthreads are"},{"line_number":67,"context_line":"   present, each vCPU will be placed on a different core and no vCPUs from"},{"line_number":68,"context_line":"   other guests will be able to be placed on the same core, i.e. one thread"}],"source_content_type":"text/x-rst","patch_set":3,"id":"ba8a016a_bcfd4670","line":65,"in_reply_to":"ba8a016a_731dda0e","updated":"2015-11-16 14:12:48.000000000","message":"I would prefer not to have a new scheduler for this. The preference can be handled with availability zones.","commit_id":"06886cd0048d3eaff172a5c3e8d1766413a3da68"},{"author":{"_account_id":8768,"name":"Chris Friesen","email":"chris.friesen@windriver.com","username":"cbf123"},"change_message_id":"55822388313c0ac5fe9944b8d7c4249e42490197","unresolved":false,"context_lines":[{"line_number":62,"context_line":" - separate: The host may or may not have hyperthreads. If hyperthreads are"},{"line_number":63,"context_line":"   present, each vCPU will be placed on a different core, i.e. no two vCPUs"},{"line_number":64,"context_line":"   will be placed on thread siblings. If hyperthread are not present, behavior"},{"line_number":65,"context_line":"   will implicitly emulate the avoid policy."},{"line_number":66,"context_line":" - isolate: The host may or many not have hyperthreads. If hyperthreads are"},{"line_number":67,"context_line":"   present, each vCPU will be placed on a different core and no vCPUs from"},{"line_number":68,"context_line":"   other guests will be able to be placed on the same core, i.e. one thread"}],"source_content_type":"text/x-rst","patch_set":3,"id":"da85f559_fe33a3f4","line":65,"in_reply_to":"da85f559_5e51a60d","updated":"2015-11-13 16:01:38.000000000","message":"The only way to \"prefer\" something in the scheduler is via the scheduler weights, and currently we don\u0027t support any complicated weighing factors.","commit_id":"06886cd0048d3eaff172a5c3e8d1766413a3da68"},{"author":{"_account_id":19212,"name":"Antonio López","email":"antonio.lopezgracia@telefonica.com","username":"alogra"},"change_message_id":"09eb6418107ba28868ec070dfd3ca07d6e248659","unresolved":false,"context_lines":[{"line_number":62,"context_line":" - separate: The host may or may not have hyperthreads. If hyperthreads are"},{"line_number":63,"context_line":"   present, each vCPU will be placed on a different core, i.e. no two vCPUs"},{"line_number":64,"context_line":"   will be placed on thread siblings. If hyperthread are not present, behavior"},{"line_number":65,"context_line":"   will implicitly emulate the avoid policy."},{"line_number":66,"context_line":" - isolate: The host may or many not have hyperthreads. If hyperthreads are"},{"line_number":67,"context_line":"   present, each vCPU will be placed on a different core and no vCPUs from"},{"line_number":68,"context_line":"   other guests will be able to be placed on the same core, i.e. one thread"}],"source_content_type":"text/x-rst","patch_set":3,"id":"ba8a016a_731dda0e","line":65,"in_reply_to":"da85f559_fe33a3f4","updated":"2015-11-16 09:24:45.000000000","message":"It doesn\u0027t look like complicated weighing, only HT or non HT nodes. How is it going to work then? Is the scheduler going to select the first node with enough cpus available, independent of the HT status of the node?","commit_id":"06886cd0048d3eaff172a5c3e8d1766413a3da68"},{"author":{"_account_id":19284,"name":"Pablo Montes","email":"pablo.montesmoreno@telefonica.com","username":"PabloMontes"},"change_message_id":"793eb0acf65967fe53e7e22965a622507974cd4f","unresolved":false,"context_lines":[{"line_number":67,"context_line":"   present, each vCPU will be placed on a different core and no vCPUs from"},{"line_number":68,"context_line":"   other guests will be able to be placed on the same core, i.e. one thread"},{"line_number":69,"context_line":"   sibling is guaranteed to always be unused. If hyperthreads are not present,"},{"line_number":70,"context_line":"   behavior will implicitly emulate the avoid policy."},{"line_number":71,"context_line":" - require: The host must have hyperthreads. Each vCPU will be allocated on"},{"line_number":72,"context_line":"   thread siblings."},{"line_number":73,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"da85f559_9e162ef0","line":70,"updated":"2015-11-13 08:55:40.000000000","message":"In this case non HT nodes should be preferred. E.g. if a \u0027isolate\u0027 is instantiated in a HT node it is possible that a later \u0027separate\u0027 instance would not have room","commit_id":"06886cd0048d3eaff172a5c3e8d1766413a3da68"},{"author":{"_account_id":19212,"name":"Antonio López","email":"antonio.lopezgracia@telefonica.com","username":"alogra"},"change_message_id":"995915def1fbe69678a4e656a4a3a0821df75aef","unresolved":false,"context_lines":[{"line_number":72,"context_line":"   thread siblings."},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"The image metadata properties will also allow specification of the"},{"line_number":75,"context_line":"threads policy:"},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"* hw_cpu_threads_policy\u003dauto|avoid|separate|isolate|require"},{"line_number":78,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"da85f559_3e25c2ad","line":75,"updated":"2015-11-13 08:47:45.000000000","message":"In this case hw:cpu_policy\u003ddedicated has to be specified in the image too, right?","commit_id":"06886cd0048d3eaff172a5c3e8d1766413a3da68"},{"author":{"_account_id":1779,"name":"Daniel Berrange","email":"berrange@redhat.com","username":"berrange"},"change_message_id":"32f91570d4cf696fc965ba98b91bfd5613d1a035","unresolved":false,"context_lines":[{"line_number":72,"context_line":"   thread siblings."},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"The image metadata properties will also allow specification of the"},{"line_number":75,"context_line":"threads policy:"},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"* hw_cpu_threads_policy\u003dauto|avoid|separate|isolate|require"},{"line_number":78,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"ba8a016a_84dea16b","line":75,"in_reply_to":"ba8a016a_01c86321","updated":"2015-11-17 17:03:30.000000000","message":"Doing automatic rounding up of vCPUs will just lead to bugs elsewhere in the code IMHO, as code will be expecting the VM to have the vCPU count that is listed in the flavour, not some rounded version of it.. It is easy enough to define a flavour with the suitable number of vCPUs so I don\u0027t see a compelling reason to ignore the specified vCPU count and perform rounding.","commit_id":"06886cd0048d3eaff172a5c3e8d1766413a3da68"},{"author":{"_account_id":8768,"name":"Chris Friesen","email":"chris.friesen@windriver.com","username":"cbf123"},"change_message_id":"828747eb5e7b1f5bee1773c6edc818758499fa70","unresolved":false,"context_lines":[{"line_number":72,"context_line":"   thread siblings."},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"The image metadata properties will also allow specification of the"},{"line_number":75,"context_line":"threads policy:"},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"* hw_cpu_threads_policy\u003dauto|avoid|separate|isolate|require"},{"line_number":78,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"ba8a016a_f4f3a508","line":75,"in_reply_to":"ba8a016a_05b4fdce","updated":"2015-11-17 14:16:49.000000000","message":"Antonio...is the above comment supposed to be where it is?  It sounds like you\u0027re talking about the \"auto\" (aka \"preferred\") case.  If so, then I disagree.  If the guest hasn\u0027t specified a preference, then they get the cheapest option--dense packing onto available threads.  If they want pairs of threads for performance, they should specify \"require\" and set the number of vcpus to a multiple of num_threads_per_core.","commit_id":"06886cd0048d3eaff172a5c3e8d1766413a3da68"},{"author":{"_account_id":8768,"name":"Chris Friesen","email":"chris.friesen@windriver.com","username":"cbf123"},"change_message_id":"ce22fc1b0e422693c36ce432246d27ca3b159c34","unresolved":false,"context_lines":[{"line_number":72,"context_line":"   thread siblings."},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"The image metadata properties will also allow specification of the"},{"line_number":75,"context_line":"threads policy:"},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"* hw_cpu_threads_policy\u003dauto|avoid|separate|isolate|require"},{"line_number":78,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"ba8a016a_c1ca5ba1","line":75,"in_reply_to":"ba8a016a_0e77353b","updated":"2015-11-17 16:47:33.000000000","message":"The problem with a guest vcpus count that isn\u0027t a multiple of threads-per-core is that qemu doesn\u0027t support it.  qemu accepts as arguments the total number of cpus, the number of sockets, the number of cores/socket, and the number of threads/core.  You can\u0027t tell qemu to boot a socket that has a core with two threads and another core with one thread.\n\nYou *could* tell it to boot a guest with an odd number of sockets, or cores, or threads, but then you\u0027re not reflecting the topology of the host up into the guest.  And considering that the only reason to use \"require\" is for performance (presumably due to shared L2 cache), the guest really needs to know the host topology.","commit_id":"06886cd0048d3eaff172a5c3e8d1766413a3da68"},{"author":{"_account_id":19284,"name":"Pablo Montes","email":"pablo.montesmoreno@telefonica.com","username":"PabloMontes"},"change_message_id":"a23fb1ff2eacb7dbf7e6054c84220145d2ca37f7","unresolved":false,"context_lines":[{"line_number":72,"context_line":"   thread siblings."},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"The image metadata properties will also allow specification of the"},{"line_number":75,"context_line":"threads policy:"},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"* hw_cpu_threads_policy\u003dauto|avoid|separate|isolate|require"},{"line_number":78,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"ba8a016a_0e77353b","line":75,"in_reply_to":"ba8a016a_234c926f","updated":"2015-11-17 15:51:18.000000000","message":"I agree:\n* If 3 cpu are requested the desired behaviour should be (supposing 2 threads per core) to allocate them using 2 cores (one full core and only one thread of the other one).\n* I\u0027m not so sure about what should happen to the remaining thread. In my opinion it would be better to keep it as available in order to optimize resources (as in \u0027separate\u0027 instead of \u0027isolate\u0027).","commit_id":"06886cd0048d3eaff172a5c3e8d1766413a3da68"},{"author":{"_account_id":8768,"name":"Chris Friesen","email":"chris.friesen@windriver.com","username":"cbf123"},"change_message_id":"bf3ba2797f98c469c750f77514b17f7c989d4064","unresolved":false,"context_lines":[{"line_number":72,"context_line":"   thread siblings."},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"The image metadata properties will also allow specification of the"},{"line_number":75,"context_line":"threads policy:"},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"* hw_cpu_threads_policy\u003dauto|avoid|separate|isolate|require"},{"line_number":78,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"ba8a016a_cd784592","line":75,"in_reply_to":"ba8a016a_24d49545","updated":"2015-11-17 20:03:42.000000000","message":"Pablo: For performance reasons when using dedicated CPUs the guest topology should always map to the host topology.  The guest needs to know what memory can be accessed by a given vCPU with low latency, needs to know which cores are on the same socket (since they share L3 cache), and needs to know which threads are on the same core (since they share L2 cache).\n\nWhen using floating CPUs the guest topology is arbitrary since the mapping to host topology can change over time.","commit_id":"06886cd0048d3eaff172a5c3e8d1766413a3da68"},{"author":{"_account_id":8768,"name":"Chris Friesen","email":"chris.friesen@windriver.com","username":"cbf123"},"change_message_id":"bf3ba2797f98c469c750f77514b17f7c989d4064","unresolved":false,"context_lines":[{"line_number":72,"context_line":"   thread siblings."},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"The image metadata properties will also allow specification of the"},{"line_number":75,"context_line":"threads policy:"},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"* hw_cpu_threads_policy\u003dauto|avoid|separate|isolate|require"},{"line_number":78,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"ba8a016a_cac02be3","line":75,"in_reply_to":"ba8a016a_3aab4c1f","updated":"2015-11-17 20:03:42.000000000","message":"Antonio: We\u0027re talking about a threading policy of \"require\", which is new.\n\nAs for being difficult to trace...it\u0027s also difficult to trace a NUMA topology that can\u0027t be matched, or a memory page size that can\u0027t be matched.   I\u0027ve previously brought up the idea that we should have a way for scheduler filters to report a reason why they didn\u0027t match in order to make it easier to figure out why an instance couldn\u0027t be scheduled.","commit_id":"06886cd0048d3eaff172a5c3e8d1766413a3da68"},{"author":{"_account_id":19212,"name":"Antonio López","email":"antonio.lopezgracia@telefonica.com","username":"alogra"},"change_message_id":"037456a191ea8f3cff4631debcf662d5ae309e1b","unresolved":false,"context_lines":[{"line_number":72,"context_line":"   thread siblings."},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"The image metadata properties will also allow specification of the"},{"line_number":75,"context_line":"threads policy:"},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"* hw_cpu_threads_policy\u003dauto|avoid|separate|isolate|require"},{"line_number":78,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"ba8a016a_3aab4c1f","line":75,"in_reply_to":"ba8a016a_770d6d3d","updated":"2015-11-17 17:43:51.000000000","message":"Currently -at least in Juno- that is not happening: the 3 threads are assigned in separate cores, and the siblings are free to be allocated by another guest, i.e. the current \"separate\" behaviour. So this will be changed, right?\n\nI do not agree with the former neither the proposed change to fail scheduling when the number of requested vcpus is not a multiple of threads-per-core. That will be very difficult to trace, we will get just the \"no valid host was found\" and it will be really difficult to trace the problem back to the real issue. And even finding the problem it will be anti intuitive to explain, as there are enough resources, but the host has a HW architecture not compatible with the guest requested resources.","commit_id":"06886cd0048d3eaff172a5c3e8d1766413a3da68"},{"author":{"_account_id":1779,"name":"Daniel Berrange","email":"berrange@redhat.com","username":"berrange"},"change_message_id":"22f83f593bb1c5908a5db1d418ba1d61cce5772d","unresolved":false,"context_lines":[{"line_number":72,"context_line":"   thread siblings."},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"The image metadata properties will also allow specification of the"},{"line_number":75,"context_line":"threads policy:"},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"* hw_cpu_threads_policy\u003dauto|avoid|separate|isolate|require"},{"line_number":78,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"ba8a016a_770d6d3d","line":75,"in_reply_to":"ba8a016a_8478e1c5","updated":"2015-11-17 17:33:14.000000000","message":"An odd number of vCPUs is not a problem as long as the number of hyperthreads per core is greater or equal to a divisor.\n\neg if the guest has 3 vCPUs and the host has CPUs with 3 threads per core, that can be satisfied. I know Intel has 2 threads per core currently, but we shouldn\u0027t bake in an assumption that\u0027ll always be the case in the future.\n\nIf it can\u0027t be satisfied though an error should occur.","commit_id":"06886cd0048d3eaff172a5c3e8d1766413a3da68"},{"author":{"_account_id":19212,"name":"Antonio López","email":"antonio.lopezgracia@telefonica.com","username":"alogra"},"change_message_id":"4a06e2adba6cb46fea198687cb0a58dacde07891","unresolved":false,"context_lines":[{"line_number":72,"context_line":"   thread siblings."},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"The image metadata properties will also allow specification of the"},{"line_number":75,"context_line":"threads policy:"},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"* hw_cpu_threads_policy\u003dauto|avoid|separate|isolate|require"},{"line_number":78,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"ba8a016a_8478e1c5","line":75,"in_reply_to":"ba8a016a_84dea16b","updated":"2015-11-17 17:14:25.000000000","message":"Ok. So what would happen if an odd number of vcpus is requested in the flavor and the thread_policy is require?","commit_id":"06886cd0048d3eaff172a5c3e8d1766413a3da68"},{"author":{"_account_id":19212,"name":"Antonio López","email":"antonio.lopezgracia@telefonica.com","username":"alogra"},"change_message_id":"c7a68db6dfc602da92deaf4347cf307494c4e23f","unresolved":false,"context_lines":[{"line_number":72,"context_line":"   thread siblings."},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"The image metadata properties will also allow specification of the"},{"line_number":75,"context_line":"threads policy:"},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"* hw_cpu_threads_policy\u003dauto|avoid|separate|isolate|require"},{"line_number":78,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"ba8a016a_01c86321","line":75,"in_reply_to":"ba8a016a_c1ca5ba1","updated":"2015-11-17 16:56:26.000000000","message":"Then maybe the implementation should round up an odd number of vcpus to the next even number, isolating the last empty thread, but not failing to schedule the guest.","commit_id":"06886cd0048d3eaff172a5c3e8d1766413a3da68"},{"author":{"_account_id":19284,"name":"Pablo Montes","email":"pablo.montesmoreno@telefonica.com","username":"PabloMontes"},"change_message_id":"8cf96e76d055b5c7c1bf55ab90d395fc0f2141ed","unresolved":false,"context_lines":[{"line_number":72,"context_line":"   thread siblings."},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"The image metadata properties will also allow specification of the"},{"line_number":75,"context_line":"threads policy:"},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"* hw_cpu_threads_policy\u003dauto|avoid|separate|isolate|require"},{"line_number":78,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"ba8a016a_24d49545","line":75,"in_reply_to":"ba8a016a_c1ca5ba1","updated":"2015-11-17 17:03:39.000000000","message":"You are assuming you have to specify the same topology in the VM than you have in the host. In my opinion this is neither necessary nor convenient since the vm could require a different topology than the host (we have seen this testing VNFs in our lab).\n\nThe only knoledge needed about the host is in the case of \u0027require\u0027 and it is only the number of threads per core so L2 cache usage can be optimized.","commit_id":"06886cd0048d3eaff172a5c3e8d1766413a3da68"},{"author":{"_account_id":8768,"name":"Chris Friesen","email":"chris.friesen@windriver.com","username":"cbf123"},"change_message_id":"e7e37687fd9116143031c2274831cf42f2f465cd","unresolved":false,"context_lines":[{"line_number":72,"context_line":"   thread siblings."},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"The image metadata properties will also allow specification of the"},{"line_number":75,"context_line":"threads policy:"},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"* hw_cpu_threads_policy\u003dauto|avoid|separate|isolate|require"},{"line_number":78,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"ba8a016a_dadd6b15","line":75,"in_reply_to":"ba8a016a_d478e12d","updated":"2015-11-17 15:10:56.000000000","message":"With the current proposed implementation it will fail to schedule unless the number of guest vcpus is a multiple of the host threads/core value.  I think the ideal solution would have some way for the end-user to discover this value, since the alternative is for them to use trial-and-error to figure it out (if we keep the current algorithm) or for them to pay for threads they\u0027re not using (if we \"waste\" any remaining threads on a core).\n\nThis is all complicated by upcoming CPUs with four threads per core...it\u0027d be a shame to \"waste\"  three of them if someone asked for five threads.","commit_id":"06886cd0048d3eaff172a5c3e8d1766413a3da68"},{"author":{"_account_id":19212,"name":"Antonio López","email":"antonio.lopezgracia@telefonica.com","username":"alogra"},"change_message_id":"6257fcd402b24c39e6d5235dfa01f03b2636fab8","unresolved":false,"context_lines":[{"line_number":72,"context_line":"   thread siblings."},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"The image metadata properties will also allow specification of the"},{"line_number":75,"context_line":"threads policy:"},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"* hw_cpu_threads_policy\u003dauto|avoid|separate|isolate|require"},{"line_number":78,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"ba8a016a_234c926f","line":75,"in_reply_to":"ba8a016a_dadd6b15","updated":"2015-11-17 15:29:54.000000000","message":"I do not agree, the end user should not know about the underlying HW. I my opinion this shouldn\u0027t fail, it should be scheduled, even wasting the resources. Failing just because someone asked for an odd number of threads would be very difficult to troubleshoot and even more difficult to explain, when there are resources available. \nI do not agree with the requirement \"the number of guest vcpus is a multiple of the host threads/core value\". Right now the behaviour for odd number of vcpus is to schedule them as separate, different for the behaviour of an even number of vcpus. I think the behaviour in both cases should be similar, even wasting resources, the contrary would be very difficult to handle.","commit_id":"06886cd0048d3eaff172a5c3e8d1766413a3da68"},{"author":{"_account_id":19212,"name":"Antonio López","email":"antonio.lopezgracia@telefonica.com","username":"alogra"},"change_message_id":"475eb2247d94a6ee792b0912cb0a8dd06067d5e7","unresolved":false,"context_lines":[{"line_number":72,"context_line":"   thread siblings."},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"The image metadata properties will also allow specification of the"},{"line_number":75,"context_line":"threads policy:"},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"* hw_cpu_threads_policy\u003dauto|avoid|separate|isolate|require"},{"line_number":78,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"ba8a016a_d478e12d","line":75,"in_reply_to":"ba8a016a_f4f3a508","updated":"2015-11-17 14:24:17.000000000","message":"I agree with you for the auto/preferred case. \nMy comment was about the \"require\" case: what is it suppossed to happen in the case of odd number of vcpus when \"require\" is specified?","commit_id":"06886cd0048d3eaff172a5c3e8d1766413a3da68"},{"author":{"_account_id":8768,"name":"Chris Friesen","email":"chris.friesen@windriver.com","username":"cbf123"},"change_message_id":"c1981517c90468bbdd83239690955104fa2064a9","unresolved":false,"context_lines":[{"line_number":72,"context_line":"   thread siblings."},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"The image metadata properties will also allow specification of the"},{"line_number":75,"context_line":"threads policy:"},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"* hw_cpu_threads_policy\u003dauto|avoid|separate|isolate|require"},{"line_number":78,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"da85f559_5b7441ce","line":75,"in_reply_to":"da85f559_3e25c2ad","updated":"2015-11-13 15:59:41.000000000","message":"Specifying it in the image would make the most sense and be self-consistent.  I *think* specifying just the thread policy in the image would work at runtime as long as the flavor specified dedicated CPUs, since we don\u0027t validate image metadata or flavor extra-specs.  (Maybe we should, for the ones that have special meaning to nova proper.)","commit_id":"06886cd0048d3eaff172a5c3e8d1766413a3da68"},{"author":{"_account_id":19212,"name":"Antonio López","email":"antonio.lopezgracia@telefonica.com","username":"alogra"},"change_message_id":"30b3e82830fd621c163993ac4d970181b958e309","unresolved":false,"context_lines":[{"line_number":72,"context_line":"   thread siblings."},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"The image metadata properties will also allow specification of the"},{"line_number":75,"context_line":"threads policy:"},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"* hw_cpu_threads_policy\u003dauto|avoid|separate|isolate|require"},{"line_number":78,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"ba8a016a_05b4fdce","line":75,"in_reply_to":"da85f559_5b7441ce","updated":"2015-11-17 13:03:48.000000000","message":"The behaviour should be the same for odd and even number of vcpus: using pairs of threads. What is the behaviour of the last vcpu in case of an odd number of vcps? Is its sibling reserved (as in isolate), or it can be used by other instances (as in separate)? I think it should be reserved (i.e. wasted) to assure deterministic performance.","commit_id":"06886cd0048d3eaff172a5c3e8d1766413a3da68"},{"author":{"_account_id":7055,"name":"Tapio Tallgren","username":"tapiotallgren","inactive":true},"change_message_id":"0b69b5f136320869a273a291bde3c0e1eafe2a87","unresolved":false,"context_lines":[{"line_number":52,"context_line":"* hw:cpu_policy\u003dshared|dedicated"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"The threads policy will control how the scheduler / virt driver places guests"},{"line_number":55,"context_line":"with respect to CPU threads. It will only apply if the scheduler policy is"},{"line_number":56,"context_line":"\u0027dedicated\u0027."},{"line_number":57,"context_line":""},{"line_number":58,"context_line":" - prefer: The host may or may not have hyperthreads. This retains the legacy"}],"source_content_type":"text/x-rst","patch_set":4,"id":"ba8a016a_e2bf39fa","line":55,"updated":"2015-11-24 07:22:51.000000000","message":"Better: CPU policy","commit_id":"3d86386961a801907a032a04dc4a2b64f0b77370"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"5f96abc83f9d76145d6283be63ff65fe71efa2cc","unresolved":false,"context_lines":[{"line_number":52,"context_line":"* hw:cpu_policy\u003dshared|dedicated"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"The threads policy will control how the scheduler / virt driver places guests"},{"line_number":55,"context_line":"with respect to CPU threads. It will only apply if the scheduler policy is"},{"line_number":56,"context_line":"\u0027dedicated\u0027."},{"line_number":57,"context_line":""},{"line_number":58,"context_line":" - prefer: The host may or may not have hyperthreads. This retains the legacy"}],"source_content_type":"text/x-rst","patch_set":4,"id":"9a8ffd7b_b53eb6b6","line":55,"in_reply_to":"ba8a016a_e2bf39fa","updated":"2015-11-24 16:03:32.000000000","message":"Done","commit_id":"3d86386961a801907a032a04dc4a2b64f0b77370"},{"author":{"_account_id":7055,"name":"Tapio Tallgren","username":"tapiotallgren","inactive":true},"change_message_id":"0b69b5f136320869a273a291bde3c0e1eafe2a87","unresolved":false,"context_lines":[{"line_number":58,"context_line":" - prefer: The host may or may not have hyperthreads. This retains the legacy"},{"line_number":59,"context_line":"   behavior, whereby siblings are prefered when available. This is the default"},{"line_number":60,"context_line":"   if no policy is specified."},{"line_number":61,"context_line":" - separate: The host may or may not have hyperthreads. If hyperthreads are"},{"line_number":62,"context_line":"   present, each vCPU will be placed on a different core, i.e. no two vCPUs"},{"line_number":63,"context_line":"   will be placed on thread siblings. If hyperthread are not present, behavior"},{"line_number":64,"context_line":"   will implicitly emulate the avoid policy."}],"source_content_type":"text/x-rst","patch_set":4,"id":"ba8a016a_e2c9797a","line":61,"updated":"2015-11-24 07:22:51.000000000","message":"\"Separate\" does not make sense to me: why would I want to run my vCPUs on different cores but allow other guests on the same cores? Presumably, I want to place the vCPUs on own cores to get better and more predictable performance, but having other load on the threads defeats this.\n\nPlease, can this be left out?","commit_id":"3d86386961a801907a032a04dc4a2b64f0b77370"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"5f96abc83f9d76145d6283be63ff65fe71efa2cc","unresolved":false,"context_lines":[{"line_number":58,"context_line":" - prefer: The host may or may not have hyperthreads. This retains the legacy"},{"line_number":59,"context_line":"   behavior, whereby siblings are prefered when available. This is the default"},{"line_number":60,"context_line":"   if no policy is specified."},{"line_number":61,"context_line":" - separate: The host may or may not have hyperthreads. If hyperthreads are"},{"line_number":62,"context_line":"   present, each vCPU will be placed on a different core, i.e. no two vCPUs"},{"line_number":63,"context_line":"   will be placed on thread siblings. If hyperthread are not present, behavior"},{"line_number":64,"context_line":"   will implicitly emulate the avoid policy."}],"source_content_type":"text/x-rst","patch_set":4,"id":"9a8ffd7b_aa25f5c2","line":61,"in_reply_to":"ba8a016a_235464fc","updated":"2015-11-24 16:03:32.000000000","message":"This was included in the original spec and I implemented it. However, I also do not see a reason to include it so I\u0027m going to drop it.","commit_id":"3d86386961a801907a032a04dc4a2b64f0b77370"},{"author":{"_account_id":19284,"name":"Pablo Montes","email":"pablo.montesmoreno@telefonica.com","username":"PabloMontes"},"change_message_id":"985d6aa415710926dc2fe21b44b13d2a6ef09b31","unresolved":false,"context_lines":[{"line_number":58,"context_line":" - prefer: The host may or may not have hyperthreads. This retains the legacy"},{"line_number":59,"context_line":"   behavior, whereby siblings are prefered when available. This is the default"},{"line_number":60,"context_line":"   if no policy is specified."},{"line_number":61,"context_line":" - separate: The host may or may not have hyperthreads. If hyperthreads are"},{"line_number":62,"context_line":"   present, each vCPU will be placed on a different core, i.e. no two vCPUs"},{"line_number":63,"context_line":"   will be placed on thread siblings. If hyperthread are not present, behavior"},{"line_number":64,"context_line":"   will implicitly emulate the avoid policy."}],"source_content_type":"text/x-rst","patch_set":4,"id":"ba8a016a_235464fc","line":61,"in_reply_to":"ba8a016a_e2c9797a","updated":"2015-11-24 08:21:45.000000000","message":"In my understanding, this would only help to optimize performance (L2 cache usage) while the siblings are not occupied by other VMs.\n\nIn my opinion this temporal optimization is not really useful, at least for NFV.\n\nCan anyone else justify why this option is required?","commit_id":"3d86386961a801907a032a04dc4a2b64f0b77370"},{"author":{"_account_id":7055,"name":"Tapio Tallgren","username":"tapiotallgren","inactive":true},"change_message_id":"0b69b5f136320869a273a291bde3c0e1eafe2a87","unresolved":false,"context_lines":[{"line_number":61,"context_line":" - separate: The host may or may not have hyperthreads. If hyperthreads are"},{"line_number":62,"context_line":"   present, each vCPU will be placed on a different core, i.e. no two vCPUs"},{"line_number":63,"context_line":"   will be placed on thread siblings. If hyperthread are not present, behavior"},{"line_number":64,"context_line":"   will implicitly emulate the avoid policy."},{"line_number":65,"context_line":" - isolate: The host may or many not have hyperthreads. If hyperthreads are"},{"line_number":66,"context_line":"   present, each vCPU will be placed on a different core and no vCPUs from"},{"line_number":67,"context_line":"   other guests will be able to be placed on the same core, i.e. one thread"}],"source_content_type":"text/x-rst","patch_set":4,"id":"ba8a016a_a2e2912d","line":64,"range":{"start_line":64,"start_character":31,"end_line":64,"end_character":36},"updated":"2015-11-24 07:22:51.000000000","message":"What is the \"avoid policy\"?","commit_id":"3d86386961a801907a032a04dc4a2b64f0b77370"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"5f96abc83f9d76145d6283be63ff65fe71efa2cc","unresolved":false,"context_lines":[{"line_number":61,"context_line":" - separate: The host may or may not have hyperthreads. If hyperthreads are"},{"line_number":62,"context_line":"   present, each vCPU will be placed on a different core, i.e. no two vCPUs"},{"line_number":63,"context_line":"   will be placed on thread siblings. If hyperthread are not present, behavior"},{"line_number":64,"context_line":"   will implicitly emulate the avoid policy."},{"line_number":65,"context_line":" - isolate: The host may or many not have hyperthreads. If hyperthreads are"},{"line_number":66,"context_line":"   present, each vCPU will be placed on a different core and no vCPUs from"},{"line_number":67,"context_line":"   other guests will be able to be placed on the same core, i.e. one thread"}],"source_content_type":"text/x-rst","patch_set":4,"id":"9a8ffd7b_4a36c904","line":64,"in_reply_to":"ba8a016a_a2e2912d","updated":"2015-11-24 16:03:32.000000000","message":"Done","commit_id":"3d86386961a801907a032a04dc4a2b64f0b77370"},{"author":{"_account_id":7055,"name":"Tapio Tallgren","username":"tapiotallgren","inactive":true},"change_message_id":"0b69b5f136320869a273a291bde3c0e1eafe2a87","unresolved":false,"context_lines":[{"line_number":67,"context_line":"   other guests will be able to be placed on the same core, i.e. one thread"},{"line_number":68,"context_line":"   sibling is guaranteed to always be unused. If hyperthreads are not present,"},{"line_number":69,"context_line":"   behavior will implicitly emulate the avoid policy."},{"line_number":70,"context_line":" - require: The host must have hyperthreads. Each vCPU will be allocated on"},{"line_number":71,"context_line":"   thread siblings."},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"The image metadata properties will also allow specification of the"}],"source_content_type":"text/x-rst","patch_set":4,"id":"ba8a016a_e26df999","line":70,"updated":"2015-11-24 07:22:51.000000000","message":"Can load from other guests be placed on the same cores? (Assumption: not)","commit_id":"3d86386961a801907a032a04dc4a2b64f0b77370"},{"author":{"_account_id":19284,"name":"Pablo Montes","email":"pablo.montesmoreno@telefonica.com","username":"PabloMontes"},"change_message_id":"d6a0383635c8ab11c4790800a2c727d1333570d2","unresolved":false,"context_lines":[{"line_number":67,"context_line":"   other guests will be able to be placed on the same core, i.e. one thread"},{"line_number":68,"context_line":"   sibling is guaranteed to always be unused. If hyperthreads are not present,"},{"line_number":69,"context_line":"   behavior will implicitly emulate the avoid policy."},{"line_number":70,"context_line":" - require: The host must have hyperthreads. Each vCPU will be allocated on"},{"line_number":71,"context_line":"   thread siblings."},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"The image metadata properties will also allow specification of the"}],"source_content_type":"text/x-rst","patch_set":4,"id":"9a8ffd7b_3c0a8a27","line":70,"in_reply_to":"9a8ffd7b_8a55911e","updated":"2015-11-25 09:13:57.000000000","message":"@Stephen\nI do not really undersand why this limitation exists. Why is not possible to schedule the guest using the available siblings in order? i.e. ensuring that after selecting a CPU the following one to be selected will be its sibling if there is any available.","commit_id":"3d86386961a801907a032a04dc4a2b64f0b77370"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"5f96abc83f9d76145d6283be63ff65fe71efa2cc","unresolved":false,"context_lines":[{"line_number":67,"context_line":"   other guests will be able to be placed on the same core, i.e. one thread"},{"line_number":68,"context_line":"   sibling is guaranteed to always be unused. If hyperthreads are not present,"},{"line_number":69,"context_line":"   behavior will implicitly emulate the avoid policy."},{"line_number":70,"context_line":" - require: The host must have hyperthreads. Each vCPU will be allocated on"},{"line_number":71,"context_line":"   thread siblings."},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"The image metadata properties will also allow specification of the"}],"source_content_type":"text/x-rst","patch_set":4,"id":"9a8ffd7b_8a55911e","line":70,"in_reply_to":"ba8a016a_03da80e8","updated":"2015-11-24 16:03:32.000000000","message":"@Pablo: I\u0027m not aware of any way to avoid this. Do you have suggestions?","commit_id":"3d86386961a801907a032a04dc4a2b64f0b77370"},{"author":{"_account_id":19284,"name":"Pablo Montes","email":"pablo.montesmoreno@telefonica.com","username":"PabloMontes"},"change_message_id":"985d6aa415710926dc2fe21b44b13d2a6ef09b31","unresolved":false,"context_lines":[{"line_number":67,"context_line":"   other guests will be able to be placed on the same core, i.e. one thread"},{"line_number":68,"context_line":"   sibling is guaranteed to always be unused. If hyperthreads are not present,"},{"line_number":69,"context_line":"   behavior will implicitly emulate the avoid policy."},{"line_number":70,"context_line":" - require: The host must have hyperthreads. Each vCPU will be allocated on"},{"line_number":71,"context_line":"   thread siblings."},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"The image metadata properties will also allow specification of the"}],"source_content_type":"text/x-rst","patch_set":4,"id":"ba8a016a_03da80e8","line":70,"in_reply_to":"ba8a016a_e26df999","updated":"2015-11-24 08:21:45.000000000","message":"I understand you are meaning that in case not all siblings of the same core are occupied (e.g. for 2 threads cores an odd number of CPU is required), if the remaining thread could be occupied by other guest.\n\nIn my opinion this should be the behavior, but it has been stated that for \u0027require\u0027 the number of CPU required must be a multiple of the number of threads per core, so it is not possible to have only one occupied sibling.\n\nAs we have stated before, not scheduling the guest if the number of CPU is not multiple of the number of threads per core is undesired and difficult to trace when the scheduling fails. Could this behavior be modified?","commit_id":"3d86386961a801907a032a04dc4a2b64f0b77370"},{"author":{"_account_id":8768,"name":"Chris Friesen","email":"chris.friesen@windriver.com","username":"cbf123"},"change_message_id":"5082788589a2e8db2e07797295e9cc489ee57f0d","unresolved":false,"context_lines":[{"line_number":65,"context_line":"   each vCPU will still be placed on a different core and there are no thread"},{"line_number":66,"context_line":"   siblings to be concerned with."},{"line_number":67,"context_line":" - require: The host must have hyperthreads. Each vCPU will be allocated on"},{"line_number":68,"context_line":"   thread siblings."},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"The image metadata properties will also allow specification of the threads"},{"line_number":71,"context_line":"policy:"}],"source_content_type":"text/x-rst","patch_set":5,"id":"9a8ffd7b_f482f7c7","line":68,"updated":"2015-11-24 18:48:19.000000000","message":"Do we want to speak to limitations on the number of vCPUs in the guest relative to the number of threads on a host core?","commit_id":"e6b1516eeb3021aa8e0a287469580da8db2442bb"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"73f4e43a8cb619d6da1d7d5447940646b63265da","unresolved":false,"context_lines":[{"line_number":65,"context_line":"   each vCPU will still be placed on a different core and there are no thread"},{"line_number":66,"context_line":"   siblings to be concerned with."},{"line_number":67,"context_line":" - require: The host must have hyperthreads. Each vCPU will be allocated on"},{"line_number":68,"context_line":"   thread siblings."},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"The image metadata properties will also allow specification of the threads"},{"line_number":71,"context_line":"policy:"}],"source_content_type":"text/x-rst","patch_set":5,"id":"9a8ffd7b_ff3acbcc","line":68,"in_reply_to":"9a8ffd7b_f482f7c7","updated":"2015-11-24 20:40:46.000000000","message":"I\u0027m not going to, because I\u0027m still hoping for a solution that could avoid this. If not possible, I\u0027m come back and rework but for now let\u0027s try get this in before 03-Dec","commit_id":"e6b1516eeb3021aa8e0a287469580da8db2442bb"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"d517fa2766041f54cfc1854c96779ff0a3e845b6","unresolved":false,"context_lines":[{"line_number":74,"context_line":""},{"line_number":75,"context_line":"This will only be honored if the flavor does not already have a threads policy"},{"line_number":76,"context_line":"set. This ensures the cloud administrator can have absolute control over"},{"line_number":77,"context_line":"threads policy if desired."},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"Alternatives"},{"line_number":80,"context_line":"------------"}],"source_content_type":"text/x-rst","patch_set":5,"id":"9a8ffd7b_d3479f1b","line":77,"updated":"2015-11-25 13:07:50.000000000","message":"I\u0027m not agree here, We should to allow users define specification of thread policy only if hw:cpu_threads_policy is set to \u0027prefer\u0027","commit_id":"e6b1516eeb3021aa8e0a287469580da8db2442bb"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"61d7f59fa237801f8646db5d3106ed94d3e82e1d","unresolved":false,"context_lines":[{"line_number":74,"context_line":""},{"line_number":75,"context_line":"This will only be honored if the flavor does not already have a threads policy"},{"line_number":76,"context_line":"set. This ensures the cloud administrator can have absolute control over"},{"line_number":77,"context_line":"threads policy if desired."},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"Alternatives"},{"line_number":80,"context_line":"------------"}],"source_content_type":"text/x-rst","patch_set":5,"id":"9a8ffd7b_0d309b00","line":77,"in_reply_to":"9a8ffd7b_d3479f1b","updated":"2015-11-25 15:33:50.000000000","message":"You\u0027re right. This is a hangover from when the \u0027prefer\u0027 policy didn\u0027t exist.\n\nDone.","commit_id":"e6b1516eeb3021aa8e0a287469580da8db2442bb"},{"author":{"_account_id":5511,"name":"Nikola Dipanov","email":"ndipanov@redhat.com","username":"ndipanov"},"change_message_id":"b74252f6fec981ff20e24d3c87c44d5639f76d9a","unresolved":false,"context_lines":[{"line_number":64,"context_line":"   sibling is guaranteed to always be unused. If hyperthreads are not present,"},{"line_number":65,"context_line":"   each vCPU will still be placed on a different core and there are no thread"},{"line_number":66,"context_line":"   siblings to be concerned with."},{"line_number":67,"context_line":" - require: The host must have hyperthreads. Each vCPU will be allocated on"},{"line_number":68,"context_line":"   thread siblings."},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"The image metadata properties will also allow specification of the threads"},{"line_number":71,"context_line":"policy:"}],"source_content_type":"text/x-rst","patch_set":6,"id":"9a8ffd7b_7158e68a","line":68,"range":{"start_line":67,"start_character":12,"end_line":68,"end_character":19},"updated":"2015-11-26 14:06:55.000000000","message":"I think it might be worth clarifying here what happens when it is possible to fit the guest onto threads but not all threads are on the same core. \n\nLooking at https://review.openstack.org/#/c/202651/26/nova/virt/hardware.py,cm - it looks like the limitation is that that would still work as long as we don\u0027t end up with NO vcpus on the same core.","commit_id":"7cf0a8bb3b167f5f04128b64704c09516e690af4"},{"author":{"_account_id":16389,"name":"Naga Praveen Illa","email":"nilla@cisco.com","username":"nilla"},"change_message_id":"e0323fb93a95a8911d0fca51f4ce4855dc9ee118","unresolved":false,"context_lines":[{"line_number":74,"context_line":""},{"line_number":75,"context_line":"This will only be honored if the flavor specifies the \u0027prefer\u0027 policy, either"},{"line_number":76,"context_line":"explicitly or implicitly as the defalt option. This ensures that the cloud"},{"line_number":77,"context_line":"administrator can have absolute control over threads policy if desired."},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"Alternatives"},{"line_number":80,"context_line":"------------"}],"source_content_type":"text/x-rst","patch_set":6,"id":"9a8ffd7b_d383bb01","line":77,"updated":"2015-12-03 00:10:59.000000000","message":"Does it mean that the cloud admin cannot restrict the user to use the only \"prefer\" policy if explicity specified in flavor?\n\nThis is not the same with \"shared\" cpu_policy (atleast in Kilo) where the admin could restrict the user from using \"dedicated\" cpu pinning.\n---\n    elif flavor_pinning \u003d\u003d \"shared\":\n        if image_pinning \u003d\u003d \"dedicated\":\n            raise exception.ImageCPUPinningForbidden()\n---","commit_id":"7cf0a8bb3b167f5f04128b64704c09516e690af4"},{"author":{"_account_id":8768,"name":"Chris Friesen","email":"chris.friesen@windriver.com","username":"cbf123"},"change_message_id":"ad5e6a7e9a5aee58cddfc5163b33d5f0f755ed22","unresolved":false,"context_lines":[{"line_number":74,"context_line":""},{"line_number":75,"context_line":"This will only be honored if the flavor specifies the \u0027prefer\u0027 policy, either"},{"line_number":76,"context_line":"explicitly or implicitly as the defalt option. This ensures that the cloud"},{"line_number":77,"context_line":"administrator can have absolute control over threads policy if desired."},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"Alternatives"},{"line_number":80,"context_line":"------------"}],"source_content_type":"text/x-rst","patch_set":6,"id":"9a8ffd7b_a717cc43","line":77,"in_reply_to":"9a8ffd7b_d383bb01","updated":"2015-12-03 04:40:41.000000000","message":"Can you think of a scenario where the admin would want to restrict the user from using isolate or require?  Presumably \"isolate\" would be more expensive for the user since it uses all threads on a core.  \"require\" seems like it wouldn\u0027t impact the provider at all...worst case is that the instance can\u0027t be scheduled.","commit_id":"7cf0a8bb3b167f5f04128b64704c09516e690af4"},{"author":{"_account_id":6804,"name":"bruce-benjamin","email":"bruce.benjamin@jhuapl.edu","username":"bruce-benjamin"},"change_message_id":"18c3ea77bafee011c1842e17c814c4eb5a751e6a","unresolved":false,"context_lines":[{"line_number":68,"context_line":"   thread siblings. If thread siblings are not available - the host does not"},{"line_number":69,"context_line":"   have hyperthreads or only sibling sets with one or less siblings (thread"},{"line_number":70,"context_line":"   \"orphans\") are available - then scheduling will fail."},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"The image metadata properties will also allow specification of the threads"},{"line_number":73,"context_line":"policy:"},{"line_number":74,"context_line":""}],"source_content_type":"text/x-rst","patch_set":7,"id":"7a740942_0272ece5","line":71,"updated":"2015-12-03 19:58:45.000000000","message":"This sentence isn\u0027t clear to me. Here\u0027s an alternative to consider: \"If thread siblings are not available, then scheduling will fail. This can happen because either the host doesn\u0027t support hyperthreads, or hyperthreads are supported, but only sibling sets with one or less siblings are available.","commit_id":"11a96da58b8aea0ce3f2e86ae28c86c007a2d8ec"}]}
