)]}'
{"specs/rocky/approved/cpu-resources.rst":[{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"1f1c21be68bf38c394ac13ca55577ea064978c07","unresolved":false,"context_lines":[{"line_number":66,"context_line":""},{"line_number":67,"context_line":"**CPU pinning**"},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"The process of deciding which guest CPU should be assigned to which dedicated"},{"line_number":70,"context_line":"CPU"},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"**pinset**"},{"line_number":73,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"df7087c5_a648ef2c","line":70,"range":{"start_line":69,"start_character":0,"end_line":70,"end_character":3},"updated":"2018-03-22 19:17:04.000000000","message":"This probably makes sense as is, but isn\u0027t it usually expressed the other way around?  (Like on L98-9)","commit_id":"7e2ddeb4184aa20a27a27b8c3acba5eaffdc0f3b"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"b25717a585ce58d6deb1eeba396cfee51fbbfe74","unresolved":false,"context_lines":[{"line_number":87,"context_line":"As an edge cloud deployer, I want to specify which physical processors should"},{"line_number":88,"context_line":"be used for dedicated CPU and which should be used for shared CPU"},{"line_number":89,"context_line":""},{"line_number":90,"context_line":"Proposed change"},{"line_number":91,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":92,"context_line":""},{"line_number":93,"context_line":"CPU inventory configuration"}],"source_content_type":"text/x-rst","patch_set":2,"id":"df7087c5_b46a4bb0","line":90,"updated":"2018-03-23 08:16:03.000000000","message":"We should also probably think about realtime usecases and the realtime mask.","commit_id":"7e2ddeb4184aa20a27a27b8c3acba5eaffdc0f3b"},{"author":{"_account_id":25625,"name":"Tetsuro Nakamura","email":"tetsuro.nakamura.bc@hco.ntt.co.jp","username":"tetsuro0907"},"change_message_id":"808497dc0ca29471b54a478fc85c91bb1e12d28d","unresolved":false,"context_lines":[{"line_number":123,"context_line":"shall represent the number of physical processors that has been reserved for"},{"line_number":124,"context_line":"the host"},{"line_number":125,"context_line":""},{"line_number":126,"context_line":"**Note**: the existing ``CONF.vcpu_pin_set`` will be **deprecated** in the \"S\""},{"line_number":127,"context_line":"release for removal in the \"T\" release. The CONF.cpu_dedicated_set and"},{"line_number":128,"context_line":"CONF.cpu_shared_set make CONF.vcpu_pin_set irrelevant."},{"line_number":129,"context_line":""},{"line_number":130,"context_line":"As an example, consider a host system with 2 sockets, each with 24 physical"}],"source_content_type":"text/x-rst","patch_set":2,"id":"df7087c5_bf6c8d08","line":127,"range":{"start_line":126,"start_character":10,"end_line":127,"end_character":39},"updated":"2018-03-22 02:55:17.000000000","message":"Agreed. I think this is what @stephen mentioned before.","commit_id":"7e2ddeb4184aa20a27a27b8c3acba5eaffdc0f3b"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"a6052852374384e3aa93bc6d87418834bd3d8fd7","unresolved":false,"context_lines":[{"line_number":128,"context_line":"CONF.cpu_shared_set make CONF.vcpu_pin_set irrelevant."},{"line_number":129,"context_line":""},{"line_number":130,"context_line":"As an example, consider a host system with 2 sockets, each with 24 physical"},{"line_number":131,"context_line":"cores and 2 hyperthreads per physical core. Physical processors 0-47 are on one"},{"line_number":132,"context_line":"socket. Physical processors 48-95 are on the other. The operator wishes to"},{"line_number":133,"context_line":"reserve the first physical core and its hyperthreads on each socket for the"},{"line_number":134,"context_line":"host\u0027s use. Furthermore, the operator wants to use 8 of each socket\u0027s physical"},{"line_number":135,"context_line":"cores (16 physical processors per socket) for dedicated CPU resources and the"}],"source_content_type":"text/x-rst","patch_set":2,"id":"df7087c5_ee9b3963","line":132,"range":{"start_line":131,"start_character":44,"end_line":132,"end_character":51},"updated":"2018-03-22 00:14:07.000000000","message":"actully form at least kernel 3.10 that is not how linux enumarates the cores.\nit list the physical corese for each socket followed by the hyperthreadd sibling.\n\nso 0-27,48-65 are socket 0 and 28-47,66-95 are socket 1","commit_id":"7e2ddeb4184aa20a27a27b8c3acba5eaffdc0f3b"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"dfc02f9791bc69732ed06608d99bbecd6725645c","unresolved":false,"context_lines":[{"line_number":128,"context_line":"CONF.cpu_shared_set make CONF.vcpu_pin_set irrelevant."},{"line_number":129,"context_line":""},{"line_number":130,"context_line":"As an example, consider a host system with 2 sockets, each with 24 physical"},{"line_number":131,"context_line":"cores and 2 hyperthreads per physical core. Physical processors 0-47 are on one"},{"line_number":132,"context_line":"socket. Physical processors 48-95 are on the other. The operator wishes to"},{"line_number":133,"context_line":"reserve the first physical core and its hyperthreads on each socket for the"},{"line_number":134,"context_line":"host\u0027s use. Furthermore, the operator wants to use 8 of each socket\u0027s physical"},{"line_number":135,"context_line":"cores (16 physical processors per socket) for dedicated CPU resources and the"}],"source_content_type":"text/x-rst","patch_set":2,"id":"df7087c5_5eaf61e2","line":132,"range":{"start_line":131,"start_character":44,"end_line":132,"end_character":51},"in_reply_to":"df7087c5_9253b216","updated":"2018-03-22 16:32:17.000000000","message":"@cfriesen: yes, that\u0027s why this was marked as an \"example\"...","commit_id":"7e2ddeb4184aa20a27a27b8c3acba5eaffdc0f3b"},{"author":{"_account_id":8768,"name":"Chris Friesen","email":"chris.friesen@windriver.com","username":"cbf123"},"change_message_id":"14d646a0edb0b66feeca23391dd0a4e387781524","unresolved":false,"context_lines":[{"line_number":128,"context_line":"CONF.cpu_shared_set make CONF.vcpu_pin_set irrelevant."},{"line_number":129,"context_line":""},{"line_number":130,"context_line":"As an example, consider a host system with 2 sockets, each with 24 physical"},{"line_number":131,"context_line":"cores and 2 hyperthreads per physical core. Physical processors 0-47 are on one"},{"line_number":132,"context_line":"socket. Physical processors 48-95 are on the other. The operator wishes to"},{"line_number":133,"context_line":"reserve the first physical core and its hyperthreads on each socket for the"},{"line_number":134,"context_line":"host\u0027s use. Furthermore, the operator wants to use 8 of each socket\u0027s physical"},{"line_number":135,"context_line":"cores (16 physical processors per socket) for dedicated CPU resources and the"}],"source_content_type":"text/x-rst","patch_set":2,"id":"df7087c5_9253b216","line":132,"range":{"start_line":131,"start_character":44,"end_line":132,"end_character":51},"in_reply_to":"df7087c5_ee9b3963","updated":"2018-03-22 15:27:20.000000000","message":"I don\u0027t think this matters from nova\u0027s perspective.  We just take whatever mapping we get from the virt driver.","commit_id":"7e2ddeb4184aa20a27a27b8c3acba5eaffdc0f3b"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"4c3eff83b22105a4fadff8352650063567119344","unresolved":false,"context_lines":[{"line_number":128,"context_line":"CONF.cpu_shared_set make CONF.vcpu_pin_set irrelevant."},{"line_number":129,"context_line":""},{"line_number":130,"context_line":"As an example, consider a host system with 2 sockets, each with 24 physical"},{"line_number":131,"context_line":"cores and 2 hyperthreads per physical core. Physical processors 0-47 are on one"},{"line_number":132,"context_line":"socket. Physical processors 48-95 are on the other. The operator wishes to"},{"line_number":133,"context_line":"reserve the first physical core and its hyperthreads on each socket for the"},{"line_number":134,"context_line":"host\u0027s use. Furthermore, the operator wants to use 8 of each socket\u0027s physical"},{"line_number":135,"context_line":"cores (16 physical processors per socket) for dedicated CPU resources and the"}],"source_content_type":"text/x-rst","patch_set":2,"id":"df7087c5_920ad276","line":132,"range":{"start_line":131,"start_character":44,"end_line":132,"end_character":51},"in_reply_to":"df7087c5_ee9b3963","updated":"2018-03-22 14:38:19.000000000","message":"OK, fine, I\u0027ll update. Thanks.","commit_id":"7e2ddeb4184aa20a27a27b8c3acba5eaffdc0f3b"},{"author":{"_account_id":25625,"name":"Tetsuro Nakamura","email":"tetsuro.nakamura.bc@hco.ntt.co.jp","username":"tetsuro0907"},"change_message_id":"808497dc0ca29471b54a478fc85c91bb1e12d28d","unresolved":false,"context_lines":[{"line_number":140,"context_line":"The operator would set the CONF options like so::"},{"line_number":141,"context_line":""},{"line_number":142,"context_line":"    [compute]"},{"line_number":143,"context_line":"    cpu_dedicated_set\u003d2-18,50-66"},{"line_number":144,"context_line":"    cpu_shared_set\u003d19-47,67-96"},{"line_number":145,"context_line":""},{"line_number":146,"context_line":"If there was no need to track NUMA affinity, the virt driver would report this"}],"source_content_type":"text/x-rst","patch_set":2,"id":"df7087c5_1f3a5997","line":143,"range":{"start_line":143,"start_character":22,"end_line":143,"end_character":32},"updated":"2018-03-22 02:55:17.000000000","message":"nit: There are 34(17*2) processors, while the above says 16 physical processors per socket.","commit_id":"7e2ddeb4184aa20a27a27b8c3acba5eaffdc0f3b"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"4c3eff83b22105a4fadff8352650063567119344","unresolved":false,"context_lines":[{"line_number":140,"context_line":"The operator would set the CONF options like so::"},{"line_number":141,"context_line":""},{"line_number":142,"context_line":"    [compute]"},{"line_number":143,"context_line":"    cpu_dedicated_set\u003d2-18,50-66"},{"line_number":144,"context_line":"    cpu_shared_set\u003d19-47,67-96"},{"line_number":145,"context_line":""},{"line_number":146,"context_line":"If there was no need to track NUMA affinity, the virt driver would report this"}],"source_content_type":"text/x-rst","patch_set":2,"id":"df7087c5_12fa4242","line":143,"range":{"start_line":143,"start_character":22,"end_line":143,"end_character":32},"in_reply_to":"df7087c5_1f3a5997","updated":"2018-03-22 14:38:19.000000000","message":"Not sure I follow... \n\n48 total cores (24 per socket)\n\n2 threads per core, so 96 total physical processors.\n\n0,1 and 48,49 are reserved for the host.\n\n16 physical processors (8 core plus thread) on each socket are for dedicated (2-18,50-66)\n\nand everything remaining is for shared CPUs, which would be 19-47,67-95","commit_id":"7e2ddeb4184aa20a27a27b8c3acba5eaffdc0f3b"},{"author":{"_account_id":8768,"name":"Chris Friesen","email":"chris.friesen@windriver.com","username":"cbf123"},"change_message_id":"14d646a0edb0b66feeca23391dd0a4e387781524","unresolved":false,"context_lines":[{"line_number":140,"context_line":"The operator would set the CONF options like so::"},{"line_number":141,"context_line":""},{"line_number":142,"context_line":"    [compute]"},{"line_number":143,"context_line":"    cpu_dedicated_set\u003d2-18,50-66"},{"line_number":144,"context_line":"    cpu_shared_set\u003d19-47,67-96"},{"line_number":145,"context_line":""},{"line_number":146,"context_line":"If there was no need to track NUMA affinity, the virt driver would report this"}],"source_content_type":"text/x-rst","patch_set":2,"id":"df7087c5_7295be86","line":143,"range":{"start_line":143,"start_character":22,"end_line":143,"end_character":32},"in_reply_to":"df7087c5_1f3a5997","updated":"2018-03-22 15:27:20.000000000","message":"Yep, this should be 2-17,50-65.","commit_id":"7e2ddeb4184aa20a27a27b8c3acba5eaffdc0f3b"},{"author":{"_account_id":25625,"name":"Tetsuro Nakamura","email":"tetsuro.nakamura.bc@hco.ntt.co.jp","username":"tetsuro0907"},"change_message_id":"808497dc0ca29471b54a478fc85c91bb1e12d28d","unresolved":false,"context_lines":[{"line_number":141,"context_line":""},{"line_number":142,"context_line":"    [compute]"},{"line_number":143,"context_line":"    cpu_dedicated_set\u003d2-18,50-66"},{"line_number":144,"context_line":"    cpu_shared_set\u003d19-47,67-96"},{"line_number":145,"context_line":""},{"line_number":146,"context_line":"If there was no need to track NUMA affinity, the virt driver would report this"},{"line_number":147,"context_line":"to the placement service as a set of inventory records on a single compute node"}],"source_content_type":"text/x-rst","patch_set":2,"id":"df7087c5_7f76f5da","line":144,"range":{"start_line":144,"start_character":28,"end_line":144,"end_character":30},"updated":"2018-03-22 02:55:17.000000000","message":"nit: No such processor numbered 96. It\u0027s at most 95.","commit_id":"7e2ddeb4184aa20a27a27b8c3acba5eaffdc0f3b"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"1f1c21be68bf38c394ac13ca55577ea064978c07","unresolved":false,"context_lines":[{"line_number":141,"context_line":""},{"line_number":142,"context_line":"    [compute]"},{"line_number":143,"context_line":"    cpu_dedicated_set\u003d2-18,50-66"},{"line_number":144,"context_line":"    cpu_shared_set\u003d19-47,67-96"},{"line_number":145,"context_line":""},{"line_number":146,"context_line":"If there was no need to track NUMA affinity, the virt driver would report this"},{"line_number":147,"context_line":"to the placement service as a set of inventory records on a single compute node"}],"source_content_type":"text/x-rst","patch_set":2,"id":"df7087c5_0690bb42","line":144,"range":{"start_line":144,"start_character":28,"end_line":144,"end_character":30},"in_reply_to":"df7087c5_52dd1a6e","updated":"2018-03-22 19:17:04.000000000","message":"And \u003e\u003d not \u003c\u003d","commit_id":"7e2ddeb4184aa20a27a27b8c3acba5eaffdc0f3b"},{"author":{"_account_id":8768,"name":"Chris Friesen","email":"chris.friesen@windriver.com","username":"cbf123"},"change_message_id":"14d646a0edb0b66feeca23391dd0a4e387781524","unresolved":false,"context_lines":[{"line_number":141,"context_line":""},{"line_number":142,"context_line":"    [compute]"},{"line_number":143,"context_line":"    cpu_dedicated_set\u003d2-18,50-66"},{"line_number":144,"context_line":"    cpu_shared_set\u003d19-47,67-96"},{"line_number":145,"context_line":""},{"line_number":146,"context_line":"If there was no need to track NUMA affinity, the virt driver would report this"},{"line_number":147,"context_line":"to the placement service as a set of inventory records on a single compute node"}],"source_content_type":"text/x-rst","patch_set":2,"id":"df7087c5_52dd1a6e","line":144,"range":{"start_line":144,"start_character":28,"end_line":144,"end_character":30},"in_reply_to":"df7087c5_7f76f5da","updated":"2018-03-22 15:27:20.000000000","message":"should be 18-47,66-95","commit_id":"7e2ddeb4184aa20a27a27b8c3acba5eaffdc0f3b"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"4c3eff83b22105a4fadff8352650063567119344","unresolved":false,"context_lines":[{"line_number":141,"context_line":""},{"line_number":142,"context_line":"    [compute]"},{"line_number":143,"context_line":"    cpu_dedicated_set\u003d2-18,50-66"},{"line_number":144,"context_line":"    cpu_shared_set\u003d19-47,67-96"},{"line_number":145,"context_line":""},{"line_number":146,"context_line":"If there was no need to track NUMA affinity, the virt driver would report this"},{"line_number":147,"context_line":"to the placement service as a set of inventory records on a single compute node"}],"source_content_type":"text/x-rst","patch_set":2,"id":"df7087c5_321bc6ca","line":144,"range":{"start_line":144,"start_character":28,"end_line":144,"end_character":30},"in_reply_to":"df7087c5_7f76f5da","updated":"2018-03-22 14:38:19.000000000","message":"will fix, thanks","commit_id":"7e2ddeb4184aa20a27a27b8c3acba5eaffdc0f3b"},{"author":{"_account_id":25625,"name":"Tetsuro Nakamura","email":"tetsuro.nakamura.bc@hco.ntt.co.jp","username":"tetsuro0907"},"change_message_id":"f3766fa51433aeb047e20c1dee943329931ce757","unresolved":false,"context_lines":[{"line_number":160,"context_line":"        min_unit: 1"},{"line_number":161,"context_line":"        max_unit: 60"},{"line_number":162,"context_line":"        step_size: 1"},{"line_number":163,"context_line":"        allocation_ratio: 8.0"},{"line_number":164,"context_line":""},{"line_number":165,"context_line":"If there was a need to track NUMA affinity, the virt driver would instead"},{"line_number":166,"context_line":"construct a provider tree containing two NUMA node child providers of the"}],"source_content_type":"text/x-rst","patch_set":2,"id":"df7087c5_4a530418","line":163,"updated":"2018-03-23 10:13:24.000000000","message":"nit: good to provide RP info (something like \"COMPUTE_NODE\" on the top) to use the same format with the following NUMA available case.","commit_id":"7e2ddeb4184aa20a27a27b8c3acba5eaffdc0f3b"},{"author":{"_account_id":25625,"name":"Tetsuro Nakamura","email":"tetsuro.nakamura.bc@hco.ntt.co.jp","username":"tetsuro0907"},"change_message_id":"f3766fa51433aeb047e20c1dee943329931ce757","unresolved":false,"context_lines":[{"line_number":167,"context_line":"parent compute node resource provider and report inventory for each NUMA node"},{"line_number":168,"context_line":"separately::"},{"line_number":169,"context_line":""},{"line_number":170,"context_line":"    NUMA NODE 0:"},{"line_number":171,"context_line":"        PCPU:"},{"line_number":172,"context_line":"            total: 16"},{"line_number":173,"context_line":"            reserved: 2"}],"source_content_type":"text/x-rst","patch_set":2,"id":"df7087c5_4a346493","line":170,"range":{"start_line":170,"start_character":0,"end_line":170,"end_character":15},"updated":"2018-03-23 10:13:24.000000000","message":"nit: If this is just RP’s name, I’d like to have underbars (NUMA_NODE_0). This makes me feel that nova should manage host’s numa id in placement somehow such as via traits, which I don’t think is the case, right?","commit_id":"7e2ddeb4184aa20a27a27b8c3acba5eaffdc0f3b"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"a6052852374384e3aa93bc6d87418834bd3d8fd7","unresolved":false,"context_lines":[{"line_number":210,"context_line":"The guest uses a non-granular request group that requests a number of dedicated"},{"line_number":211,"context_line":"CPUs and a number of shared CPUs."},{"line_number":212,"context_line":""},{"line_number":213,"context_line":"* The number of shared CPUs needed by the guest shall be stored in the existing"},{"line_number":214,"context_line":"  ``resource:VCPU\u003d$AMOUNT`` extra spec key."},{"line_number":215,"context_line":"* The number of dedicated CPUs needed by the guest shall be stored in the"},{"line_number":216,"context_line":"  ``resource:PCPU\u003d$AMOUNT``"},{"line_number":217,"context_line":""},{"line_number":218,"context_line":"This will allow the placement service to filter out compute nodes that do not"},{"line_number":219,"context_line":"at least have the required number of shared or dedicated CPU resources that the"}],"source_content_type":"text/x-rst","patch_set":2,"id":"df7087c5_f1f55eee","line":216,"range":{"start_line":213,"start_character":1,"end_line":216,"end_character":27},"updated":"2018-03-22 00:14:07.000000000","message":"how can we allow guests to do this via image metadata.\nend users can set teh current pinning policies via the image as long as the admin has not set a policy in the flavor.","commit_id":"7e2ddeb4184aa20a27a27b8c3acba5eaffdc0f3b"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"4c3eff83b22105a4fadff8352650063567119344","unresolved":false,"context_lines":[{"line_number":210,"context_line":"The guest uses a non-granular request group that requests a number of dedicated"},{"line_number":211,"context_line":"CPUs and a number of shared CPUs."},{"line_number":212,"context_line":""},{"line_number":213,"context_line":"* The number of shared CPUs needed by the guest shall be stored in the existing"},{"line_number":214,"context_line":"  ``resource:VCPU\u003d$AMOUNT`` extra spec key."},{"line_number":215,"context_line":"* The number of dedicated CPUs needed by the guest shall be stored in the"},{"line_number":216,"context_line":"  ``resource:PCPU\u003d$AMOUNT``"},{"line_number":217,"context_line":""},{"line_number":218,"context_line":"This will allow the placement service to filter out compute nodes that do not"},{"line_number":219,"context_line":"at least have the required number of shared or dedicated CPU resources that the"}],"source_content_type":"text/x-rst","patch_set":2,"id":"df7087c5_128fa2cd","line":216,"range":{"start_line":213,"start_character":1,"end_line":216,"end_character":27},"in_reply_to":"df7087c5_f1f55eee","updated":"2018-03-22 14:38:19.000000000","message":"This isn\u0027t pinning. This is simply the *amount* of dedicate and shared CPU resources for the flavor. It is not about the assignment of specific physical processors to a guest CPU.","commit_id":"7e2ddeb4184aa20a27a27b8c3acba5eaffdc0f3b"},{"author":{"_account_id":8768,"name":"Chris Friesen","email":"chris.friesen@windriver.com","username":"cbf123"},"change_message_id":"14d646a0edb0b66feeca23391dd0a4e387781524","unresolved":false,"context_lines":[{"line_number":219,"context_line":"at least have the required number of shared or dedicated CPU resources that the"},{"line_number":220,"context_line":"guest requires."},{"line_number":221,"context_line":""},{"line_number":222,"context_line":"The providers of these resources may be a compute node or a NUMA node,"},{"line_number":223,"context_line":"depending on whether the host system is a NUMA system."},{"line_number":224,"context_line":""},{"line_number":225,"context_line":"**Note**: the existing ``hw:cpu_allocation_policy\u003ddedicated|shared`` flavor"},{"line_number":226,"context_line":"extra spec and image property will be **deprecated** in the \"S\" release for"}],"source_content_type":"text/x-rst","patch_set":2,"id":"df7087c5_38a5e547","line":223,"range":{"start_line":222,"start_character":0,"end_line":223,"end_character":54},"updated":"2018-03-22 15:27:20.000000000","message":"How should we handle instances that do not have a numa topology when booted on a NUMA system?  (Currently for qemu this means they just have \"shared\" cpus and 4KB memory pages, with no pci devices or explicit numa topology.)\n\nAt one point we had pinned these to a single numa node, then as of commit 1231c469d (circa 2014) we let them float across the whole node.  This makes accounting for their resources on the individual NUMA nodes impossible.","commit_id":"7e2ddeb4184aa20a27a27b8c3acba5eaffdc0f3b"},{"author":{"_account_id":25625,"name":"Tetsuro Nakamura","email":"tetsuro.nakamura.bc@hco.ntt.co.jp","username":"tetsuro0907"},"change_message_id":"808497dc0ca29471b54a478fc85c91bb1e12d28d","unresolved":false,"context_lines":[{"line_number":222,"context_line":"The providers of these resources may be a compute node or a NUMA node,"},{"line_number":223,"context_line":"depending on whether the host system is a NUMA system."},{"line_number":224,"context_line":""},{"line_number":225,"context_line":"**Note**: the existing ``hw:cpu_allocation_policy\u003ddedicated|shared`` flavor"},{"line_number":226,"context_line":"extra spec and image property will be **deprecated** in the \"S\" release for"},{"line_number":227,"context_line":"removal in the \"T\" release. This extra spec will be irrelevant when flavors can"},{"line_number":228,"context_line":"indicate the exact number of dedicated and shared CPU resources they require."},{"line_number":229,"context_line":""},{"line_number":230,"context_line":"Guest tolerance for hyperthreads"}],"source_content_type":"text/x-rst","patch_set":2,"id":"df7087c5_ff4be583","line":227,"range":{"start_line":225,"start_character":10,"end_line":227,"end_character":27},"updated":"2018-03-22 02:55:17.000000000","message":"Agreed. A new extra spec ``hw:dedicated_cpus`` would substitute for existing ``hw:cpu_allocation_policy``, I guess?","commit_id":"7e2ddeb4184aa20a27a27b8c3acba5eaffdc0f3b"},{"author":{"_account_id":25625,"name":"Tetsuro Nakamura","email":"tetsuro.nakamura.bc@hco.ntt.co.jp","username":"tetsuro0907"},"change_message_id":"f3766fa51433aeb047e20c1dee943329931ce757","unresolved":false,"context_lines":[{"line_number":222,"context_line":"The providers of these resources may be a compute node or a NUMA node,"},{"line_number":223,"context_line":"depending on whether the host system is a NUMA system."},{"line_number":224,"context_line":""},{"line_number":225,"context_line":"**Note**: the existing ``hw:cpu_allocation_policy\u003ddedicated|shared`` flavor"},{"line_number":226,"context_line":"extra spec and image property will be **deprecated** in the \"S\" release for"},{"line_number":227,"context_line":"removal in the \"T\" release. This extra spec will be irrelevant when flavors can"},{"line_number":228,"context_line":"indicate the exact number of dedicated and shared CPU resources they require."},{"line_number":229,"context_line":""},{"line_number":230,"context_line":"Guest tolerance for hyperthreads"}],"source_content_type":"text/x-rst","patch_set":2,"id":"df7087c5_2fbfc261","line":227,"range":{"start_line":225,"start_character":10,"end_line":227,"end_character":27},"in_reply_to":"df7087c5_12ffa2ab","updated":"2018-03-23 10:13:24.000000000","message":"Okay, I got you now, jay. I\u0027m good with the total amount request approach.\n\n\u003e would nova put all the \"shared\" guest cpus on one NUMA node, or spread them evenly across all the nodes?\n\nI think nova would just make cpus with small numbers shared.\n\ne.g.) By default,\n\n  * ``resources:VCPU\u003d2``\n  * ``resources:PCPU\u003d4``\n\nwould provide vcpu\u003d0,1 for shared and _get_numa_topology_auto[1] would automatically allocate these two vcpus on NUMA0.\n\nIf you want these shared vcpus to be allocated on different NUMA nodes, hw:numa_cpus.N option helps you. \n\ni.e.) Something like\n\n  * ``resources:VCPU\u003d2``\n  * ``resources:PCPU\u003d4``\n  * ``hw:numa_cpus.0\u003d0,2,4``\t\n  * ``hw:numa_cpus.1\u003d1,3,5``\t\n\nwould provide  vcpu\u003d0,1 for shared and _get_numa_topology_manual[1] would automatically allocate these two vcpus on different NUMA nodes.\nNo reconfiguration happens within VNF application confing file due to migrations. I believe this is enough and works fine with our use case.\n\n[1] https://github.com/openstack/nova/blob/42c369223d61d652ae7fb277b799b90a69302651/nova/virt/hardware.py#L1185\n[2] https://github.com/openstack/nova/blob/42c369223d61d652ae7fb277b799b90a69302651/nova/virt/hardware.py#L1203","commit_id":"7e2ddeb4184aa20a27a27b8c3acba5eaffdc0f3b"},{"author":{"_account_id":8768,"name":"Chris Friesen","email":"chris.friesen@windriver.com","username":"cbf123"},"change_message_id":"14d646a0edb0b66feeca23391dd0a4e387781524","unresolved":false,"context_lines":[{"line_number":222,"context_line":"The providers of these resources may be a compute node or a NUMA node,"},{"line_number":223,"context_line":"depending on whether the host system is a NUMA system."},{"line_number":224,"context_line":""},{"line_number":225,"context_line":"**Note**: the existing ``hw:cpu_allocation_policy\u003ddedicated|shared`` flavor"},{"line_number":226,"context_line":"extra spec and image property will be **deprecated** in the \"S\" release for"},{"line_number":227,"context_line":"removal in the \"T\" release. This extra spec will be irrelevant when flavors can"},{"line_number":228,"context_line":"indicate the exact number of dedicated and shared CPU resources they require."},{"line_number":229,"context_line":""},{"line_number":230,"context_line":"Guest tolerance for hyperthreads"}],"source_content_type":"text/x-rst","patch_set":2,"id":"df7087c5_12ffa2ab","line":227,"range":{"start_line":225,"start_character":10,"end_line":227,"end_character":27},"in_reply_to":"df7087c5_ff4be583","updated":"2018-03-22 15:27:20.000000000","message":"I think he\u0027s saying that asking for a nonzero amount of the \"PCPU\" resource would imply that many dedicated vCPUs.","commit_id":"7e2ddeb4184aa20a27a27b8c3acba5eaffdc0f3b"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"4c3eff83b22105a4fadff8352650063567119344","unresolved":false,"context_lines":[{"line_number":222,"context_line":"The providers of these resources may be a compute node or a NUMA node,"},{"line_number":223,"context_line":"depending on whether the host system is a NUMA system."},{"line_number":224,"context_line":""},{"line_number":225,"context_line":"**Note**: the existing ``hw:cpu_allocation_policy\u003ddedicated|shared`` flavor"},{"line_number":226,"context_line":"extra spec and image property will be **deprecated** in the \"S\" release for"},{"line_number":227,"context_line":"removal in the \"T\" release. This extra spec will be irrelevant when flavors can"},{"line_number":228,"context_line":"indicate the exact number of dedicated and shared CPU resources they require."},{"line_number":229,"context_line":""},{"line_number":230,"context_line":"Guest tolerance for hyperthreads"}],"source_content_type":"text/x-rst","patch_set":2,"id":"df7087c5_92b41284","line":227,"range":{"start_line":225,"start_character":10,"end_line":227,"end_character":27},"in_reply_to":"df7087c5_ff4be583","updated":"2018-03-22 14:38:19.000000000","message":"No, there will be no need for \"hw:dedicated_cpus\" extra spec. The \"resources:PCPU\u003d$AMOUNT\" extra spec tells us that information. Likewise, the \"resources:VCPU\u003d$AMOUNT\" extra spec tells us how many shared CPU resources the instance should have.","commit_id":"7e2ddeb4184aa20a27a27b8c3acba5eaffdc0f3b"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"a6052852374384e3aa93bc6d87418834bd3d8fd7","unresolved":false,"context_lines":[{"line_number":230,"context_line":"Guest tolerance for hyperthreads"},{"line_number":231,"context_line":"--------------------------------"},{"line_number":232,"context_line":""},{"line_number":233,"context_line":"Certain guests have a tolerance for physical processors being a hyperthread"},{"line_number":234,"context_line":"sibling. The ``hw:cpu_threads_policy`` existing flavor and image extra spec"},{"line_number":235,"context_line":"currently controls the behaviour of the code that does CPU pinning for a guest."},{"line_number":236,"context_line":"This pinning code is executed in the NUMATopologyFilter scheduler filter as"}],"source_content_type":"text/x-rst","patch_set":2,"id":"df7087c5_1176d2a5","line":233,"range":{"start_line":233,"start_character":22,"end_line":233,"end_character":31},"updated":"2018-03-22 00:14:07.000000000","message":"tolerance implys this will reduce performace. that is not\ntrue in all workloads. if you have an io bound workload with\nhigh cache shareing between threads then hyperthreads will out preform isolated cores.","commit_id":"7e2ddeb4184aa20a27a27b8c3acba5eaffdc0f3b"},{"author":{"_account_id":8768,"name":"Chris Friesen","email":"chris.friesen@windriver.com","username":"cbf123"},"change_message_id":"14d646a0edb0b66feeca23391dd0a4e387781524","unresolved":false,"context_lines":[{"line_number":230,"context_line":"Guest tolerance for hyperthreads"},{"line_number":231,"context_line":"--------------------------------"},{"line_number":232,"context_line":""},{"line_number":233,"context_line":"Certain guests have a tolerance for physical processors being a hyperthread"},{"line_number":234,"context_line":"sibling. The ``hw:cpu_threads_policy`` existing flavor and image extra spec"},{"line_number":235,"context_line":"currently controls the behaviour of the code that does CPU pinning for a guest."},{"line_number":236,"context_line":"This pinning code is executed in the NUMATopologyFilter scheduler filter as"}],"source_content_type":"text/x-rst","patch_set":2,"id":"df7087c5_52a3da9e","line":233,"range":{"start_line":233,"start_character":22,"end_line":233,"end_character":31},"in_reply_to":"df7087c5_1176d2a5","updated":"2018-03-22 15:27:20.000000000","message":"Certain CPU-bound algorithms benefit from shared cache as well.\n\nI think we could gloss over all that and just delete the first line in the paragraph, and change the section subtitle to \"Guest CPU to Host Hyperthread Mapping\" or something similar.","commit_id":"7e2ddeb4184aa20a27a27b8c3acba5eaffdc0f3b"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"4c3eff83b22105a4fadff8352650063567119344","unresolved":false,"context_lines":[{"line_number":230,"context_line":"Guest tolerance for hyperthreads"},{"line_number":231,"context_line":"--------------------------------"},{"line_number":232,"context_line":""},{"line_number":233,"context_line":"Certain guests have a tolerance for physical processors being a hyperthread"},{"line_number":234,"context_line":"sibling. The ``hw:cpu_threads_policy`` existing flavor and image extra spec"},{"line_number":235,"context_line":"currently controls the behaviour of the code that does CPU pinning for a guest."},{"line_number":236,"context_line":"This pinning code is executed in the NUMATopologyFilter scheduler filter as"}],"source_content_type":"text/x-rst","patch_set":2,"id":"df7087c5_3253c63b","line":233,"range":{"start_line":233,"start_character":22,"end_line":233,"end_character":31},"in_reply_to":"df7087c5_1176d2a5","updated":"2018-03-22 14:38:19.000000000","message":"Sean, I specifically state \"Certain guests have a tolerance\". I didn\u0027t say \"All guests\" or imply that performance always suffers when running on a hyperthread.\n\nPlus, I state right below that this extra spec is not being deprecated or removed.","commit_id":"7e2ddeb4184aa20a27a27b8c3acba5eaffdc0f3b"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"dfc02f9791bc69732ed06608d99bbecd6725645c","unresolved":false,"context_lines":[{"line_number":230,"context_line":"Guest tolerance for hyperthreads"},{"line_number":231,"context_line":"--------------------------------"},{"line_number":232,"context_line":""},{"line_number":233,"context_line":"Certain guests have a tolerance for physical processors being a hyperthread"},{"line_number":234,"context_line":"sibling. The ``hw:cpu_threads_policy`` existing flavor and image extra spec"},{"line_number":235,"context_line":"currently controls the behaviour of the code that does CPU pinning for a guest."},{"line_number":236,"context_line":"This pinning code is executed in the NUMATopologyFilter scheduler filter as"}],"source_content_type":"text/x-rst","patch_set":2,"id":"df7087c5_5e6d2130","line":233,"range":{"start_line":233,"start_character":22,"end_line":233,"end_character":31},"in_reply_to":"df7087c5_52a3da9e","updated":"2018-03-22 16:32:17.000000000","message":"OK, I can change the name of the section.","commit_id":"7e2ddeb4184aa20a27a27b8c3acba5eaffdc0f3b"},{"author":{"_account_id":25625,"name":"Tetsuro Nakamura","email":"tetsuro.nakamura.bc@hco.ntt.co.jp","username":"tetsuro0907"},"change_message_id":"808497dc0ca29471b54a478fc85c91bb1e12d28d","unresolved":false,"context_lines":[{"line_number":244,"context_line":"indicated by the PCPU and VCPU resource classes."},{"line_number":245,"context_line":""},{"line_number":246,"context_line":"Dedicated emulator threads"},{"line_number":247,"context_line":"--------------------------"},{"line_number":248,"context_line":""},{"line_number":249,"context_line":"The existing ``hw:emulator_threads_policy\u003disolate|share`` flavor extra spec and"},{"line_number":250,"context_line":"image property currently indicate to the virt driver whether to \"reserve\" a"}],"source_content_type":"text/x-rst","patch_set":2,"id":"df7087c5_5f8d31d1","line":247,"updated":"2018-03-22 02:55:17.000000000","message":"In this section, I couldn\u0027t figure out whether the host\u0027s cpu on which the emulator threads run is also always exposed as a instance\u0027s cpu to guests. But I assume this answer is yes, and thus the following comments.","commit_id":"7e2ddeb4184aa20a27a27b8c3acba5eaffdc0f3b"},{"author":{"_account_id":8768,"name":"Chris Friesen","email":"chris.friesen@windriver.com","username":"cbf123"},"change_message_id":"54b7ee072ed618275b8a07b58de31a8ba61c3616","unresolved":false,"context_lines":[{"line_number":244,"context_line":"indicated by the PCPU and VCPU resource classes."},{"line_number":245,"context_line":""},{"line_number":246,"context_line":"Dedicated emulator threads"},{"line_number":247,"context_line":"--------------------------"},{"line_number":248,"context_line":""},{"line_number":249,"context_line":"The existing ``hw:emulator_threads_policy\u003disolate|share`` flavor extra spec and"},{"line_number":250,"context_line":"image property currently indicate to the virt driver whether to \"reserve\" a"}],"source_content_type":"text/x-rst","patch_set":2,"id":"df7087c5_a3c8e6a7","line":247,"in_reply_to":"df7087c5_3d2f1789","updated":"2018-03-22 15:44:26.000000000","message":"The phrase \"the guest\u0027s emulator thread will be the first guest CPU\" doesn\u0027t make sense.\n\nqemu has emulator threads, I/O threads, and vCPU threads (one thread per guest cpu).","commit_id":"7e2ddeb4184aa20a27a27b8c3acba5eaffdc0f3b"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"4c3eff83b22105a4fadff8352650063567119344","unresolved":false,"context_lines":[{"line_number":244,"context_line":"indicated by the PCPU and VCPU resource classes."},{"line_number":245,"context_line":""},{"line_number":246,"context_line":"Dedicated emulator threads"},{"line_number":247,"context_line":"--------------------------"},{"line_number":248,"context_line":""},{"line_number":249,"context_line":"The existing ``hw:emulator_threads_policy\u003disolate|share`` flavor extra spec and"},{"line_number":250,"context_line":"image property currently indicate to the virt driver whether to \"reserve\" a"}],"source_content_type":"text/x-rst","patch_set":2,"id":"df7087c5_3d2f1789","line":247,"in_reply_to":"df7087c5_5f8d31d1","updated":"2018-03-22 14:38:19.000000000","message":"Emulator threads are not \"exposed\" to guests ever. This is only about the tracking of CPU resources -- both dedicated and shared. If the guest has the following:\n\n resources:VCPU\u003d4\n resources:PCPU\u003d1\n hw:overhead_dedicated_set\u003d0\n\nthen the guest\u0027s emulator thread will be the first guest CPU and will run on a dedicated host CPU.\n\nIf the guest has the following:\n\n resources:VCPU\u003d5\n hw:overhead_shared_set\u003d0\n\nthen the guest\u0027s emulator thread will be the first guest CPU and will run on a shared host CPU (CONF.cpu_shared_set).\n\nIf the operator decides to bill differently for each of the above flavors/scenarios, that\u0027s totally up to the operator :)\n\nAfter this spec, at least the amount of CPU resources (both dedicated and shared) will be consistently queryable across all the resource providers.","commit_id":"7e2ddeb4184aa20a27a27b8c3acba5eaffdc0f3b"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"dfc02f9791bc69732ed06608d99bbecd6725645c","unresolved":false,"context_lines":[{"line_number":244,"context_line":"indicated by the PCPU and VCPU resource classes."},{"line_number":245,"context_line":""},{"line_number":246,"context_line":"Dedicated emulator threads"},{"line_number":247,"context_line":"--------------------------"},{"line_number":248,"context_line":""},{"line_number":249,"context_line":"The existing ``hw:emulator_threads_policy\u003disolate|share`` flavor extra spec and"},{"line_number":250,"context_line":"image property currently indicate to the virt driver whether to \"reserve\" a"}],"source_content_type":"text/x-rst","patch_set":2,"id":"df7087c5_dec7f111","line":247,"in_reply_to":"df7087c5_a3c8e6a7","updated":"2018-03-22 16:32:17.000000000","message":"understood now. will rewrite this.","commit_id":"7e2ddeb4184aa20a27a27b8c3acba5eaffdc0f3b"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"a6052852374384e3aa93bc6d87418834bd3d8fd7","unresolved":false,"context_lines":[{"line_number":255,"context_line":"the following extra specs / image properties will be provided, which are"},{"line_number":256,"context_line":"clearer for operators to reason about:"},{"line_number":257,"context_line":""},{"line_number":258,"context_line":"* ``hw:overhead_dedicated_set\u003d$CPU_PINNING_STRING``"},{"line_number":259,"context_line":"* ``hw:overhead_shared_set\u003d$CPU_PINNING_STRING``"},{"line_number":260,"context_line":""},{"line_number":261,"context_line":"If the ``hw:overhead_dedicated_set`` extra spec is found, nova will determine"},{"line_number":262,"context_line":"the physical processors to use as the dedicated CPUs for the emulator threads"}],"source_content_type":"text/x-rst","patch_set":2,"id":"df7087c5_6ed5e9e4","line":259,"range":{"start_line":258,"start_character":0,"end_line":259,"end_character":48},"updated":"2018-03-22 00:14:07.000000000","message":"the $CPU_PINNING_STRING here i not host cpus right. if so this will 1 leak info about the host via the flavor api and 2 really complicate the placement scheduling decision becase we will need to take account of the cpu_dedicated_set and cpu_shared_set in the scheduler. if we dont we are relying on retrys when we land on a host that can fufill this request because the scheulder never checked.\n\ncan we just make this an amount and not a set?","commit_id":"7e2ddeb4184aa20a27a27b8c3acba5eaffdc0f3b"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"dfc02f9791bc69732ed06608d99bbecd6725645c","unresolved":false,"context_lines":[{"line_number":255,"context_line":"the following extra specs / image properties will be provided, which are"},{"line_number":256,"context_line":"clearer for operators to reason about:"},{"line_number":257,"context_line":""},{"line_number":258,"context_line":"* ``hw:overhead_dedicated_set\u003d$CPU_PINNING_STRING``"},{"line_number":259,"context_line":"* ``hw:overhead_shared_set\u003d$CPU_PINNING_STRING``"},{"line_number":260,"context_line":""},{"line_number":261,"context_line":"If the ``hw:overhead_dedicated_set`` extra spec is found, nova will determine"},{"line_number":262,"context_line":"the physical processors to use as the dedicated CPUs for the emulator threads"}],"source_content_type":"text/x-rst","patch_set":2,"id":"df7087c5_92672dea","line":259,"range":{"start_line":258,"start_character":0,"end_line":259,"end_character":48},"in_reply_to":"df7087c5_52d19afa","updated":"2018-03-22 16:32:17.000000000","message":"ack on this. will remove overhead_dedicated_set since it clearly doesn\u0027t make sense and I will remove the scenarios that have emulator threads policy set to anything when guest vCPU threads are not using dedicated CPUs.","commit_id":"7e2ddeb4184aa20a27a27b8c3acba5eaffdc0f3b"},{"author":{"_account_id":8768,"name":"Chris Friesen","email":"chris.friesen@windriver.com","username":"cbf123"},"change_message_id":"14d646a0edb0b66feeca23391dd0a4e387781524","unresolved":false,"context_lines":[{"line_number":255,"context_line":"the following extra specs / image properties will be provided, which are"},{"line_number":256,"context_line":"clearer for operators to reason about:"},{"line_number":257,"context_line":""},{"line_number":258,"context_line":"* ``hw:overhead_dedicated_set\u003d$CPU_PINNING_STRING``"},{"line_number":259,"context_line":"* ``hw:overhead_shared_set\u003d$CPU_PINNING_STRING``"},{"line_number":260,"context_line":""},{"line_number":261,"context_line":"If the ``hw:overhead_dedicated_set`` extra spec is found, nova will determine"},{"line_number":262,"context_line":"the physical processors to use as the dedicated CPUs for the emulator threads"}],"source_content_type":"text/x-rst","patch_set":2,"id":"df7087c5_52d19afa","line":259,"range":{"start_line":258,"start_character":0,"end_line":259,"end_character":48},"in_reply_to":"df7087c5_6ed5e9e4","updated":"2018-03-22 15:27:20.000000000","message":"Agreed, this seems odd.  The guest shouldn\u0027t be telling nova which host CPUs to use, just that it wants the emulator threads away from the vCPU threads.\n\nI think we could keep the existing extra-spec and image property.\n\nI suppose an argument could be made that we should allow the guest to decide whether it\u0027s emulator threads run on \"shared\" or \"dedicated\" host cpus, but I\u0027m not sure this is a requirement.","commit_id":"7e2ddeb4184aa20a27a27b8c3acba5eaffdc0f3b"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"4c3eff83b22105a4fadff8352650063567119344","unresolved":false,"context_lines":[{"line_number":255,"context_line":"the following extra specs / image properties will be provided, which are"},{"line_number":256,"context_line":"clearer for operators to reason about:"},{"line_number":257,"context_line":""},{"line_number":258,"context_line":"* ``hw:overhead_dedicated_set\u003d$CPU_PINNING_STRING``"},{"line_number":259,"context_line":"* ``hw:overhead_shared_set\u003d$CPU_PINNING_STRING``"},{"line_number":260,"context_line":""},{"line_number":261,"context_line":"If the ``hw:overhead_dedicated_set`` extra spec is found, nova will determine"},{"line_number":262,"context_line":"the physical processors to use as the dedicated CPUs for the emulator threads"}],"source_content_type":"text/x-rst","patch_set":2,"id":"df7087c5_9da183fa","line":259,"range":{"start_line":258,"start_character":0,"end_line":259,"end_character":48},"in_reply_to":"df7087c5_6ed5e9e4","updated":"2018-03-22 14:38:19.000000000","message":"hw:overhead_dedicated_set and hw:overhead_shared_set are pinning strings for the *guest*, not the host (all hw:XXX extra specs are guest information, not host information).\n\nThe amount of PCPU and VCPU resources is already accounted for in the \"resources:PCPU\u003d$AMOUNT\" and \"resources:VCPU\u003d$AMOUNT\" extra specs (from the flavor or image)","commit_id":"7e2ddeb4184aa20a27a27b8c3acba5eaffdc0f3b"},{"author":{"_account_id":25625,"name":"Tetsuro Nakamura","email":"tetsuro.nakamura.bc@hco.ntt.co.jp","username":"tetsuro0907"},"change_message_id":"808497dc0ca29471b54a478fc85c91bb1e12d28d","unresolved":false,"context_lines":[{"line_number":258,"context_line":"* ``hw:overhead_dedicated_set\u003d$CPU_PINNING_STRING``"},{"line_number":259,"context_line":"* ``hw:overhead_shared_set\u003d$CPU_PINNING_STRING``"},{"line_number":260,"context_line":""},{"line_number":261,"context_line":"If the ``hw:overhead_dedicated_set`` extra spec is found, nova will determine"},{"line_number":262,"context_line":"the physical processors to use as the dedicated CPUs for the emulator threads"},{"line_number":263,"context_line":"by examining the new ``CONF.cpu_dedicated_set`` option. Likewise, when"},{"line_number":264,"context_line":"``hw:overhead_shared_set`` is found, nova will consult the"}],"source_content_type":"text/x-rst","patch_set":2,"id":"df7087c5_ff19a587","line":261,"range":{"start_line":261,"start_character":9,"end_line":261,"end_character":34},"updated":"2018-03-22 02:55:17.000000000","message":"Is overhead appropriate word choice? If the cpu is also exposed as cpu to the guest, I don\u0027t think this is an \"overhead\".","commit_id":"7e2ddeb4184aa20a27a27b8c3acba5eaffdc0f3b"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"4c3eff83b22105a4fadff8352650063567119344","unresolved":false,"context_lines":[{"line_number":258,"context_line":"* ``hw:overhead_dedicated_set\u003d$CPU_PINNING_STRING``"},{"line_number":259,"context_line":"* ``hw:overhead_shared_set\u003d$CPU_PINNING_STRING``"},{"line_number":260,"context_line":""},{"line_number":261,"context_line":"If the ``hw:overhead_dedicated_set`` extra spec is found, nova will determine"},{"line_number":262,"context_line":"the physical processors to use as the dedicated CPUs for the emulator threads"},{"line_number":263,"context_line":"by examining the new ``CONF.cpu_dedicated_set`` option. Likewise, when"},{"line_number":264,"context_line":"``hw:overhead_shared_set`` is found, nova will consult the"}],"source_content_type":"text/x-rst","patch_set":2,"id":"df7087c5_9d7ae374","line":261,"range":{"start_line":261,"start_character":9,"end_line":261,"end_character":34},"in_reply_to":"df7087c5_ff19a587","updated":"2018-03-22 14:38:19.000000000","message":"The CPU is not exposed to the guest. overhead_dedicated_set and overhead_shared_set indicate the CPU resources used by the hypervisor or other non-guest system to run the instance.","commit_id":"7e2ddeb4184aa20a27a27b8c3acba5eaffdc0f3b"},{"author":{"_account_id":25625,"name":"Tetsuro Nakamura","email":"tetsuro.nakamura.bc@hco.ntt.co.jp","username":"tetsuro0907"},"change_message_id":"808497dc0ca29471b54a478fc85c91bb1e12d28d","unresolved":false,"context_lines":[{"line_number":272,"context_line":"use and 1 shared CPU resource for the hypervisor\u0027s emulator thread. The flavor"},{"line_number":273,"context_line":"extra specs would look like this:"},{"line_number":274,"context_line":""},{"line_number":275,"context_line":"* ``resources:PCPU\u003d4``"},{"line_number":276,"context_line":"* ``resources:VCPU\u003d1``"},{"line_number":277,"context_line":"* ``hw:overhead_shared_set\u003d0``"},{"line_number":278,"context_line":""},{"line_number":279,"context_line":"The above would indicate to the virt driver to assign use the first guest CPU"},{"line_number":280,"context_line":"(0th) for an emulator thread. The virt driver would assign one of the physical"}],"source_content_type":"text/x-rst","patch_set":2,"id":"df7087c5_ff61a53a","line":277,"range":{"start_line":275,"start_character":0,"end_line":277,"end_character":30},"updated":"2018-03-22 02:55:17.000000000","message":"Can we elaborate these examples with ``hw:dedicated_cpus``, which specifies the exact instance\u0027s dedicated cpu number?\nIn this configuration we don\u0027t know which instance cpu would be shared. That confuses me.\n\nAnd what happens in this case if the instance\u0027s 0th cpu is dedicate?","commit_id":"7e2ddeb4184aa20a27a27b8c3acba5eaffdc0f3b"},{"author":{"_account_id":8768,"name":"Chris Friesen","email":"chris.friesen@windriver.com","username":"cbf123"},"change_message_id":"54b7ee072ed618275b8a07b58de31a8ba61c3616","unresolved":false,"context_lines":[{"line_number":272,"context_line":"use and 1 shared CPU resource for the hypervisor\u0027s emulator thread. The flavor"},{"line_number":273,"context_line":"extra specs would look like this:"},{"line_number":274,"context_line":""},{"line_number":275,"context_line":"* ``resources:PCPU\u003d4``"},{"line_number":276,"context_line":"* ``resources:VCPU\u003d1``"},{"line_number":277,"context_line":"* ``hw:overhead_shared_set\u003d0``"},{"line_number":278,"context_line":""},{"line_number":279,"context_line":"The above would indicate to the virt driver to assign use the first guest CPU"},{"line_number":280,"context_line":"(0th) for an emulator thread. The virt driver would assign one of the physical"}],"source_content_type":"text/x-rst","patch_set":2,"id":"df7087c5_83cda286","line":277,"range":{"start_line":275,"start_character":0,"end_line":277,"end_character":30},"in_reply_to":"df7087c5_5dc68b9c","updated":"2018-03-22 15:44:26.000000000","message":"The code running in the guest needs to know which guest CPUs are dedicated and which are shared.\n\nIf we can\u0027t specify it in the flavor you\u0027re basically forcing app developers to write fully generic software, discover the mapping at instance boot, and configure their software appropriately.\n\nThis gets trickier when you have multiple NUMA nodes per guest...would nova put all the \"shared\" guest cpus on one NUMA node, or spread them evenly across all the nodes?  (And can we make one decision that\u0027s valid for all guests?)","commit_id":"7e2ddeb4184aa20a27a27b8c3acba5eaffdc0f3b"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"4c3eff83b22105a4fadff8352650063567119344","unresolved":false,"context_lines":[{"line_number":272,"context_line":"use and 1 shared CPU resource for the hypervisor\u0027s emulator thread. The flavor"},{"line_number":273,"context_line":"extra specs would look like this:"},{"line_number":274,"context_line":""},{"line_number":275,"context_line":"* ``resources:PCPU\u003d4``"},{"line_number":276,"context_line":"* ``resources:VCPU\u003d1``"},{"line_number":277,"context_line":"* ``hw:overhead_shared_set\u003d0``"},{"line_number":278,"context_line":""},{"line_number":279,"context_line":"The above would indicate to the virt driver to assign use the first guest CPU"},{"line_number":280,"context_line":"(0th) for an emulator thread. The virt driver would assign one of the physical"}],"source_content_type":"text/x-rst","patch_set":2,"id":"df7087c5_5dc68b9c","line":277,"range":{"start_line":275,"start_character":0,"end_line":277,"end_character":30},"in_reply_to":"df7087c5_ff61a53a","updated":"2018-03-22 14:38:19.000000000","message":"I don\u0027t believe it is necessary for the flavor extra specs or image properties to store an indicator of which guest CPUs should be dedicated and which should be shared.\n\nCan you elaborate why this information is important to put in an extra spec as opposed to just having the virt driver determine the mapping?","commit_id":"7e2ddeb4184aa20a27a27b8c3acba5eaffdc0f3b"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"a6052852374384e3aa93bc6d87418834bd3d8fd7","unresolved":false,"context_lines":[{"line_number":276,"context_line":"* ``resources:VCPU\u003d1``"},{"line_number":277,"context_line":"* ``hw:overhead_shared_set\u003d0``"},{"line_number":278,"context_line":""},{"line_number":279,"context_line":"The above would indicate to the virt driver to assign use the first guest CPU"},{"line_number":280,"context_line":"(0th) for an emulator thread. The virt driver would assign one of the physical"},{"line_number":281,"context_line":"processors in the ``CONF.cpu_shared_set`` to the first guest CPU. The guest"},{"line_number":282,"context_line":"CPUs 1-4 would be dedicated CPU resources and would be assigned four of the"},{"line_number":283,"context_line":"physical processors in the ``CONF.cpu_dedicated_set``."},{"line_number":284,"context_line":""},{"line_number":285,"context_line":"2) A flavor wants to consume 4 shared CPU resources for the guest to use and 1"},{"line_number":286,"context_line":"shared CPU resource for the hypervisor\u0027s emulator thread. The flavor extra"}],"source_content_type":"text/x-rst","patch_set":2,"id":"df7087c5_ce0d1591","line":283,"range":{"start_line":279,"start_character":0,"end_line":283,"end_character":54},"updated":"2018-03-22 00:14:07.000000000","message":"should we say this is just for the libvirt impementation.\nwe discussed that we would like to virtualise the share cpus followed byt the dedicated cpus when mapping the guest logical cpus to physical cpus but at the api level say this is virt driver specific behavior.","commit_id":"7e2ddeb4184aa20a27a27b8c3acba5eaffdc0f3b"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"4c3eff83b22105a4fadff8352650063567119344","unresolved":false,"context_lines":[{"line_number":276,"context_line":"* ``resources:VCPU\u003d1``"},{"line_number":277,"context_line":"* ``hw:overhead_shared_set\u003d0``"},{"line_number":278,"context_line":""},{"line_number":279,"context_line":"The above would indicate to the virt driver to assign use the first guest CPU"},{"line_number":280,"context_line":"(0th) for an emulator thread. The virt driver would assign one of the physical"},{"line_number":281,"context_line":"processors in the ``CONF.cpu_shared_set`` to the first guest CPU. The guest"},{"line_number":282,"context_line":"CPUs 1-4 would be dedicated CPU resources and would be assigned four of the"},{"line_number":283,"context_line":"physical processors in the ``CONF.cpu_dedicated_set``."},{"line_number":284,"context_line":""},{"line_number":285,"context_line":"2) A flavor wants to consume 4 shared CPU resources for the guest to use and 1"},{"line_number":286,"context_line":"shared CPU resource for the hypervisor\u0027s emulator thread. The flavor extra"}],"source_content_type":"text/x-rst","patch_set":2,"id":"df7087c5_3dfcf7b3","line":283,"range":{"start_line":279,"start_character":0,"end_line":283,"end_character":54},"in_reply_to":"df7087c5_ce0d1591","updated":"2018-03-22 14:38:19.000000000","message":"Well, a couple things... this isn\u0027t the API level :) Nothing about this is exposed to any user over a REST API.\n\nIf you are suggesting that he CONF.cpu_shared_set and CONF.cpu_dedicated_set options only be for libvirt, then I\u0027d ask why you\u0027d want to restrict that?","commit_id":"7e2ddeb4184aa20a27a27b8c3acba5eaffdc0f3b"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"a6052852374384e3aa93bc6d87418834bd3d8fd7","unresolved":false,"context_lines":[{"line_number":286,"context_line":"shared CPU resource for the hypervisor\u0027s emulator thread. The flavor extra"},{"line_number":287,"context_line":"specs would look like this:"},{"line_number":288,"context_line":""},{"line_number":289,"context_line":"* ``resources:VCPU\u003d5``"},{"line_number":290,"context_line":"* ``hw:overhead_shared_set\u003d0``"},{"line_number":291,"context_line":""},{"line_number":292,"context_line":"The above would indicate to the virt driver to assign use the first guest CPU"}],"source_content_type":"text/x-rst","patch_set":2,"id":"df7087c5_4e2105fb","line":289,"range":{"start_line":289,"start_character":19,"end_line":289,"end_character":20},"updated":"2018-03-22 00:14:07.000000000","message":"4?","commit_id":"7e2ddeb4184aa20a27a27b8c3acba5eaffdc0f3b"},{"author":{"_account_id":8768,"name":"Chris Friesen","email":"chris.friesen@windriver.com","username":"cbf123"},"change_message_id":"14d646a0edb0b66feeca23391dd0a4e387781524","unresolved":false,"context_lines":[{"line_number":286,"context_line":"shared CPU resource for the hypervisor\u0027s emulator thread. The flavor extra"},{"line_number":287,"context_line":"specs would look like this:"},{"line_number":288,"context_line":""},{"line_number":289,"context_line":"* ``resources:VCPU\u003d5``"},{"line_number":290,"context_line":"* ``hw:overhead_shared_set\u003d0``"},{"line_number":291,"context_line":""},{"line_number":292,"context_line":"The above would indicate to the virt driver to assign use the first guest CPU"}],"source_content_type":"text/x-rst","patch_set":2,"id":"df7087c5_5d98cbbe","line":289,"range":{"start_line":289,"start_character":19,"end_line":289,"end_character":20},"in_reply_to":"df7087c5_0a31b0a2","updated":"2018-03-22 15:27:20.000000000","message":"First, it doesn\u0027t make sense to ask for \"isolated\" emulator threads when using shared cpus, since they all float over the same pool of host cpus.  The current \"isolate\" emulator thread option is only allowed when using dedicated cpus for this reason, and I think it makes sense.\n\nSecond, I think it makes sense for the user-visible VCPU+PCPU in the flavor extra-specs to add up to the number of vcpus visible in the guest.  If we want to internally modify the accounting for the emulator threads then fine, but it shouldn\u0027t be user-visible otherwise it\u0027ll be confusing.","commit_id":"7e2ddeb4184aa20a27a27b8c3acba5eaffdc0f3b"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"ef2c5d84e8c652aded373e9e267c55dd5757b610","unresolved":false,"context_lines":[{"line_number":286,"context_line":"shared CPU resource for the hypervisor\u0027s emulator thread. The flavor extra"},{"line_number":287,"context_line":"specs would look like this:"},{"line_number":288,"context_line":""},{"line_number":289,"context_line":"* ``resources:VCPU\u003d5``"},{"line_number":290,"context_line":"* ``hw:overhead_shared_set\u003d0``"},{"line_number":291,"context_line":""},{"line_number":292,"context_line":"The above would indicate to the virt driver to assign use the first guest CPU"}],"source_content_type":"text/x-rst","patch_set":2,"id":"df7087c5_0a31b0a2","line":289,"range":{"start_line":289,"start_character":19,"end_line":289,"end_character":20},"in_reply_to":"df7087c5_4e2105fb","updated":"2018-03-22 08:46:01.000000000","message":"It seems it\u0027s well 5. I think we are requesting 5 VCPU resources, 4 for the guest and 1 for the emulthreads, and we pick all of them from cpu_shared_set.\n\nIs that correct?\n\nI have some suggestions:\n\nUsing term VCPU and PCPU for resources is a bit confusing because for everyone a vCPU is a thread running on pCPU(s) not a \"resource\", what about something like: SHARED_CPU and DEDICATED_CPU?\n\nIf requesting \"resources:VCPU\" I would expect we pin the guest vCPUs to the whole CONF.cpu_shared_set, not that we pick some from that set to pin guest vCPUs.\n\nI don\u0027t think we should have hw:overhead_{shared/dedicated}_set. The option should be a tunable where:\n- by default the \"overheads\" (emulthreads) are pinned to the same set of pCPUs used for the guest vCPUs\n- isolated, the \"overheads\" (emulthreads) are pinned to the whole CONF.cpu_shared_set.\n\nWhat I suggest is:\n\nresources:VCPU\u003d4 (CPU_SHARED)\n\nSo the guest vCPUs are going to be pinned to the whole cpu_shared_set and emulthreads threads also.","commit_id":"7e2ddeb4184aa20a27a27b8c3acba5eaffdc0f3b"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"a6052852374384e3aa93bc6d87418834bd3d8fd7","unresolved":false,"context_lines":[{"line_number":291,"context_line":""},{"line_number":292,"context_line":"The above would indicate to the virt driver to assign use the first guest CPU"},{"line_number":293,"context_line":"(0th) for an emulator thread. The virt driver would assign one of the physical"},{"line_number":294,"context_line":"processors in the ``CONF.cpu_shared_set`` to the first guest CPU. The guest"},{"line_number":295,"context_line":"CPUs 1-4 would be shared CPU resources and would be assigned four of the"},{"line_number":296,"context_line":"physical processors in the ``CONF.cpu_shared_set``."},{"line_number":297,"context_line":""},{"line_number":298,"context_line":""},{"line_number":299,"context_line":"3) A flavor wants to consume 4 shared CPU resources for the guest to use and 2"}],"source_content_type":"text/x-rst","patch_set":2,"id":"df7087c5_2e7cd1e9","line":296,"range":{"start_line":294,"start_character":66,"end_line":296,"end_character":51},"updated":"2018-03-22 00:14:07.000000000","message":"this implys that shared cpus (the VCPU resouce class) would not float anymore and we would be pinning to specific shared cpus that others could be using too. is that correct.","commit_id":"7e2ddeb4184aa20a27a27b8c3acba5eaffdc0f3b"},{"author":{"_account_id":8768,"name":"Chris Friesen","email":"chris.friesen@windriver.com","username":"cbf123"},"change_message_id":"14d646a0edb0b66feeca23391dd0a4e387781524","unresolved":false,"context_lines":[{"line_number":291,"context_line":""},{"line_number":292,"context_line":"The above would indicate to the virt driver to assign use the first guest CPU"},{"line_number":293,"context_line":"(0th) for an emulator thread. The virt driver would assign one of the physical"},{"line_number":294,"context_line":"processors in the ``CONF.cpu_shared_set`` to the first guest CPU. The guest"},{"line_number":295,"context_line":"CPUs 1-4 would be shared CPU resources and would be assigned four of the"},{"line_number":296,"context_line":"physical processors in the ``CONF.cpu_shared_set``."},{"line_number":297,"context_line":""},{"line_number":298,"context_line":""},{"line_number":299,"context_line":"3) A flavor wants to consume 4 shared CPU resources for the guest to use and 2"}],"source_content_type":"text/x-rst","patch_set":2,"id":"df7087c5_bdb7a7f5","line":296,"range":{"start_line":294,"start_character":66,"end_line":296,"end_character":51},"in_reply_to":"df7087c5_2e7cd1e9","updated":"2018-03-22 15:27:20.000000000","message":"I find it weird to say \"assign use of the first guest CPU for an emulator thread\".  This isn\u0027t how qemu works.  You have one thread for each guest CPU, one or more emulator threads, and one or more IO threads.\n\nCurrently for instances with dedicated CPUs the emulator threads normally float across the set of host cpus that the guest CPUs are running on.  Currently if you specify that you want \"isolated\" emulator threads we transparently allocate another dedicated host CPU for that instance and affine the emulator threads there.\n\nLastly, if guest CPUs 1-4 are \"shared\" then they would be allowed to float across *all* the physical processors in \"CONF.cpu_shared_set\".  (Possibly restricted to the ones on the local NUMA node.)","commit_id":"7e2ddeb4184aa20a27a27b8c3acba5eaffdc0f3b"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"a6052852374384e3aa93bc6d87418834bd3d8fd7","unresolved":false,"context_lines":[{"line_number":302,"context_line":""},{"line_number":303,"context_line":"* ``resources:PCPU\u003d2``"},{"line_number":304,"context_line":"* ``resources:VCPU\u003d4``"},{"line_number":305,"context_line":"* ``hw:overhead_dedicated_set\u003d1,2``"},{"line_number":306,"context_line":""},{"line_number":307,"context_line":"The above would indicate to the virt driver to assign the second and third"},{"line_number":308,"context_line":"guest CPU for emulator threads. The virt driver would assign two of the"}],"source_content_type":"text/x-rst","patch_set":2,"id":"df7087c5_ced0b5cc","line":305,"range":{"start_line":305,"start_character":4,"end_line":305,"end_character":33},"updated":"2018-03-22 00:14:07.000000000","message":"so these cores are provided by the resources:PCPU request? or how does this work?\n\ndoes the the guest see 6 cpus and cores 1,2 from the guest perspective also have the emulator threads running on them.\n\nif 1,2 are from the perspecitve of the host im kind of ok with this but if they are from a host perspective i think this is a mistake.","commit_id":"7e2ddeb4184aa20a27a27b8c3acba5eaffdc0f3b"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"ef2c5d84e8c652aded373e9e267c55dd5757b610","unresolved":false,"context_lines":[{"line_number":300,"context_line":"dedicated CPU resource for the hypervisor\u0027s emulator thread. The flavor extra"},{"line_number":301,"context_line":"specs would look like this:"},{"line_number":302,"context_line":""},{"line_number":303,"context_line":"* ``resources:PCPU\u003d2``"},{"line_number":304,"context_line":"* ``resources:VCPU\u003d4``"},{"line_number":305,"context_line":"* ``hw:overhead_dedicated_set\u003d1,2``"},{"line_number":306,"context_line":""},{"line_number":307,"context_line":"The above would indicate to the virt driver to assign the second and third"},{"line_number":308,"context_line":"guest CPU for emulator threads. The virt driver would assign two of the"},{"line_number":309,"context_line":"physical processors in the ``CONF.cpu_dedicated_set`` to the this guest CPU for"},{"line_number":310,"context_line":"running the emulator thread on a dedicated processor. The guest CPUs 0, 3, 4,"},{"line_number":311,"context_line":"and 5 would be shared CPU resources and would be assigned four of the physical"},{"line_number":312,"context_line":"processors in the ``CONF.cpu_shared_set``."},{"line_number":313,"context_line":""},{"line_number":314,"context_line":"4) A flavor wants to consume 4 dedicated CPU resources for the guest to use and"},{"line_number":315,"context_line":"1 dedicated CPU resource for the hypervisor\u0027s emulator thread. The flavor extra"}],"source_content_type":"text/x-rst","patch_set":2,"id":"df7087c5_0ae0d0cb","line":312,"range":{"start_line":303,"start_character":1,"end_line":312,"end_character":42},"updated":"2018-03-22 08:46:01.000000000","message":"This can\u0027t work and we should not do that. You are using vCPUs to do the placement of the emulthreads which is not right.\n\nAlso We should not accept requests which are resources:PCPU + VCPU in same time (I really hope you change the terms).","commit_id":"7e2ddeb4184aa20a27a27b8c3acba5eaffdc0f3b"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"4c3eff83b22105a4fadff8352650063567119344","unresolved":false,"context_lines":[{"line_number":300,"context_line":"dedicated CPU resource for the hypervisor\u0027s emulator thread. The flavor extra"},{"line_number":301,"context_line":"specs would look like this:"},{"line_number":302,"context_line":""},{"line_number":303,"context_line":"* ``resources:PCPU\u003d2``"},{"line_number":304,"context_line":"* ``resources:VCPU\u003d4``"},{"line_number":305,"context_line":"* ``hw:overhead_dedicated_set\u003d1,2``"},{"line_number":306,"context_line":""},{"line_number":307,"context_line":"The above would indicate to the virt driver to assign the second and third"},{"line_number":308,"context_line":"guest CPU for emulator threads. The virt driver would assign two of the"},{"line_number":309,"context_line":"physical processors in the ``CONF.cpu_dedicated_set`` to the this guest CPU for"},{"line_number":310,"context_line":"running the emulator thread on a dedicated processor. The guest CPUs 0, 3, 4,"},{"line_number":311,"context_line":"and 5 would be shared CPU resources and would be assigned four of the physical"},{"line_number":312,"context_line":"processors in the ``CONF.cpu_shared_set``."},{"line_number":313,"context_line":""},{"line_number":314,"context_line":"4) A flavor wants to consume 4 dedicated CPU resources for the guest to use and"},{"line_number":315,"context_line":"1 dedicated CPU resource for the hypervisor\u0027s emulator thread. The flavor extra"}],"source_content_type":"text/x-rst","patch_set":2,"id":"df7087c5_7dd82fee","line":312,"range":{"start_line":303,"start_character":1,"end_line":312,"end_character":42},"in_reply_to":"df7087c5_0ae0d0cb","updated":"2018-03-22 14:38:19.000000000","message":"I don\u0027t see a reason why we shouldn\u0027t accept requests for resources of both PCPU and VCPU at the same time. If a guest wants 4 VCPU and requires the emulator thread be pinned to a dedicated host CPU, then the request should be:\n\n resources:PCPU\u003d1 \u003c-- amount of emulator threads to run in a dedicated host CPU\n resources:VCPU\u003d4 \u003c-- guest CPU resources which will run on shared host CPUs\n\nOtherwise, we are not accounting for the actual CPU resource of the guest. The emulator thread, particularly if pinned to a dedicated host CPU, is a real amount of resource that should be accounted for, IMO.\n\nIf what you\u0027re saying is that hw:overhead_dedicated_set\u003d0 doesn\u0027t make sense because in that case, the emulator threads are not actually \"guest CPUs\" and don\u0027t need to be identified by a specific ordinal processor ID, then I am open to suggestions on whether the hw:overhead_dedicated_set is even necessary at all. Is that what you\u0027re getting at, Sahid?","commit_id":"7e2ddeb4184aa20a27a27b8c3acba5eaffdc0f3b"},{"author":{"_account_id":8768,"name":"Chris Friesen","email":"chris.friesen@windriver.com","username":"cbf123"},"change_message_id":"14d646a0edb0b66feeca23391dd0a4e387781524","unresolved":false,"context_lines":[{"line_number":300,"context_line":"dedicated CPU resource for the hypervisor\u0027s emulator thread. The flavor extra"},{"line_number":301,"context_line":"specs would look like this:"},{"line_number":302,"context_line":""},{"line_number":303,"context_line":"* ``resources:PCPU\u003d2``"},{"line_number":304,"context_line":"* ``resources:VCPU\u003d4``"},{"line_number":305,"context_line":"* ``hw:overhead_dedicated_set\u003d1,2``"},{"line_number":306,"context_line":""},{"line_number":307,"context_line":"The above would indicate to the virt driver to assign the second and third"},{"line_number":308,"context_line":"guest CPU for emulator threads. The virt driver would assign two of the"},{"line_number":309,"context_line":"physical processors in the ``CONF.cpu_dedicated_set`` to the this guest CPU for"},{"line_number":310,"context_line":"running the emulator thread on a dedicated processor. The guest CPUs 0, 3, 4,"},{"line_number":311,"context_line":"and 5 would be shared CPU resources and would be assigned four of the physical"},{"line_number":312,"context_line":"processors in the ``CONF.cpu_shared_set``."},{"line_number":313,"context_line":""},{"line_number":314,"context_line":"4) A flavor wants to consume 4 dedicated CPU resources for the guest to use and"},{"line_number":315,"context_line":"1 dedicated CPU resource for the hypervisor\u0027s emulator thread. The flavor extra"}],"source_content_type":"text/x-rst","patch_set":2,"id":"df7087c5_3dbf17ab","line":312,"range":{"start_line":303,"start_character":1,"end_line":312,"end_character":42},"in_reply_to":"df7087c5_0ae0d0cb","updated":"2018-03-22 15:27:20.000000000","message":"I think we should allow requests that ask for PCPU and VCPU at the same time, in order to allow for \"shared\" and \"dedicated\" guest cpus in the same guest.\n\nAs per above, I really think that PCPU+VCPU should add up to the number of cpus visible in the guest.\n\nLastly, I\u0027m not sure it ever makes sense to have more than one physical core for emulator threads.  They\u0027re generally not that busy, we just don\u0027t want them interrupting the guest cpu threads that are doing the \"real\" work.","commit_id":"7e2ddeb4184aa20a27a27b8c3acba5eaffdc0f3b"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"3f5c9660c688b7f47c19438f49b4ee77c85e8572","unresolved":false,"context_lines":[{"line_number":300,"context_line":"dedicated CPU resource for the hypervisor\u0027s emulator thread. The flavor extra"},{"line_number":301,"context_line":"specs would look like this:"},{"line_number":302,"context_line":""},{"line_number":303,"context_line":"* ``resources:PCPU\u003d2``"},{"line_number":304,"context_line":"* ``resources:VCPU\u003d4``"},{"line_number":305,"context_line":"* ``hw:overhead_dedicated_set\u003d1,2``"},{"line_number":306,"context_line":""},{"line_number":307,"context_line":"The above would indicate to the virt driver to assign the second and third"},{"line_number":308,"context_line":"guest CPU for emulator threads. The virt driver would assign two of the"},{"line_number":309,"context_line":"physical processors in the ``CONF.cpu_dedicated_set`` to the this guest CPU for"},{"line_number":310,"context_line":"running the emulator thread on a dedicated processor. The guest CPUs 0, 3, 4,"},{"line_number":311,"context_line":"and 5 would be shared CPU resources and would be assigned four of the physical"},{"line_number":312,"context_line":"processors in the ``CONF.cpu_shared_set``."},{"line_number":313,"context_line":""},{"line_number":314,"context_line":"4) A flavor wants to consume 4 dedicated CPU resources for the guest to use and"},{"line_number":315,"context_line":"1 dedicated CPU resource for the hypervisor\u0027s emulator thread. The flavor extra"}],"source_content_type":"text/x-rst","patch_set":2,"id":"df7087c5_587779d5","line":312,"range":{"start_line":303,"start_character":1,"end_line":312,"end_character":42},"in_reply_to":"df7087c5_7dd82fee","updated":"2018-03-22 15:43:49.000000000","message":"\u003e I don\u0027t see a reason why we shouldn\u0027t accept requests for resources of both PCPU and VCPU at the same time. If a guest wants 4 VCPU and requires the emulator thread be pinned to a dedicated host CPU, then the request should be...\n\nI don\u0027t think we have an use case Jay. What would an user do that: Have its guest vCPUs running on shared pCPUs (which includes vCPUs and *emultreads* from other guests) and have its own emulthreads on a dedicated pCPU?\n\n\u003e If what you\u0027re saying is that hw:overhead_dedicated_set\u003d0 doesn\u0027t make sense because in that case, the emulator threads are not actually \"guest CPUs\" and don\u0027t need to be identified by a specific ordinal processor ID, then I am open to suggestions on whether the hw:overhead_dedicated_set is even necessary at all. Is that what you\u0027re getting at, Sahid?\n\nYes that point is true. It\u0027s not something we should do. That is also why I\u0027m asking you to change the term VCPU/PCPU when talking about the resources.I think that does not make sense to ask for VCPU resources to run emulthreads on.\n\nThe other point I have is that, we don\u0027t have to give users ability to place emulthreads;\n\n - For a guest asking SHARED or DEDICATED, they run on the same set of the guest pCPUs\n - For a guest asking DEDICATED + hw:overhead_blabla, they run on the CONF.cpu_shared_set","commit_id":"7e2ddeb4184aa20a27a27b8c3acba5eaffdc0f3b"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"ef2c5d84e8c652aded373e9e267c55dd5757b610","unresolved":false,"context_lines":[{"line_number":311,"context_line":"and 5 would be shared CPU resources and would be assigned four of the physical"},{"line_number":312,"context_line":"processors in the ``CONF.cpu_shared_set``."},{"line_number":313,"context_line":""},{"line_number":314,"context_line":"4) A flavor wants to consume 4 dedicated CPU resources for the guest to use and"},{"line_number":315,"context_line":"1 dedicated CPU resource for the hypervisor\u0027s emulator thread. The flavor extra"},{"line_number":316,"context_line":"specs would look like this:"},{"line_number":317,"context_line":""},{"line_number":318,"context_line":"* ``resources:PCPU\u003d5``"},{"line_number":319,"context_line":"* ``hw:overhead_dedicated_set\u003d1``"},{"line_number":320,"context_line":""},{"line_number":321,"context_line":"The above would indicate to the virt driver to assign use the second guest CPU"},{"line_number":322,"context_line":"for an emulator thread. The virt driver would assign one of the physical"},{"line_number":323,"context_line":"processors in the ``CONF.cpu_dedicated_set`` to the this guest CPU for running"},{"line_number":324,"context_line":"the emulator thread on a dedicated processor. The guest CPUs 0, 2, 3, and 4"},{"line_number":325,"context_line":"would be dedicated CPU resources and would be assigned four of the physical"},{"line_number":326,"context_line":"processors in the ``CONF.cpu_dedicated_set``."},{"line_number":327,"context_line":""},{"line_number":328,"context_line":"Alternatives"},{"line_number":329,"context_line":"------------"}],"source_content_type":"text/x-rst","patch_set":2,"id":"df7087c5_6a55cc4f","line":326,"range":{"start_line":314,"start_character":1,"end_line":326,"end_character":45},"updated":"2018-03-22 08:46:01.000000000","message":"So what I suggest:\n\nresources:PCPU\u003d4 (DEDICATED_CPU)\n\nMeaning that: 4 pCPUs will be picked from \u0027CONF.cpu_dedicated_set\u0027 to pin the 4 vCPU threads on, and the emulthreads will be pinned to the 4 same picked pCPUs to run guest vCPUs\n\nresources:PCPU\u003d4 (DEDICATED_CPU)\nhw:overhead_isolated\u003dyes\n\nMeaning that: 4 pCPUs will be picked from \u0027CONF.cpu_dedicated_set\u0027 to pin the 4 vCPU threads on, and the emulthreads will be pinned to the whole \u0027CONF.cpu_shared_set\u0027.","commit_id":"7e2ddeb4184aa20a27a27b8c3acba5eaffdc0f3b"},{"author":{"_account_id":8768,"name":"Chris Friesen","email":"chris.friesen@windriver.com","username":"cbf123"},"change_message_id":"14d646a0edb0b66feeca23391dd0a4e387781524","unresolved":false,"context_lines":[{"line_number":311,"context_line":"and 5 would be shared CPU resources and would be assigned four of the physical"},{"line_number":312,"context_line":"processors in the ``CONF.cpu_shared_set``."},{"line_number":313,"context_line":""},{"line_number":314,"context_line":"4) A flavor wants to consume 4 dedicated CPU resources for the guest to use and"},{"line_number":315,"context_line":"1 dedicated CPU resource for the hypervisor\u0027s emulator thread. The flavor extra"},{"line_number":316,"context_line":"specs would look like this:"},{"line_number":317,"context_line":""},{"line_number":318,"context_line":"* ``resources:PCPU\u003d5``"},{"line_number":319,"context_line":"* ``hw:overhead_dedicated_set\u003d1``"},{"line_number":320,"context_line":""},{"line_number":321,"context_line":"The above would indicate to the virt driver to assign use the second guest CPU"},{"line_number":322,"context_line":"for an emulator thread. The virt driver would assign one of the physical"},{"line_number":323,"context_line":"processors in the ``CONF.cpu_dedicated_set`` to the this guest CPU for running"},{"line_number":324,"context_line":"the emulator thread on a dedicated processor. The guest CPUs 0, 2, 3, and 4"},{"line_number":325,"context_line":"would be dedicated CPU resources and would be assigned four of the physical"},{"line_number":326,"context_line":"processors in the ``CONF.cpu_dedicated_set``."},{"line_number":327,"context_line":""},{"line_number":328,"context_line":"Alternatives"},{"line_number":329,"context_line":"------------"}],"source_content_type":"text/x-rst","patch_set":2,"id":"df7087c5_5dfa0b75","line":326,"range":{"start_line":314,"start_character":1,"end_line":326,"end_character":45},"in_reply_to":"df7087c5_6a55cc4f","updated":"2018-03-22 15:27:20.000000000","message":"Sahid, do you think we need to allow the option of asking for a \"dedicated\" host cpu to run the emulthreads (for some sort of super-critical application that doesn\u0027t care about wasted resources and just wants max speed)?\n\nIf not, then I\u0027m fine with your suggestion.  Except, what about the case where CONF.cpu_shared_set is empty?","commit_id":"7e2ddeb4184aa20a27a27b8c3acba5eaffdc0f3b"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"4c3eff83b22105a4fadff8352650063567119344","unresolved":false,"context_lines":[{"line_number":311,"context_line":"and 5 would be shared CPU resources and would be assigned four of the physical"},{"line_number":312,"context_line":"processors in the ``CONF.cpu_shared_set``."},{"line_number":313,"context_line":""},{"line_number":314,"context_line":"4) A flavor wants to consume 4 dedicated CPU resources for the guest to use and"},{"line_number":315,"context_line":"1 dedicated CPU resource for the hypervisor\u0027s emulator thread. The flavor extra"},{"line_number":316,"context_line":"specs would look like this:"},{"line_number":317,"context_line":""},{"line_number":318,"context_line":"* ``resources:PCPU\u003d5``"},{"line_number":319,"context_line":"* ``hw:overhead_dedicated_set\u003d1``"},{"line_number":320,"context_line":""},{"line_number":321,"context_line":"The above would indicate to the virt driver to assign use the second guest CPU"},{"line_number":322,"context_line":"for an emulator thread. The virt driver would assign one of the physical"},{"line_number":323,"context_line":"processors in the ``CONF.cpu_dedicated_set`` to the this guest CPU for running"},{"line_number":324,"context_line":"the emulator thread on a dedicated processor. The guest CPUs 0, 2, 3, and 4"},{"line_number":325,"context_line":"would be dedicated CPU resources and would be assigned four of the physical"},{"line_number":326,"context_line":"processors in the ``CONF.cpu_dedicated_set``."},{"line_number":327,"context_line":""},{"line_number":328,"context_line":"Alternatives"},{"line_number":329,"context_line":"------------"}],"source_content_type":"text/x-rst","patch_set":2,"id":"df7087c5_fd0bdf8a","line":326,"range":{"start_line":314,"start_character":1,"end_line":326,"end_character":45},"in_reply_to":"df7087c5_6a55cc4f","updated":"2018-03-22 14:38:19.000000000","message":"The overhead_dedicated_set and overhead_shared_set is the *guest* CPUs that are either to be assigned to a set of dedicated or shared host CPUs.\n\nI agree with you here (and above) about the virt driver not \"picking specific host CPUs for a shared guest CPU resource\" and instead just \"pinning\" the shared guest CPUs to the entire CONF.cpu_shared_set. I will update the spec to say that.","commit_id":"7e2ddeb4184aa20a27a27b8c3acba5eaffdc0f3b"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"a6052852374384e3aa93bc6d87418834bd3d8fd7","unresolved":false,"context_lines":[{"line_number":354,"context_line":"Other end user impact"},{"line_number":355,"context_line":"---------------------"},{"line_number":356,"context_line":""},{"line_number":357,"context_line":"This proposal should actually make the CPU resource tracking easier to reason"},{"line_number":358,"context_line":"about and understand for end users by making the inventory of both shared and"},{"line_number":359,"context_line":"dedicated CPU resources consistent."},{"line_number":360,"context_line":""},{"line_number":361,"context_line":"Performance Impact"},{"line_number":362,"context_line":"------------------"}],"source_content_type":"text/x-rst","patch_set":2,"id":"df7087c5_6e02c90d","line":359,"range":{"start_line":357,"start_character":0,"end_line":359,"end_character":35},"updated":"2018-03-22 00:14:07.000000000","message":"can we add some detailed example to show how this will work with other advanced features, the cpu topology, numa and realtime extra specs.\n\ne.g. a slightly contrived usecase but, 1 vm with hugepages,2 guest numa node,25% of ram on numa node 0 and 75% on node 1, 2 guest socket each with a 4 core cpu with 2 threads per core, first socket uses shared cores and emulator threads are pinned to first socket and second socket uses dedicated realtime cpus. \n\nthe only thing for that example you cant do today is mix shared and dedicated cores in the same guest. everything else has worked since at least pike. infact if you ignore the emulator thread pinning and realtime the rest has worked since icehouse.","commit_id":"7e2ddeb4184aa20a27a27b8c3acba5eaffdc0f3b"},{"author":{"_account_id":8768,"name":"Chris Friesen","email":"chris.friesen@windriver.com","username":"cbf123"},"change_message_id":"14d646a0edb0b66feeca23391dd0a4e387781524","unresolved":false,"context_lines":[{"line_number":354,"context_line":"Other end user impact"},{"line_number":355,"context_line":"---------------------"},{"line_number":356,"context_line":""},{"line_number":357,"context_line":"This proposal should actually make the CPU resource tracking easier to reason"},{"line_number":358,"context_line":"about and understand for end users by making the inventory of both shared and"},{"line_number":359,"context_line":"dedicated CPU resources consistent."},{"line_number":360,"context_line":""},{"line_number":361,"context_line":"Performance Impact"},{"line_number":362,"context_line":"------------------"}],"source_content_type":"text/x-rst","patch_set":2,"id":"df7087c5_58221954","line":359,"range":{"start_line":357,"start_character":0,"end_line":359,"end_character":35},"in_reply_to":"df7087c5_6e02c90d","updated":"2018-03-22 15:27:20.000000000","message":"I don\u0027t think we can specify \"where\" emulator threads are pinned currently, can we?\n\nBut I think something like this would work.  Only the first four lines are new.\n\nresources:PCPU\u003d8\nresources:VCPU\u003d8\nhw:overhead_isolated\u003dshared\nhw:dedicated_cpus\u003d9-17\nhw:cpu_thread_policy\u003drequire\nhw:numa_nodes\u003d2\nhw:numa_mem.0\u003d1024\nhw:numa_mem.1\u003d3096\nhw:numa_cpu.0\u003d8\nhw:numa_cpu.1\u003d8\nhw:cpu_realtime\u003dyes\nhw:cpu_realtime_mask\u003d^0-8","commit_id":"7e2ddeb4184aa20a27a27b8c3acba5eaffdc0f3b"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"4c3eff83b22105a4fadff8352650063567119344","unresolved":false,"context_lines":[{"line_number":354,"context_line":"Other end user impact"},{"line_number":355,"context_line":"---------------------"},{"line_number":356,"context_line":""},{"line_number":357,"context_line":"This proposal should actually make the CPU resource tracking easier to reason"},{"line_number":358,"context_line":"about and understand for end users by making the inventory of both shared and"},{"line_number":359,"context_line":"dedicated CPU resources consistent."},{"line_number":360,"context_line":""},{"line_number":361,"context_line":"Performance Impact"},{"line_number":362,"context_line":"------------------"}],"source_content_type":"text/x-rst","patch_set":2,"id":"df7087c5_7da02f91","line":359,"range":{"start_line":357,"start_character":0,"end_line":359,"end_character":35},"in_reply_to":"df7087c5_6e02c90d","updated":"2018-03-22 14:38:19.000000000","message":"The tight coupling between CPU pinning, huge pages, guest NUMA topology and other stuff like realtime extra specs is the root of the problem with the existing CPU and NUMA resource tracking subsytem IMHO.\n\nI am not interested in bringing the complexity and lack of hardware abstraction for NUMATopology/InstanceNUMATopology over to the placement API. That is why I\u0027ve focused this spec on the quantitative CPU resource tracking (resources:VCPU\u003dX and resources:PCPU\u003dX) and the simplification of all CONF.vcpu_pin_set and the \"allocation policy\" extra specs stuff to a format that mere mortals will be able to understand.","commit_id":"7e2ddeb4184aa20a27a27b8c3acba5eaffdc0f3b"},{"author":{"_account_id":8768,"name":"Chris Friesen","email":"chris.friesen@windriver.com","username":"cbf123"},"change_message_id":"54b7ee072ed618275b8a07b58de31a8ba61c3616","unresolved":false,"context_lines":[{"line_number":354,"context_line":"Other end user impact"},{"line_number":355,"context_line":"---------------------"},{"line_number":356,"context_line":""},{"line_number":357,"context_line":"This proposal should actually make the CPU resource tracking easier to reason"},{"line_number":358,"context_line":"about and understand for end users by making the inventory of both shared and"},{"line_number":359,"context_line":"dedicated CPU resources consistent."},{"line_number":360,"context_line":""},{"line_number":361,"context_line":"Performance Impact"},{"line_number":362,"context_line":"------------------"}],"source_content_type":"text/x-rst","patch_set":2,"id":"df7087c5_c30f1a86","line":359,"range":{"start_line":357,"start_character":0,"end_line":359,"end_character":35},"in_reply_to":"df7087c5_7da02f91","updated":"2018-03-22 15:44:26.000000000","message":"\u003e The tight coupling between CPU pinning, huge pages, guest NUMA\n \u003e topology and other stuff like realtime extra specs is the root of\n \u003e the problem with the existing CPU and NUMA resource tracking\n \u003e subsytem IMHO.\n\nI don\u0027t think it needs to be too complex.  From the user\u0027s perspective, which CPUs are \"shared\" vs \"dedicated\" is orthogonal to how they\u0027re spread across the virtual NUMA nodes.\n\nWe do need to figure out if we can allow instances to float across entire compute nodes, since that means we can no longer account for resource consumption on the underlying NUMA nodes.","commit_id":"7e2ddeb4184aa20a27a27b8c3acba5eaffdc0f3b"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"a6052852374384e3aa93bc6d87418834bd3d8fd7","unresolved":false,"context_lines":[{"line_number":387,"context_line":"Upgrade impact"},{"line_number":388,"context_line":"--------------"},{"line_number":389,"context_line":""},{"line_number":390,"context_line":"Need to think through this well. There are quite a few existing CONF options"},{"line_number":391,"context_line":"and extra specs that control pinning behavior. While this proposal reduces this"},{"line_number":392,"context_line":"list and makes them consistent, we still need to keep code around"},{"line_number":393,"context_line":"nova/virt/hardware.py to handle old options and extra specs. A first step in"},{"line_number":394,"context_line":"handling this will be to refactor any code in nova/virt/hardware.py that"},{"line_number":395,"context_line":"references hard-coded extra specs or CONF options and turn those references"},{"line_number":396,"context_line":"into parameters to functions."},{"line_number":397,"context_line":""},{"line_number":398,"context_line":"Implementation"},{"line_number":399,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":2,"id":"df7087c5_718cee7e","line":396,"range":{"start_line":390,"start_character":0,"end_line":396,"end_character":29},"updated":"2018-03-22 00:14:07.000000000","message":"have you taught how we will deal with requesting dedicated cpus via image metadata.\nglance will still accept the pinning policy when an enduser uploads an image so we will have to put a check that fails to boot the image if the user set the pinning policy key after we remove support for that option else they will not be able to tell that there request is ignored other then the bad performance.","commit_id":"7e2ddeb4184aa20a27a27b8c3acba5eaffdc0f3b"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"4c3eff83b22105a4fadff8352650063567119344","unresolved":false,"context_lines":[{"line_number":387,"context_line":"Upgrade impact"},{"line_number":388,"context_line":"--------------"},{"line_number":389,"context_line":""},{"line_number":390,"context_line":"Need to think through this well. There are quite a few existing CONF options"},{"line_number":391,"context_line":"and extra specs that control pinning behavior. While this proposal reduces this"},{"line_number":392,"context_line":"list and makes them consistent, we still need to keep code around"},{"line_number":393,"context_line":"nova/virt/hardware.py to handle old options and extra specs. A first step in"},{"line_number":394,"context_line":"handling this will be to refactor any code in nova/virt/hardware.py that"},{"line_number":395,"context_line":"references hard-coded extra specs or CONF options and turn those references"},{"line_number":396,"context_line":"into parameters to functions."},{"line_number":397,"context_line":""},{"line_number":398,"context_line":"Implementation"},{"line_number":399,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":2,"id":"df7087c5_ddddbb14","line":396,"range":{"start_line":390,"start_character":0,"end_line":396,"end_character":29},"in_reply_to":"df7087c5_718cee7e","updated":"2018-03-22 14:38:19.000000000","message":"The resources:VCPU/resources:PCPU and hw:overhead_pin_set keys are for both the flavor extra specs and the image properties. I think I made that clear a couple times above?","commit_id":"7e2ddeb4184aa20a27a27b8c3acba5eaffdc0f3b"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"a83880e7ae5274df872fe540ee3f466b3f676bff","unresolved":false,"context_lines":[{"line_number":24,"context_line":"in terms that are consistent with other classes of resource in nova."},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"Tracking of dedicated CPU resources is not done using the placement API,"},{"line_number":27,"context_line":"therefore there is no wasy way to view the physical processor usage in the"},{"line_number":28,"context_line":"system. The CONF options surrounding host CPU inventory are difficult to"},{"line_number":29,"context_line":"understand, and despite efforts to document them, there remain only a few"},{"line_number":30,"context_line":"individuals that even know how to \"properly\" configure a compute node for"}],"source_content_type":"text/x-rst","patch_set":3,"id":"df7087c5_bffe9bac","line":27,"range":{"start_line":27,"start_character":22,"end_line":27,"end_character":26},"updated":"2018-03-23 15:07:15.000000000","message":"delete","commit_id":"a16fd915f15b62b69f7d176ca4c9a34cea9d884e"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"35ee574703a9ea4c12d375a05436b4d0129677fb","unresolved":false,"context_lines":[{"line_number":24,"context_line":"in terms that are consistent with other classes of resource in nova."},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"Tracking of dedicated CPU resources is not done using the placement API,"},{"line_number":27,"context_line":"therefore there is no wasy way to view the physical processor usage in the"},{"line_number":28,"context_line":"system. The CONF options surrounding host CPU inventory are difficult to"},{"line_number":29,"context_line":"understand, and despite efforts to document them, there remain only a few"},{"line_number":30,"context_line":"individuals that even know how to \"properly\" configure a compute node for"}],"source_content_type":"text/x-rst","patch_set":3,"id":"bf659307_1fd075f7","line":27,"range":{"start_line":27,"start_character":22,"end_line":27,"end_character":26},"in_reply_to":"df7087c5_bffe9bac","updated":"2018-03-25 13:23:26.000000000","message":"Done","commit_id":"a16fd915f15b62b69f7d176ca4c9a34cea9d884e"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"a83880e7ae5274df872fe540ee3f466b3f676bff","unresolved":false,"context_lines":[{"line_number":25,"context_line":""},{"line_number":26,"context_line":"Tracking of dedicated CPU resources is not done using the placement API,"},{"line_number":27,"context_line":"therefore there is no wasy way to view the physical processor usage in the"},{"line_number":28,"context_line":"system. The CONF options surrounding host CPU inventory are difficult to"},{"line_number":29,"context_line":"understand, and despite efforts to document them, there remain only a few"},{"line_number":30,"context_line":"individuals that even know how to \"properly\" configure a compute node for"},{"line_number":31,"context_line":"hosting certain workloads."}],"source_content_type":"text/x-rst","patch_set":3,"id":"df7087c5_3fd92b55","line":28,"range":{"start_line":28,"start_character":12,"end_line":28,"end_character":16},"updated":"2018-03-23 15:07:15.000000000","message":"your refering to vcpu_pin_set et al in the nova.conf","commit_id":"a16fd915f15b62b69f7d176ca4c9a34cea9d884e"},{"author":{"_account_id":8768,"name":"Chris Friesen","email":"chris.friesen@windriver.com","username":"cbf123"},"change_message_id":"3599acc24d7557c18f6cd3d6b3a94aeb2458c7fd","unresolved":false,"context_lines":[{"line_number":79,"context_line":""},{"line_number":80,"context_line":"**emulator thread**"},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"An operating system process/thread created by QEMU to perform certain"},{"line_number":83,"context_line":"maintenance activities on a guest VM"},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"**I/O thread**"}],"source_content_type":"text/x-rst","patch_set":3,"id":"bf659307_987fd5aa","line":82,"range":{"start_line":82,"start_character":20,"end_line":82,"end_character":34},"updated":"2018-03-23 17:23:40.000000000","message":"just \"thread\".  Same in the next two definitions.","commit_id":"a16fd915f15b62b69f7d176ca4c9a34cea9d884e"},{"author":{"_account_id":8768,"name":"Chris Friesen","email":"chris.friesen@windriver.com","username":"cbf123"},"change_message_id":"3599acc24d7557c18f6cd3d6b3a94aeb2458c7fd","unresolved":false,"context_lines":[{"line_number":80,"context_line":"**emulator thread**"},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"An operating system process/thread created by QEMU to perform certain"},{"line_number":83,"context_line":"maintenance activities on a guest VM"},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"**I/O thread**"},{"line_number":86,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"bf659307_b855f91f","line":83,"updated":"2018-03-23 17:23:40.000000000","message":"I think the emulator thread will do more work in the case where KVM is not in use, but nobody should be doing that for production.","commit_id":"a16fd915f15b62b69f7d176ca4c9a34cea9d884e"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"045d4db0370a848cbfa439fa5688f4e38f3b90f1","unresolved":false,"context_lines":[{"line_number":158,"context_line":"    release for removal in the \"T\" release. The CONF.cpu_dedicated_set and"},{"line_number":159,"context_line":"    CONF.cpu_shared_set make CONF.vcpu_pin_set irrelevant."},{"line_number":160,"context_line":""},{"line_number":161,"context_line":"For non-NUMA host systems, the single compute node resource provider will"},{"line_number":162,"context_line":"contain inventory records for ``VCPU`` and/or ``PCPU`` resources. For NUMA host"},{"line_number":163,"context_line":"systems, the child resource providers representing each NUMA node will contain"},{"line_number":164,"context_line":"inventory records for ``VCPU`` and/or ``PCPU`` resources."}],"source_content_type":"text/x-rst","patch_set":3,"id":"df7087c5_3a37f900","line":161,"range":{"start_line":161,"start_character":4,"end_line":161,"end_character":13},"updated":"2018-03-23 15:10:49.000000000","message":"s/.*/non-NUMA configured/","commit_id":"a16fd915f15b62b69f7d176ca4c9a34cea9d884e"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"35ee574703a9ea4c12d375a05436b4d0129677fb","unresolved":false,"context_lines":[{"line_number":158,"context_line":"    release for removal in the \"T\" release. The CONF.cpu_dedicated_set and"},{"line_number":159,"context_line":"    CONF.cpu_shared_set make CONF.vcpu_pin_set irrelevant."},{"line_number":160,"context_line":""},{"line_number":161,"context_line":"For non-NUMA host systems, the single compute node resource provider will"},{"line_number":162,"context_line":"contain inventory records for ``VCPU`` and/or ``PCPU`` resources. For NUMA host"},{"line_number":163,"context_line":"systems, the child resource providers representing each NUMA node will contain"},{"line_number":164,"context_line":"inventory records for ``VCPU`` and/or ``PCPU`` resources."}],"source_content_type":"text/x-rst","patch_set":3,"id":"bf659307_9f2a45e5","line":161,"range":{"start_line":161,"start_character":4,"end_line":161,"end_character":13},"in_reply_to":"df7087c5_3a37f900","updated":"2018-03-25 13:23:26.000000000","message":"Done","commit_id":"a16fd915f15b62b69f7d176ca4c9a34cea9d884e"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"a83880e7ae5274df872fe540ee3f466b3f676bff","unresolved":false,"context_lines":[{"line_number":158,"context_line":"    release for removal in the \"T\" release. The CONF.cpu_dedicated_set and"},{"line_number":159,"context_line":"    CONF.cpu_shared_set make CONF.vcpu_pin_set irrelevant."},{"line_number":160,"context_line":""},{"line_number":161,"context_line":"For non-NUMA host systems, the single compute node resource provider will"},{"line_number":162,"context_line":"contain inventory records for ``VCPU`` and/or ``PCPU`` resources. For NUMA host"},{"line_number":163,"context_line":"systems, the child resource providers representing each NUMA node will contain"},{"line_number":164,"context_line":"inventory records for ``VCPU`` and/or ``PCPU`` resources."},{"line_number":165,"context_line":""},{"line_number":166,"context_line":"As an example of a NUMA host system, consider a host system with 2 sockets,"},{"line_number":167,"context_line":"each with 24 physical cores and 2 hyperthreads per physical core. Physical"}],"source_content_type":"text/x-rst","patch_set":3,"id":"df7087c5_3fae0b81","line":164,"range":{"start_line":161,"start_character":0,"end_line":164,"end_character":57},"updated":"2018-03-23 15:07:15.000000000","message":"for consitency we could also chose to model \"non-numa\" systems as have 1 numa node and have all resouces associated with that.\n\nthen cpus would always be under a numa node but not sure if this buys us anything?","commit_id":"a16fd915f15b62b69f7d176ca4c9a34cea9d884e"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"35ee574703a9ea4c12d375a05436b4d0129677fb","unresolved":false,"context_lines":[{"line_number":158,"context_line":"    release for removal in the \"T\" release. The CONF.cpu_dedicated_set and"},{"line_number":159,"context_line":"    CONF.cpu_shared_set make CONF.vcpu_pin_set irrelevant."},{"line_number":160,"context_line":""},{"line_number":161,"context_line":"For non-NUMA host systems, the single compute node resource provider will"},{"line_number":162,"context_line":"contain inventory records for ``VCPU`` and/or ``PCPU`` resources. For NUMA host"},{"line_number":163,"context_line":"systems, the child resource providers representing each NUMA node will contain"},{"line_number":164,"context_line":"inventory records for ``VCPU`` and/or ``PCPU`` resources."},{"line_number":165,"context_line":""},{"line_number":166,"context_line":"As an example of a NUMA host system, consider a host system with 2 sockets,"},{"line_number":167,"context_line":"each with 24 physical cores and 2 hyperthreads per physical core. Physical"}],"source_content_type":"text/x-rst","patch_set":3,"id":"bf659307_ffefc1ad","line":164,"range":{"start_line":161,"start_character":0,"end_line":164,"end_character":57},"in_reply_to":"df7087c5_3fae0b81","updated":"2018-03-25 13:23:26.000000000","message":"I don\u0027t believe that buys us anything, Sean. It would make things needlessly complex.","commit_id":"a16fd915f15b62b69f7d176ca4c9a34cea9d884e"},{"author":{"_account_id":8768,"name":"Chris Friesen","email":"chris.friesen@windriver.com","username":"cbf123"},"change_message_id":"3599acc24d7557c18f6cd3d6b3a94aeb2458c7fd","unresolved":false,"context_lines":[{"line_number":182,"context_line":"The operator would set the CONF options like so::"},{"line_number":183,"context_line":""},{"line_number":184,"context_line":"    [compute]"},{"line_number":185,"context_line":"    cpu_dedicated_set\u003d2-18,50-66"},{"line_number":186,"context_line":"    cpu_shared_set\u003d19-47,67-95"},{"line_number":187,"context_line":""},{"line_number":188,"context_line":"The virt driver will construct a provider tree containing two NUMA node child"}],"source_content_type":"text/x-rst","patch_set":3,"id":"bf659307_1b0e5fe5","line":185,"range":{"start_line":185,"start_character":22,"end_line":185,"end_character":32},"updated":"2018-03-23 17:23:40.000000000","message":"should be 2-17,50-65","commit_id":"a16fd915f15b62b69f7d176ca4c9a34cea9d884e"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"35ee574703a9ea4c12d375a05436b4d0129677fb","unresolved":false,"context_lines":[{"line_number":182,"context_line":"The operator would set the CONF options like so::"},{"line_number":183,"context_line":""},{"line_number":184,"context_line":"    [compute]"},{"line_number":185,"context_line":"    cpu_dedicated_set\u003d2-18,50-66"},{"line_number":186,"context_line":"    cpu_shared_set\u003d19-47,67-95"},{"line_number":187,"context_line":""},{"line_number":188,"context_line":"The virt driver will construct a provider tree containing two NUMA node child"}],"source_content_type":"text/x-rst","patch_set":3,"id":"bf659307_1ff9557f","line":185,"range":{"start_line":185,"start_character":22,"end_line":185,"end_character":32},"in_reply_to":"bf659307_1b0e5fe5","updated":"2018-03-25 13:23:26.000000000","message":"Done","commit_id":"a16fd915f15b62b69f7d176ca4c9a34cea9d884e"},{"author":{"_account_id":8768,"name":"Chris Friesen","email":"chris.friesen@windriver.com","username":"cbf123"},"change_message_id":"3599acc24d7557c18f6cd3d6b3a94aeb2458c7fd","unresolved":false,"context_lines":[{"line_number":183,"context_line":""},{"line_number":184,"context_line":"    [compute]"},{"line_number":185,"context_line":"    cpu_dedicated_set\u003d2-18,50-66"},{"line_number":186,"context_line":"    cpu_shared_set\u003d19-47,67-95"},{"line_number":187,"context_line":""},{"line_number":188,"context_line":"The virt driver will construct a provider tree containing two NUMA node child"},{"line_number":189,"context_line":"providers of the parent compute node resource provider and report inventory for"}],"source_content_type":"text/x-rst","patch_set":3,"id":"bf659307_3b132310","line":186,"range":{"start_line":186,"start_character":19,"end_line":186,"end_character":30},"updated":"2018-03-23 17:23:40.000000000","message":"should be 18-47,66-95","commit_id":"a16fd915f15b62b69f7d176ca4c9a34cea9d884e"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"35ee574703a9ea4c12d375a05436b4d0129677fb","unresolved":false,"context_lines":[{"line_number":183,"context_line":""},{"line_number":184,"context_line":"    [compute]"},{"line_number":185,"context_line":"    cpu_dedicated_set\u003d2-18,50-66"},{"line_number":186,"context_line":"    cpu_shared_set\u003d19-47,67-95"},{"line_number":187,"context_line":""},{"line_number":188,"context_line":"The virt driver will construct a provider tree containing two NUMA node child"},{"line_number":189,"context_line":"providers of the parent compute node resource provider and report inventory for"}],"source_content_type":"text/x-rst","patch_set":3,"id":"bf659307_3ff69991","line":186,"range":{"start_line":186,"start_character":19,"end_line":186,"end_character":30},"in_reply_to":"bf659307_3b132310","updated":"2018-03-25 13:23:26.000000000","message":"Done","commit_id":"a16fd915f15b62b69f7d176ca4c9a34cea9d884e"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"045d4db0370a848cbfa439fa5688f4e38f3b90f1","unresolved":false,"context_lines":[{"line_number":185,"context_line":"    cpu_dedicated_set\u003d2-18,50-66"},{"line_number":186,"context_line":"    cpu_shared_set\u003d19-47,67-95"},{"line_number":187,"context_line":""},{"line_number":188,"context_line":"The virt driver will construct a provider tree containing two NUMA node child"},{"line_number":189,"context_line":"providers of the parent compute node resource provider and report inventory for"},{"line_number":190,"context_line":"each NUMA node separately::"},{"line_number":191,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"df7087c5_5a150d48","line":188,"range":{"start_line":188,"start_character":0,"end_line":188,"end_character":15},"updated":"2018-03-23 15:10:49.000000000","message":"If the operator wants it...","commit_id":"a16fd915f15b62b69f7d176ca4c9a34cea9d884e"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"c4bcb6f4a09ff86827250e39e24440e4231b87d9","unresolved":false,"context_lines":[{"line_number":185,"context_line":"    cpu_dedicated_set\u003d2-18,50-66"},{"line_number":186,"context_line":"    cpu_shared_set\u003d19-47,67-95"},{"line_number":187,"context_line":""},{"line_number":188,"context_line":"The virt driver will construct a provider tree containing two NUMA node child"},{"line_number":189,"context_line":"providers of the parent compute node resource provider and report inventory for"},{"line_number":190,"context_line":"each NUMA node separately::"},{"line_number":191,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"bf659307_b05f3ee4","line":188,"in_reply_to":"","updated":"2018-03-24 21:10:38.000000000","message":"The only way to disable numa is in the bios by configing the memory controllers into cross numa interleaved mode. This chages the physical page addressing so that each sequenceal adress is round robbined across each controller.  That gives you the maximum possible bandwidth by using all memory controllers for every request at the cost of increased  minimum memory latency by making all acess cross numa requests.\n\nNeedless to say a nova conf option would like be a much better approach","commit_id":"a16fd915f15b62b69f7d176ca4c9a34cea9d884e"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"35ee574703a9ea4c12d375a05436b4d0129677fb","unresolved":false,"context_lines":[{"line_number":185,"context_line":"    cpu_dedicated_set\u003d2-18,50-66"},{"line_number":186,"context_line":"    cpu_shared_set\u003d19-47,67-95"},{"line_number":187,"context_line":""},{"line_number":188,"context_line":"The virt driver will construct a provider tree containing two NUMA node child"},{"line_number":189,"context_line":"providers of the parent compute node resource provider and report inventory for"},{"line_number":190,"context_line":"each NUMA node separately::"},{"line_number":191,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"bf659307_ff44a1b9","line":188,"in_reply_to":"bf659307_b05f3ee4","updated":"2018-03-25 13:23:26.000000000","message":"I was thinking a CONF option, but I\u0027ve added a note saying this spec does not dictate the implementation details of how a host system determines whether it will use a tree of providers to represent its NUMA layout.","commit_id":"a16fd915f15b62b69f7d176ca4c9a34cea9d884e"},{"author":{"_account_id":8768,"name":"Chris Friesen","email":"chris.friesen@windriver.com","username":"cbf123"},"change_message_id":"3599acc24d7557c18f6cd3d6b3a94aeb2458c7fd","unresolved":false,"context_lines":[{"line_number":185,"context_line":"    cpu_dedicated_set\u003d2-18,50-66"},{"line_number":186,"context_line":"    cpu_shared_set\u003d19-47,67-95"},{"line_number":187,"context_line":""},{"line_number":188,"context_line":"The virt driver will construct a provider tree containing two NUMA node child"},{"line_number":189,"context_line":"providers of the parent compute node resource provider and report inventory for"},{"line_number":190,"context_line":"each NUMA node separately::"},{"line_number":191,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"bf659307_fbe28b01","line":188,"range":{"start_line":188,"start_character":0,"end_line":188,"end_character":15},"in_reply_to":"df7087c5_5a150d48","updated":"2018-03-23 17:23:40.000000000","message":"If the operator doesn\u0027t want it they can turn off NUMA in the kernel boot args, no?","commit_id":"a16fd915f15b62b69f7d176ca4c9a34cea9d884e"},{"author":{"_account_id":8768,"name":"Chris Friesen","email":"chris.friesen@windriver.com","username":"cbf123"},"change_message_id":"3599acc24d7557c18f6cd3d6b3a94aeb2458c7fd","unresolved":false,"context_lines":[{"line_number":193,"context_line":"        NUMA NODE 0 provider:"},{"line_number":194,"context_line":"            PCPU:"},{"line_number":195,"context_line":"                total: 16"},{"line_number":196,"context_line":"                reserved: 2"},{"line_number":197,"context_line":"                min_unit: 1"},{"line_number":198,"context_line":"                max_unit: 16"},{"line_number":199,"context_line":"                step_size: 1"}],"source_content_type":"text/x-rst","patch_set":3,"id":"bf659307_5b1377b9","line":196,"range":{"start_line":196,"start_character":16,"end_line":196,"end_character":27},"updated":"2018-03-23 17:23:40.000000000","message":"What is this \"reserved\"?  In the description above we\u0027re reserving two physical processors on each NUMA node for the host, so does this represent those two?  If so, why would placement need to know about them at all?","commit_id":"a16fd915f15b62b69f7d176ca4c9a34cea9d884e"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"a83880e7ae5274df872fe540ee3f466b3f676bff","unresolved":false,"context_lines":[{"line_number":193,"context_line":"        NUMA NODE 0 provider:"},{"line_number":194,"context_line":"            PCPU:"},{"line_number":195,"context_line":"                total: 16"},{"line_number":196,"context_line":"                reserved: 2"},{"line_number":197,"context_line":"                min_unit: 1"},{"line_number":198,"context_line":"                max_unit: 16"},{"line_number":199,"context_line":"                step_size: 1"}],"source_content_type":"text/x-rst","patch_set":3,"id":"df7087c5_3ffccb70","line":196,"range":{"start_line":196,"start_character":26,"end_line":196,"end_character":27},"updated":"2018-03-23 15:07:15.000000000","message":"how was this calulated\ni dont see anything in line 185/186 that would set this.\ni think this should just be 0","commit_id":"a16fd915f15b62b69f7d176ca4c9a34cea9d884e"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"35ee574703a9ea4c12d375a05436b4d0129677fb","unresolved":false,"context_lines":[{"line_number":193,"context_line":"        NUMA NODE 0 provider:"},{"line_number":194,"context_line":"            PCPU:"},{"line_number":195,"context_line":"                total: 16"},{"line_number":196,"context_line":"                reserved: 2"},{"line_number":197,"context_line":"                min_unit: 1"},{"line_number":198,"context_line":"                max_unit: 16"},{"line_number":199,"context_line":"                step_size: 1"}],"source_content_type":"text/x-rst","patch_set":3,"id":"bf659307_9f7805f9","line":196,"range":{"start_line":196,"start_character":16,"end_line":196,"end_character":27},"in_reply_to":"bf659307_5b1377b9","updated":"2018-03-25 13:23:26.000000000","message":"@sean-k-mooney: this number of reserved PCPU is for the host system. Above on lines 175-176, it says: \"The operator wishes to reserve the first physical core and its hyperthreads on each socket for the host\u0027s use.\"\n\n@cfriesen: yes, this represents the two PCPUs on each NUMA node that are reserved for the host. Placement needs to know about them because placement has a view of the total resources on each provider. An admin may, in the future, see that those 2 PCPU reserved for the host are not needed and may wish to reassign them into the cpu_dedicated_set or cpu_shared_set.\n\nThis is not any different from the CONF.reserved_host_memory_mb and CONF.reserved_host_cpus options. I will add a note deprecating the CONF.reserved_host_cpus option since the exact physical processors reserved for the host may be calculated by simply subtracting the set difference of the host\u0027s reported physical processors from the union of CONF.cpu_dedicated_set and CONF.cpu_shared_set.\n\nAnother option would be to add a CONF.cpu_reserved_set option that would be the specific physical processors reserved for the host.","commit_id":"a16fd915f15b62b69f7d176ca4c9a34cea9d884e"},{"author":{"_account_id":8768,"name":"Chris Friesen","email":"chris.friesen@windriver.com","username":"cbf123"},"change_message_id":"4ce6662a8fb216c24f01d90b7f8d663c2a2fb405","unresolved":false,"context_lines":[{"line_number":193,"context_line":"        NUMA NODE 0 provider:"},{"line_number":194,"context_line":"            PCPU:"},{"line_number":195,"context_line":"                total: 16"},{"line_number":196,"context_line":"                reserved: 2"},{"line_number":197,"context_line":"                min_unit: 1"},{"line_number":198,"context_line":"                max_unit: 16"},{"line_number":199,"context_line":"                step_size: 1"}],"source_content_type":"text/x-rst","patch_set":3,"id":"bf659307_5ae25fd7","line":196,"range":{"start_line":196,"start_character":16,"end_line":196,"end_character":27},"in_reply_to":"bf659307_9f7805f9","updated":"2018-03-26 16:47:28.000000000","message":"\u003e @cfriesen: yes, this represents the two PCPUs on each NUMA node\n \u003e that are reserved for the host. Placement needs to know about them\n \u003e because placement has a view of the total resources on each\n \u003e provider. An admin may, in the future, see that those 2 PCPU\n \u003e reserved for the host are not needed and may wish to reassign them\n \u003e into the cpu_dedicated_set or cpu_shared_set.\n\nI was originally assuming that placement would store only \"the resources available for use by OpenStack\", in which case any host-reserved resources simply wouldn\u0027t be reported to placement.\n\nBut I\u0027m sympathetic to having a straightforward way to see what resources are reserved on each compute node.","commit_id":"a16fd915f15b62b69f7d176ca4c9a34cea9d884e"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"045d4db0370a848cbfa439fa5688f4e38f3b90f1","unresolved":false,"context_lines":[{"line_number":219,"context_line":"                min_unit: 1"},{"line_number":220,"context_line":"                max_unit: 30"},{"line_number":221,"context_line":"                step_size: 1"},{"line_number":222,"context_line":"                allocation_ratio: 8.0"},{"line_number":223,"context_line":""},{"line_number":224,"context_line":"Guest resource requests"},{"line_number":225,"context_line":"-----------------------"}],"source_content_type":"text/x-rst","patch_set":3,"id":"df7087c5_5a018d69","line":222,"updated":"2018-03-23 15:10:49.000000000","message":"Ack, will update my spec accordingly.","commit_id":"a16fd915f15b62b69f7d176ca4c9a34cea9d884e"},{"author":{"_account_id":8768,"name":"Chris Friesen","email":"chris.friesen@windriver.com","username":"cbf123"},"change_message_id":"3599acc24d7557c18f6cd3d6b3a94aeb2458c7fd","unresolved":false,"context_lines":[{"line_number":232,"context_line":""},{"line_number":233,"context_line":"    A single guest may request both shared and dedicated CPU resources."},{"line_number":234,"context_line":""},{"line_number":235,"context_line":"The guest may or may not want a virtual NUMA topology used for its guest CPU"},{"line_number":236,"context_line":"layout. When the guest **does not** want a virtual NUMA topology, the guest"},{"line_number":237,"context_line":"will use a **non-granular request group** to request CPU resources. When the"},{"line_number":238,"context_line":"guest **does** want a virtual NUMA topology, the guest will use a **granular"},{"line_number":239,"context_line":"request group**."}],"source_content_type":"text/x-rst","patch_set":3,"id":"bf659307_bb8e53ce","line":236,"range":{"start_line":235,"start_character":0,"end_line":236,"end_character":7},"updated":"2018-03-23 17:23:40.000000000","message":"This raises a fundamental question...if we allow non-NUMA-aware instances to float across the whole compute node, how can we reason about how many resources (VCPUs, 4KB pages) are left on each host NUMA node?\n\nI feel like if the host has multiple NUMA nodes then we need to restrict these \"floating\" instances to a single NUMA node otherwise we lose the ability to track resources on a per-NUMA-node basis.","commit_id":"a16fd915f15b62b69f7d176ca4c9a34cea9d884e"},{"author":{"_account_id":8768,"name":"Chris Friesen","email":"chris.friesen@windriver.com","username":"cbf123"},"change_message_id":"4ce6662a8fb216c24f01d90b7f8d663c2a2fb405","unresolved":false,"context_lines":[{"line_number":232,"context_line":""},{"line_number":233,"context_line":"    A single guest may request both shared and dedicated CPU resources."},{"line_number":234,"context_line":""},{"line_number":235,"context_line":"The guest may or may not want a virtual NUMA topology used for its guest CPU"},{"line_number":236,"context_line":"layout. When the guest **does not** want a virtual NUMA topology, the guest"},{"line_number":237,"context_line":"will use a **non-granular request group** to request CPU resources. When the"},{"line_number":238,"context_line":"guest **does** want a virtual NUMA topology, the guest will use a **granular"},{"line_number":239,"context_line":"request group**."}],"source_content_type":"text/x-rst","patch_set":3,"id":"bf659307_5acc9f34","line":236,"range":{"start_line":235,"start_character":0,"end_line":236,"end_character":7},"in_reply_to":"bf659307_7f8731d9","updated":"2018-03-26 16:47:28.000000000","message":"I\u0027m not sure I\u0027m explaining clearly.  Suppose I have 2 host NUMA nodes, each with 2 VCPU resources and 2 PCPU resources, and 1000000 4K pages.\n\nIf I start up an instance with 2 VCPUs and 100000 4KB pages, it\u0027s currently free to \"float\" across both NUMA nodes.  Placement knows that I\u0027ve consumed some resources from the system as a whole, but doesn\u0027t know how much was consumed from each host NUMA node so the per-NUMA node resources are now meaningless.\n\nNow I want to start up an instance with 2PCPUs and 100000 4KB pages (the PCPUs will cause the instance to be restricted to a single NUMA node).  Can I fit this instance on this compute node?  I don\u0027t know, it depends on where the 4K pages from the previous instance were allocated.\n\nIt seems to me that *for hosts that are exposed as having per-NUMA-node resources* we need to restrict \"floater\" instances to a single NUMA node in order to allow us to reason about per-NUMA-node resource consumption.","commit_id":"a16fd915f15b62b69f7d176ca4c9a34cea9d884e"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"35ee574703a9ea4c12d375a05436b4d0129677fb","unresolved":false,"context_lines":[{"line_number":232,"context_line":""},{"line_number":233,"context_line":"    A single guest may request both shared and dedicated CPU resources."},{"line_number":234,"context_line":""},{"line_number":235,"context_line":"The guest may or may not want a virtual NUMA topology used for its guest CPU"},{"line_number":236,"context_line":"layout. When the guest **does not** want a virtual NUMA topology, the guest"},{"line_number":237,"context_line":"will use a **non-granular request group** to request CPU resources. When the"},{"line_number":238,"context_line":"guest **does** want a virtual NUMA topology, the guest will use a **granular"},{"line_number":239,"context_line":"request group**."}],"source_content_type":"text/x-rst","patch_set":3,"id":"bf659307_7f8731d9","line":236,"range":{"start_line":235,"start_character":0,"end_line":236,"end_character":7},"in_reply_to":"bf659307_bb8e53ce","updated":"2018-03-25 13:23:26.000000000","message":"The CONF.cpu_shared_set will allow the operator to indicate which physical processors they will allow \"floater CPUs\" to run on. The operator may want to arrange a certain segment of each NUMA node\u0027s processors to be this set of \"floater CPUs\", or the operator may want to have a whole NUMA node reserved for dedicated CPUs and the other used for shared CPUs. It will be up to the operator.","commit_id":"a16fd915f15b62b69f7d176ca4c9a34cea9d884e"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"a83880e7ae5274df872fe540ee3f466b3f676bff","unresolved":false,"context_lines":[{"line_number":233,"context_line":"    A single guest may request both shared and dedicated CPU resources."},{"line_number":234,"context_line":""},{"line_number":235,"context_line":"The guest may or may not want a virtual NUMA topology used for its guest CPU"},{"line_number":236,"context_line":"layout. When the guest **does not** want a virtual NUMA topology, the guest"},{"line_number":237,"context_line":"will use a **non-granular request group** to request CPU resources. When the"},{"line_number":238,"context_line":"guest **does** want a virtual NUMA topology, the guest will use a **granular"},{"line_number":239,"context_line":"request group**."},{"line_number":240,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"df7087c5_9f515739","line":237,"range":{"start_line":236,"start_character":8,"end_line":237,"end_character":66},"updated":"2018-03-23 15:07:15.000000000","message":"this seams to be at odds with what was said on irc a few minuts ago \n\n\"sean-k-mooney[m]\tFlavor has 16 vcpus and dose not care about numa. All hosts have 2 10 cpus. How does nova know it needs to split into two groups\t14:03\nbauwser\tagain, that requires operators opiniating about which specific placement they should do per flavor for non-NUMA specific instances\t14:03\nfried_rice\tsean-k-mooney[m]: it doesn\u0027t split into two groups.  It splits into 16\"\n\nsee \nhttp://eavesdrop.openstack.org/irclogs/%23openstack-nova/latest.log.html#t2018-03-23T14:03:12\nhttp://eavesdrop.openstack.org/irclogs/%23openstack-nova/latest.log.html#t2018-03-23T14:03:36\n\nby the way i would prefer your suggestion of not using the numbered syntax for cpus when we dont care about numa.","commit_id":"a16fd915f15b62b69f7d176ca4c9a34cea9d884e"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"2d8a52b637f533b82531f1d17b118d8f2b712f30","unresolved":false,"context_lines":[{"line_number":240,"context_line":""},{"line_number":241,"context_line":".. note::"},{"line_number":242,"context_line":""},{"line_number":243,"context_line":"    The existing ``hw:cpu_allocation_policy\u003ddedicated|shared`` flavor extra"},{"line_number":244,"context_line":"    spec and image property will be **deprecated** in the \"S\" release for"},{"line_number":245,"context_line":"    removal in the \"T\" release. This extra spec will be irrelevant when flavors"},{"line_number":246,"context_line":"    can indicate the exact number of dedicated and shared CPU resources they"}],"source_content_type":"text/x-rst","patch_set":3,"id":"df7087c5_1fe4670c","line":243,"range":{"start_line":243,"start_character":22,"end_line":243,"end_character":44},"updated":"2018-03-23 14:35:00.000000000","message":"cpu_policy","commit_id":"a16fd915f15b62b69f7d176ca4c9a34cea9d884e"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"1e8c9c47a9e0b2aab17eb221e9de07f9dda647d3","unresolved":false,"context_lines":[{"line_number":240,"context_line":""},{"line_number":241,"context_line":".. note::"},{"line_number":242,"context_line":""},{"line_number":243,"context_line":"    The existing ``hw:cpu_allocation_policy\u003ddedicated|shared`` flavor extra"},{"line_number":244,"context_line":"    spec and image property will be **deprecated** in the \"S\" release for"},{"line_number":245,"context_line":"    removal in the \"T\" release. This extra spec will be irrelevant when flavors"},{"line_number":246,"context_line":"    can indicate the exact number of dedicated and shared CPU resources they"}],"source_content_type":"text/x-rst","patch_set":3,"id":"df7087c5_bf1d3bbf","line":243,"range":{"start_line":243,"start_character":22,"end_line":243,"end_character":44},"in_reply_to":"df7087c5_1fe4670c","updated":"2018-03-23 14:40:19.000000000","message":"ack, will fix. got it right below but not here ;)","commit_id":"a16fd915f15b62b69f7d176ca4c9a34cea9d884e"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"35ee574703a9ea4c12d375a05436b4d0129677fb","unresolved":false,"context_lines":[{"line_number":240,"context_line":""},{"line_number":241,"context_line":".. note::"},{"line_number":242,"context_line":""},{"line_number":243,"context_line":"    The existing ``hw:cpu_allocation_policy\u003ddedicated|shared`` flavor extra"},{"line_number":244,"context_line":"    spec and image property will be **deprecated** in the \"S\" release for"},{"line_number":245,"context_line":"    removal in the \"T\" release. This extra spec will be irrelevant when flavors"},{"line_number":246,"context_line":"    can indicate the exact number of dedicated and shared CPU resources they"}],"source_content_type":"text/x-rst","patch_set":3,"id":"bf659307_1f6cf534","line":243,"range":{"start_line":243,"start_character":22,"end_line":243,"end_character":44},"in_reply_to":"df7087c5_bf1d3bbf","updated":"2018-03-25 13:23:26.000000000","message":"Done","commit_id":"a16fd915f15b62b69f7d176ca4c9a34cea9d884e"},{"author":{"_account_id":8768,"name":"Chris Friesen","email":"chris.friesen@windriver.com","username":"cbf123"},"change_message_id":"3599acc24d7557c18f6cd3d6b3a94aeb2458c7fd","unresolved":false,"context_lines":[{"line_number":241,"context_line":".. note::"},{"line_number":242,"context_line":""},{"line_number":243,"context_line":"    The existing ``hw:cpu_allocation_policy\u003ddedicated|shared`` flavor extra"},{"line_number":244,"context_line":"    spec and image property will be **deprecated** in the \"S\" release for"},{"line_number":245,"context_line":"    removal in the \"T\" release. This extra spec will be irrelevant when flavors"},{"line_number":246,"context_line":"    can indicate the exact number of dedicated and shared CPU resources they"},{"line_number":247,"context_line":"    require."}],"source_content_type":"text/x-rst","patch_set":3,"id":"bf659307_5e4cc575","line":244,"range":{"start_line":244,"start_character":4,"end_line":244,"end_character":69},"updated":"2018-03-23 17:23:40.000000000","message":"not sure we need to deprecate it, if we do automatic translation as discussed below.","commit_id":"a16fd915f15b62b69f7d176ca4c9a34cea9d884e"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"35ee574703a9ea4c12d375a05436b4d0129677fb","unresolved":false,"context_lines":[{"line_number":241,"context_line":".. note::"},{"line_number":242,"context_line":""},{"line_number":243,"context_line":"    The existing ``hw:cpu_allocation_policy\u003ddedicated|shared`` flavor extra"},{"line_number":244,"context_line":"    spec and image property will be **deprecated** in the \"S\" release for"},{"line_number":245,"context_line":"    removal in the \"T\" release. This extra spec will be irrelevant when flavors"},{"line_number":246,"context_line":"    can indicate the exact number of dedicated and shared CPU resources they"},{"line_number":247,"context_line":"    require."}],"source_content_type":"text/x-rst","patch_set":3,"id":"bf659307_3f69b924","line":244,"range":{"start_line":244,"start_character":4,"end_line":244,"end_character":69},"in_reply_to":"bf659307_5e4cc575","updated":"2018-03-25 13:23:26.000000000","message":"I would prefer to have a single way of requesting a quantity of dedicated CPU resources.","commit_id":"a16fd915f15b62b69f7d176ca4c9a34cea9d884e"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"032b4d9bb7b1f386d796c0fc258397b86570947c","unresolved":false,"context_lines":[{"line_number":250,"context_line":"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"},{"line_number":251,"context_line":""},{"line_number":252,"context_line":"The guest uses a non-granular request group that requests a number of dedicated"},{"line_number":253,"context_line":"CPUs and a number of shared CPUs."},{"line_number":254,"context_line":""},{"line_number":255,"context_line":"* The number of shared CPUs needed by the guest shall be stored in the existing"},{"line_number":256,"context_line":"  ``resource:VCPU\u003d$AMOUNT`` extra spec key."}],"source_content_type":"text/x-rst","patch_set":3,"id":"df7087c5_9fccf735","line":253,"updated":"2018-03-23 14:47:04.000000000","message":"I like that. Flavors that don\u0027t care about NUMA specifics shouldn\u0027t be explicitly asking to avoid them, mostly for upgrade concerns given the operator impact it could have.","commit_id":"a16fd915f15b62b69f7d176ca4c9a34cea9d884e"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"032b4d9bb7b1f386d796c0fc258397b86570947c","unresolved":false,"context_lines":[{"line_number":253,"context_line":"CPUs and a number of shared CPUs."},{"line_number":254,"context_line":""},{"line_number":255,"context_line":"* The number of shared CPUs needed by the guest shall be stored in the existing"},{"line_number":256,"context_line":"  ``resource:VCPU\u003d$AMOUNT`` extra spec key."},{"line_number":257,"context_line":"* The number of dedicated CPUs needed by the guest shall be stored in the"},{"line_number":258,"context_line":"  ``resource:PCPU\u003d$AMOUNT``"},{"line_number":259,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"df7087c5_ff03b340","line":256,"updated":"2018-03-23 14:47:04.000000000","message":"or, just leave Nova do the translation if it has a legacy flavor, like we do already right?","commit_id":"a16fd915f15b62b69f7d176ca4c9a34cea9d884e"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"35ee574703a9ea4c12d375a05436b4d0129677fb","unresolved":false,"context_lines":[{"line_number":253,"context_line":"CPUs and a number of shared CPUs."},{"line_number":254,"context_line":""},{"line_number":255,"context_line":"* The number of shared CPUs needed by the guest shall be stored in the existing"},{"line_number":256,"context_line":"  ``resource:VCPU\u003d$AMOUNT`` extra spec key."},{"line_number":257,"context_line":"* The number of dedicated CPUs needed by the guest shall be stored in the"},{"line_number":258,"context_line":"  ``resource:PCPU\u003d$AMOUNT``"},{"line_number":259,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"bf659307_3f521969","line":256,"in_reply_to":"bf659307_5e9a85c5","updated":"2018-03-25 13:23:26.000000000","message":"@cfriesen:\n\nI\u0027m generally in favor of getting rid of as many of the extra specs that deal with quantitive things as possible. In addition, extra specs that can be boiled down to a single boolean value should be deprecated and replaced with standardized traits.\n\nFor the extra specs that remain, we\u0027ll have to just handle each one by one.\n\nI\u0027m -1 on your proposed \"hw:cpu_dedicated_spec\" extra spec. While it\u0027s true that the guest instance needs a way of determining which of its guest CPUs are pinned to dedicated physical processors, we should pass that information to the guest via the normal instance metadata, not via extra specs. The virt driver can therefore be free to assign the guest CPUs to whichever physical processors is best and then write some instance metadata to impart that knowledge to the guest. This is how we confer other information to the guest, including information on device tags/metadata, so I would prefer to stick with that method of providing the guest with knowledge about its environment.","commit_id":"a16fd915f15b62b69f7d176ca4c9a34cea9d884e"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"c4bcb6f4a09ff86827250e39e24440e4231b87d9","unresolved":false,"context_lines":[{"line_number":253,"context_line":"CPUs and a number of shared CPUs."},{"line_number":254,"context_line":""},{"line_number":255,"context_line":"* The number of shared CPUs needed by the guest shall be stored in the existing"},{"line_number":256,"context_line":"  ``resource:VCPU\u003d$AMOUNT`` extra spec key."},{"line_number":257,"context_line":"* The number of dedicated CPUs needed by the guest shall be stored in the"},{"line_number":258,"context_line":"  ``resource:PCPU\u003d$AMOUNT``"},{"line_number":259,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"bf659307_f00136b1","line":256,"in_reply_to":"bf659307_5e9a85c5","updated":"2018-03-24 21:10:38.000000000","message":"My understanding is that eventually we would want to move to only using the resources element for requesting resources. We may want to keep the flavor vcpu will be virtalsed for tue guest use out og the total set requsted as pcpus ans vcpus","commit_id":"a16fd915f15b62b69f7d176ca4c9a34cea9d884e"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"35ee574703a9ea4c12d375a05436b4d0129677fb","unresolved":false,"context_lines":[{"line_number":253,"context_line":"CPUs and a number of shared CPUs."},{"line_number":254,"context_line":""},{"line_number":255,"context_line":"* The number of shared CPUs needed by the guest shall be stored in the existing"},{"line_number":256,"context_line":"  ``resource:VCPU\u003d$AMOUNT`` extra spec key."},{"line_number":257,"context_line":"* The number of dedicated CPUs needed by the guest shall be stored in the"},{"line_number":258,"context_line":"  ``resource:PCPU\u003d$AMOUNT``"},{"line_number":259,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"bf659307_ff4b41ad","line":256,"in_reply_to":"bf659307_f00136b1","updated":"2018-03-25 13:23:26.000000000","message":"@sean-k-mooney: Sorry, I\u0027m not understanding your statement above \"We may want to keep the flavor vcpu will be virtalsed for tue guest use out og the total set requsted as pcpus ans vcpus\". Could you rephrase?","commit_id":"a16fd915f15b62b69f7d176ca4c9a34cea9d884e"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"35ee574703a9ea4c12d375a05436b4d0129677fb","unresolved":false,"context_lines":[{"line_number":253,"context_line":"CPUs and a number of shared CPUs."},{"line_number":254,"context_line":""},{"line_number":255,"context_line":"* The number of shared CPUs needed by the guest shall be stored in the existing"},{"line_number":256,"context_line":"  ``resource:VCPU\u003d$AMOUNT`` extra spec key."},{"line_number":257,"context_line":"* The number of dedicated CPUs needed by the guest shall be stored in the"},{"line_number":258,"context_line":"  ``resource:PCPU\u003d$AMOUNT``"},{"line_number":259,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"bf659307_bf662951","line":256,"in_reply_to":"df7087c5_fadae1e6","updated":"2018-03-25 13:23:26.000000000","message":"I would be OK having some shim code in nova for a cycle or two to ease transition during upgrade, but I want to deprecate the hw:cpu_policy extra spec / image property in \"S\" and remove it in \"T\". We can remove the shim code in \"U\".","commit_id":"a16fd915f15b62b69f7d176ca4c9a34cea9d884e"},{"author":{"_account_id":8768,"name":"Chris Friesen","email":"chris.friesen@windriver.com","username":"cbf123"},"change_message_id":"3599acc24d7557c18f6cd3d6b3a94aeb2458c7fd","unresolved":false,"context_lines":[{"line_number":253,"context_line":"CPUs and a number of shared CPUs."},{"line_number":254,"context_line":""},{"line_number":255,"context_line":"* The number of shared CPUs needed by the guest shall be stored in the existing"},{"line_number":256,"context_line":"  ``resource:VCPU\u003d$AMOUNT`` extra spec key."},{"line_number":257,"context_line":"* The number of dedicated CPUs needed by the guest shall be stored in the"},{"line_number":258,"context_line":"  ``resource:PCPU\u003d$AMOUNT``"},{"line_number":259,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"bf659307_5e9a85c5","line":256,"in_reply_to":"df7087c5_fadae1e6","updated":"2018-03-23 17:23:40.000000000","message":"I\u0027m in favour of doing automatic translation.  I think we could avoid the explicit \"resource\" specification altogether, unless the goal is to eventually move to *just* the resource specifications and drop a bunch of the existing extra-specs.\n\nIf we wanted to support both \"shared\" and \"dedicated\" in one instance we could add a new \"hw:cpu_dedicated_spec\u003d\u003cspec\u003e\" to indicate which of the guest cpus should be \"dedicated\", and nova could translate that into a suitable resource request.","commit_id":"a16fd915f15b62b69f7d176ca4c9a34cea9d884e"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"35ee574703a9ea4c12d375a05436b4d0129677fb","unresolved":false,"context_lines":[{"line_number":253,"context_line":"CPUs and a number of shared CPUs."},{"line_number":254,"context_line":""},{"line_number":255,"context_line":"* The number of shared CPUs needed by the guest shall be stored in the existing"},{"line_number":256,"context_line":"  ``resource:VCPU\u003d$AMOUNT`` extra spec key."},{"line_number":257,"context_line":"* The number of dedicated CPUs needed by the guest shall be stored in the"},{"line_number":258,"context_line":"  ``resource:PCPU\u003d$AMOUNT``"},{"line_number":259,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"bf659307_df751dfc","line":256,"in_reply_to":"df7087c5_ff03b340","updated":"2018-03-25 13:23:26.000000000","message":"For converting flavors.vcpus into resources:VCPU\u003d$AMOUNT, yes, we already do that \"translation\".","commit_id":"a16fd915f15b62b69f7d176ca4c9a34cea9d884e"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"a83880e7ae5274df872fe540ee3f466b3f676bff","unresolved":false,"context_lines":[{"line_number":253,"context_line":"CPUs and a number of shared CPUs."},{"line_number":254,"context_line":""},{"line_number":255,"context_line":"* The number of shared CPUs needed by the guest shall be stored in the existing"},{"line_number":256,"context_line":"  ``resource:VCPU\u003d$AMOUNT`` extra spec key."},{"line_number":257,"context_line":"* The number of dedicated CPUs needed by the guest shall be stored in the"},{"line_number":258,"context_line":"  ``resource:PCPU\u003d$AMOUNT``"},{"line_number":259,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"df7087c5_fadae1e6","line":256,"in_reply_to":"df7087c5_ff03b340","updated":"2018-03-23 15:07:15.000000000","message":"if we did that we could also add an if to decide if it should add resouce:VCPU or resouce:PCPU based on the legacy hw:cpu_policy extra spec since all existing flavours should use either all dedicated cpus or all shared.","commit_id":"a16fd915f15b62b69f7d176ca4c9a34cea9d884e"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"032b4d9bb7b1f386d796c0fc258397b86570947c","unresolved":false,"context_lines":[{"line_number":259,"context_line":""},{"line_number":260,"context_line":"This will allow the placement service to filter out compute nodes that do not"},{"line_number":261,"context_line":"at least have the required number of shared or dedicated CPU resources that the"},{"line_number":262,"context_line":"guest requires."},{"line_number":263,"context_line":""},{"line_number":264,"context_line":"The providers of these resources may be the root compute node resource provider"},{"line_number":265,"context_line":"**or** a **host** NUMA node child provider, depending on whether the host"}],"source_content_type":"text/x-rst","patch_set":3,"id":"df7087c5_9f9ab711","line":262,"updated":"2018-03-23 14:47:04.000000000","message":"++","commit_id":"a16fd915f15b62b69f7d176ca4c9a34cea9d884e"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"032b4d9bb7b1f386d796c0fc258397b86570947c","unresolved":false,"context_lines":[{"line_number":263,"context_line":""},{"line_number":264,"context_line":"The providers of these resources may be the root compute node resource provider"},{"line_number":265,"context_line":"**or** a **host** NUMA node child provider, depending on whether the host"},{"line_number":266,"context_line":"system is a NUMA system."},{"line_number":267,"context_line":""},{"line_number":268,"context_line":"When the guest DOES want a virtual NUMA topology"},{"line_number":269,"context_line":"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"}],"source_content_type":"text/x-rst","patch_set":3,"id":"df7087c5_3f37eb00","line":266,"updated":"2018-03-23 14:47:04.000000000","message":"That bit concerns me. Most of the modern compute systems are now NUMA-architectured. If suddently all those compute nodes should be only placing all the VCPUs within a specific NUMA node, then that would mean that non-NUMA workloads would actually be impacted by NUMA topologies, leading potentially to NoValidHosts.\n\nAt the moment, the current strategy for placing VCPUs on NUMA architectures is \"spread\" unless you explicitly ask for NUMA.","commit_id":"a16fd915f15b62b69f7d176ca4c9a34cea9d884e"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"045d4db0370a848cbfa439fa5688f4e38f3b90f1","unresolved":false,"context_lines":[{"line_number":262,"context_line":"guest requires."},{"line_number":263,"context_line":""},{"line_number":264,"context_line":"The providers of these resources may be the root compute node resource provider"},{"line_number":265,"context_line":"**or** a **host** NUMA node child provider, depending on whether the host"},{"line_number":266,"context_line":"system is a NUMA system."},{"line_number":267,"context_line":""},{"line_number":268,"context_line":"When the guest DOES want a virtual NUMA topology"},{"line_number":269,"context_line":"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"}],"source_content_type":"text/x-rst","patch_set":3,"id":"df7087c5_3aae1981","line":266,"range":{"start_line":265,"start_character":64,"end_line":266,"end_character":24},"updated":"2018-03-23 15:10:49.000000000","message":"based on the IRC discussion we had, we both agreed on having the compute node be able to provide a non-NUMA topology if the operator decides to (details to be tackled in my spec). \nCould you please modify the above by \"whether the host is configured to provide a NUMA topology or not\" ?","commit_id":"a16fd915f15b62b69f7d176ca4c9a34cea9d884e"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"c4bcb6f4a09ff86827250e39e24440e4231b87d9","unresolved":false,"context_lines":[{"line_number":263,"context_line":""},{"line_number":264,"context_line":"The providers of these resources may be the root compute node resource provider"},{"line_number":265,"context_line":"**or** a **host** NUMA node child provider, depending on whether the host"},{"line_number":266,"context_line":"system is a NUMA system."},{"line_number":267,"context_line":""},{"line_number":268,"context_line":"When the guest DOES want a virtual NUMA topology"},{"line_number":269,"context_line":"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"}],"source_content_type":"text/x-rst","patch_set":3,"id":"bf659307_b02dfe47","line":266,"in_reply_to":"","updated":"2018-03-24 21:10:38.000000000","message":"I am not aware of any kernel args that disable numa. I think it has to be done at the uefi/bios level.\nLooking at https://www.kernel.org/doc/html/v4.14/admin-guide/kernel-parameters.html even if you could disable numa in the kernel it would likely have other negative performance impacts on the platform as a whole","commit_id":"a16fd915f15b62b69f7d176ca4c9a34cea9d884e"},{"author":{"_account_id":8768,"name":"Chris Friesen","email":"chris.friesen@windriver.com","username":"cbf123"},"change_message_id":"4ce6662a8fb216c24f01d90b7f8d663c2a2fb405","unresolved":false,"context_lines":[{"line_number":263,"context_line":""},{"line_number":264,"context_line":"The providers of these resources may be the root compute node resource provider"},{"line_number":265,"context_line":"**or** a **host** NUMA node child provider, depending on whether the host"},{"line_number":266,"context_line":"system is a NUMA system."},{"line_number":267,"context_line":""},{"line_number":268,"context_line":"When the guest DOES want a virtual NUMA topology"},{"line_number":269,"context_line":"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"}],"source_content_type":"text/x-rst","patch_set":3,"id":"bf659307_75917499","line":266,"in_reply_to":"bf659307_b02dfe47","updated":"2018-03-26 16:47:28.000000000","message":"\u003e I am not aware of any kernel args that disable numa. I think it has\n \u003e to be done at the uefi/bios level.\n\nOn X86 at least you can boot with \"numa\u003doff\".  I\u0027m not sure if this interleaves or not...that may be up to the BIOS.\n\nI think you\u0027re right though that it might make more sense to tell nova not to expose the host NUMA topology to placement.  That would still allow the underlying OS to try to optimize numa stuff as much as it can.","commit_id":"a16fd915f15b62b69f7d176ca4c9a34cea9d884e"},{"author":{"_account_id":8768,"name":"Chris Friesen","email":"chris.friesen@windriver.com","username":"cbf123"},"change_message_id":"3599acc24d7557c18f6cd3d6b3a94aeb2458c7fd","unresolved":false,"context_lines":[{"line_number":262,"context_line":"guest requires."},{"line_number":263,"context_line":""},{"line_number":264,"context_line":"The providers of these resources may be the root compute node resource provider"},{"line_number":265,"context_line":"**or** a **host** NUMA node child provider, depending on whether the host"},{"line_number":266,"context_line":"system is a NUMA system."},{"line_number":267,"context_line":""},{"line_number":268,"context_line":"When the guest DOES want a virtual NUMA topology"},{"line_number":269,"context_line":"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"}],"source_content_type":"text/x-rst","patch_set":3,"id":"bf659307_1ecbada5","line":266,"range":{"start_line":265,"start_character":64,"end_line":266,"end_character":24},"in_reply_to":"df7087c5_3aae1981","updated":"2018-03-23 17:23:40.000000000","message":"Sylvain, why do we need a config option in nova?  Why not just change the kernel boot args?","commit_id":"a16fd915f15b62b69f7d176ca4c9a34cea9d884e"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"35ee574703a9ea4c12d375a05436b4d0129677fb","unresolved":false,"context_lines":[{"line_number":262,"context_line":"guest requires."},{"line_number":263,"context_line":""},{"line_number":264,"context_line":"The providers of these resources may be the root compute node resource provider"},{"line_number":265,"context_line":"**or** a **host** NUMA node child provider, depending on whether the host"},{"line_number":266,"context_line":"system is a NUMA system."},{"line_number":267,"context_line":""},{"line_number":268,"context_line":"When the guest DOES want a virtual NUMA topology"},{"line_number":269,"context_line":"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"}],"source_content_type":"text/x-rst","patch_set":3,"id":"bf659307_9fc6c516","line":266,"range":{"start_line":265,"start_character":64,"end_line":266,"end_character":24},"in_reply_to":"df7087c5_3aae1981","updated":"2018-03-25 13:23:26.000000000","message":"Yes, I\u0027ve added a note earlier in the spec now.","commit_id":"a16fd915f15b62b69f7d176ca4c9a34cea9d884e"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"032b4d9bb7b1f386d796c0fc258397b86570947c","unresolved":false,"context_lines":[{"line_number":265,"context_line":"**or** a **host** NUMA node child provider, depending on whether the host"},{"line_number":266,"context_line":"system is a NUMA system."},{"line_number":267,"context_line":""},{"line_number":268,"context_line":"When the guest DOES want a virtual NUMA topology"},{"line_number":269,"context_line":"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"},{"line_number":270,"context_line":""},{"line_number":271,"context_line":"The guest uses a **granular request group** that requests multiple *groups* of"}],"source_content_type":"text/x-rst","patch_set":3,"id":"df7087c5_1f0b072a","line":268,"updated":"2018-03-23 14:47:04.000000000","message":"I like that, and I\u0027ll rev\u0027 https://review.openstack.org/#/c/552924/ accordingly.\n\nThe only problem is that NUMA placement makes a hard dependency on granular-resource-request spec unfortunately.","commit_id":"a16fd915f15b62b69f7d176ca4c9a34cea9d884e"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"045d4db0370a848cbfa439fa5688f4e38f3b90f1","unresolved":false,"context_lines":[{"line_number":268,"context_line":"When the guest DOES want a virtual NUMA topology"},{"line_number":269,"context_line":"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"},{"line_number":270,"context_line":""},{"line_number":271,"context_line":"The guest uses a **granular request group** that requests multiple *groups* of"},{"line_number":272,"context_line":"resources. Each group will specify a number of dedicated CPUs and a number of"},{"line_number":273,"context_line":"shared CPUs."},{"line_number":274,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"df7087c5_da003d05","line":271,"range":{"start_line":271,"start_character":17,"end_line":271,"end_character":43},"updated":"2018-03-23 15:10:49.000000000","message":"link to the already approved spec ?","commit_id":"a16fd915f15b62b69f7d176ca4c9a34cea9d884e"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"35ee574703a9ea4c12d375a05436b4d0129677fb","unresolved":false,"context_lines":[{"line_number":268,"context_line":"When the guest DOES want a virtual NUMA topology"},{"line_number":269,"context_line":"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"},{"line_number":270,"context_line":""},{"line_number":271,"context_line":"The guest uses a **granular request group** that requests multiple *groups* of"},{"line_number":272,"context_line":"resources. Each group will specify a number of dedicated CPUs and a number of"},{"line_number":273,"context_line":"shared CPUs."},{"line_number":274,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"bf659307_bfcb891c","line":271,"range":{"start_line":271,"start_character":17,"end_line":271,"end_character":43},"in_reply_to":"df7087c5_da003d05","updated":"2018-03-25 13:23:26.000000000","message":"Done","commit_id":"a16fd915f15b62b69f7d176ca4c9a34cea9d884e"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"a83880e7ae5274df872fe540ee3f466b3f676bff","unresolved":false,"context_lines":[{"line_number":286,"context_line":"to be serviced by dedicated host CPUs. The extra specs (or image properties)"},{"line_number":287,"context_line":"for the guest would look like this::"},{"line_number":288,"context_line":""},{"line_number":289,"context_line":"    resources0:PCPU\u003d2"},{"line_number":290,"context_line":"    resources1:PCPU\u003d2"},{"line_number":291,"context_line":""},{"line_number":292,"context_line":".. note::"},{"line_number":293,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"df7087c5_9a3c0594","line":290,"range":{"start_line":289,"start_character":4,"end_line":290,"end_character":21},"updated":"2018-03-23 15:07:15.000000000","message":"this is more a general question about the numbered resouce groups.\n\ndoes the above force placement to have both PCPU allocations come from different RP or is it allowed to allocate them from the same RP.\n\ni would be fine with both behaviors but just the point i wanted to raise was the fact that the libvirt driver chose map guest virtual numa nodes to different host virtual numa nodes was not an api gureentee it was just an implmentation choice.\n\nif placement gurentees that to resouce goups will never come from the same RP the spliting of guest numa node across host numa nodes will become a api guarentee because of how the virt driver will request the allocation candiates from placement.\n\ni also see advandages to placement allowing two resouce groups to be allocated form the same RP if all other constratints are met.","commit_id":"a16fd915f15b62b69f7d176ca4c9a34cea9d884e"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"d855d652ec4ab095c74d76b9f7e2d63379629b1b","unresolved":false,"context_lines":[{"line_number":286,"context_line":"to be serviced by dedicated host CPUs. The extra specs (or image properties)"},{"line_number":287,"context_line":"for the guest would look like this::"},{"line_number":288,"context_line":""},{"line_number":289,"context_line":"    resources0:PCPU\u003d2"},{"line_number":290,"context_line":"    resources1:PCPU\u003d2"},{"line_number":291,"context_line":""},{"line_number":292,"context_line":".. note::"},{"line_number":293,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"bf659307_8a83e204","line":290,"range":{"start_line":289,"start_character":4,"end_line":290,"end_character":21},"in_reply_to":"bf659307_4af86ac3","updated":"2018-03-25 18:32:59.000000000","message":"I should have backed up my statement above.  See third bullet here [1].\n\n[1] http://specs.openstack.org/openstack/nova-specs/specs/rocky/approved/granular-resource-requests.html#semantics","commit_id":"a16fd915f15b62b69f7d176ca4c9a34cea9d884e"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"c4bcb6f4a09ff86827250e39e24440e4231b87d9","unresolved":false,"context_lines":[{"line_number":287,"context_line":"for the guest would look like this::"},{"line_number":288,"context_line":""},{"line_number":289,"context_line":"    resources0:PCPU\u003d2"},{"line_number":290,"context_line":"    resources1:PCPU\u003d2"},{"line_number":291,"context_line":""},{"line_number":292,"context_line":".. note::"},{"line_number":293,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"bf659307_501ee20c","line":290,"in_reply_to":"bf659307_5e04c5c6","updated":"2018-03-24 21:10:38.000000000","message":"That is true but today openstack dose not give the user that guarantee. The libvirt driver may but that is an implementation detail. Also this point goes beyond numa to all resources request. If we  dont allow allocation in different request groups to come from the same rp you could not have two cinder volumes allocated from the same rp in the same allocation candidates request.","commit_id":"a16fd915f15b62b69f7d176ca4c9a34cea9d884e"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"aaaabf5a5ed1f97844b619dfbeca8950cd22957e","unresolved":false,"context_lines":[{"line_number":286,"context_line":"to be serviced by dedicated host CPUs. The extra specs (or image properties)"},{"line_number":287,"context_line":"for the guest would look like this::"},{"line_number":288,"context_line":""},{"line_number":289,"context_line":"    resources0:PCPU\u003d2"},{"line_number":290,"context_line":"    resources1:PCPU\u003d2"},{"line_number":291,"context_line":""},{"line_number":292,"context_line":".. note::"},{"line_number":293,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"bf659307_4af86ac3","line":290,"range":{"start_line":289,"start_character":4,"end_line":290,"end_character":21},"in_reply_to":"bf659307_9f9485ea","updated":"2018-03-25 18:30:09.000000000","message":"No, that\u0027s not how it\u0027s designed.  It only means that the two in group resources0 come from the same RP, and the two in group resources1 come from the same RP, but it doesn\u0027t dictate how those groups interrelate.  I.e. assuming NUMA node RPs 0 and 1, and all inventory available, this example would yield three candidates:\n\n- NUMA0:PCPU\u003d4\n- NUMA1:PCPU\u003d4\n- NUMA0:PCPU\u003d2,NUMA1:PCPU\u003d2\n\nWe have no syntax implemented or designed that forces placement to give us only that last option (other than explicit traits nailing us down to specific RPs).","commit_id":"a16fd915f15b62b69f7d176ca4c9a34cea9d884e"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"35ee574703a9ea4c12d375a05436b4d0129677fb","unresolved":false,"context_lines":[{"line_number":286,"context_line":"to be serviced by dedicated host CPUs. The extra specs (or image properties)"},{"line_number":287,"context_line":"for the guest would look like this::"},{"line_number":288,"context_line":""},{"line_number":289,"context_line":"    resources0:PCPU\u003d2"},{"line_number":290,"context_line":"    resources1:PCPU\u003d2"},{"line_number":291,"context_line":""},{"line_number":292,"context_line":".. note::"},{"line_number":293,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"bf659307_9f9485ea","line":290,"range":{"start_line":289,"start_character":4,"end_line":290,"end_character":21},"in_reply_to":"df7087c5_9a3c0594","updated":"2018-03-25 13:23:26.000000000","message":"Excellent questions, Sean. The way granular request groups were designed (not yet implemented though!) is that the above would require different resource providers in the same tree to provide the two quantities of 2 PCPU. So, the above granular request group would, in practice, mean \"give this guest 4 dedicated CPUs, with 2 dedicated CPUs provided by two different NUMA node child providers.","commit_id":"a16fd915f15b62b69f7d176ca4c9a34cea9d884e"},{"author":{"_account_id":8768,"name":"Chris Friesen","email":"chris.friesen@windriver.com","username":"cbf123"},"change_message_id":"3599acc24d7557c18f6cd3d6b3a94aeb2458c7fd","unresolved":false,"context_lines":[{"line_number":286,"context_line":"to be serviced by dedicated host CPUs. The extra specs (or image properties)"},{"line_number":287,"context_line":"for the guest would look like this::"},{"line_number":288,"context_line":""},{"line_number":289,"context_line":"    resources0:PCPU\u003d2"},{"line_number":290,"context_line":"    resources1:PCPU\u003d2"},{"line_number":291,"context_line":""},{"line_number":292,"context_line":".. note::"},{"line_number":293,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"bf659307_5e04c5c6","line":290,"range":{"start_line":289,"start_character":4,"end_line":290,"end_character":21},"in_reply_to":"df7087c5_9a3c0594","updated":"2018-03-23 17:23:40.000000000","message":"If we do allow them to come from the same NUMA node then it means you lose one of the benefits of multiple NUMA nodes, which is that it gives you higher overall memory bandwidth since you\u0027re going through two memory controllers.","commit_id":"a16fd915f15b62b69f7d176ca4c9a34cea9d884e"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"045d4db0370a848cbfa439fa5688f4e38f3b90f1","unresolved":false,"context_lines":[{"line_number":297,"context_line":"    is done by the virt driver in conjunction with the nova/virt/hardware.py"},{"line_number":298,"context_line":"    module and does not affect the total amount of requested resources asked"},{"line_number":299,"context_line":"    from the placement service"},{"line_number":300,"context_line":""},{"line_number":301,"context_line":"Guest tolerance for hyperthreads"},{"line_number":302,"context_line":"--------------------------------"},{"line_number":303,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"df7087c5_ba7c69b6","line":300,"updated":"2018-03-23 15:10:49.000000000","message":"You could mention my own spec if people ask for details https://review.openstack.org/#/c/552924/","commit_id":"a16fd915f15b62b69f7d176ca4c9a34cea9d884e"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"35ee574703a9ea4c12d375a05436b4d0129677fb","unresolved":false,"context_lines":[{"line_number":297,"context_line":"    is done by the virt driver in conjunction with the nova/virt/hardware.py"},{"line_number":298,"context_line":"    module and does not affect the total amount of requested resources asked"},{"line_number":299,"context_line":"    from the placement service"},{"line_number":300,"context_line":""},{"line_number":301,"context_line":"Guest tolerance for hyperthreads"},{"line_number":302,"context_line":"--------------------------------"},{"line_number":303,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"bf659307_5f9eed07","line":300,"in_reply_to":"df7087c5_ba7c69b6","updated":"2018-03-25 13:23:26.000000000","message":"It\u0027s linked at the bottom.","commit_id":"a16fd915f15b62b69f7d176ca4c9a34cea9d884e"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"a83880e7ae5274df872fe540ee3f466b3f676bff","unresolved":false,"context_lines":[{"line_number":314,"context_line":"compute nodes that do not meet the basic quantitative resource requirements"},{"line_number":315,"context_line":"indicated by the PCPU and VCPU resource classes."},{"line_number":316,"context_line":""},{"line_number":317,"context_line":"We propose to add a new standard trait called ``HW_CPU_HYPERTHREADING`` that"},{"line_number":318,"context_line":"could decorate a resource provider indicating that hyperthreading is enabled on"},{"line_number":319,"context_line":"the provider. Operators of resource-constrained systems would be able to"},{"line_number":320,"context_line":"decorate a single NUMA node resource provider on a multi-socket system with"},{"line_number":321,"context_line":"this ``HW_CPU_HYPERTHREADING`` trait to \"carve out\" a part of the host system"},{"line_number":322,"context_line":"for guests that can tolerate hyperthread siblings providing CPU resources."},{"line_number":323,"context_line":""},{"line_number":324,"context_line":"Isolating emulator threads from guest vCPU threads"}],"source_content_type":"text/x-rst","patch_set":3,"id":"df7087c5_5ade6d3e","line":321,"range":{"start_line":317,"start_character":0,"end_line":321,"end_character":74},"updated":"2018-03-23 15:07:15.000000000","message":"so to enable this we will have to ensure virt drivers are not allowed to add this automatically as an operator will not be able to remove a trait added by the virt driver as the virt dirver will just reassert the trait.","commit_id":"a16fd915f15b62b69f7d176ca4c9a34cea9d884e"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"35ee574703a9ea4c12d375a05436b4d0129677fb","unresolved":false,"context_lines":[{"line_number":314,"context_line":"compute nodes that do not meet the basic quantitative resource requirements"},{"line_number":315,"context_line":"indicated by the PCPU and VCPU resource classes."},{"line_number":316,"context_line":""},{"line_number":317,"context_line":"We propose to add a new standard trait called ``HW_CPU_HYPERTHREADING`` that"},{"line_number":318,"context_line":"could decorate a resource provider indicating that hyperthreading is enabled on"},{"line_number":319,"context_line":"the provider. Operators of resource-constrained systems would be able to"},{"line_number":320,"context_line":"decorate a single NUMA node resource provider on a multi-socket system with"},{"line_number":321,"context_line":"this ``HW_CPU_HYPERTHREADING`` trait to \"carve out\" a part of the host system"},{"line_number":322,"context_line":"for guests that can tolerate hyperthread siblings providing CPU resources."},{"line_number":323,"context_line":""},{"line_number":324,"context_line":"Isolating emulator threads from guest vCPU threads"}],"source_content_type":"text/x-rst","patch_set":3,"id":"bf659307_ffa7c14e","line":321,"range":{"start_line":317,"start_character":0,"end_line":321,"end_character":74},"in_reply_to":"df7087c5_5ade6d3e","updated":"2018-03-25 13:23:26.000000000","message":"Yes, great point. Added a note.","commit_id":"a16fd915f15b62b69f7d176ca4c9a34cea9d884e"},{"author":{"_account_id":8768,"name":"Chris Friesen","email":"chris.friesen@windriver.com","username":"cbf123"},"change_message_id":"3599acc24d7557c18f6cd3d6b3a94aeb2458c7fd","unresolved":false,"context_lines":[{"line_number":319,"context_line":"the provider. Operators of resource-constrained systems would be able to"},{"line_number":320,"context_line":"decorate a single NUMA node resource provider on a multi-socket system with"},{"line_number":321,"context_line":"this ``HW_CPU_HYPERTHREADING`` trait to \"carve out\" a part of the host system"},{"line_number":322,"context_line":"for guests that can tolerate hyperthread siblings providing CPU resources."},{"line_number":323,"context_line":""},{"line_number":324,"context_line":"Isolating emulator threads from guest vCPU threads"},{"line_number":325,"context_line":"--------------------------------------------------"}],"source_content_type":"text/x-rst","patch_set":3,"id":"bf659307_9eefbde8","line":322,"range":{"start_line":322,"start_character":0,"end_line":322,"end_character":74},"updated":"2018-03-23 17:23:40.000000000","message":"This has documentation implications...if the operator intentionally omits this trait then they should also only include one of each set of HT siblings in CONF.cpu_dedicated_set (and the sibling(s) should be omitted from CONF.cpu_shared_set as well).","commit_id":"a16fd915f15b62b69f7d176ca4c9a34cea9d884e"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"35ee574703a9ea4c12d375a05436b4d0129677fb","unresolved":false,"context_lines":[{"line_number":319,"context_line":"the provider. Operators of resource-constrained systems would be able to"},{"line_number":320,"context_line":"decorate a single NUMA node resource provider on a multi-socket system with"},{"line_number":321,"context_line":"this ``HW_CPU_HYPERTHREADING`` trait to \"carve out\" a part of the host system"},{"line_number":322,"context_line":"for guests that can tolerate hyperthread siblings providing CPU resources."},{"line_number":323,"context_line":""},{"line_number":324,"context_line":"Isolating emulator threads from guest vCPU threads"},{"line_number":325,"context_line":"--------------------------------------------------"}],"source_content_type":"text/x-rst","patch_set":3,"id":"bf659307_df919df3","line":322,"range":{"start_line":322,"start_character":0,"end_line":322,"end_character":74},"in_reply_to":"bf659307_9eefbde8","updated":"2018-03-25 13:23:26.000000000","message":"Yeah, great point, Chris. Will add a note here (and the docs section).","commit_id":"a16fd915f15b62b69f7d176ca4c9a34cea9d884e"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"2d8a52b637f533b82531f1d17b118d8f2b712f30","unresolved":false,"context_lines":[{"line_number":378,"context_line":"    resources0:PCPU\u003d8"},{"line_number":379,"context_line":"    trait0:HW_CPU_HYPERTHREADING\u003drequired"},{"line_number":380,"context_line":"    resources1:PCPU\u003d8"},{"line_number":381,"context_line":"    trait1:HW_CPU_HYPERTHREADING\u003drequired"},{"line_number":382,"context_line":""},{"line_number":383,"context_line":".. note::"},{"line_number":384,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"df7087c5_1fc9c757","line":381,"updated":"2018-03-23 14:35:00.000000000","message":"At some point we could deprecate the image property \u0027realtime_mask\u0027 to have some like a trait.\n\n trait1:HW_CPU_VSCHEDULER_FIFO","commit_id":"a16fd915f15b62b69f7d176ca4c9a34cea9d884e"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"35ee574703a9ea4c12d375a05436b4d0129677fb","unresolved":false,"context_lines":[{"line_number":378,"context_line":"    resources0:PCPU\u003d8"},{"line_number":379,"context_line":"    trait0:HW_CPU_HYPERTHREADING\u003drequired"},{"line_number":380,"context_line":"    resources1:PCPU\u003d8"},{"line_number":381,"context_line":"    trait1:HW_CPU_HYPERTHREADING\u003drequired"},{"line_number":382,"context_line":""},{"line_number":383,"context_line":".. note::"},{"line_number":384,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"bf659307_7f4ad180","line":381,"in_reply_to":"bf659307_1ee64dea","updated":"2018-03-25 13:23:26.000000000","message":"Possibly. Let\u0027s save the realtime extra specs stuff for a separate blueprint/spec/discussion.","commit_id":"a16fd915f15b62b69f7d176ca4c9a34cea9d884e"},{"author":{"_account_id":8768,"name":"Chris Friesen","email":"chris.friesen@windriver.com","username":"cbf123"},"change_message_id":"3599acc24d7557c18f6cd3d6b3a94aeb2458c7fd","unresolved":false,"context_lines":[{"line_number":378,"context_line":"    resources0:PCPU\u003d8"},{"line_number":379,"context_line":"    trait0:HW_CPU_HYPERTHREADING\u003drequired"},{"line_number":380,"context_line":"    resources1:PCPU\u003d8"},{"line_number":381,"context_line":"    trait1:HW_CPU_HYPERTHREADING\u003drequired"},{"line_number":382,"context_line":""},{"line_number":383,"context_line":".. note::"},{"line_number":384,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"bf659307_1ee64dea","line":381,"in_reply_to":"df7087c5_1fc9c757","updated":"2018-03-23 17:23:40.000000000","message":"would that provide suitable granularity?  I guess we\u0027d have to report which guest CPUs were \"realtime\" in the metadata?","commit_id":"a16fd915f15b62b69f7d176ca4c9a34cea9d884e"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"a83880e7ae5274df872fe540ee3f466b3f676bff","unresolved":false,"context_lines":[{"line_number":439,"context_line":"those hosts which have the required number of dedicated and shared CPU"},{"line_number":440,"context_line":"resources."},{"line_number":441,"context_line":""},{"line_number":442,"context_line":"Other deployer impact"},{"line_number":443,"context_line":"---------------------"},{"line_number":444,"context_line":""},{"line_number":445,"context_line":"Primarily, the impact on deployers will be documentation-related. Good"}],"source_content_type":"text/x-rst","patch_set":3,"id":"df7087c5_faf9817f","line":442,"range":{"start_line":442,"start_character":0,"end_line":442,"end_character":21},"updated":"2018-03-23 15:07:15.000000000","message":"we might want to provide some kind of nova manage command or some tooling to help with converting the old dedicated flavors to use pcpu resouce request.","commit_id":"a16fd915f15b62b69f7d176ca4c9a34cea9d884e"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"045d4db0370a848cbfa439fa5688f4e38f3b90f1","unresolved":false,"context_lines":[{"line_number":475,"context_line":"  tetsuro nakamura"},{"line_number":476,"context_line":"  jaypipes"},{"line_number":477,"context_line":"  cfriesen"},{"line_number":478,"context_line":"  stephenfin"},{"line_number":479,"context_line":""},{"line_number":480,"context_line":"Work Items"},{"line_number":481,"context_line":"----------"}],"source_content_type":"text/x-rst","patch_set":3,"id":"df7087c5_fa88a1c6","line":478,"updated":"2018-03-23 15:10:49.000000000","message":"coucou \\o","commit_id":"a16fd915f15b62b69f7d176ca4c9a34cea9d884e"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"045d4db0370a848cbfa439fa5688f4e38f3b90f1","unresolved":false,"context_lines":[{"line_number":488,"context_line":"The ``update_provider_tree`` blueprint is required for tracking CPU resources"},{"line_number":489,"context_line":"when NUMA affinity constraints are required, since the virt driver will be"},{"line_number":490,"context_line":"reporting ``VCPU`` and ``PCPU`` inventory records against the child providers"},{"line_number":491,"context_line":"representing each NUMA node."},{"line_number":492,"context_line":""},{"line_number":493,"context_line":"Testing"},{"line_number":494,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":3,"id":"df7087c5_fab18190","line":491,"updated":"2018-03-23 15:10:49.000000000","message":"and we need `granular-resource-requests` too","commit_id":"a16fd915f15b62b69f7d176ca4c9a34cea9d884e"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"35ee574703a9ea4c12d375a05436b4d0129677fb","unresolved":false,"context_lines":[{"line_number":488,"context_line":"The ``update_provider_tree`` blueprint is required for tracking CPU resources"},{"line_number":489,"context_line":"when NUMA affinity constraints are required, since the virt driver will be"},{"line_number":490,"context_line":"reporting ``VCPU`` and ``PCPU`` inventory records against the child providers"},{"line_number":491,"context_line":"representing each NUMA node."},{"line_number":492,"context_line":""},{"line_number":493,"context_line":"Testing"},{"line_number":494,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":3,"id":"bf659307_df58bd57","line":491,"in_reply_to":"df7087c5_fab18190","updated":"2018-03-25 13:23:26.000000000","message":"Done","commit_id":"a16fd915f15b62b69f7d176ca4c9a34cea9d884e"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"350578369d55eb911e73fa12e16d8455dd0ecde2","unresolved":false,"context_lines":[{"line_number":49,"context_line":""},{"line_number":50,"context_line":"**shared CPU**"},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"A physical processor that has been marked to be used for multiple guests"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"**guest CPU**"},{"line_number":55,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"bf659307_eabfd0cd","line":52,"updated":"2018-03-27 09:08:43.000000000","message":"I\u0027m thinking about CPU allocation ratios, and the fact that even if we all know to use those, we should maybe saying that PCPUs shouldn\u0027t be using that.\nI dunno, I just want to make clear that ratios can be impacting shared CPUs while dedicated CPUs can\u0027t.","commit_id":"b703c1748ef662fd9978a97921af52627ef8387e"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"350578369d55eb911e73fa12e16d8455dd0ecde2","unresolved":false,"context_lines":[{"line_number":162,"context_line":"    physical processors on a host system and the union of the dedicated and"},{"line_number":163,"context_line":"    shared pinsets shall represent the number of physical processors that has"},{"line_number":164,"context_line":"    been reserved for the host."},{"line_number":165,"context_line":""},{"line_number":166,"context_line":".. note::"},{"line_number":167,"context_line":""},{"line_number":168,"context_line":"    The existing ``CONF.vcpu_pin_set`` will be **deprecated** in the \"S\""}],"source_content_type":"text/x-rst","patch_set":4,"id":"bf659307_8a99746f","line":165,"updated":"2018-03-27 09:08:43.000000000","message":"again, I feel we should make a note on the fact that if cpu_shared_set and cpu_dedicated_set would by excluding cpu_allocation_ratio values.","commit_id":"b703c1748ef662fd9978a97921af52627ef8387e"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"345a616b99a1418f230f273932ea47dfa44a41e5","unresolved":false,"context_lines":[{"line_number":162,"context_line":"    physical processors on a host system and the union of the dedicated and"},{"line_number":163,"context_line":"    shared pinsets shall represent the number of physical processors that has"},{"line_number":164,"context_line":"    been reserved for the host."},{"line_number":165,"context_line":""},{"line_number":166,"context_line":".. note::"},{"line_number":167,"context_line":""},{"line_number":168,"context_line":"    The existing ``CONF.vcpu_pin_set`` will be **deprecated** in the \"S\""}],"source_content_type":"text/x-rst","patch_set":4,"id":"bf659307_d096e793","line":165,"in_reply_to":"bf659307_8a99746f","updated":"2018-03-29 18:55:16.000000000","message":"I don\u0027t think such a note is warranted and I don\u0027t want to add some hard-coding into the code that automatically sets allocation_ratio for inventory records of PCPU to 1.0.","commit_id":"b703c1748ef662fd9978a97921af52627ef8387e"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"350578369d55eb911e73fa12e16d8455dd0ecde2","unresolved":false,"context_lines":[{"line_number":206,"context_line":""},{"line_number":207,"context_line":"The virt driver will construct a provider tree containing two NUMA node child"},{"line_number":208,"context_line":"providers of the parent compute node resource provider and report inventory for"},{"line_number":209,"context_line":"each NUMA node separately::"},{"line_number":210,"context_line":""},{"line_number":211,"context_line":"    COMPUTE NODE provider"},{"line_number":212,"context_line":"        NUMA NODE 0 provider:"}],"source_content_type":"text/x-rst","patch_set":4,"id":"bf659307_aab558cf","line":209,"updated":"2018-03-27 09:08:43.000000000","message":"Given I\u0027m trying to cover the NUMA-specific concerns in my own spec, maybe providing the details below is not needed ?","commit_id":"b703c1748ef662fd9978a97921af52627ef8387e"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"345a616b99a1418f230f273932ea47dfa44a41e5","unresolved":false,"context_lines":[{"line_number":206,"context_line":""},{"line_number":207,"context_line":"The virt driver will construct a provider tree containing two NUMA node child"},{"line_number":208,"context_line":"providers of the parent compute node resource provider and report inventory for"},{"line_number":209,"context_line":"each NUMA node separately::"},{"line_number":210,"context_line":""},{"line_number":211,"context_line":"    COMPUTE NODE provider"},{"line_number":212,"context_line":"        NUMA NODE 0 provider:"}],"source_content_type":"text/x-rst","patch_set":4,"id":"bf659307_30eba313","line":209,"in_reply_to":"bf659307_aab558cf","updated":"2018-03-29 18:55:16.000000000","message":"Why?","commit_id":"b703c1748ef662fd9978a97921af52627ef8387e"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"aaaabf5a5ed1f97844b619dfbeca8950cd22957e","unresolved":false,"context_lines":[{"line_number":211,"context_line":"    COMPUTE NODE provider"},{"line_number":212,"context_line":"        NUMA NODE 0 provider:"},{"line_number":213,"context_line":"            PCPU:"},{"line_number":214,"context_line":"                total: 16"},{"line_number":215,"context_line":"                reserved: 2"},{"line_number":216,"context_line":"                min_unit: 1"},{"line_number":217,"context_line":"                max_unit: 16"},{"line_number":218,"context_line":"                step_size: 1"}],"source_content_type":"text/x-rst","patch_set":4,"id":"bf659307_0a54b2c9","line":215,"range":{"start_line":214,"start_character":0,"end_line":215,"end_character":27},"updated":"2018-03-25 18:30:09.000000000","message":"The virt driver knows (based on info from the hypervisor) that it has CPUs #0-47 in NUMA node 0. It parses the pinsets to figure out which are shared and which are dedicated; and the set difference is what\u0027s reserved (per note on L159-64). The decision to put the reserved count into the PCPU rather than VCPU inventory seems arbitrary and not especially important. Arguably it could just leave reserved as zero and subtract the two from the total, but this is more correct.\n\nHowever, if we\u0027re going to have reserved\u003d2 here, the total should be 18, not 16.\n\n(Perhaps it would be most correct to have a third inventory of R(eserved)CPU with total:2 and reserved:2, but that seems overly pedantic.)","commit_id":"b703c1748ef662fd9978a97921af52627ef8387e"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"350578369d55eb911e73fa12e16d8455dd0ecde2","unresolved":false,"context_lines":[{"line_number":211,"context_line":"    COMPUTE NODE provider"},{"line_number":212,"context_line":"        NUMA NODE 0 provider:"},{"line_number":213,"context_line":"            PCPU:"},{"line_number":214,"context_line":"                total: 16"},{"line_number":215,"context_line":"                reserved: 2"},{"line_number":216,"context_line":"                min_unit: 1"},{"line_number":217,"context_line":"                max_unit: 16"},{"line_number":218,"context_line":"                step_size: 1"}],"source_content_type":"text/x-rst","patch_set":4,"id":"bf659307_cadd2c15","line":215,"range":{"start_line":214,"start_character":0,"end_line":215,"end_character":27},"in_reply_to":"bf659307_0a54b2c9","updated":"2018-03-27 09:08:43.000000000","message":"I just feel it\u0027s an implementation detail that should be discussed out of that spec, and rather in an implementation patch.\n\nFor the moment, let\u0027s assume it\u0027s possible to have some \"reserved\" PCPUs, even if that sounds crazy.","commit_id":"b703c1748ef662fd9978a97921af52627ef8387e"},{"author":{"_account_id":1063,"name":"Ed Leafe","email":"ed@leafe.com","username":"ed-leafe"},"change_message_id":"65d344425b8a4bae5d4b71ad57a62d10a1c6f86c","unresolved":false,"context_lines":[{"line_number":211,"context_line":"    COMPUTE NODE provider"},{"line_number":212,"context_line":"        NUMA NODE 0 provider:"},{"line_number":213,"context_line":"            PCPU:"},{"line_number":214,"context_line":"                total: 16"},{"line_number":215,"context_line":"                reserved: 2"},{"line_number":216,"context_line":"                min_unit: 1"},{"line_number":217,"context_line":"                max_unit: 16"},{"line_number":218,"context_line":"                step_size: 1"}],"source_content_type":"text/x-rst","patch_set":4,"id":"bf659307_55b9b4e6","line":215,"range":{"start_line":214,"start_character":0,"end_line":215,"end_character":27},"in_reply_to":"bf659307_0a54b2c9","updated":"2018-03-27 13:43:28.000000000","message":"Yes, the total should be 18, so that PCPU + VCPU \u003d\u003d 48","commit_id":"b703c1748ef662fd9978a97921af52627ef8387e"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"345a616b99a1418f230f273932ea47dfa44a41e5","unresolved":false,"context_lines":[{"line_number":211,"context_line":"    COMPUTE NODE provider"},{"line_number":212,"context_line":"        NUMA NODE 0 provider:"},{"line_number":213,"context_line":"            PCPU:"},{"line_number":214,"context_line":"                total: 16"},{"line_number":215,"context_line":"                reserved: 2"},{"line_number":216,"context_line":"                min_unit: 1"},{"line_number":217,"context_line":"                max_unit: 16"},{"line_number":218,"context_line":"                step_size: 1"}],"source_content_type":"text/x-rst","patch_set":4,"id":"bf659307_eb7b0078","line":215,"range":{"start_line":214,"start_character":0,"end_line":215,"end_character":27},"in_reply_to":"bf659307_55b9b4e6","updated":"2018-03-29 18:55:16.000000000","message":"Done","commit_id":"b703c1748ef662fd9978a97921af52627ef8387e"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"350578369d55eb911e73fa12e16d8455dd0ecde2","unresolved":false,"context_lines":[{"line_number":216,"context_line":"                min_unit: 1"},{"line_number":217,"context_line":"                max_unit: 16"},{"line_number":218,"context_line":"                step_size: 1"},{"line_number":219,"context_line":"                allocation_ratio: 1.0"},{"line_number":220,"context_line":"            VCPU:"},{"line_number":221,"context_line":"                total: 30"},{"line_number":222,"context_line":"                reserved: 0"}],"source_content_type":"text/x-rst","patch_set":4,"id":"bf659307_2ad628f3","line":219,"range":{"start_line":219,"start_character":34,"end_line":219,"end_character":37},"updated":"2018-03-27 09:08:43.000000000","message":"I can\u0027t imagine a world where we would set that with other than 1.0... Like I said, we should just make sure it\u0027s impossible with Nova.","commit_id":"b703c1748ef662fd9978a97921af52627ef8387e"},{"author":{"_account_id":25625,"name":"Tetsuro Nakamura","email":"tetsuro.nakamura.bc@hco.ntt.co.jp","username":"tetsuro0907"},"change_message_id":"5af246d5a48b4bb62800e787fe3b1435ce53e8c3","unresolved":false,"context_lines":[{"line_number":272,"context_line":""},{"line_number":273,"context_line":"* The number of shared CPUs needed by the guest shall be stored in the existing"},{"line_number":274,"context_line":"  ``resource:VCPU\u003d$AMOUNT`` extra spec key."},{"line_number":275,"context_line":"* The number of dedicated CPUs needed by the guest shall be stored in the"},{"line_number":276,"context_line":"  ``resource:PCPU\u003d$AMOUNT``"},{"line_number":277,"context_line":""},{"line_number":278,"context_line":"This will allow the placement service to filter out compute nodes that do not"},{"line_number":279,"context_line":"at least have the required number of shared or dedicated CPU resources that the"}],"source_content_type":"text/x-rst","patch_set":4,"id":"bf659307_b6896b27","line":276,"range":{"start_line":275,"start_character":0,"end_line":276,"end_character":27},"updated":"2018-03-26 04:11:04.000000000","message":"When the guest does not want a NUMA topology, the guest can\u0027t have the dedicated cpu pinning feature either because the cpu pinning feature depends on NUMATopology object today. IOW, specifying \"hw:cpu_policy\u003ddedicated\" implicitly means \"I want a NUMA topology with (by default) one NUMA node\".\n\n(no NUMA topology and one-NUMA-node NUMA topology are very different in today\u0027s nova terminology)","commit_id":"b703c1748ef662fd9978a97921af52627ef8387e"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"0275ad004d68124e4d000a82031a521cbf33483c","unresolved":false,"context_lines":[{"line_number":272,"context_line":""},{"line_number":273,"context_line":"* The number of shared CPUs needed by the guest shall be stored in the existing"},{"line_number":274,"context_line":"  ``resource:VCPU\u003d$AMOUNT`` extra spec key."},{"line_number":275,"context_line":"* The number of dedicated CPUs needed by the guest shall be stored in the"},{"line_number":276,"context_line":"  ``resource:PCPU\u003d$AMOUNT``"},{"line_number":277,"context_line":""},{"line_number":278,"context_line":"This will allow the placement service to filter out compute nodes that do not"},{"line_number":279,"context_line":"at least have the required number of shared or dedicated CPU resources that the"}],"source_content_type":"text/x-rst","patch_set":4,"id":"bf659307_be45ba19","line":276,"range":{"start_line":275,"start_character":0,"end_line":276,"end_character":27},"in_reply_to":"bf659307_b6896b27","updated":"2018-03-26 10:30:17.000000000","message":"I think it\u0027s an implementation detail. More of that there is no direct dependency between pinning vCPU threads on pCPUs and exposing NUMA topology for guest. I would have not ague on this point.","commit_id":"b703c1748ef662fd9978a97921af52627ef8387e"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"350578369d55eb911e73fa12e16d8455dd0ecde2","unresolved":false,"context_lines":[{"line_number":272,"context_line":""},{"line_number":273,"context_line":"* The number of shared CPUs needed by the guest shall be stored in the existing"},{"line_number":274,"context_line":"  ``resource:VCPU\u003d$AMOUNT`` extra spec key."},{"line_number":275,"context_line":"* The number of dedicated CPUs needed by the guest shall be stored in the"},{"line_number":276,"context_line":"  ``resource:PCPU\u003d$AMOUNT``"},{"line_number":277,"context_line":""},{"line_number":278,"context_line":"This will allow the placement service to filter out compute nodes that do not"},{"line_number":279,"context_line":"at least have the required number of shared or dedicated CPU resources that the"}],"source_content_type":"text/x-rst","patch_set":4,"id":"bf659307_8a0e548b","line":276,"range":{"start_line":275,"start_character":0,"end_line":276,"end_character":27},"in_reply_to":"bf659307_be45ba19","updated":"2018-03-27 09:08:43.000000000","message":"I think we should rather discuss that in https://review.openstack.org/#/c/552924/\n\nAnd I agree with Sahid, CPU pinning and guests having a NUMA topology are two different features. For some precise reason, both are related at the moment, but we can change that (and I\u0027d love that TBH)","commit_id":"b703c1748ef662fd9978a97921af52627ef8387e"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"aaaabf5a5ed1f97844b619dfbeca8950cd22957e","unresolved":false,"context_lines":[{"line_number":279,"context_line":"at least have the required number of shared or dedicated CPU resources that the"},{"line_number":280,"context_line":"guest requires."},{"line_number":281,"context_line":""},{"line_number":282,"context_line":"The providers of these resources may be the root compute node resource provider"},{"line_number":283,"context_line":"**or** a **host** NUMA node child provider, depending on whether the host"},{"line_number":284,"context_line":"system is a NUMA system."},{"line_number":285,"context_line":""},{"line_number":286,"context_line":"When the guest DOES want a virtual NUMA topology"},{"line_number":287,"context_line":"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"}],"source_content_type":"text/x-rst","patch_set":4,"id":"bf659307_ca5f9ae3","line":284,"range":{"start_line":282,"start_character":0,"end_line":284,"end_character":24},"updated":"2018-03-25 18:30:09.000000000","message":"I think I\u0027m echoing Sylvain\u0027s concern here, but just to be clear:\nUnless we do some kind of translation from un-numbered to numbered request groups, this will land all of the CPUs on the *same* NUMA node. And I don\u0027t think that\u0027s what we want, because we could end up reporting NoValidHosts even when the host has enough to satisfy the request  (but spread across multiple nodes).\n\nAnd to reiterate what that \"translation\" would look like: by the time we get to placement we would need to be using a separate numbered request group for each resource unit (that is, resources1\u003dVCPU:1\u0026resources2\u003dVCPU:1\u0026...). (I agree we don\u0027t want the flavor to have to say this. Perhaps the translation is triggered by the presence of some other extra spec.)","commit_id":"b703c1748ef662fd9978a97921af52627ef8387e"},{"author":{"_account_id":8768,"name":"Chris Friesen","email":"chris.friesen@windriver.com","username":"cbf123"},"change_message_id":"8f0a1449cd4b506e3b6b2a0a66ca88a8c692272c","unresolved":false,"context_lines":[{"line_number":279,"context_line":"at least have the required number of shared or dedicated CPU resources that the"},{"line_number":280,"context_line":"guest requires."},{"line_number":281,"context_line":""},{"line_number":282,"context_line":"The providers of these resources may be the root compute node resource provider"},{"line_number":283,"context_line":"**or** a **host** NUMA node child provider, depending on whether the host"},{"line_number":284,"context_line":"system is a NUMA system."},{"line_number":285,"context_line":""},{"line_number":286,"context_line":"When the guest DOES want a virtual NUMA topology"},{"line_number":287,"context_line":"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"}],"source_content_type":"text/x-rst","patch_set":4,"id":"bf659307_d57ac022","line":284,"range":{"start_line":282,"start_character":0,"end_line":284,"end_character":24},"in_reply_to":"bf659307_54ed68ed","updated":"2018-03-26 16:59:48.000000000","message":"If you have a mix of instances with VCPUs that are restricted to a single host NUMA node and other instances that are allowed to \"float\" across the compute node as a whole, then you may end up exceeding your cpu allocation ratio for a given host NUMA node.  (To be fair, these are \"shared\" CPUs, so maybe that\u0027s acceptable.)\n\nA greater problem is the issue of 4KB pages.  If I have an instance that floats across the whole compute node I have no idea how much memory it has allocated from each host NUMA node.  Thus if I have another instance that wants PCPUs and 4KB pages I cannot know whether or not it will fit.","commit_id":"b703c1748ef662fd9978a97921af52627ef8387e"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"2f14fcd9e9508f003f457d87a66175695d6a1e34","unresolved":false,"context_lines":[{"line_number":279,"context_line":"at least have the required number of shared or dedicated CPU resources that the"},{"line_number":280,"context_line":"guest requires."},{"line_number":281,"context_line":""},{"line_number":282,"context_line":"The providers of these resources may be the root compute node resource provider"},{"line_number":283,"context_line":"**or** a **host** NUMA node child provider, depending on whether the host"},{"line_number":284,"context_line":"system is a NUMA system."},{"line_number":285,"context_line":""},{"line_number":286,"context_line":"When the guest DOES want a virtual NUMA topology"},{"line_number":287,"context_line":"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"}],"source_content_type":"text/x-rst","patch_set":4,"id":"bf659307_83bc0f06","line":284,"range":{"start_line":282,"start_character":0,"end_line":284,"end_character":24},"in_reply_to":"bf659307_54ed68ed","updated":"2018-03-26 20:54:12.000000000","message":"To focus on one piece of this: saying PCPUs always belong to NUMA nodes isn\u0027t right either.  Some platforms do shared vs dedicated automatically without NUMA considerations.","commit_id":"b703c1748ef662fd9978a97921af52627ef8387e"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"350578369d55eb911e73fa12e16d8455dd0ecde2","unresolved":false,"context_lines":[{"line_number":279,"context_line":"at least have the required number of shared or dedicated CPU resources that the"},{"line_number":280,"context_line":"guest requires."},{"line_number":281,"context_line":""},{"line_number":282,"context_line":"The providers of these resources may be the root compute node resource provider"},{"line_number":283,"context_line":"**or** a **host** NUMA node child provider, depending on whether the host"},{"line_number":284,"context_line":"system is a NUMA system."},{"line_number":285,"context_line":""},{"line_number":286,"context_line":"When the guest DOES want a virtual NUMA topology"},{"line_number":287,"context_line":"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"}],"source_content_type":"text/x-rst","patch_set":4,"id":"bf659307_8a5c147f","line":284,"range":{"start_line":282,"start_character":0,"end_line":284,"end_character":24},"in_reply_to":"bf659307_5cf014ca","updated":"2018-03-27 09:08:43.000000000","message":"Again, I feel https://review.openstack.org/#/c/552924/ is the best place for that discussion. \nI just don\u0027t want that convo be blocking this spec as it\u0027s unrelated.","commit_id":"b703c1748ef662fd9978a97921af52627ef8387e"},{"author":{"_account_id":8768,"name":"Chris Friesen","email":"chris.friesen@windriver.com","username":"cbf123"},"change_message_id":"36b724175f96d54978651d835348877fc8887607","unresolved":false,"context_lines":[{"line_number":279,"context_line":"at least have the required number of shared or dedicated CPU resources that the"},{"line_number":280,"context_line":"guest requires."},{"line_number":281,"context_line":""},{"line_number":282,"context_line":"The providers of these resources may be the root compute node resource provider"},{"line_number":283,"context_line":"**or** a **host** NUMA node child provider, depending on whether the host"},{"line_number":284,"context_line":"system is a NUMA system."},{"line_number":285,"context_line":""},{"line_number":286,"context_line":"When the guest DOES want a virtual NUMA topology"},{"line_number":287,"context_line":"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"}],"source_content_type":"text/x-rst","patch_set":4,"id":"bf659307_5cf014ca","line":284,"range":{"start_line":282,"start_character":0,"end_line":284,"end_character":24},"in_reply_to":"bf659307_83bc0f06","updated":"2018-03-26 22:44:03.000000000","message":"Fair enough.  Feel free to preface \"on Linux with the libvirt driver\" to my comment above.\n\nIf PCPUs don\u0027t belong to a particular NUMA node, presumably the virt driver would just report PCPUs as a per-compute-node resource rather than a per-NUMA-node resource.\n\nMore generally the problem arises if you have any resource that can be consumed both on a per-NUMA-node basis and a per-compute-node basis.","commit_id":"b703c1748ef662fd9978a97921af52627ef8387e"},{"author":{"_account_id":8768,"name":"Chris Friesen","email":"chris.friesen@windriver.com","username":"cbf123"},"change_message_id":"53ebe4fe7658fa885dff17cf5599be98f66efe81","unresolved":false,"context_lines":[{"line_number":279,"context_line":"at least have the required number of shared or dedicated CPU resources that the"},{"line_number":280,"context_line":"guest requires."},{"line_number":281,"context_line":""},{"line_number":282,"context_line":"The providers of these resources may be the root compute node resource provider"},{"line_number":283,"context_line":"**or** a **host** NUMA node child provider, depending on whether the host"},{"line_number":284,"context_line":"system is a NUMA system."},{"line_number":285,"context_line":""},{"line_number":286,"context_line":"When the guest DOES want a virtual NUMA topology"},{"line_number":287,"context_line":"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"}],"source_content_type":"text/x-rst","patch_set":4,"id":"bf659307_c772f649","line":284,"range":{"start_line":282,"start_character":0,"end_line":284,"end_character":24},"in_reply_to":"bf659307_8a5c147f","updated":"2018-03-27 16:37:45.000000000","message":"I do not agree that it is unrelated.  We need to decide how the resources will be consumed in order to search for them and consume them at the right level in placement.\n\nAnd the current behaviour makes it *impossible* to accurately account for consumed resources.","commit_id":"b703c1748ef662fd9978a97921af52627ef8387e"},{"author":{"_account_id":25625,"name":"Tetsuro Nakamura","email":"tetsuro.nakamura.bc@hco.ntt.co.jp","username":"tetsuro0907"},"change_message_id":"5af246d5a48b4bb62800e787fe3b1435ce53e8c3","unresolved":false,"context_lines":[{"line_number":279,"context_line":"at least have the required number of shared or dedicated CPU resources that the"},{"line_number":280,"context_line":"guest requires."},{"line_number":281,"context_line":""},{"line_number":282,"context_line":"The providers of these resources may be the root compute node resource provider"},{"line_number":283,"context_line":"**or** a **host** NUMA node child provider, depending on whether the host"},{"line_number":284,"context_line":"system is a NUMA system."},{"line_number":285,"context_line":""},{"line_number":286,"context_line":"When the guest DOES want a virtual NUMA topology"},{"line_number":287,"context_line":"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"}],"source_content_type":"text/x-rst","patch_set":4,"id":"bf659307_54ed68ed","line":284,"range":{"start_line":282,"start_character":0,"end_line":284,"end_character":24},"in_reply_to":"bf659307_ca5f9ae3","updated":"2018-03-26 04:11:04.000000000","message":"An alternative would be to always report VCPU (shared cpus) as inventory of COMPUTE_NODE.\n\nIn the case of no NUMA topology guest, that would be simply consistent. In the case of with NUMA topology guest, NUMATopologyFilter would filter them again with details.\n\nI\u0027m personally against to design that \"in this host this resource class is NUMA\u0027s inventory but in that host this resource class is COMPUTE_NODE\u0027s inventory\". IOW, if we can stick to design that \"VCPU is COMPUTE_NODE\u0027s inventory and PCPU is NUMA_NODE\u0027s inventory,\" I would take that design to make things simpler. IOW, resources that depends on NUMA topology should be NUMA\u0027s inventory, but resources that doesn\u0027t shouldn\u0027t be NUMA\u0027s inventory at least in the first step...","commit_id":"b703c1748ef662fd9978a97921af52627ef8387e"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"350578369d55eb911e73fa12e16d8455dd0ecde2","unresolved":false,"context_lines":[{"line_number":283,"context_line":"**or** a **host** NUMA node child provider, depending on whether the host"},{"line_number":284,"context_line":"system is a NUMA system."},{"line_number":285,"context_line":""},{"line_number":286,"context_line":"When the guest DOES want a virtual NUMA topology"},{"line_number":287,"context_line":"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"},{"line_number":288,"context_line":""},{"line_number":289,"context_line":"The guest uses a `**granular request group**`_ that requests multiple *groups* of"}],"source_content_type":"text/x-rst","patch_set":4,"id":"bf659307_2af9484c","line":286,"updated":"2018-03-27 09:08:43.000000000","message":"IMHO, you should just write some sentences explaining the possible proposed change, but keep it simple since it should be detailed in my own spec.","commit_id":"b703c1748ef662fd9978a97921af52627ef8387e"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"aaaabf5a5ed1f97844b619dfbeca8950cd22957e","unresolved":false,"context_lines":[{"line_number":293,"context_line":".. _granular request group: https://review.openstack.org/#/c/540179/"},{"line_number":294,"context_line":""},{"line_number":295,"context_line":"* The number of shared CPUs needed by the guest\u0027s virtual NUMA node ``$NODE``"},{"line_number":296,"context_line":"  shall be stored in the existing ``resource$NODE:VCPU\u003d$AMOUNT`` extra spec"},{"line_number":297,"context_line":"  key."},{"line_number":298,"context_line":"* The number of dedicated CPUs needed by the guest\u0027s virtual NUMA node"},{"line_number":299,"context_line":"  ``$NODE`` shall be stored in ``resource$NODE:PCPU\u003d$AMOUNT``"}],"source_content_type":"text/x-rst","patch_set":4,"id":"bf659307_ead7fe22","line":296,"range":{"start_line":296,"start_character":44,"end_line":296,"end_character":49},"updated":"2018-03-25 18:30:09.000000000","message":"I\u0027m strongly opposed to giving significance to the numbers in the numbered request groups.\n\nI can\u0027t tell from the text whether the intent is to make resources$NODE get allocated from NUMA node $NODE.  If so, that\u0027s bad because it locks the numbering down to NUMA-ness; but will also preclude us from using that same semantic to get resources from separate RPs under the same NUMA node (e.g. NICs).  (Furthermore, we already have a semantic that accomplishes this: Mark the NUMA node with trait CUSTOM_NUMA_NODE_0.)\n\nOtherwise (if $NODE was just meant as a mnemonic for the operator) that\u0027s almost worse because it gives the operator reason to believe that they\u0027re able to designate resources from specific NUMA nodes.\n\nIn order to allow generic affinitization, we would need to invent something to identify subtrees based on a trait, which we\u0027ve brainstormed a little but not really nailed down.","commit_id":"b703c1748ef662fd9978a97921af52627ef8387e"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"2f14fcd9e9508f003f457d87a66175695d6a1e34","unresolved":false,"context_lines":[{"line_number":293,"context_line":".. _granular request group: https://review.openstack.org/#/c/540179/"},{"line_number":294,"context_line":""},{"line_number":295,"context_line":"* The number of shared CPUs needed by the guest\u0027s virtual NUMA node ``$NODE``"},{"line_number":296,"context_line":"  shall be stored in the existing ``resource$NODE:VCPU\u003d$AMOUNT`` extra spec"},{"line_number":297,"context_line":"  key."},{"line_number":298,"context_line":"* The number of dedicated CPUs needed by the guest\u0027s virtual NUMA node"},{"line_number":299,"context_line":"  ``$NODE`` shall be stored in ``resource$NODE:PCPU\u003d$AMOUNT``"}],"source_content_type":"text/x-rst","patch_set":4,"id":"bf659307_a3211350","line":296,"range":{"start_line":296,"start_character":44,"end_line":296,"end_character":49},"in_reply_to":"bf659307_55bd50b5","updated":"2018-03-26 20:54:12.000000000","message":"Still with the namespacing objection.\n\nThat aside, I assume the guest\u0027s NUMA node number is not constrained by the host\u0027s NUMA node number from which resources are allocated?  Even so, is it something we want to nail down at the flavor level?\n\nBut still with the namespacing objection.","commit_id":"b703c1748ef662fd9978a97921af52627ef8387e"},{"author":{"_account_id":8768,"name":"Chris Friesen","email":"chris.friesen@windriver.com","username":"cbf123"},"change_message_id":"36b724175f96d54978651d835348877fc8887607","unresolved":false,"context_lines":[{"line_number":293,"context_line":".. _granular request group: https://review.openstack.org/#/c/540179/"},{"line_number":294,"context_line":""},{"line_number":295,"context_line":"* The number of shared CPUs needed by the guest\u0027s virtual NUMA node ``$NODE``"},{"line_number":296,"context_line":"  shall be stored in the existing ``resource$NODE:VCPU\u003d$AMOUNT`` extra spec"},{"line_number":297,"context_line":"  key."},{"line_number":298,"context_line":"* The number of dedicated CPUs needed by the guest\u0027s virtual NUMA node"},{"line_number":299,"context_line":"  ``$NODE`` shall be stored in ``resource$NODE:PCPU\u003d$AMOUNT``"}],"source_content_type":"text/x-rst","patch_set":4,"id":"bf659307_bc913055","line":296,"range":{"start_line":296,"start_character":44,"end_line":296,"end_character":49},"in_reply_to":"bf659307_a3211350","updated":"2018-03-26 22:44:03.000000000","message":"Correct, from what I understand some hypervisors will let you have more NUMA nodes in a guest than are present on the host.\n\nWe already allow specifying stuff in the extra-specs like \"hw:numa_cpus.0\u003d0,1\" which says that guest CPUs 0 and 1 should be placed on guest NUMA node 0.","commit_id":"b703c1748ef662fd9978a97921af52627ef8387e"},{"author":{"_account_id":8768,"name":"Chris Friesen","email":"chris.friesen@windriver.com","username":"cbf123"},"change_message_id":"8f0a1449cd4b506e3b6b2a0a66ca88a8c692272c","unresolved":false,"context_lines":[{"line_number":293,"context_line":".. _granular request group: https://review.openstack.org/#/c/540179/"},{"line_number":294,"context_line":""},{"line_number":295,"context_line":"* The number of shared CPUs needed by the guest\u0027s virtual NUMA node ``$NODE``"},{"line_number":296,"context_line":"  shall be stored in the existing ``resource$NODE:VCPU\u003d$AMOUNT`` extra spec"},{"line_number":297,"context_line":"  key."},{"line_number":298,"context_line":"* The number of dedicated CPUs needed by the guest\u0027s virtual NUMA node"},{"line_number":299,"context_line":"  ``$NODE`` shall be stored in ``resource$NODE:PCPU\u003d$AMOUNT``"}],"source_content_type":"text/x-rst","patch_set":4,"id":"bf659307_55bd50b5","line":296,"range":{"start_line":296,"start_character":44,"end_line":296,"end_character":49},"in_reply_to":"bf659307_ead7fe22","updated":"2018-03-26 16:59:48.000000000","message":"If present, I would expect $NODE in \"resource$NODE\" to map to the guest\u0027s NUMA node number.","commit_id":"b703c1748ef662fd9978a97921af52627ef8387e"},{"author":{"_account_id":1063,"name":"Ed Leafe","email":"ed@leafe.com","username":"ed-leafe"},"change_message_id":"65d344425b8a4bae5d4b71ad57a62d10a1c6f86c","unresolved":false,"context_lines":[{"line_number":306,"context_line":"to be serviced by dedicated host CPUs. The extra specs (or image properties)"},{"line_number":307,"context_line":"for the guest would look like this::"},{"line_number":308,"context_line":""},{"line_number":309,"context_line":"    resources0:PCPU\u003d2"},{"line_number":310,"context_line":"    resources1:PCPU\u003d2"},{"line_number":311,"context_line":""},{"line_number":312,"context_line":".. note::"},{"line_number":313,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"bf659307_75ddd812","line":310,"range":{"start_line":309,"start_character":0,"end_line":310,"end_character":21},"updated":"2018-03-27 13:43:28.000000000","message":"Echoing efried\u0027s concerns above, a better example might be:\n\n  resources0:PCPU\u003d2\n  resources1:PCPU\u003d1\n\nThen add some clarification that the allocation of 2PCPU could be made against *either* available node, not just node 0.","commit_id":"b703c1748ef662fd9978a97921af52627ef8387e"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"350578369d55eb911e73fa12e16d8455dd0ecde2","unresolved":false,"context_lines":[{"line_number":325,"context_line":"sibling. The ``hw:cpu_threads_policy`` existing flavor and image extra spec"},{"line_number":326,"context_line":"currently controls the behaviour of the code that does CPU pinning for a guest."},{"line_number":327,"context_line":"This pinning code is executed in the NUMATopologyFilter scheduler filter as"},{"line_number":328,"context_line":"part of the call to ``nova.virt.hardware.numa_fit_instance_to_host()``."},{"line_number":329,"context_line":""},{"line_number":330,"context_line":"We propose to leave this code unchanged. The NUMATopologyFilter shall remain in"},{"line_number":331,"context_line":"place and will continue to function as-is. The work from this spec, however,"}],"source_content_type":"text/x-rst","patch_set":4,"id":"bf659307_4ab27c96","line":328,"updated":"2018-03-27 09:08:43.000000000","message":"FWIW, I stated in my spec I don\u0027t think Placement should do this at the moment.","commit_id":"b703c1748ef662fd9978a97921af52627ef8387e"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"aaaabf5a5ed1f97844b619dfbeca8950cd22957e","unresolved":false,"context_lines":[{"line_number":381,"context_line":"The workload does not require any dedicated CPU resources nor does it specify"},{"line_number":382,"context_line":"any virtual NUMA topology::"},{"line_number":383,"context_line":""},{"line_number":384,"context_line":"    resources:VCPU\u003d2"},{"line_number":385,"context_line":""},{"line_number":386,"context_line":"2) A database server requires 8 CPU resources, and the workload needs dedicated"},{"line_number":387,"context_line":"CPU resources to minimize effects of other workloads hosted on the same"}],"source_content_type":"text/x-rst","patch_set":4,"id":"bf659307_2aedf6ee","line":384,"range":{"start_line":384,"start_character":4,"end_line":384,"end_character":20},"updated":"2018-03-25 18:30:09.000000000","message":"To reiterate: without further in(ter)vention, this will always get the two VCPUs from the same NUMA node, which may lead to NoValidHosts even when resources are available.","commit_id":"b703c1748ef662fd9978a97921af52627ef8387e"},{"author":{"_account_id":25625,"name":"Tetsuro Nakamura","email":"tetsuro.nakamura.bc@hco.ntt.co.jp","username":"tetsuro0907"},"change_message_id":"5af246d5a48b4bb62800e787fe3b1435ce53e8c3","unresolved":false,"context_lines":[{"line_number":381,"context_line":"The workload does not require any dedicated CPU resources nor does it specify"},{"line_number":382,"context_line":"any virtual NUMA topology::"},{"line_number":383,"context_line":""},{"line_number":384,"context_line":"    resources:VCPU\u003d2"},{"line_number":385,"context_line":""},{"line_number":386,"context_line":"2) A database server requires 8 CPU resources, and the workload needs dedicated"},{"line_number":387,"context_line":"CPU resources to minimize effects of other workloads hosted on the same"}],"source_content_type":"text/x-rst","patch_set":4,"id":"bf659307_d4ebb8ad","line":384,"range":{"start_line":384,"start_character":4,"end_line":384,"end_character":20},"in_reply_to":"bf659307_2aedf6ee","updated":"2018-03-26 04:11:04.000000000","message":"The concern sounds valid to me as said above.","commit_id":"b703c1748ef662fd9978a97921af52627ef8387e"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"2f14fcd9e9508f003f457d87a66175695d6a1e34","unresolved":false,"context_lines":[{"line_number":381,"context_line":"The workload does not require any dedicated CPU resources nor does it specify"},{"line_number":382,"context_line":"any virtual NUMA topology::"},{"line_number":383,"context_line":""},{"line_number":384,"context_line":"    resources:VCPU\u003d2"},{"line_number":385,"context_line":""},{"line_number":386,"context_line":"2) A database server requires 8 CPU resources, and the workload needs dedicated"},{"line_number":387,"context_line":"CPU resources to minimize effects of other workloads hosted on the same"}],"source_content_type":"text/x-rst","patch_set":4,"id":"bf659307_83a96f7c","line":384,"range":{"start_line":384,"start_character":4,"end_line":384,"end_character":20},"in_reply_to":"bf659307_5ee6de18","updated":"2018-03-26 20:54:12.000000000","message":"I get that that\u0027s what you *want* to have happen.  I\u0027m saying that, as written, we have to mechanism to *make* it happen.","commit_id":"b703c1748ef662fd9978a97921af52627ef8387e"},{"author":{"_account_id":8768,"name":"Chris Friesen","email":"chris.friesen@windriver.com","username":"cbf123"},"change_message_id":"53ebe4fe7658fa885dff17cf5599be98f66efe81","unresolved":false,"context_lines":[{"line_number":381,"context_line":"The workload does not require any dedicated CPU resources nor does it specify"},{"line_number":382,"context_line":"any virtual NUMA topology::"},{"line_number":383,"context_line":""},{"line_number":384,"context_line":"    resources:VCPU\u003d2"},{"line_number":385,"context_line":""},{"line_number":386,"context_line":"2) A database server requires 8 CPU resources, and the workload needs dedicated"},{"line_number":387,"context_line":"CPU resources to minimize effects of other workloads hosted on the same"}],"source_content_type":"text/x-rst","patch_set":4,"id":"bf659307_47b586cc","line":384,"range":{"start_line":384,"start_character":4,"end_line":384,"end_character":20},"in_reply_to":"bf659307_6a72e0e5","updated":"2018-03-27 16:37:45.000000000","message":"Sure, my objection only matters if placement/nova knows about more than one NUMA node on the host.","commit_id":"b703c1748ef662fd9978a97921af52627ef8387e"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"350578369d55eb911e73fa12e16d8455dd0ecde2","unresolved":false,"context_lines":[{"line_number":381,"context_line":"The workload does not require any dedicated CPU resources nor does it specify"},{"line_number":382,"context_line":"any virtual NUMA topology::"},{"line_number":383,"context_line":""},{"line_number":384,"context_line":"    resources:VCPU\u003d2"},{"line_number":385,"context_line":""},{"line_number":386,"context_line":"2) A database server requires 8 CPU resources, and the workload needs dedicated"},{"line_number":387,"context_line":"CPU resources to minimize effects of other workloads hosted on the same"}],"source_content_type":"text/x-rst","patch_set":4,"id":"bf659307_6a72e0e5","line":384,"range":{"start_line":384,"start_character":4,"end_line":384,"end_character":20},"in_reply_to":"bf659307_7c74f835","updated":"2018-03-27 09:08:43.000000000","message":"Again, that really depends on whether you configured your host to be NUMA-specific or not. Details in my spec.","commit_id":"b703c1748ef662fd9978a97921af52627ef8387e"},{"author":{"_account_id":8768,"name":"Chris Friesen","email":"chris.friesen@windriver.com","username":"cbf123"},"change_message_id":"36b724175f96d54978651d835348877fc8887607","unresolved":false,"context_lines":[{"line_number":381,"context_line":"The workload does not require any dedicated CPU resources nor does it specify"},{"line_number":382,"context_line":"any virtual NUMA topology::"},{"line_number":383,"context_line":""},{"line_number":384,"context_line":"    resources:VCPU\u003d2"},{"line_number":385,"context_line":""},{"line_number":386,"context_line":"2) A database server requires 8 CPU resources, and the workload needs dedicated"},{"line_number":387,"context_line":"CPU resources to minimize effects of other workloads hosted on the same"}],"source_content_type":"text/x-rst","patch_set":4,"id":"bf659307_7c74f835","line":384,"range":{"start_line":384,"start_character":4,"end_line":384,"end_character":20},"in_reply_to":"bf659307_83a96f7c","updated":"2018-03-26 22:44:03.000000000","message":"I actually think the behaviour of limiting it to a single NUMA node is correct (and the current nova code is wrong), since otherwise on some virt drivers (libvirt, for example) placement has no way to know how much resources were consumed from each host NUMA node.","commit_id":"b703c1748ef662fd9978a97921af52627ef8387e"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"0275ad004d68124e4d000a82031a521cbf33483c","unresolved":false,"context_lines":[{"line_number":381,"context_line":"The workload does not require any dedicated CPU resources nor does it specify"},{"line_number":382,"context_line":"any virtual NUMA topology::"},{"line_number":383,"context_line":""},{"line_number":384,"context_line":"    resources:VCPU\u003d2"},{"line_number":385,"context_line":""},{"line_number":386,"context_line":"2) A database server requires 8 CPU resources, and the workload needs dedicated"},{"line_number":387,"context_line":"CPU resources to minimize effects of other workloads hosted on the same"}],"source_content_type":"text/x-rst","patch_set":4,"id":"bf659307_5ee6de18","line":384,"range":{"start_line":384,"start_character":4,"end_line":384,"end_character":20},"in_reply_to":"bf659307_d4ebb8ad","updated":"2018-03-26 10:30:17.000000000","message":"No no... The vCPUs will be pinned to the whole set of pCPUs listed in cpu_shared_set.","commit_id":"b703c1748ef662fd9978a97921af52627ef8387e"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"aaaabf5a5ed1f97844b619dfbeca8950cd22957e","unresolved":false,"context_lines":[{"line_number":387,"context_line":"CPU resources to minimize effects of other workloads hosted on the same"},{"line_number":388,"context_line":"hardware. The workload does not specify any virtual NUMA topology::"},{"line_number":389,"context_line":""},{"line_number":390,"context_line":"    resources:PCPU\u003d8"},{"line_number":391,"context_line":""},{"line_number":392,"context_line":"3) A virtual network function running a packet-core processing application"},{"line_number":393,"context_line":"requires 12 CPU resources. 10 of those CPU resources should be pinned to"}],"source_content_type":"text/x-rst","patch_set":4,"id":"bf659307_eac05e53","line":390,"range":{"start_line":390,"start_character":4,"end_line":390,"end_character":20},"updated":"2018-03-25 18:30:09.000000000","message":"ditto","commit_id":"b703c1748ef662fd9978a97921af52627ef8387e"},{"author":{"_account_id":25625,"name":"Tetsuro Nakamura","email":"tetsuro.nakamura.bc@hco.ntt.co.jp","username":"tetsuro0907"},"change_message_id":"5af246d5a48b4bb62800e787fe3b1435ce53e8c3","unresolved":false,"context_lines":[{"line_number":387,"context_line":"CPU resources to minimize effects of other workloads hosted on the same"},{"line_number":388,"context_line":"hardware. The workload does not specify any virtual NUMA topology::"},{"line_number":389,"context_line":""},{"line_number":390,"context_line":"    resources:PCPU\u003d8"},{"line_number":391,"context_line":""},{"line_number":392,"context_line":"3) A virtual network function running a packet-core processing application"},{"line_number":393,"context_line":"requires 12 CPU resources. 10 of those CPU resources should be pinned to"}],"source_content_type":"text/x-rst","patch_set":4,"id":"bf659307_94cd405f","line":390,"range":{"start_line":390,"start_character":4,"end_line":390,"end_character":20},"in_reply_to":"bf659307_eac05e53","updated":"2018-03-26 04:11:04.000000000","message":"In this case, I think it is okay. specifying dedicated PCPUs without explicitly specifying numa topology means \"I want one NUMA node\" as mentioned above.","commit_id":"b703c1748ef662fd9978a97921af52627ef8387e"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"aaaabf5a5ed1f97844b619dfbeca8950cd22957e","unresolved":false,"context_lines":[{"line_number":397,"context_line":"siblings (in other words, it wants full cores for its dedicated CPU"},{"line_number":398,"context_line":"resources)::"},{"line_number":399,"context_line":""},{"line_number":400,"context_line":"    resources:PCPU\u003d10"},{"line_number":401,"context_line":"    resources:VCPU\u003d2"},{"line_number":402,"context_line":"    trait:HW_CPU_HYPERTHREADING\u003dforbidden"},{"line_number":403,"context_line":""},{"line_number":404,"context_line":"4) A virtual radio access network function needs 16 CPU resources, all of which"}],"source_content_type":"text/x-rst","patch_set":4,"id":"bf659307_8ab522f1","line":401,"range":{"start_line":400,"start_character":4,"end_line":401,"end_character":20},"updated":"2018-03-25 18:30:09.000000000","message":"In this case, the PCPU resources will always come from the same RP, and the VCPU resources will always come from the same RP, but those two RPs may or may not be the same.","commit_id":"b703c1748ef662fd9978a97921af52627ef8387e"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"2f14fcd9e9508f003f457d87a66175695d6a1e34","unresolved":false,"context_lines":[{"line_number":397,"context_line":"siblings (in other words, it wants full cores for its dedicated CPU"},{"line_number":398,"context_line":"resources)::"},{"line_number":399,"context_line":""},{"line_number":400,"context_line":"    resources:PCPU\u003d10"},{"line_number":401,"context_line":"    resources:VCPU\u003d2"},{"line_number":402,"context_line":"    trait:HW_CPU_HYPERTHREADING\u003dforbidden"},{"line_number":403,"context_line":""},{"line_number":404,"context_line":"4) A virtual radio access network function needs 16 CPU resources, all of which"}],"source_content_type":"text/x-rst","patch_set":4,"id":"bf659307_c6abf5d3","line":401,"range":{"start_line":400,"start_character":4,"end_line":401,"end_character":20},"in_reply_to":"bf659307_74550c50","updated":"2018-03-26 20:54:12.000000000","message":"Yes, in this case if we want all 12 CPUs to come from the same NUMA node, we should use a single granular group, e.g.\n\n resources1:PCPU\u003d10\n resources1:VCPU\u003d2","commit_id":"b703c1748ef662fd9978a97921af52627ef8387e"},{"author":{"_account_id":25625,"name":"Tetsuro Nakamura","email":"tetsuro.nakamura.bc@hco.ntt.co.jp","username":"tetsuro0907"},"change_message_id":"5af246d5a48b4bb62800e787fe3b1435ce53e8c3","unresolved":false,"context_lines":[{"line_number":397,"context_line":"siblings (in other words, it wants full cores for its dedicated CPU"},{"line_number":398,"context_line":"resources)::"},{"line_number":399,"context_line":""},{"line_number":400,"context_line":"    resources:PCPU\u003d10"},{"line_number":401,"context_line":"    resources:VCPU\u003d2"},{"line_number":402,"context_line":"    trait:HW_CPU_HYPERTHREADING\u003dforbidden"},{"line_number":403,"context_line":""},{"line_number":404,"context_line":"4) A virtual radio access network function needs 16 CPU resources, all of which"}],"source_content_type":"text/x-rst","patch_set":4,"id":"bf659307_74550c50","line":401,"range":{"start_line":400,"start_character":4,"end_line":401,"end_character":20},"in_reply_to":"bf659307_8ab522f1","updated":"2018-03-26 04:11:04.000000000","message":"Again, this is \"I want one NUMA node\", so this is also where the granular request flourish, I think?","commit_id":"b703c1748ef662fd9978a97921af52627ef8387e"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"aaaabf5a5ed1f97844b619dfbeca8950cd22957e","unresolved":false,"context_lines":[{"line_number":406,"context_line":"specifies a particular 2 socket, 4 core, 2 thread per core virtual NUMA"},{"line_number":407,"context_line":"topology::"},{"line_number":408,"context_line":""},{"line_number":409,"context_line":"    resources0:PCPU\u003d8"},{"line_number":410,"context_line":"    trait0:HW_CPU_HYPERTHREADING\u003drequired"},{"line_number":411,"context_line":"    resources1:PCPU\u003d8"},{"line_number":412,"context_line":"    trait1:HW_CPU_HYPERTHREADING\u003drequired"},{"line_number":413,"context_line":""},{"line_number":414,"context_line":".. note::"},{"line_number":415,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"bf659307_aaba66db","line":412,"range":{"start_line":409,"start_character":0,"end_line":412,"end_character":41},"updated":"2018-03-25 18:30:09.000000000","message":"To reiterate: nothing guarantees that the groups of 8 PCPUs will come from different RPs.","commit_id":"b703c1748ef662fd9978a97921af52627ef8387e"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"2f14fcd9e9508f003f457d87a66175695d6a1e34","unresolved":false,"context_lines":[{"line_number":406,"context_line":"specifies a particular 2 socket, 4 core, 2 thread per core virtual NUMA"},{"line_number":407,"context_line":"topology::"},{"line_number":408,"context_line":""},{"line_number":409,"context_line":"    resources0:PCPU\u003d8"},{"line_number":410,"context_line":"    trait0:HW_CPU_HYPERTHREADING\u003drequired"},{"line_number":411,"context_line":"    resources1:PCPU\u003d8"},{"line_number":412,"context_line":"    trait1:HW_CPU_HYPERTHREADING\u003drequired"},{"line_number":413,"context_line":""},{"line_number":414,"context_line":".. note::"},{"line_number":415,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"bf659307_a697e190","line":412,"range":{"start_line":409,"start_character":0,"end_line":412,"end_character":41},"in_reply_to":"bf659307_172db294","updated":"2018-03-26 20:54:12.000000000","message":"Well, I kinda thought we were trying to *replace* the NUMATopologyFilter.  If it\u0027s still going to be in play, then yeah, it could be used to winnow down to just the candidates that split the resources across multiple NUMA nodes.","commit_id":"b703c1748ef662fd9978a97921af52627ef8387e"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"345a616b99a1418f230f273932ea47dfa44a41e5","unresolved":false,"context_lines":[{"line_number":406,"context_line":"specifies a particular 2 socket, 4 core, 2 thread per core virtual NUMA"},{"line_number":407,"context_line":"topology::"},{"line_number":408,"context_line":""},{"line_number":409,"context_line":"    resources0:PCPU\u003d8"},{"line_number":410,"context_line":"    trait0:HW_CPU_HYPERTHREADING\u003drequired"},{"line_number":411,"context_line":"    resources1:PCPU\u003d8"},{"line_number":412,"context_line":"    trait1:HW_CPU_HYPERTHREADING\u003drequired"},{"line_number":413,"context_line":""},{"line_number":414,"context_line":".. note::"},{"line_number":415,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"bf659307_0bb514cd","line":412,"range":{"start_line":409,"start_character":0,"end_line":412,"end_character":41},"in_reply_to":"bf659307_3cbd20b7","updated":"2018-03-29 18:55:16.000000000","message":"Yes, what @cfriesen says here is 100% correct.","commit_id":"b703c1748ef662fd9978a97921af52627ef8387e"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"b310ad251a82248a73057a0dcd4eeab678510c9d","unresolved":false,"context_lines":[{"line_number":406,"context_line":"specifies a particular 2 socket, 4 core, 2 thread per core virtual NUMA"},{"line_number":407,"context_line":"topology::"},{"line_number":408,"context_line":""},{"line_number":409,"context_line":"    resources0:PCPU\u003d8"},{"line_number":410,"context_line":"    trait0:HW_CPU_HYPERTHREADING\u003drequired"},{"line_number":411,"context_line":"    resources1:PCPU\u003d8"},{"line_number":412,"context_line":"    trait1:HW_CPU_HYPERTHREADING\u003drequired"},{"line_number":413,"context_line":""},{"line_number":414,"context_line":".. note::"},{"line_number":415,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"bf659307_ea7777d3","line":412,"range":{"start_line":409,"start_character":0,"end_line":412,"end_character":41},"in_reply_to":"bf659307_4443fa13","updated":"2018-03-29 22:38:05.000000000","message":"Making the decision about how placement\u0027s granular syntax will work based on which is the more popular NUMA use case \u003d\u003d FAIL.\n\nWe thought through the granular semantic thoroughly at the time and decided on the \"allow to land together\" behavior for reasons.  If we want to provide the power to \"force request group 1 and request group 2 to land on different providers,\" it should be done by adding syntactic feature like ?separate_providers\u003dresources1,resources2","commit_id":"b703c1748ef662fd9978a97921af52627ef8387e"},{"author":{"_account_id":8768,"name":"Chris Friesen","email":"chris.friesen@windriver.com","username":"cbf123"},"change_message_id":"8e67fdb65868841d6e6415e3bf09a8684d573ac0","unresolved":false,"context_lines":[{"line_number":406,"context_line":"specifies a particular 2 socket, 4 core, 2 thread per core virtual NUMA"},{"line_number":407,"context_line":"topology::"},{"line_number":408,"context_line":""},{"line_number":409,"context_line":"    resources0:PCPU\u003d8"},{"line_number":410,"context_line":"    trait0:HW_CPU_HYPERTHREADING\u003drequired"},{"line_number":411,"context_line":"    resources1:PCPU\u003d8"},{"line_number":412,"context_line":"    trait1:HW_CPU_HYPERTHREADING\u003drequired"},{"line_number":413,"context_line":""},{"line_number":414,"context_line":".. note::"},{"line_number":415,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"bf659307_da925a57","line":412,"range":{"start_line":409,"start_character":0,"end_line":412,"end_character":41},"in_reply_to":"bf659307_5515d79a","updated":"2018-04-02 14:50:58.000000000","message":"\u003e That\u0027s what we decided to use to signify whether the resources\n \u003e *within one request group* must come from the same provider.  For\n \u003e the unnumbered group, it\u0027s False; for numbered groups, it\u0027s True.\n\nDoes that mean we need to use numbered groups for single-numa-node guests with \"dedicated\" guest CPUs and hugepages to enforce that their resources come from the same provider?","commit_id":"b703c1748ef662fd9978a97921af52627ef8387e"},{"author":{"_account_id":8768,"name":"Chris Friesen","email":"chris.friesen@windriver.com","username":"cbf123"},"change_message_id":"66bda73d88a900589e849df26bdf32965e1ab8c5","unresolved":false,"context_lines":[{"line_number":406,"context_line":"specifies a particular 2 socket, 4 core, 2 thread per core virtual NUMA"},{"line_number":407,"context_line":"topology::"},{"line_number":408,"context_line":""},{"line_number":409,"context_line":"    resources0:PCPU\u003d8"},{"line_number":410,"context_line":"    trait0:HW_CPU_HYPERTHREADING\u003drequired"},{"line_number":411,"context_line":"    resources1:PCPU\u003d8"},{"line_number":412,"context_line":"    trait1:HW_CPU_HYPERTHREADING\u003drequired"},{"line_number":413,"context_line":""},{"line_number":414,"context_line":".. note::"},{"line_number":415,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"bf659307_4443fa13","line":412,"range":{"start_line":409,"start_character":0,"end_line":412,"end_character":41},"in_reply_to":"bf659307_8ba7e4a7","updated":"2018-03-29 20:11:35.000000000","message":"I\u0027m kind of ambivalent about that.  On the one hand, allowing them to be provided by the same provider would give additional flexibility and increase the likelihood that a given request can be met.  (Not to mention allowing virtual topologies that cannot be satisfied by the physical topologies, which can be useful for experimenting.)\n\nOn the other hand, if I ask for a multi-NUMA-node instance because I want higher aggregate memory bandwidth, I\u0027ll likely be unhappy if both virtual NUMA nodes end up on the same physical NUMA node and thus sharing the same memory bandwidth.\n\nNot sure which is more important.  I\u0027d suggest introducing memory bandwidth as a resource in placement, but I don\u0027t think that\u0027s possible in linux yet. :)","commit_id":"b703c1748ef662fd9978a97921af52627ef8387e"},{"author":{"_account_id":8768,"name":"Chris Friesen","email":"chris.friesen@windriver.com","username":"cbf123"},"change_message_id":"36b724175f96d54978651d835348877fc8887607","unresolved":false,"context_lines":[{"line_number":406,"context_line":"specifies a particular 2 socket, 4 core, 2 thread per core virtual NUMA"},{"line_number":407,"context_line":"topology::"},{"line_number":408,"context_line":""},{"line_number":409,"context_line":"    resources0:PCPU\u003d8"},{"line_number":410,"context_line":"    trait0:HW_CPU_HYPERTHREADING\u003drequired"},{"line_number":411,"context_line":"    resources1:PCPU\u003d8"},{"line_number":412,"context_line":"    trait1:HW_CPU_HYPERTHREADING\u003drequired"},{"line_number":413,"context_line":""},{"line_number":414,"context_line":".. note::"},{"line_number":415,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"bf659307_3cbd20b7","line":412,"range":{"start_line":409,"start_character":0,"end_line":412,"end_character":41},"in_reply_to":"bf659307_a697e190","updated":"2018-03-26 22:44:03.000000000","message":"It\u0027s not practical to replace NUMATopologyFilter in placement...what we\u0027re trying to do is filter out hosts that placement knows won\u0027t work, then NUMATopologyFilter will filter out additional ones that won\u0027t work for more subtle reasons.","commit_id":"b703c1748ef662fd9978a97921af52627ef8387e"},{"author":{"_account_id":25625,"name":"Tetsuro Nakamura","email":"tetsuro.nakamura.bc@hco.ntt.co.jp","username":"tetsuro0907"},"change_message_id":"5af246d5a48b4bb62800e787fe3b1435ce53e8c3","unresolved":false,"context_lines":[{"line_number":406,"context_line":"specifies a particular 2 socket, 4 core, 2 thread per core virtual NUMA"},{"line_number":407,"context_line":"topology::"},{"line_number":408,"context_line":""},{"line_number":409,"context_line":"    resources0:PCPU\u003d8"},{"line_number":410,"context_line":"    trait0:HW_CPU_HYPERTHREADING\u003drequired"},{"line_number":411,"context_line":"    resources1:PCPU\u003d8"},{"line_number":412,"context_line":"    trait1:HW_CPU_HYPERTHREADING\u003drequired"},{"line_number":413,"context_line":""},{"line_number":414,"context_line":".. note::"},{"line_number":415,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"bf659307_172db294","line":412,"range":{"start_line":409,"start_character":0,"end_line":412,"end_character":41},"in_reply_to":"bf659307_aaba66db","updated":"2018-03-26 04:11:04.000000000","message":"From this point of view, \"Ah, it\u0027s okay because NUMATopologyFilter would work as long as placement *over*estimates candidates.\"\nI couldn\u0027t catch why that third semantic is needed in placement, though.","commit_id":"b703c1748ef662fd9978a97921af52627ef8387e"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"345a616b99a1418f230f273932ea47dfa44a41e5","unresolved":false,"context_lines":[{"line_number":406,"context_line":"specifies a particular 2 socket, 4 core, 2 thread per core virtual NUMA"},{"line_number":407,"context_line":"topology::"},{"line_number":408,"context_line":""},{"line_number":409,"context_line":"    resources0:PCPU\u003d8"},{"line_number":410,"context_line":"    trait0:HW_CPU_HYPERTHREADING\u003drequired"},{"line_number":411,"context_line":"    resources1:PCPU\u003d8"},{"line_number":412,"context_line":"    trait1:HW_CPU_HYPERTHREADING\u003drequired"},{"line_number":413,"context_line":""},{"line_number":414,"context_line":".. note::"},{"line_number":415,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"bf659307_8ba7e4a7","line":412,"range":{"start_line":409,"start_character":0,"end_line":412,"end_character":41},"in_reply_to":"bf659307_aaba66db","updated":"2018-03-29 18:55:16.000000000","message":"To restate something from Tuesday\u0027s epic IRC discussion about this, I believe that granular request groups should explicitly mean that the resource *will* be provided be separate providers. I believe the granular request groups spec should be amended to remove the note about multiple granular request groups possibly being serviced by the same or different providers.","commit_id":"b703c1748ef662fd9978a97921af52627ef8387e"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"52c831c73f17b8eac80456c4728daaa08e49ef7d","unresolved":false,"context_lines":[{"line_number":406,"context_line":"specifies a particular 2 socket, 4 core, 2 thread per core virtual NUMA"},{"line_number":407,"context_line":"topology::"},{"line_number":408,"context_line":""},{"line_number":409,"context_line":"    resources0:PCPU\u003d8"},{"line_number":410,"context_line":"    trait0:HW_CPU_HYPERTHREADING\u003drequired"},{"line_number":411,"context_line":"    resources1:PCPU\u003d8"},{"line_number":412,"context_line":"    trait1:HW_CPU_HYPERTHREADING\u003drequired"},{"line_number":413,"context_line":""},{"line_number":414,"context_line":".. note::"},{"line_number":415,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"bf659307_5515d79a","line":412,"range":{"start_line":409,"start_character":0,"end_line":412,"end_character":41},"in_reply_to":"bf659307_d37a6ab8","updated":"2018-03-30 13:10:33.000000000","message":"That\u0027s what we decided to use to signify whether the resources *within one request group* must come from the same provider.  For the unnumbered group, it\u0027s False; for numbered groups, it\u0027s True.\n\nBy contrast, what we\u0027re talking about here is the relationship between one request group and another.  I was mulling this over in my sleep last night, and still believe the simplest thing (both for the user and for the code) is to leave inter-group unrestricted by default.\n\nIf you think we need to be able to force separation right now, we can add it to the granular design, since that\u0027s still waiting on impl.","commit_id":"b703c1748ef662fd9978a97921af52627ef8387e"},{"author":{"_account_id":25625,"name":"Tetsuro Nakamura","email":"tetsuro.nakamura.bc@hco.ntt.co.jp","username":"tetsuro0907"},"change_message_id":"82427fae9ed24938778c2659975d1ea8a04ece93","unresolved":false,"context_lines":[{"line_number":406,"context_line":"specifies a particular 2 socket, 4 core, 2 thread per core virtual NUMA"},{"line_number":407,"context_line":"topology::"},{"line_number":408,"context_line":""},{"line_number":409,"context_line":"    resources0:PCPU\u003d8"},{"line_number":410,"context_line":"    trait0:HW_CPU_HYPERTHREADING\u003drequired"},{"line_number":411,"context_line":"    resources1:PCPU\u003d8"},{"line_number":412,"context_line":"    trait1:HW_CPU_HYPERTHREADING\u003drequired"},{"line_number":413,"context_line":""},{"line_number":414,"context_line":".. note::"},{"line_number":415,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"bf659307_e8c99125","line":412,"range":{"start_line":409,"start_character":0,"end_line":412,"end_character":41},"in_reply_to":"bf659307_da01fa39","updated":"2018-04-03 02:20:37.000000000","message":"Personally, I like the idea of forcing separation without any new syntactic features (which means by default it is separated).\n\n\u003e still believe the simplest thing (both for the user and for the code) is to leave inter-group unrestricted \n\nSo I don\u0027t catch the reason. The following is what I\u0027m thinking about.\n\n\nFor example, if one “prefer”s separated resources,\nHe can at first request with “resources0:PCPU\u003d2\u0026resources1:PCPU\u003d2” and get\n\n  [[NUMA0:PCPU\u003d2, NUMA1:PCPU\u003d2]]\n\nAnd only if it is not available, he can fall back to request with  “resources0:PCPU\u003d4” and get\n\n  [[NUMA0:PCPU\u003d4],\n   [NUMA1:PCPU\u003d4]]\n\n\nGetting both separated and unspeparated alloc_reqs within one API sounds we need another mechanism in placement client side to distinguish which alloc_req is “separated one”.\nIn terms of placement server side, the granular logic that “you can let different request groups to land on both ‘the same RP’ or ‘different RPs’” also sounds a bit complex to me.\nThat said,  (if we are going to reuse the existing logic of non-granular request) *we should check allocation usage from the different request group in ‘the same RP’ case*, while it is not needed in ‘different RPs’ case. (In this point we can never leave inter-group completely unrelated in a sense)\n\n\nIn the example, issueing two queries is controversial for the performance. But \"prefer\" is optional and performance optimization is the next step, I think?","commit_id":"b703c1748ef662fd9978a97921af52627ef8387e"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"8c2001be0295f7ba726e5d8816be03d3d0e39b89","unresolved":false,"context_lines":[{"line_number":406,"context_line":"specifies a particular 2 socket, 4 core, 2 thread per core virtual NUMA"},{"line_number":407,"context_line":"topology::"},{"line_number":408,"context_line":""},{"line_number":409,"context_line":"    resources0:PCPU\u003d8"},{"line_number":410,"context_line":"    trait0:HW_CPU_HYPERTHREADING\u003drequired"},{"line_number":411,"context_line":"    resources1:PCPU\u003d8"},{"line_number":412,"context_line":"    trait1:HW_CPU_HYPERTHREADING\u003drequired"},{"line_number":413,"context_line":""},{"line_number":414,"context_line":".. note::"},{"line_number":415,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"bf659307_da01fa39","line":412,"range":{"start_line":409,"start_character":0,"end_line":412,"end_character":41},"in_reply_to":"bf659307_da925a57","updated":"2018-04-02 15:08:40.000000000","message":"Correct","commit_id":"b703c1748ef662fd9978a97921af52627ef8387e"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"44e39772608b9c00d227c6c3eba9822cf31ba92f","unresolved":false,"context_lines":[{"line_number":406,"context_line":"specifies a particular 2 socket, 4 core, 2 thread per core virtual NUMA"},{"line_number":407,"context_line":"topology::"},{"line_number":408,"context_line":""},{"line_number":409,"context_line":"    resources0:PCPU\u003d8"},{"line_number":410,"context_line":"    trait0:HW_CPU_HYPERTHREADING\u003drequired"},{"line_number":411,"context_line":"    resources1:PCPU\u003d8"},{"line_number":412,"context_line":"    trait1:HW_CPU_HYPERTHREADING\u003drequired"},{"line_number":413,"context_line":""},{"line_number":414,"context_line":".. note::"},{"line_number":415,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"bf659307_6eb49e80","line":412,"range":{"start_line":409,"start_character":0,"end_line":412,"end_character":41},"in_reply_to":"bf659307_e8c99125","updated":"2018-04-03 13:39:41.000000000","message":"\u003e For example, if one “prefer”s separated resources,\n \u003e He can at first request with “resources0:PCPU\u003d2\u0026resources1:PCPU\u003d2”\n \u003e and get\n \u003e \n \u003e [[NUMA0:PCPU\u003d2, NUMA1:PCPU\u003d2]]\n \u003e \n \u003e And only if it is not available, he can fall back to request with \n \u003e “resources0:PCPU\u003d4” and get\n \u003e \n \u003e [[NUMA0:PCPU\u003d4],\n \u003e [NUMA1:PCPU\u003d4]]\n\nFirst of all, if we\u0027re talking Nova use cases, we would have to invent something new flavor-wise that would signify \"try this, and if it doesn\u0027t work, try that\".  Or do you mean two different flavors and the user tries one and then the other?\n\nWith unrestricted-by-default, you use your first request with a single call to placement, get all three candidates, and do the \"preferring\" via a weigher.\n\nThe main use case separate-by-default doesn\u0027t cover is: what if I *don\u0027t care* about separation?\n\nUse case: My bigger servers have a dedicated PF per network:\n\n              CN\n             /  \\\n          PF1    PF2\n [CUSTOM_NET1]   [CUSTOM_NET2]\n\n...but my smaller servers have one PF that serves both:\n\n  CN\n  |\n  PF [CUSTOM_NET1, CUSTOM_NET2]\n\nI want an instance with two VIFs, one on each network.  With separate-by-default, I literally *can\u0027t* frame a request that will land on either host.  But with unrestricted-by-default, I can say:\n\n  resources1\u003dVIF:1\u0026required1\u003dCUSTOM_NET1\n \u0026resources2\u003dVIF:1\u0026required2\u003dCUSTOM_NET2\n\n...and I\u0027ll get two candidates, one from each host.\n\nUse case: I want two separate disks.  Don\u0027t care where they come from.\n\n resources1\u003dDISK_GB:1024\u0026resources2\u003dDISK_GB:2048\n\nWith separate-by-default, the only way this works is if a) I have two or more separate providers, and b) at least two of those providers have available capacity.\n\nUse case: Some of my hosts have NUMA, some don\u0027t.  I want to deploy an instance that does *not* require NUMA affinity, but I don\u0027t mind where it lands.  With unrestricted-by-default, I can frame a request for four VCPUs like:\n\n resources1\u003dVCPU:1\u0026resources2\u003dVCPU:1\u0026resources3\u003dVCPU:1\u0026resources4\u003dVCPU:1\n\n...and it could land on a non-NUMA host; or on anywhere from one to four NUMA nodes on a NUMA host.\n\nAnother beef I have with separate-by-default is that it only applies when the same resource class is in play.  IOW, for a request like:\n\n resources1\u003dVCPU:4,MEMORY_MB:1024\u0026resources2\u003dDISK_GB:200\n\n...all three resources are allowed to land on the same RP, right?  That\u0027s a confusing thing to document to the user.\n\nBut look, I\u0027m starting to get the feeling that I\u0027m outvoted here.\n\nWe\u0027re going to need both mechanisms eventually; it\u0027s just a matter of which one needs an extra option to make it work.  The consensus seems to be that we should do separate-by-default and add the option\n\n ?allow_same_provider\u003d1,2,3","commit_id":"b703c1748ef662fd9978a97921af52627ef8387e"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"d8b1b4229fc96aa1f283c618dbdf40671bf07f44","unresolved":false,"context_lines":[{"line_number":406,"context_line":"specifies a particular 2 socket, 4 core, 2 thread per core virtual NUMA"},{"line_number":407,"context_line":"topology::"},{"line_number":408,"context_line":""},{"line_number":409,"context_line":"    resources0:PCPU\u003d8"},{"line_number":410,"context_line":"    trait0:HW_CPU_HYPERTHREADING\u003drequired"},{"line_number":411,"context_line":"    resources1:PCPU\u003d8"},{"line_number":412,"context_line":"    trait1:HW_CPU_HYPERTHREADING\u003drequired"},{"line_number":413,"context_line":""},{"line_number":414,"context_line":".. note::"},{"line_number":415,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"bf659307_d37a6ab8","line":412,"range":{"start_line":409,"start_character":0,"end_line":412,"end_character":41},"in_reply_to":"bf659307_ea7777d3","updated":"2018-03-30 02:23:33.000000000","message":"@efried: then why is the non-granular request group\u0027s attribute called \"use_same_provider\"? ...","commit_id":"b703c1748ef662fd9978a97921af52627ef8387e"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"aaaabf5a5ed1f97844b619dfbeca8950cd22957e","unresolved":false,"context_lines":[{"line_number":554,"context_line":"  resources"},{"line_number":555,"context_line":"* Docs for user guide explaining difference between shared and dedicated CPU"},{"line_number":556,"context_line":"  resources"},{"line_number":557,"context_line":"* Docs for howthe operator can configure a single host to support guests that"},{"line_number":558,"context_line":"  tolerate hyperthread siblings as dedicated CPUs along with guests that"},{"line_number":559,"context_line":"  cannot"},{"line_number":560,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"bf659307_caa0faa8","line":557,"range":{"start_line":557,"start_character":11,"end_line":557,"end_character":17},"updated":"2018-03-25 18:30:09.000000000","message":"how the","commit_id":"b703c1748ef662fd9978a97921af52627ef8387e"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"345a616b99a1418f230f273932ea47dfa44a41e5","unresolved":false,"context_lines":[{"line_number":554,"context_line":"  resources"},{"line_number":555,"context_line":"* Docs for user guide explaining difference between shared and dedicated CPU"},{"line_number":556,"context_line":"  resources"},{"line_number":557,"context_line":"* Docs for howthe operator can configure a single host to support guests that"},{"line_number":558,"context_line":"  tolerate hyperthread siblings as dedicated CPUs along with guests that"},{"line_number":559,"context_line":"  cannot"},{"line_number":560,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"bf659307_cbcabc4c","line":557,"range":{"start_line":557,"start_character":11,"end_line":557,"end_character":17},"in_reply_to":"bf659307_caa0faa8","updated":"2018-03-29 18:55:16.000000000","message":"Done","commit_id":"b703c1748ef662fd9978a97921af52627ef8387e"},{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"4969cac6394e1638065ea67f77e4632842f994b8","unresolved":false,"context_lines":[{"line_number":33,"context_line":"We would like to both simplify the configuration of a compute node with regards"},{"line_number":34,"context_line":"to CPU resource inventory as well as make the quantitative tracking of"},{"line_number":35,"context_line":"dedicated CPU resources consistent with the tracking of shared CPU resources"},{"line_number":36,"context_line":"via the placement API."},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"Definitions"},{"line_number":39,"context_line":"-----------"}],"source_content_type":"text/x-rst","patch_set":6,"id":"bf659307_16e96de4","line":36,"updated":"2018-04-03 19:44:08.000000000","message":"three cheers for this goal","commit_id":"5219626163d0c81818cd2284614911938386e85b"},{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"4969cac6394e1638065ea67f77e4632842f994b8","unresolved":false,"context_lines":[{"line_number":35,"context_line":"dedicated CPU resources consistent with the tracking of shared CPU resources"},{"line_number":36,"context_line":"via the placement API."},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"Definitions"},{"line_number":39,"context_line":"-----------"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"**physical processor**"}],"source_content_type":"text/x-rst","patch_set":6,"id":"bf659307_d6753533","line":38,"updated":"2018-04-03 19:44:08.000000000","message":"Thank you","commit_id":"5219626163d0c81818cd2284614911938386e85b"},{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"4969cac6394e1638065ea67f77e4632842f994b8","unresolved":false,"context_lines":[{"line_number":41,"context_line":"**physical processor**"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"A single logical processor on the host machine that is associated with a"},{"line_number":44,"context_line":"physical CPU core or hyperthread"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"**dedicated CPU**"},{"line_number":47,"context_line":""}],"source_content_type":"text/x-rst","patch_set":6,"id":"bf659307_d69c556b","line":44,"updated":"2018-04-03 19:44:08.000000000","message":"It\u0027s delightful how the definition of a _physical_ thing immediately switches to _logical_.\n\nNo wonder this stuff is so fun","commit_id":"5219626163d0c81818cd2284614911938386e85b"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"181cbe01c6f86f35f5b3e07a005a0bef26d62d30","unresolved":false,"context_lines":[{"line_number":41,"context_line":"**physical processor**"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"A single logical processor on the host machine that is associated with a"},{"line_number":44,"context_line":"physical CPU core or hyperthread"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"**dedicated CPU**"},{"line_number":47,"context_line":""}],"source_content_type":"text/x-rst","patch_set":6,"id":"bf659307_ec798cc4","line":44,"in_reply_to":"","updated":"2018-04-03 22:32:57.000000000","message":"Well most people outside of cpu vendors dont know or want to know the differce between an exection unit, a \"hardware thead\", a physical cpu core, a logical cpu core and a physical processor package. Often these terms get conflated when in different audiences. so while its actually even more complicated the jay has presented here, this is a sufficient definition to discuss this topic in an orchestration context.","commit_id":"5219626163d0c81818cd2284614911938386e85b"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"7f1ad4c0a06c10fa71e6981ebe0e2f8e8ec3ef36","unresolved":false,"context_lines":[{"line_number":41,"context_line":"**physical processor**"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"A single logical processor on the host machine that is associated with a"},{"line_number":44,"context_line":"physical CPU core or hyperthread"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"**dedicated CPU**"},{"line_number":47,"context_line":""}],"source_content_type":"text/x-rst","patch_set":6,"id":"bf659307_e5988f1c","line":44,"in_reply_to":"bf659307_d69c556b","updated":"2018-04-05 17:28:22.000000000","message":"Delightful indeed, Chris :)","commit_id":"5219626163d0c81818cd2284614911938386e85b"},{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"4969cac6394e1638065ea67f77e4632842f994b8","unresolved":false,"context_lines":[{"line_number":108,"context_line":""},{"line_number":109,"context_line":"As an NFV orchestration system, I want to be able to differentiate between CPU"},{"line_number":110,"context_line":"resources that require stable performance and CPU resources that can tolerate"},{"line_number":111,"context_line":"inconsistent performance"},{"line_number":112,"context_line":""},{"line_number":113,"context_line":"As an edge cloud deployer, I want to specify which physical processors should"},{"line_number":114,"context_line":"be used for dedicated CPU and which should be used for shared CPU"}],"source_content_type":"text/x-rst","patch_set":6,"id":"bf659307_16ce4d62","line":111,"updated":"2018-04-03 19:44:08.000000000","message":"This may just be a context thing, but to me this sentence makes no sense. The cpu resources don\u0027t require/tolerate stable/inconsistent performance they provide it. There are workloads that wish to make use of resources that make different performance commitments.\n\nOr are you saying something else?","commit_id":"5219626163d0c81818cd2284614911938386e85b"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"181cbe01c6f86f35f5b3e07a005a0bef26d62d30","unresolved":false,"context_lines":[{"line_number":108,"context_line":""},{"line_number":109,"context_line":"As an NFV orchestration system, I want to be able to differentiate between CPU"},{"line_number":110,"context_line":"resources that require stable performance and CPU resources that can tolerate"},{"line_number":111,"context_line":"inconsistent performance"},{"line_number":112,"context_line":""},{"line_number":113,"context_line":"As an edge cloud deployer, I want to specify which physical processors should"},{"line_number":114,"context_line":"be used for dedicated CPU and which should be used for shared CPU"}],"source_content_type":"text/x-rst","patch_set":6,"id":"bf659307_c7890175","line":111,"in_reply_to":"","updated":"2018-04-03 22:32:57.000000000","message":"You are correct that this statement refers to the sensitivity of the workload to the determinism of the cpu resources the consume.  That said in respect to the ability for a dedicated vs shared cpu to achive a given non functional requirement with respect to stability of performance, since this spec suggest using separate resource classes for dedicated PCPUs vs shared VCPUs it can be said that by selecting allocations of PCPU instead of VCPU the orchestration system cna provide that stability guarantee independent of what the workload is. Tl:dr yes the ability to tolerate varince in cpu performance is an aspect of the vnf workload but the ability to provide an upper bound on that varince can be modles as an attribute of the resources provide.","commit_id":"5219626163d0c81818cd2284614911938386e85b"},{"author":{"_account_id":20191,"name":"Dinesh Bhor","email":"bhordinesh07@gmail.com","username":"dineshbhor"},"change_message_id":"e633c4b183c23d17a9918376c0eb867ddd5138c9","unresolved":false,"context_lines":[{"line_number":240,"context_line":"                step_size: 1"},{"line_number":241,"context_line":"                allocation_ratio: 8.0"},{"line_number":242,"context_line":""},{"line_number":243,"context_line":"Guest resource requests"},{"line_number":244,"context_line":"-----------------------"},{"line_number":245,"context_line":""},{"line_number":246,"context_line":"We propose to utilize the existing flavor ``resource:$RESOURCE_CLASS\u003d$AMOUNT``"}],"source_content_type":"text/x-rst","patch_set":6,"id":"bf659307_bb3da8de","line":243,"range":{"start_line":243,"start_character":0,"end_line":243,"end_character":23},"updated":"2018-04-09 09:23:06.000000000","message":"As pointed out in the comment [1] we want some provision to assign guest specific vcpu number for shared and dedicated vcpuset.\n\nReasons:\n* General NFV related VNFs, such as vFW and vRouter, consist of Control-plane (house-keeping process) and Data-plane (packet-core process) assigned by each vCPU separately\n* Ex.) \n    * Cisco CSR: https://www.cisco.com/c/en/us/td/docs/routers/csr1000/software/configuration/b_CSR1000v_Configuration_Guide/b_CSR1000v_Configuration_Guide_chapter_010011.html\n    * Juniper vMX: https://kb.juniper.net/InfoCenter/index?page\u003dcontent\u0026id\u003dKB32055\u0026cat\u003dNFX250\u0026actp\u003dLIST\n        * Control plane can be allocated on vCPU0 and data plane on vCPU1.\n    * Lagopus high performance OpenFlow 1.3 virtual switch (developed by NTT Labs)\n        * http://www.lagopus.org/lagopus-book/en/html/cmd-options.html#cpu-core-and-packet-processing\n* In case of Cisco CSR and Juniper vMX, Control-plane (house-keeping process) runs on the lower number guest vcpus(for ex 0) and Data-plane (packet-core process) which requires high performance runs on higher number guest vcpus(for ex 1). In this case we want guests 0th vcpu to be shared and 1st vcpu to be dedicated as data-plane runs on it. \n\n\nThere are below two approaches to implement this feature.\n\n\n1. Implement this feature as part of this spec itself and assign guests lower vcpus as shared and higher vcpus as dedicated as discussed in Rocky PTG [2]. I think we will need to make changes in virt/libvirt/driver.py-\u003e_get_guest_numa_config to generate guest_cpu_tune.vcpupin in which logic can be added to assign guests lower vcpu pin number for shared vcpuset. \n\n\n2. To make it more generic we will propose a separate spec dependent on your spec to assign guest specific vcpu number for shared and dedicated vcpuset as mentioned in the abandoned spec [3].\n\n\n[1] https://review.openstack.org/#/c/555081/2/specs/rocky/approved/cpu-resources.rst@277\n\n[2] https://etherpad.openstack.org/p/nova-ptg-rocky-placement@320\n\n[3] https://review.openstack.org/#/c/545734/10/specs/rocky/approved/mixed-cpu-policy-instance.rst@138","commit_id":"5219626163d0c81818cd2284614911938386e85b"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"5553e5737614f4510e728dc7b1f404ee2b43d8fe","unresolved":false,"context_lines":[{"line_number":240,"context_line":"                step_size: 1"},{"line_number":241,"context_line":"                allocation_ratio: 8.0"},{"line_number":242,"context_line":""},{"line_number":243,"context_line":"Guest resource requests"},{"line_number":244,"context_line":"-----------------------"},{"line_number":245,"context_line":""},{"line_number":246,"context_line":"We propose to utilize the existing flavor ``resource:$RESOURCE_CLASS\u003d$AMOUNT``"}],"source_content_type":"text/x-rst","patch_set":6,"id":"bf659307_dcf4018a","line":243,"range":{"start_line":243,"start_character":0,"end_line":243,"end_character":23},"in_reply_to":"bf659307_bb3da8de","updated":"2018-04-09 21:10:06.000000000","message":"\u003e As pointed out in the comment [1] we want some provision to assign\n \u003e guest specific vcpu number for shared and dedicated vcpuset.\n \u003e \n \u003e Reasons:\n \u003e * General NFV related VNFs, such as vFW and vRouter, consist of\n \u003e Control-plane (house-keeping process) and Data-plane (packet-core\n \u003e process) assigned by each vCPU separately\n \u003e * Ex.)\n \u003e * Cisco CSR: https://www.cisco.com/c/en/us/td/docs/routers/csr1000/software/configuration/b_CSR1000v_Configuration_Guide/b_CSR1000v_Configuration_Guide_chapter_010011.html\n \u003e * Juniper vMX: https://kb.juniper.net/InfoCenter/index?page\u003dcontent\u0026id\u003dKB32055\u0026cat\u003dNFX250\u0026actp\u003dLIST\n \u003e * Control plane can be allocated on vCPU0 and data plane on vCPU1.\n \u003e * Lagopus high performance OpenFlow 1.3 virtual switch (developed\n \u003e by NTT Labs)\n \u003e * http://www.lagopus.org/lagopus-book/en/html/cmd-options.html#cpu-core-and-packet-processing\n \u003e * In case of Cisco CSR and Juniper vMX, Control-plane\n \u003e (house-keeping process) runs on the lower number guest vcpus(for ex\n \u003e 0) and Data-plane (packet-core process) which requires high\n \u003e performance runs on higher number guest vcpus(for ex 1). In this\n \u003e case we want guests 0th vcpu to be shared and 1st vcpu to be\n \u003e dedicated as data-plane runs on it.\n \u003e \n \u003e \n \u003e There are below two approaches to implement this feature.\n \u003e \n \u003e \n \u003e 1. Implement this feature as part of this spec itself and assign\n \u003e guests lower vcpus as shared and higher vcpus as dedicated as\n \u003e discussed in Rocky PTG [2]. I think we will need to make changes in\n \u003e virt/libvirt/driver.py-\u003e_get_guest_numa_config to generate\n \u003e guest_cpu_tune.vcpupin in which logic can be added to assign guests\n \u003e lower vcpu pin number for shared vcpuset.\n \u003e \n \u003e \n \u003e 2. To make it more generic we will propose a separate spec\n \u003e dependent on your spec to assign guest specific vcpu number for\n \u003e shared and dedicated vcpuset as mentioned in the abandoned spec\n\nI would prefer the second option, actually. This specific spec is about tracking quantities of processors (either shared or dedicated) to be consumed by the guest. It isn\u0027t about *assigning* specific guest processors to either a dedicated host CPU or one of a set of host CPUs that should be used for non-dedicated work.\n\n-jay","commit_id":"5219626163d0c81818cd2284614911938386e85b"},{"author":{"_account_id":20191,"name":"Dinesh Bhor","email":"bhordinesh07@gmail.com","username":"dineshbhor"},"change_message_id":"4150dc0d562ea8114ba4126b6b32db44023ee472","unresolved":false,"context_lines":[{"line_number":240,"context_line":"                step_size: 1"},{"line_number":241,"context_line":"                allocation_ratio: 8.0"},{"line_number":242,"context_line":""},{"line_number":243,"context_line":"Guest resource requests"},{"line_number":244,"context_line":"-----------------------"},{"line_number":245,"context_line":""},{"line_number":246,"context_line":"We propose to utilize the existing flavor ``resource:$RESOURCE_CLASS\u003d$AMOUNT``"}],"source_content_type":"text/x-rst","patch_set":6,"id":"bf659307_f0ca446c","line":243,"range":{"start_line":243,"start_character":0,"end_line":243,"end_character":23},"in_reply_to":"bf659307_dcf4018a","updated":"2018-04-10 01:44:16.000000000","message":"Clear, \nThanks","commit_id":"5219626163d0c81818cd2284614911938386e85b"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"37039a8111f44a46fe44df734a1c01d9ab276564","unresolved":false,"context_lines":[{"line_number":253,"context_line":""},{"line_number":254,"context_line":"The guest may or may not want a virtual NUMA topology used for its guest CPU"},{"line_number":255,"context_line":"layout. When the guest **does not** want a virtual NUMA topology, the guest"},{"line_number":256,"context_line":"will use a **non-granular request group** to request CPU resources. When the"},{"line_number":257,"context_line":"guest **does** want a virtual NUMA topology, the guest will use a **granular"},{"line_number":258,"context_line":"request group**."},{"line_number":259,"context_line":""}],"source_content_type":"text/x-rst","patch_set":6,"id":"bf659307_64d8857a","line":256,"range":{"start_line":256,"start_character":9,"end_line":256,"end_character":10},"updated":"2018-04-11 20:07:41.000000000","message":"the (there can be only one)","commit_id":"5219626163d0c81818cd2284614911938386e85b"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"219e42c7fa59df72fc0d6fd54fdda1f7e4384995","unresolved":false,"context_lines":[{"line_number":253,"context_line":""},{"line_number":254,"context_line":"The guest may or may not want a virtual NUMA topology used for its guest CPU"},{"line_number":255,"context_line":"layout. When the guest **does not** want a virtual NUMA topology, the guest"},{"line_number":256,"context_line":"will use a **non-granular request group** to request CPU resources. When the"},{"line_number":257,"context_line":"guest **does** want a virtual NUMA topology, the guest will use a **granular"},{"line_number":258,"context_line":"request group**."},{"line_number":259,"context_line":""}],"source_content_type":"text/x-rst","patch_set":6,"id":"bf659307_e0d6a1f2","line":256,"range":{"start_line":256,"start_character":9,"end_line":256,"end_character":10},"in_reply_to":"bf659307_64d8857a","updated":"2018-04-12 16:01:36.000000000","message":"Done","commit_id":"5219626163d0c81818cd2284614911938386e85b"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"37039a8111f44a46fe44df734a1c01d9ab276564","unresolved":false,"context_lines":[{"line_number":255,"context_line":"layout. When the guest **does not** want a virtual NUMA topology, the guest"},{"line_number":256,"context_line":"will use a **non-granular request group** to request CPU resources. When the"},{"line_number":257,"context_line":"guest **does** want a virtual NUMA topology, the guest will use a **granular"},{"line_number":258,"context_line":"request group**."},{"line_number":259,"context_line":""},{"line_number":260,"context_line":".. note::"},{"line_number":261,"context_line":""}],"source_content_type":"text/x-rst","patch_set":6,"id":"bf659307_c44b9128","line":258,"updated":"2018-04-11 20:07:41.000000000","message":"Sorry, are you saying that the inclusion of CPU in numbered vs. unnumbered request group is the actual signal for using or not using NUMA?","commit_id":"5219626163d0c81818cd2284614911938386e85b"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"219e42c7fa59df72fc0d6fd54fdda1f7e4384995","unresolved":false,"context_lines":[{"line_number":255,"context_line":"layout. When the guest **does not** want a virtual NUMA topology, the guest"},{"line_number":256,"context_line":"will use a **non-granular request group** to request CPU resources. When the"},{"line_number":257,"context_line":"guest **does** want a virtual NUMA topology, the guest will use a **granular"},{"line_number":258,"context_line":"request group**."},{"line_number":259,"context_line":""},{"line_number":260,"context_line":".. note::"},{"line_number":261,"context_line":""}],"source_content_type":"text/x-rst","patch_set":6,"id":"bf659307_20fa5974","line":258,"in_reply_to":"bf659307_c44b9128","updated":"2018-04-12 16:01:36.000000000","message":"Reworded this.","commit_id":"5219626163d0c81818cd2284614911938386e85b"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"37039a8111f44a46fe44df734a1c01d9ab276564","unresolved":false,"context_lines":[{"line_number":267,"context_line":"When the guest DOES NOT want a virtual NUMA topology"},{"line_number":268,"context_line":"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"},{"line_number":269,"context_line":""},{"line_number":270,"context_line":"The guest uses a non-granular request group that requests a number of dedicated"},{"line_number":271,"context_line":"CPUs and a number of shared CPUs."},{"line_number":272,"context_line":""},{"line_number":273,"context_line":"* The number of shared CPUs needed by the guest shall be stored in the existing"}],"source_content_type":"text/x-rst","patch_set":6,"id":"bf659307_cb5ddc47","line":270,"range":{"start_line":270,"start_character":15,"end_line":270,"end_character":16},"updated":"2018-04-11 20:07:41.000000000","message":"the","commit_id":"5219626163d0c81818cd2284614911938386e85b"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"219e42c7fa59df72fc0d6fd54fdda1f7e4384995","unresolved":false,"context_lines":[{"line_number":267,"context_line":"When the guest DOES NOT want a virtual NUMA topology"},{"line_number":268,"context_line":"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"},{"line_number":269,"context_line":""},{"line_number":270,"context_line":"The guest uses a non-granular request group that requests a number of dedicated"},{"line_number":271,"context_line":"CPUs and a number of shared CPUs."},{"line_number":272,"context_line":""},{"line_number":273,"context_line":"* The number of shared CPUs needed by the guest shall be stored in the existing"}],"source_content_type":"text/x-rst","patch_set":6,"id":"bf659307_d34b35ae","line":270,"range":{"start_line":270,"start_character":15,"end_line":270,"end_character":16},"in_reply_to":"bf659307_cb5ddc47","updated":"2018-04-12 16:01:36.000000000","message":"Done","commit_id":"5219626163d0c81818cd2284614911938386e85b"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"37039a8111f44a46fe44df734a1c01d9ab276564","unresolved":false,"context_lines":[{"line_number":276,"context_line":"  ``resources:PCPU\u003d$AMOUNT``"},{"line_number":277,"context_line":""},{"line_number":278,"context_line":"This will allow the placement service to filter out compute nodes that do not"},{"line_number":279,"context_line":"at least have the required number of shared or dedicated CPU resources that the"},{"line_number":280,"context_line":"guest requires."},{"line_number":281,"context_line":""},{"line_number":282,"context_line":"The providers of these resources may be the root compute node resource provider"}],"source_content_type":"text/x-rst","patch_set":6,"id":"bf659307_6b56102d","line":279,"range":{"start_line":279,"start_character":27,"end_line":279,"end_character":71},"updated":"2018-04-11 20:07:41.000000000","message":"in one provider","commit_id":"5219626163d0c81818cd2284614911938386e85b"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"37039a8111f44a46fe44df734a1c01d9ab276564","unresolved":false,"context_lines":[{"line_number":280,"context_line":"guest requires."},{"line_number":281,"context_line":""},{"line_number":282,"context_line":"The providers of these resources may be the root compute node resource provider"},{"line_number":283,"context_line":"**or** a **host** NUMA node child provider, depending on whether the host"},{"line_number":284,"context_line":"system is a NUMA system."},{"line_number":285,"context_line":""},{"line_number":286,"context_line":"When the guest DOES want a virtual NUMA topology"}],"source_content_type":"text/x-rst","patch_set":6,"id":"bf659307_eb3780fd","line":283,"range":{"start_line":283,"start_character":7,"end_line":283,"end_character":8},"updated":"2018-04-11 20:07:41.000000000","message":"ditto: a *single* NUMA node child provider\n\n[Later] Okay, I see Sean mentioned the same thing.","commit_id":"5219626163d0c81818cd2284614911938386e85b"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"181cbe01c6f86f35f5b3e07a005a0bef26d62d30","unresolved":false,"context_lines":[{"line_number":281,"context_line":""},{"line_number":282,"context_line":"The providers of these resources may be the root compute node resource provider"},{"line_number":283,"context_line":"**or** a **host** NUMA node child provider, depending on whether the host"},{"line_number":284,"context_line":"system is a NUMA system."},{"line_number":285,"context_line":""},{"line_number":286,"context_line":"When the guest DOES want a virtual NUMA topology"},{"line_number":287,"context_line":"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"}],"source_content_type":"text/x-rst","patch_set":6,"id":"bf659307_a7bacdbd","line":284,"updated":"2018-04-03 22:32:57.000000000","message":"This indirectly prevents the creation of guests with no numa topology that do not fit on a non numa host and also do not fit on a single numa node of a numa host. The former is expected the latter is a change in behaviour that sould be in the release notes. I understand why this needs to be done to eliminate our technical debt so this is not an objection to this change but just an fyi as i know some operators will not expect this if we don\u0027t tell them up front","commit_id":"5219626163d0c81818cd2284614911938386e85b"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"37039a8111f44a46fe44df734a1c01d9ab276564","unresolved":false,"context_lines":[{"line_number":281,"context_line":""},{"line_number":282,"context_line":"The providers of these resources may be the root compute node resource provider"},{"line_number":283,"context_line":"**or** a **host** NUMA node child provider, depending on whether the host"},{"line_number":284,"context_line":"system is a NUMA system."},{"line_number":285,"context_line":""},{"line_number":286,"context_line":"When the guest DOES want a virtual NUMA topology"},{"line_number":287,"context_line":"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"}],"source_content_type":"text/x-rst","patch_set":6,"id":"bf659307_8b284497","line":284,"in_reply_to":"bf659307_853993f3","updated":"2018-04-11 20:07:41.000000000","message":"Sylvain\u0027s spec is (I think) trying to cover this use case.","commit_id":"5219626163d0c81818cd2284614911938386e85b"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"7f1ad4c0a06c10fa71e6981ebe0e2f8e8ec3ef36","unresolved":false,"context_lines":[{"line_number":281,"context_line":""},{"line_number":282,"context_line":"The providers of these resources may be the root compute node resource provider"},{"line_number":283,"context_line":"**or** a **host** NUMA node child provider, depending on whether the host"},{"line_number":284,"context_line":"system is a NUMA system."},{"line_number":285,"context_line":""},{"line_number":286,"context_line":"When the guest DOES want a virtual NUMA topology"},{"line_number":287,"context_line":"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"}],"source_content_type":"text/x-rst","patch_set":6,"id":"bf659307_853993f3","line":284,"in_reply_to":"bf659307_a7bacdbd","updated":"2018-04-05 17:28:22.000000000","message":"ok, if I respin I can add a note about that.","commit_id":"5219626163d0c81818cd2284614911938386e85b"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"37039a8111f44a46fe44df734a1c01d9ab276564","unresolved":false,"context_lines":[{"line_number":286,"context_line":"When the guest DOES want a virtual NUMA topology"},{"line_number":287,"context_line":"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"},{"line_number":288,"context_line":""},{"line_number":289,"context_line":"The guest uses a `granular request group`_ that requests multiple *groups* of"},{"line_number":290,"context_line":"resources. Each group will specify a number of dedicated CPUs and a number of"},{"line_number":291,"context_line":"shared CPUs."},{"line_number":292,"context_line":""}],"source_content_type":"text/x-rst","patch_set":6,"id":"bf659307_8b012409","line":289,"range":{"start_line":289,"start_character":66,"end_line":289,"end_character":74},"updated":"2018-04-11 20:07:41.000000000","message":"Poor word choice (groups within groups).  \"...requests multiple resources\" would be adequate.","commit_id":"5219626163d0c81818cd2284614911938386e85b"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"37039a8111f44a46fe44df734a1c01d9ab276564","unresolved":false,"context_lines":[{"line_number":290,"context_line":"resources. Each group will specify a number of dedicated CPUs and a number of"},{"line_number":291,"context_line":"shared CPUs."},{"line_number":292,"context_line":""},{"line_number":293,"context_line":".. _granular request group: https://review.openstack.org/#/c/540179/"},{"line_number":294,"context_line":""},{"line_number":295,"context_line":"* The number of shared CPUs needed by the guest\u0027s virtual NUMA node ``$NODE``"},{"line_number":296,"context_line":"  shall be stored in the existing ``resources$NODE:VCPU\u003d$AMOUNT`` extra spec"}],"source_content_type":"text/x-rst","patch_set":6,"id":"bf659307_060bc923","line":293,"range":{"start_line":293,"start_character":28,"end_line":293,"end_character":68},"updated":"2018-04-11 20:07:41.000000000","message":"May as well link to the approved spec\n\nhttp://specs.openstack.org/openstack/nova-specs/specs/rocky/approved/granular-resource-requests.html","commit_id":"5219626163d0c81818cd2284614911938386e85b"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"37039a8111f44a46fe44df734a1c01d9ab276564","unresolved":false,"context_lines":[{"line_number":292,"context_line":""},{"line_number":293,"context_line":".. _granular request group: https://review.openstack.org/#/c/540179/"},{"line_number":294,"context_line":""},{"line_number":295,"context_line":"* The number of shared CPUs needed by the guest\u0027s virtual NUMA node ``$NODE``"},{"line_number":296,"context_line":"  shall be stored in the existing ``resources$NODE:VCPU\u003d$AMOUNT`` extra spec"},{"line_number":297,"context_line":"  key."},{"line_number":298,"context_line":"* The number of dedicated CPUs needed by the guest\u0027s virtual NUMA node"},{"line_number":299,"context_line":"  ``$NODE`` shall be stored in ``resources$NODE:PCPU\u003d$AMOUNT``"},{"line_number":300,"context_line":""},{"line_number":301,"context_line":"The providers of these resources will be one or more **host** NUMA node child"},{"line_number":302,"context_line":"providers."}],"source_content_type":"text/x-rst","patch_set":6,"id":"bf659307_865d9916","line":299,"range":{"start_line":295,"start_character":0,"end_line":299,"end_character":62},"updated":"2018-04-11 20:07:41.000000000","message":"It is not clear whether the $NODE has significance.  The .. note:: below implies that we\u0027re punting on the issue of where the virt driver decides to pull the actual procs from; but these bullets here definitely imply that it will be based on looking at $NODE in the request group.  Otherwise, the number on the request group key can and should be completely arbitrary so that there is no such implication to anyone (devs, ops, admins).\n\nNB: I would not necessarily be opposed to there *being* a correlation between $NODE and where the procs are pulled from.  Though it limits usage somewhat (we can\u0027t describe an instance that we want to land on *any* NUMA node - we have to designate a *particular* one) it would be one way to satisfy affinity and anti-affinity without further invention in placement or filters.\n\nBut we have to go all or nothing, whichever way we decide.","commit_id":"5219626163d0c81818cd2284614911938386e85b"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"181cbe01c6f86f35f5b3e07a005a0bef26d62d30","unresolved":false,"context_lines":[{"line_number":304,"context_line":"As an example, suppose the guest wanted a virtual NUMA topology of 2 sockets"},{"line_number":305,"context_line":"with 2 cores in each socket. Further suppose the guest wanted all CPU resources"},{"line_number":306,"context_line":"to be serviced by dedicated host CPUs. The extra specs (or image properties)"},{"line_number":307,"context_line":"for the guest would look like this::"},{"line_number":308,"context_line":""},{"line_number":309,"context_line":"    resources0:PCPU\u003d2"},{"line_number":310,"context_line":"    resources1:PCPU\u003d2"}],"source_content_type":"text/x-rst","patch_set":6,"id":"bf659307_67335563","line":307,"updated":"2018-04-03 22:32:57.000000000","message":"Nit we might want to indicate also that the amount of virtual numa nodes in the guest will continue to be controlled by the hw:numa_nodes extra spec so that future readers don\u0027t infer that the resources extra spec actually effects how the virt driver instcts the hypervisor to virtualise the guest","commit_id":"5219626163d0c81818cd2284614911938386e85b"},{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"4969cac6394e1638065ea67f77e4632842f994b8","unresolved":false,"context_lines":[{"line_number":316,"context_line":"    or ``PCPU`` resources. The assignment (pinning) of host CPUs to guest CPUs"},{"line_number":317,"context_line":"    is done by the virt driver in conjunction with the nova/virt/hardware.py"},{"line_number":318,"context_line":"    module and does not affect the total amount of requested resources asked"},{"line_number":319,"context_line":"    from the placement service"},{"line_number":320,"context_line":""},{"line_number":321,"context_line":"Guest tolerance for hyperthreads"},{"line_number":322,"context_line":"--------------------------------"}],"source_content_type":"text/x-rst","patch_set":6,"id":"bf659307_36259109","line":319,"updated":"2018-04-03 19:44:08.000000000","message":"✔","commit_id":"5219626163d0c81818cd2284614911938386e85b"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"181cbe01c6f86f35f5b3e07a005a0bef26d62d30","unresolved":false,"context_lines":[{"line_number":316,"context_line":"    or ``PCPU`` resources. The assignment (pinning) of host CPUs to guest CPUs"},{"line_number":317,"context_line":"    is done by the virt driver in conjunction with the nova/virt/hardware.py"},{"line_number":318,"context_line":"    module and does not affect the total amount of requested resources asked"},{"line_number":319,"context_line":"    from the placement service"},{"line_number":320,"context_line":""},{"line_number":321,"context_line":"Guest tolerance for hyperthreads"},{"line_number":322,"context_line":"--------------------------------"}],"source_content_type":"text/x-rst","patch_set":6,"id":"bf659307_a7164da7","line":319,"in_reply_to":"bf659307_36259109","updated":"2018-04-03 22:32:57.000000000","message":"This kind of covers my numa_nodes comment above but more abstractly.","commit_id":"5219626163d0c81818cd2284614911938386e85b"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"37039a8111f44a46fe44df734a1c01d9ab276564","unresolved":false,"context_lines":[{"line_number":316,"context_line":"    or ``PCPU`` resources. The assignment (pinning) of host CPUs to guest CPUs"},{"line_number":317,"context_line":"    is done by the virt driver in conjunction with the nova/virt/hardware.py"},{"line_number":318,"context_line":"    module and does not affect the total amount of requested resources asked"},{"line_number":319,"context_line":"    from the placement service"},{"line_number":320,"context_line":""},{"line_number":321,"context_line":"Guest tolerance for hyperthreads"},{"line_number":322,"context_line":"--------------------------------"}],"source_content_type":"text/x-rst","patch_set":6,"id":"bf659307_c648712e","line":319,"in_reply_to":"bf659307_a7164da7","updated":"2018-04-11 20:07:41.000000000","message":"Wellll, it has to be *somewhat* relevant.  If the allocation pulled two PCPUs from each of two NUMA nodes, or pulled all four from one NUMA node, the assignment had better do the same.  Otherwise we may accept or deny requests incorrectly down the line.  (Further explanation available upon request.)","commit_id":"5219626163d0c81818cd2284614911938386e85b"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"219e42c7fa59df72fc0d6fd54fdda1f7e4384995","unresolved":false,"context_lines":[{"line_number":316,"context_line":"    or ``PCPU`` resources. The assignment (pinning) of host CPUs to guest CPUs"},{"line_number":317,"context_line":"    is done by the virt driver in conjunction with the nova/virt/hardware.py"},{"line_number":318,"context_line":"    module and does not affect the total amount of requested resources asked"},{"line_number":319,"context_line":"    from the placement service"},{"line_number":320,"context_line":""},{"line_number":321,"context_line":"Guest tolerance for hyperthreads"},{"line_number":322,"context_line":"--------------------------------"}],"source_content_type":"text/x-rst","patch_set":6,"id":"bf659307_d3f9f54d","line":319,"in_reply_to":"bf659307_c648712e","updated":"2018-04-12 16:01:36.000000000","message":"What the above is saying is that the specific NUMA cell identifier is not related to the request group identifier.","commit_id":"5219626163d0c81818cd2284614911938386e85b"},{"author":{"_account_id":8768,"name":"Chris Friesen","email":"chris.friesen@windriver.com","username":"cbf123"},"change_message_id":"2299bfd035d6fd9ee2e4e80b4792a1db57b981e7","unresolved":false,"context_lines":[{"line_number":316,"context_line":"    or ``PCPU`` resources. The assignment (pinning) of host CPUs to guest CPUs"},{"line_number":317,"context_line":"    is done by the virt driver in conjunction with the nova/virt/hardware.py"},{"line_number":318,"context_line":"    module and does not affect the total amount of requested resources asked"},{"line_number":319,"context_line":"    from the placement service"},{"line_number":320,"context_line":""},{"line_number":321,"context_line":"Guest tolerance for hyperthreads"},{"line_number":322,"context_line":"--------------------------------"}],"source_content_type":"text/x-rst","patch_set":6,"id":"bf659307_d6a7a34f","line":319,"in_reply_to":"bf659307_d3f9f54d","updated":"2018-04-12 16:34:34.000000000","message":"Presumably the request group identifier is not necessarily tied to the guest NUMA cell identifier, but we need to know the *host* NUMA cell (aka RP, I think) that the resources come from, right?","commit_id":"5219626163d0c81818cd2284614911938386e85b"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"02b2be868e1afa79a2518fec5ea7d40fc0e4b134","unresolved":false,"context_lines":[{"line_number":316,"context_line":"    or ``PCPU`` resources. The assignment (pinning) of host CPUs to guest CPUs"},{"line_number":317,"context_line":"    is done by the virt driver in conjunction with the nova/virt/hardware.py"},{"line_number":318,"context_line":"    module and does not affect the total amount of requested resources asked"},{"line_number":319,"context_line":"    from the placement service"},{"line_number":320,"context_line":""},{"line_number":321,"context_line":"Guest tolerance for hyperthreads"},{"line_number":322,"context_line":"--------------------------------"}],"source_content_type":"text/x-rst","patch_set":6,"id":"bf659307_f17991c4","line":319,"in_reply_to":"bf659307_d6a7a34f","updated":"2018-04-12 17:17:02.000000000","message":"Yes, but it\u0027s up to the virt driver to understand the mapping of resource provider UUID to NUMA node. The virt driver will see the allocation of some amount of dedicated and shared CPU resources from one of the NUMA node resource providers. It\u0027s up to the virt driver to maintain its understanding of which resource provider is which host NUMA node. But this makes sense, since it is the virt driver that will be creating the NUMA node resource provider records in the first place...","commit_id":"5219626163d0c81818cd2284614911938386e85b"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"181cbe01c6f86f35f5b3e07a005a0bef26d62d30","unresolved":false,"context_lines":[{"line_number":319,"context_line":"    from the placement service"},{"line_number":320,"context_line":""},{"line_number":321,"context_line":"Guest tolerance for hyperthreads"},{"line_number":322,"context_line":"--------------------------------"},{"line_number":323,"context_line":""},{"line_number":324,"context_line":"Certain guests have a tolerance for physical processors being a hyperthread"},{"line_number":325,"context_line":"sibling. The ``hw:cpu_threads_policy`` existing flavor and image extra spec"}],"source_content_type":"text/x-rst","patch_set":6,"id":"bf659307_4753b16b","line":322,"in_reply_to":"","updated":"2018-04-03 22:32:57.000000000","message":"+1 on this section :)\nI think this is a good balance between removing technical debt and supporting existing usage","commit_id":"5219626163d0c81818cd2284614911938386e85b"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"37039a8111f44a46fe44df734a1c01d9ab276564","unresolved":false,"context_lines":[{"line_number":387,"context_line":"CPU resources to minimize effects of other workloads hosted on the same"},{"line_number":388,"context_line":"hardware. The workload does not specify any virtual NUMA topology::"},{"line_number":389,"context_line":""},{"line_number":390,"context_line":"    resources:PCPU\u003d8"},{"line_number":391,"context_line":""},{"line_number":392,"context_line":"3) A virtual network function running a packet-core processing application"},{"line_number":393,"context_line":"requires 12 CPU resources. 10 of those CPU resources should be pinned to"}],"source_content_type":"text/x-rst","patch_set":6,"id":"bf659307_c67b9125","line":390,"range":{"start_line":390,"start_character":4,"end_line":390,"end_character":20},"updated":"2018-04-11 20:07:41.000000000","message":"This will result in all eight PCPUs coming from the same provider (whether that\u0027s the root RP or a NUMA node, depending on how the host is set up), right?","commit_id":"5219626163d0c81818cd2284614911938386e85b"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"37039a8111f44a46fe44df734a1c01d9ab276564","unresolved":false,"context_lines":[{"line_number":399,"context_line":""},{"line_number":400,"context_line":"    resources:PCPU\u003d10"},{"line_number":401,"context_line":"    resources:VCPU\u003d2"},{"line_number":402,"context_line":"    trait:HW_CPU_HYPERTHREADING\u003dforbidden"},{"line_number":403,"context_line":""},{"line_number":404,"context_line":"4) A virtual radio access network function needs 16 CPU resources, all of which"},{"line_number":405,"context_line":"require real-time guarantees and therefore dedicated host CPUs. The workload"}],"source_content_type":"text/x-rst","patch_set":6,"id":"bf659307_e6aed57f","line":402,"range":{"start_line":402,"start_character":4,"end_line":402,"end_character":41},"updated":"2018-04-11 20:07:41.000000000","message":"This is the first mention of forbidden.  We should link to the bps/specs.\n\nBUT\n\nAFAIK we only have a spec and work lined up for the placement side.  I\u0027m not aware of a bp/spec to implement flavor-to-placement translation, which would be required for what you have above.","commit_id":"5219626163d0c81818cd2284614911938386e85b"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"37039a8111f44a46fe44df734a1c01d9ab276564","unresolved":false,"context_lines":[{"line_number":418,"context_line":"    entirely up to the virt driver (nova/virt/hardware.py module) to **pin**"},{"line_number":419,"context_line":"    the host CPUs to the guest CPUs appropriately on the host system\u0027s NUMA"},{"line_number":420,"context_line":"    nodes. The placement service will return those provider trees that match"},{"line_number":421,"context_line":"    the required amount of requested PCPU resources (16 total, in 2 groups of"},{"line_number":422,"context_line":"    8). But placement does not do assignment of specific CPUs, only allocation"},{"line_number":423,"context_line":"    of CPU resource amounts to particular providers of those resources."},{"line_number":424,"context_line":""},{"line_number":425,"context_line":"Alternatives"}],"source_content_type":"text/x-rst","patch_set":6,"id":"bf659307_86bfd9a8","line":422,"range":{"start_line":421,"start_character":63,"end_line":422,"end_character":5},"updated":"2018-04-11 20:07:41.000000000","message":"or one group of 16.  Unless the 0 and 1 have significance.  Which would have to be enforced by the filter and/or driver.  Unless there\u0027s some kind of translation happening (like in Sylvain\u0027s spec).  But I don\u0027t see anything like that mentioned in here.","commit_id":"5219626163d0c81818cd2284614911938386e85b"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"37039a8111f44a46fe44df734a1c01d9ab276564","unresolved":false,"context_lines":[{"line_number":420,"context_line":"    nodes. The placement service will return those provider trees that match"},{"line_number":421,"context_line":"    the required amount of requested PCPU resources (16 total, in 2 groups of"},{"line_number":422,"context_line":"    8). But placement does not do assignment of specific CPUs, only allocation"},{"line_number":423,"context_line":"    of CPU resource amounts to particular providers of those resources."},{"line_number":424,"context_line":""},{"line_number":425,"context_line":"Alternatives"},{"line_number":426,"context_line":"------------"}],"source_content_type":"text/x-rst","patch_set":6,"id":"bf659307_e631f55a","line":423,"range":{"start_line":423,"start_character":31,"end_line":423,"end_character":51},"updated":"2018-04-11 20:07:41.000000000","message":"This is key.  The pinning *must* observe how many of which RCs were allocated from *which* particular providers.\n\nThis paragraph is a clearer and more thorough explanation of what\u0027s discussed in the note starting on L312.","commit_id":"5219626163d0c81818cd2284614911938386e85b"},{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"4969cac6394e1638065ea67f77e4632842f994b8","unresolved":false,"context_lines":[{"line_number":420,"context_line":"    nodes. The placement service will return those provider trees that match"},{"line_number":421,"context_line":"    the required amount of requested PCPU resources (16 total, in 2 groups of"},{"line_number":422,"context_line":"    8). But placement does not do assignment of specific CPUs, only allocation"},{"line_number":423,"context_line":"    of CPU resource amounts to particular providers of those resources."},{"line_number":424,"context_line":""},{"line_number":425,"context_line":"Alternatives"},{"line_number":426,"context_line":"------------"}],"source_content_type":"text/x-rst","patch_set":6,"id":"bf659307_765d4977","line":423,"updated":"2018-04-03 19:44:08.000000000","message":"✔","commit_id":"5219626163d0c81818cd2284614911938386e85b"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"181cbe01c6f86f35f5b3e07a005a0bef26d62d30","unresolved":false,"context_lines":[{"line_number":420,"context_line":"    nodes. The placement service will return those provider trees that match"},{"line_number":421,"context_line":"    the required amount of requested PCPU resources (16 total, in 2 groups of"},{"line_number":422,"context_line":"    8). But placement does not do assignment of specific CPUs, only allocation"},{"line_number":423,"context_line":"    of CPU resource amounts to particular providers of those resources."},{"line_number":424,"context_line":""},{"line_number":425,"context_line":"Alternatives"},{"line_number":426,"context_line":"------------"}],"source_content_type":"text/x-rst","patch_set":6,"id":"bf659307_278b1dc3","line":423,"in_reply_to":"","updated":"2018-04-03 22:32:57.000000000","message":"Yes so in the above the virt driver will continue to consume the hw:cpu_socket et al extra specs to configure the virtual cpu topology as part of the assignment resources to the instnce and accounting of the quantity resource allocations is delegated to placement abstractly as part of the allocation request. Thefore you are clerly delineating the responsibility for using tge resource and accounting for its use. +1","commit_id":"5219626163d0c81818cd2284614911938386e85b"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"37039a8111f44a46fe44df734a1c01d9ab276564","unresolved":false,"context_lines":[{"line_number":429,"context_line":"indicate its purpose. However, we will continue to use the ``VCPU`` resource"},{"line_number":430,"context_line":"class to represent shared CPU resources and ``PCPU`` seemed a better logical"},{"line_number":431,"context_line":"counterpart to the existing ``VCPU`` resource class."},{"line_number":432,"context_line":""},{"line_number":433,"context_line":"Data model impact"},{"line_number":434,"context_line":"-----------------"},{"line_number":435,"context_line":""}],"source_content_type":"text/x-rst","patch_set":6,"id":"bf659307_c6d871f0","line":432,"updated":"2018-04-11 20:07:41.000000000","message":"I think here is where there needs to be a lot more content, because there are many alternatives that we\u0027ve discussed to get to this point, some of which are still on the table.\n\n- I would link to Sylvain\u0027s spec.\n- I would talk about implementing the \"forced separate providers\" semantic for granular request groups.\n- I would talk about making the $NODE thing significant (or the opposite, depending which way you ultimately decide to go).\n- I would talk about using traits (CUSTOM_NUMA_NODE_0, _1, etc.) to force procs to land on specific NUMA nodes.  This would be a less hackish way of accomplishing the same thing as making the $NODE number on the request group significant.","commit_id":"5219626163d0c81818cd2284614911938386e85b"},{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"4969cac6394e1638065ea67f77e4632842f994b8","unresolved":false,"context_lines":[{"line_number":477,"context_line":"documentation needs to be provided that, like the above example flavor"},{"line_number":478,"context_line":"configurations, shows operators what resources extra specs to configure in"},{"line_number":479,"context_line":"order to get a particular behavior and which configuration options have"},{"line_number":480,"context_line":"changed."},{"line_number":481,"context_line":""},{"line_number":482,"context_line":"Developer impact"},{"line_number":483,"context_line":"----------------"}],"source_content_type":"text/x-rst","patch_set":6,"id":"bf659307_d6e215a0","line":480,"updated":"2018-04-03 19:44:08.000000000","message":"Presumably, the other big task for operators is to make new flavors.","commit_id":"5219626163d0c81818cd2284614911938386e85b"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"181cbe01c6f86f35f5b3e07a005a0bef26d62d30","unresolved":false,"context_lines":[{"line_number":477,"context_line":"documentation needs to be provided that, like the above example flavor"},{"line_number":478,"context_line":"configurations, shows operators what resources extra specs to configure in"},{"line_number":479,"context_line":"order to get a particular behavior and which configuration options have"},{"line_number":480,"context_line":"changed."},{"line_number":481,"context_line":""},{"line_number":482,"context_line":"Developer impact"},{"line_number":483,"context_line":"----------------"}],"source_content_type":"text/x-rst","patch_set":6,"id":"bf659307_673915f0","line":480,"in_reply_to":"","updated":"2018-04-03 22:32:57.000000000","message":"For the simple case this can be automated as part of upgrade tooling as all existing flavor will have all cpus as either dedicated or shared today. That said if they want to have mixed instaces then yes they will need new flavours for that","commit_id":"5219626163d0c81818cd2284614911938386e85b"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"37039a8111f44a46fe44df734a1c01d9ab276564","unresolved":false,"context_lines":[{"line_number":521,"context_line":"  and image properties to construct a request for ``PCPU`` resources when the"},{"line_number":522,"context_line":"  ``hw:cpu_policy\u003ddedicated`` spec is found (smooth transition from legacy)"},{"line_number":523,"context_line":"* Mark the ``hw:cpu_policy`` extra spec / image property deprecated"},{"line_number":524,"context_line":"* Modify the code that currently looks at the"},{"line_number":525,"context_line":"  ``hw:cpu_threads_policy\u003disolate|share`` extra spec / image property to add a"},{"line_number":526,"context_line":"  ``required\u003dHW_CPU_HYPERTHREADING`` or ``required\u003d!HW_CPU_HYPERTHREADING`` to"},{"line_number":527,"context_line":"  the request to placement"},{"line_number":528,"context_line":"* Deprecate the ``hw:cpu_threads_policy`` extra spec / image property and add"},{"line_number":529,"context_line":"  documentation explaining how to add the ``HW_CPU_HYPERTHREADING`` trait as"},{"line_number":530,"context_line":"  required or forbidden in the flavor"}],"source_content_type":"text/x-rst","patch_set":6,"id":"bf659307_e69b3514","line":527,"range":{"start_line":524,"start_character":0,"end_line":527,"end_character":26},"updated":"2018-04-11 20:07:41.000000000","message":"Oh, so there won\u0027t actually be any direct concept of \u0027forbidden\u0027 in the extra spec.  L402 should be fixed accordingly.  And that makes moot my issue about there not being a spec for translating forbidden traits from flavors to placement.","commit_id":"5219626163d0c81818cd2284614911938386e85b"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"37039a8111f44a46fe44df734a1c01d9ab276564","unresolved":false,"context_lines":[{"line_number":572,"context_line":".. _Support shared/dedicated vCPU in one instance: https://review.openstack.org/#/c/545734/"},{"line_number":573,"context_line":".. _Emulator threads policy: https://review.openstack.org/#/c/511188/"},{"line_number":574,"context_line":".. _NUMA topology with resource providers: https://review.openstack.org/#/c/552924/"},{"line_number":575,"context_line":".. _update_provider_tree: https://review.openstack.org/#/c/540111/"},{"line_number":576,"context_line":".. _granular request groups (Rocky): https://review.openstack.org/#/c/540179/"}],"source_content_type":"text/x-rst","patch_set":6,"id":"bf659307_c622b1b9","line":575,"range":{"start_line":575,"start_character":26,"end_line":575,"end_character":66},"updated":"2018-04-11 20:07:41.000000000","message":"Link to the approved/rendered spec","commit_id":"5219626163d0c81818cd2284614911938386e85b"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"37039a8111f44a46fe44df734a1c01d9ab276564","unresolved":false,"context_lines":[{"line_number":573,"context_line":".. _Emulator threads policy: https://review.openstack.org/#/c/511188/"},{"line_number":574,"context_line":".. _NUMA topology with resource providers: https://review.openstack.org/#/c/552924/"},{"line_number":575,"context_line":".. _update_provider_tree: https://review.openstack.org/#/c/540111/"},{"line_number":576,"context_line":".. _granular request groups (Rocky): https://review.openstack.org/#/c/540179/"}],"source_content_type":"text/x-rst","patch_set":6,"id":"bf659307_c65dd147","line":576,"range":{"start_line":576,"start_character":38,"end_line":576,"end_character":77},"updated":"2018-04-11 20:07:41.000000000","message":"ditto","commit_id":"5219626163d0c81818cd2284614911938386e85b"},{"author":{"_account_id":8768,"name":"Chris Friesen","email":"chris.friesen@windriver.com","username":"cbf123"},"change_message_id":"a0c66fb86ec31894c60ba0bcb93f8d3949cbca5d","unresolved":false,"context_lines":[{"line_number":267,"context_line":"resources."},{"line_number":268,"context_line":""},{"line_number":269,"context_line":"When the guest **does** want a virtual CPU topology, the guest will need to use"},{"line_number":270,"context_line":"multiple **granular request groups** that specify the amount of dedicated and shared CPU resources that should be provided by individual resource providers."},{"line_number":271,"context_line":""},{"line_number":272,"context_line":".. note::"},{"line_number":273,"context_line":""}],"source_content_type":"text/x-rst","patch_set":7,"id":"bf659307_31af092b","line":270,"updated":"2018-04-12 17:18:20.000000000","message":"do we need to break this line?","commit_id":"e865aed089197ba348a60ec801976c8a85da1449"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"2bc02c599237ccc6810144a124a89a66e8bf5fbf","unresolved":false,"context_lines":[{"line_number":267,"context_line":"resources."},{"line_number":268,"context_line":""},{"line_number":269,"context_line":"When the guest **does** want a virtual CPU topology, the guest will need to use"},{"line_number":270,"context_line":"multiple **granular request groups** that specify the amount of dedicated and shared CPU resources that should be provided by individual resource providers."},{"line_number":271,"context_line":""},{"line_number":272,"context_line":".. note::"},{"line_number":273,"context_line":""}],"source_content_type":"text/x-rst","patch_set":7,"id":"bf659307_569cec68","line":270,"in_reply_to":"bf659307_31af092b","updated":"2018-04-12 20:46:22.000000000","message":"Done","commit_id":"e865aed089197ba348a60ec801976c8a85da1449"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"9b47c039e7a97544b2ccce87aa559987adaf9454","unresolved":false,"context_lines":[{"line_number":300,"context_line":"    A request for 4 dedicated CPU resources using the non-granular request"},{"line_number":301,"context_line":"    group (i.e. resources\u003dPCPU:4) simply indicates that the **requestor**"},{"line_number":302,"context_line":"    considers the 4 dedicated CPU resources to be indistinguishable from each"},{"line_number":303,"context_line":"    other. Whether those 4 dedicated guest CPUs end up being consumed from a"},{"line_number":304,"context_line":"    single resource provider (such as a root compute node provider) or several"},{"line_number":305,"context_line":"    NUMA node resource providers is not related to **request** for resources."},{"line_number":306,"context_line":""},{"line_number":307,"context_line":"    It has been previously proposed that if a non-granular request for 4 PCPU"},{"line_number":308,"context_line":"    is made and the only compute node in the deployment has 2 NUMA node"}],"source_content_type":"text/x-rst","patch_set":7,"id":"bf659307_93fa96ba","line":305,"range":{"start_line":303,"start_character":11,"end_line":305,"end_character":77},"updated":"2018-04-12 20:05:40.000000000","message":"This is not true unless your spec edit lands, or unless some other semantic is introduced.","commit_id":"e865aed089197ba348a60ec801976c8a85da1449"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"2bc02c599237ccc6810144a124a89a66e8bf5fbf","unresolved":false,"context_lines":[{"line_number":300,"context_line":"    A request for 4 dedicated CPU resources using the non-granular request"},{"line_number":301,"context_line":"    group (i.e. resources\u003dPCPU:4) simply indicates that the **requestor**"},{"line_number":302,"context_line":"    considers the 4 dedicated CPU resources to be indistinguishable from each"},{"line_number":303,"context_line":"    other. Whether those 4 dedicated guest CPUs end up being consumed from a"},{"line_number":304,"context_line":"    single resource provider (such as a root compute node provider) or several"},{"line_number":305,"context_line":"    NUMA node resource providers is not related to **request** for resources."},{"line_number":306,"context_line":""},{"line_number":307,"context_line":"    It has been previously proposed that if a non-granular request for 4 PCPU"},{"line_number":308,"context_line":"    is made and the only compute node in the deployment has 2 NUMA node"}],"source_content_type":"text/x-rst","patch_set":7,"id":"bf659307_7697b046","line":305,"range":{"start_line":303,"start_character":11,"end_line":305,"end_character":77},"in_reply_to":"bf659307_93fa96ba","updated":"2018-04-12 20:46:22.000000000","message":"Well, yeah :) That\u0027s why I did that spec amendment! You had asked to either rewrite this or to amend the spec. I chose the latter after going back and forth on it.","commit_id":"e865aed089197ba348a60ec801976c8a85da1449"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"9b47c039e7a97544b2ccce87aa559987adaf9454","unresolved":false,"context_lines":[{"line_number":304,"context_line":"    single resource provider (such as a root compute node provider) or several"},{"line_number":305,"context_line":"    NUMA node resource providers is not related to **request** for resources."},{"line_number":306,"context_line":""},{"line_number":307,"context_line":"    It has been previously proposed that if a non-granular request for 4 PCPU"},{"line_number":308,"context_line":"    is made and the only compute node in the deployment has 2 NUMA node"},{"line_number":309,"context_line":"    resource providers, each with 2 PCPU inventory available, that the caller"},{"line_number":310,"context_line":"    should be able to rewrite their request for 4 PCPU as multiple granular"},{"line_number":311,"context_line":"    request groups (i.e. resources1\u003dPCPU:2,resource2\u003dPCPU:2). This is a poor solution,"},{"line_number":312,"context_line":"    however, because it depends on the caller to dynamically reissue a request"},{"line_number":313,"context_line":"    for the same amount of resources, just in a different format."},{"line_number":314,"context_line":""},{"line_number":315,"context_line":"    The tolerance a particular deployment has with regards to attempting to"},{"line_number":316,"context_line":"    \"fit\" a request for resources that can theoretically be placed across"}],"source_content_type":"text/x-rst","patch_set":7,"id":"bf659307_d3cece2b","line":313,"range":{"start_line":307,"start_character":0,"end_line":313,"end_character":65},"updated":"2018-04-12 20:05:40.000000000","message":"This isn\u0027t the (only) proposal to handle this.  The preferred mechanism, which is being developed in Sylvain\u0027s spec, is for the flavor to say something that makes sense to its author - preferably even in terms she already understands when it comes to NUMA topology options [1] - and for nova to translate that into a placement request that will satisfy it in one call.  In the example here, where we don\u0027t care about topology and just want any fit, the flavor would say VCPU:4 and we would translate to:\n\n  resources1\u003dVCPU:1\n \u0026resources2\u003dVCPU:1\n \u0026resources3\u003dVCPU:1\n \u0026resources4\u003dVCPU:1\n\nThe user isn\u0027t expected to do that - agree that would be too burdensome - the code does it.\n\nWhen we do care about topology, the flavor says e.g.\n\n hw:numa_nodes\u003d2\n hw:numa_cpus.0\u003d2\n hw:numa_cpus.1\u003d3\n\nNova either translates that to:\n\n  resources0\u003dVCPU:2\n \u0026resources1\u003dVCPU:3\n \u0026separate_providers\u003dresources0,resources1\n\nor it uses\n\n  resources0\u003dVCPU:2\n \u0026resources1\u003dVCPU:3\n\nand filters out the allocation requests that grouped all five VCPUs together.\n\nThen the virt driver is responsible for correlating the resource provider UUID for each allocation request resource to its appropriate NUMA node, yattayatta.\n\n[1] https://docs.openstack.org/nova/latest/user/flavors.html#extra-specs-numa-topology","commit_id":"e865aed089197ba348a60ec801976c8a85da1449"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"2bc02c599237ccc6810144a124a89a66e8bf5fbf","unresolved":false,"context_lines":[{"line_number":304,"context_line":"    single resource provider (such as a root compute node provider) or several"},{"line_number":305,"context_line":"    NUMA node resource providers is not related to **request** for resources."},{"line_number":306,"context_line":""},{"line_number":307,"context_line":"    It has been previously proposed that if a non-granular request for 4 PCPU"},{"line_number":308,"context_line":"    is made and the only compute node in the deployment has 2 NUMA node"},{"line_number":309,"context_line":"    resource providers, each with 2 PCPU inventory available, that the caller"},{"line_number":310,"context_line":"    should be able to rewrite their request for 4 PCPU as multiple granular"},{"line_number":311,"context_line":"    request groups (i.e. resources1\u003dPCPU:2,resource2\u003dPCPU:2). This is a poor solution,"},{"line_number":312,"context_line":"    however, because it depends on the caller to dynamically reissue a request"},{"line_number":313,"context_line":"    for the same amount of resources, just in a different format."},{"line_number":314,"context_line":""},{"line_number":315,"context_line":"    The tolerance a particular deployment has with regards to attempting to"},{"line_number":316,"context_line":"    \"fit\" a request for resources that can theoretically be placed across"}],"source_content_type":"text/x-rst","patch_set":7,"id":"bf659307_b9945b8c","line":313,"range":{"start_line":307,"start_character":0,"end_line":313,"end_character":65},"in_reply_to":"bf659307_d3cece2b","updated":"2018-04-12 20:46:22.000000000","message":"\u003e This isn\u0027t the (only) proposal to handle this.  The preferred\n \u003e mechanism, which is being developed in Sylvain\u0027s spec, is for the\n \u003e flavor to say something that makes sense to its author - preferably\n \u003e even in terms she already understands when it comes to NUMA\n \u003e topology options [1] - and for nova to translate that into a\n \u003e placement request that will satisfy it in one call.  In the example\n \u003e here, where we don\u0027t care about topology and just want any fit, the\n \u003e flavor would say VCPU:4 and we would translate to:\n \u003e \n \u003e resources1\u003dVCPU:1\n \u003e \u0026resources2\u003dVCPU:1\n \u003e \u0026resources3\u003dVCPU:1\n \u003e \u0026resources4\u003dVCPU:1\n \u003e \n \u003e The user isn\u0027t expected to do that - agree that would be too\n \u003e burdensome - the code does it.\n\nI don\u0027t believe the caller should rewrite the request in a different format. I believe that the granular request groups just simply make more sense as meaning \"ensure these resources are provided by different resource providers\". I also believe that the *behaviour of the placement service* in attempting to find multiple child providers that collectively have capacity for a requested amount of resource when no single provider can be found is an attribute of the placement service, and not something that should be controlled via a query parameter.\n\nIt is an attribute of the placement service whether or not it attempts this splitting behaviour in the case of no single resource provider being found to satisfy the un-numbered request group and should be hidden from the caller IMHO.\n\n \u003e When we do care about topology, the flavor says e.g.\n \u003e \n \u003e hw:numa_nodes\u003d2\n \u003e hw:numa_cpus.0\u003d2\n \u003e hw:numa_cpus.1\u003d3\n \u003e \n \u003e Nova either translates that to:\n \u003e \n \u003e resources0\u003dVCPU:2\n \u003e \u0026resources1\u003dVCPU:3\n \u003e \u0026separate_providers\u003dresources0,resources1\n \u003e \n \u003e or it uses\n \u003e \n \u003e resources0\u003dVCPU:2\n \u003e \u0026resources1\u003dVCPU:3\n \u003e \n \u003e and filters out the allocation requests that grouped all five VCPUs\n \u003e together.\n\nI believe this above is neither efficient nor understandable. If the user wants separate providers for like resources, they use granular request groups. Simple as that.\n\nIf they don\u0027t mind like resources being split (if necessary) across multiple resource providers, then they use the non-granular request group.\n\nIf they want to ensure only a single provider is used for a resource, then they use a single granular request group.\n\n \u003e Then the virt driver is responsible for correlating the resource\n \u003e provider UUID for each allocation request resource to its\n \u003e appropriate NUMA node, yattayatta.\n\nWell, the virt driver is obviously going to be responsible for correlating resource provider UUID to a NUMA child provider, sure. But I don\u0027t see how that relates to the proposal here?\n\n \u003e [1] https://docs.openstack.org/nova/latest/user/flavors.html#extra-specs-numa-topology","commit_id":"e865aed089197ba348a60ec801976c8a85da1449"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"9b47c039e7a97544b2ccce87aa559987adaf9454","unresolved":false,"context_lines":[{"line_number":312,"context_line":"    however, because it depends on the caller to dynamically reissue a request"},{"line_number":313,"context_line":"    for the same amount of resources, just in a different format."},{"line_number":314,"context_line":""},{"line_number":315,"context_line":"    The tolerance a particular deployment has with regards to attempting to"},{"line_number":316,"context_line":"    \"fit\" a request for resources that can theoretically be placed across"},{"line_number":317,"context_line":"    multiple providers is a scheduling policy that should be driven either by"},{"line_number":318,"context_line":"    configuration options in the placement service or distinct query parameters"},{"line_number":319,"context_line":"    to the placement API."},{"line_number":320,"context_line":""},{"line_number":321,"context_line":"    See the `granular request groups`_ spec for more information."},{"line_number":322,"context_line":""}],"source_content_type":"text/x-rst","patch_set":7,"id":"bf659307_93b37698","line":319,"range":{"start_line":315,"start_character":4,"end_line":319,"end_character":25},"updated":"2018-04-12 20:05:40.000000000","message":"This is a pretty broad statement, and a contentious one.  Does it add anything to the proposal?  Perhaps it should just be removed.","commit_id":"e865aed089197ba348a60ec801976c8a85da1449"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"2bc02c599237ccc6810144a124a89a66e8bf5fbf","unresolved":false,"context_lines":[{"line_number":312,"context_line":"    however, because it depends on the caller to dynamically reissue a request"},{"line_number":313,"context_line":"    for the same amount of resources, just in a different format."},{"line_number":314,"context_line":""},{"line_number":315,"context_line":"    The tolerance a particular deployment has with regards to attempting to"},{"line_number":316,"context_line":"    \"fit\" a request for resources that can theoretically be placed across"},{"line_number":317,"context_line":"    multiple providers is a scheduling policy that should be driven either by"},{"line_number":318,"context_line":"    configuration options in the placement service or distinct query parameters"},{"line_number":319,"context_line":"    to the placement API."},{"line_number":320,"context_line":""},{"line_number":321,"context_line":"    See the `granular request groups`_ spec for more information."},{"line_number":322,"context_line":""}],"source_content_type":"text/x-rst","patch_set":7,"id":"bf659307_d9f02f00","line":319,"range":{"start_line":315,"start_character":4,"end_line":319,"end_character":25},"in_reply_to":"bf659307_93b37698","updated":"2018-04-12 20:46:22.000000000","message":"Happy to remove it.","commit_id":"e865aed089197ba348a60ec801976c8a85da1449"},{"author":{"_account_id":8768,"name":"Chris Friesen","email":"chris.friesen@windriver.com","username":"cbf123"},"change_message_id":"a0c66fb86ec31894c60ba0bcb93f8d3949cbca5d","unresolved":false,"context_lines":[{"line_number":356,"context_line":"    from the placement service."},{"line_number":357,"context_line":""},{"line_number":358,"context_line":"    Further note that there is no correlation between the request group"},{"line_number":359,"context_line":"    identifier and the NUMA cell identifier."},{"line_number":360,"context_line":""},{"line_number":361,"context_line":"Guest tolerance for hyperthreads"},{"line_number":362,"context_line":"--------------------------------"}],"source_content_type":"text/x-rst","patch_set":7,"id":"bf659307_315dc946","line":359,"updated":"2018-04-12 17:18:20.000000000","message":"to remove any ambiguity, should specify whether this is host or guest NUMA cell identifier.","commit_id":"e865aed089197ba348a60ec801976c8a85da1449"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"9b47c039e7a97544b2ccce87aa559987adaf9454","unresolved":false,"context_lines":[{"line_number":356,"context_line":"    from the placement service."},{"line_number":357,"context_line":""},{"line_number":358,"context_line":"    Further note that there is no correlation between the request group"},{"line_number":359,"context_line":"    identifier and the NUMA cell identifier."},{"line_number":360,"context_line":""},{"line_number":361,"context_line":"Guest tolerance for hyperthreads"},{"line_number":362,"context_line":"--------------------------------"}],"source_content_type":"text/x-rst","patch_set":7,"id":"bf659307_b3731ae7","line":359,"in_reply_to":"bf659307_315dc946","updated":"2018-04-12 20:05:40.000000000","message":"...and it\u0027s both.","commit_id":"e865aed089197ba348a60ec801976c8a85da1449"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"2bc02c599237ccc6810144a124a89a66e8bf5fbf","unresolved":false,"context_lines":[{"line_number":356,"context_line":"    from the placement service."},{"line_number":357,"context_line":""},{"line_number":358,"context_line":"    Further note that there is no correlation between the request group"},{"line_number":359,"context_line":"    identifier and the NUMA cell identifier."},{"line_number":360,"context_line":""},{"line_number":361,"context_line":"Guest tolerance for hyperthreads"},{"line_number":362,"context_line":"--------------------------------"}],"source_content_type":"text/x-rst","patch_set":7,"id":"bf659307_79dfa365","line":359,"in_reply_to":"bf659307_b3731ae7","updated":"2018-04-12 20:46:22.000000000","message":"yeah, it\u0027s both. I can add a clarification.","commit_id":"e865aed089197ba348a60ec801976c8a85da1449"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"bf9cfc873e092acfb0c59a4e5322a5ac5f0480ab","unresolved":false,"context_lines":[{"line_number":281,"context_line":"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"},{"line_number":282,"context_line":""},{"line_number":283,"context_line":"When a guest does not care about virtual CPU topology, the non-granular request"},{"line_number":284,"context_line":"group is used:"},{"line_number":285,"context_line":""},{"line_number":286,"context_line":"* The number of shared CPUs needed by the guest shall be stored in the existing"},{"line_number":287,"context_line":"  ``resources:VCPU\u003d$AMOUNT`` extra spec key."}],"source_content_type":"text/x-rst","patch_set":8,"id":"9f6a8fd7_685f6b0e","line":284,"updated":"2018-04-27 19:57:32.000000000","message":"Do we plan to implement a translation layer to go from flavor\n\n resources:VCPU\u003dN\n\nto placement queryparams\n\n ?resources1\u003dVCPU:1\u0026resources2\u003dVCPU:1\u0026...\u0026resourcesN\u003dVCPU:1\n\n?\n\nIf that\u0027s the case, it needs to be stated as such.\n\nOtherwise, it needs to be stated that this will get all the VCPUs from one RP and all the PCPUs from one (possibly the same, possibly different) RP.\n\nMore below.","commit_id":"3d1c944f805ea68bbf331a357458bd81279ebdd4"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"4c936f748b4579693e02e7ed9b6fbd5eec0c2f48","unresolved":false,"context_lines":[{"line_number":281,"context_line":"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"},{"line_number":282,"context_line":""},{"line_number":283,"context_line":"When a guest does not care about virtual CPU topology, the non-granular request"},{"line_number":284,"context_line":"group is used:"},{"line_number":285,"context_line":""},{"line_number":286,"context_line":"* The number of shared CPUs needed by the guest shall be stored in the existing"},{"line_number":287,"context_line":"  ``resources:VCPU\u003d$AMOUNT`` extra spec key."}],"source_content_type":"text/x-rst","patch_set":8,"id":"9f6a8fd7_c5c9a625","line":284,"in_reply_to":"9f6a8fd7_685f6b0e","updated":"2018-04-30 17:00:28.000000000","message":"I don\u0027t plan on having any such translation layer. I\u0027ll have to change this to be the whole \"resourcesN\u003dVCPU:1\" thing, even though it\u0027s incredibly ugly.","commit_id":"3d1c944f805ea68bbf331a357458bd81279ebdd4"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"bf9cfc873e092acfb0c59a4e5322a5ac5f0480ab","unresolved":false,"context_lines":[{"line_number":303,"context_line":"    considers the 4 dedicated CPU resources to be indistinguishable from each"},{"line_number":304,"context_line":"    other. Whether those 4 dedicated guest CPUs end up being consumed from a"},{"line_number":305,"context_line":"    single resource provider (such as a root compute node provider) or several"},{"line_number":306,"context_line":"    NUMA node resource providers is not related to **request** for resources."},{"line_number":307,"context_line":""},{"line_number":308,"context_line":"    It has been previously proposed that if a non-granular request for 4 PCPU"},{"line_number":309,"context_line":"    is made and the only compute node in the deployment has 2 NUMA node"}],"source_content_type":"text/x-rst","patch_set":8,"id":"9f6a8fd7_c8a31700","line":306,"range":{"start_line":306,"start_character":36,"end_line":306,"end_character":62},"updated":"2018-04-27 19:57:32.000000000","message":"Oh, but it is.  If we\u0027re not doing any flavor-to-qparam translation, the allocation requests we receive from placement will be consuming resources from specific RPs.  At that point, the virt driver can\u0027t just decide to consume them from wherever it wants.","commit_id":"3d1c944f805ea68bbf331a357458bd81279ebdd4"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"4c936f748b4579693e02e7ed9b6fbd5eec0c2f48","unresolved":false,"context_lines":[{"line_number":303,"context_line":"    considers the 4 dedicated CPU resources to be indistinguishable from each"},{"line_number":304,"context_line":"    other. Whether those 4 dedicated guest CPUs end up being consumed from a"},{"line_number":305,"context_line":"    single resource provider (such as a root compute node provider) or several"},{"line_number":306,"context_line":"    NUMA node resource providers is not related to **request** for resources."},{"line_number":307,"context_line":""},{"line_number":308,"context_line":"    It has been previously proposed that if a non-granular request for 4 PCPU"},{"line_number":309,"context_line":"    is made and the only compute node in the deployment has 2 NUMA node"}],"source_content_type":"text/x-rst","patch_set":8,"id":"9f6a8fd7_85d3aed5","line":306,"range":{"start_line":306,"start_character":36,"end_line":306,"end_character":62},"in_reply_to":"9f6a8fd7_c8a31700","updated":"2018-04-30 17:00:28.000000000","message":"This doesn\u0027t have anything to do with the virt driver. Regardless, I need to remove this anyway because I need to specify the whole resourcesN\u003dVCPU:1 thing.","commit_id":"3d1c944f805ea68bbf331a357458bd81279ebdd4"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"bf9cfc873e092acfb0c59a4e5322a5ac5f0480ab","unresolved":false,"context_lines":[{"line_number":309,"context_line":"    is made and the only compute node in the deployment has 2 NUMA node"},{"line_number":310,"context_line":"    resource providers, each with 2 PCPU inventory available, that the caller"},{"line_number":311,"context_line":"    should be able to rewrite their request for 4 PCPU as multiple granular"},{"line_number":312,"context_line":"    request groups (i.e. resources1\u003dPCPU:2,resource2\u003dPCPU:2). This is a poor solution,"},{"line_number":313,"context_line":"    however, because it depends on the caller to dynamically reissue a request"},{"line_number":314,"context_line":"    for the same amount of resources, just in a different format."},{"line_number":315,"context_line":""}],"source_content_type":"text/x-rst","patch_set":8,"id":"9f6a8fd7_c87c7774","line":312,"range":{"start_line":312,"start_character":77,"end_line":312,"end_character":85},"updated":"2018-04-27 19:57:32.000000000","message":"wrap","commit_id":"3d1c944f805ea68bbf331a357458bd81279ebdd4"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"bf9cfc873e092acfb0c59a4e5322a5ac5f0480ab","unresolved":false,"context_lines":[{"line_number":311,"context_line":"    should be able to rewrite their request for 4 PCPU as multiple granular"},{"line_number":312,"context_line":"    request groups (i.e. resources1\u003dPCPU:2,resource2\u003dPCPU:2). This is a poor solution,"},{"line_number":313,"context_line":"    however, because it depends on the caller to dynamically reissue a request"},{"line_number":314,"context_line":"    for the same amount of resources, just in a different format."},{"line_number":315,"context_line":""},{"line_number":316,"context_line":"    See the `granular request groups`_ spec for more information."},{"line_number":317,"context_line":""}],"source_content_type":"text/x-rst","patch_set":8,"id":"9f6a8fd7_2888936f","line":314,"updated":"2018-04-27 19:57:32.000000000","message":"tbc, the translator suggested above wouldn\u0027t entail the user trying different permutations.  It would entail the nova code converting from flavor to qparams differently than it does today.  (And it\u0027s still just one placement request.)","commit_id":"3d1c944f805ea68bbf331a357458bd81279ebdd4"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"4c936f748b4579693e02e7ed9b6fbd5eec0c2f48","unresolved":false,"context_lines":[{"line_number":311,"context_line":"    should be able to rewrite their request for 4 PCPU as multiple granular"},{"line_number":312,"context_line":"    request groups (i.e. resources1\u003dPCPU:2,resource2\u003dPCPU:2). This is a poor solution,"},{"line_number":313,"context_line":"    however, because it depends on the caller to dynamically reissue a request"},{"line_number":314,"context_line":"    for the same amount of resources, just in a different format."},{"line_number":315,"context_line":""},{"line_number":316,"context_line":"    See the `granular request groups`_ spec for more information."},{"line_number":317,"context_line":""}],"source_content_type":"text/x-rst","patch_set":8,"id":"9f6a8fd7_85488e87","line":314,"in_reply_to":"9f6a8fd7_2888936f","updated":"2018-04-30 17:00:28.000000000","message":"I just removed the whole note.","commit_id":"3d1c944f805ea68bbf331a357458bd81279ebdd4"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"bf9cfc873e092acfb0c59a4e5322a5ac5f0480ab","unresolved":false,"context_lines":[{"line_number":339,"context_line":"for the guest would look like this::"},{"line_number":340,"context_line":""},{"line_number":341,"context_line":"    resources0:PCPU\u003d2"},{"line_number":342,"context_line":"    resources1:PCPU\u003d2"},{"line_number":343,"context_line":""},{"line_number":344,"context_line":".. note::"},{"line_number":345,"context_line":""}],"source_content_type":"text/x-rst","patch_set":8,"id":"9f6a8fd7_08e82f14","line":342,"updated":"2018-04-27 19:57:32.000000000","message":"and\n\n group_policy\u003disolate","commit_id":"3d1c944f805ea68bbf331a357458bd81279ebdd4"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"4c936f748b4579693e02e7ed9b6fbd5eec0c2f48","unresolved":false,"context_lines":[{"line_number":339,"context_line":"for the guest would look like this::"},{"line_number":340,"context_line":""},{"line_number":341,"context_line":"    resources0:PCPU\u003d2"},{"line_number":342,"context_line":"    resources1:PCPU\u003d2"},{"line_number":343,"context_line":""},{"line_number":344,"context_line":".. note::"},{"line_number":345,"context_line":""}],"source_content_type":"text/x-rst","patch_set":8,"id":"9f6a8fd7_255f4242","line":342,"in_reply_to":"9f6a8fd7_08e82f14","updated":"2018-04-30 17:00:28.000000000","message":"Done","commit_id":"3d1c944f805ea68bbf331a357458bd81279ebdd4"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"ff3cfb8d48673ffff44fa5baaf2465b2764c91d7","unresolved":false,"context_lines":[{"line_number":350,"context_line":"    module and does not affect the total amount of requested resources asked"},{"line_number":351,"context_line":"    from the placement service."},{"line_number":352,"context_line":""},{"line_number":353,"context_line":"    Further note that there is no correlation between the granular request group"},{"line_number":354,"context_line":"    number and the NUMA cell identifier (either the virtual guest NUMA cell or"},{"line_number":355,"context_line":"    a physical host NUMA cell)."},{"line_number":356,"context_line":""}],"source_content_type":"text/x-rst","patch_set":8,"id":"9f6a8fd7_7603d243","line":353,"range":{"start_line":353,"start_character":75,"end_line":353,"end_character":80},"updated":"2018-04-16 22:40:59.000000000","message":"wrap","commit_id":"3d1c944f805ea68bbf331a357458bd81279ebdd4"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"bf9cfc873e092acfb0c59a4e5322a5ac5f0480ab","unresolved":false,"context_lines":[{"line_number":350,"context_line":"    module and does not affect the total amount of requested resources asked"},{"line_number":351,"context_line":"    from the placement service."},{"line_number":352,"context_line":""},{"line_number":353,"context_line":"    Further note that there is no correlation between the granular request group"},{"line_number":354,"context_line":"    number and the NUMA cell identifier (either the virtual guest NUMA cell or"},{"line_number":355,"context_line":"    a physical host NUMA cell)."},{"line_number":356,"context_line":""}],"source_content_type":"text/x-rst","patch_set":8,"id":"9f6a8fd7_88967f94","line":353,"range":{"start_line":353,"start_character":75,"end_line":353,"end_character":80},"in_reply_to":"9f6a8fd7_221e7470","updated":"2018-04-27 19:57:32.000000000","message":"okay, but fix if you respin please.","commit_id":"3d1c944f805ea68bbf331a357458bd81279ebdd4"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"9be6d1b636547a2bc4e4551c17bc6324c498a3af","unresolved":false,"context_lines":[{"line_number":350,"context_line":"    module and does not affect the total amount of requested resources asked"},{"line_number":351,"context_line":"    from the placement service."},{"line_number":352,"context_line":""},{"line_number":353,"context_line":"    Further note that there is no correlation between the granular request group"},{"line_number":354,"context_line":"    number and the NUMA cell identifier (either the virtual guest NUMA cell or"},{"line_number":355,"context_line":"    a physical host NUMA cell)."},{"line_number":356,"context_line":""}],"source_content_type":"text/x-rst","patch_set":8,"id":"9f6a8fd7_221e7470","line":353,"range":{"start_line":353,"start_character":75,"end_line":353,"end_character":80},"in_reply_to":"9f6a8fd7_7603d243","updated":"2018-04-27 18:50:17.000000000","message":"not needed. pep8 isn\u0027t complaining.","commit_id":"3d1c944f805ea68bbf331a357458bd81279ebdd4"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"4c936f748b4579693e02e7ed9b6fbd5eec0c2f48","unresolved":false,"context_lines":[{"line_number":350,"context_line":"    module and does not affect the total amount of requested resources asked"},{"line_number":351,"context_line":"    from the placement service."},{"line_number":352,"context_line":""},{"line_number":353,"context_line":"    Further note that there is no correlation between the granular request group"},{"line_number":354,"context_line":"    number and the NUMA cell identifier (either the virtual guest NUMA cell or"},{"line_number":355,"context_line":"    a physical host NUMA cell)."},{"line_number":356,"context_line":""}],"source_content_type":"text/x-rst","patch_set":8,"id":"9f6a8fd7_e52dcaa8","line":353,"range":{"start_line":353,"start_character":75,"end_line":353,"end_character":80},"in_reply_to":"9f6a8fd7_88967f94","updated":"2018-04-30 17:00:28.000000000","message":"Done","commit_id":"3d1c944f805ea68bbf331a357458bd81279ebdd4"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"3ccd495b7a770740b40993f4084f4c7136b9801c","unresolved":false,"context_lines":[{"line_number":428,"context_line":"3) A virtual network function running a packet-core processing application"},{"line_number":429,"context_line":"requires 12 CPU resources. 10 of those CPU resources should be pinned to"},{"line_number":430,"context_line":"physical host CPUs. 2 of those CPU resources may be placed on host CPUs that"},{"line_number":431,"context_line":"other guests share. The VNF does *not* specify a virtual NUMA topology but"},{"line_number":432,"context_line":"*does* specify that the dedicated CPUs it receives should *not* be hyperthread"},{"line_number":433,"context_line":"siblings (in other words, it wants full cores for its dedicated CPU"},{"line_number":434,"context_line":"resources)::"}],"source_content_type":"text/x-rst","patch_set":8,"id":"9f6a8fd7_45270966","line":431,"range":{"start_line":431,"start_character":28,"end_line":431,"end_character":70},"updated":"2018-04-16 11:07:14.000000000","message":"The NUMAfilter behavior is that packing the instance into single node.\n\nBut we have chance to separate the PCPU and VCPU to different NUMA node when the one of NUMA node has 10 PCPU and less than 2 VCPU.","commit_id":"3d1c944f805ea68bbf331a357458bd81279ebdd4"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"aafaa957d836779b277dbf4b55f820e1642f6a0b","unresolved":false,"context_lines":[{"line_number":428,"context_line":"3) A virtual network function running a packet-core processing application"},{"line_number":429,"context_line":"requires 12 CPU resources. 10 of those CPU resources should be pinned to"},{"line_number":430,"context_line":"physical host CPUs. 2 of those CPU resources may be placed on host CPUs that"},{"line_number":431,"context_line":"other guests share. The VNF does *not* specify a virtual NUMA topology but"},{"line_number":432,"context_line":"*does* specify that the dedicated CPUs it receives should *not* be hyperthread"},{"line_number":433,"context_line":"siblings (in other words, it wants full cores for its dedicated CPU"},{"line_number":434,"context_line":"resources)::"}],"source_content_type":"text/x-rst","patch_set":8,"id":"9f6a8fd7_69b1c7e1","line":431,"range":{"start_line":431,"start_character":28,"end_line":431,"end_character":70},"in_reply_to":"9f6a8fd7_45270966","updated":"2018-04-16 11:43:21.000000000","message":"The NUMAfilter will filter this host out I guess.","commit_id":"3d1c944f805ea68bbf331a357458bd81279ebdd4"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"4c936f748b4579693e02e7ed9b6fbd5eec0c2f48","unresolved":false,"context_lines":[{"line_number":428,"context_line":"3) A virtual network function running a packet-core processing application"},{"line_number":429,"context_line":"requires 12 CPU resources. 10 of those CPU resources should be pinned to"},{"line_number":430,"context_line":"physical host CPUs. 2 of those CPU resources may be placed on host CPUs that"},{"line_number":431,"context_line":"other guests share. The VNF does *not* specify a virtual NUMA topology but"},{"line_number":432,"context_line":"*does* specify that the dedicated CPUs it receives should *not* be hyperthread"},{"line_number":433,"context_line":"siblings (in other words, it wants full cores for its dedicated CPU"},{"line_number":434,"context_line":"resources)::"}],"source_content_type":"text/x-rst","patch_set":8,"id":"9f6a8fd7_05023e0c","line":431,"range":{"start_line":431,"start_character":28,"end_line":431,"end_character":70},"in_reply_to":"9f6a8fd7_45270966","updated":"2018-04-30 17:00:28.000000000","message":"The unnumbered request group (resources\u003d) will always be satisfied by a single resource provider.","commit_id":"3d1c944f805ea68bbf331a357458bd81279ebdd4"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"5e613cf1ca9d09a64b56e87c3bd1ab65d0fba458","unresolved":false,"context_lines":[{"line_number":428,"context_line":"3) A virtual network function running a packet-core processing application"},{"line_number":429,"context_line":"requires 12 CPU resources. 10 of those CPU resources should be pinned to"},{"line_number":430,"context_line":"physical host CPUs. 2 of those CPU resources may be placed on host CPUs that"},{"line_number":431,"context_line":"other guests share. The VNF does *not* specify a virtual NUMA topology but"},{"line_number":432,"context_line":"*does* specify that the dedicated CPUs it receives should *not* be hyperthread"},{"line_number":433,"context_line":"siblings (in other words, it wants full cores for its dedicated CPU"},{"line_number":434,"context_line":"resources)::"}],"source_content_type":"text/x-rst","patch_set":8,"id":"9f6a8fd7_eef61990","line":431,"range":{"start_line":431,"start_character":28,"end_line":431,"end_character":70},"in_reply_to":"9f6a8fd7_69b1c7e1","updated":"2018-04-17 13:52:14.000000000","message":"Or we should use the granular request group also.\n\nresources1:PCPU\u003d10\nresources1:VCPU\u003d2\n\nalthrough there is only one group, but that can ensure this instance is packed into single numa node.","commit_id":"3d1c944f805ea68bbf331a357458bd81279ebdd4"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"3ccd495b7a770740b40993f4084f4c7136b9801c","unresolved":false,"context_lines":[{"line_number":434,"context_line":"resources)::"},{"line_number":435,"context_line":""},{"line_number":436,"context_line":"    resources:PCPU\u003d10"},{"line_number":437,"context_line":"    resources:VCPU\u003d2"},{"line_number":438,"context_line":"    trait:HW_CPU_HYPERTHREADING\u003dforbidden"},{"line_number":439,"context_line":""},{"line_number":440,"context_line":"4) A virtual radio access network function needs 16 CPU resources, all of which"}],"source_content_type":"text/x-rst","patch_set":8,"id":"9f6a8fd7_25c21587","line":437,"range":{"start_line":437,"start_character":4,"end_line":437,"end_character":20},"updated":"2018-04-16 11:07:14.000000000","message":"Actually, it means the VCPU must not be hyperthread silbings also. Because that node must not have HW_CPU_HYPERTHRADING.","commit_id":"3d1c944f805ea68bbf331a357458bd81279ebdd4"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"4c936f748b4579693e02e7ed9b6fbd5eec0c2f48","unresolved":false,"context_lines":[{"line_number":434,"context_line":"resources)::"},{"line_number":435,"context_line":""},{"line_number":436,"context_line":"    resources:PCPU\u003d10"},{"line_number":437,"context_line":"    resources:VCPU\u003d2"},{"line_number":438,"context_line":"    trait:HW_CPU_HYPERTHREADING\u003dforbidden"},{"line_number":439,"context_line":""},{"line_number":440,"context_line":"4) A virtual radio access network function needs 16 CPU resources, all of which"}],"source_content_type":"text/x-rst","patch_set":8,"id":"9f6a8fd7_e81b5f70","line":437,"range":{"start_line":437,"start_character":4,"end_line":437,"end_character":20},"in_reply_to":"9f6a8fd7_0eb6edfb","updated":"2018-04-30 17:00:28.000000000","message":"I guess I\u0027m not sure what you\u0027re asking. I don\u0027t understand why non-pinned CPU resources would care about whether they are running on hyperthreads or not.","commit_id":"3d1c944f805ea68bbf331a357458bd81279ebdd4"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"c4b83b4a7a59ec40a0adaf3b17a078884b414277","unresolved":false,"context_lines":[{"line_number":434,"context_line":"resources)::"},{"line_number":435,"context_line":""},{"line_number":436,"context_line":"    resources:PCPU\u003d10"},{"line_number":437,"context_line":"    resources:VCPU\u003d2"},{"line_number":438,"context_line":"    trait:HW_CPU_HYPERTHREADING\u003dforbidden"},{"line_number":439,"context_line":""},{"line_number":440,"context_line":"4) A virtual radio access network function needs 16 CPU resources, all of which"}],"source_content_type":"text/x-rst","patch_set":8,"id":"9f6a8fd7_4cf65192","line":437,"range":{"start_line":437,"start_character":4,"end_line":437,"end_character":20},"in_reply_to":"9f6a8fd7_25c21587","updated":"2018-04-16 12:30:43.000000000","message":"Yes, though that is just an implementation detail due to hyperthreading needing to be an all-or-none thing, right?","commit_id":"3d1c944f805ea68bbf331a357458bd81279ebdd4"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"6e96c1988ddd9c501c10c0234f879b6c0f87bf0b","unresolved":false,"context_lines":[{"line_number":434,"context_line":"resources)::"},{"line_number":435,"context_line":""},{"line_number":436,"context_line":"    resources:PCPU\u003d10"},{"line_number":437,"context_line":"    resources:VCPU\u003d2"},{"line_number":438,"context_line":"    trait:HW_CPU_HYPERTHREADING\u003dforbidden"},{"line_number":439,"context_line":""},{"line_number":440,"context_line":"4) A virtual radio access network function needs 16 CPU resources, all of which"}],"source_content_type":"text/x-rst","patch_set":8,"id":"9f6a8fd7_0eb6edfb","line":437,"range":{"start_line":437,"start_character":4,"end_line":437,"end_character":20},"in_reply_to":"9f6a8fd7_4cf65192","updated":"2018-04-17 13:44:39.000000000","message":"I just point to the description at line 432 only talk about the dedicated CPU should not be hyperthread, that sounds we can support VCPU can be a hyperthread siblings also. Actually, it is not. Anyway, it just want to clear what we can support.","commit_id":"3d1c944f805ea68bbf331a357458bd81279ebdd4"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"bf9cfc873e092acfb0c59a4e5322a5ac5f0480ab","unresolved":false,"context_lines":[{"line_number":445,"context_line":"    resources0:PCPU\u003d8"},{"line_number":446,"context_line":"    trait0:HW_CPU_HYPERTHREADING\u003drequired"},{"line_number":447,"context_line":"    resources1:PCPU\u003d8"},{"line_number":448,"context_line":"    trait1:HW_CPU_HYPERTHREADING\u003drequired"},{"line_number":449,"context_line":""},{"line_number":450,"context_line":".. note::"},{"line_number":451,"context_line":""}],"source_content_type":"text/x-rst","patch_set":8,"id":"9f6a8fd7_08d10f58","line":448,"updated":"2018-04-27 19:57:32.000000000","message":"group_policy\u003disolate (I think?)","commit_id":"3d1c944f805ea68bbf331a357458bd81279ebdd4"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"4c936f748b4579693e02e7ed9b6fbd5eec0c2f48","unresolved":false,"context_lines":[{"line_number":445,"context_line":"    resources0:PCPU\u003d8"},{"line_number":446,"context_line":"    trait0:HW_CPU_HYPERTHREADING\u003drequired"},{"line_number":447,"context_line":"    resources1:PCPU\u003d8"},{"line_number":448,"context_line":"    trait1:HW_CPU_HYPERTHREADING\u003drequired"},{"line_number":449,"context_line":""},{"line_number":450,"context_line":".. note::"},{"line_number":451,"context_line":""}],"source_content_type":"text/x-rst","patch_set":8,"id":"9f6a8fd7_0817b347","line":448,"in_reply_to":"9f6a8fd7_08d10f58","updated":"2018-04-30 17:00:28.000000000","message":"Done","commit_id":"3d1c944f805ea68bbf331a357458bd81279ebdd4"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"bf9cfc873e092acfb0c59a4e5322a5ac5f0480ab","unresolved":false,"context_lines":[{"line_number":608,"context_line":".. _Support shared/dedicated vCPU in one instance: https://review.openstack.org/#/c/545734/"},{"line_number":609,"context_line":".. _Emulator threads policy: https://review.openstack.org/#/c/511188/"},{"line_number":610,"context_line":".. _NUMA topology with resource providers: https://review.openstack.org/#/c/552924/"},{"line_number":611,"context_line":".. _update_provider_tree: https://review.openstack.org/#/c/540111/"},{"line_number":612,"context_line":".. _granular request groups (Rocky): https://review.openstack.org/#/c/540179/"}],"source_content_type":"text/x-rst","patch_set":8,"id":"9f6a8fd7_e8cffbad","line":611,"range":{"start_line":611,"start_character":26,"end_line":611,"end_character":66},"updated":"2018-04-27 19:57:32.000000000","message":"link to real spec [1]\n\n[1] http://specs.openstack.org/openstack/nova-specs/specs/rocky/approved/update-provider-tree.html","commit_id":"3d1c944f805ea68bbf331a357458bd81279ebdd4"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"4c936f748b4579693e02e7ed9b6fbd5eec0c2f48","unresolved":false,"context_lines":[{"line_number":608,"context_line":".. _Support shared/dedicated vCPU in one instance: https://review.openstack.org/#/c/545734/"},{"line_number":609,"context_line":".. _Emulator threads policy: https://review.openstack.org/#/c/511188/"},{"line_number":610,"context_line":".. _NUMA topology with resource providers: https://review.openstack.org/#/c/552924/"},{"line_number":611,"context_line":".. _update_provider_tree: https://review.openstack.org/#/c/540111/"},{"line_number":612,"context_line":".. _granular request groups (Rocky): https://review.openstack.org/#/c/540179/"}],"source_content_type":"text/x-rst","patch_set":8,"id":"9f6a8fd7_e8491f60","line":611,"range":{"start_line":611,"start_character":26,"end_line":611,"end_character":66},"in_reply_to":"9f6a8fd7_e8cffbad","updated":"2018-04-30 17:00:28.000000000","message":"Done","commit_id":"3d1c944f805ea68bbf331a357458bd81279ebdd4"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"bf9cfc873e092acfb0c59a4e5322a5ac5f0480ab","unresolved":false,"context_lines":[{"line_number":609,"context_line":".. _Emulator threads policy: https://review.openstack.org/#/c/511188/"},{"line_number":610,"context_line":".. _NUMA topology with resource providers: https://review.openstack.org/#/c/552924/"},{"line_number":611,"context_line":".. _update_provider_tree: https://review.openstack.org/#/c/540111/"},{"line_number":612,"context_line":".. _granular request groups (Rocky): https://review.openstack.org/#/c/540179/"}],"source_content_type":"text/x-rst","patch_set":8,"id":"9f6a8fd7_c83f9785","line":612,"range":{"start_line":612,"start_character":37,"end_line":612,"end_character":77},"updated":"2018-04-27 19:57:32.000000000","message":"link to real spec [1] (especially since [2] doesn\u0027t include the group_policy business).\n\n[1] http://specs.openstack.org/openstack/nova-specs/specs/rocky/approved/granular-resource-requests.html\n[2] https://review.openstack.org/#/c/540179/","commit_id":"3d1c944f805ea68bbf331a357458bd81279ebdd4"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"4c936f748b4579693e02e7ed9b6fbd5eec0c2f48","unresolved":false,"context_lines":[{"line_number":609,"context_line":".. _Emulator threads policy: https://review.openstack.org/#/c/511188/"},{"line_number":610,"context_line":".. _NUMA topology with resource providers: https://review.openstack.org/#/c/552924/"},{"line_number":611,"context_line":".. _update_provider_tree: https://review.openstack.org/#/c/540111/"},{"line_number":612,"context_line":".. _granular request groups (Rocky): https://review.openstack.org/#/c/540179/"}],"source_content_type":"text/x-rst","patch_set":8,"id":"9f6a8fd7_8872e3ac","line":612,"range":{"start_line":612,"start_character":37,"end_line":612,"end_character":77},"in_reply_to":"9f6a8fd7_c83f9785","updated":"2018-04-30 17:00:28.000000000","message":"Done","commit_id":"3d1c944f805ea68bbf331a357458bd81279ebdd4"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"365c168e8372ce3cb2f597dc32441cadd4875886","unresolved":false,"context_lines":[{"line_number":40,"context_line":""},{"line_number":41,"context_line":"**physical processor**"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"A single logical processor on the host machine that is associated with a"},{"line_number":44,"context_line":"physical CPU core or hyperthread"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"**dedicated CPU**"},{"line_number":47,"context_line":""}],"source_content_type":"text/x-rst","patch_set":9,"id":"5f7c97a3_126874b8","line":44,"range":{"start_line":43,"start_character":0,"end_line":44,"end_character":32},"updated":"2018-05-29 10:46:41.000000000","message":"style nit: If you delete the line above this and indent the block by 2+ lines, you\u0027ll get a definition list which I think is what you want","commit_id":"23f3dd7422212c53186427d2b8450da4b2394c17"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"275243163c254487ebee29135eb3414378a0b0fc","unresolved":false,"context_lines":[{"line_number":40,"context_line":""},{"line_number":41,"context_line":"**physical processor**"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"A single logical processor on the host machine that is associated with a"},{"line_number":44,"context_line":"physical CPU core or hyperthread"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"**dedicated CPU**"},{"line_number":47,"context_line":""}],"source_content_type":"text/x-rst","patch_set":9,"id":"5f7c97a3_ba4d3b73","line":44,"range":{"start_line":43,"start_character":0,"end_line":44,"end_character":32},"in_reply_to":"5f7c97a3_126874b8","updated":"2018-05-29 20:33:54.000000000","message":"oh, cool, didn\u0027t know that. I\u0027ll do that on followup revision.","commit_id":"23f3dd7422212c53186427d2b8450da4b2394c17"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"365c168e8372ce3cb2f597dc32441cadd4875886","unresolved":false,"context_lines":[{"line_number":82,"context_line":"A host computer that has multiple physical processors arranged in a non-uniform"},{"line_number":83,"context_line":"memory access architecture."},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"**guest virtual CPU topology**"},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"When a guest wants its emulated CPU topology to contain a specific number of"},{"line_number":88,"context_line":"(virtual) sockets, cores and threads. This is typically useful for images that"},{"line_number":89,"context_line":"contain software that is licensed per socket/core."},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"**guest virtual NUMA topology**"},{"line_number":92,"context_line":""},{"line_number":93,"context_line":"When a guest wants its CPU resources arranged in a specific non-uniform memory"},{"line_number":94,"context_line":"architecture layout. A guest\u0027s virtual NUMA topology may or may not match an"},{"line_number":95,"context_line":"underlying host system\u0027s physical NUMA topology."},{"line_number":96,"context_line":""},{"line_number":97,"context_line":"**emulator thread**"},{"line_number":98,"context_line":""}],"source_content_type":"text/x-rst","patch_set":9,"id":"5f7c97a3_f2b3784c","line":95,"range":{"start_line":85,"start_character":0,"end_line":95,"end_character":48},"updated":"2018-05-29 10:46:41.000000000","message":"Aren\u0027t these the same thing? The real difference would be between how a guest looks internally and how it\u0027s allocated on the host across NUMA nodes","commit_id":"23f3dd7422212c53186427d2b8450da4b2394c17"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"275243163c254487ebee29135eb3414378a0b0fc","unresolved":false,"context_lines":[{"line_number":82,"context_line":"A host computer that has multiple physical processors arranged in a non-uniform"},{"line_number":83,"context_line":"memory access architecture."},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"**guest virtual CPU topology**"},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"When a guest wants its emulated CPU topology to contain a specific number of"},{"line_number":88,"context_line":"(virtual) sockets, cores and threads. This is typically useful for images that"},{"line_number":89,"context_line":"contain software that is licensed per socket/core."},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"**guest virtual NUMA topology**"},{"line_number":92,"context_line":""},{"line_number":93,"context_line":"When a guest wants its CPU resources arranged in a specific non-uniform memory"},{"line_number":94,"context_line":"architecture layout. A guest\u0027s virtual NUMA topology may or may not match an"},{"line_number":95,"context_line":"underlying host system\u0027s physical NUMA topology."},{"line_number":96,"context_line":""},{"line_number":97,"context_line":"**emulator thread**"},{"line_number":98,"context_line":""}],"source_content_type":"text/x-rst","patch_set":9,"id":"5f7c97a3_5a6747ea","line":95,"range":{"start_line":85,"start_character":0,"end_line":95,"end_character":48},"in_reply_to":"5f7c97a3_a6e20b2f","updated":"2018-05-29 20:33:54.000000000","message":"Right, which is why I separated the two definitions out :)","commit_id":"23f3dd7422212c53186427d2b8450da4b2394c17"},{"author":{"_account_id":8768,"name":"Chris Friesen","email":"chris.friesen@windriver.com","username":"cbf123"},"change_message_id":"3e5c82a127d109dc5101704d2b44805d40d02601","unresolved":false,"context_lines":[{"line_number":82,"context_line":"A host computer that has multiple physical processors arranged in a non-uniform"},{"line_number":83,"context_line":"memory access architecture."},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"**guest virtual CPU topology**"},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"When a guest wants its emulated CPU topology to contain a specific number of"},{"line_number":88,"context_line":"(virtual) sockets, cores and threads. This is typically useful for images that"},{"line_number":89,"context_line":"contain software that is licensed per socket/core."},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"**guest virtual NUMA topology**"},{"line_number":92,"context_line":""},{"line_number":93,"context_line":"When a guest wants its CPU resources arranged in a specific non-uniform memory"},{"line_number":94,"context_line":"architecture layout. A guest\u0027s virtual NUMA topology may or may not match an"},{"line_number":95,"context_line":"underlying host system\u0027s physical NUMA topology."},{"line_number":96,"context_line":""},{"line_number":97,"context_line":"**emulator thread**"},{"line_number":98,"context_line":""}],"source_content_type":"text/x-rst","patch_set":9,"id":"5f7c97a3_a6e20b2f","line":95,"range":{"start_line":85,"start_character":0,"end_line":95,"end_character":48},"in_reply_to":"5f7c97a3_f2b3784c","updated":"2018-05-29 16:37:29.000000000","message":"Arguably vCPU topology is related but distinct from the NUMA topology.  How many threads/cores/sockets you have is technically separate from how those threads/cores/sockets relate to your memory controllers.","commit_id":"23f3dd7422212c53186427d2b8450da4b2394c17"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"910fa1c7632864c55f7ad0d839a68aa2f435a43d","unresolved":false,"context_lines":[{"line_number":82,"context_line":"A host computer that has multiple physical processors arranged in a non-uniform"},{"line_number":83,"context_line":"memory access architecture."},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"**guest virtual CPU topology**"},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"When a guest wants its emulated CPU topology to contain a specific number of"},{"line_number":88,"context_line":"(virtual) sockets, cores and threads. This is typically useful for images that"},{"line_number":89,"context_line":"contain software that is licensed per socket/core."},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"**guest virtual NUMA topology**"},{"line_number":92,"context_line":""},{"line_number":93,"context_line":"When a guest wants its CPU resources arranged in a specific non-uniform memory"},{"line_number":94,"context_line":"architecture layout. A guest\u0027s virtual NUMA topology may or may not match an"},{"line_number":95,"context_line":"underlying host system\u0027s physical NUMA topology."},{"line_number":96,"context_line":""},{"line_number":97,"context_line":"**emulator thread**"},{"line_number":98,"context_line":""}],"source_content_type":"text/x-rst","patch_set":9,"id":"5f7c97a3_465bf7f4","line":95,"range":{"start_line":85,"start_character":0,"end_line":95,"end_character":48},"in_reply_to":"5f7c97a3_f2b3784c","updated":"2018-05-29 15:50:57.000000000","message":"no they are not at all.\nthe virtual cpu topology refers to the amount of sockets  ,cores and thread presented to the guest. this has no relation to how many numa nodes the host or guest has or the host cpu topology.\n\n\nsimilarly the guest numa topology is only about the memory config. we can affinities logical threads to numa nodes but they are completely independent configuration options.","commit_id":"23f3dd7422212c53186427d2b8450da4b2394c17"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"365c168e8372ce3cb2f597dc32441cadd4875886","unresolved":false,"context_lines":[{"line_number":172,"context_line":".. note::"},{"line_number":173,"context_line":""},{"line_number":174,"context_line":"    The existing ``CONF.vcpu_pin_set`` will be **deprecated** in the \"S\""},{"line_number":175,"context_line":"    release for removal in the \"T\" release. The CONF.cpu_dedicated_set and"},{"line_number":176,"context_line":"    CONF.cpu_shared_set make CONF.vcpu_pin_set irrelevant."},{"line_number":177,"context_line":""},{"line_number":178,"context_line":"For non-NUMA-configured host systems, the single compute node resource provider"}],"source_content_type":"text/x-rst","patch_set":9,"id":"5f7c97a3_32c1f081","line":175,"range":{"start_line":175,"start_character":48,"end_line":175,"end_character":70},"updated":"2018-05-29 10:46:41.000000000","message":"Missing some ``literals``","commit_id":"23f3dd7422212c53186427d2b8450da4b2394c17"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"275243163c254487ebee29135eb3414378a0b0fc","unresolved":false,"context_lines":[{"line_number":172,"context_line":".. note::"},{"line_number":173,"context_line":""},{"line_number":174,"context_line":"    The existing ``CONF.vcpu_pin_set`` will be **deprecated** in the \"S\""},{"line_number":175,"context_line":"    release for removal in the \"T\" release. The CONF.cpu_dedicated_set and"},{"line_number":176,"context_line":"    CONF.cpu_shared_set make CONF.vcpu_pin_set irrelevant."},{"line_number":177,"context_line":""},{"line_number":178,"context_line":"For non-NUMA-configured host systems, the single compute node resource provider"}],"source_content_type":"text/x-rst","patch_set":9,"id":"5f7c97a3_fa5f330c","line":175,"range":{"start_line":175,"start_character":48,"end_line":175,"end_character":70},"in_reply_to":"5f7c97a3_32c1f081","updated":"2018-05-29 20:33:54.000000000","message":"Done","commit_id":"23f3dd7422212c53186427d2b8450da4b2394c17"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"365c168e8372ce3cb2f597dc32441cadd4875886","unresolved":false,"context_lines":[{"line_number":171,"context_line":""},{"line_number":172,"context_line":".. note::"},{"line_number":173,"context_line":""},{"line_number":174,"context_line":"    The existing ``CONF.vcpu_pin_set`` will be **deprecated** in the \"S\""},{"line_number":175,"context_line":"    release for removal in the \"T\" release. The CONF.cpu_dedicated_set and"},{"line_number":176,"context_line":"    CONF.cpu_shared_set make CONF.vcpu_pin_set irrelevant."},{"line_number":177,"context_line":""},{"line_number":178,"context_line":"For non-NUMA-configured host systems, the single compute node resource provider"},{"line_number":179,"context_line":"will contain inventory records for ``VCPU`` and/or ``PCPU`` resources. For"}],"source_content_type":"text/x-rst","patch_set":9,"id":"5f7c97a3_52ca6ca1","line":176,"range":{"start_line":174,"start_character":0,"end_line":176,"end_character":58},"updated":"2018-05-29 10:46:41.000000000","message":"To be clear, we should fail to start if vcpu_pin_set is configured with one or both of the other options here. These are new options so we can do that","commit_id":"23f3dd7422212c53186427d2b8450da4b2394c17"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"5f21caa9d306ff9ea4f90f1f6e44d39019832ada","unresolved":false,"context_lines":[{"line_number":171,"context_line":""},{"line_number":172,"context_line":".. note::"},{"line_number":173,"context_line":""},{"line_number":174,"context_line":"    The existing ``CONF.vcpu_pin_set`` will be **deprecated** in the \"S\""},{"line_number":175,"context_line":"    release for removal in the \"T\" release. The CONF.cpu_dedicated_set and"},{"line_number":176,"context_line":"    CONF.cpu_shared_set make CONF.vcpu_pin_set irrelevant."},{"line_number":177,"context_line":""},{"line_number":178,"context_line":"For non-NUMA-configured host systems, the single compute node resource provider"},{"line_number":179,"context_line":"will contain inventory records for ``VCPU`` and/or ``PCPU`` resources. For"}],"source_content_type":"text/x-rst","patch_set":9,"id":"5f7c97a3_54ef131c","line":176,"range":{"start_line":174,"start_character":0,"end_line":176,"end_character":58},"in_reply_to":"5f7c97a3_3a984bbe","updated":"2018-05-30 09:08:14.000000000","message":"\u003e Not sure about that, Stephen. If the operator *only* sets\n \u003e CONF.cpu_dedicated_set, there would still be a need for\n \u003e CONF.vcpu_pin_set, right?\n\nWould there? What role would \u0027vcpu_pin_set\u0027 serve in this scenario? I thought \u0027cpu_dedicated_set\u0027 and \u0027cpu_shared_set\u0027 would replace \u0027vcpu_pin_set\u0027 entirely.","commit_id":"23f3dd7422212c53186427d2b8450da4b2394c17"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"275243163c254487ebee29135eb3414378a0b0fc","unresolved":false,"context_lines":[{"line_number":171,"context_line":""},{"line_number":172,"context_line":".. note::"},{"line_number":173,"context_line":""},{"line_number":174,"context_line":"    The existing ``CONF.vcpu_pin_set`` will be **deprecated** in the \"S\""},{"line_number":175,"context_line":"    release for removal in the \"T\" release. The CONF.cpu_dedicated_set and"},{"line_number":176,"context_line":"    CONF.cpu_shared_set make CONF.vcpu_pin_set irrelevant."},{"line_number":177,"context_line":""},{"line_number":178,"context_line":"For non-NUMA-configured host systems, the single compute node resource provider"},{"line_number":179,"context_line":"will contain inventory records for ``VCPU`` and/or ``PCPU`` resources. For"}],"source_content_type":"text/x-rst","patch_set":9,"id":"5f7c97a3_3a984bbe","line":176,"range":{"start_line":174,"start_character":0,"end_line":176,"end_character":58},"in_reply_to":"5f7c97a3_52ca6ca1","updated":"2018-05-29 20:33:54.000000000","message":"Not sure about that, Stephen. If the operator *only* sets CONF.cpu_dedicated_set, there would still be a need for CONF.vcpu_pin_set, right?\n\nPerhaps we should say that if *both* cpu_dedicated_set and cpu_shared_set are configured, that vcpu_pin_set is ignored?","commit_id":"23f3dd7422212c53186427d2b8450da4b2394c17"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"365c168e8372ce3cb2f597dc32441cadd4875886","unresolved":false,"context_lines":[{"line_number":183,"context_line":""},{"line_number":184,"context_line":".. note::"},{"line_number":185,"context_line":""},{"line_number":186,"context_line":"    This spec does not dictate *how* a host system will be configured to use"},{"line_number":187,"context_line":"    (or not use) NUMA. Presumably, there will be CONF option or similar toggle"},{"line_number":188,"context_line":"    to turn off NUMA configuration on certain host systems."},{"line_number":189,"context_line":""},{"line_number":190,"context_line":"As an example of a NUMA-configured host system, consider a host system with 2"},{"line_number":191,"context_line":"sockets, each with 24 physical cores and 2 hyperthreads per physical core."}],"source_content_type":"text/x-rst","patch_set":9,"id":"5f7c97a3_52582cf9","line":188,"range":{"start_line":186,"start_character":0,"end_line":188,"end_character":59},"updated":"2018-05-29 10:46:41.000000000","message":"This is confusing. FWIW, the only way you can disable this currently is in the BIOS or kernel command line. Why would nova ever care about this (as suggested by \"there will be [a] CONF option\")?","commit_id":"23f3dd7422212c53186427d2b8450da4b2394c17"},{"author":{"_account_id":8768,"name":"Chris Friesen","email":"chris.friesen@windriver.com","username":"cbf123"},"change_message_id":"3e5c82a127d109dc5101704d2b44805d40d02601","unresolved":false,"context_lines":[{"line_number":183,"context_line":""},{"line_number":184,"context_line":".. note::"},{"line_number":185,"context_line":""},{"line_number":186,"context_line":"    This spec does not dictate *how* a host system will be configured to use"},{"line_number":187,"context_line":"    (or not use) NUMA. Presumably, there will be CONF option or similar toggle"},{"line_number":188,"context_line":"    to turn off NUMA configuration on certain host systems."},{"line_number":189,"context_line":""},{"line_number":190,"context_line":"As an example of a NUMA-configured host system, consider a host system with 2"},{"line_number":191,"context_line":"sockets, each with 24 physical cores and 2 hyperthreads per physical core."}],"source_content_type":"text/x-rst","patch_set":9,"id":"5f7c97a3_a669ab8c","line":188,"range":{"start_line":186,"start_character":0,"end_line":188,"end_character":59},"in_reply_to":"5f7c97a3_52582cf9","updated":"2018-05-29 16:37:29.000000000","message":"If you run with NUMA enabled in the BIOS but with the kernel set to interleave memory accesses, won\u0027t it still show up as having multiple NUMA nodes to libvirt?  In that case I think we\u0027d need something to tell nova to ignore the numa nodes and treat it as having just one node.","commit_id":"23f3dd7422212c53186427d2b8450da4b2394c17"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"910fa1c7632864c55f7ad0d839a68aa2f435a43d","unresolved":false,"context_lines":[{"line_number":183,"context_line":""},{"line_number":184,"context_line":".. note::"},{"line_number":185,"context_line":""},{"line_number":186,"context_line":"    This spec does not dictate *how* a host system will be configured to use"},{"line_number":187,"context_line":"    (or not use) NUMA. Presumably, there will be CONF option or similar toggle"},{"line_number":188,"context_line":"    to turn off NUMA configuration on certain host systems."},{"line_number":189,"context_line":""},{"line_number":190,"context_line":"As an example of a NUMA-configured host system, consider a host system with 2"},{"line_number":191,"context_line":"sockets, each with 24 physical cores and 2 hyperthreads per physical core."}],"source_content_type":"text/x-rst","patch_set":9,"id":"5f7c97a3_e6f803c5","line":188,"range":{"start_line":186,"start_character":0,"end_line":188,"end_character":59},"in_reply_to":"5f7c97a3_52582cf9","updated":"2018-05-29 15:50:57.000000000","message":"because not all operators want to expose the numa topology of there hosts.","commit_id":"23f3dd7422212c53186427d2b8450da4b2394c17"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"9576b23c18b00c74bb331218b4b0125b4591eea7","unresolved":false,"context_lines":[{"line_number":183,"context_line":""},{"line_number":184,"context_line":".. note::"},{"line_number":185,"context_line":""},{"line_number":186,"context_line":"    This spec does not dictate *how* a host system will be configured to use"},{"line_number":187,"context_line":"    (or not use) NUMA. Presumably, there will be CONF option or similar toggle"},{"line_number":188,"context_line":"    to turn off NUMA configuration on certain host systems."},{"line_number":189,"context_line":""},{"line_number":190,"context_line":"As an example of a NUMA-configured host system, consider a host system with 2"},{"line_number":191,"context_line":"sockets, each with 24 physical cores and 2 hyperthreads per physical core."}],"source_content_type":"text/x-rst","patch_set":9,"id":"5f7c97a3_429cfe0c","line":188,"range":{"start_line":186,"start_character":0,"end_line":188,"end_character":59},"in_reply_to":"5f7c97a3_a669ab8c","updated":"2018-06-01 17:44:30.000000000","message":"interleave memory is a bios option. if you enable it then \ni do not belive the bios will report a numa topolgy to the kernel and the kernel will see eveyting attached to a singel numa node of -1.\n\ni have sever that can be configured this way but i have never had time to do it my self.","commit_id":"23f3dd7422212c53186427d2b8450da4b2394c17"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"365c168e8372ce3cb2f597dc32441cadd4875886","unresolved":false,"context_lines":[{"line_number":188,"context_line":"    to turn off NUMA configuration on certain host systems."},{"line_number":189,"context_line":""},{"line_number":190,"context_line":"As an example of a NUMA-configured host system, consider a host system with 2"},{"line_number":191,"context_line":"sockets, each with 24 physical cores and 2 hyperthreads per physical core."},{"line_number":192,"context_line":"Physical processors 0-47 are on one socket. Physical processors 48-95 are on"},{"line_number":193,"context_line":"the other."},{"line_number":194,"context_line":""}],"source_content_type":"text/x-rst","patch_set":9,"id":"5f7c97a3_d26bdc82","line":191,"range":{"start_line":191,"start_character":73,"end_line":191,"end_character":74},"updated":"2018-05-29 10:46:41.000000000","message":"so 96 cores total","commit_id":"23f3dd7422212c53186427d2b8450da4b2394c17"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"275243163c254487ebee29135eb3414378a0b0fc","unresolved":false,"context_lines":[{"line_number":188,"context_line":"    to turn off NUMA configuration on certain host systems."},{"line_number":189,"context_line":""},{"line_number":190,"context_line":"As an example of a NUMA-configured host system, consider a host system with 2"},{"line_number":191,"context_line":"sockets, each with 24 physical cores and 2 hyperthreads per physical core."},{"line_number":192,"context_line":"Physical processors 0-47 are on one socket. Physical processors 48-95 are on"},{"line_number":193,"context_line":"the other."},{"line_number":194,"context_line":""}],"source_content_type":"text/x-rst","patch_set":9,"id":"5f7c97a3_bae9bb1a","line":191,"range":{"start_line":191,"start_character":73,"end_line":191,"end_character":74},"in_reply_to":"5f7c97a3_d26bdc82","updated":"2018-05-29 20:33:54.000000000","message":"No. 96 physical processors. :) We are specifically attempting to *not* use the term \"core\" unless explicitly referring to a physical host core.","commit_id":"23f3dd7422212c53186427d2b8450da4b2394c17"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"365c168e8372ce3cb2f597dc32441cadd4875886","unresolved":false,"context_lines":[{"line_number":194,"context_line":""},{"line_number":195,"context_line":".. note::"},{"line_number":196,"context_line":""},{"line_number":197,"context_line":"    This is a simplified example. Real-world NUMA systems often number their"},{"line_number":198,"context_line":"    physical processors using a more complicated scheme."},{"line_number":199,"context_line":""},{"line_number":200,"context_line":"The operator wishes to reserve the first physical core and its hyperthreads on"},{"line_number":201,"context_line":"each socket for the host\u0027s use. Furthermore, the operator wants to use 8 of"}],"source_content_type":"text/x-rst","patch_set":9,"id":"5f7c97a3_32f490cf","line":198,"range":{"start_line":197,"start_character":0,"end_line":198,"end_character":56},"updated":"2018-05-29 10:46:41.000000000","message":"You\u0027ve also got things like Cluster-on-Die so a NUMA node !\u003d socket. Likwise, if NUMA is disabled on the host, I think CPUs from both sockets would be combined and appear to be one NUMA node. That may be took much detail but I\u0027d call it out somewhere so we don\u0027t end up conflating these things.","commit_id":"23f3dd7422212c53186427d2b8450da4b2394c17"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"5f21caa9d306ff9ea4f90f1f6e44d39019832ada","unresolved":false,"context_lines":[{"line_number":194,"context_line":""},{"line_number":195,"context_line":".. note::"},{"line_number":196,"context_line":""},{"line_number":197,"context_line":"    This is a simplified example. Real-world NUMA systems often number their"},{"line_number":198,"context_line":"    physical processors using a more complicated scheme."},{"line_number":199,"context_line":""},{"line_number":200,"context_line":"The operator wishes to reserve the first physical core and its hyperthreads on"},{"line_number":201,"context_line":"each socket for the host\u0027s use. Furthermore, the operator wants to use 8 of"}],"source_content_type":"text/x-rst","patch_set":9,"id":"5f7c97a3_c127f1c6","line":198,"range":{"start_line":197,"start_character":0,"end_line":198,"end_character":56},"in_reply_to":"5f7c97a3_08e66eb1","updated":"2018-05-30 09:08:14.000000000","message":"\u003e I don\u0027t think the sockets would be combined to appear to be one,\n \u003e like I don\u0027t think you can disable NUMA.\n \nAs Sean notes, you can disable this at both the hardware and software level. We (Red Hat) even have documentation about the latter:\n\n  https://access.redhat.com/solutions/23216\n\n \u003e It\u0027s all about OS, it is going to make bad decisions. For example\n \u003e It will try to move a process from one core to an other without\n \u003e taking the distance into account which will increase latency by\n \u003e creating remote memory access.\n\nI\u0027m not saying any of these things are desirable. I\u0027m saying they exist and do need to be accounted for. Burying our heads in sand isn\u0027t a viable solution.\n\n \u003e As... We don\u0027t want to have guest numa nodes fitting into one host\n \u003e numa node. The guest OS will make bad decisions thinking that it\n \u003e can\u0027t move a process to an other core that because that would cause\n \u003e remote memory access. which would be wrong and creating congestion\n \u003e + latency.\n\nI bring this up because using multiple smaller NUMA nodes is the only way to fill a partially occupied host, e.g. if a 2 node, 16 core per node machine has 8 cores utilized from the first node, you can boot an instance with \u0027hw:numa_nodes\u003d6\u0027 to fully utilize this. It seems we\u0027ll be able to solve this in the future with \u0027group_policy\u003dnone\u0027 though so I\u0027m happy.","commit_id":"23f3dd7422212c53186427d2b8450da4b2394c17"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"910fa1c7632864c55f7ad0d839a68aa2f435a43d","unresolved":false,"context_lines":[{"line_number":194,"context_line":""},{"line_number":195,"context_line":".. note::"},{"line_number":196,"context_line":""},{"line_number":197,"context_line":"    This is a simplified example. Real-world NUMA systems often number their"},{"line_number":198,"context_line":"    physical processors using a more complicated scheme."},{"line_number":199,"context_line":""},{"line_number":200,"context_line":"The operator wishes to reserve the first physical core and its hyperthreads on"},{"line_number":201,"context_line":"each socket for the host\u0027s use. Furthermore, the operator wants to use 8 of"}],"source_content_type":"text/x-rst","patch_set":9,"id":"5f7c97a3_ab6f3426","line":198,"range":{"start_line":197,"start_character":0,"end_line":198,"end_character":56},"in_reply_to":"5f7c97a3_08e66eb1","updated":"2018-05-29 15:50:57.000000000","message":"by default both numa nodes on intel process withmore then 10 cores are presented as a single numa node to the os as culter on die is off by default.\n\nNuma can be be disable on most server systems by configuring node interlaved memory mode.\nnode interlaved memory mode is a fimerware level configuration and change how physical memory is present to the os.\n\nI proposed some tratis to model that a while back but never followed up.\nhttps://review.openstack.org/#/c/514737/2/os_traits/fw/common.py\n\nwhen a system is configured in node interleaved mode each byte address in the physical page tables is assigned in a round robin fasion so if you have a dual socket system with 2 memory controller per socket(cluster on die on) that will result in 4 numa node with memory interleaving off.\nIf you read or write a 32bit int in that will be handeled by 1 of the 4 memory contolers.\n\nWith node level memory interleaving on each sequential byte of address space will be allocated form a different Memory controller and as a result the same read or write to the 32bit int will be handeld by all 4 memory controllers in parallel.\nCheck ot https://en.wikipedia.org/wiki/Interleaved_memory for a nice gif. \nMemory interleaving significantly increases memory bandwidth by always using all memory controllers at the cost of Increased memory latency as all reads an writes must now cross the qpi bus.","commit_id":"23f3dd7422212c53186427d2b8450da4b2394c17"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"b3ff8c099a84e6a64ed8e0bc2258b6c5a5e7f732","unresolved":false,"context_lines":[{"line_number":194,"context_line":""},{"line_number":195,"context_line":".. note::"},{"line_number":196,"context_line":""},{"line_number":197,"context_line":"    This is a simplified example. Real-world NUMA systems often number their"},{"line_number":198,"context_line":"    physical processors using a more complicated scheme."},{"line_number":199,"context_line":""},{"line_number":200,"context_line":"The operator wishes to reserve the first physical core and its hyperthreads on"},{"line_number":201,"context_line":"each socket for the host\u0027s use. Furthermore, the operator wants to use 8 of"}],"source_content_type":"text/x-rst","patch_set":9,"id":"5f7c97a3_08e66eb1","line":198,"range":{"start_line":197,"start_character":0,"end_line":198,"end_character":56},"in_reply_to":"5f7c97a3_32f490cf","updated":"2018-05-29 14:03:11.000000000","message":"I don\u0027t think the sockets would be combined to appear to be one, like I don\u0027t think you can disable NUMA.\n\nIt\u0027s all about OS, it is going to make bad decisions. For example It will try to move a process from one core to an other without taking the distance into account which will increase latency by creating remote memory access.\n\nAs... We don\u0027t want to have guest numa nodes fitting into one host numa node. The guest OS will make bad decisions thinking that it can\u0027t move a process to an other core that because that would cause remote memory access. which would be wrong and creating congestion + latency.","commit_id":"23f3dd7422212c53186427d2b8450da4b2394c17"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"cf19c8d4f914f7dd8e334f6c6225131386be3ecb","unresolved":false,"context_lines":[{"line_number":194,"context_line":""},{"line_number":195,"context_line":".. note::"},{"line_number":196,"context_line":""},{"line_number":197,"context_line":"    This is a simplified example. Real-world NUMA systems often number their"},{"line_number":198,"context_line":"    physical processors using a more complicated scheme."},{"line_number":199,"context_line":""},{"line_number":200,"context_line":"The operator wishes to reserve the first physical core and its hyperthreads on"},{"line_number":201,"context_line":"each socket for the host\u0027s use. Furthermore, the operator wants to use 8 of"}],"source_content_type":"text/x-rst","patch_set":9,"id":"5f7c97a3_de7a4bef","line":198,"range":{"start_line":197,"start_character":0,"end_line":198,"end_character":56},"in_reply_to":"5f7c97a3_c127f1c6","updated":"2018-05-31 07:24:36.000000000","message":"it\u0027s all about hardware. You can disable or fake everything you want in software level. It remain one socket connected to a set of bank of memory.\n\nThe whole NUMA thing is basically a cartography for the scheduler to help it making good decisions. If you disable that in the kernel level as you have suggested you are just going to decrease the performance. So the use case to make pretending the host is a single node to pin more guest CPUs in one node is probably not a valid use-case.\n\nI do not know much about COD my understanding is we do more partitioning but again the hardware stay the same. You can do the same thing by isolating CPU and doing pinning. The only benchmark I found was not really clear about the setup. I can\u0027t argue more than that.","commit_id":"23f3dd7422212c53186427d2b8450da4b2394c17"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"d7d6d93bef40eb8e09cb4ce89083e9a7164ce013","unresolved":false,"context_lines":[{"line_number":194,"context_line":""},{"line_number":195,"context_line":".. note::"},{"line_number":196,"context_line":""},{"line_number":197,"context_line":"    This is a simplified example. Real-world NUMA systems often number their"},{"line_number":198,"context_line":"    physical processors using a more complicated scheme."},{"line_number":199,"context_line":""},{"line_number":200,"context_line":"The operator wishes to reserve the first physical core and its hyperthreads on"},{"line_number":201,"context_line":"each socket for the host\u0027s use. Furthermore, the operator wants to use 8 of"}],"source_content_type":"text/x-rst","patch_set":9,"id":"5f7c97a3_0faacb6f","line":198,"range":{"start_line":197,"start_character":0,"end_line":198,"end_character":56},"in_reply_to":"5f7c97a3_de7a4bef","updated":"2018-05-31 10:13:31.000000000","message":"\u003e it\u0027s all about hardware. You can disable or fake everything you\n \u003e want in software level. It remain one socket connected to a set of\n \u003e bank of memory.\n \u003e \n \u003e The whole NUMA thing is basically a cartography for the scheduler\n \u003e to help it making good decisions. If you disable that in the kernel\n \u003e level as you have suggested you are just going to decrease the\n \u003e performance. So the use case to make pretending the host is a\n \u003e single node to pin more guest CPUs in one node is probably not a\n \u003e valid use-case.\n \u003e \n \u003e I do not know much about COD my understanding is we do more\n \u003e partitioning but again the hardware stay the same. You can do the\n \u003e same thing by isolating CPU and doing pinning. The only benchmark I\n \u003e found was not really clear about the setup. I can\u0027t argue more than\n \u003e that.\n\nI\u0027m not disagreeing with any of that. I\u0027m merely saying, depending on host hardware/configuration, socket !\u003d NUMA node.","commit_id":"23f3dd7422212c53186427d2b8450da4b2394c17"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"365c168e8372ce3cb2f597dc32441cadd4875886","unresolved":false,"context_lines":[{"line_number":200,"context_line":"The operator wishes to reserve the first physical core and its hyperthreads on"},{"line_number":201,"context_line":"each socket for the host\u0027s use. Furthermore, the operator wants to use 8 of"},{"line_number":202,"context_line":"each socket\u0027s physical cores (16 physical processors per socket) for dedicated"},{"line_number":203,"context_line":"CPU resources and the remaining physical processors will be for shared CPU"},{"line_number":204,"context_line":"resources. For the shared CPU resources, the operator wants to allow an"},{"line_number":205,"context_line":"oversubscription of 8 guest CPUs to each physical processor."},{"line_number":206,"context_line":""}],"source_content_type":"text/x-rst","patch_set":9,"id":"5f7c97a3_f2993879","line":203,"range":{"start_line":203,"start_character":22,"end_line":203,"end_character":51},"updated":"2018-05-29 10:46:41.000000000","message":"remaining 15 physical cores on the socket (30 physical processors)\n\n...because KISS","commit_id":"23f3dd7422212c53186427d2b8450da4b2394c17"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"275243163c254487ebee29135eb3414378a0b0fc","unresolved":false,"context_lines":[{"line_number":200,"context_line":"The operator wishes to reserve the first physical core and its hyperthreads on"},{"line_number":201,"context_line":"each socket for the host\u0027s use. Furthermore, the operator wants to use 8 of"},{"line_number":202,"context_line":"each socket\u0027s physical cores (16 physical processors per socket) for dedicated"},{"line_number":203,"context_line":"CPU resources and the remaining physical processors will be for shared CPU"},{"line_number":204,"context_line":"resources. For the shared CPU resources, the operator wants to allow an"},{"line_number":205,"context_line":"oversubscription of 8 guest CPUs to each physical processor."},{"line_number":206,"context_line":""}],"source_content_type":"text/x-rst","patch_set":9,"id":"5f7c97a3_7a0b23d4","line":203,"range":{"start_line":203,"start_character":22,"end_line":203,"end_character":51},"in_reply_to":"5f7c97a3_f2993879","updated":"2018-05-29 20:33:54.000000000","message":"Done","commit_id":"23f3dd7422212c53186427d2b8450da4b2394c17"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"365c168e8372ce3cb2f597dc32441cadd4875886","unresolved":false,"context_lines":[{"line_number":202,"context_line":"each socket\u0027s physical cores (16 physical processors per socket) for dedicated"},{"line_number":203,"context_line":"CPU resources and the remaining physical processors will be for shared CPU"},{"line_number":204,"context_line":"resources. For the shared CPU resources, the operator wants to allow an"},{"line_number":205,"context_line":"oversubscription of 8 guest CPUs to each physical processor."},{"line_number":206,"context_line":""},{"line_number":207,"context_line":"The operator would set the CONF options like so::"},{"line_number":208,"context_line":""}],"source_content_type":"text/x-rst","patch_set":9,"id":"5f7c97a3_5297cc3b","line":205,"range":{"start_line":205,"start_character":0,"end_line":205,"end_character":60},"updated":"2018-05-29 10:46:41.000000000","message":"This reads confusingly to me at least. I thought you meant 30 + 8, as opposed to an 8.0 overallocation ratio, which is what\u0027s implied below. Not sure how to reword though. Perhaps simply s/oversubscription/overallocation ratio/","commit_id":"23f3dd7422212c53186427d2b8450da4b2394c17"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"275243163c254487ebee29135eb3414378a0b0fc","unresolved":false,"context_lines":[{"line_number":202,"context_line":"each socket\u0027s physical cores (16 physical processors per socket) for dedicated"},{"line_number":203,"context_line":"CPU resources and the remaining physical processors will be for shared CPU"},{"line_number":204,"context_line":"resources. For the shared CPU resources, the operator wants to allow an"},{"line_number":205,"context_line":"oversubscription of 8 guest CPUs to each physical processor."},{"line_number":206,"context_line":""},{"line_number":207,"context_line":"The operator would set the CONF options like so::"},{"line_number":208,"context_line":""}],"source_content_type":"text/x-rst","patch_set":9,"id":"5f7c97a3_da0a77d0","line":205,"range":{"start_line":205,"start_character":0,"end_line":205,"end_character":60},"in_reply_to":"5f7c97a3_5297cc3b","updated":"2018-05-29 20:33:54.000000000","message":"Done","commit_id":"23f3dd7422212c53186427d2b8450da4b2394c17"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"365c168e8372ce3cb2f597dc32441cadd4875886","unresolved":false,"context_lines":[{"line_number":208,"context_line":""},{"line_number":209,"context_line":"    [compute]"},{"line_number":210,"context_line":"    cpu_dedicated_set\u003d2-17,50-65"},{"line_number":211,"context_line":"    cpu_shared_set\u003d18-47,66-95"},{"line_number":212,"context_line":""},{"line_number":213,"context_line":"The virt driver will construct a provider tree containing two NUMA node child"},{"line_number":214,"context_line":"providers of the parent compute node resource provider and report inventory for"}],"source_content_type":"text/x-rst","patch_set":9,"id":"5f7c97a3_f2a7f8a6","line":211,"range":{"start_line":211,"start_character":0,"end_line":211,"end_character":30},"updated":"2018-05-29 10:46:41.000000000","message":"No overcommit parameters here? I recall something about those being deprecated but I\u0027m not sure how they\u0027re set now. Do we assume context or briefly describe below (via link to a spec) how the 8.0 figure is being set?","commit_id":"23f3dd7422212c53186427d2b8450da4b2394c17"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"275243163c254487ebee29135eb3414378a0b0fc","unresolved":false,"context_lines":[{"line_number":208,"context_line":""},{"line_number":209,"context_line":"    [compute]"},{"line_number":210,"context_line":"    cpu_dedicated_set\u003d2-17,50-65"},{"line_number":211,"context_line":"    cpu_shared_set\u003d18-47,66-95"},{"line_number":212,"context_line":""},{"line_number":213,"context_line":"The virt driver will construct a provider tree containing two NUMA node child"},{"line_number":214,"context_line":"providers of the parent compute node resource provider and report inventory for"}],"source_content_type":"text/x-rst","patch_set":9,"id":"5f7c97a3_1afc6fb3","line":211,"range":{"start_line":211,"start_character":0,"end_line":211,"end_character":30},"in_reply_to":"5f7c97a3_f2a7f8a6","updated":"2018-05-29 20:33:54.000000000","message":"Done","commit_id":"23f3dd7422212c53186427d2b8450da4b2394c17"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"910fa1c7632864c55f7ad0d839a68aa2f435a43d","unresolved":false,"context_lines":[{"line_number":208,"context_line":""},{"line_number":209,"context_line":"    [compute]"},{"line_number":210,"context_line":"    cpu_dedicated_set\u003d2-17,50-65"},{"line_number":211,"context_line":"    cpu_shared_set\u003d18-47,66-95"},{"line_number":212,"context_line":""},{"line_number":213,"context_line":"The virt driver will construct a provider tree containing two NUMA node child"},{"line_number":214,"context_line":"providers of the parent compute node resource provider and report inventory for"}],"source_content_type":"text/x-rst","patch_set":9,"id":"5f7c97a3_c614e7eb","line":211,"range":{"start_line":211,"start_character":0,"end_line":211,"end_character":30},"in_reply_to":"5f7c97a3_f2a7f8a6","updated":"2018-05-29 15:50:57.000000000","message":"over commit is set by setting the placement allocation_raitio for the RPs corresponding to the shared cpu set.\n\nit can also be set in aggregate metadata but i cant recall if we fixed that or if it is still broken.","commit_id":"23f3dd7422212c53186427d2b8450da4b2394c17"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"365c168e8372ce3cb2f597dc32441cadd4875886","unresolved":false,"context_lines":[{"line_number":272,"context_line":""},{"line_number":273,"context_line":".. note::"},{"line_number":274,"context_line":""},{"line_number":275,"context_line":"    The existing ``hw:cpu_policy\u003ddedicated|shared`` flavor extra spec and image"},{"line_number":276,"context_line":"    property will be **deprecated** in the \"S\" release for removal in the \"T\""},{"line_number":277,"context_line":"    release. This extra spec will be irrelevant when flavors can indicate the"},{"line_number":278,"context_line":"    exact number of dedicated and shared CPU resources they require."},{"line_number":279,"context_line":""},{"line_number":280,"context_line":"When the guest DOES NOT want a virtual CPU topology"},{"line_number":281,"context_line":"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"}],"source_content_type":"text/x-rst","patch_set":9,"id":"5f7c97a3_4358ce88","line":278,"range":{"start_line":275,"start_character":0,"end_line":278,"end_character":68},"updated":"2018-05-29 10:46:41.000000000","message":"I assume you also plan on deprecating the \u0027hw:numa_nodes\u0027 and \u0027hw:cpu_sockets\u0027, \u0027hw:cpu_cores\u0027 and \u0027hw:cpu_threads\u0027 extra specs and image properties, right? What about \u0027hw:numa_cpus.N\u0027 and \u0027hw:numa_mem.N\u0027? Can these be represented in a model?","commit_id":"23f3dd7422212c53186427d2b8450da4b2394c17"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"910fa1c7632864c55f7ad0d839a68aa2f435a43d","unresolved":false,"context_lines":[{"line_number":272,"context_line":""},{"line_number":273,"context_line":".. note::"},{"line_number":274,"context_line":""},{"line_number":275,"context_line":"    The existing ``hw:cpu_policy\u003ddedicated|shared`` flavor extra spec and image"},{"line_number":276,"context_line":"    property will be **deprecated** in the \"S\" release for removal in the \"T\""},{"line_number":277,"context_line":"    release. This extra spec will be irrelevant when flavors can indicate the"},{"line_number":278,"context_line":"    exact number of dedicated and shared CPU resources they require."},{"line_number":279,"context_line":""},{"line_number":280,"context_line":"When the guest DOES NOT want a virtual CPU topology"},{"line_number":281,"context_line":"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"}],"source_content_type":"text/x-rst","patch_set":9,"id":"5f7c97a3_e6cfa37c","line":278,"range":{"start_line":275,"start_character":0,"end_line":278,"end_character":68},"in_reply_to":"5f7c97a3_4358ce88","updated":"2018-05-29 15:50:57.000000000","message":"we cant deprecate those. the current spec does not provide an alternitve way to configure those properties of the guest.\nthe only item that was proposed to be deprecated was hw:cpu_policy as this would become pCPU or vCPU resouce requests. \n\nplacement has no concept of virtual toplogy so we cannot model the hw:cpu_* extraspect in placement ever.","commit_id":"23f3dd7422212c53186427d2b8450da4b2394c17"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"365c168e8372ce3cb2f597dc32441cadd4875886","unresolved":false,"context_lines":[{"line_number":295,"context_line":"multiple NUMA node child resource providers, we would need the flavor extra"},{"line_number":296,"context_line":"specs to look like this::"},{"line_number":297,"context_line":""},{"line_number":298,"context_line":"    resources1:PCPU\u003d1"},{"line_number":299,"context_line":"    resources2:PCPU\u003d1"},{"line_number":300,"context_line":"    resources3:PCPU\u003d1"},{"line_number":301,"context_line":"    resources4:PCPU\u003d1"},{"line_number":302,"context_line":"    group_policy\u003dnone"},{"line_number":303,"context_line":""},{"line_number":304,"context_line":"The providers of these resources may be the root compute node resource provider"},{"line_number":305,"context_line":"**or** one or more **host** NUMA node child providers, depending on whether the"}],"source_content_type":"text/x-rst","patch_set":9,"id":"5f7c97a3_63eb8a77","line":302,"range":{"start_line":298,"start_character":0,"end_line":302,"end_character":21},"updated":"2018-05-29 10:46:41.000000000","message":"I have to call a spade a spade here and note that, compared to \u0027hw:cpu_policy\u003ddedicated\u0027, this is strangely convoluted. I cannot envision how a user would _not_ want their cores placed on a single NUMA node _except_ if they were willing to suffer performance penalties for the sake of maximum resource utilization and, even if that were the case, why would they not use VCPUs (e.g. \u0027hw:cpu_policy\u003dshared\u0027) and simply lower the overcommit ratio to 0?\n\nAssuming I\u0027ve understood this correctly, I\u0027d rather we defaulted to suggesting users continue allocating N cores from a single NUMA node and call this out as an option for users who wish to squeeze instances into a heavily utilized cloud for whatever odd reasons. Perhaps move this down as the last option too, as it\u0027s surely going to be the less common path.\n\nEDIT: I see Tetsuro called this out below. I\u0027m not sure that this has been answered.","commit_id":"23f3dd7422212c53186427d2b8450da4b2394c17"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"275243163c254487ebee29135eb3414378a0b0fc","unresolved":false,"context_lines":[{"line_number":295,"context_line":"multiple NUMA node child resource providers, we would need the flavor extra"},{"line_number":296,"context_line":"specs to look like this::"},{"line_number":297,"context_line":""},{"line_number":298,"context_line":"    resources1:PCPU\u003d1"},{"line_number":299,"context_line":"    resources2:PCPU\u003d1"},{"line_number":300,"context_line":"    resources3:PCPU\u003d1"},{"line_number":301,"context_line":"    resources4:PCPU\u003d1"},{"line_number":302,"context_line":"    group_policy\u003dnone"},{"line_number":303,"context_line":""},{"line_number":304,"context_line":"The providers of these resources may be the root compute node resource provider"},{"line_number":305,"context_line":"**or** one or more **host** NUMA node child providers, depending on whether the"}],"source_content_type":"text/x-rst","patch_set":9,"id":"5f7c97a3_babc5bdc","line":302,"range":{"start_line":298,"start_character":0,"end_line":302,"end_character":21},"in_reply_to":"5f7c97a3_63eb8a77","updated":"2018-05-29 20:33:54.000000000","message":"\u003e I have to call a spade a spade here and note that, compared to\n \u003e \u0027hw:cpu_policy\u003ddedicated\u0027, this is strangely convoluted. I cannot\n \u003e envision how a user would _not_ want their cores placed on a single\n \u003e NUMA node _except_ if they were willing to suffer performance\n \u003e penalties for the sake of maximum resource utilization and, even if\n \u003e that were the case, why would they not use VCPUs (e.g.\n \u003e \u0027hw:cpu_policy\u003dshared\u0027) and simply lower the overcommit ratio to 0?\n\nWelcome to the \"great compromise\" of how to indicate a tolerance for spreading like resources over one or more resource providers. :(\n\nI agree that the resources1:PCPU\u003d1,resources2:PCPU\u003d1,resources3:PCPU\u003d1,resources4:PCPU\u003d1 is both ugly and convoluted. Unfortunately, that\u0027s what we decided to go with instead of having an explicit \"allow_split_resources\u003dPCPU\" query param.\n\nSee here:\n\nhttps://review.openstack.org/#/c/560974/\n\nand here:\n\nhttps://review.openstack.org/#/c/562687/\n\nFrankly, I got tired of arguing and just accepted the proposed compromise. There are definite pros and cons to each approach.\n\n \u003e Assuming I\u0027ve understood this correctly, I\u0027d rather we defaulted to\n \u003e suggesting users continue allocating N cores from a single NUMA\n \u003e node and call this out as an option for users who wish to squeeze\n \u003e instances into a heavily utilized cloud for whatever odd reasons.\n \u003e Perhaps move this down as the last option too, as it\u0027s surely going\n \u003e to be the less common path.\n\nI can move this scenario to the end of the list if you really want me to, sure.\n\n \u003e EDIT: I see Tetsuro called this out below. I\u0027m not sure that this\n \u003e has been answered.","commit_id":"23f3dd7422212c53186427d2b8450da4b2394c17"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"910fa1c7632864c55f7ad0d839a68aa2f435a43d","unresolved":false,"context_lines":[{"line_number":295,"context_line":"multiple NUMA node child resource providers, we would need the flavor extra"},{"line_number":296,"context_line":"specs to look like this::"},{"line_number":297,"context_line":""},{"line_number":298,"context_line":"    resources1:PCPU\u003d1"},{"line_number":299,"context_line":"    resources2:PCPU\u003d1"},{"line_number":300,"context_line":"    resources3:PCPU\u003d1"},{"line_number":301,"context_line":"    resources4:PCPU\u003d1"},{"line_number":302,"context_line":"    group_policy\u003dnone"},{"line_number":303,"context_line":""},{"line_number":304,"context_line":"The providers of these resources may be the root compute node resource provider"},{"line_number":305,"context_line":"**or** one or more **host** NUMA node child providers, depending on whether the"}],"source_content_type":"text/x-rst","patch_set":9,"id":"5f7c97a3_668ab31b","line":302,"range":{"start_line":298,"start_character":0,"end_line":302,"end_character":21},"in_reply_to":"5f7c97a3_63eb8a77","updated":"2018-05-29 15:50:57.000000000","message":"they would want this case when the want to maximise memory bandwtih. in the above case they would be spread across 4 numa nodes and would be able to use all 4 memory controller in paralle. in the singel numa case they they will have all memory allcoated from a singel memory controller. that would give them better inter core latency but 1/4 of the total memory throughput.","commit_id":"23f3dd7422212c53186427d2b8450da4b2394c17"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"275243163c254487ebee29135eb3414378a0b0fc","unresolved":false,"context_lines":[{"line_number":295,"context_line":"multiple NUMA node child resource providers, we would need the flavor extra"},{"line_number":296,"context_line":"specs to look like this::"},{"line_number":297,"context_line":""},{"line_number":298,"context_line":"    resources1:PCPU\u003d1"},{"line_number":299,"context_line":"    resources2:PCPU\u003d1"},{"line_number":300,"context_line":"    resources3:PCPU\u003d1"},{"line_number":301,"context_line":"    resources4:PCPU\u003d1"},{"line_number":302,"context_line":"    group_policy\u003dnone"},{"line_number":303,"context_line":""},{"line_number":304,"context_line":"The providers of these resources may be the root compute node resource provider"},{"line_number":305,"context_line":"**or** one or more **host** NUMA node child providers, depending on whether the"}],"source_content_type":"text/x-rst","patch_set":9,"id":"5f7c97a3_9ab71ff6","line":302,"range":{"start_line":298,"start_character":0,"end_line":302,"end_character":21},"in_reply_to":"5f7c97a3_668ab31b","updated":"2018-05-29 20:33:54.000000000","message":"\u003e they would want this case when the want to maximise memory\n \u003e bandwtih. in the above case they would be spread across 4 numa\n \u003e nodes and would be able to use all 4 memory controller in paralle.\n\nSean, no, that would be the group_policy\u003disolate option, not the group_policy\u003dnone option that is shown here.","commit_id":"23f3dd7422212c53186427d2b8450da4b2394c17"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"9576b23c18b00c74bb331218b4b0125b4591eea7","unresolved":false,"context_lines":[{"line_number":295,"context_line":"multiple NUMA node child resource providers, we would need the flavor extra"},{"line_number":296,"context_line":"specs to look like this::"},{"line_number":297,"context_line":""},{"line_number":298,"context_line":"    resources1:PCPU\u003d1"},{"line_number":299,"context_line":"    resources2:PCPU\u003d1"},{"line_number":300,"context_line":"    resources3:PCPU\u003d1"},{"line_number":301,"context_line":"    resources4:PCPU\u003d1"},{"line_number":302,"context_line":"    group_policy\u003dnone"},{"line_number":303,"context_line":""},{"line_number":304,"context_line":"The providers of these resources may be the root compute node resource provider"},{"line_number":305,"context_line":"**or** one or more **host** NUMA node child providers, depending on whether the"}],"source_content_type":"text/x-rst","patch_set":9,"id":"5f7c97a3_42387eec","line":302,"range":{"start_line":298,"start_character":0,"end_line":302,"end_character":21},"in_reply_to":"5f7c97a3_9ab71ff6","updated":"2018-06-01 17:44:30.000000000","message":"yep sorry i missed the group policy option when i replied. thats what i get for rushin a review before a meeting :)","commit_id":"23f3dd7422212c53186427d2b8450da4b2394c17"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"365c168e8372ce3cb2f597dc32441cadd4875886","unresolved":false,"context_lines":[{"line_number":301,"context_line":"    resources4:PCPU\u003d1"},{"line_number":302,"context_line":"    group_policy\u003dnone"},{"line_number":303,"context_line":""},{"line_number":304,"context_line":"The providers of these resources may be the root compute node resource provider"},{"line_number":305,"context_line":"**or** one or more **host** NUMA node child providers, depending on whether the"},{"line_number":306,"context_line":"host system is a NUMA system."},{"line_number":307,"context_line":""},{"line_number":308,"context_line":"When the guest DOES want a virtual NUMA topology"},{"line_number":309,"context_line":"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"}],"source_content_type":"text/x-rst","patch_set":9,"id":"5f7c97a3_038976c8","line":306,"range":{"start_line":304,"start_character":0,"end_line":306,"end_character":29},"updated":"2018-05-29 10:46:41.000000000","message":"I\u0027ll note that I still don\u0027t know why we didn\u0027t model all systems as NUMA systems, with the rare non-NUMA system represented as a single-node. Is it too late to change tack here?","commit_id":"23f3dd7422212c53186427d2b8450da4b2394c17"},{"author":{"_account_id":8768,"name":"Chris Friesen","email":"chris.friesen@windriver.com","username":"cbf123"},"change_message_id":"3e5c82a127d109dc5101704d2b44805d40d02601","unresolved":false,"context_lines":[{"line_number":301,"context_line":"    resources4:PCPU\u003d1"},{"line_number":302,"context_line":"    group_policy\u003dnone"},{"line_number":303,"context_line":""},{"line_number":304,"context_line":"The providers of these resources may be the root compute node resource provider"},{"line_number":305,"context_line":"**or** one or more **host** NUMA node child providers, depending on whether the"},{"line_number":306,"context_line":"host system is a NUMA system."},{"line_number":307,"context_line":""},{"line_number":308,"context_line":"When the guest DOES want a virtual NUMA topology"},{"line_number":309,"context_line":"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"}],"source_content_type":"text/x-rst","patch_set":9,"id":"5f7c97a3_4629b734","line":306,"range":{"start_line":304,"start_character":0,"end_line":306,"end_character":29},"in_reply_to":"5f7c97a3_038976c8","updated":"2018-05-29 16:37:29.000000000","message":"Agreed, it seems logical to always have at least one NUMA node.","commit_id":"23f3dd7422212c53186427d2b8450da4b2394c17"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"275243163c254487ebee29135eb3414378a0b0fc","unresolved":false,"context_lines":[{"line_number":301,"context_line":"    resources4:PCPU\u003d1"},{"line_number":302,"context_line":"    group_policy\u003dnone"},{"line_number":303,"context_line":""},{"line_number":304,"context_line":"The providers of these resources may be the root compute node resource provider"},{"line_number":305,"context_line":"**or** one or more **host** NUMA node child providers, depending on whether the"},{"line_number":306,"context_line":"host system is a NUMA system."},{"line_number":307,"context_line":""},{"line_number":308,"context_line":"When the guest DOES want a virtual NUMA topology"},{"line_number":309,"context_line":"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"}],"source_content_type":"text/x-rst","patch_set":9,"id":"5f7c97a3_daa6f7c1","line":306,"range":{"start_line":304,"start_character":0,"end_line":306,"end_character":29},"in_reply_to":"5f7c97a3_038976c8","updated":"2018-05-29 20:33:54.000000000","message":"I don\u0027t really understand your point. If a system isn\u0027t multi-socket or if the system is non-NUMA, we model the CPU resources using a single provider (the compute node). Which is essentially the exact same thing as \"represented as a single node\".","commit_id":"23f3dd7422212c53186427d2b8450da4b2394c17"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"365c168e8372ce3cb2f597dc32441cadd4875886","unresolved":false,"context_lines":[{"line_number":320,"context_line":"* The number of dedicated CPUs needed by the guest\u0027s virtual NUMA node"},{"line_number":321,"context_line":"  ``$NODE`` shall be stored in ``resources$NODE:PCPU\u003d$AMOUNT``"},{"line_number":322,"context_line":""},{"line_number":323,"context_line":"The providers of these resources will be one or more **distinct** NUMA node"},{"line_number":324,"context_line":"child providers."},{"line_number":325,"context_line":""},{"line_number":326,"context_line":"As an example, suppose the guest wanted a virtual NUMA topology of 2 sockets"},{"line_number":327,"context_line":"with 2 cores in each socket. Further suppose the guest wanted all CPU resources"}],"source_content_type":"text/x-rst","patch_set":9,"id":"5f7c97a3_c37cdeb7","line":324,"range":{"start_line":323,"start_character":0,"end_line":324,"end_character":16},"updated":"2018-05-29 10:46:41.000000000","message":"I\u0027ve been discussing this with sahid and sean-k-mooney. Why do these need to distinct? So long as individual guest NUMA nodes are not split across a host NUMA node, there\u0027s no reason we couldn\u0027t squeeze two guest nodes onto the same host node. Far as I can tell, the only reason we _don\u0027t_ do this currently is because of an implementation detail","commit_id":"23f3dd7422212c53186427d2b8450da4b2394c17"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"275243163c254487ebee29135eb3414378a0b0fc","unresolved":false,"context_lines":[{"line_number":320,"context_line":"* The number of dedicated CPUs needed by the guest\u0027s virtual NUMA node"},{"line_number":321,"context_line":"  ``$NODE`` shall be stored in ``resources$NODE:PCPU\u003d$AMOUNT``"},{"line_number":322,"context_line":""},{"line_number":323,"context_line":"The providers of these resources will be one or more **distinct** NUMA node"},{"line_number":324,"context_line":"child providers."},{"line_number":325,"context_line":""},{"line_number":326,"context_line":"As an example, suppose the guest wanted a virtual NUMA topology of 2 sockets"},{"line_number":327,"context_line":"with 2 cores in each socket. Further suppose the guest wanted all CPU resources"}],"source_content_type":"text/x-rst","patch_set":9,"id":"5f7c97a3_da8fd727","line":324,"range":{"start_line":323,"start_character":0,"end_line":324,"end_character":16},"in_reply_to":"5f7c97a3_c37cdeb7","updated":"2018-05-29 20:33:54.000000000","message":"\u003e I\u0027ve been discussing this with sahid and sean-k-mooney. Why do\n \u003e these need to distinct? So long as individual guest NUMA nodes are\n \u003e not split across a host NUMA node, there\u0027s no reason we couldn\u0027t\n \u003e squeeze two guest nodes onto the same host node. Far as I can tell,\n \u003e the only reason we _don\u0027t_ do this currently is because of an\n \u003e implementation detail\n\nBecause that\u0027s how group_policy\u003disolate works. group_policy\u003disolate means that the resources in different granulate groups will be provided by different providers.","commit_id":"23f3dd7422212c53186427d2b8450da4b2394c17"},{"author":{"_account_id":8768,"name":"Chris Friesen","email":"chris.friesen@windriver.com","username":"cbf123"},"change_message_id":"3e5c82a127d109dc5101704d2b44805d40d02601","unresolved":false,"context_lines":[{"line_number":320,"context_line":"* The number of dedicated CPUs needed by the guest\u0027s virtual NUMA node"},{"line_number":321,"context_line":"  ``$NODE`` shall be stored in ``resources$NODE:PCPU\u003d$AMOUNT``"},{"line_number":322,"context_line":""},{"line_number":323,"context_line":"The providers of these resources will be one or more **distinct** NUMA node"},{"line_number":324,"context_line":"child providers."},{"line_number":325,"context_line":""},{"line_number":326,"context_line":"As an example, suppose the guest wanted a virtual NUMA topology of 2 sockets"},{"line_number":327,"context_line":"with 2 cores in each socket. Further suppose the guest wanted all CPU resources"}],"source_content_type":"text/x-rst","patch_set":9,"id":"5f7c97a3_4101a169","line":324,"range":{"start_line":323,"start_character":0,"end_line":324,"end_character":16},"in_reply_to":"5f7c97a3_c37cdeb7","updated":"2018-05-29 16:37:29.000000000","message":"The only argument for it that I see is the case where someone explicitly asked for multiple NUMA nodes because they are looking to get higher overall memory bandwidth.  If we put both the guest nodes on a single host node then we can\u0027t give the higher bandwidth.\n\nOn the other hand the memory bandwidth will be shared among all virtual nodes that share the same physical node anyway, so maybe this isn\u0027t a big deal.","commit_id":"23f3dd7422212c53186427d2b8450da4b2394c17"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"365c168e8372ce3cb2f597dc32441cadd4875886","unresolved":false,"context_lines":[{"line_number":323,"context_line":"The providers of these resources will be one or more **distinct** NUMA node"},{"line_number":324,"context_line":"child providers."},{"line_number":325,"context_line":""},{"line_number":326,"context_line":"As an example, suppose the guest wanted a virtual NUMA topology of 2 sockets"},{"line_number":327,"context_line":"with 2 cores in each socket. Further suppose the guest wanted all CPU resources"},{"line_number":328,"context_line":"to be serviced by dedicated host CPUs. The extra specs (or image properties)"},{"line_number":329,"context_line":"for the guest would look like this::"},{"line_number":330,"context_line":""}],"source_content_type":"text/x-rst","patch_set":9,"id":"5f7c97a3_e3279ac6","line":327,"range":{"start_line":326,"start_character":0,"end_line":327,"end_character":28},"updated":"2018-05-29 10:46:41.000000000","message":"As warned above, it seems you\u0027re conflating how groups of guest CPU processes are split across host NUMA nodes with what the guest will see internally. Far as I can tell, there\u0027s no reason at present that you couldn\u0027t request that the guest sees four sockets internally while the guest processes themselves were split across two host NUMA nodes (or even placed on a single node). In theory, it\u0027s also possible to go the other way and specify that the guest see a single socket despite its processes being split across multiple host NUMA nodes (useful for licensing?) but I\u0027m not sure if this works. In any case, by tying how we place guest processes and how we make those look internally, we will lose some functionality. Are we sure we should be doing this?\n\nEDIT: this is all based on my assumption that you also want to get rid of \u0027hw:cpu_threads\u0027, etc. You haven\u0027t actually called this out yet so the above could be a non-issue based on a faulty assumption.","commit_id":"23f3dd7422212c53186427d2b8450da4b2394c17"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"275243163c254487ebee29135eb3414378a0b0fc","unresolved":false,"context_lines":[{"line_number":323,"context_line":"The providers of these resources will be one or more **distinct** NUMA node"},{"line_number":324,"context_line":"child providers."},{"line_number":325,"context_line":""},{"line_number":326,"context_line":"As an example, suppose the guest wanted a virtual NUMA topology of 2 sockets"},{"line_number":327,"context_line":"with 2 cores in each socket. Further suppose the guest wanted all CPU resources"},{"line_number":328,"context_line":"to be serviced by dedicated host CPUs. The extra specs (or image properties)"},{"line_number":329,"context_line":"for the guest would look like this::"},{"line_number":330,"context_line":""}],"source_content_type":"text/x-rst","patch_set":9,"id":"5f7c97a3_dabd97b7","line":327,"range":{"start_line":326,"start_character":0,"end_line":327,"end_character":28},"in_reply_to":"5f7c97a3_067bbf27","updated":"2018-05-29 20:33:54.000000000","message":"Yes. Once again, Windows (and Oracle) licensing messes with perfectly reasonable resource tracking systems...","commit_id":"23f3dd7422212c53186427d2b8450da4b2394c17"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"275243163c254487ebee29135eb3414378a0b0fc","unresolved":false,"context_lines":[{"line_number":323,"context_line":"The providers of these resources will be one or more **distinct** NUMA node"},{"line_number":324,"context_line":"child providers."},{"line_number":325,"context_line":""},{"line_number":326,"context_line":"As an example, suppose the guest wanted a virtual NUMA topology of 2 sockets"},{"line_number":327,"context_line":"with 2 cores in each socket. Further suppose the guest wanted all CPU resources"},{"line_number":328,"context_line":"to be serviced by dedicated host CPUs. The extra specs (or image properties)"},{"line_number":329,"context_line":"for the guest would look like this::"},{"line_number":330,"context_line":""}],"source_content_type":"text/x-rst","patch_set":9,"id":"5f7c97a3_1aa6afac","line":327,"range":{"start_line":326,"start_character":0,"end_line":327,"end_character":28},"in_reply_to":"5f7c97a3_e3279ac6","updated":"2018-05-29 20:33:54.000000000","message":"\u003e As warned above, it seems you\u0027re conflating how groups of guest CPU\n \u003e processes are split across host NUMA nodes with what the guest will\n \u003e see internally.\n\nNo, I\u0027m not conflating anything. The request for dedicated CPU resources provided by distinct providers has nothing to do with the request for a particular guest virtual NUMA topology.\n\nWhat *is* unfortunate is that the existing extra specs and the existing NUMATopology objects *have* conflated CPU and memory resources together, and there\u0027s nothing we can do about it. :(\n\n \u003e Far as I can tell, there\u0027s no reason at present\n \u003e that you couldn\u0027t request that the guest sees four sockets\n \u003e internally while the guest processes themselves were split across\n \u003e two host NUMA nodes (or even placed on a single node). In theory,\n \u003e it\u0027s also possible to go the other way and specify that the guest\n \u003e see a single socket despite its processes being split across\n \u003e multiple host NUMA nodes (useful for licensing?) but I\u0027m not sure\n \u003e if this works. In any case, by tying how we place guest processes\n \u003e and how we make those look internally, we will lose some\n \u003e functionality. Are we sure we should be doing this?\n \u003e \n \u003e EDIT: this is all based on my assumption that you also want to get\n \u003e rid of \u0027hw:cpu_threads\u0027, etc. You haven\u0027t actually called this out\n \u003e yet so the above could be a non-issue based on a faulty assumption.\n\nI haven\u0027t called it out because I don\u0027t see us getting rid of the hw:cpu_[sockets|cores|threads] extra specs.","commit_id":"23f3dd7422212c53186427d2b8450da4b2394c17"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"910fa1c7632864c55f7ad0d839a68aa2f435a43d","unresolved":false,"context_lines":[{"line_number":323,"context_line":"The providers of these resources will be one or more **distinct** NUMA node"},{"line_number":324,"context_line":"child providers."},{"line_number":325,"context_line":""},{"line_number":326,"context_line":"As an example, suppose the guest wanted a virtual NUMA topology of 2 sockets"},{"line_number":327,"context_line":"with 2 cores in each socket. Further suppose the guest wanted all CPU resources"},{"line_number":328,"context_line":"to be serviced by dedicated host CPUs. The extra specs (or image properties)"},{"line_number":329,"context_line":"for the guest would look like this::"},{"line_number":330,"context_line":""}],"source_content_type":"text/x-rst","patch_set":9,"id":"5f7c97a3_067bbf27","line":327,"range":{"start_line":326,"start_character":0,"end_line":327,"end_character":28},"in_reply_to":"5f7c97a3_e3279ac6","updated":"2018-05-29 15:50:57.000000000","message":"one of the reasons for not have 4 sockets is windows server licening where they charge per socket. or windows desktop where they have a hard limit of 2 sockets.\n\nthere are several other there reasongs for this also.\nbut im late for a meeting. we can chat on irc if you like.","commit_id":"23f3dd7422212c53186427d2b8450da4b2394c17"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"365c168e8372ce3cb2f597dc32441cadd4875886","unresolved":false,"context_lines":[{"line_number":351,"context_line":"Certain guests have a tolerance for physical processors being a hyperthread"},{"line_number":352,"context_line":"sibling. The ``hw:cpu_threads_policy`` existing flavor and image extra spec"},{"line_number":353,"context_line":"currently controls the behaviour of the code that does CPU pinning for a guest."},{"line_number":354,"context_line":"This pinning code is executed in the NUMATopologyFilter scheduler filter as"},{"line_number":355,"context_line":"part of the call to ``nova.virt.hardware.numa_fit_instance_to_host()``."},{"line_number":356,"context_line":""},{"line_number":357,"context_line":"We propose to leave this code unchanged. The NUMATopologyFilter shall remain in"}],"source_content_type":"text/x-rst","patch_set":9,"id":"5f7c97a3_9e04fd16","line":354,"range":{"start_line":354,"start_character":37,"end_line":354,"end_character":55},"updated":"2018-05-29 10:46:41.000000000","message":"nit: ``literal`` (also for other class names below)","commit_id":"23f3dd7422212c53186427d2b8450da4b2394c17"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"275243163c254487ebee29135eb3414378a0b0fc","unresolved":false,"context_lines":[{"line_number":351,"context_line":"Certain guests have a tolerance for physical processors being a hyperthread"},{"line_number":352,"context_line":"sibling. The ``hw:cpu_threads_policy`` existing flavor and image extra spec"},{"line_number":353,"context_line":"currently controls the behaviour of the code that does CPU pinning for a guest."},{"line_number":354,"context_line":"This pinning code is executed in the NUMATopologyFilter scheduler filter as"},{"line_number":355,"context_line":"part of the call to ``nova.virt.hardware.numa_fit_instance_to_host()``."},{"line_number":356,"context_line":""},{"line_number":357,"context_line":"We propose to leave this code unchanged. The NUMATopologyFilter shall remain in"}],"source_content_type":"text/x-rst","patch_set":9,"id":"5f7c97a3_7aaec381","line":354,"range":{"start_line":354,"start_character":37,"end_line":354,"end_character":55},"in_reply_to":"5f7c97a3_9e04fd16","updated":"2018-05-29 20:33:54.000000000","message":"Done","commit_id":"23f3dd7422212c53186427d2b8450da4b2394c17"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"365c168e8372ce3cb2f597dc32441cadd4875886","unresolved":false,"context_lines":[{"line_number":354,"context_line":"This pinning code is executed in the NUMATopologyFilter scheduler filter as"},{"line_number":355,"context_line":"part of the call to ``nova.virt.hardware.numa_fit_instance_to_host()``."},{"line_number":356,"context_line":""},{"line_number":357,"context_line":"We propose to leave this code unchanged. The NUMATopologyFilter shall remain in"},{"line_number":358,"context_line":"place and will continue to function as-is. The work from this spec, however,"},{"line_number":359,"context_line":"means that fewer HostInfo structs will be passed to the NUMATopologyFilter than"},{"line_number":360,"context_line":"before, since the placement service will be able to efficiently filter out"}],"source_content_type":"text/x-rst","patch_set":9,"id":"5f7c97a3_de8a7562","line":357,"range":{"start_line":357,"start_character":0,"end_line":357,"end_character":40},"updated":"2018-05-29 10:46:41.000000000","message":"but deprecate the option, right? You call this out in the proposed changes section but not here","commit_id":"23f3dd7422212c53186427d2b8450da4b2394c17"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"275243163c254487ebee29135eb3414378a0b0fc","unresolved":false,"context_lines":[{"line_number":354,"context_line":"This pinning code is executed in the NUMATopologyFilter scheduler filter as"},{"line_number":355,"context_line":"part of the call to ``nova.virt.hardware.numa_fit_instance_to_host()``."},{"line_number":356,"context_line":""},{"line_number":357,"context_line":"We propose to leave this code unchanged. The NUMATopologyFilter shall remain in"},{"line_number":358,"context_line":"place and will continue to function as-is. The work from this spec, however,"},{"line_number":359,"context_line":"means that fewer HostInfo structs will be passed to the NUMATopologyFilter than"},{"line_number":360,"context_line":"before, since the placement service will be able to efficiently filter out"}],"source_content_type":"text/x-rst","patch_set":9,"id":"5f7c97a3_badd3b15","line":357,"range":{"start_line":357,"start_character":0,"end_line":357,"end_character":40},"in_reply_to":"5f7c97a3_06c97f57","updated":"2018-05-29 20:33:54.000000000","message":"right. what Sean said.","commit_id":"23f3dd7422212c53186427d2b8450da4b2394c17"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"910fa1c7632864c55f7ad0d839a68aa2f435a43d","unresolved":false,"context_lines":[{"line_number":354,"context_line":"This pinning code is executed in the NUMATopologyFilter scheduler filter as"},{"line_number":355,"context_line":"part of the call to ``nova.virt.hardware.numa_fit_instance_to_host()``."},{"line_number":356,"context_line":""},{"line_number":357,"context_line":"We propose to leave this code unchanged. The NUMATopologyFilter shall remain in"},{"line_number":358,"context_line":"place and will continue to function as-is. The work from this spec, however,"},{"line_number":359,"context_line":"means that fewer HostInfo structs will be passed to the NUMATopologyFilter than"},{"line_number":360,"context_line":"before, since the placement service will be able to efficiently filter out"}],"source_content_type":"text/x-rst","patch_set":9,"id":"5f7c97a3_06c97f57","line":357,"range":{"start_line":357,"start_character":0,"end_line":357,"end_character":40},"in_reply_to":"5f7c97a3_de8a7562","updated":"2018-05-29 15:50:57.000000000","message":"the proposed change suggests depercating hw:cpu_policy e.g. dedicated or shared not hw:cpu_thread_policy e.g. isolate,prefer,require. so no we cannot deprecate this as placement does not do assignment of threads to accounting of the quantity used. the numa toplogy filter and virtdriver will have to continue to do thread pinning after this change as they do today.","commit_id":"23f3dd7422212c53186427d2b8450da4b2394c17"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"365c168e8372ce3cb2f597dc32441cadd4875886","unresolved":false,"context_lines":[{"line_number":375,"context_line":"    indicate that a single NUMA node on a multi-NUMA-node host is meant for"},{"line_number":376,"context_line":"    guests that tolerate hyperthread siblings as dedicated CPUs."},{"line_number":377,"context_line":""},{"line_number":378,"context_line":"If the operator intentionally omits this trait then they should also only"},{"line_number":379,"context_line":"include one of each set of hyperthread siblings in ``CONF.cpu_dedicated_set``"},{"line_number":380,"context_line":"(and the sibling(s) should be omitted from ``CONF.cpu_shared_set`` as well)."},{"line_number":381,"context_line":""},{"line_number":382,"context_line":"Isolating emulator threads from guest vCPU threads"},{"line_number":383,"context_line":"--------------------------------------------------"}],"source_content_type":"text/x-rst","patch_set":9,"id":"5f7c97a3_be46994f","line":380,"range":{"start_line":378,"start_character":0,"end_line":380,"end_character":76},"updated":"2018-05-29 10:46:41.000000000","message":"This means that not only are we moving hyperthread/no-hyperthread from instance configuration to host configuration, we are also moving stuff that was previously done automatically with nova (marking thread siblings as unusable when \u0027hw:cpu_thread_policy\u003disolate\u0027 is specified) to something that must be configured before runtime by a deployment tool or manual configuration. While I understand that the former is tough to model with the current placement paradigm\u0027s, I\u0027m not sure the latter is a good idea. Who reports the number of PCPUs available on a NUMA node resource to placement? If it\u0027s the driver, could we use a \u0027HW_CPU_NO_HYPERTHREADING\u0027 flag (negative instead of positive) instead? If this is present, the host would not report thread siblings for a given NUMA node to placement.","commit_id":"23f3dd7422212c53186427d2b8450da4b2394c17"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"910fa1c7632864c55f7ad0d839a68aa2f435a43d","unresolved":false,"context_lines":[{"line_number":375,"context_line":"    indicate that a single NUMA node on a multi-NUMA-node host is meant for"},{"line_number":376,"context_line":"    guests that tolerate hyperthread siblings as dedicated CPUs."},{"line_number":377,"context_line":""},{"line_number":378,"context_line":"If the operator intentionally omits this trait then they should also only"},{"line_number":379,"context_line":"include one of each set of hyperthread siblings in ``CONF.cpu_dedicated_set``"},{"line_number":380,"context_line":"(and the sibling(s) should be omitted from ``CONF.cpu_shared_set`` as well)."},{"line_number":381,"context_line":""},{"line_number":382,"context_line":"Isolating emulator threads from guest vCPU threads"},{"line_number":383,"context_line":"--------------------------------------------------"}],"source_content_type":"text/x-rst","patch_set":9,"id":"5f7c97a3_c6d38700","line":380,"range":{"start_line":378,"start_character":0,"end_line":380,"end_character":76},"in_reply_to":"5f7c97a3_be46994f","updated":"2018-05-29 15:50:57.000000000","message":"this is to cater for a case where you have allow hyper thread on one socket and not on an other  because.... this originally came about to solve a particalar requirement for small deployment raised by chris fressen.\n\nwe are basically saying here is the tool box. hyper optimise if you want by default we will do somthing sane but hears the gun and mind your foot.","commit_id":"23f3dd7422212c53186427d2b8450da4b2394c17"},{"author":{"_account_id":25625,"name":"Tetsuro Nakamura","email":"tetsuro.nakamura.bc@hco.ntt.co.jp","username":"tetsuro0907"},"change_message_id":"a34ed09114268efa6f80ba2c2060e7192beb7e92","unresolved":false,"context_lines":[{"line_number":411,"context_line":""},{"line_number":412,"context_line":"    resources:VCPU\u003d2"},{"line_number":413,"context_line":""},{"line_number":414,"context_line":"2) A database server requires 8 CPU resources, and the workload needs dedicated"},{"line_number":415,"context_line":"CPU resources to minimize effects of other workloads hosted on the same"},{"line_number":416,"context_line":"hardware. The workload does not specify any virtual NUMA topology nor does the"},{"line_number":417,"context_line":"workload care about whether the dedicated CPU resources are provided by one or"}],"source_content_type":"text/x-rst","patch_set":9,"id":"5f7c97a3_6ae904b5","line":414,"range":{"start_line":414,"start_character":30,"end_line":414,"end_character":35},"updated":"2018-05-14 10:59:42.000000000","message":"nit: only 7 CPUs in the example.","commit_id":"23f3dd7422212c53186427d2b8450da4b2394c17"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"818f84be67cdb42bc3e41016ed5678674f51b6f4","unresolved":false,"context_lines":[{"line_number":411,"context_line":""},{"line_number":412,"context_line":"    resources:VCPU\u003d2"},{"line_number":413,"context_line":""},{"line_number":414,"context_line":"2) A database server requires 8 CPU resources, and the workload needs dedicated"},{"line_number":415,"context_line":"CPU resources to minimize effects of other workloads hosted on the same"},{"line_number":416,"context_line":"hardware. The workload does not specify any virtual NUMA topology nor does the"},{"line_number":417,"context_line":"workload care about whether the dedicated CPU resources are provided by one or"}],"source_content_type":"text/x-rst","patch_set":9,"id":"5f7c97a3_0f85f4ce","line":414,"range":{"start_line":414,"start_character":30,"end_line":414,"end_character":35},"in_reply_to":"5f7c97a3_6ae904b5","updated":"2018-05-14 19:25:30.000000000","message":"ack, will fix if need to respin.","commit_id":"23f3dd7422212c53186427d2b8450da4b2394c17"},{"author":{"_account_id":25625,"name":"Tetsuro Nakamura","email":"tetsuro.nakamura.bc@hco.ntt.co.jp","username":"tetsuro0907"},"change_message_id":"a34ed09114268efa6f80ba2c2060e7192beb7e92","unresolved":false,"context_lines":[{"line_number":424,"context_line":"    resources5:PCPU\u003d1"},{"line_number":425,"context_line":"    resources6:PCPU\u003d1"},{"line_number":426,"context_line":"    resources7:PCPU\u003d1"},{"line_number":427,"context_line":"    group_policy\u003dnone"},{"line_number":428,"context_line":""},{"line_number":429,"context_line":"3) A virtual network function running a packet-core processing application"},{"line_number":430,"context_line":"requires 12 CPU resources. 10 of those CPU resources should be pinned to"}],"source_content_type":"text/x-rst","patch_set":9,"id":"5f7c97a3_ca8ff8ca","line":427,"updated":"2018-05-14 10:59:42.000000000","message":"This is reasonable from its view in placement side, but this is a nova spec, and I think it is risky to have this example in nova spec. That said, in this spec it is unclear how nova treat the response from all the combination from placement.\n\nCurrently we use NUMATopologyFilter passing it with *one* InstanceNUMATopology object that has \"how many numa nodes a user want\" info as numbers of NUMACell object it has.\n\nWithin this spec, getting all the possible candidates from placement, is nova going to create all the possible `InstanceNUMATopology`s for each candidate like with one NUMACell, two NUMA cells (with 1+7,2+6,3+5,4+4), three NUMA cells(1+1+6...)... and pass them all one by one to NUMATopologyFilter?\n\n...That sounds not impossible, but at least within this spec, IMO, we should assume that, for NUMA feature, nova would use group_policy\u003disolate. Otherwise, the discussion how we treat all the candidates in *nova side* should be addressed, I think?","commit_id":"23f3dd7422212c53186427d2b8450da4b2394c17"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"ca87986b3a21e96e5d577d9cdee44805bc5ed83c","unresolved":false,"context_lines":[{"line_number":424,"context_line":"    resources5:PCPU\u003d1"},{"line_number":425,"context_line":"    resources6:PCPU\u003d1"},{"line_number":426,"context_line":"    resources7:PCPU\u003d1"},{"line_number":427,"context_line":"    group_policy\u003dnone"},{"line_number":428,"context_line":""},{"line_number":429,"context_line":"3) A virtual network function running a packet-core processing application"},{"line_number":430,"context_line":"requires 12 CPU resources. 10 of those CPU resources should be pinned to"}],"source_content_type":"text/x-rst","patch_set":9,"id":"5f7c97a3_10018caf","line":427,"in_reply_to":"5f7c97a3_2aed35b6","updated":"2018-05-15 07:35:04.000000000","message":"OK Jay thanks for the explanation. So I think we are discussing of implementation details. If user is using cpu pinning you are right, a NUMATopology is created and so it seems that NUMATopology filter will do its work anyway.","commit_id":"23f3dd7422212c53186427d2b8450da4b2394c17"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"818f84be67cdb42bc3e41016ed5678674f51b6f4","unresolved":false,"context_lines":[{"line_number":424,"context_line":"    resources5:PCPU\u003d1"},{"line_number":425,"context_line":"    resources6:PCPU\u003d1"},{"line_number":426,"context_line":"    resources7:PCPU\u003d1"},{"line_number":427,"context_line":"    group_policy\u003dnone"},{"line_number":428,"context_line":""},{"line_number":429,"context_line":"3) A virtual network function running a packet-core processing application"},{"line_number":430,"context_line":"requires 12 CPU resources. 10 of those CPU resources should be pinned to"}],"source_content_type":"text/x-rst","patch_set":9,"id":"5f7c97a3_8f1b44c8","line":427,"in_reply_to":"5f7c97a3_3c059511","updated":"2018-05-14 19:25:30.000000000","message":"Sahid, the existing NUMATopologyFilter will continue to be executed. This work doesn\u0027t affect that. What this work does is limit the number of compute nodes that are returned to the scheduler. The scheduler will still need to select one of the host NUMA nodes (and promptly throw that decision away because, well, that\u0027s how the filter works unfortunately).","commit_id":"23f3dd7422212c53186427d2b8450da4b2394c17"},{"author":{"_account_id":25625,"name":"Tetsuro Nakamura","email":"tetsuro.nakamura.bc@hco.ntt.co.jp","username":"tetsuro0907"},"change_message_id":"e25f4a4e56401a801c5551cf71122353433a963d","unresolved":false,"context_lines":[{"line_number":424,"context_line":"    resources5:PCPU\u003d1"},{"line_number":425,"context_line":"    resources6:PCPU\u003d1"},{"line_number":426,"context_line":"    resources7:PCPU\u003d1"},{"line_number":427,"context_line":"    group_policy\u003dnone"},{"line_number":428,"context_line":""},{"line_number":429,"context_line":"3) A virtual network function running a packet-core processing application"},{"line_number":430,"context_line":"requires 12 CPU resources. 10 of those CPU resources should be pinned to"}],"source_content_type":"text/x-rst","patch_set":9,"id":"5f7c97a3_2aed35b6","line":427,"in_reply_to":"5f7c97a3_8f1b44c8","updated":"2018-05-15 06:45:36.000000000","message":"\u003e This specific scenario is describing the case when no NUMA topology has been requested by the user.\n\nFor your information, today this week, if a user specify cpu pinning feature via hw:cpu_policy\u003ddedicated without NUMA topology (without hw:numa_nodes specified), nova assumes that the user *wants*  a NUMA topology (and create an InstanceNUMATopology object) with *one* NUMA node (with one InstanceNUMACell object). This is because cpu pinning feature relies on these objects. This is why we document we should use NUMATopologyFilter when we want to use cpu pinning feature.\n\nIOW, at least today there is no such situation that \"dedicated CPUs are requested without NUMA topology\", or no such situation that we have several possible instance NUMA architectures for one user request... there should be only *one* possible InstanceNUMATopology object with *one* user request.\n\nBut this example is clearly out of the cases today. So my question is, \"Are we going to consider and create every possible InstanceNUMATopology(s) and pass them to NUMATopologyFilter one by one for this case?\"  Hmmm... that\u0027s not impossible, but sounds hard and I\u0027m a bit concerned with performance, which I guess sahid-san also mentioned.\n\n\u003e The scheduler will just pick one, and whatever it picks is acceptable.\n\nIf whatever it picks is acceptable, I\u0027m good with this. But we should carefully investigate if the hosts are really acceptable using NUMATopologyFilter, that is, we can\u0027t pick one arbitrarily before passing to that filter, I think?","commit_id":"23f3dd7422212c53186427d2b8450da4b2394c17"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"6f598a49cb2fdfbca10fbad868a19cb20e60e566","unresolved":false,"context_lines":[{"line_number":424,"context_line":"    resources5:PCPU\u003d1"},{"line_number":425,"context_line":"    resources6:PCPU\u003d1"},{"line_number":426,"context_line":"    resources7:PCPU\u003d1"},{"line_number":427,"context_line":"    group_policy\u003dnone"},{"line_number":428,"context_line":""},{"line_number":429,"context_line":"3) A virtual network function running a packet-core processing application"},{"line_number":430,"context_line":"requires 12 CPU resources. 10 of those CPU resources should be pinned to"}],"source_content_type":"text/x-rst","patch_set":9,"id":"5f7c97a3_3c059511","line":427,"in_reply_to":"5f7c97a3_96760a70","updated":"2018-05-14 14:59:16.000000000","message":"\u003e The scheduler will just pick one, and whatever it picks is acceptable.\n\nThat does not look right we should consider to use the minimum host numa node first. We are going to loss in performance since our current implementation try to find the best combination (using the less number of host node). So my thinking is that we should continue to use NUMATopologyFilter to select the best combination or find an other mechanism.","commit_id":"23f3dd7422212c53186427d2b8450da4b2394c17"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"818f84be67cdb42bc3e41016ed5678674f51b6f4","unresolved":false,"context_lines":[{"line_number":424,"context_line":"    resources5:PCPU\u003d1"},{"line_number":425,"context_line":"    resources6:PCPU\u003d1"},{"line_number":426,"context_line":"    resources7:PCPU\u003d1"},{"line_number":427,"context_line":"    group_policy\u003dnone"},{"line_number":428,"context_line":""},{"line_number":429,"context_line":"3) A virtual network function running a packet-core processing application"},{"line_number":430,"context_line":"requires 12 CPU resources. 10 of those CPU resources should be pinned to"}],"source_content_type":"text/x-rst","patch_set":9,"id":"5f7c97a3_2f655046","line":427,"in_reply_to":"5f7c97a3_ca8ff8ca","updated":"2018-05-14 19:25:30.000000000","message":"\u003e This is reasonable from its view in placement side, but this is a\n \u003e nova spec, and I think it is risky to have this example in nova\n \u003e spec. That said, in this spec it is unclear how nova treat the\n \u003e response from all the combination from placement.\n \u003e \n \u003e Currently we use NUMATopologyFilter passing it with *one*\n \u003e InstanceNUMATopology object that has \"how many numa nodes a user\n \u003e want\" info as numbers of NUMACell object it has.\n\nThis specific scenario is describing the case when no NUMA topology has been requested by the user.","commit_id":"23f3dd7422212c53186427d2b8450da4b2394c17"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"f85bdd574b06bb9699decbb057ed162ee9d4c8a4","unresolved":false,"context_lines":[{"line_number":424,"context_line":"    resources5:PCPU\u003d1"},{"line_number":425,"context_line":"    resources6:PCPU\u003d1"},{"line_number":426,"context_line":"    resources7:PCPU\u003d1"},{"line_number":427,"context_line":"    group_policy\u003dnone"},{"line_number":428,"context_line":""},{"line_number":429,"context_line":"3) A virtual network function running a packet-core processing application"},{"line_number":430,"context_line":"requires 12 CPU resources. 10 of those CPU resources should be pinned to"}],"source_content_type":"text/x-rst","patch_set":9,"id":"5f7c97a3_96760a70","line":427,"in_reply_to":"5f7c97a3_ca8ff8ca","updated":"2018-05-14 13:49:24.000000000","message":"To my understanding, this example does *not* assume that we\u0027ve specified the number of NUMA nodes the user wants.  That\u0027s what is meant by \"does not specify any virtual NUMA topology\".  Thus the whole point of this example is to demonstrate exactly what you say: that we get back allocation requests with all possible permutations of CPUs spread across all NUMA nodes.  And presumably *because* we don\u0027t care about NUMA topology, we aren\u0027t even passing the results through NUMATopologyFilter at all.  The scheduler will just pick one, and whatever it picks is acceptable.","commit_id":"23f3dd7422212c53186427d2b8450da4b2394c17"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"365c168e8372ce3cb2f597dc32441cadd4875886","unresolved":false,"context_lines":[{"line_number":441,"context_line":""},{"line_number":442,"context_line":"4) A virtual radio access network function needs 16 CPU resources, all of which"},{"line_number":443,"context_line":"require real-time guarantees and therefore dedicated host CPUs. The workload"},{"line_number":444,"context_line":"specifies a particular 2 socket, 4 core, 2 thread per core virtual NUMA"},{"line_number":445,"context_line":"topology::"},{"line_number":446,"context_line":""},{"line_number":447,"context_line":"    resources0:PCPU\u003d8"},{"line_number":448,"context_line":"    trait0:HW_CPU_HYPERTHREADING\u003drequired"}],"source_content_type":"text/x-rst","patch_set":9,"id":"5f7c97a3_5ea66511","line":445,"range":{"start_line":444,"start_character":0,"end_line":445,"end_character":10},"updated":"2018-05-29 10:46:41.000000000","message":"Yeah, you\u0027re definitely conflating guest topology with allocation on the host. Again, I\u0027m not sure this is the worst thing in the world but I\u0027m not sure if you\u0027re aware of this or have given it much thought","commit_id":"23f3dd7422212c53186427d2b8450da4b2394c17"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"275243163c254487ebee29135eb3414378a0b0fc","unresolved":false,"context_lines":[{"line_number":441,"context_line":""},{"line_number":442,"context_line":"4) A virtual radio access network function needs 16 CPU resources, all of which"},{"line_number":443,"context_line":"require real-time guarantees and therefore dedicated host CPUs. The workload"},{"line_number":444,"context_line":"specifies a particular 2 socket, 4 core, 2 thread per core virtual NUMA"},{"line_number":445,"context_line":"topology::"},{"line_number":446,"context_line":""},{"line_number":447,"context_line":"    resources0:PCPU\u003d8"},{"line_number":448,"context_line":"    trait0:HW_CPU_HYPERTHREADING\u003drequired"}],"source_content_type":"text/x-rst","patch_set":9,"id":"5f7c97a3_ba2bfbe8","line":445,"range":{"start_line":444,"start_character":0,"end_line":445,"end_character":10},"in_reply_to":"5f7c97a3_0625ff08","updated":"2018-05-29 20:33:54.000000000","message":"I\u0027ve removed mention of NUMA topologies entirely. This spec is really about CPU resources and the placement API. Unfortunately, all the NUMATopology crap has coupled CPU topology with memory stuff, and the extra specs similarly focus entirely on virtual guest CPU topology and NUMA node layout, which is why I even mentioned it here in the first place.","commit_id":"23f3dd7422212c53186427d2b8450da4b2394c17"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"910fa1c7632864c55f7ad0d839a68aa2f435a43d","unresolved":false,"context_lines":[{"line_number":441,"context_line":""},{"line_number":442,"context_line":"4) A virtual radio access network function needs 16 CPU resources, all of which"},{"line_number":443,"context_line":"require real-time guarantees and therefore dedicated host CPUs. The workload"},{"line_number":444,"context_line":"specifies a particular 2 socket, 4 core, 2 thread per core virtual NUMA"},{"line_number":445,"context_line":"topology::"},{"line_number":446,"context_line":""},{"line_number":447,"context_line":"    resources0:PCPU\u003d8"},{"line_number":448,"context_line":"    trait0:HW_CPU_HYPERTHREADING\u003drequired"}],"source_content_type":"text/x-rst","patch_set":9,"id":"5f7c97a3_0625ff08","line":445,"range":{"start_line":444,"start_character":0,"end_line":445,"end_character":10},"in_reply_to":"5f7c97a3_5ea66511","updated":"2018-05-29 15:50:57.000000000","message":"this is unavioable because of how we resolved the issue with granular resouce request and placment. placement tracks phyical toplogy so we now need to care about that when writing our flavours. by setting group_policy\u003disolate we enforce that the allocation cannot come form the same RP on the host.\n\ni will however agree that 2 socket, 4 core, 2 thread per core is a cpu topology not a numa toplogy so \"NUMA topology\" should be \"CPU topology\"","commit_id":"23f3dd7422212c53186427d2b8450da4b2394c17"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"6f598a49cb2fdfbca10fbad868a19cb20e60e566","unresolved":false,"context_lines":[{"line_number":452,"context_line":""},{"line_number":453,"context_line":".. note::"},{"line_number":454,"context_line":""},{"line_number":455,"context_line":"    You will note that the granular resource request groups only include the"},{"line_number":456,"context_line":"    total amount of physical CPU resources needed by each NUMA socket. It is"},{"line_number":457,"context_line":"    entirely up to the virt driver (nova/virt/hardware.py module) to **pin**"},{"line_number":458,"context_line":"    the host CPUs to the guest CPUs appropriately on the host system\u0027s NUMA"},{"line_number":459,"context_line":"    nodes. The placement service will return those provider trees that match"},{"line_number":460,"context_line":"    the required amount of requested PCPU resources (16 total, in 2 groups of"}],"source_content_type":"text/x-rst","patch_set":9,"id":"5f7c97a3_9c9aa9b6","line":457,"range":{"start_line":455,"start_character":4,"end_line":457,"end_character":65},"updated":"2018-05-14 14:59:16.000000000","message":"Hum.. I\u0027m not really sure to understand. Today it\u0027s not virt driver responsibility, it\u0027s virt/hardware.py which does that work so all virt drivers are using the same mechanisms (or should).\n\nThat is something you want to remove so all driver are doing whatever they want?","commit_id":"23f3dd7422212c53186427d2b8450da4b2394c17"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"275243163c254487ebee29135eb3414378a0b0fc","unresolved":false,"context_lines":[{"line_number":452,"context_line":""},{"line_number":453,"context_line":".. note::"},{"line_number":454,"context_line":""},{"line_number":455,"context_line":"    You will note that the granular resource request groups only include the"},{"line_number":456,"context_line":"    total amount of physical CPU resources needed by each NUMA socket. It is"},{"line_number":457,"context_line":"    entirely up to the virt driver (nova/virt/hardware.py module) to **pin**"},{"line_number":458,"context_line":"    the host CPUs to the guest CPUs appropriately on the host system\u0027s NUMA"},{"line_number":459,"context_line":"    nodes. The placement service will return those provider trees that match"},{"line_number":460,"context_line":"    the required amount of requested PCPU resources (16 total, in 2 groups of"}],"source_content_type":"text/x-rst","patch_set":9,"id":"5f7c97a3_ba79bbfc","line":457,"range":{"start_line":455,"start_character":4,"end_line":457,"end_character":65},"in_reply_to":"5f7c97a3_9c9aa9b6","updated":"2018-05-29 20:33:54.000000000","message":"I\u0027ll reword. I meant \"responsibility of virt/hardware.py...\"","commit_id":"23f3dd7422212c53186427d2b8450da4b2394c17"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"6f598a49cb2fdfbca10fbad868a19cb20e60e566","unresolved":false,"context_lines":[{"line_number":454,"context_line":""},{"line_number":455,"context_line":"    You will note that the granular resource request groups only include the"},{"line_number":456,"context_line":"    total amount of physical CPU resources needed by each NUMA socket. It is"},{"line_number":457,"context_line":"    entirely up to the virt driver (nova/virt/hardware.py module) to **pin**"},{"line_number":458,"context_line":"    the host CPUs to the guest CPUs appropriately on the host system\u0027s NUMA"},{"line_number":459,"context_line":"    nodes. The placement service will return those provider trees that match"},{"line_number":460,"context_line":"    the required amount of requested PCPU resources (16 total, in 2 groups of"},{"line_number":461,"context_line":"    8). But placement does not do assignment of specific CPUs, only allocation"}],"source_content_type":"text/x-rst","patch_set":9,"id":"5f7c97a3_fca63d0f","line":458,"range":{"start_line":457,"start_character":67,"end_line":458,"end_character":35},"updated":"2018-05-14 14:59:16.000000000","message":"to pin the guest CPUs to the host CPUs","commit_id":"23f3dd7422212c53186427d2b8450da4b2394c17"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"275243163c254487ebee29135eb3414378a0b0fc","unresolved":false,"context_lines":[{"line_number":454,"context_line":""},{"line_number":455,"context_line":"    You will note that the granular resource request groups only include the"},{"line_number":456,"context_line":"    total amount of physical CPU resources needed by each NUMA socket. It is"},{"line_number":457,"context_line":"    entirely up to the virt driver (nova/virt/hardware.py module) to **pin**"},{"line_number":458,"context_line":"    the host CPUs to the guest CPUs appropriately on the host system\u0027s NUMA"},{"line_number":459,"context_line":"    nodes. The placement service will return those provider trees that match"},{"line_number":460,"context_line":"    the required amount of requested PCPU resources (16 total, in 2 groups of"},{"line_number":461,"context_line":"    8). But placement does not do assignment of specific CPUs, only allocation"}],"source_content_type":"text/x-rst","patch_set":9,"id":"5f7c97a3_da7ef7e2","line":458,"range":{"start_line":457,"start_character":67,"end_line":458,"end_character":35},"in_reply_to":"5f7c97a3_fca63d0f","updated":"2018-05-29 20:33:54.000000000","message":"Done","commit_id":"23f3dd7422212c53186427d2b8450da4b2394c17"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"365c168e8372ce3cb2f597dc32441cadd4875886","unresolved":false,"context_lines":[{"line_number":526,"context_line":"Upgrade impact"},{"line_number":527,"context_line":"--------------"},{"line_number":528,"context_line":""},{"line_number":529,"context_line":"Need to think through this well. There are quite a few existing CONF options"},{"line_number":530,"context_line":"and extra specs that control pinning behavior. While this proposal reduces this"},{"line_number":531,"context_line":"list and makes them consistent, we still need to keep code around"},{"line_number":532,"context_line":"nova/virt/hardware.py to handle old options and extra specs. A first step in"},{"line_number":533,"context_line":"handling this will be to refactor any code in nova/virt/hardware.py that"},{"line_number":534,"context_line":"references hard-coded extra specs or CONF options and turn those references"},{"line_number":535,"context_line":"into parameters to functions."},{"line_number":536,"context_line":""},{"line_number":537,"context_line":"Implementation"},{"line_number":538,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":9,"id":"5f7c97a3_1e954d87","line":535,"range":{"start_line":529,"start_character":0,"end_line":535,"end_character":29},"updated":"2018-05-29 10:46:41.000000000","message":"Because there are both flavor extra specs and image metadata options involved, is it ever going to be possible to truly deprecate the older flags? I\u0027m thinking of long running instances that someone might decide to (cold) migrate in N years time.\n\nPerhaps we want a data migration for the instance\u0027s embedded flavor to handle this? Is that going to be as awful as I think it will?","commit_id":"23f3dd7422212c53186427d2b8450da4b2394c17"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"275243163c254487ebee29135eb3414378a0b0fc","unresolved":false,"context_lines":[{"line_number":526,"context_line":"Upgrade impact"},{"line_number":527,"context_line":"--------------"},{"line_number":528,"context_line":""},{"line_number":529,"context_line":"Need to think through this well. There are quite a few existing CONF options"},{"line_number":530,"context_line":"and extra specs that control pinning behavior. While this proposal reduces this"},{"line_number":531,"context_line":"list and makes them consistent, we still need to keep code around"},{"line_number":532,"context_line":"nova/virt/hardware.py to handle old options and extra specs. A first step in"},{"line_number":533,"context_line":"handling this will be to refactor any code in nova/virt/hardware.py that"},{"line_number":534,"context_line":"references hard-coded extra specs or CONF options and turn those references"},{"line_number":535,"context_line":"into parameters to functions."},{"line_number":536,"context_line":""},{"line_number":537,"context_line":"Implementation"},{"line_number":538,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":9,"id":"5f7c97a3_fa4bb3ad","line":535,"range":{"start_line":529,"start_character":0,"end_line":535,"end_character":29},"in_reply_to":"5f7c97a3_1e954d87","updated":"2018-05-29 20:33:54.000000000","message":"Old instances won\u0027t have allocations of dedicated cores in placement. When they get cold-migrated, the old image and flavor extra specs that are saved in the instance_extra.flavor will contain only the VCPU\u003dX resources, not any dedicated PCPU resource request.","commit_id":"23f3dd7422212c53186427d2b8450da4b2394c17"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"5f21caa9d306ff9ea4f90f1f6e44d39019832ada","unresolved":false,"context_lines":[{"line_number":526,"context_line":"Upgrade impact"},{"line_number":527,"context_line":"--------------"},{"line_number":528,"context_line":""},{"line_number":529,"context_line":"Need to think through this well. There are quite a few existing CONF options"},{"line_number":530,"context_line":"and extra specs that control pinning behavior. While this proposal reduces this"},{"line_number":531,"context_line":"list and makes them consistent, we still need to keep code around"},{"line_number":532,"context_line":"nova/virt/hardware.py to handle old options and extra specs. A first step in"},{"line_number":533,"context_line":"handling this will be to refactor any code in nova/virt/hardware.py that"},{"line_number":534,"context_line":"references hard-coded extra specs or CONF options and turn those references"},{"line_number":535,"context_line":"into parameters to functions."},{"line_number":536,"context_line":""},{"line_number":537,"context_line":"Implementation"},{"line_number":538,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":9,"id":"5f7c97a3_34a05790","line":535,"range":{"start_line":529,"start_character":0,"end_line":535,"end_character":29},"in_reply_to":"5f7c97a3_fa4bb3ad","updated":"2018-05-30 09:08:14.000000000","message":"OK, so what happens in this case? Do we have to carry support for those old flags forever? If so, doesn\u0027t that mean we\u0027re still going to have all that complexity around?","commit_id":"23f3dd7422212c53186427d2b8450da4b2394c17"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"365c168e8372ce3cb2f597dc32441cadd4875886","unresolved":false,"context_lines":[{"line_number":576,"context_line":"reporting ``VCPU`` and ``PCPU`` inventory records against the child providers"},{"line_number":577,"context_line":"representing each NUMA node."},{"line_number":578,"context_line":""},{"line_number":579,"context_line":"The `granular request groups (Rocky)`_ spec is required for guests wishing to"},{"line_number":580,"context_line":"have the placement service fulfill the virtual NUMA topology constraints"},{"line_number":581,"context_line":"regarding dedicated CPUs."},{"line_number":582,"context_line":""}],"source_content_type":"text/x-rst","patch_set":9,"id":"5f7c97a3_3eefe91d","line":579,"range":{"start_line":579,"start_character":3,"end_line":579,"end_character":38},"updated":"2018-05-29 10:46:41.000000000","message":"You had this linked higher up too. You might want to use the same anchor in both places","commit_id":"23f3dd7422212c53186427d2b8450da4b2394c17"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"275243163c254487ebee29135eb3414378a0b0fc","unresolved":false,"context_lines":[{"line_number":576,"context_line":"reporting ``VCPU`` and ``PCPU`` inventory records against the child providers"},{"line_number":577,"context_line":"representing each NUMA node."},{"line_number":578,"context_line":""},{"line_number":579,"context_line":"The `granular request groups (Rocky)`_ spec is required for guests wishing to"},{"line_number":580,"context_line":"have the placement service fulfill the virtual NUMA topology constraints"},{"line_number":581,"context_line":"regarding dedicated CPUs."},{"line_number":582,"context_line":""}],"source_content_type":"text/x-rst","patch_set":9,"id":"5f7c97a3_bac77b12","line":579,"range":{"start_line":579,"start_character":3,"end_line":579,"end_character":38},"in_reply_to":"5f7c97a3_3eefe91d","updated":"2018-05-29 20:33:54.000000000","message":"I don\u0027t know what you mean... could you elaborate?","commit_id":"23f3dd7422212c53186427d2b8450da4b2394c17"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"5f21caa9d306ff9ea4f90f1f6e44d39019832ada","unresolved":false,"context_lines":[{"line_number":576,"context_line":"reporting ``VCPU`` and ``PCPU`` inventory records against the child providers"},{"line_number":577,"context_line":"representing each NUMA node."},{"line_number":578,"context_line":""},{"line_number":579,"context_line":"The `granular request groups (Rocky)`_ spec is required for guests wishing to"},{"line_number":580,"context_line":"have the placement service fulfill the virtual NUMA topology constraints"},{"line_number":581,"context_line":"regarding dedicated CPUs."},{"line_number":582,"context_line":""}],"source_content_type":"text/x-rst","patch_set":9,"id":"5f7c97a3_14a3db9f","line":579,"range":{"start_line":579,"start_character":3,"end_line":579,"end_character":38},"in_reply_to":"5f7c97a3_bac77b12","updated":"2018-05-30 09:08:14.000000000","message":"I was referring to [1]. You point to the code review there and the rendered spec here. You could use the same reference (e.g. \"`granular request groups`_\") in both locations. This is a nit though\n\n[1] https://review.openstack.org/#/c/555081/9/specs/rocky/approved/cpu-resources.rst@315","commit_id":"23f3dd7422212c53186427d2b8450da4b2394c17"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"365c168e8372ce3cb2f597dc32441cadd4875886","unresolved":false,"context_lines":[{"line_number":589,"context_line":"Documentation Impact"},{"line_number":590,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":591,"context_line":""},{"line_number":592,"context_line":"* Docs for dev-ref"},{"line_number":593,"context_line":"* Docs for admin guide about configuring flavors for dedicated and shared CPU"},{"line_number":594,"context_line":"  resources"},{"line_number":595,"context_line":"* Docs for user guide explaining difference between shared and dedicated CPU"}],"source_content_type":"text/x-rst","patch_set":9,"id":"5f7c97a3_9eee3d20","line":592,"range":{"start_line":592,"start_character":11,"end_line":592,"end_character":18},"updated":"2018-05-29 10:46:41.000000000","message":"dev-ref is dead, man","commit_id":"23f3dd7422212c53186427d2b8450da4b2394c17"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"5f21caa9d306ff9ea4f90f1f6e44d39019832ada","unresolved":false,"context_lines":[{"line_number":589,"context_line":"Documentation Impact"},{"line_number":590,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":591,"context_line":""},{"line_number":592,"context_line":"* Docs for dev-ref"},{"line_number":593,"context_line":"* Docs for admin guide about configuring flavors for dedicated and shared CPU"},{"line_number":594,"context_line":"  resources"},{"line_number":595,"context_line":"* Docs for user guide explaining difference between shared and dedicated CPU"}],"source_content_type":"text/x-rst","patch_set":9,"id":"5f7c97a3_b48f8728","line":592,"range":{"start_line":592,"start_character":11,"end_line":592,"end_character":18},"in_reply_to":"5f7c97a3_9ad2bfd0","updated":"2018-05-30 09:08:14.000000000","message":"Hmm, that\u0027s not _really_ the same thing as the old developer reference. That section covers nitty-gritty of how nova works internally, but iirc the old developer reference contained everything a developer would need to know including contribution and basic usage guides. Much of this got moved to \u0027/contributor\u0027 and \u0027/user\u0027 respectively. \u0027Reference guide\u0027 would be more appropriate but, as I see where you\u0027re coming from, this will also do.","commit_id":"23f3dd7422212c53186427d2b8450da4b2394c17"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"275243163c254487ebee29135eb3414378a0b0fc","unresolved":false,"context_lines":[{"line_number":589,"context_line":"Documentation Impact"},{"line_number":590,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":591,"context_line":""},{"line_number":592,"context_line":"* Docs for dev-ref"},{"line_number":593,"context_line":"* Docs for admin guide about configuring flavors for dedicated and shared CPU"},{"line_number":594,"context_line":"  resources"},{"line_number":595,"context_line":"* Docs for user guide explaining difference between shared and dedicated CPU"}],"source_content_type":"text/x-rst","patch_set":9,"id":"5f7c97a3_9ad2bfd0","line":592,"range":{"start_line":592,"start_character":11,"end_line":592,"end_character":18},"in_reply_to":"5f7c97a3_9eee3d20","updated":"2018-05-29 20:33:54.000000000","message":"We no longer have a developer reference?\n\nhttps://github.com/openstack/nova/tree/master/doc/source/reference","commit_id":"23f3dd7422212c53186427d2b8450da4b2394c17"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"e752c89c41cf52efa56fbd1e2198f11af0913400","unresolved":false,"context_lines":[{"line_number":41,"context_line":""},{"line_number":42,"context_line":"**physical processor**"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"    A single logical processor on the host machine that is associated with a"},{"line_number":45,"context_line":"    physical CPU core or hyperthread"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"**dedicated CPU**"},{"line_number":48,"context_line":""}],"source_content_type":"text/x-rst","patch_set":10,"id":"5f7c97a3_f4489fb3","line":45,"range":{"start_line":44,"start_character":0,"end_line":45,"end_character":36},"updated":"2018-05-30 10:18:08.000000000","message":"\u003e style nit: If you delete the line above this and indent the block by 2+ lines, you\u0027ll get a definition list which I think is what you want\n\nYou forgot to remove the line above this so this will render as a block comment (it\u0027s one of the more annoying aspects of rST). Can you drop the lines between the term and definition (e.g. line 43, 48...)","commit_id":"1712e28bbe895839599bb1af08fa8ee8a3f772ea"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"e752c89c41cf52efa56fbd1e2198f11af0913400","unresolved":false,"context_lines":[{"line_number":170,"context_line":""},{"line_number":171,"context_line":"    The existing ``CONF.vcpu_pin_set`` will be **deprecated** in the \"S\""},{"line_number":172,"context_line":"    release for removal in the \"T\" release. The ``CONF.cpu_dedicated_set`` and"},{"line_number":173,"context_line":"    ``CONF.cpu_shared_set`` make ``CONF.vcpu_pin_set`` irrelevant."},{"line_number":174,"context_line":""},{"line_number":175,"context_line":"For non-NUMA-configured host systems, the single compute node resource provider"},{"line_number":176,"context_line":"will contain inventory records for ``VCPU`` and/or ``PCPU`` resources. For"}],"source_content_type":"text/x-rst","patch_set":10,"id":"5f7c97a3_afc16e56","line":173,"range":{"start_line":173,"start_character":28,"end_line":173,"end_character":32},"updated":"2018-05-30 10:18:08.000000000","message":"options make","commit_id":"1712e28bbe895839599bb1af08fa8ee8a3f772ea"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"0638c825c5acb732090166309081f494003f3a93","unresolved":false,"context_lines":[{"line_number":170,"context_line":""},{"line_number":171,"context_line":"    The existing ``CONF.vcpu_pin_set`` will be **deprecated** in the \"S\""},{"line_number":172,"context_line":"    release for removal in the \"T\" release. The ``CONF.cpu_dedicated_set`` and"},{"line_number":173,"context_line":"    ``CONF.cpu_shared_set`` make ``CONF.vcpu_pin_set`` irrelevant."},{"line_number":174,"context_line":""},{"line_number":175,"context_line":"For non-NUMA-configured host systems, the single compute node resource provider"},{"line_number":176,"context_line":"will contain inventory records for ``VCPU`` and/or ``PCPU`` resources. For"}],"source_content_type":"text/x-rst","patch_set":10,"id":"5f7c97a3_567e32af","line":173,"range":{"start_line":173,"start_character":28,"end_line":173,"end_character":32},"in_reply_to":"5f7c97a3_afc16e56","updated":"2018-05-30 16:26:48.000000000","message":"Done","commit_id":"1712e28bbe895839599bb1af08fa8ee8a3f772ea"},{"author":{"_account_id":20191,"name":"Dinesh Bhor","email":"bhordinesh07@gmail.com","username":"dineshbhor"},"change_message_id":"833e984ee34369461cb7fbfb894538608a7d4e87","unresolved":false,"context_lines":[{"line_number":180,"context_line":""},{"line_number":181,"context_line":".. note::"},{"line_number":182,"context_line":""},{"line_number":183,"context_line":"    This spec does not dictate *how* a host system will be configured to use"},{"line_number":184,"context_line":"    (or not use) NUMA. Presumably, there will be CONF option or similar toggle"},{"line_number":185,"context_line":"    to turn off NUMA configuration on certain host systems."},{"line_number":186,"context_line":""},{"line_number":187,"context_line":"As an example of a NUMA-configured host system, consider a host system with 2"},{"line_number":188,"context_line":"sockets, each with 24 physical cores and 2 hyperthreads per physical core."}],"source_content_type":"text/x-rst","patch_set":10,"id":"5f7c97a3_792328a8","line":185,"range":{"start_line":183,"start_character":4,"end_line":185,"end_character":59},"updated":"2018-05-30 08:16:55.000000000","message":"I believe this will be implemented with below Spec:\nhttps://review.openstack.org/#/c/552924/\n\nBut the Spec does not talk about any toggle CONF option. It is talking about below CONF option:\n\n\n\n\n``[devices ]/numa_resource_classes \u003d [PCPU, MEMORY_MB]``\n\n\nwhich will be the list of all the  NUMA-related resource classes which will be reported to the placement in below manner:\n\n\n                      +-----------------+\n                      | \u003cCN_NAME\u003e       |\n                      | DISK_GB: 50     | (if non-shared disk)\n                      | VCPU: 16        | (shared CPUs)\n                      +-----------------+\n                      /                 \\\n   +------------------+                 +-----------------+\n   | \u003cNUMA_NODE_O\u003e    |                 | \u003cNUMA_NODE_1\u003e   |\n   | PCPU: 8          |                 | PCPU: 8         | (dedicated CPUs)\n   | MEMORY_MB: 4096  |                 | MEMORY_MB: 4096 |\n   +------------------+                 +-----------------+\n\n\nAs you can see VCPU is not listed in that list so VCPU will not be reported to Placement in NUMA fashion.\n\n\nIf operator don\u0027t configure this CONF option *means* that he/she has turned off the NUMA configuration. Correct?","commit_id":"1712e28bbe895839599bb1af08fa8ee8a3f772ea"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"0638c825c5acb732090166309081f494003f3a93","unresolved":false,"context_lines":[{"line_number":180,"context_line":""},{"line_number":181,"context_line":".. note::"},{"line_number":182,"context_line":""},{"line_number":183,"context_line":"    This spec does not dictate *how* a host system will be configured to use"},{"line_number":184,"context_line":"    (or not use) NUMA. Presumably, there will be CONF option or similar toggle"},{"line_number":185,"context_line":"    to turn off NUMA configuration on certain host systems."},{"line_number":186,"context_line":""},{"line_number":187,"context_line":"As an example of a NUMA-configured host system, consider a host system with 2"},{"line_number":188,"context_line":"sockets, each with 24 physical cores and 2 hyperthreads per physical core."}],"source_content_type":"text/x-rst","patch_set":10,"id":"5f7c97a3_21a32eb4","line":185,"range":{"start_line":183,"start_character":4,"end_line":185,"end_character":59},"in_reply_to":"5f7c97a3_792328a8","updated":"2018-05-30 16:26:48.000000000","message":"Honestly, I have no idea. That other spec should be describing the compute host\u0027s modeling of separate CPU sockets/NUMA nodes as child providers of the compute node parent provider. I only included this note to say that this spec was not concerned with that topic.","commit_id":"1712e28bbe895839599bb1af08fa8ee8a3f772ea"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"e752c89c41cf52efa56fbd1e2198f11af0913400","unresolved":false,"context_lines":[{"line_number":207,"context_line":"    [compute]"},{"line_number":208,"context_line":"    cpu_dedicated_set\u003d2-17,50-65"},{"line_number":209,"context_line":"    cpu_shared_set\u003d18-47,66-95"},{"line_number":210,"context_line":"    cpu_allocation_ration\u003d8.0"},{"line_number":211,"context_line":""},{"line_number":212,"context_line":"The virt driver will construct a provider tree containing two NUMA node child"},{"line_number":213,"context_line":"providers of the parent compute node resource provider and report inventory for"}],"source_content_type":"text/x-rst","patch_set":10,"id":"5f7c97a3_cff94a4e","line":210,"range":{"start_line":210,"start_character":24,"end_line":210,"end_character":25},"updated":"2018-05-30 10:18:08.000000000","message":"ratio, right?","commit_id":"1712e28bbe895839599bb1af08fa8ee8a3f772ea"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"0638c825c5acb732090166309081f494003f3a93","unresolved":false,"context_lines":[{"line_number":207,"context_line":"    [compute]"},{"line_number":208,"context_line":"    cpu_dedicated_set\u003d2-17,50-65"},{"line_number":209,"context_line":"    cpu_shared_set\u003d18-47,66-95"},{"line_number":210,"context_line":"    cpu_allocation_ration\u003d8.0"},{"line_number":211,"context_line":""},{"line_number":212,"context_line":"The virt driver will construct a provider tree containing two NUMA node child"},{"line_number":213,"context_line":"providers of the parent compute node resource provider and report inventory for"}],"source_content_type":"text/x-rst","patch_set":10,"id":"5f7c97a3_564632c2","line":210,"range":{"start_line":210,"start_character":24,"end_line":210,"end_character":25},"in_reply_to":"5f7c97a3_cff94a4e","updated":"2018-05-30 16:26:48.000000000","message":"depends on how you perceive it :P\n\nfixed.","commit_id":"1712e28bbe895839599bb1af08fa8ee8a3f772ea"},{"author":{"_account_id":20191,"name":"Dinesh Bhor","email":"bhordinesh07@gmail.com","username":"dineshbhor"},"change_message_id":"833e984ee34369461cb7fbfb894538608a7d4e87","unresolved":false,"context_lines":[{"line_number":209,"context_line":"    cpu_shared_set\u003d18-47,66-95"},{"line_number":210,"context_line":"    cpu_allocation_ration\u003d8.0"},{"line_number":211,"context_line":""},{"line_number":212,"context_line":"The virt driver will construct a provider tree containing two NUMA node child"},{"line_number":213,"context_line":"providers of the parent compute node resource provider and report inventory for"},{"line_number":214,"context_line":"each NUMA node separately::"},{"line_number":215,"context_line":""},{"line_number":216,"context_line":"    COMPUTE NODE provider"},{"line_number":217,"context_line":"        NUMA NODE 0 provider:"}],"source_content_type":"text/x-rst","patch_set":10,"id":"5f7c97a3_b6c30fed","line":214,"range":{"start_line":212,"start_character":0,"end_line":214,"end_character":25},"updated":"2018-05-30 08:16:55.000000000","message":"Is this going to be implemented with below spec:\nhttps://review.openstack.org/#/c/552924/\n\n\nIf YES, does it have any dependency to implement this Spec?","commit_id":"1712e28bbe895839599bb1af08fa8ee8a3f772ea"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"0638c825c5acb732090166309081f494003f3a93","unresolved":false,"context_lines":[{"line_number":209,"context_line":"    cpu_shared_set\u003d18-47,66-95"},{"line_number":210,"context_line":"    cpu_allocation_ration\u003d8.0"},{"line_number":211,"context_line":""},{"line_number":212,"context_line":"The virt driver will construct a provider tree containing two NUMA node child"},{"line_number":213,"context_line":"providers of the parent compute node resource provider and report inventory for"},{"line_number":214,"context_line":"each NUMA node separately::"},{"line_number":215,"context_line":""},{"line_number":216,"context_line":"    COMPUTE NODE provider"},{"line_number":217,"context_line":"        NUMA NODE 0 provider:"}],"source_content_type":"text/x-rst","patch_set":10,"id":"5f7c97a3_f635fe45","line":214,"range":{"start_line":212,"start_character":0,"end_line":214,"end_character":25},"in_reply_to":"5f7c97a3_b6c30fed","updated":"2018-05-30 16:26:48.000000000","message":"No, this spec is not dependent on the completion of that other spec.","commit_id":"1712e28bbe895839599bb1af08fa8ee8a3f772ea"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"e752c89c41cf52efa56fbd1e2198f11af0913400","unresolved":false,"context_lines":[{"line_number":295,"context_line":"resources. Each group will specify a number of dedicated CPUs and a number of"},{"line_number":296,"context_line":"shared CPUs."},{"line_number":297,"context_line":""},{"line_number":298,"context_line":".. _granular request group: https://review.openstack.org/#/c/540179/"},{"line_number":299,"context_line":""},{"line_number":300,"context_line":"* The number of shared CPUs needed by the guest\u0027s virtual NUMA node ``$NODE``"},{"line_number":301,"context_line":"  shall be stored in the existing ``resources$NODE:VCPU\u003d$AMOUNT`` extra spec"}],"source_content_type":"text/x-rst","patch_set":10,"id":"5f7c97a3_2f5d5e46","line":298,"range":{"start_line":298,"start_character":0,"end_line":298,"end_character":68},"updated":"2018-05-30 10:18:08.000000000","message":"As noted in previous revision, should you use the reference to the rendered version of this spec (line 606) instead of essentially duplicating this here?","commit_id":"1712e28bbe895839599bb1af08fa8ee8a3f772ea"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"0638c825c5acb732090166309081f494003f3a93","unresolved":false,"context_lines":[{"line_number":295,"context_line":"resources. Each group will specify a number of dedicated CPUs and a number of"},{"line_number":296,"context_line":"shared CPUs."},{"line_number":297,"context_line":""},{"line_number":298,"context_line":".. _granular request group: https://review.openstack.org/#/c/540179/"},{"line_number":299,"context_line":""},{"line_number":300,"context_line":"* The number of shared CPUs needed by the guest\u0027s virtual NUMA node ``$NODE``"},{"line_number":301,"context_line":"  shall be stored in the existing ``resources$NODE:VCPU\u003d$AMOUNT`` extra spec"}],"source_content_type":"text/x-rst","patch_set":10,"id":"5f7c97a3_76ec8eba","line":298,"range":{"start_line":298,"start_character":0,"end_line":298,"end_character":68},"in_reply_to":"5f7c97a3_2f5d5e46","updated":"2018-05-30 16:26:48.000000000","message":"ah, now I see. yes, will do.\n\ndone.","commit_id":"1712e28bbe895839599bb1af08fa8ee8a3f772ea"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"e752c89c41cf52efa56fbd1e2198f11af0913400","unresolved":false,"context_lines":[{"line_number":306,"context_line":"The providers of these resources will be one or more **host** NUMA node child"},{"line_number":307,"context_line":"providers."},{"line_number":308,"context_line":""},{"line_number":309,"context_line":"As an example, suppose the guest wanted a virtual NUMA topology of 2 sockets"},{"line_number":310,"context_line":"with 2 cores in each socket. Further suppose the guest wanted all CPU resources"},{"line_number":311,"context_line":"to be serviced by dedicated host CPUs. The extra specs (or image properties)"},{"line_number":312,"context_line":"for the guest would look like this::"},{"line_number":313,"context_line":""}],"source_content_type":"text/x-rst","patch_set":10,"id":"5f7c97a3_0a417039","line":310,"range":{"start_line":309,"start_character":15,"end_line":310,"end_character":28},"updated":"2018-05-30 10:18:08.000000000","message":"This seems to be a conflation of CPU and NUMA topologies again (this is a tricky to avoid, I\u0027ll admit). Internally the guest could see one, two, or four sockets. What you\u0027re actually doing is placing two vCPU _processes_ each on two NUMA nodes, right? Could you say that instead or is it too low level? Perhaps we need yet another term in the definition list above? :)","commit_id":"1712e28bbe895839599bb1af08fa8ee8a3f772ea"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"0638c825c5acb732090166309081f494003f3a93","unresolved":false,"context_lines":[{"line_number":306,"context_line":"The providers of these resources will be one or more **host** NUMA node child"},{"line_number":307,"context_line":"providers."},{"line_number":308,"context_line":""},{"line_number":309,"context_line":"As an example, suppose the guest wanted a virtual NUMA topology of 2 sockets"},{"line_number":310,"context_line":"with 2 cores in each socket. Further suppose the guest wanted all CPU resources"},{"line_number":311,"context_line":"to be serviced by dedicated host CPUs. The extra specs (or image properties)"},{"line_number":312,"context_line":"for the guest would look like this::"},{"line_number":313,"context_line":""}],"source_content_type":"text/x-rst","patch_set":10,"id":"5f7c97a3_f6009e68","line":310,"range":{"start_line":309,"start_character":15,"end_line":310,"end_character":28},"in_reply_to":"5f7c97a3_0a417039","updated":"2018-05-30 16:26:48.000000000","message":"dang it, I thought I\u0027d gotten rid of the NUMA wording here. Will revise...","commit_id":"1712e28bbe895839599bb1af08fa8ee8a3f772ea"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"e752c89c41cf52efa56fbd1e2198f11af0913400","unresolved":false,"context_lines":[{"line_number":387,"context_line":""},{"line_number":388,"context_line":"    resources:VCPU\u003d2"},{"line_number":389,"context_line":""},{"line_number":390,"context_line":"2a) A database server requires 8 CPU resources, and the workload needs"},{"line_number":391,"context_line":"dedicated CPU resources to minimize effects of other workloads hosted on the"},{"line_number":392,"context_line":"same hardware. The deployer wishes to ensure that those dedicated CPU resources"},{"line_number":393,"context_line":"are all served by the same resources provider::"},{"line_number":394,"context_line":""},{"line_number":395,"context_line":"    resources:PCPU\u003d8"},{"line_number":396,"context_line":""},{"line_number":397,"context_line":"2a) A database server requires 8 CPU resources, and the workload needs"},{"line_number":398,"context_line":"dedicated CPU resources to minimize effects of other workloads hosted on the"}],"source_content_type":"text/x-rst","patch_set":10,"id":"5f7c97a3_aa3cfc92","line":395,"range":{"start_line":390,"start_character":0,"end_line":395,"end_character":20},"updated":"2018-05-30 10:18:08.000000000","message":"++","commit_id":"1712e28bbe895839599bb1af08fa8ee8a3f772ea"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"d7d6d93bef40eb8e09cb4ce89083e9a7164ce013","unresolved":false,"context_lines":[{"line_number":422,"context_line":"    resources:VCPU\u003d2"},{"line_number":423,"context_line":"    trait:HW_CPU_HYPERTHREADING\u003dforbidden"},{"line_number":424,"context_line":""},{"line_number":425,"context_line":"4) A virtual radio access network function needs 16 CPU resources, all of which"},{"line_number":426,"context_line":"require real-time guarantees and therefore dedicated host CPUs. The VNF vendor"},{"line_number":427,"context_line":"states that the host system should have multiple SR-IOV-enabled physical"},{"line_number":428,"context_line":"functions, each of which are associated with a different NUMA node (for"},{"line_number":429,"context_line":"affinity purposes) and that the 16 dedicated CPU resources should be evenly"},{"line_number":430,"context_line":"distributed between the two NUMA nodes on which 2 SR-IOV virtual functions are"},{"line_number":431,"context_line":"associated with. The VNF vendor states that the CPU resources can tolerate"},{"line_number":432,"context_line":"being on hyperthread siblings and the deployer would like to pack the VNFs"},{"line_number":433,"context_line":"dedicated CPU resources onto as few physical cores as possible (therefore"},{"line_number":434,"context_line":"requires the target host to support hyperthreading)::"},{"line_number":435,"context_line":""},{"line_number":436,"context_line":"    resources1:PCPU\u003d8"},{"line_number":437,"context_line":"    resources1:SRIOV_NET_VF\u003d1"},{"line_number":438,"context_line":"    trait1:HW_CPU_HYPERTHREADING\u003drequired"},{"line_number":439,"context_line":"    resources2:PCPU\u003d8"},{"line_number":440,"context_line":"    resources2:SRIOV_NET_VF\u003d1"},{"line_number":441,"context_line":"    trait2:HW_CPU_HYPERTHREADING\u003drequired"},{"line_number":442,"context_line":"    group_policy\u003disolate"},{"line_number":443,"context_line":""},{"line_number":444,"context_line":".. note::"},{"line_number":445,"context_line":""}],"source_content_type":"text/x-rst","patch_set":10,"id":"5f7c97a3_41942a37","line":442,"range":{"start_line":425,"start_character":0,"end_line":442,"end_character":24},"updated":"2018-05-31 10:13:31.000000000","message":"As discussed on IRC, this use case (and anything that requires a NUMA nodes to be mapped into placement) will not be supported until we support nested RPs and NUMA topologies in placement. I\u0027d call this out explicitly because it wasn\u0027t at all clear to me, even after multiple readings","commit_id":"1712e28bbe895839599bb1af08fa8ee8a3f772ea"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"e752c89c41cf52efa56fbd1e2198f11af0913400","unresolved":false,"context_lines":[{"line_number":440,"context_line":"    resources2:SRIOV_NET_VF\u003d1"},{"line_number":441,"context_line":"    trait2:HW_CPU_HYPERTHREADING\u003drequired"},{"line_number":442,"context_line":"    group_policy\u003disolate"},{"line_number":443,"context_line":""},{"line_number":444,"context_line":".. note::"},{"line_number":445,"context_line":""},{"line_number":446,"context_line":"    You will note that the granular resource request groups only include the"}],"source_content_type":"text/x-rst","patch_set":10,"id":"5f7c97a3_2a71cc76","line":443,"updated":"2018-05-30 10:18:08.000000000","message":"nit: worth including the real-time flavor extra specs here too given these are all extra specs?","commit_id":"1712e28bbe895839599bb1af08fa8ee8a3f772ea"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"0638c825c5acb732090166309081f494003f3a93","unresolved":false,"context_lines":[{"line_number":440,"context_line":"    resources2:SRIOV_NET_VF\u003d1"},{"line_number":441,"context_line":"    trait2:HW_CPU_HYPERTHREADING\u003drequired"},{"line_number":442,"context_line":"    group_policy\u003disolate"},{"line_number":443,"context_line":""},{"line_number":444,"context_line":".. note::"},{"line_number":445,"context_line":""},{"line_number":446,"context_line":"    You will note that the granular resource request groups only include the"}],"source_content_type":"text/x-rst","patch_set":10,"id":"5f7c97a3_968a8abc","line":443,"in_reply_to":"5f7c97a3_2a71cc76","updated":"2018-05-30 16:26:48.000000000","message":"as mentioned in IRC, I\u0027m trying to keep the NUMA- and realitime-specific extra specs flags out of this spec, since this spec is really about how to request dedicated and/or shared CPU resources in the new  placement style.","commit_id":"1712e28bbe895839599bb1af08fa8ee8a3f772ea"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"789e9fe61f6a007007bf8b4bd41cf3e938859453","unresolved":false,"context_lines":[{"line_number":28,"context_line":"therefore there is no way to view the physical processor usage in the system."},{"line_number":29,"context_line":"The CONF options and extra specs / image properties surrounding host CPU"},{"line_number":30,"context_line":"inventory and guest CPU pinning are difficult to understand, and despite"},{"line_number":31,"context_line":"efforts to document them, there are only a few individuals that even know how"},{"line_number":32,"context_line":"to \"properly\" configure a compute node for hosting certain workloads."},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"We would like to both simplify the configuration of a compute node with regards"}],"source_content_type":"text/x-rst","patch_set":11,"id":"5f7c97a3_591f3e6b","line":31,"range":{"start_line":31,"start_character":59,"end_line":31,"end_character":63},"updated":"2018-05-30 21:57:50.000000000","message":"who","commit_id":"33d37fc22fc4cb8d6b3017c5d67cd64f80183c07"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"843524c2eb2308189d8c5755d8a9055d8ec28ce0","unresolved":false,"context_lines":[{"line_number":28,"context_line":"therefore there is no way to view the physical processor usage in the system."},{"line_number":29,"context_line":"The CONF options and extra specs / image properties surrounding host CPU"},{"line_number":30,"context_line":"inventory and guest CPU pinning are difficult to understand, and despite"},{"line_number":31,"context_line":"efforts to document them, there are only a few individuals that even know how"},{"line_number":32,"context_line":"to \"properly\" configure a compute node for hosting certain workloads."},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"We would like to both simplify the configuration of a compute node with regards"}],"source_content_type":"text/x-rst","patch_set":11,"id":"5f7c97a3_cc010107","line":31,"range":{"start_line":31,"start_character":59,"end_line":31,"end_character":63},"in_reply_to":"5f7c97a3_591f3e6b","updated":"2018-06-04 18:55:28.000000000","message":"Done","commit_id":"33d37fc22fc4cb8d6b3017c5d67cd64f80183c07"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"67c716dbb6e94272d9244e61439b24ead5a9b017","unresolved":false,"context_lines":[{"line_number":31,"context_line":"efforts to document them, there are only a few individuals that even know how"},{"line_number":32,"context_line":"to \"properly\" configure a compute node for hosting certain workloads."},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"We would like to both simplify the configuration of a compute node with regards"},{"line_number":35,"context_line":"to CPU resource inventory as well as make the quantitative tracking of"},{"line_number":36,"context_line":"dedicated CPU resources consistent with the tracking of shared CPU resources"},{"line_number":37,"context_line":"via the placement API."},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"Definitions"},{"line_number":40,"context_line":"-----------"}],"source_content_type":"text/x-rst","patch_set":11,"id":"5f7c97a3_8fe49be1","line":37,"range":{"start_line":34,"start_character":0,"end_line":37,"end_character":22},"updated":"2018-05-31 10:44:00.000000000","message":"Separating NUMA modeling from CPU pinning also appears to be a goal here. You should probably state that.","commit_id":"33d37fc22fc4cb8d6b3017c5d67cd64f80183c07"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"843524c2eb2308189d8c5755d8a9055d8ec28ce0","unresolved":false,"context_lines":[{"line_number":31,"context_line":"efforts to document them, there are only a few individuals that even know how"},{"line_number":32,"context_line":"to \"properly\" configure a compute node for hosting certain workloads."},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"We would like to both simplify the configuration of a compute node with regards"},{"line_number":35,"context_line":"to CPU resource inventory as well as make the quantitative tracking of"},{"line_number":36,"context_line":"dedicated CPU resources consistent with the tracking of shared CPU resources"},{"line_number":37,"context_line":"via the placement API."},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"Definitions"},{"line_number":40,"context_line":"-----------"}],"source_content_type":"text/x-rst","patch_set":11,"id":"5f7c97a3_4908832c","line":37,"range":{"start_line":34,"start_character":0,"end_line":37,"end_character":22},"in_reply_to":"5f7c97a3_8fe49be1","updated":"2018-06-04 18:55:28.000000000","message":"No, that isn\u0027t a goal of this spec. The goal of this spec is to lay the groundwork for tracking amounts of dedicated and shared CPU resources.","commit_id":"33d37fc22fc4cb8d6b3017c5d67cd64f80183c07"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"d42210a3b1cbaf916338a2633ed8706d510a3751","unresolved":false,"context_lines":[{"line_number":31,"context_line":"efforts to document them, there are only a few individuals that even know how"},{"line_number":32,"context_line":"to \"properly\" configure a compute node for hosting certain workloads."},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"We would like to both simplify the configuration of a compute node with regards"},{"line_number":35,"context_line":"to CPU resource inventory as well as make the quantitative tracking of"},{"line_number":36,"context_line":"dedicated CPU resources consistent with the tracking of shared CPU resources"},{"line_number":37,"context_line":"via the placement API."},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"Definitions"},{"line_number":40,"context_line":"-----------"}],"source_content_type":"text/x-rst","patch_set":11,"id":"5f7c97a3_c5f01894","line":37,"range":{"start_line":34,"start_character":0,"end_line":37,"end_character":22},"in_reply_to":"5f7c97a3_8fe49be1","updated":"2018-06-01 20:15:08.000000000","message":"to some extent but this spec was origianlly formulated to include modeling of cpus with numa affinity within its scope.\n\nthe delegations of generic numa modeling to sylvains spec hapeend after and is complementary not a replacement for the defintion here.","commit_id":"33d37fc22fc4cb8d6b3017c5d67cd64f80183c07"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"67c716dbb6e94272d9244e61439b24ead5a9b017","unresolved":false,"context_lines":[{"line_number":40,"context_line":"-----------"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"**physical processor**"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"    A single logical processor on the host machine that is associated with a"},{"line_number":45,"context_line":"    physical CPU core or hyperthread"},{"line_number":46,"context_line":""}],"source_content_type":"text/x-rst","patch_set":11,"id":"5f7c97a3_4fcd2364","line":43,"updated":"2018-05-31 10:44:00.000000000","message":"Still got newlines here, buddy :)\n\n  physical processor\n      A single logical...","commit_id":"33d37fc22fc4cb8d6b3017c5d67cd64f80183c07"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"843524c2eb2308189d8c5755d8a9055d8ec28ce0","unresolved":false,"context_lines":[{"line_number":40,"context_line":"-----------"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"**physical processor**"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"    A single logical processor on the host machine that is associated with a"},{"line_number":45,"context_line":"    physical CPU core or hyperthread"},{"line_number":46,"context_line":""}],"source_content_type":"text/x-rst","patch_set":11,"id":"5f7c97a3_acfcc50c","line":43,"in_reply_to":"5f7c97a3_4fcd2364","updated":"2018-06-04 18:55:28.000000000","message":"Done","commit_id":"33d37fc22fc4cb8d6b3017c5d67cd64f80183c07"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"d42210a3b1cbaf916338a2633ed8706d510a3751","unresolved":false,"context_lines":[{"line_number":40,"context_line":"-----------"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"**physical processor**"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"    A single logical processor on the host machine that is associated with a"},{"line_number":45,"context_line":"    physical CPU core or hyperthread"},{"line_number":46,"context_line":""}],"source_content_type":"text/x-rst","patch_set":11,"id":"5f7c97a3_6557c402","line":43,"in_reply_to":"5f7c97a3_4fcd2364","updated":"2018-06-01 20:15:08.000000000","message":"you say that but looking at \n\nhttp://logs.openstack.org/81/555081/11/check/build-openstack-sphinx-docs/acf7651/html/specs/rocky/approved/cpu-resources.html#definitions\n\nit looks fine to me.\n\nwhat changes if you remove the line?\n\nunless each of the heading becomes indivigually linkable i dont really see a reason to change the current layout.","commit_id":"33d37fc22fc4cb8d6b3017c5d67cd64f80183c07"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"789e9fe61f6a007007bf8b4bd41cf3e938859453","unresolved":false,"context_lines":[{"line_number":164,"context_line":"    ``CONF.cpu_shared_set``. The set difference between the entire set of"},{"line_number":165,"context_line":"    physical processors on a host system and the union of the dedicated and"},{"line_number":166,"context_line":"    shared pinsets shall represent the number of physical processors that has"},{"line_number":167,"context_line":"    been reserved for the host."},{"line_number":168,"context_line":""},{"line_number":169,"context_line":".. note::"},{"line_number":170,"context_line":""}],"source_content_type":"text/x-rst","patch_set":11,"id":"5f7c97a3_ec0c46ed","line":167,"range":{"start_line":167,"start_character":9,"end_line":167,"end_character":17},"updated":"2018-05-30 21:57:50.000000000","message":"Is there any rule/guidance for virt drivers as to whether these should be included in the CPU inventory (which one? presumably PCPU) with `reserved` set to that number, or omitted from the inventory entirely?\n\n[Later] Okay, I see this (implicitly) answered below.","commit_id":"33d37fc22fc4cb8d6b3017c5d67cd64f80183c07"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"843524c2eb2308189d8c5755d8a9055d8ec28ce0","unresolved":false,"context_lines":[{"line_number":164,"context_line":"    ``CONF.cpu_shared_set``. The set difference between the entire set of"},{"line_number":165,"context_line":"    physical processors on a host system and the union of the dedicated and"},{"line_number":166,"context_line":"    shared pinsets shall represent the number of physical processors that has"},{"line_number":167,"context_line":"    been reserved for the host."},{"line_number":168,"context_line":""},{"line_number":169,"context_line":".. note::"},{"line_number":170,"context_line":""}],"source_content_type":"text/x-rst","patch_set":11,"id":"5f7c97a3_cc2a617d","line":167,"range":{"start_line":167,"start_character":9,"end_line":167,"end_character":17},"in_reply_to":"5f7c97a3_457ba879","updated":"2018-06-04 18:55:28.000000000","message":"@sean-k-mooney: Eric was just referring to the reserved *amount* of the PCPU (and VCPU) inventory records. He wasn\u0027t talking about specific physical processors (a pinset) being recorded using a different CONF option.","commit_id":"33d37fc22fc4cb8d6b3017c5d67cd64f80183c07"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"d42210a3b1cbaf916338a2633ed8706d510a3751","unresolved":false,"context_lines":[{"line_number":164,"context_line":"    ``CONF.cpu_shared_set``. The set difference between the entire set of"},{"line_number":165,"context_line":"    physical processors on a host system and the union of the dedicated and"},{"line_number":166,"context_line":"    shared pinsets shall represent the number of physical processors that has"},{"line_number":167,"context_line":"    been reserved for the host."},{"line_number":168,"context_line":""},{"line_number":169,"context_line":".. note::"},{"line_number":170,"context_line":""}],"source_content_type":"text/x-rst","patch_set":11,"id":"5f7c97a3_457ba879","line":167,"range":{"start_line":167,"start_character":9,"end_line":167,"end_character":17},"in_reply_to":"5f7c97a3_ec0c46ed","updated":"2018-06-01 20:15:08.000000000","message":"i think we should explciy never list the cpus ourside of the \nCONF.cpu_dedicated_set or CONF.cpu_shared_set in the resouce provider inventories.\n\ncpus not in CONF.cpu_shared_set and CONF.cpu_dedicated_set i would assert are not \"owned\" or \"managed\" by openstack and there for should not be tacked by it.","commit_id":"33d37fc22fc4cb8d6b3017c5d67cd64f80183c07"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"789e9fe61f6a007007bf8b4bd41cf3e938859453","unresolved":false,"context_lines":[{"line_number":168,"context_line":""},{"line_number":169,"context_line":".. note::"},{"line_number":170,"context_line":""},{"line_number":171,"context_line":"    The existing ``CONF.vcpu_pin_set`` will be **deprecated** in the \"S\""},{"line_number":172,"context_line":"    release for removal in the \"T\" release. The ``CONF.cpu_dedicated_set`` and"},{"line_number":173,"context_line":"    ``CONF.cpu_shared_set`` optiona make ``CONF.vcpu_pin_set`` irrelevant."},{"line_number":174,"context_line":""},{"line_number":175,"context_line":"For non-NUMA-configured host systems, the single compute node resource provider"}],"source_content_type":"text/x-rst","patch_set":11,"id":"5f7c97a3_4c2d3a93","line":172,"range":{"start_line":171,"start_character":46,"end_line":172,"end_character":43},"updated":"2018-05-30 21:57:50.000000000","message":"Just so I understand: this spec is going to be implemented in Rocky, but we\u0027re going to wait until Stein to start deprecating the legacy opt?\n\n[Later] Okay, I see the bp isn\u0027t actually targeted for Rocky (or any release).  What\u0027s the plan, man?","commit_id":"33d37fc22fc4cb8d6b3017c5d67cd64f80183c07"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"843524c2eb2308189d8c5755d8a9055d8ec28ce0","unresolved":false,"context_lines":[{"line_number":168,"context_line":""},{"line_number":169,"context_line":".. note::"},{"line_number":170,"context_line":""},{"line_number":171,"context_line":"    The existing ``CONF.vcpu_pin_set`` will be **deprecated** in the \"S\""},{"line_number":172,"context_line":"    release for removal in the \"T\" release. The ``CONF.cpu_dedicated_set`` and"},{"line_number":173,"context_line":"    ``CONF.cpu_shared_set`` optiona make ``CONF.vcpu_pin_set`` irrelevant."},{"line_number":174,"context_line":""},{"line_number":175,"context_line":"For non-NUMA-configured host systems, the single compute node resource provider"}],"source_content_type":"text/x-rst","patch_set":11,"id":"5f7c97a3_6c1f8d5b","line":172,"range":{"start_line":171,"start_character":46,"end_line":172,"end_character":43},"in_reply_to":"5f7c97a3_4c2d3a93","updated":"2018-06-04 18:55:28.000000000","message":"\u003e Just so I understand: this spec is going to be implemented in\n \u003e Rocky, but we\u0027re going to wait until Stein to start deprecating the\n \u003e legacy opt?\n \u003e \n \u003e [Later] Okay, I see the bp isn\u0027t actually targeted for Rocky (or\n \u003e any release).  What\u0027s the plan, man?\n\nThis blueprint is targets for Rocky. That\u0027s why it\u0027s in /specs/rocky/approved.","commit_id":"33d37fc22fc4cb8d6b3017c5d67cd64f80183c07"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"d42210a3b1cbaf916338a2633ed8706d510a3751","unresolved":false,"context_lines":[{"line_number":168,"context_line":""},{"line_number":169,"context_line":".. note::"},{"line_number":170,"context_line":""},{"line_number":171,"context_line":"    The existing ``CONF.vcpu_pin_set`` will be **deprecated** in the \"S\""},{"line_number":172,"context_line":"    release for removal in the \"T\" release. The ``CONF.cpu_dedicated_set`` and"},{"line_number":173,"context_line":"    ``CONF.cpu_shared_set`` optiona make ``CONF.vcpu_pin_set`` irrelevant."},{"line_number":174,"context_line":""},{"line_number":175,"context_line":"For non-NUMA-configured host systems, the single compute node resource provider"}],"source_content_type":"text/x-rst","patch_set":11,"id":"5f7c97a3_e5de7468","line":172,"range":{"start_line":171,"start_character":46,"end_line":172,"end_character":43},"in_reply_to":"5f7c97a3_4c2d3a93","updated":"2018-06-01 20:15:08.000000000","message":"i had a assumed basically when its ready. rocky if that was feasible but i had assumed early stien was more realistic.","commit_id":"33d37fc22fc4cb8d6b3017c5d67cd64f80183c07"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"67c716dbb6e94272d9244e61439b24ead5a9b017","unresolved":false,"context_lines":[{"line_number":168,"context_line":""},{"line_number":169,"context_line":".. note::"},{"line_number":170,"context_line":""},{"line_number":171,"context_line":"    The existing ``CONF.vcpu_pin_set`` will be **deprecated** in the \"S\""},{"line_number":172,"context_line":"    release for removal in the \"T\" release. The ``CONF.cpu_dedicated_set`` and"},{"line_number":173,"context_line":"    ``CONF.cpu_shared_set`` optiona make ``CONF.vcpu_pin_set`` irrelevant."},{"line_number":174,"context_line":""},{"line_number":175,"context_line":"For non-NUMA-configured host systems, the single compute node resource provider"},{"line_number":176,"context_line":"will contain inventory records for ``VCPU`` and/or ``PCPU`` resources. For"}],"source_content_type":"text/x-rst","patch_set":11,"id":"5f7c97a3_cf2cd303","line":173,"range":{"start_line":171,"start_character":0,"end_line":173,"end_character":74},"updated":"2018-05-31 10:44:00.000000000","message":"nit: Still thinking we should fail to start if either of the above are configured alongside the legacy \u0027vcpu_pin_set\u0027 option. That\u0027s an implementation detail so not worth blocking on but seeing as you need to respin...","commit_id":"33d37fc22fc4cb8d6b3017c5d67cd64f80183c07"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"789e9fe61f6a007007bf8b4bd41cf3e938859453","unresolved":false,"context_lines":[{"line_number":170,"context_line":""},{"line_number":171,"context_line":"    The existing ``CONF.vcpu_pin_set`` will be **deprecated** in the \"S\""},{"line_number":172,"context_line":"    release for removal in the \"T\" release. The ``CONF.cpu_dedicated_set`` and"},{"line_number":173,"context_line":"    ``CONF.cpu_shared_set`` optiona make ``CONF.vcpu_pin_set`` irrelevant."},{"line_number":174,"context_line":""},{"line_number":175,"context_line":"For non-NUMA-configured host systems, the single compute node resource provider"},{"line_number":176,"context_line":"will contain inventory records for ``VCPU`` and/or ``PCPU`` resources. For"}],"source_content_type":"text/x-rst","patch_set":11,"id":"5f7c97a3_8c15923f","line":173,"range":{"start_line":173,"start_character":34,"end_line":173,"end_character":35},"updated":"2018-05-30 21:57:50.000000000","message":"s","commit_id":"33d37fc22fc4cb8d6b3017c5d67cd64f80183c07"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"843524c2eb2308189d8c5755d8a9055d8ec28ce0","unresolved":false,"context_lines":[{"line_number":170,"context_line":""},{"line_number":171,"context_line":"    The existing ``CONF.vcpu_pin_set`` will be **deprecated** in the \"S\""},{"line_number":172,"context_line":"    release for removal in the \"T\" release. The ``CONF.cpu_dedicated_set`` and"},{"line_number":173,"context_line":"    ``CONF.cpu_shared_set`` optiona make ``CONF.vcpu_pin_set`` irrelevant."},{"line_number":174,"context_line":""},{"line_number":175,"context_line":"For non-NUMA-configured host systems, the single compute node resource provider"},{"line_number":176,"context_line":"will contain inventory records for ``VCPU`` and/or ``PCPU`` resources. For"}],"source_content_type":"text/x-rst","patch_set":11,"id":"5f7c97a3_8c2469b1","line":173,"range":{"start_line":173,"start_character":34,"end_line":173,"end_character":35},"in_reply_to":"5f7c97a3_8c15923f","updated":"2018-06-04 18:55:28.000000000","message":"Done","commit_id":"33d37fc22fc4cb8d6b3017c5d67cd64f80183c07"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"843524c2eb2308189d8c5755d8a9055d8ec28ce0","unresolved":false,"context_lines":[{"line_number":168,"context_line":""},{"line_number":169,"context_line":".. note::"},{"line_number":170,"context_line":""},{"line_number":171,"context_line":"    The existing ``CONF.vcpu_pin_set`` will be **deprecated** in the \"S\""},{"line_number":172,"context_line":"    release for removal in the \"T\" release. The ``CONF.cpu_dedicated_set`` and"},{"line_number":173,"context_line":"    ``CONF.cpu_shared_set`` optiona make ``CONF.vcpu_pin_set`` irrelevant."},{"line_number":174,"context_line":""},{"line_number":175,"context_line":"For non-NUMA-configured host systems, the single compute node resource provider"},{"line_number":176,"context_line":"will contain inventory records for ``VCPU`` and/or ``PCPU`` resources. For"}],"source_content_type":"text/x-rst","patch_set":11,"id":"5f7c97a3_8c59c936","line":173,"range":{"start_line":171,"start_character":0,"end_line":173,"end_character":74},"in_reply_to":"5f7c97a3_cf2cd303","updated":"2018-06-04 18:55:28.000000000","message":"Done","commit_id":"33d37fc22fc4cb8d6b3017c5d67cd64f80183c07"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"d42210a3b1cbaf916338a2633ed8706d510a3751","unresolved":false,"context_lines":[{"line_number":168,"context_line":""},{"line_number":169,"context_line":".. note::"},{"line_number":170,"context_line":""},{"line_number":171,"context_line":"    The existing ``CONF.vcpu_pin_set`` will be **deprecated** in the \"S\""},{"line_number":172,"context_line":"    release for removal in the \"T\" release. The ``CONF.cpu_dedicated_set`` and"},{"line_number":173,"context_line":"    ``CONF.cpu_shared_set`` optiona make ``CONF.vcpu_pin_set`` irrelevant."},{"line_number":174,"context_line":""},{"line_number":175,"context_line":"For non-NUMA-configured host systems, the single compute node resource provider"},{"line_number":176,"context_line":"will contain inventory records for ``VCPU`` and/or ``PCPU`` resources. For"}],"source_content_type":"text/x-rst","patch_set":11,"id":"5f7c97a3_c56a587f","line":173,"range":{"start_line":171,"start_character":0,"end_line":173,"end_character":74},"in_reply_to":"5f7c97a3_cf2cd303","updated":"2018-06-01 20:15:08.000000000","message":"if all 3 are explcitly set i would agree.\nthats said i would also be ok with ignoreing vcpu_pin_set\nif both CONF.cpu_shared_set and CONF.vcpu_pin_set. that is what the default deprecation message from oslo config wans about anyway. e.g. this value might be silently ignored in future.\n\n\nif CONF.vcpu_pin_set + one of the others was set you could argue that the disjuction of the configured values defiens the other but that seams complex and annoying to debug.\n\ni would prefer this to be documented in the spech however as i do not want this to be driver dependent so it should not be left to an implementation detail.","commit_id":"33d37fc22fc4cb8d6b3017c5d67cd64f80183c07"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"67c716dbb6e94272d9244e61439b24ead5a9b017","unresolved":false,"context_lines":[{"line_number":172,"context_line":"    release for removal in the \"T\" release. The ``CONF.cpu_dedicated_set`` and"},{"line_number":173,"context_line":"    ``CONF.cpu_shared_set`` optiona make ``CONF.vcpu_pin_set`` irrelevant."},{"line_number":174,"context_line":""},{"line_number":175,"context_line":"For non-NUMA-configured host systems, the single compute node resource provider"},{"line_number":176,"context_line":"will contain inventory records for ``VCPU`` and/or ``PCPU`` resources. For"},{"line_number":177,"context_line":"NUMA-configured host systems, the child resource providers representing each"},{"line_number":178,"context_line":"NUMA node will contain inventory records for ``VCPU`` and/or ``PCPU``"},{"line_number":179,"context_line":"resources."},{"line_number":180,"context_line":""},{"line_number":181,"context_line":".. note::"},{"line_number":182,"context_line":""}],"source_content_type":"text/x-rst","patch_set":11,"id":"5f7c97a3_ef666f51","line":179,"range":{"start_line":175,"start_character":0,"end_line":179,"end_character":10},"updated":"2018-05-31 10:44:00.000000000","message":"As noted below, the NUMA use-case isn\u0027t possible to support right now. I suggest splitting this paragraph in two, allowing us to provide an example of the non-NUMA case including sample CONF and placement model, as we have for the NUMA case on lines 207 and 216 below. Also, as noted below, you need to call out the fact that the NUMA modeling is dependent on another spec and is therefore aspirational/unsupported.","commit_id":"33d37fc22fc4cb8d6b3017c5d67cd64f80183c07"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"843524c2eb2308189d8c5755d8a9055d8ec28ce0","unresolved":false,"context_lines":[{"line_number":172,"context_line":"    release for removal in the \"T\" release. The ``CONF.cpu_dedicated_set`` and"},{"line_number":173,"context_line":"    ``CONF.cpu_shared_set`` optiona make ``CONF.vcpu_pin_set`` irrelevant."},{"line_number":174,"context_line":""},{"line_number":175,"context_line":"For non-NUMA-configured host systems, the single compute node resource provider"},{"line_number":176,"context_line":"will contain inventory records for ``VCPU`` and/or ``PCPU`` resources. For"},{"line_number":177,"context_line":"NUMA-configured host systems, the child resource providers representing each"},{"line_number":178,"context_line":"NUMA node will contain inventory records for ``VCPU`` and/or ``PCPU``"},{"line_number":179,"context_line":"resources."},{"line_number":180,"context_line":""},{"line_number":181,"context_line":".. note::"},{"line_number":182,"context_line":""}],"source_content_type":"text/x-rst","patch_set":11,"id":"5f7c97a3_0cba9909","line":179,"range":{"start_line":175,"start_character":0,"end_line":179,"end_character":10},"in_reply_to":"5f7c97a3_ef666f51","updated":"2018-06-04 18:55:28.000000000","message":"Done","commit_id":"33d37fc22fc4cb8d6b3017c5d67cd64f80183c07"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"d42210a3b1cbaf916338a2633ed8706d510a3751","unresolved":false,"context_lines":[{"line_number":172,"context_line":"    release for removal in the \"T\" release. The ``CONF.cpu_dedicated_set`` and"},{"line_number":173,"context_line":"    ``CONF.cpu_shared_set`` optiona make ``CONF.vcpu_pin_set`` irrelevant."},{"line_number":174,"context_line":""},{"line_number":175,"context_line":"For non-NUMA-configured host systems, the single compute node resource provider"},{"line_number":176,"context_line":"will contain inventory records for ``VCPU`` and/or ``PCPU`` resources. For"},{"line_number":177,"context_line":"NUMA-configured host systems, the child resource providers representing each"},{"line_number":178,"context_line":"NUMA node will contain inventory records for ``VCPU`` and/or ``PCPU``"},{"line_number":179,"context_line":"resources."},{"line_number":180,"context_line":""},{"line_number":181,"context_line":".. note::"},{"line_number":182,"context_line":""}],"source_content_type":"text/x-rst","patch_set":11,"id":"5f7c97a3_852f803d","line":179,"range":{"start_line":175,"start_character":0,"end_line":179,"end_character":10},"in_reply_to":"5f7c97a3_ef666f51","updated":"2018-06-01 20:15:08.000000000","message":"why not? the depency on sylvain\u0027s spec?","commit_id":"33d37fc22fc4cb8d6b3017c5d67cd64f80183c07"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"789e9fe61f6a007007bf8b4bd41cf3e938859453","unresolved":false,"context_lines":[{"line_number":181,"context_line":".. note::"},{"line_number":182,"context_line":""},{"line_number":183,"context_line":"    This spec does not dictate *how* a host system will be configured to use"},{"line_number":184,"context_line":"    (or not use) NUMA. See the `spec on modeling NUMA with resource providers"},{"line_number":185,"context_line":"    \u003cNUMA topology with resource providers\u003e`_ for more information."},{"line_number":186,"context_line":""},{"line_number":187,"context_line":"As an example of a NUMA-configured host system, consider a host system with 2"},{"line_number":188,"context_line":"sockets, each with 24 physical cores and 2 hyperthreads per physical core."}],"source_content_type":"text/x-rst","patch_set":11,"id":"5f7c97a3_cce38a04","line":185,"range":{"start_line":184,"start_character":31,"end_line":185,"end_character":45},"updated":"2018-05-30 21:57:50.000000000","message":"This link doesn\u0027t render right.","commit_id":"33d37fc22fc4cb8d6b3017c5d67cd64f80183c07"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"843524c2eb2308189d8c5755d8a9055d8ec28ce0","unresolved":false,"context_lines":[{"line_number":181,"context_line":".. note::"},{"line_number":182,"context_line":""},{"line_number":183,"context_line":"    This spec does not dictate *how* a host system will be configured to use"},{"line_number":184,"context_line":"    (or not use) NUMA. See the `spec on modeling NUMA with resource providers"},{"line_number":185,"context_line":"    \u003cNUMA topology with resource providers\u003e`_ for more information."},{"line_number":186,"context_line":""},{"line_number":187,"context_line":"As an example of a NUMA-configured host system, consider a host system with 2"},{"line_number":188,"context_line":"sockets, each with 24 physical cores and 2 hyperthreads per physical core."}],"source_content_type":"text/x-rst","patch_set":11,"id":"5f7c97a3_ec9b9d70","line":185,"range":{"start_line":184,"start_character":31,"end_line":185,"end_character":45},"in_reply_to":"5f7c97a3_af35d746","updated":"2018-06-04 18:55:28.000000000","message":"Done","commit_id":"33d37fc22fc4cb8d6b3017c5d67cd64f80183c07"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"67c716dbb6e94272d9244e61439b24ead5a9b017","unresolved":false,"context_lines":[{"line_number":181,"context_line":".. note::"},{"line_number":182,"context_line":""},{"line_number":183,"context_line":"    This spec does not dictate *how* a host system will be configured to use"},{"line_number":184,"context_line":"    (or not use) NUMA. See the `spec on modeling NUMA with resource providers"},{"line_number":185,"context_line":"    \u003cNUMA topology with resource providers\u003e`_ for more information."},{"line_number":186,"context_line":""},{"line_number":187,"context_line":"As an example of a NUMA-configured host system, consider a host system with 2"},{"line_number":188,"context_line":"sockets, each with 24 physical cores and 2 hyperthreads per physical core."}],"source_content_type":"text/x-rst","patch_set":11,"id":"5f7c97a3_af35d746","line":185,"range":{"start_line":184,"start_character":31,"end_line":185,"end_character":45},"in_reply_to":"5f7c97a3_cce38a04","updated":"2018-05-31 10:44:00.000000000","message":"\u003e This link doesn\u0027t render right.\n\nWe discussed this on IRC yesterday. There should be an underscore after \u0027providers\u0027:\n\n  \u003cNUMA topology with resource providers_\u003e","commit_id":"33d37fc22fc4cb8d6b3017c5d67cd64f80183c07"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"789e9fe61f6a007007bf8b4bd41cf3e938859453","unresolved":false,"context_lines":[{"line_number":200,"context_line":"CPU resources and the remaining 30 physical processors (15 physical cores and"},{"line_number":201,"context_line":"their hyperthread siblings) will be for shared CPU resources. For the shared"},{"line_number":202,"context_line":"CPU resources, the operator wants to allow an overallocation ratio of 8.0 guest"},{"line_number":203,"context_line":"CPUs to each physical processor."},{"line_number":204,"context_line":""},{"line_number":205,"context_line":"The operator would set the CONF options like so::"},{"line_number":206,"context_line":""}],"source_content_type":"text/x-rst","patch_set":11,"id":"5f7c97a3_4ca69ac3","line":203,"range":{"start_line":203,"start_character":8,"end_line":203,"end_character":31},"updated":"2018-05-30 21:57:50.000000000","message":"but only if they\u0027re shared?  See below.","commit_id":"33d37fc22fc4cb8d6b3017c5d67cd64f80183c07"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"843524c2eb2308189d8c5755d8a9055d8ec28ce0","unresolved":false,"context_lines":[{"line_number":200,"context_line":"CPU resources and the remaining 30 physical processors (15 physical cores and"},{"line_number":201,"context_line":"their hyperthread siblings) will be for shared CPU resources. For the shared"},{"line_number":202,"context_line":"CPU resources, the operator wants to allow an overallocation ratio of 8.0 guest"},{"line_number":203,"context_line":"CPUs to each physical processor."},{"line_number":204,"context_line":""},{"line_number":205,"context_line":"The operator would set the CONF options like so::"},{"line_number":206,"context_line":""}],"source_content_type":"text/x-rst","patch_set":11,"id":"5f7c97a3_ac87e512","line":203,"range":{"start_line":203,"start_character":8,"end_line":203,"end_character":31},"in_reply_to":"5f7c97a3_4ca69ac3","updated":"2018-06-04 18:55:28.000000000","message":"The sentence starts with \"For the shared\nCPU resources, ...\"","commit_id":"33d37fc22fc4cb8d6b3017c5d67cd64f80183c07"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"789e9fe61f6a007007bf8b4bd41cf3e938859453","unresolved":false,"context_lines":[{"line_number":207,"context_line":"    [compute]"},{"line_number":208,"context_line":"    cpu_dedicated_set\u003d2-17,50-65"},{"line_number":209,"context_line":"    cpu_shared_set\u003d18-47,66-95"},{"line_number":210,"context_line":"    cpu_allocation_ratio\u003d8.0"},{"line_number":211,"context_line":""},{"line_number":212,"context_line":"The virt driver will construct a provider tree containing two NUMA node child"},{"line_number":213,"context_line":"providers of the parent compute node resource provider and report inventory for"}],"source_content_type":"text/x-rst","patch_set":11,"id":"5f7c97a3_ac964e4b","line":210,"range":{"start_line":210,"start_character":4,"end_line":210,"end_character":28},"updated":"2018-05-30 21:57:50.000000000","message":"We\u0027ve got a namespace collision here.  It\u0027s not clear from the naming that this allocation ratio applies only to the VCPUs.  Is a non-1.0 allocation ratio possible for PCPUs?  If so, we should have two conf options (because presumably you want to be able to set them to different values); if not, this should still be renamed to make it clear that it applies to the cpu_shared_set.","commit_id":"33d37fc22fc4cb8d6b3017c5d67cd64f80183c07"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"843524c2eb2308189d8c5755d8a9055d8ec28ce0","unresolved":false,"context_lines":[{"line_number":207,"context_line":"    [compute]"},{"line_number":208,"context_line":"    cpu_dedicated_set\u003d2-17,50-65"},{"line_number":209,"context_line":"    cpu_shared_set\u003d18-47,66-95"},{"line_number":210,"context_line":"    cpu_allocation_ratio\u003d8.0"},{"line_number":211,"context_line":""},{"line_number":212,"context_line":"The virt driver will construct a provider tree containing two NUMA node child"},{"line_number":213,"context_line":"providers of the parent compute node resource provider and report inventory for"}],"source_content_type":"text/x-rst","patch_set":11,"id":"5f7c97a3_cc910149","line":210,"range":{"start_line":210,"start_character":4,"end_line":210,"end_character":28},"in_reply_to":"5f7c97a3_2f41c7a6","updated":"2018-06-04 18:55:28.000000000","message":"CONF.cpu_allocation_ratio is not only an older option (and therefore embedded in operator\u0027s knowledge) but it\u0027s also a specific field in the compute_nodes table as well as a specific aggregate metadata key that is examined. I\u0027d prefer to not change the name of the CONF option and instead add wording to the CONF option helptext to make it clear the CONF option only refers to shared guest CPU resources.","commit_id":"33d37fc22fc4cb8d6b3017c5d67cd64f80183c07"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"d42210a3b1cbaf916338a2633ed8706d510a3751","unresolved":false,"context_lines":[{"line_number":207,"context_line":"    [compute]"},{"line_number":208,"context_line":"    cpu_dedicated_set\u003d2-17,50-65"},{"line_number":209,"context_line":"    cpu_shared_set\u003d18-47,66-95"},{"line_number":210,"context_line":"    cpu_allocation_ratio\u003d8.0"},{"line_number":211,"context_line":""},{"line_number":212,"context_line":"The virt driver will construct a provider tree containing two NUMA node child"},{"line_number":213,"context_line":"providers of the parent compute node resource provider and report inventory for"}],"source_content_type":"text/x-rst","patch_set":11,"id":"5f7c97a3_c5c6d868","line":210,"range":{"start_line":210,"start_character":4,"end_line":210,"end_character":28},"in_reply_to":"5f7c97a3_2f41c7a6","updated":"2018-06-01 20:15:08.000000000","message":"well PCPUs are just pinned cpus. \n\ni could oversubscribe them also it just means the guests wont float on them.\n\nif we combing a request for PCPUs with cpu thread policy isolate i could see the poing being made that oversubsibled cpus would not be allowable but if i just request pinned cpus then i think over subscriptions is allowable provided the instance is not over subscibed against its self.","commit_id":"33d37fc22fc4cb8d6b3017c5d67cd64f80183c07"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"843524c2eb2308189d8c5755d8a9055d8ec28ce0","unresolved":false,"context_lines":[{"line_number":207,"context_line":"    [compute]"},{"line_number":208,"context_line":"    cpu_dedicated_set\u003d2-17,50-65"},{"line_number":209,"context_line":"    cpu_shared_set\u003d18-47,66-95"},{"line_number":210,"context_line":"    cpu_allocation_ratio\u003d8.0"},{"line_number":211,"context_line":""},{"line_number":212,"context_line":"The virt driver will construct a provider tree containing two NUMA node child"},{"line_number":213,"context_line":"providers of the parent compute node resource provider and report inventory for"}],"source_content_type":"text/x-rst","patch_set":11,"id":"5f7c97a3_2c7bd529","line":210,"range":{"start_line":210,"start_character":4,"end_line":210,"end_character":28},"in_reply_to":"5f7c97a3_ac964e4b","updated":"2018-06-04 18:55:28.000000000","message":"\u003e We\u0027ve got a namespace collision here.  It\u0027s not clear from the\n \u003e naming that this allocation ratio applies only to the VCPUs.  Is a\n \u003e non-1.0 allocation ratio possible for PCPUs?  If so, we should have\n \u003e two conf options (because presumably you want to be able to set\n \u003e them to different values); if not, this should still be renamed to\n \u003e make it clear that it applies to the cpu_shared_set.\n\nThe allocation_ratio \u003e 1.0 only applies to guest shared CPU resources. Clearly, an allocation ratio of \u003e1.0 for dedicated guest CPU resources doesn\u0027t make any sense.","commit_id":"33d37fc22fc4cb8d6b3017c5d67cd64f80183c07"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"67c716dbb6e94272d9244e61439b24ead5a9b017","unresolved":false,"context_lines":[{"line_number":207,"context_line":"    [compute]"},{"line_number":208,"context_line":"    cpu_dedicated_set\u003d2-17,50-65"},{"line_number":209,"context_line":"    cpu_shared_set\u003d18-47,66-95"},{"line_number":210,"context_line":"    cpu_allocation_ratio\u003d8.0"},{"line_number":211,"context_line":""},{"line_number":212,"context_line":"The virt driver will construct a provider tree containing two NUMA node child"},{"line_number":213,"context_line":"providers of the parent compute node resource provider and report inventory for"}],"source_content_type":"text/x-rst","patch_set":11,"id":"5f7c97a3_2f41c7a6","line":210,"range":{"start_line":210,"start_character":4,"end_line":210,"end_character":28},"in_reply_to":"5f7c97a3_ac964e4b","updated":"2018-05-31 10:44:00.000000000","message":"Good point. Overallocation doesn\u0027t make sense for PCPUs so this should be renamed vcpu_allocation_ratio or something, yeah.","commit_id":"33d37fc22fc4cb8d6b3017c5d67cd64f80183c07"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"67c716dbb6e94272d9244e61439b24ead5a9b017","unresolved":false,"context_lines":[{"line_number":209,"context_line":"    cpu_shared_set\u003d18-47,66-95"},{"line_number":210,"context_line":"    cpu_allocation_ratio\u003d8.0"},{"line_number":211,"context_line":""},{"line_number":212,"context_line":"The virt driver will construct a provider tree containing two NUMA node child"},{"line_number":213,"context_line":"providers of the parent compute node resource provider and report inventory for"},{"line_number":214,"context_line":"each NUMA node separately::"},{"line_number":215,"context_line":""},{"line_number":216,"context_line":"    COMPUTE NODE provider"},{"line_number":217,"context_line":"        NUMA NODE 0 provider:"},{"line_number":218,"context_line":"            PCPU:"},{"line_number":219,"context_line":"                total: 18"},{"line_number":220,"context_line":"                reserved: 2"},{"line_number":221,"context_line":"                min_unit: 1"},{"line_number":222,"context_line":"                max_unit: 16"},{"line_number":223,"context_line":"                step_size: 1"},{"line_number":224,"context_line":"                allocation_ratio: 1.0"},{"line_number":225,"context_line":"            VCPU:"},{"line_number":226,"context_line":"                total: 30"},{"line_number":227,"context_line":"                reserved: 0"},{"line_number":228,"context_line":"                min_unit: 1"},{"line_number":229,"context_line":"                max_unit: 30"},{"line_number":230,"context_line":"                step_size: 1"},{"line_number":231,"context_line":"                allocation_ratio: 8.0"},{"line_number":232,"context_line":"        NUMA NODE 1 provider:"},{"line_number":233,"context_line":"            PCPU:"},{"line_number":234,"context_line":"                total: 18"},{"line_number":235,"context_line":"                reserved: 2"},{"line_number":236,"context_line":"                min_unit: 1"},{"line_number":237,"context_line":"                max_unit: 16"},{"line_number":238,"context_line":"                step_size: 1"},{"line_number":239,"context_line":"                allocation_ratio: 1.0"},{"line_number":240,"context_line":"            VCPU:"},{"line_number":241,"context_line":"                total: 30"},{"line_number":242,"context_line":"                reserved: 0"},{"line_number":243,"context_line":"                min_unit: 1"},{"line_number":244,"context_line":"                max_unit: 30"},{"line_number":245,"context_line":"                step_size: 1"},{"line_number":246,"context_line":"                allocation_ratio: 8.0"},{"line_number":247,"context_line":""},{"line_number":248,"context_line":"Guest resource requests"},{"line_number":249,"context_line":"-----------------------"}],"source_content_type":"text/x-rst","patch_set":11,"id":"5f7c97a3_8f801bc1","line":246,"range":{"start_line":212,"start_character":0,"end_line":246,"end_character":37},"updated":"2018-05-31 10:44:00.000000000","message":"This is a lie :) Without nested resource providers and Sylvain\u0027s NUMA spec, the virt driver won\u0027t create diddly-squat as far as NUMA goes. This whole section needs a prelude stating that this in the end goal. You should also provide an example showing PCPU and VCPU allocations under the COMPUTE NODE provider, which is all you\u0027re going to support when this is implemented.","commit_id":"33d37fc22fc4cb8d6b3017c5d67cd64f80183c07"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"843524c2eb2308189d8c5755d8a9055d8ec28ce0","unresolved":false,"context_lines":[{"line_number":209,"context_line":"    cpu_shared_set\u003d18-47,66-95"},{"line_number":210,"context_line":"    cpu_allocation_ratio\u003d8.0"},{"line_number":211,"context_line":""},{"line_number":212,"context_line":"The virt driver will construct a provider tree containing two NUMA node child"},{"line_number":213,"context_line":"providers of the parent compute node resource provider and report inventory for"},{"line_number":214,"context_line":"each NUMA node separately::"},{"line_number":215,"context_line":""},{"line_number":216,"context_line":"    COMPUTE NODE provider"},{"line_number":217,"context_line":"        NUMA NODE 0 provider:"},{"line_number":218,"context_line":"            PCPU:"},{"line_number":219,"context_line":"                total: 18"},{"line_number":220,"context_line":"                reserved: 2"},{"line_number":221,"context_line":"                min_unit: 1"},{"line_number":222,"context_line":"                max_unit: 16"},{"line_number":223,"context_line":"                step_size: 1"},{"line_number":224,"context_line":"                allocation_ratio: 1.0"},{"line_number":225,"context_line":"            VCPU:"},{"line_number":226,"context_line":"                total: 30"},{"line_number":227,"context_line":"                reserved: 0"},{"line_number":228,"context_line":"                min_unit: 1"},{"line_number":229,"context_line":"                max_unit: 30"},{"line_number":230,"context_line":"                step_size: 1"},{"line_number":231,"context_line":"                allocation_ratio: 8.0"},{"line_number":232,"context_line":"        NUMA NODE 1 provider:"},{"line_number":233,"context_line":"            PCPU:"},{"line_number":234,"context_line":"                total: 18"},{"line_number":235,"context_line":"                reserved: 2"},{"line_number":236,"context_line":"                min_unit: 1"},{"line_number":237,"context_line":"                max_unit: 16"},{"line_number":238,"context_line":"                step_size: 1"},{"line_number":239,"context_line":"                allocation_ratio: 1.0"},{"line_number":240,"context_line":"            VCPU:"},{"line_number":241,"context_line":"                total: 30"},{"line_number":242,"context_line":"                reserved: 0"},{"line_number":243,"context_line":"                min_unit: 1"},{"line_number":244,"context_line":"                max_unit: 30"},{"line_number":245,"context_line":"                step_size: 1"},{"line_number":246,"context_line":"                allocation_ratio: 8.0"},{"line_number":247,"context_line":""},{"line_number":248,"context_line":"Guest resource requests"},{"line_number":249,"context_line":"-----------------------"}],"source_content_type":"text/x-rst","patch_set":11,"id":"5f7c97a3_4c9df155","line":246,"range":{"start_line":212,"start_character":0,"end_line":246,"end_character":37},"in_reply_to":"5f7c97a3_8f801bc1","updated":"2018-06-04 18:55:28.000000000","message":"I have added a big old note to the above section about the modeling of NUMA nodes / CPU packages in a provider tree is dependent on Syvain\u0027s spec and is not currently supported by any virt driver.","commit_id":"33d37fc22fc4cb8d6b3017c5d67cd64f80183c07"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"d42210a3b1cbaf916338a2633ed8706d510a3751","unresolved":false,"context_lines":[{"line_number":209,"context_line":"    cpu_shared_set\u003d18-47,66-95"},{"line_number":210,"context_line":"    cpu_allocation_ratio\u003d8.0"},{"line_number":211,"context_line":""},{"line_number":212,"context_line":"The virt driver will construct a provider tree containing two NUMA node child"},{"line_number":213,"context_line":"providers of the parent compute node resource provider and report inventory for"},{"line_number":214,"context_line":"each NUMA node separately::"},{"line_number":215,"context_line":""},{"line_number":216,"context_line":"    COMPUTE NODE provider"},{"line_number":217,"context_line":"        NUMA NODE 0 provider:"},{"line_number":218,"context_line":"            PCPU:"},{"line_number":219,"context_line":"                total: 18"},{"line_number":220,"context_line":"                reserved: 2"},{"line_number":221,"context_line":"                min_unit: 1"},{"line_number":222,"context_line":"                max_unit: 16"},{"line_number":223,"context_line":"                step_size: 1"},{"line_number":224,"context_line":"                allocation_ratio: 1.0"},{"line_number":225,"context_line":"            VCPU:"},{"line_number":226,"context_line":"                total: 30"},{"line_number":227,"context_line":"                reserved: 0"},{"line_number":228,"context_line":"                min_unit: 1"},{"line_number":229,"context_line":"                max_unit: 30"},{"line_number":230,"context_line":"                step_size: 1"},{"line_number":231,"context_line":"                allocation_ratio: 8.0"},{"line_number":232,"context_line":"        NUMA NODE 1 provider:"},{"line_number":233,"context_line":"            PCPU:"},{"line_number":234,"context_line":"                total: 18"},{"line_number":235,"context_line":"                reserved: 2"},{"line_number":236,"context_line":"                min_unit: 1"},{"line_number":237,"context_line":"                max_unit: 16"},{"line_number":238,"context_line":"                step_size: 1"},{"line_number":239,"context_line":"                allocation_ratio: 1.0"},{"line_number":240,"context_line":"            VCPU:"},{"line_number":241,"context_line":"                total: 30"},{"line_number":242,"context_line":"                reserved: 0"},{"line_number":243,"context_line":"                min_unit: 1"},{"line_number":244,"context_line":"                max_unit: 30"},{"line_number":245,"context_line":"                step_size: 1"},{"line_number":246,"context_line":"                allocation_ratio: 8.0"},{"line_number":247,"context_line":""},{"line_number":248,"context_line":"Guest resource requests"},{"line_number":249,"context_line":"-----------------------"}],"source_content_type":"text/x-rst","patch_set":11,"id":"5f7c97a3_e56f545d","line":246,"range":{"start_line":212,"start_character":0,"end_line":246,"end_character":37},"in_reply_to":"5f7c97a3_8f801bc1","updated":"2018-06-01 20:15:08.000000000","message":"originally when we discussed this at the ptg numa topology of cpus was in scope of this spec and later it was delegated to Sylvain\u0027s spec to handle generically. so yes there is a dependency on Sylvain\u0027s sepc but i would expect the work item to track cpus in numa specific resource provides to be part of this spec. \n\nwhile we could implement only the non-numa aware case i dont think that was ever the intent at least it was not raised as a goal in dublin to my knoladge. i do agree it would be nice to also provide an example of the non numa case however.","commit_id":"33d37fc22fc4cb8d6b3017c5d67cd64f80183c07"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"789e9fe61f6a007007bf8b4bd41cf3e938859453","unresolved":false,"context_lines":[{"line_number":262,"context_line":""},{"line_number":263,"context_line":"The concept of a guest virtual CPU topology is related to the request for"},{"line_number":264,"context_line":"dedicated and shared CPU resources, but the two concepts are not exactly the"},{"line_number":265,"context_line":"same. What we discuss here is simply whether how to translate a desire for more"},{"line_number":266,"context_line":"than 1 CPU resources to be supplied by a single or a distinct set of resource"},{"line_number":267,"context_line":"providers."},{"line_number":268,"context_line":""}],"source_content_type":"text/x-rst","patch_set":11,"id":"5f7c97a3_ec81a6fc","line":265,"range":{"start_line":265,"start_character":37,"end_line":265,"end_character":44},"updated":"2018-05-30 21:57:50.000000000","message":"strike","commit_id":"33d37fc22fc4cb8d6b3017c5d67cd64f80183c07"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"843524c2eb2308189d8c5755d8a9055d8ec28ce0","unresolved":false,"context_lines":[{"line_number":262,"context_line":""},{"line_number":263,"context_line":"The concept of a guest virtual CPU topology is related to the request for"},{"line_number":264,"context_line":"dedicated and shared CPU resources, but the two concepts are not exactly the"},{"line_number":265,"context_line":"same. What we discuss here is simply whether how to translate a desire for more"},{"line_number":266,"context_line":"than 1 CPU resources to be supplied by a single or a distinct set of resource"},{"line_number":267,"context_line":"providers."},{"line_number":268,"context_line":""}],"source_content_type":"text/x-rst","patch_set":11,"id":"5f7c97a3_eca95d7c","line":265,"range":{"start_line":265,"start_character":37,"end_line":265,"end_character":44},"in_reply_to":"5f7c97a3_ec81a6fc","updated":"2018-06-04 18:55:28.000000000","message":"Done","commit_id":"33d37fc22fc4cb8d6b3017c5d67cd64f80183c07"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"789e9fe61f6a007007bf8b4bd41cf3e938859453","unresolved":false,"context_lines":[{"line_number":276,"context_line":".. note::"},{"line_number":277,"context_line":""},{"line_number":278,"context_line":"    The existing ``hw:cpu_policy\u003ddedicated|shared`` flavor extra spec and image"},{"line_number":279,"context_line":"    property will be **deprecated** in the \"S\" release for removal in the \"T\""},{"line_number":280,"context_line":"    release. This extra spec will be irrelevant when flavors can indicate the"},{"line_number":281,"context_line":"    exact number of dedicated and shared CPU resources they require."},{"line_number":282,"context_line":""},{"line_number":283,"context_line":"Ensure all CPU resources are supplied by the same provider"}],"source_content_type":"text/x-rst","patch_set":11,"id":"5f7c97a3_cc9f0a4e","line":280,"range":{"start_line":279,"start_character":21,"end_line":280,"end_character":11},"updated":"2018-05-30 21:57:50.000000000","message":"as above.","commit_id":"33d37fc22fc4cb8d6b3017c5d67cd64f80183c07"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"843524c2eb2308189d8c5755d8a9055d8ec28ce0","unresolved":false,"context_lines":[{"line_number":276,"context_line":".. note::"},{"line_number":277,"context_line":""},{"line_number":278,"context_line":"    The existing ``hw:cpu_policy\u003ddedicated|shared`` flavor extra spec and image"},{"line_number":279,"context_line":"    property will be **deprecated** in the \"S\" release for removal in the \"T\""},{"line_number":280,"context_line":"    release. This extra spec will be irrelevant when flavors can indicate the"},{"line_number":281,"context_line":"    exact number of dedicated and shared CPU resources they require."},{"line_number":282,"context_line":""},{"line_number":283,"context_line":"Ensure all CPU resources are supplied by the same provider"}],"source_content_type":"text/x-rst","patch_set":11,"id":"5f7c97a3_2cc99559","line":280,"range":{"start_line":279,"start_character":21,"end_line":280,"end_character":11},"in_reply_to":"5f7c97a3_cc9f0a4e","updated":"2018-06-04 18:55:28.000000000","message":"Same answer as above. This spec is targeting Rocky, and the deprecation would be in \"S\".","commit_id":"33d37fc22fc4cb8d6b3017c5d67cd64f80183c07"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"789e9fe61f6a007007bf8b4bd41cf3e938859453","unresolved":false,"context_lines":[{"line_number":280,"context_line":"    release. This extra spec will be irrelevant when flavors can indicate the"},{"line_number":281,"context_line":"    exact number of dedicated and shared CPU resources they require."},{"line_number":282,"context_line":""},{"line_number":283,"context_line":"Ensure all CPU resources are supplied by the same provider"},{"line_number":284,"context_line":"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"},{"line_number":285,"context_line":""},{"line_number":286,"context_line":"The guest uses a non-granular request group that requests a number of dedicated"}],"source_content_type":"text/x-rst","patch_set":11,"id":"5f7c97a3_ccc86a56","line":283,"range":{"start_line":283,"start_character":45,"end_line":283,"end_character":58},"updated":"2018-05-30 21:57:50.000000000","message":"This contradicts...","commit_id":"33d37fc22fc4cb8d6b3017c5d67cd64f80183c07"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"789e9fe61f6a007007bf8b4bd41cf3e938859453","unresolved":false,"context_lines":[{"line_number":283,"context_line":"Ensure all CPU resources are supplied by the same provider"},{"line_number":284,"context_line":"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"},{"line_number":285,"context_line":""},{"line_number":286,"context_line":"The guest uses a non-granular request group that requests a number of dedicated"},{"line_number":287,"context_line":"CPUs and a number of shared CPUs."},{"line_number":288,"context_line":""},{"line_number":289,"context_line":"* The number of shared CPUs needed by the guest shall be stored in the existing"}],"source_content_type":"text/x-rst","patch_set":11,"id":"5f7c97a3_2cdf9e0d","line":286,"range":{"start_line":286,"start_character":15,"end_line":286,"end_character":43},"updated":"2018-05-30 21:57:50.000000000","message":"...this...","commit_id":"33d37fc22fc4cb8d6b3017c5d67cd64f80183c07"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"d42210a3b1cbaf916338a2633ed8706d510a3751","unresolved":false,"context_lines":[{"line_number":283,"context_line":"Ensure all CPU resources are supplied by the same provider"},{"line_number":284,"context_line":"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"},{"line_number":285,"context_line":""},{"line_number":286,"context_line":"The guest uses a non-granular request group that requests a number of dedicated"},{"line_number":287,"context_line":"CPUs and a number of shared CPUs."},{"line_number":288,"context_line":""},{"line_number":289,"context_line":"* The number of shared CPUs needed by the guest shall be stored in the existing"}],"source_content_type":"text/x-rst","patch_set":11,"id":"5f7c97a3_056e102e","line":286,"range":{"start_line":286,"start_character":15,"end_line":286,"end_character":43},"in_reply_to":"5f7c97a3_2cdf9e0d","updated":"2018-06-01 20:15:08.000000000","message":"so yes i think this should be just granular request group ...","commit_id":"33d37fc22fc4cb8d6b3017c5d67cd64f80183c07"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"789e9fe61f6a007007bf8b4bd41cf3e938859453","unresolved":false,"context_lines":[{"line_number":286,"context_line":"The guest uses a non-granular request group that requests a number of dedicated"},{"line_number":287,"context_line":"CPUs and a number of shared CPUs."},{"line_number":288,"context_line":""},{"line_number":289,"context_line":"* The number of shared CPUs needed by the guest shall be stored in the existing"},{"line_number":290,"context_line":"  ``resources:VCPU\u003d$AMOUNT`` extra spec key."},{"line_number":291,"context_line":"* The number of dedicated CPUs needed by the guest shall be stored in the"},{"line_number":292,"context_line":"  ``resources:PCPU\u003d$AMOUNT``"},{"line_number":293,"context_line":""},{"line_number":294,"context_line":"This will allow the placement service to filter out compute nodes that do not"},{"line_number":295,"context_line":"at least have the required number of shared or dedicated CPU resources that the"}],"source_content_type":"text/x-rst","patch_set":11,"id":"5f7c97a3_2c08fe8f","line":292,"range":{"start_line":289,"start_character":0,"end_line":292,"end_character":28},"updated":"2018-05-30 21:57:50.000000000","message":"...combined with this (the fact that we\u0027re requesting resources from more than one resource class).\n\nI.e. using the non-granular request group means it\u0027s possible for the VCPU to come from one provider and the PCPU from a different one.\n\nSo either the header isn\u0027t quite right, or you need to use a (single) granular group for both resource classes.\n\nOr you need to state that the above bullets are xor.","commit_id":"33d37fc22fc4cb8d6b3017c5d67cd64f80183c07"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"d42210a3b1cbaf916338a2633ed8706d510a3751","unresolved":false,"context_lines":[{"line_number":286,"context_line":"The guest uses a non-granular request group that requests a number of dedicated"},{"line_number":287,"context_line":"CPUs and a number of shared CPUs."},{"line_number":288,"context_line":""},{"line_number":289,"context_line":"* The number of shared CPUs needed by the guest shall be stored in the existing"},{"line_number":290,"context_line":"  ``resources:VCPU\u003d$AMOUNT`` extra spec key."},{"line_number":291,"context_line":"* The number of dedicated CPUs needed by the guest shall be stored in the"},{"line_number":292,"context_line":"  ``resources:PCPU\u003d$AMOUNT``"},{"line_number":293,"context_line":""},{"line_number":294,"context_line":"This will allow the placement service to filter out compute nodes that do not"},{"line_number":295,"context_line":"at least have the required number of shared or dedicated CPU resources that the"}],"source_content_type":"text/x-rst","patch_set":11,"id":"5f7c97a3_655ca47c","line":292,"range":{"start_line":289,"start_character":0,"end_line":292,"end_character":28},"in_reply_to":"5f7c97a3_2c08fe8f","updated":"2018-06-01 20:15:08.000000000","message":"... and then this needs to be updated to reflect that using the granular syntax","commit_id":"33d37fc22fc4cb8d6b3017c5d67cd64f80183c07"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"843524c2eb2308189d8c5755d8a9055d8ec28ce0","unresolved":false,"context_lines":[{"line_number":286,"context_line":"The guest uses a non-granular request group that requests a number of dedicated"},{"line_number":287,"context_line":"CPUs and a number of shared CPUs."},{"line_number":288,"context_line":""},{"line_number":289,"context_line":"* The number of shared CPUs needed by the guest shall be stored in the existing"},{"line_number":290,"context_line":"  ``resources:VCPU\u003d$AMOUNT`` extra spec key."},{"line_number":291,"context_line":"* The number of dedicated CPUs needed by the guest shall be stored in the"},{"line_number":292,"context_line":"  ``resources:PCPU\u003d$AMOUNT``"},{"line_number":293,"context_line":""},{"line_number":294,"context_line":"This will allow the placement service to filter out compute nodes that do not"},{"line_number":295,"context_line":"at least have the required number of shared or dedicated CPU resources that the"}],"source_content_type":"text/x-rst","patch_set":11,"id":"5f7c97a3_2c3c352f","line":292,"range":{"start_line":289,"start_character":0,"end_line":292,"end_character":28},"in_reply_to":"5f7c97a3_2c08fe8f","updated":"2018-06-04 18:55:28.000000000","message":"Fixed. (This was due to the many prior revisions on this spec and the back and forth that was concurrently going on with the \"grand compromise\" at the time...)","commit_id":"33d37fc22fc4cb8d6b3017c5d67cd64f80183c07"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"789e9fe61f6a007007bf8b4bd41cf3e938859453","unresolved":false,"context_lines":[{"line_number":292,"context_line":"  ``resources:PCPU\u003d$AMOUNT``"},{"line_number":293,"context_line":""},{"line_number":294,"context_line":"This will allow the placement service to filter out compute nodes that do not"},{"line_number":295,"context_line":"at least have the required number of shared or dedicated CPU resources that the"},{"line_number":296,"context_line":"guest requires."},{"line_number":297,"context_line":""},{"line_number":298,"context_line":"The providers of these resources may be a compute node parent resource provider"}],"source_content_type":"text/x-rst","patch_set":11,"id":"5f7c97a3_ac408ea6","line":295,"range":{"start_line":295,"start_character":44,"end_line":295,"end_character":46},"updated":"2018-05-30 21:57:50.000000000","message":"and this would be `and/or`","commit_id":"33d37fc22fc4cb8d6b3017c5d67cd64f80183c07"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"d42210a3b1cbaf916338a2633ed8706d510a3751","unresolved":false,"context_lines":[{"line_number":292,"context_line":"  ``resources:PCPU\u003d$AMOUNT``"},{"line_number":293,"context_line":""},{"line_number":294,"context_line":"This will allow the placement service to filter out compute nodes that do not"},{"line_number":295,"context_line":"at least have the required number of shared or dedicated CPU resources that the"},{"line_number":296,"context_line":"guest requires."},{"line_number":297,"context_line":""},{"line_number":298,"context_line":"The providers of these resources may be a compute node parent resource provider"}],"source_content_type":"text/x-rst","patch_set":11,"id":"5f7c97a3_85c8e021","line":295,"range":{"start_line":295,"start_character":44,"end_line":295,"end_character":46},"in_reply_to":"5f7c97a3_ac408ea6","updated":"2018-06-01 20:15:08.000000000","message":"actully this should be \"and\" not \"or\" or \"and/or\" based on line 287 as it expcitly states the request a number of both types.","commit_id":"33d37fc22fc4cb8d6b3017c5d67cd64f80183c07"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"d42210a3b1cbaf916338a2633ed8706d510a3751","unresolved":false,"context_lines":[{"line_number":293,"context_line":""},{"line_number":294,"context_line":"This will allow the placement service to filter out compute nodes that do not"},{"line_number":295,"context_line":"at least have the required number of shared or dedicated CPU resources that the"},{"line_number":296,"context_line":"guest requires."},{"line_number":297,"context_line":""},{"line_number":298,"context_line":"The providers of these resources may be a compute node parent resource provider"},{"line_number":299,"context_line":"**or** a child provider of that parent compute node provider that represents a"}],"source_content_type":"text/x-rst","patch_set":11,"id":"5f7c97a3_2500ec33","line":296,"range":{"start_line":296,"start_character":14,"end_line":296,"end_character":15},"updated":"2018-06-01 20:15:08.000000000","message":"within the same resouces provider.","commit_id":"33d37fc22fc4cb8d6b3017c5d67cd64f80183c07"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"843524c2eb2308189d8c5755d8a9055d8ec28ce0","unresolved":false,"context_lines":[{"line_number":293,"context_line":""},{"line_number":294,"context_line":"This will allow the placement service to filter out compute nodes that do not"},{"line_number":295,"context_line":"at least have the required number of shared or dedicated CPU resources that the"},{"line_number":296,"context_line":"guest requires."},{"line_number":297,"context_line":""},{"line_number":298,"context_line":"The providers of these resources may be a compute node parent resource provider"},{"line_number":299,"context_line":"**or** a child provider of that parent compute node provider that represents a"}],"source_content_type":"text/x-rst","patch_set":11,"id":"5f7c97a3_2c53d56e","line":296,"range":{"start_line":296,"start_character":14,"end_line":296,"end_character":15},"in_reply_to":"5f7c97a3_2500ec33","updated":"2018-06-04 18:55:28.000000000","message":"Done","commit_id":"33d37fc22fc4cb8d6b3017c5d67cd64f80183c07"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"789e9fe61f6a007007bf8b4bd41cf3e938859453","unresolved":false,"context_lines":[{"line_number":296,"context_line":"guest requires."},{"line_number":297,"context_line":""},{"line_number":298,"context_line":"The providers of these resources may be a compute node parent resource provider"},{"line_number":299,"context_line":"**or** a child provider of that parent compute node provider that represents a"},{"line_number":300,"context_line":"socket or NUMA cell on a multi-package system."},{"line_number":301,"context_line":""},{"line_number":302,"context_line":"Guest does not care whether CPU resources come from multiple providers"}],"source_content_type":"text/x-rst","patch_set":11,"id":"5f7c97a3_cc3b8a35","line":299,"range":{"start_line":299,"start_character":2,"end_line":299,"end_character":4},"updated":"2018-05-30 21:57:50.000000000","message":"ditto","commit_id":"33d37fc22fc4cb8d6b3017c5d67cd64f80183c07"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"843524c2eb2308189d8c5755d8a9055d8ec28ce0","unresolved":false,"context_lines":[{"line_number":296,"context_line":"guest requires."},{"line_number":297,"context_line":""},{"line_number":298,"context_line":"The providers of these resources may be a compute node parent resource provider"},{"line_number":299,"context_line":"**or** a child provider of that parent compute node provider that represents a"},{"line_number":300,"context_line":"socket or NUMA cell on a multi-package system."},{"line_number":301,"context_line":""},{"line_number":302,"context_line":"Guest does not care whether CPU resources come from multiple providers"}],"source_content_type":"text/x-rst","patch_set":11,"id":"5f7c97a3_6c59cd8c","line":299,"range":{"start_line":299,"start_character":2,"end_line":299,"end_character":4},"in_reply_to":"5f7c97a3_459c080d","updated":"2018-06-04 18:55:28.000000000","message":"Right, what Sean said","commit_id":"33d37fc22fc4cb8d6b3017c5d67cd64f80183c07"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"d42210a3b1cbaf916338a2633ed8706d510a3751","unresolved":false,"context_lines":[{"line_number":296,"context_line":"guest requires."},{"line_number":297,"context_line":""},{"line_number":298,"context_line":"The providers of these resources may be a compute node parent resource provider"},{"line_number":299,"context_line":"**or** a child provider of that parent compute node provider that represents a"},{"line_number":300,"context_line":"socket or NUMA cell on a multi-package system."},{"line_number":301,"context_line":""},{"line_number":302,"context_line":"Guest does not care whether CPU resources come from multiple providers"}],"source_content_type":"text/x-rst","patch_set":11,"id":"5f7c97a3_459c080d","line":299,"range":{"start_line":299,"start_character":2,"end_line":299,"end_character":4},"in_reply_to":"5f7c97a3_cc3b8a35","updated":"2018-06-01 20:15:08.000000000","message":"if we are requiring \"all CPU resources are supplied by the same provider\" then this is an exclusive or so i think this is fine as it is.","commit_id":"33d37fc22fc4cb8d6b3017c5d67cd64f80183c07"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"789e9fe61f6a007007bf8b4bd41cf3e938859453","unresolved":false,"context_lines":[{"line_number":302,"context_line":"Guest does not care whether CPU resources come from multiple providers"},{"line_number":303,"context_line":"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"},{"line_number":304,"context_line":""},{"line_number":305,"context_line":"The guest uses a granular request groups, each containing a single request for"},{"line_number":306,"context_line":"a CPU resource (dedicated or shared) and includes the ``group_policy\u003dnone``"},{"line_number":307,"context_line":"parameter."},{"line_number":308,"context_line":""}],"source_content_type":"text/x-rst","patch_set":11,"id":"5f7c97a3_0c0f4288","line":305,"range":{"start_line":305,"start_character":15,"end_line":305,"end_character":16},"updated":"2018-05-30 21:57:50.000000000","message":"strike","commit_id":"33d37fc22fc4cb8d6b3017c5d67cd64f80183c07"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"843524c2eb2308189d8c5755d8a9055d8ec28ce0","unresolved":false,"context_lines":[{"line_number":302,"context_line":"Guest does not care whether CPU resources come from multiple providers"},{"line_number":303,"context_line":"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"},{"line_number":304,"context_line":""},{"line_number":305,"context_line":"The guest uses a granular request groups, each containing a single request for"},{"line_number":306,"context_line":"a CPU resource (dedicated or shared) and includes the ``group_policy\u003dnone``"},{"line_number":307,"context_line":"parameter."},{"line_number":308,"context_line":""}],"source_content_type":"text/x-rst","patch_set":11,"id":"5f7c97a3_6c80edc0","line":305,"range":{"start_line":305,"start_character":15,"end_line":305,"end_character":16},"in_reply_to":"5f7c97a3_0c0f4288","updated":"2018-06-04 18:55:28.000000000","message":"Done","commit_id":"33d37fc22fc4cb8d6b3017c5d67cd64f80183c07"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"789e9fe61f6a007007bf8b4bd41cf3e938859453","unresolved":false,"context_lines":[{"line_number":326,"context_line":"guest requires."},{"line_number":327,"context_line":""},{"line_number":328,"context_line":"The providers of these resources may be a compute node parent resource provider"},{"line_number":329,"context_line":"**or** a child provider of that parent compute node provider that represents a"},{"line_number":330,"context_line":"socket or NUMA cell on a multi-package system."},{"line_number":331,"context_line":""},{"line_number":332,"context_line":"As an example, suppose the guest wanted 4 dedicated CPUs and the operator"}],"source_content_type":"text/x-rst","patch_set":11,"id":"5f7c97a3_4c7e9ae4","line":329,"range":{"start_line":329,"start_character":2,"end_line":329,"end_character":4},"updated":"2018-05-30 21:57:50.000000000","message":"and/or","commit_id":"33d37fc22fc4cb8d6b3017c5d67cd64f80183c07"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"789e9fe61f6a007007bf8b4bd41cf3e938859453","unresolved":false,"context_lines":[{"line_number":326,"context_line":"guest requires."},{"line_number":327,"context_line":""},{"line_number":328,"context_line":"The providers of these resources may be a compute node parent resource provider"},{"line_number":329,"context_line":"**or** a child provider of that parent compute node provider that represents a"},{"line_number":330,"context_line":"socket or NUMA cell on a multi-package system."},{"line_number":331,"context_line":""},{"line_number":332,"context_line":"As an example, suppose the guest wanted 4 dedicated CPUs and the operator"}],"source_content_type":"text/x-rst","patch_set":11,"id":"5f7c97a3_ec80c6c1","line":329,"range":{"start_line":329,"start_character":7,"end_line":329,"end_character":23},"updated":"2018-05-30 21:57:50.000000000","message":"child providers","commit_id":"33d37fc22fc4cb8d6b3017c5d67cd64f80183c07"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"789e9fe61f6a007007bf8b4bd41cf3e938859453","unresolved":false,"context_lines":[{"line_number":326,"context_line":"guest requires."},{"line_number":327,"context_line":""},{"line_number":328,"context_line":"The providers of these resources may be a compute node parent resource provider"},{"line_number":329,"context_line":"**or** a child provider of that parent compute node provider that represents a"},{"line_number":330,"context_line":"socket or NUMA cell on a multi-package system."},{"line_number":331,"context_line":""},{"line_number":332,"context_line":"As an example, suppose the guest wanted 4 dedicated CPUs and the operator"}],"source_content_type":"text/x-rst","patch_set":11,"id":"5f7c97a3_0c8422d2","line":329,"range":{"start_line":329,"start_character":66,"end_line":329,"end_character":76},"updated":"2018-05-30 21:57:50.000000000","message":"represent","commit_id":"33d37fc22fc4cb8d6b3017c5d67cd64f80183c07"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"843524c2eb2308189d8c5755d8a9055d8ec28ce0","unresolved":false,"context_lines":[{"line_number":326,"context_line":"guest requires."},{"line_number":327,"context_line":""},{"line_number":328,"context_line":"The providers of these resources may be a compute node parent resource provider"},{"line_number":329,"context_line":"**or** a child provider of that parent compute node provider that represents a"},{"line_number":330,"context_line":"socket or NUMA cell on a multi-package system."},{"line_number":331,"context_line":""},{"line_number":332,"context_line":"As an example, suppose the guest wanted 4 dedicated CPUs and the operator"}],"source_content_type":"text/x-rst","patch_set":11,"id":"5f7c97a3_ec8f1dcb","line":329,"range":{"start_line":329,"start_character":66,"end_line":329,"end_character":76},"in_reply_to":"5f7c97a3_0c8422d2","updated":"2018-06-04 18:55:28.000000000","message":"no, it should be \"represents\". The verb is relative to \"a child provider of that parent compute node provider\" -- i.e. it\u0027s a singular noun, not a plural noun.","commit_id":"33d37fc22fc4cb8d6b3017c5d67cd64f80183c07"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"d42210a3b1cbaf916338a2633ed8706d510a3751","unresolved":false,"context_lines":[{"line_number":326,"context_line":"guest requires."},{"line_number":327,"context_line":""},{"line_number":328,"context_line":"The providers of these resources may be a compute node parent resource provider"},{"line_number":329,"context_line":"**or** a child provider of that parent compute node provider that represents a"},{"line_number":330,"context_line":"socket or NUMA cell on a multi-package system."},{"line_number":331,"context_line":""},{"line_number":332,"context_line":"As an example, suppose the guest wanted 4 dedicated CPUs and the operator"}],"source_content_type":"text/x-rst","patch_set":11,"id":"5f7c97a3_85646023","line":329,"range":{"start_line":329,"start_character":2,"end_line":329,"end_character":4},"in_reply_to":"5f7c97a3_4c7e9ae4","updated":"2018-06-01 20:15:08.000000000","message":"yes this time its and/or :)","commit_id":"33d37fc22fc4cb8d6b3017c5d67cd64f80183c07"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"843524c2eb2308189d8c5755d8a9055d8ec28ce0","unresolved":false,"context_lines":[{"line_number":326,"context_line":"guest requires."},{"line_number":327,"context_line":""},{"line_number":328,"context_line":"The providers of these resources may be a compute node parent resource provider"},{"line_number":329,"context_line":"**or** a child provider of that parent compute node provider that represents a"},{"line_number":330,"context_line":"socket or NUMA cell on a multi-package system."},{"line_number":331,"context_line":""},{"line_number":332,"context_line":"As an example, suppose the guest wanted 4 dedicated CPUs and the operator"}],"source_content_type":"text/x-rst","patch_set":11,"id":"5f7c97a3_ccc021e4","line":329,"range":{"start_line":329,"start_character":2,"end_line":329,"end_character":4},"in_reply_to":"5f7c97a3_85646023","updated":"2018-06-04 18:55:28.000000000","message":"No, it\u0027s just \"or\" in both cases. The \"or\" is referring to the fact that the providers that are selected to provide the CPU resources may be either a root compute node provider OR a child resource provider.","commit_id":"33d37fc22fc4cb8d6b3017c5d67cd64f80183c07"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"843524c2eb2308189d8c5755d8a9055d8ec28ce0","unresolved":false,"context_lines":[{"line_number":326,"context_line":"guest requires."},{"line_number":327,"context_line":""},{"line_number":328,"context_line":"The providers of these resources may be a compute node parent resource provider"},{"line_number":329,"context_line":"**or** a child provider of that parent compute node provider that represents a"},{"line_number":330,"context_line":"socket or NUMA cell on a multi-package system."},{"line_number":331,"context_line":""},{"line_number":332,"context_line":"As an example, suppose the guest wanted 4 dedicated CPUs and the operator"}],"source_content_type":"text/x-rst","patch_set":11,"id":"5f7c97a3_acbb6573","line":329,"range":{"start_line":329,"start_character":7,"end_line":329,"end_character":23},"in_reply_to":"5f7c97a3_ec80c6c1","updated":"2018-06-04 18:55:28.000000000","message":"no, it\u0027s just \"a child provider\".","commit_id":"33d37fc22fc4cb8d6b3017c5d67cd64f80183c07"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"789e9fe61f6a007007bf8b4bd41cf3e938859453","unresolved":false,"context_lines":[{"line_number":344,"context_line":""},{"line_number":345,"context_line":".. note::"},{"line_number":346,"context_line":""},{"line_number":347,"context_line":"    We are aware that there would likely be a negative impact to memory latency"},{"line_number":348,"context_line":"    or bandwidth of a workload with dedicated CPUs spread over multiple"},{"line_number":349,"context_line":"    sockets."},{"line_number":350,"context_line":""}],"source_content_type":"text/x-rst","patch_set":11,"id":"5f7c97a3_4c677a4e","line":347,"range":{"start_line":347,"start_character":4,"end_line":347,"end_character":16},"updated":"2018-05-30 21:57:50.000000000","message":"or \"The operator accepts\"","commit_id":"33d37fc22fc4cb8d6b3017c5d67cd64f80183c07"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"843524c2eb2308189d8c5755d8a9055d8ec28ce0","unresolved":false,"context_lines":[{"line_number":344,"context_line":""},{"line_number":345,"context_line":".. note::"},{"line_number":346,"context_line":""},{"line_number":347,"context_line":"    We are aware that there would likely be a negative impact to memory latency"},{"line_number":348,"context_line":"    or bandwidth of a workload with dedicated CPUs spread over multiple"},{"line_number":349,"context_line":"    sockets."},{"line_number":350,"context_line":""}],"source_content_type":"text/x-rst","patch_set":11,"id":"5f7c97a3_eca87d21","line":347,"range":{"start_line":347,"start_character":4,"end_line":347,"end_character":16},"in_reply_to":"5f7c97a3_4c677a4e","updated":"2018-06-04 18:55:28.000000000","message":"Done","commit_id":"33d37fc22fc4cb8d6b3017c5d67cd64f80183c07"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"789e9fe61f6a007007bf8b4bd41cf3e938859453","unresolved":false,"context_lines":[{"line_number":351,"context_line":"Ensure groups of CPU resources are provided by different providers"},{"line_number":352,"context_line":"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"},{"line_number":353,"context_line":""},{"line_number":354,"context_line":"The guest uses a `granular request group \u003cgranular request groups (Rocky)\u003e`_"},{"line_number":355,"context_line":"for each group of CPU resources that they want provided by different providers."},{"line_number":356,"context_line":""},{"line_number":357,"context_line":"Each group will specify a number of dedicated CPUs and/or a number of shared"}],"source_content_type":"text/x-rst","patch_set":11,"id":"5f7c97a3_4ccc5a34","line":354,"range":{"start_line":354,"start_character":4,"end_line":354,"end_character":9},"updated":"2018-05-30 21:57:50.000000000","message":"operator?","commit_id":"33d37fc22fc4cb8d6b3017c5d67cd64f80183c07"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"789e9fe61f6a007007bf8b4bd41cf3e938859453","unresolved":false,"context_lines":[{"line_number":351,"context_line":"Ensure groups of CPU resources are provided by different providers"},{"line_number":352,"context_line":"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"},{"line_number":353,"context_line":""},{"line_number":354,"context_line":"The guest uses a `granular request group \u003cgranular request groups (Rocky)\u003e`_"},{"line_number":355,"context_line":"for each group of CPU resources that they want provided by different providers."},{"line_number":356,"context_line":""},{"line_number":357,"context_line":"Each group will specify a number of dedicated CPUs and/or a number of shared"}],"source_content_type":"text/x-rst","patch_set":11,"id":"5f7c97a3_6c4d96c2","line":354,"range":{"start_line":354,"start_character":17,"end_line":354,"end_character":76},"updated":"2018-05-30 21:57:50.000000000","message":"this also doesn\u0027t render right.","commit_id":"33d37fc22fc4cb8d6b3017c5d67cd64f80183c07"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"d42210a3b1cbaf916338a2633ed8706d510a3751","unresolved":false,"context_lines":[{"line_number":351,"context_line":"Ensure groups of CPU resources are provided by different providers"},{"line_number":352,"context_line":"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"},{"line_number":353,"context_line":""},{"line_number":354,"context_line":"The guest uses a `granular request group \u003cgranular request groups (Rocky)\u003e`_"},{"line_number":355,"context_line":"for each group of CPU resources that they want provided by different providers."},{"line_number":356,"context_line":""},{"line_number":357,"context_line":"Each group will specify a number of dedicated CPUs and/or a number of shared"}],"source_content_type":"text/x-rst","patch_set":11,"id":"5f7c97a3_c556d82a","line":354,"range":{"start_line":354,"start_character":4,"end_line":354,"end_character":9},"in_reply_to":"5f7c97a3_4ccc5a34","updated":"2018-06-01 20:15:08.000000000","message":"well guest has been used in all the previous examples. \n\nin this context guest is refering to the compute context e.g. the vm booted is requesting these resouces via embeding granular request in the flavor.\n\nif we change it here we chould change it in the previous examples too.","commit_id":"33d37fc22fc4cb8d6b3017c5d67cd64f80183c07"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"67c716dbb6e94272d9244e61439b24ead5a9b017","unresolved":false,"context_lines":[{"line_number":351,"context_line":"Ensure groups of CPU resources are provided by different providers"},{"line_number":352,"context_line":"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"},{"line_number":353,"context_line":""},{"line_number":354,"context_line":"The guest uses a `granular request group \u003cgranular request groups (Rocky)\u003e`_"},{"line_number":355,"context_line":"for each group of CPU resources that they want provided by different providers."},{"line_number":356,"context_line":""},{"line_number":357,"context_line":"Each group will specify a number of dedicated CPUs and/or a number of shared"}],"source_content_type":"text/x-rst","patch_set":11,"id":"5f7c97a3_8fcedb2a","line":354,"range":{"start_line":354,"start_character":17,"end_line":354,"end_character":76},"in_reply_to":"5f7c97a3_6c4d96c2","updated":"2018-05-31 10:44:00.000000000","message":"\u003e this also doesn\u0027t render right.\n\nAgain, missing underscore","commit_id":"33d37fc22fc4cb8d6b3017c5d67cd64f80183c07"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"843524c2eb2308189d8c5755d8a9055d8ec28ce0","unresolved":false,"context_lines":[{"line_number":351,"context_line":"Ensure groups of CPU resources are provided by different providers"},{"line_number":352,"context_line":"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"},{"line_number":353,"context_line":""},{"line_number":354,"context_line":"The guest uses a `granular request group \u003cgranular request groups (Rocky)\u003e`_"},{"line_number":355,"context_line":"for each group of CPU resources that they want provided by different providers."},{"line_number":356,"context_line":""},{"line_number":357,"context_line":"Each group will specify a number of dedicated CPUs and/or a number of shared"}],"source_content_type":"text/x-rst","patch_set":11,"id":"5f7c97a3_8c6f89fb","line":354,"range":{"start_line":354,"start_character":17,"end_line":354,"end_character":76},"in_reply_to":"5f7c97a3_8fcedb2a","updated":"2018-06-04 18:55:28.000000000","message":"Done","commit_id":"33d37fc22fc4cb8d6b3017c5d67cd64f80183c07"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"843524c2eb2308189d8c5755d8a9055d8ec28ce0","unresolved":false,"context_lines":[{"line_number":351,"context_line":"Ensure groups of CPU resources are provided by different providers"},{"line_number":352,"context_line":"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"},{"line_number":353,"context_line":""},{"line_number":354,"context_line":"The guest uses a `granular request group \u003cgranular request groups (Rocky)\u003e`_"},{"line_number":355,"context_line":"for each group of CPU resources that they want provided by different providers."},{"line_number":356,"context_line":""},{"line_number":357,"context_line":"Each group will specify a number of dedicated CPUs and/or a number of shared"}],"source_content_type":"text/x-rst","patch_set":11,"id":"5f7c97a3_6c430d6e","line":354,"range":{"start_line":354,"start_character":4,"end_line":354,"end_character":9},"in_reply_to":"5f7c97a3_c556d82a","updated":"2018-06-04 18:55:28.000000000","message":"\"Guest\" is what I prefer. It refers to the request that is compiled from the instance\u0027s flavor and image metadata.","commit_id":"33d37fc22fc4cb8d6b3017c5d67cd64f80183c07"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"789e9fe61f6a007007bf8b4bd41cf3e938859453","unresolved":false,"context_lines":[{"line_number":359,"context_line":""},{"line_number":360,"context_line":"* The number of shared CPUs needed by the group shall be stored in the"},{"line_number":361,"context_line":"  ``resources$GROUP_NUM:VCPU\u003d$AMOUNT`` extra spec key."},{"line_number":362,"context_line":"* The number of dedicated CPUs needed by the group shall by storage in the"},{"line_number":363,"context_line":"  ``resources$GROUP_NUM:PCPU\u003d$AMOUNT`` extra spec key."},{"line_number":364,"context_line":"* A ``group_policy\u003disolate`` extra spec key will be required."},{"line_number":365,"context_line":""}],"source_content_type":"text/x-rst","patch_set":11,"id":"5f7c97a3_0cd2e2d1","line":362,"range":{"start_line":362,"start_character":57,"end_line":362,"end_character":67},"updated":"2018-05-30 21:57:50.000000000","message":"be stored","commit_id":"33d37fc22fc4cb8d6b3017c5d67cd64f80183c07"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"843524c2eb2308189d8c5755d8a9055d8ec28ce0","unresolved":false,"context_lines":[{"line_number":359,"context_line":""},{"line_number":360,"context_line":"* The number of shared CPUs needed by the group shall be stored in the"},{"line_number":361,"context_line":"  ``resources$GROUP_NUM:VCPU\u003d$AMOUNT`` extra spec key."},{"line_number":362,"context_line":"* The number of dedicated CPUs needed by the group shall by storage in the"},{"line_number":363,"context_line":"  ``resources$GROUP_NUM:PCPU\u003d$AMOUNT`` extra spec key."},{"line_number":364,"context_line":"* A ``group_policy\u003disolate`` extra spec key will be required."},{"line_number":365,"context_line":""}],"source_content_type":"text/x-rst","patch_set":11,"id":"5f7c97a3_2c5d1548","line":362,"range":{"start_line":362,"start_character":57,"end_line":362,"end_character":67},"in_reply_to":"5f7c97a3_0cd2e2d1","updated":"2018-06-04 18:55:28.000000000","message":"Done","commit_id":"33d37fc22fc4cb8d6b3017c5d67cd64f80183c07"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"789e9fe61f6a007007bf8b4bd41cf3e938859453","unresolved":false,"context_lines":[{"line_number":368,"context_line":""},{"line_number":369,"context_line":"As an example, suppose the guest wanted 2 groups of 2 dedicated CPU resources"},{"line_number":370,"context_line":"and wanted those groups of CPU resources to be provided by distinct resource"},{"line_number":371,"context_line":"providers. The extra specs (or image properties) for the guest would look like"},{"line_number":372,"context_line":"this::"},{"line_number":373,"context_line":""},{"line_number":374,"context_line":"    resources1:PCPU\u003d2"}],"source_content_type":"text/x-rst","patch_set":11,"id":"5f7c97a3_ece766ab","line":371,"range":{"start_line":371,"start_character":28,"end_line":371,"end_character":47},"updated":"2018-05-30 21:57:50.000000000","message":"Pretty sure we decided you can\u0027t use numbered groups in image props.  So I think you can strike this.","commit_id":"33d37fc22fc4cb8d6b3017c5d67cd64f80183c07"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"843524c2eb2308189d8c5755d8a9055d8ec28ce0","unresolved":false,"context_lines":[{"line_number":368,"context_line":""},{"line_number":369,"context_line":"As an example, suppose the guest wanted 2 groups of 2 dedicated CPU resources"},{"line_number":370,"context_line":"and wanted those groups of CPU resources to be provided by distinct resource"},{"line_number":371,"context_line":"providers. The extra specs (or image properties) for the guest would look like"},{"line_number":372,"context_line":"this::"},{"line_number":373,"context_line":""},{"line_number":374,"context_line":"    resources1:PCPU\u003d2"}],"source_content_type":"text/x-rst","patch_set":11,"id":"5f7c97a3_ec563d2b","line":371,"range":{"start_line":371,"start_character":28,"end_line":371,"end_character":47},"in_reply_to":"5f7c97a3_ece766ab","updated":"2018-06-04 18:55:28.000000000","message":"Done","commit_id":"33d37fc22fc4cb8d6b3017c5d67cd64f80183c07"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"d42210a3b1cbaf916338a2633ed8706d510a3751","unresolved":false,"context_lines":[{"line_number":368,"context_line":""},{"line_number":369,"context_line":"As an example, suppose the guest wanted 2 groups of 2 dedicated CPU resources"},{"line_number":370,"context_line":"and wanted those groups of CPU resources to be provided by distinct resource"},{"line_number":371,"context_line":"providers. The extra specs (or image properties) for the guest would look like"},{"line_number":372,"context_line":"this::"},{"line_number":373,"context_line":""},{"line_number":374,"context_line":"    resources1:PCPU\u003d2"}],"source_content_type":"text/x-rst","patch_set":11,"id":"5f7c97a3_050ff036","line":371,"range":{"start_line":371,"start_character":28,"end_line":371,"end_character":47},"in_reply_to":"5f7c97a3_ece766ab","updated":"2018-06-01 20:15:08.000000000","message":"we had dissused ways of doing it in the future if we had a good enough usecase that demanded it but yes i think for now we can consider this out of scope.","commit_id":"33d37fc22fc4cb8d6b3017c5d67cd64f80183c07"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"67c716dbb6e94272d9244e61439b24ead5a9b017","unresolved":false,"context_lines":[{"line_number":383,"context_line":"    is done by the virt driver in conjunction with the nova/virt/hardware.py"},{"line_number":384,"context_line":"    module and does not affect the total amount of requested resources asked"},{"line_number":385,"context_line":"    from the placement service"},{"line_number":386,"context_line":""},{"line_number":387,"context_line":"Guest tolerance for hyperthreads"},{"line_number":388,"context_line":"--------------------------------"},{"line_number":389,"context_line":""}],"source_content_type":"text/x-rst","patch_set":11,"id":"5f7c97a3_4fdc43e3","line":386,"updated":"2018-05-31 10:44:00.000000000","message":"Another note stating that this will be unsupported until nested resource providers and/or NUMA are supported by placement will help ensure people who read this will know why the above isn\u0027t working right now","commit_id":"33d37fc22fc4cb8d6b3017c5d67cd64f80183c07"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"843524c2eb2308189d8c5755d8a9055d8ec28ce0","unresolved":false,"context_lines":[{"line_number":383,"context_line":"    is done by the virt driver in conjunction with the nova/virt/hardware.py"},{"line_number":384,"context_line":"    module and does not affect the total amount of requested resources asked"},{"line_number":385,"context_line":"    from the placement service"},{"line_number":386,"context_line":""},{"line_number":387,"context_line":"Guest tolerance for hyperthreads"},{"line_number":388,"context_line":"--------------------------------"},{"line_number":389,"context_line":""}],"source_content_type":"text/x-rst","patch_set":11,"id":"5f7c97a3_8c16a955","line":386,"in_reply_to":"5f7c97a3_4fdc43e3","updated":"2018-06-04 18:55:28.000000000","message":"Done. Note that we already support nested resource providers in the compute node and the nova/compute/provider_tree.py module and scheduler report client. What we don\u0027t yet support is the virt drivers creating child providers for different CPU sockets.","commit_id":"33d37fc22fc4cb8d6b3017c5d67cd64f80183c07"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"d42210a3b1cbaf916338a2633ed8706d510a3751","unresolved":false,"context_lines":[{"line_number":383,"context_line":"    is done by the virt driver in conjunction with the nova/virt/hardware.py"},{"line_number":384,"context_line":"    module and does not affect the total amount of requested resources asked"},{"line_number":385,"context_line":"    from the placement service"},{"line_number":386,"context_line":""},{"line_number":387,"context_line":"Guest tolerance for hyperthreads"},{"line_number":388,"context_line":"--------------------------------"},{"line_number":389,"context_line":""}],"source_content_type":"text/x-rst","patch_set":11,"id":"5f7c97a3_086b85b6","line":386,"in_reply_to":"5f7c97a3_4fdc43e3","updated":"2018-06-01 20:15:08.000000000","message":"i dont see any point in merging support for this untill that works honestly so i would much rather just add the numa spec\nto the dependcyies.\n\nyou can already model nested resouces providers in placement\nthe only thing that is missing is the granualr request support to be able to request resouces form different nested resouce providers in the allocation_candiates enpoint when you need to associate traits with specific resouce proviers.\n\nif you dont need traits i think nested resouces providers would work today if you populated the correct resouce provider topology by hand so i dont really see it as a hard depency given what has already been merged. granular requests is and so is the numa spec.","commit_id":"33d37fc22fc4cb8d6b3017c5d67cd64f80183c07"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"67c716dbb6e94272d9244e61439b24ead5a9b017","unresolved":false,"context_lines":[{"line_number":443,"context_line":"Here are some example flavor/image configurations, in increasing order of"},{"line_number":444,"context_line":"complexity."},{"line_number":445,"context_line":""},{"line_number":446,"context_line":"1) A simple web application server workload requires a couple CPU resources."},{"line_number":447,"context_line":"The workload does not require any dedicated CPU resources::"},{"line_number":448,"context_line":""},{"line_number":449,"context_line":"    resources:VCPU\u003d2"},{"line_number":450,"context_line":""}],"source_content_type":"text/x-rst","patch_set":11,"id":"5f7c97a3_8fe7bbac","line":447,"range":{"start_line":446,"start_character":0,"end_line":447,"end_character":59},"updated":"2018-05-31 10:44:00.000000000","message":"style nit: Didn\u0027t highlight this before but this won\u0027t render as an ordered list. You need to indent all subsequent lines if you want that to work","commit_id":"33d37fc22fc4cb8d6b3017c5d67cd64f80183c07"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"843524c2eb2308189d8c5755d8a9055d8ec28ce0","unresolved":false,"context_lines":[{"line_number":443,"context_line":"Here are some example flavor/image configurations, in increasing order of"},{"line_number":444,"context_line":"complexity."},{"line_number":445,"context_line":""},{"line_number":446,"context_line":"1) A simple web application server workload requires a couple CPU resources."},{"line_number":447,"context_line":"The workload does not require any dedicated CPU resources::"},{"line_number":448,"context_line":""},{"line_number":449,"context_line":"    resources:VCPU\u003d2"},{"line_number":450,"context_line":""}],"source_content_type":"text/x-rst","patch_set":11,"id":"5f7c97a3_f2c37856","line":447,"range":{"start_line":446,"start_character":0,"end_line":447,"end_character":59},"in_reply_to":"5f7c97a3_8fe7bbac","updated":"2018-06-04 18:55:28.000000000","message":"Done","commit_id":"33d37fc22fc4cb8d6b3017c5d67cd64f80183c07"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"789e9fe61f6a007007bf8b4bd41cf3e938859453","unresolved":false,"context_lines":[{"line_number":446,"context_line":"1) A simple web application server workload requires a couple CPU resources."},{"line_number":447,"context_line":"The workload does not require any dedicated CPU resources::"},{"line_number":448,"context_line":""},{"line_number":449,"context_line":"    resources:VCPU\u003d2"},{"line_number":450,"context_line":""},{"line_number":451,"context_line":"2a) A database server requires 8 CPU resources, and the workload needs"},{"line_number":452,"context_line":"dedicated CPU resources to minimize effects of other workloads hosted on the"}],"source_content_type":"text/x-rst","patch_set":11,"id":"5f7c97a3_6c9036ee","line":449,"updated":"2018-05-30 21:57:50.000000000","message":"These will come from the same provider.  That okay?","commit_id":"33d37fc22fc4cb8d6b3017c5d67cd64f80183c07"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"d42210a3b1cbaf916338a2633ed8706d510a3751","unresolved":false,"context_lines":[{"line_number":446,"context_line":"1) A simple web application server workload requires a couple CPU resources."},{"line_number":447,"context_line":"The workload does not require any dedicated CPU resources::"},{"line_number":448,"context_line":""},{"line_number":449,"context_line":"    resources:VCPU\u003d2"},{"line_number":450,"context_line":""},{"line_number":451,"context_line":"2a) A database server requires 8 CPU resources, and the workload needs"},{"line_number":452,"context_line":"dedicated CPU resources to minimize effects of other workloads hosted on the"}],"source_content_type":"text/x-rst","patch_set":11,"id":"5f7c97a3_a83b7199","line":449,"in_reply_to":"5f7c97a3_6c9036ee","updated":"2018-06-01 20:15:08.000000000","message":"yes i think so.\n\n2b covers the other examples\n\ne.g. use granular request with group_policy\u003dnone if you dont care if they are spread or isolate if you want to for them to be form different providers.","commit_id":"33d37fc22fc4cb8d6b3017c5d67cd64f80183c07"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"67c716dbb6e94272d9244e61439b24ead5a9b017","unresolved":false,"context_lines":[{"line_number":448,"context_line":""},{"line_number":449,"context_line":"    resources:VCPU\u003d2"},{"line_number":450,"context_line":""},{"line_number":451,"context_line":"2a) A database server requires 8 CPU resources, and the workload needs"},{"line_number":452,"context_line":"dedicated CPU resources to minimize effects of other workloads hosted on the"},{"line_number":453,"context_line":"same hardware. The deployer wishes to ensure that those dedicated CPU resources"},{"line_number":454,"context_line":"are all served by the same resources provider::"}],"source_content_type":"text/x-rst","patch_set":11,"id":"5f7c97a3_2ff6a75e","line":451,"range":{"start_line":451,"start_character":0,"end_line":451,"end_character":3},"updated":"2018-05-31 10:44:00.000000000","message":"Style nit: try\n\n  2)\n    a) blah blah blah\n       continued down here","commit_id":"33d37fc22fc4cb8d6b3017c5d67cd64f80183c07"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"843524c2eb2308189d8c5755d8a9055d8ec28ce0","unresolved":false,"context_lines":[{"line_number":448,"context_line":""},{"line_number":449,"context_line":"    resources:VCPU\u003d2"},{"line_number":450,"context_line":""},{"line_number":451,"context_line":"2a) A database server requires 8 CPU resources, and the workload needs"},{"line_number":452,"context_line":"dedicated CPU resources to minimize effects of other workloads hosted on the"},{"line_number":453,"context_line":"same hardware. The deployer wishes to ensure that those dedicated CPU resources"},{"line_number":454,"context_line":"are all served by the same resources provider::"}],"source_content_type":"text/x-rst","patch_set":11,"id":"5f7c97a3_d29bdc70","line":451,"range":{"start_line":451,"start_character":0,"end_line":451,"end_character":3},"in_reply_to":"5f7c97a3_2ff6a75e","updated":"2018-06-04 18:55:28.000000000","message":"Done","commit_id":"33d37fc22fc4cb8d6b3017c5d67cd64f80183c07"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"789e9fe61f6a007007bf8b4bd41cf3e938859453","unresolved":false,"context_lines":[{"line_number":451,"context_line":"2a) A database server requires 8 CPU resources, and the workload needs"},{"line_number":452,"context_line":"dedicated CPU resources to minimize effects of other workloads hosted on the"},{"line_number":453,"context_line":"same hardware. The deployer wishes to ensure that those dedicated CPU resources"},{"line_number":454,"context_line":"are all served by the same resources provider::"},{"line_number":455,"context_line":""},{"line_number":456,"context_line":"    resources:PCPU\u003d8"},{"line_number":457,"context_line":""}],"source_content_type":"text/x-rst","patch_set":11,"id":"5f7c97a3_8c8b52be","line":454,"range":{"start_line":454,"start_character":35,"end_line":454,"end_character":36},"updated":"2018-05-30 21:57:50.000000000","message":"strike","commit_id":"33d37fc22fc4cb8d6b3017c5d67cd64f80183c07"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"843524c2eb2308189d8c5755d8a9055d8ec28ce0","unresolved":false,"context_lines":[{"line_number":451,"context_line":"2a) A database server requires 8 CPU resources, and the workload needs"},{"line_number":452,"context_line":"dedicated CPU resources to minimize effects of other workloads hosted on the"},{"line_number":453,"context_line":"same hardware. The deployer wishes to ensure that those dedicated CPU resources"},{"line_number":454,"context_line":"are all served by the same resources provider::"},{"line_number":455,"context_line":""},{"line_number":456,"context_line":"    resources:PCPU\u003d8"},{"line_number":457,"context_line":""}],"source_content_type":"text/x-rst","patch_set":11,"id":"5f7c97a3_9287a413","line":454,"range":{"start_line":454,"start_character":35,"end_line":454,"end_character":36},"in_reply_to":"5f7c97a3_8c8b52be","updated":"2018-06-04 18:55:28.000000000","message":"Done","commit_id":"33d37fc22fc4cb8d6b3017c5d67cd64f80183c07"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"789e9fe61f6a007007bf8b4bd41cf3e938859453","unresolved":false,"context_lines":[{"line_number":455,"context_line":""},{"line_number":456,"context_line":"    resources:PCPU\u003d8"},{"line_number":457,"context_line":""},{"line_number":458,"context_line":"2a) A database server requires 8 CPU resources, and the workload needs"},{"line_number":459,"context_line":"dedicated CPU resources to minimize effects of other workloads hosted on the"},{"line_number":460,"context_line":"same hardware. The deployer wishes to indicate that those dedicated CPU"},{"line_number":461,"context_line":"resources may be served by the same resources provider or different resource"}],"source_content_type":"text/x-rst","patch_set":11,"id":"5f7c97a3_992716c8","line":458,"range":{"start_line":458,"start_character":1,"end_line":458,"end_character":2},"updated":"2018-05-30 21:57:50.000000000","message":"b","commit_id":"33d37fc22fc4cb8d6b3017c5d67cd64f80183c07"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"843524c2eb2308189d8c5755d8a9055d8ec28ce0","unresolved":false,"context_lines":[{"line_number":455,"context_line":""},{"line_number":456,"context_line":"    resources:PCPU\u003d8"},{"line_number":457,"context_line":""},{"line_number":458,"context_line":"2a) A database server requires 8 CPU resources, and the workload needs"},{"line_number":459,"context_line":"dedicated CPU resources to minimize effects of other workloads hosted on the"},{"line_number":460,"context_line":"same hardware. The deployer wishes to indicate that those dedicated CPU"},{"line_number":461,"context_line":"resources may be served by the same resources provider or different resource"}],"source_content_type":"text/x-rst","patch_set":11,"id":"5f7c97a3_52810cfb","line":458,"range":{"start_line":458,"start_character":1,"end_line":458,"end_character":2},"in_reply_to":"5f7c97a3_992716c8","updated":"2018-06-04 18:55:28.000000000","message":"Done","commit_id":"33d37fc22fc4cb8d6b3017c5d67cd64f80183c07"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"789e9fe61f6a007007bf8b4bd41cf3e938859453","unresolved":false,"context_lines":[{"line_number":458,"context_line":"2a) A database server requires 8 CPU resources, and the workload needs"},{"line_number":459,"context_line":"dedicated CPU resources to minimize effects of other workloads hosted on the"},{"line_number":460,"context_line":"same hardware. The deployer wishes to indicate that those dedicated CPU"},{"line_number":461,"context_line":"resources may be served by the same resources provider or different resource"},{"line_number":462,"context_line":"providers within the same provider tree (i.e. different NUMA nodes that are"},{"line_number":463,"context_line":"child providers of a single root compute node provider)::"},{"line_number":464,"context_line":""}],"source_content_type":"text/x-rst","patch_set":11,"id":"5f7c97a3_2cc0fee0","line":461,"range":{"start_line":461,"start_character":44,"end_line":461,"end_character":45},"updated":"2018-05-30 21:57:50.000000000","message":"strike","commit_id":"33d37fc22fc4cb8d6b3017c5d67cd64f80183c07"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"843524c2eb2308189d8c5755d8a9055d8ec28ce0","unresolved":false,"context_lines":[{"line_number":458,"context_line":"2a) A database server requires 8 CPU resources, and the workload needs"},{"line_number":459,"context_line":"dedicated CPU resources to minimize effects of other workloads hosted on the"},{"line_number":460,"context_line":"same hardware. The deployer wishes to indicate that those dedicated CPU"},{"line_number":461,"context_line":"resources may be served by the same resources provider or different resource"},{"line_number":462,"context_line":"providers within the same provider tree (i.e. different NUMA nodes that are"},{"line_number":463,"context_line":"child providers of a single root compute node provider)::"},{"line_number":464,"context_line":""}],"source_content_type":"text/x-rst","patch_set":11,"id":"5f7c97a3_72868816","line":461,"range":{"start_line":461,"start_character":44,"end_line":461,"end_character":45},"in_reply_to":"5f7c97a3_2cc0fee0","updated":"2018-06-04 18:55:28.000000000","message":"Done","commit_id":"33d37fc22fc4cb8d6b3017c5d67cd64f80183c07"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"d42210a3b1cbaf916338a2633ed8706d510a3751","unresolved":false,"context_lines":[{"line_number":475,"context_line":"3) A virtual network function running a packet-core processing application"},{"line_number":476,"context_line":"requires 12 CPU resources. 10 of those CPU resources should be pinned to"},{"line_number":477,"context_line":"physical host CPUs. 2 of those CPU resources may be placed on host CPUs that"},{"line_number":478,"context_line":"other guests share. The VNF specifies that the dedicated CPUs it receives"},{"line_number":479,"context_line":"should *not* be hyperthread siblings (in other words, it wants full cores for"},{"line_number":480,"context_line":"its dedicated CPU resources)::"},{"line_number":481,"context_line":""}],"source_content_type":"text/x-rst","patch_set":11,"id":"5f7c97a3_a864d1b9","line":478,"range":{"start_line":478,"start_character":47,"end_line":478,"end_character":56},"updated":"2018-06-01 20:15:08.000000000","message":"delete\nsee comment 484","commit_id":"33d37fc22fc4cb8d6b3017c5d67cd64f80183c07"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"789e9fe61f6a007007bf8b4bd41cf3e938859453","unresolved":false,"context_lines":[{"line_number":479,"context_line":"should *not* be hyperthread siblings (in other words, it wants full cores for"},{"line_number":480,"context_line":"its dedicated CPU resources)::"},{"line_number":481,"context_line":""},{"line_number":482,"context_line":"    resources:PCPU\u003d10"},{"line_number":483,"context_line":"    resources:VCPU\u003d2"},{"line_number":484,"context_line":"    trait:HW_CPU_HYPERTHREADING\u003dforbidden"},{"line_number":485,"context_line":""},{"line_number":486,"context_line":"4) A virtual radio access network function needs 16 CPU resources, all of which"}],"source_content_type":"text/x-rst","patch_set":11,"id":"5f7c97a3_ccae2a2d","line":483,"range":{"start_line":482,"start_character":4,"end_line":483,"end_character":20},"updated":"2018-05-30 21:57:50.000000000","message":"These may wind up on separate providers.  That okay?","commit_id":"33d37fc22fc4cb8d6b3017c5d67cd64f80183c07"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"843524c2eb2308189d8c5755d8a9055d8ec28ce0","unresolved":false,"context_lines":[{"line_number":479,"context_line":"should *not* be hyperthread siblings (in other words, it wants full cores for"},{"line_number":480,"context_line":"its dedicated CPU resources)::"},{"line_number":481,"context_line":""},{"line_number":482,"context_line":"    resources:PCPU\u003d10"},{"line_number":483,"context_line":"    resources:VCPU\u003d2"},{"line_number":484,"context_line":"    trait:HW_CPU_HYPERTHREADING\u003dforbidden"},{"line_number":485,"context_line":""},{"line_number":486,"context_line":"4) A virtual radio access network function needs 16 CPU resources, all of which"}],"source_content_type":"text/x-rst","patch_set":11,"id":"5f7c97a3_92b564d3","line":483,"range":{"start_line":482,"start_character":4,"end_line":483,"end_character":20},"in_reply_to":"5f7c97a3_ccae2a2d","updated":"2018-06-04 18:55:28.000000000","message":"Yes. I can make that explicit.","commit_id":"33d37fc22fc4cb8d6b3017c5d67cd64f80183c07"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"d42210a3b1cbaf916338a2633ed8706d510a3751","unresolved":false,"context_lines":[{"line_number":479,"context_line":"should *not* be hyperthread siblings (in other words, it wants full cores for"},{"line_number":480,"context_line":"its dedicated CPU resources)::"},{"line_number":481,"context_line":""},{"line_number":482,"context_line":"    resources:PCPU\u003d10"},{"line_number":483,"context_line":"    resources:VCPU\u003d2"},{"line_number":484,"context_line":"    trait:HW_CPU_HYPERTHREADING\u003dforbidden"},{"line_number":485,"context_line":""},{"line_number":486,"context_line":"4) A virtual radio access network function needs 16 CPU resources, all of which"}],"source_content_type":"text/x-rst","patch_set":11,"id":"5f7c97a3_e84c0940","line":483,"range":{"start_line":482,"start_character":4,"end_line":483,"end_character":20},"in_reply_to":"5f7c97a3_ccae2a2d","updated":"2018-06-01 20:15:08.000000000","message":"based on the textual description there was no requirement that they come from the same provider expressed.","commit_id":"33d37fc22fc4cb8d6b3017c5d67cd64f80183c07"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"d42210a3b1cbaf916338a2633ed8706d510a3751","unresolved":false,"context_lines":[{"line_number":481,"context_line":""},{"line_number":482,"context_line":"    resources:PCPU\u003d10"},{"line_number":483,"context_line":"    resources:VCPU\u003d2"},{"line_number":484,"context_line":"    trait:HW_CPU_HYPERTHREADING\u003dforbidden"},{"line_number":485,"context_line":""},{"line_number":486,"context_line":"4) A virtual radio access network function needs 16 CPU resources, all of which"},{"line_number":487,"context_line":"require real-time guarantees and therefore dedicated host CPUs. The VNF vendor"}],"source_content_type":"text/x-rst","patch_set":11,"id":"5f7c97a3_48573dcb","line":484,"range":{"start_line":484,"start_character":4,"end_line":484,"end_character":41},"updated":"2018-06-01 20:15:08.000000000","message":"this trait will be applied to the shared cpus also not just the dedicated cpus unless you use granular request.","commit_id":"33d37fc22fc4cb8d6b3017c5d67cd64f80183c07"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"843524c2eb2308189d8c5755d8a9055d8ec28ce0","unresolved":false,"context_lines":[{"line_number":481,"context_line":""},{"line_number":482,"context_line":"    resources:PCPU\u003d10"},{"line_number":483,"context_line":"    resources:VCPU\u003d2"},{"line_number":484,"context_line":"    trait:HW_CPU_HYPERTHREADING\u003dforbidden"},{"line_number":485,"context_line":""},{"line_number":486,"context_line":"4) A virtual radio access network function needs 16 CPU resources, all of which"},{"line_number":487,"context_line":"require real-time guarantees and therefore dedicated host CPUs. The VNF vendor"}],"source_content_type":"text/x-rst","patch_set":11,"id":"5f7c97a3_52e4ace0","line":484,"range":{"start_line":484,"start_character":4,"end_line":484,"end_character":41},"in_reply_to":"5f7c97a3_48573dcb","updated":"2018-06-04 18:55:28.000000000","message":"traits aren\u0027t applied to resources. they are applied to the providers of those resources. I added a comment to make it explicit that in this particular scenario, there\u0027s no requirement that the CPU resources be provided by the same resource provider.","commit_id":"33d37fc22fc4cb8d6b3017c5d67cd64f80183c07"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"9579ad3859f2a4fb2dd1da1583cfbe2ee43ab971","unresolved":false,"context_lines":[{"line_number":484,"context_line":"    trait:HW_CPU_HYPERTHREADING\u003dforbidden"},{"line_number":485,"context_line":""},{"line_number":486,"context_line":"4) A virtual radio access network function needs 16 CPU resources, all of which"},{"line_number":487,"context_line":"require real-time guarantees and therefore dedicated host CPUs. The VNF vendor"},{"line_number":488,"context_line":"states that the host system should have multiple SR-IOV-enabled physical"},{"line_number":489,"context_line":"functions, each of which are associated with a different NUMA node (for"},{"line_number":490,"context_line":"affinity purposes) and that the 16 dedicated CPU resources should be evenly"}],"source_content_type":"text/x-rst","patch_set":11,"id":"5f7c97a3_4d0bb47c","line":487,"updated":"2018-06-04 12:40:05.000000000","message":"When a vnf vendor states these requirements they are usually specifying the virtual topology not the host topology. I expand on this on line 503.","commit_id":"33d37fc22fc4cb8d6b3017c5d67cd64f80183c07"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"789e9fe61f6a007007bf8b4bd41cf3e938859453","unresolved":false,"context_lines":[{"line_number":488,"context_line":"states that the host system should have multiple SR-IOV-enabled physical"},{"line_number":489,"context_line":"functions, each of which are associated with a different NUMA node (for"},{"line_number":490,"context_line":"affinity purposes) and that the 16 dedicated CPU resources should be evenly"},{"line_number":491,"context_line":"distributed between the two NUMA nodes on which 2 SR-IOV virtual functions are"},{"line_number":492,"context_line":"associated with. The VNF vendor states that the CPU resources can tolerate"},{"line_number":493,"context_line":"being on hyperthread siblings and the deployer would like to pack the VNFs"},{"line_number":494,"context_line":"dedicated CPU resources onto as few physical cores as possible (therefore"},{"line_number":495,"context_line":"requires the target host to support hyperthreading)::"}],"source_content_type":"text/x-rst","patch_set":11,"id":"5f7c97a3_4c68daf3","line":492,"range":{"start_line":491,"start_character":39,"end_line":492,"end_character":15},"updated":"2018-05-30 21:57:50.000000000","message":"with which 2 SR-IOV virtual functions are associated.  ?","commit_id":"33d37fc22fc4cb8d6b3017c5d67cd64f80183c07"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"d42210a3b1cbaf916338a2633ed8706d510a3751","unresolved":false,"context_lines":[{"line_number":488,"context_line":"states that the host system should have multiple SR-IOV-enabled physical"},{"line_number":489,"context_line":"functions, each of which are associated with a different NUMA node (for"},{"line_number":490,"context_line":"affinity purposes) and that the 16 dedicated CPU resources should be evenly"},{"line_number":491,"context_line":"distributed between the two NUMA nodes on which 2 SR-IOV virtual functions are"},{"line_number":492,"context_line":"associated with. The VNF vendor states that the CPU resources can tolerate"},{"line_number":493,"context_line":"being on hyperthread siblings and the deployer would like to pack the VNFs"},{"line_number":494,"context_line":"dedicated CPU resources onto as few physical cores as possible (therefore"},{"line_number":495,"context_line":"requires the target host to support hyperthreading)::"}],"source_content_type":"text/x-rst","patch_set":11,"id":"5f7c97a3_88a235ad","line":492,"range":{"start_line":491,"start_character":39,"end_line":492,"end_character":15},"in_reply_to":"5f7c97a3_4c68daf3","updated":"2018-06-01 20:15:08.000000000","message":"+1","commit_id":"33d37fc22fc4cb8d6b3017c5d67cd64f80183c07"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"843524c2eb2308189d8c5755d8a9055d8ec28ce0","unresolved":false,"context_lines":[{"line_number":488,"context_line":"states that the host system should have multiple SR-IOV-enabled physical"},{"line_number":489,"context_line":"functions, each of which are associated with a different NUMA node (for"},{"line_number":490,"context_line":"affinity purposes) and that the 16 dedicated CPU resources should be evenly"},{"line_number":491,"context_line":"distributed between the two NUMA nodes on which 2 SR-IOV virtual functions are"},{"line_number":492,"context_line":"associated with. The VNF vendor states that the CPU resources can tolerate"},{"line_number":493,"context_line":"being on hyperthread siblings and the deployer would like to pack the VNFs"},{"line_number":494,"context_line":"dedicated CPU resources onto as few physical cores as possible (therefore"},{"line_number":495,"context_line":"requires the target host to support hyperthreading)::"}],"source_content_type":"text/x-rst","patch_set":11,"id":"5f7c97a3_b22d00ff","line":492,"range":{"start_line":491,"start_character":39,"end_line":492,"end_character":15},"in_reply_to":"5f7c97a3_4c68daf3","updated":"2018-06-04 18:55:28.000000000","message":"Done","commit_id":"33d37fc22fc4cb8d6b3017c5d67cd64f80183c07"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"789e9fe61f6a007007bf8b4bd41cf3e938859453","unresolved":false,"context_lines":[{"line_number":490,"context_line":"affinity purposes) and that the 16 dedicated CPU resources should be evenly"},{"line_number":491,"context_line":"distributed between the two NUMA nodes on which 2 SR-IOV virtual functions are"},{"line_number":492,"context_line":"associated with. The VNF vendor states that the CPU resources can tolerate"},{"line_number":493,"context_line":"being on hyperthread siblings and the deployer would like to pack the VNFs"},{"line_number":494,"context_line":"dedicated CPU resources onto as few physical cores as possible (therefore"},{"line_number":495,"context_line":"requires the target host to support hyperthreading)::"},{"line_number":496,"context_line":""}],"source_content_type":"text/x-rst","patch_set":11,"id":"5f7c97a3_ec6a06eb","line":493,"range":{"start_line":493,"start_character":70,"end_line":493,"end_character":74},"updated":"2018-05-30 21:57:50.000000000","message":"VNF\u0027s","commit_id":"33d37fc22fc4cb8d6b3017c5d67cd64f80183c07"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"d42210a3b1cbaf916338a2633ed8706d510a3751","unresolved":false,"context_lines":[{"line_number":490,"context_line":"affinity purposes) and that the 16 dedicated CPU resources should be evenly"},{"line_number":491,"context_line":"distributed between the two NUMA nodes on which 2 SR-IOV virtual functions are"},{"line_number":492,"context_line":"associated with. The VNF vendor states that the CPU resources can tolerate"},{"line_number":493,"context_line":"being on hyperthread siblings and the deployer would like to pack the VNFs"},{"line_number":494,"context_line":"dedicated CPU resources onto as few physical cores as possible (therefore"},{"line_number":495,"context_line":"requires the target host to support hyperthreading)::"},{"line_number":496,"context_line":""}],"source_content_type":"text/x-rst","patch_set":11,"id":"5f7c97a3_888b151d","line":493,"range":{"start_line":493,"start_character":70,"end_line":493,"end_character":74},"in_reply_to":"5f7c97a3_ec6a06eb","updated":"2018-06-01 20:15:08.000000000","message":"+1","commit_id":"33d37fc22fc4cb8d6b3017c5d67cd64f80183c07"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"843524c2eb2308189d8c5755d8a9055d8ec28ce0","unresolved":false,"context_lines":[{"line_number":490,"context_line":"affinity purposes) and that the 16 dedicated CPU resources should be evenly"},{"line_number":491,"context_line":"distributed between the two NUMA nodes on which 2 SR-IOV virtual functions are"},{"line_number":492,"context_line":"associated with. The VNF vendor states that the CPU resources can tolerate"},{"line_number":493,"context_line":"being on hyperthread siblings and the deployer would like to pack the VNFs"},{"line_number":494,"context_line":"dedicated CPU resources onto as few physical cores as possible (therefore"},{"line_number":495,"context_line":"requires the target host to support hyperthreading)::"},{"line_number":496,"context_line":""}],"source_content_type":"text/x-rst","patch_set":11,"id":"5f7c97a3_52326c60","line":493,"range":{"start_line":493,"start_character":70,"end_line":493,"end_character":74},"in_reply_to":"5f7c97a3_ec6a06eb","updated":"2018-06-04 18:55:28.000000000","message":"Done","commit_id":"33d37fc22fc4cb8d6b3017c5d67cd64f80183c07"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"67c716dbb6e94272d9244e61439b24ead5a9b017","unresolved":false,"context_lines":[{"line_number":483,"context_line":"    resources:VCPU\u003d2"},{"line_number":484,"context_line":"    trait:HW_CPU_HYPERTHREADING\u003dforbidden"},{"line_number":485,"context_line":""},{"line_number":486,"context_line":"4) A virtual radio access network function needs 16 CPU resources, all of which"},{"line_number":487,"context_line":"require real-time guarantees and therefore dedicated host CPUs. The VNF vendor"},{"line_number":488,"context_line":"states that the host system should have multiple SR-IOV-enabled physical"},{"line_number":489,"context_line":"functions, each of which are associated with a different NUMA node (for"},{"line_number":490,"context_line":"affinity purposes) and that the 16 dedicated CPU resources should be evenly"},{"line_number":491,"context_line":"distributed between the two NUMA nodes on which 2 SR-IOV virtual functions are"},{"line_number":492,"context_line":"associated with. The VNF vendor states that the CPU resources can tolerate"},{"line_number":493,"context_line":"being on hyperthread siblings and the deployer would like to pack the VNFs"},{"line_number":494,"context_line":"dedicated CPU resources onto as few physical cores as possible (therefore"},{"line_number":495,"context_line":"requires the target host to support hyperthreading)::"},{"line_number":496,"context_line":""},{"line_number":497,"context_line":"    resources1:PCPU\u003d8"},{"line_number":498,"context_line":"    resources1:SRIOV_NET_VF\u003d1"},{"line_number":499,"context_line":"    trait1:HW_CPU_HYPERTHREADING\u003drequired"},{"line_number":500,"context_line":"    resources2:PCPU\u003d8"},{"line_number":501,"context_line":"    resources2:SRIOV_NET_VF\u003d1"},{"line_number":502,"context_line":"    trait2:HW_CPU_HYPERTHREADING\u003drequired"},{"line_number":503,"context_line":"    group_policy\u003disolate"},{"line_number":504,"context_line":""},{"line_number":505,"context_line":".. note::"},{"line_number":506,"context_line":""}],"source_content_type":"text/x-rst","patch_set":11,"id":"5f7c97a3_4f8a03bf","line":503,"range":{"start_line":486,"start_character":0,"end_line":503,"end_character":24},"updated":"2018-05-31 10:44:00.000000000","message":"As above, this needs a big warning saying this will not work in the initial implementation. IMO if this wasn\u0027t initially clear to me, it\u0027s certainly not going to be clear for others.","commit_id":"33d37fc22fc4cb8d6b3017c5d67cd64f80183c07"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"843524c2eb2308189d8c5755d8a9055d8ec28ce0","unresolved":false,"context_lines":[{"line_number":483,"context_line":"    resources:VCPU\u003d2"},{"line_number":484,"context_line":"    trait:HW_CPU_HYPERTHREADING\u003dforbidden"},{"line_number":485,"context_line":""},{"line_number":486,"context_line":"4) A virtual radio access network function needs 16 CPU resources, all of which"},{"line_number":487,"context_line":"require real-time guarantees and therefore dedicated host CPUs. The VNF vendor"},{"line_number":488,"context_line":"states that the host system should have multiple SR-IOV-enabled physical"},{"line_number":489,"context_line":"functions, each of which are associated with a different NUMA node (for"},{"line_number":490,"context_line":"affinity purposes) and that the 16 dedicated CPU resources should be evenly"},{"line_number":491,"context_line":"distributed between the two NUMA nodes on which 2 SR-IOV virtual functions are"},{"line_number":492,"context_line":"associated with. The VNF vendor states that the CPU resources can tolerate"},{"line_number":493,"context_line":"being on hyperthread siblings and the deployer would like to pack the VNFs"},{"line_number":494,"context_line":"dedicated CPU resources onto as few physical cores as possible (therefore"},{"line_number":495,"context_line":"requires the target host to support hyperthreading)::"},{"line_number":496,"context_line":""},{"line_number":497,"context_line":"    resources1:PCPU\u003d8"},{"line_number":498,"context_line":"    resources1:SRIOV_NET_VF\u003d1"},{"line_number":499,"context_line":"    trait1:HW_CPU_HYPERTHREADING\u003drequired"},{"line_number":500,"context_line":"    resources2:PCPU\u003d8"},{"line_number":501,"context_line":"    resources2:SRIOV_NET_VF\u003d1"},{"line_number":502,"context_line":"    trait2:HW_CPU_HYPERTHREADING\u003drequired"},{"line_number":503,"context_line":"    group_policy\u003disolate"},{"line_number":504,"context_line":""},{"line_number":505,"context_line":".. note::"},{"line_number":506,"context_line":""}],"source_content_type":"text/x-rst","patch_set":11,"id":"5f7c97a3_72ec488f","line":503,"range":{"start_line":486,"start_character":0,"end_line":503,"end_character":24},"in_reply_to":"5f7c97a3_480bbd7b","updated":"2018-06-04 18:55:28.000000000","message":"\u003e again i dissagree i think we need to supprurt this resource request\n \u003e as written above before we enable this feature\n \u003e however  it does not do what the text states for usecase 4\n \u003e \n \u003e but the more pressing comment.\n \u003e this request is spcifying a host topology\n \u003e of 2 pools of 8 PCPUs that are hyperthread siblings and 2 VF that\n \u003e come from different resouces providres.\n\nCorrect.\n\n \u003e this request however does not specify guest virtual cpu topology.\n \u003e assuming no other extra specs are set, with the libvirt driver the\n \u003e above would result in\n \u003e 16 vSockets each with 1 vCORE each with 1 vThread.\n\nMaybe. Maybe not. I don\u0027t really see how that is relevant to this spec, though. Again, this spec is not about virtual CPU topologies, NUMA topologies, CPU pinning or any of those things. It is *only* about how to request an amount of shared or dedicated guest CPUs to be provided by either the same or distinct resource providers.\n\n \u003e no numa topology has been requested for the guest\n \u003e the virt driver will only create a virtual numa nodes if one of the\n \u003e follow keys is added\n \u003e \n \u003e hw:numa_nodes\n \u003e hw:mem_page_size\n \u003e hw:cpu_policy\u003ddedicated (i think this one is a bug in the libvirt\n \u003e driver)\n\nThat isn\u0027t relevant to what is being discussed in this spec, though, which is *only* about how to request an amount of shared or dedicated guest CPUs to be provided by either the same or distinct resource providers.\n\n \u003e from a host numa perspective there is no way to ensure the VF are\n \u003e from different numa nodes. for example if i have a melonox card and\n \u003e an intel card that both provide vf on numa node 0  then both would\n \u003e be different RPs as they would have different tratis.\n\nSure, but again, I don\u0027t see how that is related to requesting amounts of shared and/or dedicated guest CPU resources.\n\n \u003e finally to day all pci defices requested by the guest will be\n \u003e attached to guest numa socket 0 as we only create 1 pci root\n \u003e complex so withour default virtual numa cpu affinity impmenation it\n \u003e will be exposed to the guest as virtual numa node 0 for both vf\n \u003e regardless of the host numa affinity of the VF.\n\nMaybe this is true, but again I don\u0027t feel it is relevant to the request for amounts of guest CPU resources.\n\n \u003e we need to add the following extra specs to make this make sense\n \u003e \n \u003e hw:cpu_sockets\u003d2\n \u003e hw:cpu_threads\u003d2\n \u003e hw:cpu_cores\u003d4 (this is optional)\n \u003e hw:numa_nodes\u003d2 (the default cpu numa affinity will work)\n\nNo, this spec is only about the request for amounts of dedicated or shared guest CPU resources. It\u0027s not about requesting guest virtual CPU topologies, nor is it about NUMA attributes.\n\n \u003e there is no way to map the host numa affinity of the pci devices to\n \u003e guest numa nodes today without using the qemu q35 chipset which\n \u003e introudce support for pcie.\n\nAgain, not germane to this spec.\n\n \u003e a staw man sysntax to adress that requirement would be\n \u003e \n \u003e hw:chipset\u003dq35(i think there is a extra_spec for this)\n \u003e hw:pcie_roots\u003d2\n \u003e hw:pcie_root_affity\u003dhost(indicate the virt driver should attach the\n \u003e vf to the most correct virtual numa node)\n \u003e \n \u003e the vf affinity to virtual numa nodes is out of scope however of\n \u003e this spec. but the other 4 extra specs specifing the virtual cpu\n \u003e and numa topoloy are important.\n\nThat isn\u0027t the problem domain that this spec is attempting to address, and I am loathe to further complicate this spec with anything more than what is already here...","commit_id":"33d37fc22fc4cb8d6b3017c5d67cd64f80183c07"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"843524c2eb2308189d8c5755d8a9055d8ec28ce0","unresolved":false,"context_lines":[{"line_number":483,"context_line":"    resources:VCPU\u003d2"},{"line_number":484,"context_line":"    trait:HW_CPU_HYPERTHREADING\u003dforbidden"},{"line_number":485,"context_line":""},{"line_number":486,"context_line":"4) A virtual radio access network function needs 16 CPU resources, all of which"},{"line_number":487,"context_line":"require real-time guarantees and therefore dedicated host CPUs. The VNF vendor"},{"line_number":488,"context_line":"states that the host system should have multiple SR-IOV-enabled physical"},{"line_number":489,"context_line":"functions, each of which are associated with a different NUMA node (for"},{"line_number":490,"context_line":"affinity purposes) and that the 16 dedicated CPU resources should be evenly"},{"line_number":491,"context_line":"distributed between the two NUMA nodes on which 2 SR-IOV virtual functions are"},{"line_number":492,"context_line":"associated with. The VNF vendor states that the CPU resources can tolerate"},{"line_number":493,"context_line":"being on hyperthread siblings and the deployer would like to pack the VNFs"},{"line_number":494,"context_line":"dedicated CPU resources onto as few physical cores as possible (therefore"},{"line_number":495,"context_line":"requires the target host to support hyperthreading)::"},{"line_number":496,"context_line":""},{"line_number":497,"context_line":"    resources1:PCPU\u003d8"},{"line_number":498,"context_line":"    resources1:SRIOV_NET_VF\u003d1"},{"line_number":499,"context_line":"    trait1:HW_CPU_HYPERTHREADING\u003drequired"},{"line_number":500,"context_line":"    resources2:PCPU\u003d8"},{"line_number":501,"context_line":"    resources2:SRIOV_NET_VF\u003d1"},{"line_number":502,"context_line":"    trait2:HW_CPU_HYPERTHREADING\u003drequired"},{"line_number":503,"context_line":"    group_policy\u003disolate"},{"line_number":504,"context_line":""},{"line_number":505,"context_line":".. note::"},{"line_number":506,"context_line":""}],"source_content_type":"text/x-rst","patch_set":11,"id":"5f7c97a3_d2451cb6","line":503,"range":{"start_line":486,"start_character":0,"end_line":503,"end_character":24},"in_reply_to":"5f7c97a3_4f8a03bf","updated":"2018-06-04 18:55:28.000000000","message":"Done","commit_id":"33d37fc22fc4cb8d6b3017c5d67cd64f80183c07"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"d42210a3b1cbaf916338a2633ed8706d510a3751","unresolved":false,"context_lines":[{"line_number":483,"context_line":"    resources:VCPU\u003d2"},{"line_number":484,"context_line":"    trait:HW_CPU_HYPERTHREADING\u003dforbidden"},{"line_number":485,"context_line":""},{"line_number":486,"context_line":"4) A virtual radio access network function needs 16 CPU resources, all of which"},{"line_number":487,"context_line":"require real-time guarantees and therefore dedicated host CPUs. The VNF vendor"},{"line_number":488,"context_line":"states that the host system should have multiple SR-IOV-enabled physical"},{"line_number":489,"context_line":"functions, each of which are associated with a different NUMA node (for"},{"line_number":490,"context_line":"affinity purposes) and that the 16 dedicated CPU resources should be evenly"},{"line_number":491,"context_line":"distributed between the two NUMA nodes on which 2 SR-IOV virtual functions are"},{"line_number":492,"context_line":"associated with. The VNF vendor states that the CPU resources can tolerate"},{"line_number":493,"context_line":"being on hyperthread siblings and the deployer would like to pack the VNFs"},{"line_number":494,"context_line":"dedicated CPU resources onto as few physical cores as possible (therefore"},{"line_number":495,"context_line":"requires the target host to support hyperthreading)::"},{"line_number":496,"context_line":""},{"line_number":497,"context_line":"    resources1:PCPU\u003d8"},{"line_number":498,"context_line":"    resources1:SRIOV_NET_VF\u003d1"},{"line_number":499,"context_line":"    trait1:HW_CPU_HYPERTHREADING\u003drequired"},{"line_number":500,"context_line":"    resources2:PCPU\u003d8"},{"line_number":501,"context_line":"    resources2:SRIOV_NET_VF\u003d1"},{"line_number":502,"context_line":"    trait2:HW_CPU_HYPERTHREADING\u003drequired"},{"line_number":503,"context_line":"    group_policy\u003disolate"},{"line_number":504,"context_line":""},{"line_number":505,"context_line":".. note::"},{"line_number":506,"context_line":""}],"source_content_type":"text/x-rst","patch_set":11,"id":"5f7c97a3_480bbd7b","line":503,"range":{"start_line":486,"start_character":0,"end_line":503,"end_character":24},"in_reply_to":"5f7c97a3_4f8a03bf","updated":"2018-06-01 20:15:08.000000000","message":"again i dissagree i think we need to supprurt this resource request as written above before we enable this feature\nhowever  it does not do what the text states for usecase 4\n\nbut the more pressing comment.\nthis request is spcifying a host topology\nof 2 pools of 8 PCPUs that are hyperthread siblings and 2 VF that come from different resouces providres.\n\nthis request however does not specify guest virtual cpu topology. assuming no other extra specs are set, with the libvirt driver the above would result in \n16 vSockets each with 1 vCORE each with 1 vThread.\n\nno numa topology has been requested for the guest\nthe virt driver will only create a virtual numa nodes if one of the follow keys is added\n\nhw:numa_nodes\nhw:mem_page_size\nhw:cpu_policy\u003ddedicated (i think this one is a bug in the libvirt driver)\n\nfrom a host numa perspective there is no way to ensure the VF are from different numa nodes. for example if i have a melonox card and an intel card that both provide vf on numa node 0  then both would be different RPs as they would have different tratis.\n\nfinally to day all pci defices requested by the guest will be attached to guest numa socket 0 as we only create 1 pci root complex so withour default virtual numa cpu affinity impmenation it will be exposed to the guest as virtual numa node 0 for both vf regardless of the host numa affinity of the VF.\n\n\nwe need to add the following extra specs to make this make sense\n\nhw:cpu_sockets\u003d2\nhw:cpu_threads\u003d2\nhw:cpu_cores\u003d4 (this is optional)\nhw:numa_nodes\u003d2 (the default cpu numa affinity will work)\n\nthere is no way to map the host numa affinity of the pci devices to guest numa nodes today without using the qemu q35 chipset which introudce support for pcie.\n\na staw man sysntax to adress that requirement would be \n\nhw:chipset\u003dq35(i think there is a extra_spec for this)\nhw:pcie_roots\u003d2\nhw:pcie_root_affity\u003dhost(indicate the virt driver should attach the vf to the most correct virtual numa node)\n\nthe vf affinity to virtual numa nodes is out of scope however of this spec. but the other 4 extra specs specifing the virtual cpu and numa topoloy are important.\n\n-1 is specifically for this example by the way.","commit_id":"33d37fc22fc4cb8d6b3017c5d67cd64f80183c07"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"20e6f58e977265cb9b89a4cb31357b6b32d860ef","unresolved":false,"context_lines":[{"line_number":483,"context_line":"    resources:VCPU\u003d2"},{"line_number":484,"context_line":"    trait:HW_CPU_HYPERTHREADING\u003dforbidden"},{"line_number":485,"context_line":""},{"line_number":486,"context_line":"4) A virtual radio access network function needs 16 CPU resources, all of which"},{"line_number":487,"context_line":"require real-time guarantees and therefore dedicated host CPUs. The VNF vendor"},{"line_number":488,"context_line":"states that the host system should have multiple SR-IOV-enabled physical"},{"line_number":489,"context_line":"functions, each of which are associated with a different NUMA node (for"},{"line_number":490,"context_line":"affinity purposes) and that the 16 dedicated CPU resources should be evenly"},{"line_number":491,"context_line":"distributed between the two NUMA nodes on which 2 SR-IOV virtual functions are"},{"line_number":492,"context_line":"associated with. The VNF vendor states that the CPU resources can tolerate"},{"line_number":493,"context_line":"being on hyperthread siblings and the deployer would like to pack the VNFs"},{"line_number":494,"context_line":"dedicated CPU resources onto as few physical cores as possible (therefore"},{"line_number":495,"context_line":"requires the target host to support hyperthreading)::"},{"line_number":496,"context_line":""},{"line_number":497,"context_line":"    resources1:PCPU\u003d8"},{"line_number":498,"context_line":"    resources1:SRIOV_NET_VF\u003d1"},{"line_number":499,"context_line":"    trait1:HW_CPU_HYPERTHREADING\u003drequired"},{"line_number":500,"context_line":"    resources2:PCPU\u003d8"},{"line_number":501,"context_line":"    resources2:SRIOV_NET_VF\u003d1"},{"line_number":502,"context_line":"    trait2:HW_CPU_HYPERTHREADING\u003drequired"},{"line_number":503,"context_line":"    group_policy\u003disolate"},{"line_number":504,"context_line":""},{"line_number":505,"context_line":".. note::"},{"line_number":506,"context_line":""}],"source_content_type":"text/x-rst","patch_set":11,"id":"5f7c97a3_6830c7e9","line":503,"range":{"start_line":486,"start_character":0,"end_line":503,"end_character":24},"in_reply_to":"5f7c97a3_72ec488f","updated":"2018-06-05 10:57:47.000000000","message":"hi jay.\nyes i know them other refinements i suggested are out of scope of this spec. they are somewhat needed to fulfil the requirement in the textual description.\n\ni would be happy with what you had originally presented if the vnf requirements were explcitly stated in terms of host topology.\n\nin the host case your placement request looks good.","commit_id":"33d37fc22fc4cb8d6b3017c5d67cd64f80183c07"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"d42210a3b1cbaf916338a2633ed8706d510a3751","unresolved":false,"context_lines":[{"line_number":505,"context_line":".. note::"},{"line_number":506,"context_line":""},{"line_number":507,"context_line":"    You will note that the granular resource request groups only include the"},{"line_number":508,"context_line":"    total amount of physical CPU resources needed by each NUMA socket. It is"},{"line_number":509,"context_line":"    entirely up to the nova/virt/hardware.py module to **pin** the guest CPUs"},{"line_number":510,"context_line":"    to the host CPUs appropriately. The placement service will return those"},{"line_number":511,"context_line":"    provider trees that match the required amount of requested PCPU resources"}],"source_content_type":"text/x-rst","patch_set":11,"id":"5f7c97a3_a867f124","line":508,"range":{"start_line":508,"start_character":53,"end_line":508,"end_character":69},"updated":"2018-06-01 20:15:08.000000000","message":"please no.\n\neach numa node.\n\npeople confralte numa nodes and sockets enough as it is without introduces the there numa socket.","commit_id":"33d37fc22fc4cb8d6b3017c5d67cd64f80183c07"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"843524c2eb2308189d8c5755d8a9055d8ec28ce0","unresolved":false,"context_lines":[{"line_number":505,"context_line":".. note::"},{"line_number":506,"context_line":""},{"line_number":507,"context_line":"    You will note that the granular resource request groups only include the"},{"line_number":508,"context_line":"    total amount of physical CPU resources needed by each NUMA socket. It is"},{"line_number":509,"context_line":"    entirely up to the nova/virt/hardware.py module to **pin** the guest CPUs"},{"line_number":510,"context_line":"    to the host CPUs appropriately. The placement service will return those"},{"line_number":511,"context_line":"    provider trees that match the required amount of requested PCPU resources"}],"source_content_type":"text/x-rst","patch_set":11,"id":"5f7c97a3_32fed038","line":508,"range":{"start_line":508,"start_character":53,"end_line":508,"end_character":69},"in_reply_to":"5f7c97a3_a867f124","updated":"2018-06-04 18:55:28.000000000","message":"Done","commit_id":"33d37fc22fc4cb8d6b3017c5d67cd64f80183c07"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"67c716dbb6e94272d9244e61439b24ead5a9b017","unresolved":false,"context_lines":[{"line_number":552,"context_line":"Performance Impact"},{"line_number":553,"context_line":"------------------"},{"line_number":554,"context_line":""},{"line_number":555,"context_line":"There should be a positive impact on performance due to the placement service"},{"line_number":556,"context_line":"being able to perform a good portion of the work that the"},{"line_number":557,"context_line":"``NUMATopologyFilter`` currently does. The ``NUMATopologyFilter`` would be"},{"line_number":558,"context_line":"trimmed down to only handling questions about whether a particular thread"},{"line_number":559,"context_line":"allocation policy (tolerance of hyperthreads) could be met by a compute node."},{"line_number":560,"context_line":"The number of ``HostInfo`` objects passed to the ``NUMATopologyFilter`` will"},{"line_number":561,"context_line":"have already been reduced to only those hosts which have the required number of"},{"line_number":562,"context_line":"dedicated and shared CPU resources."},{"line_number":563,"context_line":""},{"line_number":564,"context_line":"Other deployer impact"},{"line_number":565,"context_line":"---------------------"}],"source_content_type":"text/x-rst","patch_set":11,"id":"5f7c97a3_ef674f24","line":562,"range":{"start_line":555,"start_character":0,"end_line":562,"end_character":35},"updated":"2018-05-31 10:44:00.000000000","message":"Until NUMA is supported in placement, the NUMA topology filter is also going to be responsible for determining if enough the PCPUs placement allocated can be provided from a single NUMA node. For example, if a host has 24 CPUs split across 2 NUMA nodes (so 12 per node), placement would happily provide resources for a 14 core instance that NUMATopologyFilter will later have to reject. We _need_ to keep the \"all PCPUs on one NUMA node unless explicitly stated otherwise\" guarantee or you\u0027re going to break a lot of things.","commit_id":"33d37fc22fc4cb8d6b3017c5d67cd64f80183c07"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"843524c2eb2308189d8c5755d8a9055d8ec28ce0","unresolved":false,"context_lines":[{"line_number":552,"context_line":"Performance Impact"},{"line_number":553,"context_line":"------------------"},{"line_number":554,"context_line":""},{"line_number":555,"context_line":"There should be a positive impact on performance due to the placement service"},{"line_number":556,"context_line":"being able to perform a good portion of the work that the"},{"line_number":557,"context_line":"``NUMATopologyFilter`` currently does. The ``NUMATopologyFilter`` would be"},{"line_number":558,"context_line":"trimmed down to only handling questions about whether a particular thread"},{"line_number":559,"context_line":"allocation policy (tolerance of hyperthreads) could be met by a compute node."},{"line_number":560,"context_line":"The number of ``HostInfo`` objects passed to the ``NUMATopologyFilter`` will"},{"line_number":561,"context_line":"have already been reduced to only those hosts which have the required number of"},{"line_number":562,"context_line":"dedicated and shared CPU resources."},{"line_number":563,"context_line":""},{"line_number":564,"context_line":"Other deployer impact"},{"line_number":565,"context_line":"---------------------"}],"source_content_type":"text/x-rst","patch_set":11,"id":"5f7c97a3_726f68fc","line":562,"range":{"start_line":555,"start_character":0,"end_line":562,"end_character":35},"in_reply_to":"5f7c97a3_33b3560c","updated":"2018-06-04 18:55:28.000000000","message":"\u003e the NUMA topology filter will always be required to do the more\n \u003e granlar pinning as placement will only check that there are enough\n \u003e cpus in a resouce provide it wont check thinks such as are they\n \u003e hyperthreads for the tread policy stuff.\n\nI am proposing a HW_CPU_HYPERTHREADING trait in this spec...\n\n \u003e today we translateing the flavor vcpu field to resouces:VPUS\u003dX\n \u003e here:\n \u003e https://github.com/openstack/nova/blob/20b99f6998c088650b0c0cb066cc6aac3e5f9312/nova/scheduler/utils.py#L358\n \u003e \n \u003e if we do the same thing for hw:cpu_policy\u003ddedicated\n \u003e simply subsituting resource:vCPU for resouce:pCPU we will still\n \u003e filter placement reqiureing all X cpus come from the same resouce\n \u003e provider.\n \u003e \n \u003e if the operator explictly overrides that behavior by\n \u003e setting granular requests in the flavor explcitily then the numa\n \u003e toplogy filter will have to be updated to supprot that as\n \u003e \n \u003e https://github.com/openstack/nova/blob/20b99f6998c088650b0c0cb066cc6aac3e5f9312/nova/scheduler/utils.py#L362-L369\n \u003e \n \u003e will replase our auto generated defaults with the user specifed\n \u003e ones.\n\nI\u0027m really unsure what the above is saying, Sean. Can you elaborate a bit?","commit_id":"33d37fc22fc4cb8d6b3017c5d67cd64f80183c07"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"20e6f58e977265cb9b89a4cb31357b6b32d860ef","unresolved":false,"context_lines":[{"line_number":552,"context_line":"Performance Impact"},{"line_number":553,"context_line":"------------------"},{"line_number":554,"context_line":""},{"line_number":555,"context_line":"There should be a positive impact on performance due to the placement service"},{"line_number":556,"context_line":"being able to perform a good portion of the work that the"},{"line_number":557,"context_line":"``NUMATopologyFilter`` currently does. The ``NUMATopologyFilter`` would be"},{"line_number":558,"context_line":"trimmed down to only handling questions about whether a particular thread"},{"line_number":559,"context_line":"allocation policy (tolerance of hyperthreads) could be met by a compute node."},{"line_number":560,"context_line":"The number of ``HostInfo`` objects passed to the ``NUMATopologyFilter`` will"},{"line_number":561,"context_line":"have already been reduced to only those hosts which have the required number of"},{"line_number":562,"context_line":"dedicated and shared CPU resources."},{"line_number":563,"context_line":""},{"line_number":564,"context_line":"Other deployer impact"},{"line_number":565,"context_line":"---------------------"}],"source_content_type":"text/x-rst","patch_set":11,"id":"5f7c97a3_88da0377","line":562,"range":{"start_line":555,"start_character":0,"end_line":562,"end_character":35},"in_reply_to":"5f7c97a3_726f68fc","updated":"2018-06-05 10:57:47.000000000","message":"regarding HW_CPU_HYPERTHREADING i was more eluding to the fact that with the hw:cpu_thread_policy\u003drequire we have some additional assignment/pinning constraints that must be fulfilled that will require the numa topology filter to address.\n\nthe rest was trying to explain that if we auto translate flavor.vcpus\u003dx to resouce.vcpus\u003dx or resouce.pcpus\u003dx as we do\nhere https://github.com/openstack/nova/blob/20b99f6998c088650b0c0cb066cc6aac3e5f9312/nova/scheduler/utils.py#L358 it will result in a request for all cpus to be in one resouce provider by default. \n\ntechnically it would\nhave to take account of the hw:numa_* extra spects to do the translation correctly. in any case i dont think we have an issue with requireing all pCPUs to be allocated from 1 or multiple resouce providers. what you propose is flexablie enough for both.","commit_id":"33d37fc22fc4cb8d6b3017c5d67cd64f80183c07"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"18f8b75915028e243417898d303d7275f975acfe","unresolved":false,"context_lines":[{"line_number":552,"context_line":"Performance Impact"},{"line_number":553,"context_line":"------------------"},{"line_number":554,"context_line":""},{"line_number":555,"context_line":"There should be a positive impact on performance due to the placement service"},{"line_number":556,"context_line":"being able to perform a good portion of the work that the"},{"line_number":557,"context_line":"``NUMATopologyFilter`` currently does. The ``NUMATopologyFilter`` would be"},{"line_number":558,"context_line":"trimmed down to only handling questions about whether a particular thread"},{"line_number":559,"context_line":"allocation policy (tolerance of hyperthreads) could be met by a compute node."},{"line_number":560,"context_line":"The number of ``HostInfo`` objects passed to the ``NUMATopologyFilter`` will"},{"line_number":561,"context_line":"have already been reduced to only those hosts which have the required number of"},{"line_number":562,"context_line":"dedicated and shared CPU resources."},{"line_number":563,"context_line":""},{"line_number":564,"context_line":"Other deployer impact"},{"line_number":565,"context_line":"---------------------"}],"source_content_type":"text/x-rst","patch_set":11,"id":"5f7c97a3_22e42b3c","line":562,"range":{"start_line":555,"start_character":0,"end_line":562,"end_character":35},"in_reply_to":"5f7c97a3_88da0377","updated":"2018-06-05 13:00:23.000000000","message":"ok, thx for the explanation, Sean, that makes sense.","commit_id":"33d37fc22fc4cb8d6b3017c5d67cd64f80183c07"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"843524c2eb2308189d8c5755d8a9055d8ec28ce0","unresolved":false,"context_lines":[{"line_number":552,"context_line":"Performance Impact"},{"line_number":553,"context_line":"------------------"},{"line_number":554,"context_line":""},{"line_number":555,"context_line":"There should be a positive impact on performance due to the placement service"},{"line_number":556,"context_line":"being able to perform a good portion of the work that the"},{"line_number":557,"context_line":"``NUMATopologyFilter`` currently does. The ``NUMATopologyFilter`` would be"},{"line_number":558,"context_line":"trimmed down to only handling questions about whether a particular thread"},{"line_number":559,"context_line":"allocation policy (tolerance of hyperthreads) could be met by a compute node."},{"line_number":560,"context_line":"The number of ``HostInfo`` objects passed to the ``NUMATopologyFilter`` will"},{"line_number":561,"context_line":"have already been reduced to only those hosts which have the required number of"},{"line_number":562,"context_line":"dedicated and shared CPU resources."},{"line_number":563,"context_line":""},{"line_number":564,"context_line":"Other deployer impact"},{"line_number":565,"context_line":"---------------------"}],"source_content_type":"text/x-rst","patch_set":11,"id":"5f7c97a3_328330ac","line":562,"range":{"start_line":555,"start_character":0,"end_line":562,"end_character":35},"in_reply_to":"5f7c97a3_ef674f24","updated":"2018-06-04 18:55:28.000000000","message":"\u003e Until NUMA is supported in placement\n\nI think you meant \"until compute nodes model different NUMA nodes as child resource providers in a provider tree...\"? Or are you referring to allocation candidates being aware of nested resource providers?","commit_id":"33d37fc22fc4cb8d6b3017c5d67cd64f80183c07"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"d42210a3b1cbaf916338a2633ed8706d510a3751","unresolved":false,"context_lines":[{"line_number":552,"context_line":"Performance Impact"},{"line_number":553,"context_line":"------------------"},{"line_number":554,"context_line":""},{"line_number":555,"context_line":"There should be a positive impact on performance due to the placement service"},{"line_number":556,"context_line":"being able to perform a good portion of the work that the"},{"line_number":557,"context_line":"``NUMATopologyFilter`` currently does. The ``NUMATopologyFilter`` would be"},{"line_number":558,"context_line":"trimmed down to only handling questions about whether a particular thread"},{"line_number":559,"context_line":"allocation policy (tolerance of hyperthreads) could be met by a compute node."},{"line_number":560,"context_line":"The number of ``HostInfo`` objects passed to the ``NUMATopologyFilter`` will"},{"line_number":561,"context_line":"have already been reduced to only those hosts which have the required number of"},{"line_number":562,"context_line":"dedicated and shared CPU resources."},{"line_number":563,"context_line":""},{"line_number":564,"context_line":"Other deployer impact"},{"line_number":565,"context_line":"---------------------"}],"source_content_type":"text/x-rst","patch_set":11,"id":"5f7c97a3_33b3560c","line":562,"range":{"start_line":555,"start_character":0,"end_line":562,"end_character":35},"in_reply_to":"5f7c97a3_ef674f24","updated":"2018-06-01 20:15:08.000000000","message":"the NUMA topology filter will always be required to do the more granlar pinning as placement will only check that there are enough cpus in a resouce provide it wont check thinks such as are they hyperthreads for the tread policy stuff.\n\ntoday we translateing the flavor vcpu field to resouces:VPUS\u003dX here: \nhttps://github.com/openstack/nova/blob/20b99f6998c088650b0c0cb066cc6aac3e5f9312/nova/scheduler/utils.py#L358\n\nif we do the same thing for hw:cpu_policy\u003ddedicated\nsimply subsituting resource:vCPU for resouce:pCPU we will still filter placement reqiureing all X cpus come from the same resouce provider.\n\nif the operator explictly overrides that behavior by \nsetting granular requests in the flavor explcitily then the numa toplogy filter will have to be updated to supprot that as \n\nhttps://github.com/openstack/nova/blob/20b99f6998c088650b0c0cb066cc6aac3e5f9312/nova/scheduler/utils.py#L362-L369\n\nwill replase our auto generated defaults with the user specifed ones.","commit_id":"33d37fc22fc4cb8d6b3017c5d67cd64f80183c07"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"789e9fe61f6a007007bf8b4bd41cf3e938859453","unresolved":false,"context_lines":[{"line_number":566,"context_line":""},{"line_number":567,"context_line":"Primarily, the impact on deployers will be documentation-related. Good"},{"line_number":568,"context_line":"documentation needs to be provided that, like the above example flavor"},{"line_number":569,"context_line":"configurations, shows operators what resources extra specs to configure in"},{"line_number":570,"context_line":"order to get a particular behavior and which configuration options have"},{"line_number":571,"context_line":"changed."},{"line_number":572,"context_line":""}],"source_content_type":"text/x-rst","patch_set":11,"id":"5f7c97a3_4c51ba35","line":569,"range":{"start_line":569,"start_character":37,"end_line":569,"end_character":46},"updated":"2018-05-30 21:57:50.000000000","message":"and traits","commit_id":"33d37fc22fc4cb8d6b3017c5d67cd64f80183c07"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"843524c2eb2308189d8c5755d8a9055d8ec28ce0","unresolved":false,"context_lines":[{"line_number":566,"context_line":""},{"line_number":567,"context_line":"Primarily, the impact on deployers will be documentation-related. Good"},{"line_number":568,"context_line":"documentation needs to be provided that, like the above example flavor"},{"line_number":569,"context_line":"configurations, shows operators what resources extra specs to configure in"},{"line_number":570,"context_line":"order to get a particular behavior and which configuration options have"},{"line_number":571,"context_line":"changed."},{"line_number":572,"context_line":""}],"source_content_type":"text/x-rst","patch_set":11,"id":"5f7c97a3_1274f4cf","line":569,"range":{"start_line":569,"start_character":37,"end_line":569,"end_character":46},"in_reply_to":"5f7c97a3_4c51ba35","updated":"2018-06-04 18:55:28.000000000","message":"Done","commit_id":"33d37fc22fc4cb8d6b3017c5d67cd64f80183c07"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"67c716dbb6e94272d9244e61439b24ead5a9b017","unresolved":false,"context_lines":[{"line_number":578,"context_line":"Upgrade impact"},{"line_number":579,"context_line":"--------------"},{"line_number":580,"context_line":""},{"line_number":581,"context_line":"Need to think through this well. There are quite a few existing CONF options"},{"line_number":582,"context_line":"and extra specs that control pinning behavior. While this proposal reduces this"},{"line_number":583,"context_line":"list and makes them consistent, we still need to keep code around"},{"line_number":584,"context_line":"nova/virt/hardware.py to handle old options and extra specs. A first step in"},{"line_number":585,"context_line":"handling this will be to refactor any code in nova/virt/hardware.py that"},{"line_number":586,"context_line":"references hard-coded extra specs or CONF options and turn those references"},{"line_number":587,"context_line":"into parameters to functions."},{"line_number":588,"context_line":""},{"line_number":589,"context_line":"Implementation"},{"line_number":590,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":11,"id":"5f7c97a3_af6dd703","line":587,"range":{"start_line":581,"start_character":0,"end_line":587,"end_character":29},"updated":"2018-05-31 10:44:00.000000000","message":"Stiiiiill waiting on info on how we plan to migrate older non-placement pinned instances to this new world. Live migration may not be an issue but cold migration will be","commit_id":"33d37fc22fc4cb8d6b3017c5d67cd64f80183c07"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"843524c2eb2308189d8c5755d8a9055d8ec28ce0","unresolved":false,"context_lines":[{"line_number":578,"context_line":"Upgrade impact"},{"line_number":579,"context_line":"--------------"},{"line_number":580,"context_line":""},{"line_number":581,"context_line":"Need to think through this well. There are quite a few existing CONF options"},{"line_number":582,"context_line":"and extra specs that control pinning behavior. While this proposal reduces this"},{"line_number":583,"context_line":"list and makes them consistent, we still need to keep code around"},{"line_number":584,"context_line":"nova/virt/hardware.py to handle old options and extra specs. A first step in"},{"line_number":585,"context_line":"handling this will be to refactor any code in nova/virt/hardware.py that"},{"line_number":586,"context_line":"references hard-coded extra specs or CONF options and turn those references"},{"line_number":587,"context_line":"into parameters to functions."},{"line_number":588,"context_line":""},{"line_number":589,"context_line":"Implementation"},{"line_number":590,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":11,"id":"5f7c97a3_bdeb9110","line":587,"range":{"start_line":581,"start_character":0,"end_line":587,"end_character":29},"in_reply_to":"5f7c97a3_af6dd703","updated":"2018-06-04 18:55:28.000000000","message":"It\u0027s not really about pinned instance vs. non-pinned instances. Placement doesn\u0027t care about pinning. It only cares about amounts of resources.\n\nWe are putting together ideas for an HTTP API endpoint that would allow an operator (or the compute node resource tracker) to \"transform\" existing inventories and allocations from a pre-nested world to a post-nested world. One of the ideas being floated is around how to instruct placement to take, say, an allocation of 6 VCPU and convert that into, say, an allocation of 2 VCPU and 4 PCPU in a single transaction (along with the movement of inventory records for the providers involved).\n\nYou can see our thoughts on this migration API here:\n\nhttps://etherpad.openstack.org/p/placement-migrate-operations","commit_id":"33d37fc22fc4cb8d6b3017c5d67cd64f80183c07"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"d42210a3b1cbaf916338a2633ed8706d510a3751","unresolved":false,"context_lines":[{"line_number":578,"context_line":"Upgrade impact"},{"line_number":579,"context_line":"--------------"},{"line_number":580,"context_line":""},{"line_number":581,"context_line":"Need to think through this well. There are quite a few existing CONF options"},{"line_number":582,"context_line":"and extra specs that control pinning behavior. While this proposal reduces this"},{"line_number":583,"context_line":"list and makes them consistent, we still need to keep code around"},{"line_number":584,"context_line":"nova/virt/hardware.py to handle old options and extra specs. A first step in"},{"line_number":585,"context_line":"handling this will be to refactor any code in nova/virt/hardware.py that"},{"line_number":586,"context_line":"references hard-coded extra specs or CONF options and turn those references"},{"line_number":587,"context_line":"into parameters to functions."},{"line_number":588,"context_line":""},{"line_number":589,"context_line":"Implementation"},{"line_number":590,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":11,"id":"5f7c97a3_b3744637","line":587,"range":{"start_line":581,"start_character":0,"end_line":587,"end_character":29},"in_reply_to":"5f7c97a3_af6dd703","updated":"2018-06-01 20:15:08.000000000","message":"if im not mistakeng i taught someone was working on fixing live migration with cpu pinning for rocky seperatly.\n\ncold migration works as you said.\n\nalso as i said above we just need a minor update to \n\nhttps://github.com/openstack/nova/blob/20b99f6998c088650b0c0cb066cc6aac3e5f9312/nova/scheduler/utils.py#L358\n\nto use hw:cpu_policy to swap between the vcpu resouces class and pcpu resource class to make most existing flavours just work. that said hw:cpu_policy will be depreacated so people should really update there flavours.","commit_id":"33d37fc22fc4cb8d6b3017c5d67cd64f80183c07"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"dae08859b0b00b5f5b9adf242f2263f4c7e183db","unresolved":false,"context_lines":[{"line_number":578,"context_line":"Upgrade impact"},{"line_number":579,"context_line":"--------------"},{"line_number":580,"context_line":""},{"line_number":581,"context_line":"Need to think through this well. There are quite a few existing CONF options"},{"line_number":582,"context_line":"and extra specs that control pinning behavior. While this proposal reduces this"},{"line_number":583,"context_line":"list and makes them consistent, we still need to keep code around"},{"line_number":584,"context_line":"nova/virt/hardware.py to handle old options and extra specs. A first step in"},{"line_number":585,"context_line":"handling this will be to refactor any code in nova/virt/hardware.py that"},{"line_number":586,"context_line":"references hard-coded extra specs or CONF options and turn those references"},{"line_number":587,"context_line":"into parameters to functions."},{"line_number":588,"context_line":""},{"line_number":589,"context_line":"Implementation"},{"line_number":590,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":11,"id":"5f7c97a3_ed72a9ad","line":587,"range":{"start_line":581,"start_character":0,"end_line":587,"end_character":29},"in_reply_to":"5f7c97a3_bdeb9110","updated":"2018-06-05 10:06:46.000000000","message":"\u003e It\u0027s not really about pinned instance vs. non-pinned instances.\n \u003e Placement doesn\u0027t care about pinning. It only cares about amounts\n \u003e of resources.\n\nYeah, I was referring to the fact that we\u0027re eventually going to want to remove support for things like \u0027hw:cpu_policy\u0027. _This_ is what we need a migration path for. Sounds like the migration API is intended to handle just that.","commit_id":"33d37fc22fc4cb8d6b3017c5d67cd64f80183c07"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"20e6f58e977265cb9b89a4cb31357b6b32d860ef","unresolved":false,"context_lines":[{"line_number":578,"context_line":"Upgrade impact"},{"line_number":579,"context_line":"--------------"},{"line_number":580,"context_line":""},{"line_number":581,"context_line":"Need to think through this well. There are quite a few existing CONF options"},{"line_number":582,"context_line":"and extra specs that control pinning behavior. While this proposal reduces this"},{"line_number":583,"context_line":"list and makes them consistent, we still need to keep code around"},{"line_number":584,"context_line":"nova/virt/hardware.py to handle old options and extra specs. A first step in"},{"line_number":585,"context_line":"handling this will be to refactor any code in nova/virt/hardware.py that"},{"line_number":586,"context_line":"references hard-coded extra specs or CONF options and turn those references"},{"line_number":587,"context_line":"into parameters to functions."},{"line_number":588,"context_line":""},{"line_number":589,"context_line":"Implementation"},{"line_number":590,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":11,"id":"5f7c97a3_a86edf93","line":587,"range":{"start_line":581,"start_character":0,"end_line":587,"end_character":29},"in_reply_to":"5f7c97a3_ed72a9ad","updated":"2018-06-05 10:57:47.000000000","message":"oh i was not aware of this. \nwhat we had discused at the summit was just altering how we do the flavor to resouce request translation as i described above. an explcit api would be more generic however the assumtion was since you could not mix previously you would either want all pcpus or all vcpus. anything else would be a new flavor.","commit_id":"33d37fc22fc4cb8d6b3017c5d67cd64f80183c07"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"789e9fe61f6a007007bf8b4bd41cf3e938859453","unresolved":false,"context_lines":[{"line_number":605,"context_line":""},{"line_number":606,"context_line":"* Create ``PCPU`` resource class"},{"line_number":607,"context_line":"* Create ``HW_CPU_HYPERTHREADING`` trait"},{"line_number":608,"context_line":"* Create ``CONF.cpu_dedicated_set`` and ``CONF.cpu_shared_set`` options"},{"line_number":609,"context_line":"* Modify virt code to calculate the set of host CPUs that will be used for"},{"line_number":610,"context_line":"  dedicated and shared CPUs by using the above new CONF options"},{"line_number":611,"context_line":"* Modify the code that creates the request group from the flavor\u0027s extra specs"}],"source_content_type":"text/x-rst","patch_set":11,"id":"5f7c97a3_ac616e07","line":608,"range":{"start_line":608,"start_character":64,"end_line":608,"end_character":71},"updated":"2018-05-30 21:57:50.000000000","message":"and whatever the allocation ratio one(s) end(s) up being.","commit_id":"33d37fc22fc4cb8d6b3017c5d67cd64f80183c07"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"843524c2eb2308189d8c5755d8a9055d8ec28ce0","unresolved":false,"context_lines":[{"line_number":605,"context_line":""},{"line_number":606,"context_line":"* Create ``PCPU`` resource class"},{"line_number":607,"context_line":"* Create ``HW_CPU_HYPERTHREADING`` trait"},{"line_number":608,"context_line":"* Create ``CONF.cpu_dedicated_set`` and ``CONF.cpu_shared_set`` options"},{"line_number":609,"context_line":"* Modify virt code to calculate the set of host CPUs that will be used for"},{"line_number":610,"context_line":"  dedicated and shared CPUs by using the above new CONF options"},{"line_number":611,"context_line":"* Modify the code that creates the request group from the flavor\u0027s extra specs"}],"source_content_type":"text/x-rst","patch_set":11,"id":"5f7c97a3_7df5f9ec","line":608,"range":{"start_line":608,"start_character":64,"end_line":608,"end_character":71},"in_reply_to":"5f7c97a3_ac616e07","updated":"2018-06-04 18:55:28.000000000","message":"I wasn\u0027t planning on changing any of that handling -- at least not in this spec.","commit_id":"33d37fc22fc4cb8d6b3017c5d67cd64f80183c07"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"789e9fe61f6a007007bf8b4bd41cf3e938859453","unresolved":false,"context_lines":[{"line_number":606,"context_line":"* Create ``PCPU`` resource class"},{"line_number":607,"context_line":"* Create ``HW_CPU_HYPERTHREADING`` trait"},{"line_number":608,"context_line":"* Create ``CONF.cpu_dedicated_set`` and ``CONF.cpu_shared_set`` options"},{"line_number":609,"context_line":"* Modify virt code to calculate the set of host CPUs that will be used for"},{"line_number":610,"context_line":"  dedicated and shared CPUs by using the above new CONF options"},{"line_number":611,"context_line":"* Modify the code that creates the request group from the flavor\u0027s extra specs"},{"line_number":612,"context_line":"  and image properties to construct a request for ``PCPU`` resources when the"}],"source_content_type":"text/x-rst","patch_set":11,"id":"5f7c97a3_ec38c6ee","line":609,"range":{"start_line":609,"start_character":9,"end_line":609,"end_character":18},"updated":"2018-05-30 21:57:50.000000000","message":"Which driver(s) are included in the scope of this bp?","commit_id":"33d37fc22fc4cb8d6b3017c5d67cd64f80183c07"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"d42210a3b1cbaf916338a2633ed8706d510a3751","unresolved":false,"context_lines":[{"line_number":606,"context_line":"* Create ``PCPU`` resource class"},{"line_number":607,"context_line":"* Create ``HW_CPU_HYPERTHREADING`` trait"},{"line_number":608,"context_line":"* Create ``CONF.cpu_dedicated_set`` and ``CONF.cpu_shared_set`` options"},{"line_number":609,"context_line":"* Modify virt code to calculate the set of host CPUs that will be used for"},{"line_number":610,"context_line":"  dedicated and shared CPUs by using the above new CONF options"},{"line_number":611,"context_line":"* Modify the code that creates the request group from the flavor\u0027s extra specs"},{"line_number":612,"context_line":"  and image properties to construct a request for ``PCPU`` resources when the"}],"source_content_type":"text/x-rst","patch_set":11,"id":"5f7c97a3_73b9cec9","line":609,"range":{"start_line":609,"start_character":9,"end_line":609,"end_character":18},"in_reply_to":"5f7c97a3_ec38c6ee","updated":"2018-06-01 20:15:08.000000000","message":"all should be.\n\nthe current vcpu_pin_set was not a driver specific config option i was a gloal one so the fact that some drivers did not used it to filter the available cpus i consider a bug.\n\nsimilarly these are not being proposed as driver specific options so i would expect that these changes should be made acorss all in tree drivers.\n\nthe real question is do we have people to do that work for all drivers. libvirt will get done but not sure about the rest.","commit_id":"33d37fc22fc4cb8d6b3017c5d67cd64f80183c07"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"843524c2eb2308189d8c5755d8a9055d8ec28ce0","unresolved":false,"context_lines":[{"line_number":606,"context_line":"* Create ``PCPU`` resource class"},{"line_number":607,"context_line":"* Create ``HW_CPU_HYPERTHREADING`` trait"},{"line_number":608,"context_line":"* Create ``CONF.cpu_dedicated_set`` and ``CONF.cpu_shared_set`` options"},{"line_number":609,"context_line":"* Modify virt code to calculate the set of host CPUs that will be used for"},{"line_number":610,"context_line":"  dedicated and shared CPUs by using the above new CONF options"},{"line_number":611,"context_line":"* Modify the code that creates the request group from the flavor\u0027s extra specs"},{"line_number":612,"context_line":"  and image properties to construct a request for ``PCPU`` resources when the"}],"source_content_type":"text/x-rst","patch_set":11,"id":"5f7c97a3_1ddac578","line":609,"range":{"start_line":609,"start_character":9,"end_line":609,"end_character":18},"in_reply_to":"5f7c97a3_ec38c6ee","updated":"2018-06-04 18:55:28.000000000","message":"nova/virt/hardware.py","commit_id":"33d37fc22fc4cb8d6b3017c5d67cd64f80183c07"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"789e9fe61f6a007007bf8b4bd41cf3e938859453","unresolved":false,"context_lines":[{"line_number":631,"context_line":"The `granular request groups (Rocky)`_ spec is required for guests wishing to"},{"line_number":632,"context_line":"have the placement service fulfill the virtual NUMA topology constraints"},{"line_number":633,"context_line":"regarding dedicated CPUs."},{"line_number":634,"context_line":""},{"line_number":635,"context_line":"Testing"},{"line_number":636,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":637,"context_line":""}],"source_content_type":"text/x-rst","patch_set":11,"id":"5f7c97a3_4f520c15","line":634,"updated":"2018-05-30 21:57:50.000000000","message":"Both of these are complete at this point.","commit_id":"33d37fc22fc4cb8d6b3017c5d67cd64f80183c07"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"67c716dbb6e94272d9244e61439b24ead5a9b017","unresolved":false,"context_lines":[{"line_number":631,"context_line":"The `granular request groups (Rocky)`_ spec is required for guests wishing to"},{"line_number":632,"context_line":"have the placement service fulfill the virtual NUMA topology constraints"},{"line_number":633,"context_line":"regarding dedicated CPUs."},{"line_number":634,"context_line":""},{"line_number":635,"context_line":"Testing"},{"line_number":636,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":637,"context_line":""}],"source_content_type":"text/x-rst","patch_set":11,"id":"5f7c97a3_4f78c3c2","line":634,"in_reply_to":"5f7c97a3_4f520c15","updated":"2018-05-31 10:44:00.000000000","message":"IMO the NUMA spec should be called out as _not_ being a dependency to, once again, make it clear that these are being kept apart","commit_id":"33d37fc22fc4cb8d6b3017c5d67cd64f80183c07"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"843524c2eb2308189d8c5755d8a9055d8ec28ce0","unresolved":false,"context_lines":[{"line_number":631,"context_line":"The `granular request groups (Rocky)`_ spec is required for guests wishing to"},{"line_number":632,"context_line":"have the placement service fulfill the virtual NUMA topology constraints"},{"line_number":633,"context_line":"regarding dedicated CPUs."},{"line_number":634,"context_line":""},{"line_number":635,"context_line":"Testing"},{"line_number":636,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":637,"context_line":""}],"source_content_type":"text/x-rst","patch_set":11,"id":"5f7c97a3_5d3efd8b","line":634,"in_reply_to":"5f7c97a3_4f78c3c2","updated":"2018-06-04 18:55:28.000000000","message":"Done","commit_id":"33d37fc22fc4cb8d6b3017c5d67cd64f80183c07"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"d42210a3b1cbaf916338a2633ed8706d510a3751","unresolved":false,"context_lines":[{"line_number":631,"context_line":"The `granular request groups (Rocky)`_ spec is required for guests wishing to"},{"line_number":632,"context_line":"have the placement service fulfill the virtual NUMA topology constraints"},{"line_number":633,"context_line":"regarding dedicated CPUs."},{"line_number":634,"context_line":""},{"line_number":635,"context_line":"Testing"},{"line_number":636,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":637,"context_line":""}],"source_content_type":"text/x-rst","patch_set":11,"id":"5f7c97a3_d3bd42b1","line":634,"in_reply_to":"5f7c97a3_4f78c3c2","updated":"2018-06-01 20:15:08.000000000","message":"again nope. i think that severly damages the usefulness of this spec. the numa spec should be a depency but i would not block on it either.","commit_id":"33d37fc22fc4cb8d6b3017c5d67cd64f80183c07"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"789e9fe61f6a007007bf8b4bd41cf3e938859453","unresolved":false,"context_lines":[{"line_number":663,"context_line":".. _Support shared/dedicated vCPU in one instance: https://review.openstack.org/#/c/545734/"},{"line_number":664,"context_line":".. _Emulator threads policy: https://review.openstack.org/#/c/511188/"},{"line_number":665,"context_line":".. _NUMA topology with resource providers: https://review.openstack.org/#/c/552924/"},{"line_number":666,"context_line":".. _update_provider_tree: https://review.openstack.org/#/c/540111/"},{"line_number":667,"context_line":".. _granular request groups (Rocky): https://review.openstack.org/#/c/540179/"}],"source_content_type":"text/x-rst","patch_set":11,"id":"5f7c97a3_2f01d005","line":667,"range":{"start_line":666,"start_character":0,"end_line":667,"end_character":77},"updated":"2018-05-30 21:57:50.000000000","message":"Link to published approved rendered specs","commit_id":"33d37fc22fc4cb8d6b3017c5d67cd64f80183c07"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"67c716dbb6e94272d9244e61439b24ead5a9b017","unresolved":false,"context_lines":[{"line_number":663,"context_line":".. _Support shared/dedicated vCPU in one instance: https://review.openstack.org/#/c/545734/"},{"line_number":664,"context_line":".. _Emulator threads policy: https://review.openstack.org/#/c/511188/"},{"line_number":665,"context_line":".. _NUMA topology with resource providers: https://review.openstack.org/#/c/552924/"},{"line_number":666,"context_line":".. _update_provider_tree: https://review.openstack.org/#/c/540111/"},{"line_number":667,"context_line":".. _granular request groups (Rocky): https://review.openstack.org/#/c/540179/"}],"source_content_type":"text/x-rst","patch_set":11,"id":"5f7c97a3_6f733fe8","line":667,"range":{"start_line":666,"start_character":0,"end_line":667,"end_character":77},"in_reply_to":"5f7c97a3_2f01d005","updated":"2018-05-31 10:44:00.000000000","message":"+1","commit_id":"33d37fc22fc4cb8d6b3017c5d67cd64f80183c07"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"843524c2eb2308189d8c5755d8a9055d8ec28ce0","unresolved":false,"context_lines":[{"line_number":663,"context_line":".. _Support shared/dedicated vCPU in one instance: https://review.openstack.org/#/c/545734/"},{"line_number":664,"context_line":".. _Emulator threads policy: https://review.openstack.org/#/c/511188/"},{"line_number":665,"context_line":".. _NUMA topology with resource providers: https://review.openstack.org/#/c/552924/"},{"line_number":666,"context_line":".. _update_provider_tree: https://review.openstack.org/#/c/540111/"},{"line_number":667,"context_line":".. _granular request groups (Rocky): https://review.openstack.org/#/c/540179/"}],"source_content_type":"text/x-rst","patch_set":11,"id":"5f7c97a3_dd51addb","line":667,"range":{"start_line":666,"start_character":0,"end_line":667,"end_character":77},"in_reply_to":"5f7c97a3_2f01d005","updated":"2018-06-04 18:55:28.000000000","message":"Done","commit_id":"33d37fc22fc4cb8d6b3017c5d67cd64f80183c07"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"7c81e55de1f8e363fd8942d866d49e81352ad817","unresolved":false,"context_lines":[{"line_number":157,"context_line":"    The existing ``CONF.vcpu_pin_set`` will be **deprecated** in the \"S\""},{"line_number":158,"context_line":"    release for removal in the \"T\" release. The ``CONF.cpu_dedicated_set`` and"},{"line_number":159,"context_line":"    ``CONF.cpu_shared_set`` options make ``CONF.vcpu_pin_set`` irrelevant. We"},{"line_number":160,"context_line":"    can fail to start the nova-compute worker if all 3 options are set."},{"line_number":161,"context_line":""},{"line_number":162,"context_line":"For host systems that do not use a provider tree to model providers of"},{"line_number":163,"context_line":"different pools of CPU resources (such as modeling different CPU sockets or"}],"source_content_type":"text/x-rst","patch_set":13,"id":"5f7c97a3_0de7e548","line":160,"range":{"start_line":160,"start_character":53,"end_line":160,"end_character":54},"updated":"2018-06-05 10:20:55.000000000","message":"nit: three\n\nAlso, I\u0027d personally have failed to start if any of the two new options were set alongside the older option but we can argue that in the code review","commit_id":"79c314f4da074aae8de55d53df44c751d5d260f6"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"b099ff3f4664a85d147908409ac303fce5970115","unresolved":false,"context_lines":[{"line_number":157,"context_line":"    The existing ``CONF.vcpu_pin_set`` will be **deprecated** in the \"S\""},{"line_number":158,"context_line":"    release for removal in the \"T\" release. The ``CONF.cpu_dedicated_set`` and"},{"line_number":159,"context_line":"    ``CONF.cpu_shared_set`` options make ``CONF.vcpu_pin_set`` irrelevant. We"},{"line_number":160,"context_line":"    can fail to start the nova-compute worker if all 3 options are set."},{"line_number":161,"context_line":""},{"line_number":162,"context_line":"For host systems that do not use a provider tree to model providers of"},{"line_number":163,"context_line":"different pools of CPU resources (such as modeling different CPU sockets or"}],"source_content_type":"text/x-rst","patch_set":13,"id":"5f7c97a3_ee85bfd0","line":160,"range":{"start_line":160,"start_character":53,"end_line":160,"end_character":54},"in_reply_to":"5f7c97a3_0de7e548","updated":"2018-06-05 12:56:32.000000000","message":"ah, good point. I can fix up.","commit_id":"79c314f4da074aae8de55d53df44c751d5d260f6"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"7c81e55de1f8e363fd8942d866d49e81352ad817","unresolved":false,"context_lines":[{"line_number":185,"context_line":"packages/sockets as child providers but *did* wish to have separate inventories"},{"line_number":186,"context_line":"of ``PCPU`` and ``VCPU`` resources would have a simple setup. Consider a"},{"line_number":187,"context_line":"compute node with a total of 24 host physical CPU cores with hyperthreading"},{"line_number":188,"context_line":"enabled. The operator wishes to reserve 1 physical CPU core for host processing"},{"line_number":189,"context_line":"(not for guest instance use). Furthermore, the operator wishes to use 8 host"},{"line_number":190,"context_line":"physical CPU cores and their hyperthread siblings for dedicated guest CPU"},{"line_number":191,"context_line":"resources. The remaining 15 host physical CPU cores and their hyperthread"},{"line_number":192,"context_line":"siblings will be used for shared guest vCPU usage, with an 8:1 allocation ratio"}],"source_content_type":"text/x-rst","patch_set":13,"id":"5f7c97a3_4d52bde0","line":189,"range":{"start_line":188,"start_character":9,"end_line":189,"end_character":29},"updated":"2018-06-05 10:20:55.000000000","message":"An example of nova.conf, as you\u0027ve done below, would be helpful here","commit_id":"79c314f4da074aae8de55d53df44c751d5d260f6"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"b099ff3f4664a85d147908409ac303fce5970115","unresolved":false,"context_lines":[{"line_number":185,"context_line":"packages/sockets as child providers but *did* wish to have separate inventories"},{"line_number":186,"context_line":"of ``PCPU`` and ``VCPU`` resources would have a simple setup. Consider a"},{"line_number":187,"context_line":"compute node with a total of 24 host physical CPU cores with hyperthreading"},{"line_number":188,"context_line":"enabled. The operator wishes to reserve 1 physical CPU core for host processing"},{"line_number":189,"context_line":"(not for guest instance use). Furthermore, the operator wishes to use 8 host"},{"line_number":190,"context_line":"physical CPU cores and their hyperthread siblings for dedicated guest CPU"},{"line_number":191,"context_line":"resources. The remaining 15 host physical CPU cores and their hyperthread"},{"line_number":192,"context_line":"siblings will be used for shared guest vCPU usage, with an 8:1 allocation ratio"}],"source_content_type":"text/x-rst","patch_set":13,"id":"5f7c97a3_ae67c751","line":189,"range":{"start_line":188,"start_character":9,"end_line":189,"end_character":29},"in_reply_to":"5f7c97a3_4d52bde0","updated":"2018-06-05 12:56:32.000000000","message":"Done","commit_id":"79c314f4da074aae8de55d53df44c751d5d260f6"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"6473eabdc84ae6f8932946e92516c7ed74239517","unresolved":false,"context_lines":[{"line_number":195,"context_line":"    COMPUTE NODE provider"},{"line_number":196,"context_line":"        PCPU:"},{"line_number":197,"context_line":"            total: 18"},{"line_number":198,"context_line":"            reserved: 2"},{"line_number":199,"context_line":"            min_unit: 1"},{"line_number":200,"context_line":"            max_unit: 16"},{"line_number":201,"context_line":"            step_size: 1"}],"source_content_type":"text/x-rst","patch_set":13,"id":"5f7c97a3_2e9e57b8","line":198,"range":{"start_line":198,"start_character":12,"end_line":198,"end_character":23},"updated":"2018-06-05 13:00:03.000000000","message":"Does this reserved: 2 calculated from the union of cpu_dedicated_set and cpu_shared_set has two cpus less than overall physical cpus available on the host?\nIf yes, then modeling it in the PCPU inventory is arbitrary. We can model it either on PCPU or on the VCPU or non at all in placement (i.e. reporting less total value)","commit_id":"79c314f4da074aae8de55d53df44c751d5d260f6"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"1aa8b4bc0fb27a64ff33c8b903b4be1adbd6a2de","unresolved":false,"context_lines":[{"line_number":195,"context_line":"    COMPUTE NODE provider"},{"line_number":196,"context_line":"        PCPU:"},{"line_number":197,"context_line":"            total: 18"},{"line_number":198,"context_line":"            reserved: 2"},{"line_number":199,"context_line":"            min_unit: 1"},{"line_number":200,"context_line":"            max_unit: 16"},{"line_number":201,"context_line":"            step_size: 1"}],"source_content_type":"text/x-rst","patch_set":13,"id":"5f7c97a3_5b959287","line":198,"range":{"start_line":198,"start_character":12,"end_line":198,"end_character":23},"in_reply_to":"5f7c97a3_2e9e57b8","updated":"2018-06-05 16:35:47.000000000","message":"Ack, that\u0027s true. I just placed the reserved amount on the PCPU inventory since it seems to make more sense to me.","commit_id":"79c314f4da074aae8de55d53df44c751d5d260f6"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"e563ca99b7542327fa45cac2c1abe864d13489e9","unresolved":false,"context_lines":[{"line_number":195,"context_line":"    COMPUTE NODE provider"},{"line_number":196,"context_line":"        PCPU:"},{"line_number":197,"context_line":"            total: 18"},{"line_number":198,"context_line":"            reserved: 2"},{"line_number":199,"context_line":"            min_unit: 1"},{"line_number":200,"context_line":"            max_unit: 16"},{"line_number":201,"context_line":"            step_size: 1"}],"source_content_type":"text/x-rst","patch_set":13,"id":"5f7c97a3_8c15174c","line":198,"range":{"start_line":198,"start_character":12,"end_line":198,"end_character":23},"in_reply_to":"5f7c97a3_5b959287","updated":"2018-06-06 13:21:44.000000000","message":"OK. Cool","commit_id":"79c314f4da074aae8de55d53df44c751d5d260f6"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"6473eabdc84ae6f8932946e92516c7ed74239517","unresolved":false,"context_lines":[{"line_number":272,"context_line":"Guest resource requests"},{"line_number":273,"context_line":"-----------------------"},{"line_number":274,"context_line":""},{"line_number":275,"context_line":"We propose to utilize the existing flavor ``resource:$RESOURCE_CLASS\u003d$AMOUNT``"},{"line_number":276,"context_line":"extra-specs and image properties system for requesting both shared and"},{"line_number":277,"context_line":"dedicated CPU resources for a guest."},{"line_number":278,"context_line":""}],"source_content_type":"text/x-rst","patch_set":13,"id":"5f7c97a3_2e63b7b3","line":275,"updated":"2018-06-05 13:00:03.000000000","message":"How the flavor.vcpu field will be considered if ``resource:VCPU\u003d$AMOUNT`` is provided in the extra spec? Does the extra_spec overrides the flavor.vcpu in this case?\nWhat if only ``resource:PCPU\u003d$AMOUNT`` is specified in the extra_spec, will nova translate the flavor.vcpu to ``resource:VCPU\u003d$AMOUNT`` internally?","commit_id":"79c314f4da074aae8de55d53df44c751d5d260f6"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"1aa8b4bc0fb27a64ff33c8b903b4be1adbd6a2de","unresolved":false,"context_lines":[{"line_number":272,"context_line":"Guest resource requests"},{"line_number":273,"context_line":"-----------------------"},{"line_number":274,"context_line":""},{"line_number":275,"context_line":"We propose to utilize the existing flavor ``resource:$RESOURCE_CLASS\u003d$AMOUNT``"},{"line_number":276,"context_line":"extra-specs and image properties system for requesting both shared and"},{"line_number":277,"context_line":"dedicated CPU resources for a guest."},{"line_number":278,"context_line":""}],"source_content_type":"text/x-rst","patch_set":13,"id":"5f7c97a3_db3442af","line":275,"in_reply_to":"5f7c97a3_2e63b7b3","updated":"2018-06-05 16:35:47.000000000","message":"\u003e How the flavor.vcpu field will be considered if ``resource:VCPU\u003d$AMOUNT``\n \u003e is provided in the extra spec? Does the extra_spec overrides the\n \u003e flavor.vcpu in this case?\n\nYes, but that is already the case.\n\n \u003e What if only ``resource:PCPU\u003d$AMOUNT`` is specified in the\n \u003e extra_spec, will nova translate the flavor.vcpu to\n \u003e ``resource:VCPU\u003d$AMOUNT`` internally?\n\nAh, I see. Yes, the current code will auto-translate flavor.vcpus to resources:VCPU\u003d$AMOUNT. So, operators that want only dedicated CPU resources for the flavor will need to set flavor.vcpus to 0 I suppose.\n\nI\u0027ll add this in a followup revision if needed.","commit_id":"79c314f4da074aae8de55d53df44c751d5d260f6"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"33217178a145a582fdce946cc0c8d6c92521af36","unresolved":false,"context_lines":[{"line_number":272,"context_line":"Guest resource requests"},{"line_number":273,"context_line":"-----------------------"},{"line_number":274,"context_line":""},{"line_number":275,"context_line":"We propose to utilize the existing flavor ``resource:$RESOURCE_CLASS\u003d$AMOUNT``"},{"line_number":276,"context_line":"extra-specs and image properties system for requesting both shared and"},{"line_number":277,"context_line":"dedicated CPU resources for a guest."},{"line_number":278,"context_line":""}],"source_content_type":"text/x-rst","patch_set":13,"id":"5f7c97a3_29707008","line":275,"in_reply_to":"5f7c97a3_9723e4a7","updated":"2018-06-06 15:40:24.000000000","message":"Done","commit_id":"79c314f4da074aae8de55d53df44c751d5d260f6"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"e563ca99b7542327fa45cac2c1abe864d13489e9","unresolved":false,"context_lines":[{"line_number":272,"context_line":"Guest resource requests"},{"line_number":273,"context_line":"-----------------------"},{"line_number":274,"context_line":""},{"line_number":275,"context_line":"We propose to utilize the existing flavor ``resource:$RESOURCE_CLASS\u003d$AMOUNT``"},{"line_number":276,"context_line":"extra-specs and image properties system for requesting both shared and"},{"line_number":277,"context_line":"dedicated CPU resources for a guest."},{"line_number":278,"context_line":""}],"source_content_type":"text/x-rst","patch_set":13,"id":"5f7c97a3_9723e4a7","line":275,"in_reply_to":"5f7c97a3_db3442af","updated":"2018-06-06 13:21:44.000000000","message":"allowing flavor.vcpus 0 is an API impact:\n\nstack@ubuntu:~$ openstack flavor create f1 --vcpus 0 \nInvalid input for field/attribute vcpus. Value: 0. 0 is less than the minimum of 1 (HTTP 400) (Request-ID: req-1e5ad2e3-9ce3-4612-970d-0d8b31481806)","commit_id":"79c314f4da074aae8de55d53df44c751d5d260f6"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"7c81e55de1f8e363fd8942d866d49e81352ad817","unresolved":false,"context_lines":[{"line_number":286,"context_line":""},{"line_number":287,"context_line":"The concept of a guest virtual CPU topology is related to the request for"},{"line_number":288,"context_line":"dedicated and shared CPU resources, but the two concepts are not exactly the"},{"line_number":289,"context_line":"same. What we discuss here is simply how to translate a desire for more than 1"},{"line_number":290,"context_line":"CPU resources to be supplied by a single or a distinct set of resource"},{"line_number":291,"context_line":"providers."},{"line_number":292,"context_line":""}],"source_content_type":"text/x-rst","patch_set":13,"id":"5f7c97a3_cd57adca","line":289,"range":{"start_line":289,"start_character":77,"end_line":289,"end_character":78},"updated":"2018-06-05 10:20:55.000000000","message":"nit: one","commit_id":"79c314f4da074aae8de55d53df44c751d5d260f6"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"b099ff3f4664a85d147908409ac303fce5970115","unresolved":false,"context_lines":[{"line_number":286,"context_line":""},{"line_number":287,"context_line":"The concept of a guest virtual CPU topology is related to the request for"},{"line_number":288,"context_line":"dedicated and shared CPU resources, but the two concepts are not exactly the"},{"line_number":289,"context_line":"same. What we discuss here is simply how to translate a desire for more than 1"},{"line_number":290,"context_line":"CPU resources to be supplied by a single or a distinct set of resource"},{"line_number":291,"context_line":"providers."},{"line_number":292,"context_line":""}],"source_content_type":"text/x-rst","patch_set":13,"id":"5f7c97a3_4e74f3fe","line":289,"range":{"start_line":289,"start_character":77,"end_line":289,"end_character":78},"in_reply_to":"5f7c97a3_cd57adca","updated":"2018-06-05 12:56:32.000000000","message":"Done","commit_id":"79c314f4da074aae8de55d53df44c751d5d260f6"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"6473eabdc84ae6f8932946e92516c7ed74239517","unresolved":false,"context_lines":[{"line_number":302,"context_line":"    The existing ``hw:cpu_policy\u003ddedicated|shared`` flavor extra spec and image"},{"line_number":303,"context_line":"    property will be **deprecated** in the \"S\" release for removal in the \"T\""},{"line_number":304,"context_line":"    release. This extra spec will be irrelevant when flavors can indicate the"},{"line_number":305,"context_line":"    exact number of dedicated and shared CPU resources they require."},{"line_number":306,"context_line":""},{"line_number":307,"context_line":"Ensure all CPU resources are supplied by the same provider"},{"line_number":308,"context_line":"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"}],"source_content_type":"text/x-rst","patch_set":13,"id":"5f7c97a3_ae6ee793","line":305,"updated":"2018-06-05 13:00:03.000000000","message":"As we are promoting of the usage of flavor extra_spec over then Falvor.vcpu field I guess we can start thinking about deprecating the vcpu field as well in favor of the extra_spec definition.","commit_id":"79c314f4da074aae8de55d53df44c751d5d260f6"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"e563ca99b7542327fa45cac2c1abe864d13489e9","unresolved":false,"context_lines":[{"line_number":302,"context_line":"    The existing ``hw:cpu_policy\u003ddedicated|shared`` flavor extra spec and image"},{"line_number":303,"context_line":"    property will be **deprecated** in the \"S\" release for removal in the \"T\""},{"line_number":304,"context_line":"    release. This extra spec will be irrelevant when flavors can indicate the"},{"line_number":305,"context_line":"    exact number of dedicated and shared CPU resources they require."},{"line_number":306,"context_line":""},{"line_number":307,"context_line":"Ensure all CPU resources are supplied by the same provider"},{"line_number":308,"context_line":"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"}],"source_content_type":"text/x-rst","patch_set":13,"id":"5f7c97a3_d74e3c6d","line":305,"in_reply_to":"5f7c97a3_31579729","updated":"2018-06-06 13:21:44.000000000","message":"OK, understood","commit_id":"79c314f4da074aae8de55d53df44c751d5d260f6"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"1aa8b4bc0fb27a64ff33c8b903b4be1adbd6a2de","unresolved":false,"context_lines":[{"line_number":302,"context_line":"    The existing ``hw:cpu_policy\u003ddedicated|shared`` flavor extra spec and image"},{"line_number":303,"context_line":"    property will be **deprecated** in the \"S\" release for removal in the \"T\""},{"line_number":304,"context_line":"    release. This extra spec will be irrelevant when flavors can indicate the"},{"line_number":305,"context_line":"    exact number of dedicated and shared CPU resources they require."},{"line_number":306,"context_line":""},{"line_number":307,"context_line":"Ensure all CPU resources are supplied by the same provider"},{"line_number":308,"context_line":"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"}],"source_content_type":"text/x-rst","patch_set":13,"id":"5f7c97a3_31579729","line":305,"in_reply_to":"5f7c97a3_ae6ee793","updated":"2018-06-05 16:35:47.000000000","message":"heh, maybe, yes. but I didn\u0027t want to get too much into that in this spec...","commit_id":"79c314f4da074aae8de55d53df44c751d5d260f6"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"7c81e55de1f8e363fd8942d866d49e81352ad817","unresolved":false,"context_lines":[{"line_number":312,"context_line":""},{"line_number":313,"context_line":"* The number of shared CPUs needed by the guest shall be stored in the existing"},{"line_number":314,"context_line":"  ``resources1:VCPU\u003d$AMOUNT`` extra spec key."},{"line_number":315,"context_line":"* The number of dedicated CPUs needed by the guest shall be stored in the"},{"line_number":316,"context_line":"  ``resources1:PCPU\u003d$AMOUNT`` extra spec key"},{"line_number":317,"context_line":""},{"line_number":318,"context_line":"This will allow the placement service to filter out compute nodes that do not"}],"source_content_type":"text/x-rst","patch_set":13,"id":"5f7c97a3_cd0c8dee","line":315,"range":{"start_line":315,"start_character":67,"end_line":315,"end_character":73},"updated":"2018-06-05 10:20:55.000000000","message":"in the new ?","commit_id":"79c314f4da074aae8de55d53df44c751d5d260f6"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"b099ff3f4664a85d147908409ac303fce5970115","unresolved":false,"context_lines":[{"line_number":312,"context_line":""},{"line_number":313,"context_line":"* The number of shared CPUs needed by the guest shall be stored in the existing"},{"line_number":314,"context_line":"  ``resources1:VCPU\u003d$AMOUNT`` extra spec key."},{"line_number":315,"context_line":"* The number of dedicated CPUs needed by the guest shall be stored in the"},{"line_number":316,"context_line":"  ``resources1:PCPU\u003d$AMOUNT`` extra spec key"},{"line_number":317,"context_line":""},{"line_number":318,"context_line":"This will allow the placement service to filter out compute nodes that do not"}],"source_content_type":"text/x-rst","patch_set":13,"id":"5f7c97a3_e225d3af","line":315,"range":{"start_line":315,"start_character":67,"end_line":315,"end_character":73},"in_reply_to":"5f7c97a3_cd0c8dee","updated":"2018-06-05 12:56:32.000000000","message":"Done","commit_id":"79c314f4da074aae8de55d53df44c751d5d260f6"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"6473eabdc84ae6f8932946e92516c7ed74239517","unresolved":false,"context_lines":[{"line_number":476,"context_line":"1) A simple web application server workload requires a couple CPU resources."},{"line_number":477,"context_line":"   The workload does not require any dedicated CPU resources::"},{"line_number":478,"context_line":""},{"line_number":479,"context_line":"    resources:VCPU\u003d2"},{"line_number":480,"context_line":""},{"line_number":481,"context_line":"2)"},{"line_number":482,"context_line":""}],"source_content_type":"text/x-rst","patch_set":13,"id":"5f7c97a3_8e252b0d","line":479,"updated":"2018-06-05 13:00:03.000000000","message":"OK so we do deprecate the usage of flavor.vcpu :)","commit_id":"79c314f4da074aae8de55d53df44c751d5d260f6"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"e563ca99b7542327fa45cac2c1abe864d13489e9","unresolved":false,"context_lines":[{"line_number":476,"context_line":"1) A simple web application server workload requires a couple CPU resources."},{"line_number":477,"context_line":"   The workload does not require any dedicated CPU resources::"},{"line_number":478,"context_line":""},{"line_number":479,"context_line":"    resources:VCPU\u003d2"},{"line_number":480,"context_line":""},{"line_number":481,"context_line":"2)"},{"line_number":482,"context_line":""}],"source_content_type":"text/x-rst","patch_set":13,"id":"5f7c97a3_7755e8f9","line":479,"in_reply_to":"5f7c97a3_7122efbc","updated":"2018-06-06 13:21:44.000000000","message":"OK","commit_id":"79c314f4da074aae8de55d53df44c751d5d260f6"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"1aa8b4bc0fb27a64ff33c8b903b4be1adbd6a2de","unresolved":false,"context_lines":[{"line_number":476,"context_line":"1) A simple web application server workload requires a couple CPU resources."},{"line_number":477,"context_line":"   The workload does not require any dedicated CPU resources::"},{"line_number":478,"context_line":""},{"line_number":479,"context_line":"    resources:VCPU\u003d2"},{"line_number":480,"context_line":""},{"line_number":481,"context_line":"2)"},{"line_number":482,"context_line":""}],"source_content_type":"text/x-rst","patch_set":13,"id":"5f7c97a3_7122efbc","line":479,"in_reply_to":"5f7c97a3_8e252b0d","updated":"2018-06-05 16:35:47.000000000","message":"not yet... I think we should continue to support the behaviour of auto-constructing a request for resources:VCPU\u003dflavor.vcpus for now.","commit_id":"79c314f4da074aae8de55d53df44c751d5d260f6"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"7c81e55de1f8e363fd8942d866d49e81352ad817","unresolved":false,"context_lines":[{"line_number":487,"context_line":""},{"line_number":488,"context_line":"        resources:PCPU\u003d8"},{"line_number":489,"context_line":""},{"line_number":490,"context_line":"2)"},{"line_number":491,"context_line":""},{"line_number":492,"context_line":"  b) A database server requires 8 CPU resources, and the workload needs"},{"line_number":493,"context_line":"     dedicated CPU resources to minimize effects of other workloads hosted on"}],"source_content_type":"text/x-rst","patch_set":13,"id":"5f7c97a3_4dc71d66","line":490,"range":{"start_line":490,"start_character":0,"end_line":490,"end_character":2},"updated":"2018-06-05 10:20:55.000000000","message":"nit: don\u0027t think this is necessary","commit_id":"79c314f4da074aae8de55d53df44c751d5d260f6"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"b099ff3f4664a85d147908409ac303fce5970115","unresolved":false,"context_lines":[{"line_number":487,"context_line":""},{"line_number":488,"context_line":"        resources:PCPU\u003d8"},{"line_number":489,"context_line":""},{"line_number":490,"context_line":"2)"},{"line_number":491,"context_line":""},{"line_number":492,"context_line":"  b) A database server requires 8 CPU resources, and the workload needs"},{"line_number":493,"context_line":"     dedicated CPU resources to minimize effects of other workloads hosted on"}],"source_content_type":"text/x-rst","patch_set":13,"id":"5f7c97a3_423047e9","line":490,"range":{"start_line":490,"start_character":0,"end_line":490,"end_character":2},"in_reply_to":"5f7c97a3_4dc71d66","updated":"2018-06-05 12:56:32.000000000","message":"copy/pasta... removed.","commit_id":"79c314f4da074aae8de55d53df44c751d5d260f6"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"6473eabdc84ae6f8932946e92516c7ed74239517","unresolved":false,"context_lines":[{"line_number":530,"context_line":"   possible (therefore requires the target host to support hyperthreading)::"},{"line_number":531,"context_line":""},{"line_number":532,"context_line":"    resources1:PCPU\u003d8"},{"line_number":533,"context_line":"    resources1:SRIOV_NET_VF\u003d1"},{"line_number":534,"context_line":"    trait1:HW_CPU_HYPERTHREADING\u003drequired"},{"line_number":535,"context_line":"    resources2:PCPU\u003d8"},{"line_number":536,"context_line":"    resources2:SRIOV_NET_VF\u003d1"}],"source_content_type":"text/x-rst","patch_set":13,"id":"5f7c97a3_0eeefb8a","line":533,"range":{"start_line":533,"start_character":4,"end_line":533,"end_character":29},"updated":"2018-06-05 13:00:03.000000000","message":"Just to think about it in the future: As the bandwidth for those VFs will come from the neutron port\u0027s resource request, I assume that the SRIOV_NET_VF resource will also come from there when we implement it. This will not help us requesting that the VF resources (number and bandwidth) should belong to the same resource group than the PCPU resource.","commit_id":"79c314f4da074aae8de55d53df44c751d5d260f6"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"7c81e55de1f8e363fd8942d866d49e81352ad817","unresolved":false,"context_lines":[{"line_number":551,"context_line":"    entirely up to the nova/virt/hardware.py module to **pin** the guest CPUs"},{"line_number":552,"context_line":"    to the host CPUs appropriately. The placement service will return those"},{"line_number":553,"context_line":"    provider trees that match the required amount of requested PCPU resources"},{"line_number":554,"context_line":"    (16 total, in 2 groups of 8). But placement does not do assignment of"},{"line_number":555,"context_line":"    specific CPUs, only allocation of CPU resource amounts to particular"},{"line_number":556,"context_line":"    providers of those resources."},{"line_number":557,"context_line":""}],"source_content_type":"text/x-rst","patch_set":13,"id":"5f7c97a3_cd81edfd","line":554,"range":{"start_line":554,"start_character":32,"end_line":554,"end_character":35},"updated":"2018-06-05 10:20:55.000000000","message":"TIL it\u0027s actually fine to start a sentence with \u0027but\u0027. I\u0027ve been lied to my whole life...\n\nhttps://www.quickanddirtytips.com/education/grammar/can-i-start-a-sentence-with-a-conjunction","commit_id":"79c314f4da074aae8de55d53df44c751d5d260f6"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"b099ff3f4664a85d147908409ac303fce5970115","unresolved":false,"context_lines":[{"line_number":551,"context_line":"    entirely up to the nova/virt/hardware.py module to **pin** the guest CPUs"},{"line_number":552,"context_line":"    to the host CPUs appropriately. The placement service will return those"},{"line_number":553,"context_line":"    provider trees that match the required amount of requested PCPU resources"},{"line_number":554,"context_line":"    (16 total, in 2 groups of 8). But placement does not do assignment of"},{"line_number":555,"context_line":"    specific CPUs, only allocation of CPU resource amounts to particular"},{"line_number":556,"context_line":"    providers of those resources."},{"line_number":557,"context_line":""}],"source_content_type":"text/x-rst","patch_set":13,"id":"5f7c97a3_c259b735","line":554,"range":{"start_line":554,"start_character":32,"end_line":554,"end_character":35},"in_reply_to":"5f7c97a3_cd81edfd","updated":"2018-06-05 12:56:32.000000000","message":"hehe :)","commit_id":"79c314f4da074aae8de55d53df44c751d5d260f6"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"6473eabdc84ae6f8932946e92516c7ed74239517","unresolved":false,"context_lines":[{"line_number":554,"context_line":"    (16 total, in 2 groups of 8). But placement does not do assignment of"},{"line_number":555,"context_line":"    specific CPUs, only allocation of CPU resource amounts to particular"},{"line_number":556,"context_line":"    providers of those resources."},{"line_number":557,"context_line":""},{"line_number":558,"context_line":"Alternatives"},{"line_number":559,"context_line":"------------"},{"line_number":560,"context_line":""}],"source_content_type":"text/x-rst","patch_set":13,"id":"5f7c97a3_ae5a674d","line":557,"updated":"2018-06-05 13:00:03.000000000","message":"Now Nova will allow mixing pinned and floating cpus within a guest.  So the question will arise how the guest will know which of it\u0027s guest CPUs are the pinned ones to run packet processing application.","commit_id":"79c314f4da074aae8de55d53df44c751d5d260f6"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"e563ca99b7542327fa45cac2c1abe864d13489e9","unresolved":false,"context_lines":[{"line_number":554,"context_line":"    (16 total, in 2 groups of 8). But placement does not do assignment of"},{"line_number":555,"context_line":"    specific CPUs, only allocation of CPU resource amounts to particular"},{"line_number":556,"context_line":"    providers of those resources."},{"line_number":557,"context_line":""},{"line_number":558,"context_line":"Alternatives"},{"line_number":559,"context_line":"------------"},{"line_number":560,"context_line":""}],"source_content_type":"text/x-rst","patch_set":13,"id":"5f7c97a3_ac181384","line":557,"in_reply_to":"5f7c97a3_31055715","updated":"2018-06-06 13:21:44.000000000","message":"But that has -2 from Sylvain stating that your spec supersedes https://review.openstack.org/#/c/545734/\n\nAlso you spec basically proposes every bits that allows requesting a mixed instance.","commit_id":"79c314f4da074aae8de55d53df44c751d5d260f6"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"33217178a145a582fdce946cc0c8d6c92521af36","unresolved":false,"context_lines":[{"line_number":554,"context_line":"    (16 total, in 2 groups of 8). But placement does not do assignment of"},{"line_number":555,"context_line":"    specific CPUs, only allocation of CPU resource amounts to particular"},{"line_number":556,"context_line":"    providers of those resources."},{"line_number":557,"context_line":""},{"line_number":558,"context_line":"Alternatives"},{"line_number":559,"context_line":"------------"},{"line_number":560,"context_line":""}],"source_content_type":"text/x-rst","patch_set":13,"id":"5f7c97a3_490ccc41","line":557,"in_reply_to":"5f7c97a3_ac181384","updated":"2018-06-06 15:40:24.000000000","message":"Yes, sorry about that. I don\u0027t know why Sylvain abandoned that spec. It shouldn\u0027t be -2\u0027d since it discusses different things than the quantitative amounts of shared and dedicated CPU resources consumed by an instance.\n\nIt\u0027s true that that spec needs to be updated to account for the things in here, but this spec specifically does not address assignment of guest vCPUs to host CPUs (pinning).","commit_id":"79c314f4da074aae8de55d53df44c751d5d260f6"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"1aa8b4bc0fb27a64ff33c8b903b4be1adbd6a2de","unresolved":false,"context_lines":[{"line_number":554,"context_line":"    (16 total, in 2 groups of 8). But placement does not do assignment of"},{"line_number":555,"context_line":"    specific CPUs, only allocation of CPU resource amounts to particular"},{"line_number":556,"context_line":"    providers of those resources."},{"line_number":557,"context_line":""},{"line_number":558,"context_line":"Alternatives"},{"line_number":559,"context_line":"------------"},{"line_number":560,"context_line":""}],"source_content_type":"text/x-rst","patch_set":13,"id":"5f7c97a3_31055715","line":557,"in_reply_to":"5f7c97a3_ae5a674d","updated":"2018-06-05 16:35:47.000000000","message":"Not sure, but I think that is a separate issue addressed in the following spec:\n\n.. _Support shared/dedicated vCPU in one instance: https://review.openstack.org/#/c/545734/","commit_id":"79c314f4da074aae8de55d53df44c751d5d260f6"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"7c81e55de1f8e363fd8942d866d49e81352ad817","unresolved":false,"context_lines":[{"line_number":631,"context_line":"nova/virt/hardware.py to handle old options and extra specs. A first step in"},{"line_number":632,"context_line":"handling this will be to refactor any code in nova/virt/hardware.py that"},{"line_number":633,"context_line":"references hard-coded extra specs or CONF options and turn those references"},{"line_number":634,"context_line":"into parameters to functions."},{"line_number":635,"context_line":""},{"line_number":636,"context_line":"Implementation"},{"line_number":637,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":13,"id":"5f7c97a3_8d7bf527","line":634,"range":{"start_line":634,"start_character":0,"end_line":634,"end_character":29},"updated":"2018-06-05 10:20:55.000000000","message":"Want to reference the idea for a migration endpoint that would allow us to eventually remove all these options?","commit_id":"79c314f4da074aae8de55d53df44c751d5d260f6"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"b099ff3f4664a85d147908409ac303fce5970115","unresolved":false,"context_lines":[{"line_number":631,"context_line":"nova/virt/hardware.py to handle old options and extra specs. A first step in"},{"line_number":632,"context_line":"handling this will be to refactor any code in nova/virt/hardware.py that"},{"line_number":633,"context_line":"references hard-coded extra specs or CONF options and turn those references"},{"line_number":634,"context_line":"into parameters to functions."},{"line_number":635,"context_line":""},{"line_number":636,"context_line":"Implementation"},{"line_number":637,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":13,"id":"5f7c97a3_c27217ae","line":634,"range":{"start_line":634,"start_character":0,"end_line":634,"end_character":29},"in_reply_to":"5f7c97a3_8d7bf527","updated":"2018-06-05 12:56:32.000000000","message":"hmm, not really, no. We\u0027re still a ways away from finalizing that.","commit_id":"79c314f4da074aae8de55d53df44c751d5d260f6"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"51b6e6f9c531db3d54bf16c3b10e5c03d5e1b9db","unresolved":false,"context_lines":[{"line_number":639,"context_line":"Assignee(s)"},{"line_number":640,"context_line":"-----------"},{"line_number":641,"context_line":""},{"line_number":642,"context_line":"Primary assignees:"},{"line_number":643,"context_line":"  sahid ferdjaoui"},{"line_number":644,"context_line":"  tetsuro nakamura"},{"line_number":645,"context_line":"  jaypipes"}],"source_content_type":"text/x-rst","patch_set":13,"id":"5f7c97a3_2e0897d7","line":642,"range":{"start_line":642,"start_character":0,"end_line":642,"end_character":18},"updated":"2018-06-15 21:04:56.000000000","message":"by the way i hope i will be able to help with this is some way too even if its just testing it docs but we will see how things progress. im currently not in a postion to do much upstream work bar review.","commit_id":"79c314f4da074aae8de55d53df44c751d5d260f6"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"51b6e6f9c531db3d54bf16c3b10e5c03d5e1b9db","unresolved":false,"context_lines":[{"line_number":661,"context_line":"* Mark the ``hw:cpu_policy`` extra spec / image property deprecated"},{"line_number":662,"context_line":"* Modify the code that currently looks at the"},{"line_number":663,"context_line":"  ``hw:cpu_threads_policy\u003disolate|share`` extra spec / image property to add a"},{"line_number":664,"context_line":"  ``required\u003dHW_CPU_HYPERTHREADING`` or ``required\u003d!HW_CPU_HYPERTHREADING`` to"},{"line_number":665,"context_line":"  the request to placement"},{"line_number":666,"context_line":"* Deprecate the ``hw:cpu_threads_policy`` extra spec / image property and add"},{"line_number":667,"context_line":"  documentation explaining how to add the ``HW_CPU_HYPERTHREADING`` trait as"}],"source_content_type":"text/x-rst","patch_set":13,"id":"5f7c97a3_8e71ab7a","line":664,"range":{"start_line":664,"start_character":42,"end_line":664,"end_character":73},"updated":"2018-06-15 21:04:56.000000000","message":"has the forbidden traits proposal changed to just a negation of a required trait?\n\nif it has im fine with that but if not this should be forbidden\u003dHW_CPU_HYPERTHREADING correct?","commit_id":"79c314f4da074aae8de55d53df44c751d5d260f6"},{"author":{"_account_id":20191,"name":"Dinesh Bhor","email":"bhordinesh07@gmail.com","username":"dineshbhor"},"change_message_id":"f027dd9b8891f003562673ce96e80dd29896b981","unresolved":false,"context_lines":[{"line_number":221,"context_line":"            allocation_ratio: 1.0"},{"line_number":222,"context_line":"        VCPU:"},{"line_number":223,"context_line":"            total: 30"},{"line_number":224,"context_line":"            reserved: 0"},{"line_number":225,"context_line":"            min_unit: 1"},{"line_number":226,"context_line":"            max_unit: 30"},{"line_number":227,"context_line":"            step_size: 1"}],"source_content_type":"text/x-rst","patch_set":15,"id":"5f7c97a3_61e06b98","line":224,"range":{"start_line":224,"start_character":12,"end_line":224,"end_character":23},"updated":"2018-06-11 09:39:45.000000000","message":"There are 3 possibilities for this ``reserved`` case:\n\n1. CONF.cpu_shared_set is set\n    - Report ``CONF. reserved_host_cpus`` as ``reserved`` for VCPU.\n\n2. CONF.cpu_dedicated_set is set\n    - Report ``CONF. reserved_host_cpus`` as ``reserved`` for PCPU.\n\n3. Both CONF.cpu_shared_set and CONF.cpu_dedicated_set are set\n    - Report ``CONF. reserved_host_cpus`` as ``reserved`` for both VCPU and PCPU.\n\n\nis my understanding correct ?\n\nOR\n\ndo we want to report ``reserved`` only for PCPU?\n\nIf yes then are we going to report 0 as ``reserved`` if only CONF.cpu_shared_set is set ?","commit_id":"95f1b954bd90431e0dcd8d570353c73fc9b9527d"},{"author":{"_account_id":8768,"name":"Chris Friesen","email":"chris.friesen@windriver.com","username":"cbf123"},"change_message_id":"fa0cd4d8f096cd4de122e812549f1e5eb230f5fc","unresolved":false,"context_lines":[{"line_number":221,"context_line":"            allocation_ratio: 1.0"},{"line_number":222,"context_line":"        VCPU:"},{"line_number":223,"context_line":"            total: 30"},{"line_number":224,"context_line":"            reserved: 0"},{"line_number":225,"context_line":"            min_unit: 1"},{"line_number":226,"context_line":"            max_unit: 30"},{"line_number":227,"context_line":"            step_size: 1"}],"source_content_type":"text/x-rst","patch_set":15,"id":"5f7c97a3_402404c6","line":224,"range":{"start_line":224,"start_character":12,"end_line":224,"end_character":23},"in_reply_to":"5f7c97a3_2e9a206e","updated":"2018-06-26 15:24:30.000000000","message":"Agreed...if we\u0027re specifying cpu_dedicated_set and cpu_shared_set then those represent the totals for those two resources, and reserved_host_cpus is implied indirectly.","commit_id":"95f1b954bd90431e0dcd8d570353c73fc9b9527d"},{"author":{"_account_id":20191,"name":"Dinesh Bhor","email":"bhordinesh07@gmail.com","username":"dineshbhor"},"change_message_id":"592e9502f10f240e4e8f5f205cb98ab057064d7d","unresolved":false,"context_lines":[{"line_number":221,"context_line":"            allocation_ratio: 1.0"},{"line_number":222,"context_line":"        VCPU:"},{"line_number":223,"context_line":"            total: 30"},{"line_number":224,"context_line":"            reserved: 0"},{"line_number":225,"context_line":"            min_unit: 1"},{"line_number":226,"context_line":"            max_unit: 30"},{"line_number":227,"context_line":"            step_size: 1"}],"source_content_type":"text/x-rst","patch_set":15,"id":"5f7c97a3_d440c834","line":224,"range":{"start_line":224,"start_character":12,"end_line":224,"end_character":23},"in_reply_to":"5f7c97a3_402404c6","updated":"2018-06-27 08:13:32.000000000","message":"Sorry I completely missed the data-type of the CONF.reserved_host_cpus. It\u0027s integer and not a set. My bad!.\n\nI am not suggesting to change the data-type of  this config option.\n\nMy biggest concern is **If both the new config options are set (CONF.compute.cpu_shared_set and CONF.compute.cpu_dedicated_set) and CONF.reserved_host_cpus is also set then should we report``reserved`` cpus for both VCPU and PCPU?**\n\nOR\n\nVirt driver should not report this ``reserved`` cpus field at all but this will introduce backward compatibility issue.\n\nOR\n\nSimplest way is to introduce two new CONF options (CONF.reserved_host_vcpus and CONF.reserved_host_pcpus) as suggested by Eric.","commit_id":"95f1b954bd90431e0dcd8d570353c73fc9b9527d"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"db06ac77c7102002cba163372a245b391d699888","unresolved":false,"context_lines":[{"line_number":221,"context_line":"            allocation_ratio: 1.0"},{"line_number":222,"context_line":"        VCPU:"},{"line_number":223,"context_line":"            total: 30"},{"line_number":224,"context_line":"            reserved: 0"},{"line_number":225,"context_line":"            min_unit: 1"},{"line_number":226,"context_line":"            max_unit: 30"},{"line_number":227,"context_line":"            step_size: 1"}],"source_content_type":"text/x-rst","patch_set":15,"id":"5f7c97a3_fbd5d91b","line":224,"range":{"start_line":224,"start_character":12,"end_line":224,"end_character":23},"in_reply_to":"5f7c97a3_61e06b98","updated":"2018-06-25 20:40:11.000000000","message":"\u003e There are 3 possibilities for this ``reserved`` case:\n \u003e \n \u003e 1. CONF.cpu_shared_set is set\n \u003e - Report ``CONF. reserved_host_cpus`` as ``reserved`` for VCPU.\n \u003e \n \u003e 2. CONF.cpu_dedicated_set is set\n \u003e - Report ``CONF. reserved_host_cpus`` as ``reserved`` for PCPU.\n \u003e \n \u003e 3. Both CONF.cpu_shared_set and CONF.cpu_dedicated_set are set\n \u003e - Report ``CONF. reserved_host_cpus`` as ``reserved`` for both VCPU\n \u003e and PCPU.\n \u003e \n \u003e is my understanding correct ?\n \u003e \n \u003e OR\n \u003e \n \u003e do we want to report ``reserved`` only for PCPU?\n \u003e \n \u003e If yes then are we going to report 0 as ``reserved`` if only\n \u003e CONF.cpu_shared_set is set ?\n\nSorry for the delay. I\u0027ve been on PTO the last couple weeks.\n\nSean mentioned that the virt driver should not ever set the reserved value, and he\u0027s correct. The CONF.reserved_host_cpus existing CONF option is always set by the deployer and refers to the number of physical host processors that the deployer wishes to remove from being used by guests.\n\nUnfortunately, due to the design of NUMATopology objects and the fact that dedicated CPUs have been equivalent (up until this point) to the cpu_pinset fields of the NUMATopology objects and have no real relation to CONF.reserved_host_cpus. So, up until now, frankly, CONF.reserved_host_cpus has meant virtually nothing in reality.\n\nPersonally, I believe that CONF.reserved_host_cpus should be deprecated entirely and the new CONF.cpu_dedicated_set and CONF.cpu_shared_set options should be the only CONF options needed to determine the host physical processors that are \"reserved\" for the host (by simply looking at the host\u0027s entire set of processors and subtracting the CONF.cpu_dedicated_set plus CONF.cpu_shared_set, leaving the remaining host processors as \"reserved\".","commit_id":"95f1b954bd90431e0dcd8d570353c73fc9b9527d"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"51b6e6f9c531db3d54bf16c3b10e5c03d5e1b9db","unresolved":false,"context_lines":[{"line_number":221,"context_line":"            allocation_ratio: 1.0"},{"line_number":222,"context_line":"        VCPU:"},{"line_number":223,"context_line":"            total: 30"},{"line_number":224,"context_line":"            reserved: 0"},{"line_number":225,"context_line":"            min_unit: 1"},{"line_number":226,"context_line":"            max_unit: 30"},{"line_number":227,"context_line":"            step_size: 1"}],"source_content_type":"text/x-rst","patch_set":15,"id":"5f7c97a3_3c6a1981","line":224,"range":{"start_line":224,"start_character":12,"end_line":224,"end_character":23},"in_reply_to":"5f7c97a3_61e06b98","updated":"2018-06-15 21:04:56.000000000","message":"i dont think the virt driver should ever really be setting the reserved field.\n\nmy expectation was that the reserved filed would only ever be set using the via the openstack client.","commit_id":"95f1b954bd90431e0dcd8d570353c73fc9b9527d"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"3eb4d9d4442c9a0c385ad06b07dd6910a7466bad","unresolved":false,"context_lines":[{"line_number":221,"context_line":"            allocation_ratio: 1.0"},{"line_number":222,"context_line":"        VCPU:"},{"line_number":223,"context_line":"            total: 30"},{"line_number":224,"context_line":"            reserved: 0"},{"line_number":225,"context_line":"            min_unit: 1"},{"line_number":226,"context_line":"            max_unit: 30"},{"line_number":227,"context_line":"            step_size: 1"}],"source_content_type":"text/x-rst","patch_set":15,"id":"5f7c97a3_2e9a206e","line":224,"range":{"start_line":224,"start_character":12,"end_line":224,"end_character":23},"in_reply_to":"5f7c97a3_aa8145c4","updated":"2018-06-26 10:41:10.000000000","message":"You\u0027re suggesting changing the syntactic meaning of reserved_host_cpus, which is currently an integer (just a number of CPUs to reserve), to indicate a CPU *set* (like cpu_{dedicated|shared}_set).  We can\u0027t do that.  Not least because e.g. \u00274\u0027 would be ambiguous.\n\nIt seems to me as though reserved_host_cpus and (cpu_dedicated_set + cpu_shared_set) should be mutually exclusive.  If you\u0027re using the latter, as Jay says, the reservation is implied: it\u0027s whatever host CPUs are not included in the union of the two sets.  Otherwise, if the virt driver is reporting the inventory some other way that\u0027s not under the governance of these conf options - imagine, for example, a hypervisor on which specific processors are not identified by integer indices! - then it can make use of the reserved_host_cpus conf option (or not).  Of course, in such a situation, it may be necessary to replace reserved_host_cpus with (reserved_host_vcpus + reserved_host_pcpus) or similar, but I say don\u0027t worry about that until it comes up.","commit_id":"95f1b954bd90431e0dcd8d570353c73fc9b9527d"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"4ac89ed1c833f8c0a3d4bae544abca78befbf577","unresolved":false,"context_lines":[{"line_number":221,"context_line":"            allocation_ratio: 1.0"},{"line_number":222,"context_line":"        VCPU:"},{"line_number":223,"context_line":"            total: 30"},{"line_number":224,"context_line":"            reserved: 0"},{"line_number":225,"context_line":"            min_unit: 1"},{"line_number":226,"context_line":"            max_unit: 30"},{"line_number":227,"context_line":"            step_size: 1"}],"source_content_type":"text/x-rst","patch_set":15,"id":"5f7c97a3_6d86be67","line":224,"range":{"start_line":224,"start_character":12,"end_line":224,"end_character":23},"in_reply_to":"5f7c97a3_d440c834","updated":"2018-06-27 13:52:44.000000000","message":"To be clear, I was suggesting:\n\n- Setting cpu_{dedicated|shared}_set + reserved_host_cpus at the same time should be an error, or at least the latter should be ignored with a warning.\n- In the future, if and only if it is demanded for some real use case, we could introduce reserved_host_{v|p}cpus conf options, which would *also* be mutually exclusive with cpu_{dedicated|shared}_set.\n- We can keep reserved_host_cpus around for backward compatibility, but I would think we should eventually deprecate it, because it\u0027s now ambiguous.","commit_id":"95f1b954bd90431e0dcd8d570353c73fc9b9527d"},{"author":{"_account_id":20191,"name":"Dinesh Bhor","email":"bhordinesh07@gmail.com","username":"dineshbhor"},"change_message_id":"3e490cee170f480b1cddc2bd5a4d56984b587892","unresolved":false,"context_lines":[{"line_number":221,"context_line":"            allocation_ratio: 1.0"},{"line_number":222,"context_line":"        VCPU:"},{"line_number":223,"context_line":"            total: 30"},{"line_number":224,"context_line":"            reserved: 0"},{"line_number":225,"context_line":"            min_unit: 1"},{"line_number":226,"context_line":"            max_unit: 30"},{"line_number":227,"context_line":"            step_size: 1"}],"source_content_type":"text/x-rst","patch_set":15,"id":"5f7c97a3_aa8145c4","line":224,"range":{"start_line":224,"start_character":12,"end_line":224,"end_character":23},"in_reply_to":"5f7c97a3_fbd5d91b","updated":"2018-06-26 02:11:11.000000000","message":"Currently the ``reserved`` field of resource_class is getting used while calculating the ``capacity`` [1] of resource_class inventory. It subtracts the ``reserved`` from the ``total`` count of the available inventory from that resource_class.\n\n- If we deprecate the ``CONF.reserved_host_cpus`` and calculate the ``reserved`` on the basis of defined new CONF.compute.cpu_dedicated_set and CONF.compute.cpu_shared_set options then we have to take decision **against which resource_class (VCPU or PCPU) we have to report this ``reserved`` cpus?** OR **report ``reserved`` for both the resource_class (VCPU or PCPU) with same value?** NOTE: If we report reserved with same value then there will be incorrect calculations of ``capacity`` [1] at placement side for both VCPU and PCPU.\n\nProposal:\n- Don’t deprecate the ``CONF.reserved_host_cpus``.\n- Recommend operator to set the ``CONF.reserved_host_cpus`` as a subset of CONF.compute.cpu_dedicated_set and/or CONF.compute.cpu_shared_set (This is the current behavior- Operators are recommended to set CONF.reserved_host_cpus as a subset of CONF.vcpu_pin_set).\n- Parse the ``CONF.reserved_host_cpus`` and report ``reserved`` for both the VCPU and PCPU resource_class individually depending on subset. For ex-\n\n\n\nExample 1: CONF.reserved_host_cpus is a subset of both CONF.compute.cpu_dedicated_set and CONF.compute.cpu_shared_set.\n\n    - CONF.compute.cpu_dedicated_set \u003d 0-5\n    - CONF.compute.cpu_shared_set \u003d 6-9\n    - CONF.reserved_host_cpus \u003d 1-2,7\n    - cpu_allocation_ratio \u003d 8\n\nCOMPUTE NODE provider\n        PCPU:\n            total: 6\n            reserved: 2 (1-2 from CONF.reserved_host_cpus)\n            min_unit: 1\n            max_unit: 6\n            step_size: 1\n            allocation_ratio: 1.0\n        VCPU:\n            total: 4\n            reserved: 1 (7 from CONF.reserved_host_cpus)\n            min_unit: 1\n            max_unit: 4\n            step_size: 1\n            allocation_ratio: 8.0\n\nExample 2: CONF.reserved_host_cpus is a subset of only CONF.compute.cpu_dedicated_set\n\n    - CONF.compute.cpu_dedicated_set \u003d 0-5\n    - CONF.compute.cpu_shared_set \u003d 6-9\n    - CONF.reserved_host_cpus \u003d 1-3\n    - cpu_allocation_ratio \u003d 8\n\nCOMPUTE NODE provider\n        PCPU:\n            total: 6\n            reserved: 3 (1-3 from CONF.reserved_host_cpus)\n            min_unit: 1\n            max_unit: 6\n            step_size: 1\n            allocation_ratio: 1.0\n        VCPU:\n            total: 4\n            reserved: 0 \n            min_unit: 1\n            max_unit: 4\n            step_size: 1\n            allocation_ratio: 8.0\n\nExample 3: CONF.reserved_host_cpus not subset of any of CONF.compute.cpu_dedicated_set and CONF.compute.cpu_shared_set.\n\n    - CONF.compute.cpu_dedicated_set \u003d 0-5\n    - CONF.compute.cpu_shared_set \u003d 6-9\n    - CONF.reserved_host_cpus \u003d 11-15\n    - cpu_allocation_ratio \u003d 8\n\n\tDon’t report the inventory of VCPU and PCPU, log a warning message. \n\n\n[1] https://github.com/openstack/nova/blob/4e7672d60f4338d2de80e963ec38541ce84a2d82/nova/api/openstack/placement/objects/resource_provider.py#L1471-L1474","commit_id":"95f1b954bd90431e0dcd8d570353c73fc9b9527d"}],"specs/stein/approved/cpu-resources.rst":[{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"2d5ea36b735f83940287b11c751dd6a5bd961976","unresolved":false,"context_lines":[{"line_number":22,"context_line":"and, due to the coupling of CPU pinning with NUMA-related concepts inside the"},{"line_number":23,"context_line":"``InstanceNUMATopology`` and ``NUMATopology`` (host) objects, difficult to"},{"line_number":24,"context_line":"reason about in terms that are consistent with other classes of resource in"},{"line_number":25,"context_line":"nova."},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"Tracking of dedicated CPU resources is not done using the placement API,"},{"line_number":28,"context_line":"therefore there is no way to view the physical processor usage in the system."}],"source_content_type":"text/x-rst","patch_set":16,"id":"3f79a3b5_1f712f78","line":25,"updated":"2018-09-13 16:51:46.000000000","message":"with the fact that CPU pinning is not necessarly NUMA specific.","commit_id":"0e4a607af5828b331a6623ab89adba4fde09f77a"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"2d5ea36b735f83940287b11c751dd6a5bd961976","unresolved":false,"context_lines":[{"line_number":95,"context_line":"Use Cases"},{"line_number":96,"context_line":"---------"},{"line_number":97,"context_line":""},{"line_number":98,"context_line":"As an NFV orchestration system, I want to be able to differentiate between CPU"},{"line_number":99,"context_line":"resources that require stable performance and CPU resources that can tolerate"},{"line_number":100,"context_line":"inconsistent performance"},{"line_number":101,"context_line":""}],"source_content_type":"text/x-rst","patch_set":16,"id":"3f79a3b5_ffe8f3df","line":98,"range":{"start_line":98,"start_character":6,"end_line":98,"end_character":9},"updated":"2018-09-13 16:51:46.000000000","message":"make it more generic : as an orchestration system aiming to deliver high performance...\n\nAfter all, here comes AI/ML/coin mining/GP-GPU/pick-your-own-buzz-word/etc.","commit_id":"0e4a607af5828b331a6623ab89adba4fde09f77a"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"0179b5847c1cfc30739521219bd5c62617be719a","unresolved":false,"context_lines":[{"line_number":95,"context_line":"Use Cases"},{"line_number":96,"context_line":"---------"},{"line_number":97,"context_line":""},{"line_number":98,"context_line":"As an NFV orchestration system, I want to be able to differentiate between CPU"},{"line_number":99,"context_line":"resources that require stable performance and CPU resources that can tolerate"},{"line_number":100,"context_line":"inconsistent performance"},{"line_number":101,"context_line":""}],"source_content_type":"text/x-rst","patch_set":16,"id":"3f79a3b5_2ae7e448","line":98,"range":{"start_line":98,"start_character":6,"end_line":98,"end_character":9},"in_reply_to":"3f79a3b5_ffe8f3df","updated":"2018-09-14 15:01:05.000000000","message":"I actually prefer use cases to be quite specific, because I believe the specificity leads to clearer understanding of how the feature will actually be used.","commit_id":"0e4a607af5828b331a6623ab89adba4fde09f77a"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"2d5ea36b735f83940287b11c751dd6a5bd961976","unresolved":false,"context_lines":[{"line_number":119,"context_line":"A new ``PCPU`` resource class will be created for this purpose. It will"},{"line_number":120,"context_line":"represent a unit of guest CPU resources that is provided by a dedicated host"},{"line_number":121,"context_line":"CPU."},{"line_number":122,"context_line":""},{"line_number":123,"context_line":"CPU inventory configuration"},{"line_number":124,"context_line":"---------------------------"},{"line_number":125,"context_line":""}],"source_content_type":"text/x-rst","patch_set":16,"id":"3f79a3b5_df741739","line":122,"updated":"2018-09-13 16:51:46.000000000","message":"You should give an example about how it would impact the current amount of resources that we say \"VCPU\" at the moment.\n\nFor example, as of now, for a 8-core, no HT physical processor with a CPU alloc ratio of 1.0, we get 8 VCPU at the moment even if 4 cores are pinned.\n\nNow, what should it be? 4 PCPU and 4 VCPU, I guess.","commit_id":"0e4a607af5828b331a6623ab89adba4fde09f77a"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"0179b5847c1cfc30739521219bd5c62617be719a","unresolved":false,"context_lines":[{"line_number":119,"context_line":"A new ``PCPU`` resource class will be created for this purpose. It will"},{"line_number":120,"context_line":"represent a unit of guest CPU resources that is provided by a dedicated host"},{"line_number":121,"context_line":"CPU."},{"line_number":122,"context_line":""},{"line_number":123,"context_line":"CPU inventory configuration"},{"line_number":124,"context_line":"---------------------------"},{"line_number":125,"context_line":""}],"source_content_type":"text/x-rst","patch_set":16,"id":"3f79a3b5_aada1476","line":122,"in_reply_to":"3f79a3b5_a437b5af","updated":"2018-09-14 15:01:05.000000000","message":"Yes, exactly what Chris says. This is deployment-specific.","commit_id":"0e4a607af5828b331a6623ab89adba4fde09f77a"},{"author":{"_account_id":8768,"name":"Chris Friesen","email":"chris.friesen@windriver.com","username":"cbf123"},"change_message_id":"73e550cb8d2f2a4e74ea6eb00fa274a4d883b903","unresolved":false,"context_lines":[{"line_number":119,"context_line":"A new ``PCPU`` resource class will be created for this purpose. It will"},{"line_number":120,"context_line":"represent a unit of guest CPU resources that is provided by a dedicated host"},{"line_number":121,"context_line":"CPU."},{"line_number":122,"context_line":""},{"line_number":123,"context_line":"CPU inventory configuration"},{"line_number":124,"context_line":"---------------------------"},{"line_number":125,"context_line":""}],"source_content_type":"text/x-rst","patch_set":16,"id":"3f79a3b5_a437b5af","line":122,"in_reply_to":"3f79a3b5_df741739","updated":"2018-09-13 21:32:48.000000000","message":"Presumably the division between PCPU and VCPU would depend on how cpu_dedicated_set and cpu_shared_set are configured.","commit_id":"0e4a607af5828b331a6623ab89adba4fde09f77a"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"2d5ea36b735f83940287b11c751dd6a5bd961976","unresolved":false,"context_lines":[{"line_number":135,"context_line":"    [compute]"},{"line_number":136,"context_line":"    cpu_dedicated_set"},{"line_number":137,"context_line":"    cpu_shared_set"},{"line_number":138,"context_line":""},{"line_number":139,"context_line":"The above new CONF options will store a pinset string that indicates the"},{"line_number":140,"context_line":"physical processors that should be used for the ``PCPU`` and ``VCPU`` resource"},{"line_number":141,"context_line":"requests, respectively."}],"source_content_type":"text/x-rst","patch_set":16,"id":"3f79a3b5_c263de18","line":138,"updated":"2018-09-13 16:51:46.000000000","message":"what if the operator only sets one of the two options ? Are we for example accepting only cpu_shared_set ? (for example, see my comment on L153)","commit_id":"0e4a607af5828b331a6623ab89adba4fde09f77a"},{"author":{"_account_id":8768,"name":"Chris Friesen","email":"chris.friesen@windriver.com","username":"cbf123"},"change_message_id":"73e550cb8d2f2a4e74ea6eb00fa274a4d883b903","unresolved":false,"context_lines":[{"line_number":135,"context_line":"    [compute]"},{"line_number":136,"context_line":"    cpu_dedicated_set"},{"line_number":137,"context_line":"    cpu_shared_set"},{"line_number":138,"context_line":""},{"line_number":139,"context_line":"The above new CONF options will store a pinset string that indicates the"},{"line_number":140,"context_line":"physical processors that should be used for the ``PCPU`` and ``VCPU`` resource"},{"line_number":141,"context_line":"requests, respectively."}],"source_content_type":"text/x-rst","patch_set":16,"id":"3f79a3b5_047b0929","line":138,"in_reply_to":"3f79a3b5_c263de18","updated":"2018-09-13 21:32:48.000000000","message":"I think this is fine.  It basically devolves to \"only shared\" or \"only dedicated\".","commit_id":"0e4a607af5828b331a6623ab89adba4fde09f77a"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"2d5ea36b735f83940287b11c751dd6a5bd961976","unresolved":false,"context_lines":[{"line_number":141,"context_line":"requests, respectively."},{"line_number":142,"context_line":""},{"line_number":143,"context_line":"The two pinsets produced by the above new CONF options should be **disjoint"},{"line_number":144,"context_line":"sets**."},{"line_number":145,"context_line":""},{"line_number":146,"context_line":".. note::"},{"line_number":147,"context_line":""}],"source_content_type":"text/x-rst","patch_set":16,"id":"3f79a3b5_62ce8a2e","line":144,"updated":"2018-09-13 16:51:46.000000000","message":"if not the case, should we stop and raise an exception so the compute service doesn\u0027t start ?","commit_id":"0e4a607af5828b331a6623ab89adba4fde09f77a"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"0179b5847c1cfc30739521219bd5c62617be719a","unresolved":false,"context_lines":[{"line_number":141,"context_line":"requests, respectively."},{"line_number":142,"context_line":""},{"line_number":143,"context_line":"The two pinsets produced by the above new CONF options should be **disjoint"},{"line_number":144,"context_line":"sets**."},{"line_number":145,"context_line":""},{"line_number":146,"context_line":".. note::"},{"line_number":147,"context_line":""}],"source_content_type":"text/x-rst","patch_set":16,"id":"3f79a3b5_caf190e0","line":144,"in_reply_to":"3f79a3b5_62ce8a2e","updated":"2018-09-14 15:01:05.000000000","message":"I note below on line 160 that we can fail to start if either new option is set and the old deprecated option is also set. I suppose I can add some text to say if the new option sets are not disjoint sets, then fail to start the compute host.","commit_id":"0e4a607af5828b331a6623ab89adba4fde09f77a"},{"author":{"_account_id":8768,"name":"Chris Friesen","email":"chris.friesen@windriver.com","username":"cbf123"},"change_message_id":"73e550cb8d2f2a4e74ea6eb00fa274a4d883b903","unresolved":false,"context_lines":[{"line_number":141,"context_line":"requests, respectively."},{"line_number":142,"context_line":""},{"line_number":143,"context_line":"The two pinsets produced by the above new CONF options should be **disjoint"},{"line_number":144,"context_line":"sets**."},{"line_number":145,"context_line":""},{"line_number":146,"context_line":".. note::"},{"line_number":147,"context_line":""}],"source_content_type":"text/x-rst","patch_set":16,"id":"3f79a3b5_e4a4cda5","line":144,"in_reply_to":"3f79a3b5_62ce8a2e","updated":"2018-09-13 21:32:48.000000000","message":"I think this would make sense.","commit_id":"0e4a607af5828b331a6623ab89adba4fde09f77a"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"2d5ea36b735f83940287b11c751dd6a5bd961976","unresolved":false,"context_lines":[{"line_number":150,"context_line":"    ``CONF.cpu_shared_set``. The set difference between the entire set of"},{"line_number":151,"context_line":"    physical processors on a host system and the union of the dedicated and"},{"line_number":152,"context_line":"    shared pinsets shall represent the number of physical processors that has"},{"line_number":153,"context_line":"    been reserved for the host."},{"line_number":154,"context_line":""},{"line_number":155,"context_line":".. note::"},{"line_number":156,"context_line":""}],"source_content_type":"text/x-rst","patch_set":16,"id":"3f79a3b5_228652bc","line":153,"updated":"2018-09-13 16:51:46.000000000","message":"The default behaviour as of now is that nova gets all the CPUs, so should we have a different behaviour in case the operator uses the options ? \n\nI mean, I\u0027m totally agree with the note, I just want to make sure we accept the above.","commit_id":"0e4a607af5828b331a6623ab89adba4fde09f77a"},{"author":{"_account_id":8768,"name":"Chris Friesen","email":"chris.friesen@windriver.com","username":"cbf123"},"change_message_id":"73e550cb8d2f2a4e74ea6eb00fa274a4d883b903","unresolved":false,"context_lines":[{"line_number":150,"context_line":"    ``CONF.cpu_shared_set``. The set difference between the entire set of"},{"line_number":151,"context_line":"    physical processors on a host system and the union of the dedicated and"},{"line_number":152,"context_line":"    shared pinsets shall represent the number of physical processors that has"},{"line_number":153,"context_line":"    been reserved for the host."},{"line_number":154,"context_line":""},{"line_number":155,"context_line":".. note::"},{"line_number":156,"context_line":""}],"source_content_type":"text/x-rst","patch_set":16,"id":"3f79a3b5_2437254e","line":153,"in_reply_to":"3f79a3b5_228652bc","updated":"2018-09-13 21:32:48.000000000","message":"For backwards compatibility, I think if none of \"cpu_dedicated_set\", \"cpu_shared_set\", or \"reserved_host_cpus\" are set then nova would keep the legacy behaviour of assuming it can use all host CPUs.","commit_id":"0e4a607af5828b331a6623ab89adba4fde09f77a"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"0179b5847c1cfc30739521219bd5c62617be719a","unresolved":false,"context_lines":[{"line_number":150,"context_line":"    ``CONF.cpu_shared_set``. The set difference between the entire set of"},{"line_number":151,"context_line":"    physical processors on a host system and the union of the dedicated and"},{"line_number":152,"context_line":"    shared pinsets shall represent the number of physical processors that has"},{"line_number":153,"context_line":"    been reserved for the host."},{"line_number":154,"context_line":""},{"line_number":155,"context_line":".. note::"},{"line_number":156,"context_line":""}],"source_content_type":"text/x-rst","patch_set":16,"id":"3f79a3b5_aacd3487","line":153,"in_reply_to":"3f79a3b5_228652bc","updated":"2018-09-14 15:01:05.000000000","message":"The default behaviour right now is that nova gets its total vcpu inventory by querying libvirt for all CPUs and then subtracts the value of the CONF.reserved_host_cpus option. Nova gets its \"inventory\" (it\u0027s obviously not currently an inventory record but rather a goop of information in the NUMATopology object) for *dedicated* CPUs by examining the vcpu_pin_set CONF option (which I\u0027m proposing be deprecated).\n\nSo I suppose the only real thing that needs to be discussed here is the deprecation of the CONF.reserved_host_cpus option, since that will no longer be necessary with the new CONF.cpu_shared_set and CONF.cpu_dedicated_set options (since the operator can simply exclude certain host logical processor IDs from those two disjoint sets in order to \"reserve\" CPUs for the host)","commit_id":"0e4a607af5828b331a6623ab89adba4fde09f77a"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"2d5ea36b735f83940287b11c751dd6a5bd961976","unresolved":false,"context_lines":[{"line_number":165,"context_line":"resources. Clearly, any allocation ratio other than 1.0 doesn\u0027t make sense for"},{"line_number":166,"context_line":"dedicated guest CPU resources (the new ``PCPU`` resource class). We will add to"},{"line_number":167,"context_line":"the ``CONF.cpu_allocation_ratio`` option\u0027s help text further clarifying this"},{"line_number":168,"context_line":"now that ``PCPU`` and ``VCPU`` are fully distinct resource classes."},{"line_number":169,"context_line":""},{"line_number":170,"context_line":"For host systems that do not use a provider tree to model providers of"},{"line_number":171,"context_line":"different pools of CPU resources (such as modeling different CPU sockets or"}],"source_content_type":"text/x-rst","patch_set":16,"id":"3f79a3b5_a2bb4273","line":168,"updated":"2018-09-13 16:51:46.000000000","message":"++","commit_id":"0e4a607af5828b331a6623ab89adba4fde09f77a"},{"author":{"_account_id":8768,"name":"Chris Friesen","email":"chris.friesen@windriver.com","username":"cbf123"},"change_message_id":"54d0cd43cc5fe2f48e31933e306a40470895b8a4","unresolved":false,"context_lines":[{"line_number":173,"context_line":"single compute node resource provider will contain inventory records for"},{"line_number":174,"context_line":"``VCPU`` and/or ``PCPU`` resources."},{"line_number":175,"context_line":""},{"line_number":176,"context_line":"For host systems that *do* model CPU resource providers in a tree, the child"},{"line_number":177,"context_line":"resource providers representing each physical CPU package/socket or NUMA node"},{"line_number":178,"context_line":"will contain inventory records for ``VCPU`` and/or ``PCPU`` resources. Note"},{"line_number":179,"context_line":"that as of writing this spec, nova-compute workers do not yet support"},{"line_number":180,"context_line":"representing physical CPU packages/sockets using child resource providers. A"},{"line_number":181,"context_line":"`separate spec \u003cNUMA topology with resource providers_\u003e` covers how virt"},{"line_number":182,"context_line":"drivers can model separate NUMA nodes or physical CPU sockets using a provider"},{"line_number":183,"context_line":"tree model."},{"line_number":184,"context_line":""},{"line_number":185,"context_line":".. note::"},{"line_number":186,"context_line":""}],"source_content_type":"text/x-rst","patch_set":16,"id":"3f79a3b5_ea6f0826","line":183,"range":{"start_line":176,"start_character":0,"end_line":183,"end_character":11},"updated":"2018-09-10 18:40:33.000000000","message":"Currently with libvirt an instance which does not specify a NUMA topology is allowed to float across the whole compute node.  I think this implies that the default page size (4KB on x86) and VCPU resources must be modeled as compute node resources rather than NUMA node resources.  Similarly, I think it means that we cannot use \"strict\" affinity for the default page size even when we do have a numa_topology since we can\u0027t have accurate per-NUMA-node accounting due to the fact that we don\u0027t know which NUMA node floating instances allocated their memory from.","commit_id":"0e4a607af5828b331a6623ab89adba4fde09f77a"},{"author":{"_account_id":8768,"name":"Chris Friesen","email":"chris.friesen@windriver.com","username":"cbf123"},"change_message_id":"ada68c0595d9d142a71a5447ee63c9854776c26e","unresolved":false,"context_lines":[{"line_number":173,"context_line":"single compute node resource provider will contain inventory records for"},{"line_number":174,"context_line":"``VCPU`` and/or ``PCPU`` resources."},{"line_number":175,"context_line":""},{"line_number":176,"context_line":"For host systems that *do* model CPU resource providers in a tree, the child"},{"line_number":177,"context_line":"resource providers representing each physical CPU package/socket or NUMA node"},{"line_number":178,"context_line":"will contain inventory records for ``VCPU`` and/or ``PCPU`` resources. Note"},{"line_number":179,"context_line":"that as of writing this spec, nova-compute workers do not yet support"},{"line_number":180,"context_line":"representing physical CPU packages/sockets using child resource providers. A"},{"line_number":181,"context_line":"`separate spec \u003cNUMA topology with resource providers_\u003e` covers how virt"},{"line_number":182,"context_line":"drivers can model separate NUMA nodes or physical CPU sockets using a provider"},{"line_number":183,"context_line":"tree model."},{"line_number":184,"context_line":""},{"line_number":185,"context_line":".. note::"},{"line_number":186,"context_line":""}],"source_content_type":"text/x-rst","patch_set":16,"id":"3f79a3b5_dffa8575","line":183,"range":{"start_line":176,"start_character":0,"end_line":183,"end_character":11},"in_reply_to":"3f79a3b5_60617bd3","updated":"2018-09-17 16:59:06.000000000","message":"Okay, done.  I\u0027ve also opened https://bugs.launchpad.net/nova/+bug/1792985 since it\u0027s possible to hit the problem now.","commit_id":"0e4a607af5828b331a6623ab89adba4fde09f77a"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"7ee9dd35494ffdd641e01308b6255ee9b035e348","unresolved":false,"context_lines":[{"line_number":173,"context_line":"single compute node resource provider will contain inventory records for"},{"line_number":174,"context_line":"``VCPU`` and/or ``PCPU`` resources."},{"line_number":175,"context_line":""},{"line_number":176,"context_line":"For host systems that *do* model CPU resource providers in a tree, the child"},{"line_number":177,"context_line":"resource providers representing each physical CPU package/socket or NUMA node"},{"line_number":178,"context_line":"will contain inventory records for ``VCPU`` and/or ``PCPU`` resources. Note"},{"line_number":179,"context_line":"that as of writing this spec, nova-compute workers do not yet support"},{"line_number":180,"context_line":"representing physical CPU packages/sockets using child resource providers. A"},{"line_number":181,"context_line":"`separate spec \u003cNUMA topology with resource providers_\u003e` covers how virt"},{"line_number":182,"context_line":"drivers can model separate NUMA nodes or physical CPU sockets using a provider"},{"line_number":183,"context_line":"tree model."},{"line_number":184,"context_line":""},{"line_number":185,"context_line":".. note::"},{"line_number":186,"context_line":""}],"source_content_type":"text/x-rst","patch_set":16,"id":"3f79a3b5_60617bd3","line":183,"range":{"start_line":176,"start_character":0,"end_line":183,"end_character":11},"in_reply_to":"3f79a3b5_6aaabc71","updated":"2018-09-14 16:04:33.000000000","message":"The concern should go against https://review.openstack.org/#/c/552924/ and not this spec. Please ask your question there.","commit_id":"0e4a607af5828b331a6623ab89adba4fde09f77a"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"0179b5847c1cfc30739521219bd5c62617be719a","unresolved":false,"context_lines":[{"line_number":173,"context_line":"single compute node resource provider will contain inventory records for"},{"line_number":174,"context_line":"``VCPU`` and/or ``PCPU`` resources."},{"line_number":175,"context_line":""},{"line_number":176,"context_line":"For host systems that *do* model CPU resource providers in a tree, the child"},{"line_number":177,"context_line":"resource providers representing each physical CPU package/socket or NUMA node"},{"line_number":178,"context_line":"will contain inventory records for ``VCPU`` and/or ``PCPU`` resources. Note"},{"line_number":179,"context_line":"that as of writing this spec, nova-compute workers do not yet support"},{"line_number":180,"context_line":"representing physical CPU packages/sockets using child resource providers. A"},{"line_number":181,"context_line":"`separate spec \u003cNUMA topology with resource providers_\u003e` covers how virt"},{"line_number":182,"context_line":"drivers can model separate NUMA nodes or physical CPU sockets using a provider"},{"line_number":183,"context_line":"tree model."},{"line_number":184,"context_line":""},{"line_number":185,"context_line":".. note::"},{"line_number":186,"context_line":""}],"source_content_type":"text/x-rst","patch_set":16,"id":"3f79a3b5_6aaabc71","line":183,"range":{"start_line":176,"start_character":0,"end_line":183,"end_character":11},"in_reply_to":"3f79a3b5_ea6f0826","updated":"2018-09-14 15:01:05.000000000","message":"I\u0027m unclear on this point. Let\u0027s discuss this morning at PTG.","commit_id":"0e4a607af5828b331a6623ab89adba4fde09f77a"},{"author":{"_account_id":8768,"name":"Chris Friesen","email":"chris.friesen@windriver.com","username":"cbf123"},"change_message_id":"3a04c1e65fed73274d97d50ca190a04272c2f94f","unresolved":false,"context_lines":[{"line_number":213,"context_line":""},{"line_number":214,"context_line":"    COMPUTE NODE provider"},{"line_number":215,"context_line":"        PCPU:"},{"line_number":216,"context_line":"            total: 18"},{"line_number":217,"context_line":"            reserved: 2"},{"line_number":218,"context_line":"            min_unit: 1"},{"line_number":219,"context_line":"            max_unit: 16"},{"line_number":220,"context_line":"            step_size: 1"}],"source_content_type":"text/x-rst","patch_set":16,"id":"3f79a3b5_85ba056f","line":217,"range":{"start_line":216,"start_character":12,"end_line":217,"end_character":23},"updated":"2018-09-10 21:29:57.000000000","message":"For my own edification, why do we have the concept of \"reserved\"?  Why not just say there are 16 resources available to be allocated?\n\nIs this so we can better report stats?","commit_id":"0e4a607af5828b331a6623ab89adba4fde09f77a"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"9b90ac754ecc8561b88eabd0fe59e7de5b15a65d","unresolved":false,"context_lines":[{"line_number":213,"context_line":""},{"line_number":214,"context_line":"    COMPUTE NODE provider"},{"line_number":215,"context_line":"        PCPU:"},{"line_number":216,"context_line":"            total: 18"},{"line_number":217,"context_line":"            reserved: 2"},{"line_number":218,"context_line":"            min_unit: 1"},{"line_number":219,"context_line":"            max_unit: 16"},{"line_number":220,"context_line":"            step_size: 1"}],"source_content_type":"text/x-rst","patch_set":16,"id":"3f79a3b5_0fea8fd7","line":217,"range":{"start_line":216,"start_character":12,"end_line":217,"end_character":23},"in_reply_to":"3f79a3b5_85ba056f","updated":"2018-09-10 22:43:19.000000000","message":"We use reserved in a couple ways. The first way is to report an amount of resources that has been set aside for host use and should not be available to instances. This is kind of the long-term evolution of the CONF.reserved_host_memory and CONF.reserved_host_cpus configuration options.\n\nThe second use of reserved is to allow us a (king of hacky) way to \"take a provider offline\". Basically, by setting total\u003dreserved, we prevent the provider from being considered by the scheduler (because it will never meet any constraints for that particular resources) but we don\u0027t have to do things like delete the resource provider record (or deal with having to delete allocations records on it that refer to the \"offlined\" resource class).","commit_id":"0e4a607af5828b331a6623ab89adba4fde09f77a"},{"author":{"_account_id":8768,"name":"Chris Friesen","email":"chris.friesen@windriver.com","username":"cbf123"},"change_message_id":"3a04c1e65fed73274d97d50ca190a04272c2f94f","unresolved":false,"context_lines":[{"line_number":479,"context_line":"    indicate that a single NUMA node on a multi-NUMA-node host is meant for"},{"line_number":480,"context_line":"    guests that tolerate hyperthread siblings as dedicated CPUs."},{"line_number":481,"context_line":""},{"line_number":482,"context_line":"If the operator intentionally omits this trait then they should also only"},{"line_number":483,"context_line":"include one of each set of hyperthread siblings in ``CONF.cpu_dedicated_set``"},{"line_number":484,"context_line":"(and the sibling(s) should be omitted from ``CONF.cpu_shared_set`` as well)."},{"line_number":485,"context_line":""},{"line_number":486,"context_line":"Isolating emulator threads from guest vCPU threads"},{"line_number":487,"context_line":"--------------------------------------------------"}],"source_content_type":"text/x-rst","patch_set":16,"id":"3f79a3b5_a0060fcd","line":484,"range":{"start_line":482,"start_character":0,"end_line":484,"end_character":76},"updated":"2018-09-10 21:29:57.000000000","message":"I guess the idea here is to avoid needing to consume variable numbers of resources in placement depending on whether hw:cpu_threads_policy is \"isolate\" and whether the host has HT enabled?","commit_id":"0e4a607af5828b331a6623ab89adba4fde09f77a"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"eff965c598f9c6dee1c4580b8991b01bd2cdda67","unresolved":false,"context_lines":[{"line_number":39,"context_line":"Definitions"},{"line_number":40,"context_line":"-----------"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"**physical processor**"},{"line_number":43,"context_line":"    A single logical processor on the host machine that is associated with a"},{"line_number":44,"context_line":"    physical CPU core or hyperthread"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"**dedicated CPU**"},{"line_number":47,"context_line":"    A physical processor that has been marked to be used for a single guest"}],"source_content_type":"text/x-rst","patch_set":18,"id":"3f79a3b5_638dc528","line":44,"range":{"start_line":42,"start_character":0,"end_line":44,"end_character":36},"updated":"2018-09-18 17:00:41.000000000","message":"Note: If you place this and everything else in a \"glossary\" directive, you can reference it elsewhere in the doc using \u0027:term:`foo`\u0027","commit_id":"587bb5b10af62404f3003a503caf1dbee063a6eb"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"2a9bbc620702204a139dc11fcf383196437bcc73","unresolved":false,"context_lines":[{"line_number":39,"context_line":"Definitions"},{"line_number":40,"context_line":"-----------"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"**physical processor**"},{"line_number":43,"context_line":"    A single logical processor on the host machine that is associated with a"},{"line_number":44,"context_line":"    physical CPU core or hyperthread"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"**dedicated CPU**"},{"line_number":47,"context_line":"    A physical processor that has been marked to be used for a single guest"}],"source_content_type":"text/x-rst","patch_set":18,"id":"3f79a3b5_46c19ee3","line":44,"range":{"start_line":42,"start_character":0,"end_line":44,"end_character":36},"in_reply_to":"3f79a3b5_638dc528","updated":"2018-09-19 16:44:32.000000000","message":"good to know, thanks Stephen!","commit_id":"587bb5b10af62404f3003a503caf1dbee063a6eb"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"eff965c598f9c6dee1c4580b8991b01bd2cdda67","unresolved":false,"context_lines":[{"line_number":134,"context_line":""},{"line_number":135,"context_line":"    [compute]"},{"line_number":136,"context_line":"    cpu_dedicated_set"},{"line_number":137,"context_line":"    cpu_shared_set"},{"line_number":138,"context_line":""},{"line_number":139,"context_line":"The above new CONF options will store a pinset string that indicates the"},{"line_number":140,"context_line":"physical processors that should be used for the ``PCPU`` and ``VCPU`` resource"}],"source_content_type":"text/x-rst","patch_set":18,"id":"3f79a3b5_63baa5e1","line":137,"range":{"start_line":137,"start_character":4,"end_line":137,"end_character":18},"updated":"2018-09-18 17:00:41.000000000","message":"This already exists owing to the emulator thread pool spec, which was completed in Rocky [1] (it just hasn\u0027t been moved yet)\n\n[1] http://specs.openstack.org/openstack/nova-specs/specs/rocky/approved/libvirt-emulator-threads-policy.html","commit_id":"587bb5b10af62404f3003a503caf1dbee063a6eb"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"758914ddd1b5f0c69075ef7d08072d11984e8dc6","unresolved":false,"context_lines":[{"line_number":134,"context_line":""},{"line_number":135,"context_line":"    [compute]"},{"line_number":136,"context_line":"    cpu_dedicated_set"},{"line_number":137,"context_line":"    cpu_shared_set"},{"line_number":138,"context_line":""},{"line_number":139,"context_line":"The above new CONF options will store a pinset string that indicates the"},{"line_number":140,"context_line":"physical processors that should be used for the ``PCPU`` and ``VCPU`` resource"}],"source_content_type":"text/x-rst","patch_set":18,"id":"3f79a3b5_13f20306","line":137,"range":{"start_line":137,"start_character":4,"end_line":137,"end_character":18},"in_reply_to":"3f79a3b5_63baa5e1","updated":"2018-09-19 17:55:07.000000000","message":"Done","commit_id":"587bb5b10af62404f3003a503caf1dbee063a6eb"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"eff965c598f9c6dee1c4580b8991b01bd2cdda67","unresolved":false,"context_lines":[{"line_number":162,"context_line":"    can fail to start the nova-compute worker if either new option is set while"},{"line_number":163,"context_line":"    the older option is also set."},{"line_number":164,"context_line":""},{"line_number":165,"context_line":"It is important to point out that the existing ``CONF.cpu_allocation_ratio``"},{"line_number":166,"context_line":"refers only to the ``VCPU`` resource class -- in other words, shared guest CPU"},{"line_number":167,"context_line":"resources. Clearly, any allocation ratio other than 1.0 doesn\u0027t make sense for"},{"line_number":168,"context_line":"dedicated guest CPU resources (the new ``PCPU`` resource class). We will add to"}],"source_content_type":"text/x-rst","patch_set":18,"id":"3f79a3b5_e3c9d559","line":165,"range":{"start_line":165,"start_character":54,"end_line":165,"end_character":74},"updated":"2018-09-18 17:00:41.000000000","message":"I think I suggested renaming this option earlier but we decided not to because...something? If so, maybe call that out.","commit_id":"587bb5b10af62404f3003a503caf1dbee063a6eb"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"2a9bbc620702204a139dc11fcf383196437bcc73","unresolved":false,"context_lines":[{"line_number":162,"context_line":"    can fail to start the nova-compute worker if either new option is set while"},{"line_number":163,"context_line":"    the older option is also set."},{"line_number":164,"context_line":""},{"line_number":165,"context_line":"It is important to point out that the existing ``CONF.cpu_allocation_ratio``"},{"line_number":166,"context_line":"refers only to the ``VCPU`` resource class -- in other words, shared guest CPU"},{"line_number":167,"context_line":"resources. Clearly, any allocation ratio other than 1.0 doesn\u0027t make sense for"},{"line_number":168,"context_line":"dedicated guest CPU resources (the new ``PCPU`` resource class). We will add to"}],"source_content_type":"text/x-rst","patch_set":18,"id":"3f79a3b5_a67672d7","line":165,"range":{"start_line":165,"start_character":54,"end_line":165,"end_character":74},"in_reply_to":"3f79a3b5_d57a3db9","updated":"2018-09-19 16:44:32.000000000","message":"Definitely don\u0027t want to rename this option (in fact, I hate the fact that this option even exists :) ). My long-term preference is to have allocation ratios for all resource classes in a provider\u0027s inventory specified in the same way (via an inventory YAML file of sorts).\n\nIn any case, this particular spec doesn\u0027t get into any of that :)","commit_id":"587bb5b10af62404f3003a503caf1dbee063a6eb"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"07cbc1260f5b155ca7001889c5730fdf98f16b7b","unresolved":false,"context_lines":[{"line_number":162,"context_line":"    can fail to start the nova-compute worker if either new option is set while"},{"line_number":163,"context_line":"    the older option is also set."},{"line_number":164,"context_line":""},{"line_number":165,"context_line":"It is important to point out that the existing ``CONF.cpu_allocation_ratio``"},{"line_number":166,"context_line":"refers only to the ``VCPU`` resource class -- in other words, shared guest CPU"},{"line_number":167,"context_line":"resources. Clearly, any allocation ratio other than 1.0 doesn\u0027t make sense for"},{"line_number":168,"context_line":"dedicated guest CPU resources (the new ``PCPU`` resource class). We will add to"}],"source_content_type":"text/x-rst","patch_set":18,"id":"3f79a3b5_d57a3db9","line":165,"range":{"start_line":165,"start_character":54,"end_line":165,"end_character":74},"in_reply_to":"3f79a3b5_e3c9d559","updated":"2018-09-19 08:50:59.000000000","message":"Renaming it to \u0027vcpu_allocation_ratio\u0027, that is","commit_id":"587bb5b10af62404f3003a503caf1dbee063a6eb"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"eff965c598f9c6dee1c4580b8991b01bd2cdda67","unresolved":false,"context_lines":[{"line_number":328,"context_line":"The problem with flavors.vcpus \u003d 0"},{"line_number":329,"context_line":"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"},{"line_number":330,"context_line":""},{"line_number":331,"context_line":"It is not currently possible for an admin to set the ``flavor.vcpus`` value to"},{"line_number":332,"context_line":"``0``. Attempting to do so results in a failure::"},{"line_number":333,"context_line":""},{"line_number":334,"context_line":"    stack@ubuntu:~$ openstack flavor create f1 --vcpus 0"}],"source_content_type":"text/x-rst","patch_set":18,"id":"3f79a3b5_43e9a97c","line":331,"range":{"start_line":331,"start_character":55,"end_line":331,"end_character":67},"updated":"2018-09-18 17:00:41.000000000","message":"I\u0027m guessing we\u0027ll want to eventually deprecated this (and all resource related attributes?) in favour of the placement\u0027y extra specs?","commit_id":"587bb5b10af62404f3003a503caf1dbee063a6eb"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"2a9bbc620702204a139dc11fcf383196437bcc73","unresolved":false,"context_lines":[{"line_number":328,"context_line":"The problem with flavors.vcpus \u003d 0"},{"line_number":329,"context_line":"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"},{"line_number":330,"context_line":""},{"line_number":331,"context_line":"It is not currently possible for an admin to set the ``flavor.vcpus`` value to"},{"line_number":332,"context_line":"``0``. Attempting to do so results in a failure::"},{"line_number":333,"context_line":""},{"line_number":334,"context_line":"    stack@ubuntu:~$ openstack flavor create f1 --vcpus 0"}],"source_content_type":"text/x-rst","patch_set":18,"id":"3f79a3b5_8677b6d1","line":331,"range":{"start_line":331,"start_character":55,"end_line":331,"end_character":67},"in_reply_to":"3f79a3b5_43e9a97c","updated":"2018-09-19 16:44:32.000000000","message":"eventually, yes, but that\u0027s something I didn\u0027t want to get in the weeds about.","commit_id":"587bb5b10af62404f3003a503caf1dbee063a6eb"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"eff965c598f9c6dee1c4580b8991b01bd2cdda67","unresolved":false,"context_lines":[{"line_number":397,"context_line":"requested 4 dedicated CPUs in inventory. The extra specs (or image properties)"},{"line_number":398,"context_line":"for the guest would look like this::"},{"line_number":399,"context_line":""},{"line_number":400,"context_line":"    resources1:PCPU\u003d1"},{"line_number":401,"context_line":"    resources2:PCPU\u003d1"},{"line_number":402,"context_line":"    resources3:PCPU\u003d1"},{"line_number":403,"context_line":"    resources4:PCPU\u003d1"}],"source_content_type":"text/x-rst","patch_set":18,"id":"3f79a3b5_a353dd39","line":400,"range":{"start_line":400,"start_character":4,"end_line":400,"end_character":21},"updated":"2018-09-18 17:00:41.000000000","message":"Not really related to this spec, but I wish we could just write this as:\n\n  resources1:PCPU\u003d4:policy\u003dnone\n\nOr something. However, I know \u0027group_policy\u003d\u0027 determines how different request groups are tied together and I\u0027m guessing a request group must match 1:1 with a resource provider?","commit_id":"587bb5b10af62404f3003a503caf1dbee063a6eb"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"2a9bbc620702204a139dc11fcf383196437bcc73","unresolved":false,"context_lines":[{"line_number":397,"context_line":"requested 4 dedicated CPUs in inventory. The extra specs (or image properties)"},{"line_number":398,"context_line":"for the guest would look like this::"},{"line_number":399,"context_line":""},{"line_number":400,"context_line":"    resources1:PCPU\u003d1"},{"line_number":401,"context_line":"    resources2:PCPU\u003d1"},{"line_number":402,"context_line":"    resources3:PCPU\u003d1"},{"line_number":403,"context_line":"    resources4:PCPU\u003d1"}],"source_content_type":"text/x-rst","patch_set":18,"id":"3f79a3b5_a62432c7","line":400,"range":{"start_line":400,"start_character":4,"end_line":400,"end_character":21},"in_reply_to":"3f79a3b5_a353dd39","updated":"2018-09-19 16:44:32.000000000","message":"So do I. See my rejected/abandoned spec here:\n\nhttps://review.openstack.org/#/c/560974/","commit_id":"587bb5b10af62404f3003a503caf1dbee063a6eb"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"eff965c598f9c6dee1c4580b8991b01bd2cdda67","unresolved":false,"context_lines":[{"line_number":440,"context_line":"    It is important to point out that the **assignment** of a host CPU to a"},{"line_number":441,"context_line":"    guest CPU is not relevant to the request for an amount of either ``VCPU``"},{"line_number":442,"context_line":"    or ``PCPU`` resources. The assignment (pinning) of host CPUs to guest CPUs"},{"line_number":443,"context_line":"    is done by the virt driver in conjunction with the nova/virt/hardware.py"},{"line_number":444,"context_line":"    module and does not affect the total amount of requested resources asked"},{"line_number":445,"context_line":"    from the placement service"},{"line_number":446,"context_line":""}],"source_content_type":"text/x-rst","patch_set":18,"id":"3f79a3b5_230eed3c","line":443,"range":{"start_line":443,"start_character":55,"end_line":443,"end_character":76},"updated":"2018-09-18 17:00:41.000000000","message":"``literal`` (there had to be one)","commit_id":"587bb5b10af62404f3003a503caf1dbee063a6eb"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"758914ddd1b5f0c69075ef7d08072d11984e8dc6","unresolved":false,"context_lines":[{"line_number":440,"context_line":"    It is important to point out that the **assignment** of a host CPU to a"},{"line_number":441,"context_line":"    guest CPU is not relevant to the request for an amount of either ``VCPU``"},{"line_number":442,"context_line":"    or ``PCPU`` resources. The assignment (pinning) of host CPUs to guest CPUs"},{"line_number":443,"context_line":"    is done by the virt driver in conjunction with the nova/virt/hardware.py"},{"line_number":444,"context_line":"    module and does not affect the total amount of requested resources asked"},{"line_number":445,"context_line":"    from the placement service"},{"line_number":446,"context_line":""}],"source_content_type":"text/x-rst","patch_set":18,"id":"3f79a3b5_13cbe3a3","line":443,"range":{"start_line":443,"start_character":55,"end_line":443,"end_character":76},"in_reply_to":"3f79a3b5_230eed3c","updated":"2018-09-19 17:55:07.000000000","message":"Done","commit_id":"587bb5b10af62404f3003a503caf1dbee063a6eb"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"2a9bbc620702204a139dc11fcf383196437bcc73","unresolved":false,"context_lines":[{"line_number":440,"context_line":"    It is important to point out that the **assignment** of a host CPU to a"},{"line_number":441,"context_line":"    guest CPU is not relevant to the request for an amount of either ``VCPU``"},{"line_number":442,"context_line":"    or ``PCPU`` resources. The assignment (pinning) of host CPUs to guest CPUs"},{"line_number":443,"context_line":"    is done by the virt driver in conjunction with the nova/virt/hardware.py"},{"line_number":444,"context_line":"    module and does not affect the total amount of requested resources asked"},{"line_number":445,"context_line":"    from the placement service"},{"line_number":446,"context_line":""}],"source_content_type":"text/x-rst","patch_set":18,"id":"3f79a3b5_862576c1","line":443,"range":{"start_line":443,"start_character":55,"end_line":443,"end_character":76},"in_reply_to":"3f79a3b5_230eed3c","updated":"2018-09-19 16:44:32.000000000","message":"LOL. I can change if need to respin.","commit_id":"587bb5b10af62404f3003a503caf1dbee063a6eb"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"eff965c598f9c6dee1c4580b8991b01bd2cdda67","unresolved":false,"context_lines":[{"line_number":467,"context_line":"efficiently filter out compute nodes that do not meet the basic quantitative"},{"line_number":468,"context_line":"resource requirements indicated by the ``PCPU`` and ``VCPU`` resource classes."},{"line_number":469,"context_line":""},{"line_number":470,"context_line":"We propose to add a new standard trait called ``HW_CPU_HYPERTHREADING`` that"},{"line_number":471,"context_line":"could decorate a resource provider indicating that hyperthreading is enabled on"},{"line_number":472,"context_line":"the provider. Operators of resource-constrained systems would be able to"},{"line_number":473,"context_line":"decorate a single NUMA node resource provider on a multi-socket system with"},{"line_number":474,"context_line":"this ``HW_CPU_HYPERTHREADING`` trait to \"carve out\" a part of the host system"},{"line_number":475,"context_line":"for guests that can tolerate hyperthread siblings providing CPU resources."},{"line_number":476,"context_line":""},{"line_number":477,"context_line":".. note::"},{"line_number":478,"context_line":""},{"line_number":479,"context_line":"    The ``HW_CPU_HYPERTHREADING`` trait will need to be among the traits that"},{"line_number":480,"context_line":"    the virt driver cannot always override, since the operator may want to"},{"line_number":481,"context_line":"    indicate that a single NUMA node on a multi-NUMA-node host is meant for"},{"line_number":482,"context_line":"    guests that tolerate hyperthread siblings as dedicated CPUs."},{"line_number":483,"context_line":""},{"line_number":484,"context_line":"If the operator intentionally omits this trait then they should also only"},{"line_number":485,"context_line":"include one of each set of hyperthread siblings in ``CONF.cpu_dedicated_set``"},{"line_number":486,"context_line":"(and the sibling(s) should be omitted from ``CONF.cpu_shared_set`` as well)."},{"line_number":487,"context_line":""},{"line_number":488,"context_line":"Isolating emulator threads from guest vCPU threads"},{"line_number":489,"context_line":"--------------------------------------------------"}],"source_content_type":"text/x-rst","patch_set":18,"id":"3f79a3b5_5e35fea6","line":486,"range":{"start_line":470,"start_character":0,"end_line":486,"end_character":76},"updated":"2018-09-18 17:00:41.000000000","message":"[Thinking out loud]\n\nA recent (sadly internal) mail from Jon Snow has got me thinking on this. From what I can tell, RHEV approaches how hyperthreads are used differently from OpenStack. Whereas OpenStack considers them to be full and equal cores, RHEV considers their use in this way as an optional thing to be toggled. The ovirt \"spec\" to add said toggle probably covers this best [1].\n\nWhile the ship has long since sailed on adopting the ovirt approach, I do wonder if we should simply add a flag to enable/disable accounting for hyperthreads are \"real cores\" in nova? This would naturally have to default to True, but it would avoid the need to skip hyperthread cores for \u0027cpu_dedicated_set\u0027, particularly in the (likely) case that all cores have been assigned to this. It would also be a very easy toggle to expose in whatever deployment tooling you might be using.\n\nOn the flipside of this, it doesn\u0027t necessary get rid of the need for traits (though I\u0027d argue host aggregates should be necessary here, given that you\u0027re really handling different workloads) and simply configuring \u0027cpu_dedicated_set\u0027 appropriately is a perfectly valid thing to do. Still, it\u0027s worth mentioning.\n\n[1] https://ovirt.org/develop/release-management/features/sla/cpu-thread-handling/","commit_id":"587bb5b10af62404f3003a503caf1dbee063a6eb"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"eff965c598f9c6dee1c4580b8991b01bd2cdda67","unresolved":false,"context_lines":[{"line_number":499,"context_line":""},{"line_number":500,"context_line":"    There is a separate spec_ that discusses a change to how the virt driver"},{"line_number":501,"context_line":"    would determine which host CPUs those isolate emulator threads would run"},{"line_number":502,"context_line":"    on, but the outcome of that spec does not affect the resource accounting"},{"line_number":503,"context_line":"    that this spec focuses on"},{"line_number":504,"context_line":""},{"line_number":505,"context_line":".. _spec: https://review.openstack.org/#/c/511188/"},{"line_number":506,"context_line":""}],"source_content_type":"text/x-rst","patch_set":18,"id":"3f79a3b5_fe1c0a14","line":503,"range":{"start_line":502,"start_character":8,"end_line":503,"end_character":29},"updated":"2018-09-18 17:00:41.000000000","message":"That\u0027s not true. If emulator_threads_policy\u003disolate then there is going to be an additional core in use that placement doesn\u0027t know about. IIRC, these are reported via compute driver overhead but there\u0027s no mention of that anywhere in this spec. We need to call that out, IMO.\n\nThe alternative, which I would _much_ rather, is to get rid of the entire darn \u0027hw:emulator_threads_policy\u0027, much as we\u0027re getting rid of \u0027hw:cpu_policy\u0027, and simply assume the presence of \u0027cpu_shared_set\u0027 means the emulator threads for all instances with PCPUs must be separate and placed on cores from this set. FWIW, Sahid doesn\u0027t like this idea but I don\u0027t think the reasons against it\u0027s removal are good enough to justify this options continued existence in the new world of placement.","commit_id":"587bb5b10af62404f3003a503caf1dbee063a6eb"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"07cbc1260f5b155ca7001889c5730fdf98f16b7b","unresolved":false,"context_lines":[{"line_number":499,"context_line":""},{"line_number":500,"context_line":"    There is a separate spec_ that discusses a change to how the virt driver"},{"line_number":501,"context_line":"    would determine which host CPUs those isolate emulator threads would run"},{"line_number":502,"context_line":"    on, but the outcome of that spec does not affect the resource accounting"},{"line_number":503,"context_line":"    that this spec focuses on"},{"line_number":504,"context_line":""},{"line_number":505,"context_line":".. _spec: https://review.openstack.org/#/c/511188/"},{"line_number":506,"context_line":""}],"source_content_type":"text/x-rst","patch_set":18,"id":"3f79a3b5_b51d4174","line":503,"range":{"start_line":502,"start_character":8,"end_line":503,"end_character":29},"in_reply_to":"3f79a3b5_141c4564","updated":"2018-09-19 08:50:59.000000000","message":"\u003e Are you suggesting we would no longer support isolated emulator\n \u003e threads in the case where cpu_shared_set is empty and all host CPUs\n \u003e are in cpu_dedicated_set?\n\nYup\n\n \u003e If we get rid of \u0027hw:emulator_threads_policy\u0027, how would a guest\n \u003e express the desire to have the emulator threads run separately from\n \u003e the guest vCPU threads?  Or would we simply *always* do that?\n\nThe latter. IMO, if you have workloads that require doing this, there\u0027s a good chance they\u0027re real-time workloads and therefore would be in their own aggregate. Simply setting some cores aside on these hosts would resolve this issue.\n\n \u003e If we do it always, and only on \"shared\" host CPUs, that would seem\n \u003e to imply that we\u0027d need to specify at least one \"shared\" host CPU\n \u003e per compute node.\n\nNot quite. It would imply that we\u0027d need to specify at least one \"shared\" host CPU where we want to isolate emulator threads. Note that this is already the case if you use \u0027hw:emulator_threads_policy\u003dshared\u0027. In effect, all that we\u0027d be getting rid of is the ability to set aside a core *per instance* (e.g. \u0027hw:emulator_threads_policy\u003disolate\u0027) which, in hindsight, seems like a inferior option compared to shared pools.","commit_id":"587bb5b10af62404f3003a503caf1dbee063a6eb"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"55c67104f3b5d4e254437803bebcc16de3109f70","unresolved":false,"context_lines":[{"line_number":499,"context_line":""},{"line_number":500,"context_line":"    There is a separate spec_ that discusses a change to how the virt driver"},{"line_number":501,"context_line":"    would determine which host CPUs those isolate emulator threads would run"},{"line_number":502,"context_line":"    on, but the outcome of that spec does not affect the resource accounting"},{"line_number":503,"context_line":"    that this spec focuses on"},{"line_number":504,"context_line":""},{"line_number":505,"context_line":".. _spec: https://review.openstack.org/#/c/511188/"},{"line_number":506,"context_line":""}],"source_content_type":"text/x-rst","patch_set":18,"id":"3f79a3b5_e10a14cf","line":503,"range":{"start_line":502,"start_character":8,"end_line":503,"end_character":29},"in_reply_to":"3f79a3b5_66ecdaf3","updated":"2018-09-19 16:17:03.000000000","message":"\u003e Doing this would certainly simplify the code.  It would reduce\n \u003e flexibility a bit, but maybe that\u0027s a reasonable tradeoff.\n\nIndeed. However, I don\u0027t think that flexibility gives us anything we really need and until someone shows me proof to the contrary, I\u0027ll continue to believe this :) The shared pool model just seems like a better idea in every single way.\n\n \u003e Just for clarity, I assume we would not try to track consumption of\n \u003e the \"VCPU\" resource by the emulator threads under the assumption\n \u003e that most of the time it won\u0027t be a problem?\n\nCorrect. If your instance is using shared CPUs, the assumption is that anything could be stealing resources up to and including the host kernel itself. Again, this is a non-issue in my mind.","commit_id":"587bb5b10af62404f3003a503caf1dbee063a6eb"},{"author":{"_account_id":8768,"name":"Chris Friesen","email":"chris.friesen@windriver.com","username":"cbf123"},"change_message_id":"8b07fadee6afcd5971143ff7e74d02580df7d3ce","unresolved":false,"context_lines":[{"line_number":499,"context_line":""},{"line_number":500,"context_line":"    There is a separate spec_ that discusses a change to how the virt driver"},{"line_number":501,"context_line":"    would determine which host CPUs those isolate emulator threads would run"},{"line_number":502,"context_line":"    on, but the outcome of that spec does not affect the resource accounting"},{"line_number":503,"context_line":"    that this spec focuses on"},{"line_number":504,"context_line":""},{"line_number":505,"context_line":".. _spec: https://review.openstack.org/#/c/511188/"},{"line_number":506,"context_line":""}],"source_content_type":"text/x-rst","patch_set":18,"id":"3f79a3b5_66ecdaf3","line":503,"range":{"start_line":502,"start_character":8,"end_line":503,"end_character":29},"in_reply_to":"3f79a3b5_b51d4174","updated":"2018-09-19 15:39:19.000000000","message":"Doing this would certainly simplify the code.  It would reduce flexibility a bit, but maybe that\u0027s a reasonable tradeoff.\n\nJust for clarity, I assume we would not try to track consumption of the \"VCPU\" resource by the emulator threads under the assumption that most of the time it won\u0027t be a problem?","commit_id":"587bb5b10af62404f3003a503caf1dbee063a6eb"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"758914ddd1b5f0c69075ef7d08072d11984e8dc6","unresolved":false,"context_lines":[{"line_number":499,"context_line":""},{"line_number":500,"context_line":"    There is a separate spec_ that discusses a change to how the virt driver"},{"line_number":501,"context_line":"    would determine which host CPUs those isolate emulator threads would run"},{"line_number":502,"context_line":"    on, but the outcome of that spec does not affect the resource accounting"},{"line_number":503,"context_line":"    that this spec focuses on"},{"line_number":504,"context_line":""},{"line_number":505,"context_line":".. _spec: https://review.openstack.org/#/c/511188/"},{"line_number":506,"context_line":""}],"source_content_type":"text/x-rst","patch_set":18,"id":"3f79a3b5_f33c2793","line":503,"range":{"start_line":502,"start_character":8,"end_line":503,"end_character":29},"in_reply_to":"3f79a3b5_fe1c0a14","updated":"2018-09-19 17:55:07.000000000","message":"Added a short note about how we might be eventually able to get rid of the emulator_threads_policy switch entirely.","commit_id":"587bb5b10af62404f3003a503caf1dbee063a6eb"},{"author":{"_account_id":8768,"name":"Chris Friesen","email":"chris.friesen@windriver.com","username":"cbf123"},"change_message_id":"f051d868e7af3f7a46d903c5e98dbc94fdb7ed74","unresolved":false,"context_lines":[{"line_number":499,"context_line":""},{"line_number":500,"context_line":"    There is a separate spec_ that discusses a change to how the virt driver"},{"line_number":501,"context_line":"    would determine which host CPUs those isolate emulator threads would run"},{"line_number":502,"context_line":"    on, but the outcome of that spec does not affect the resource accounting"},{"line_number":503,"context_line":"    that this spec focuses on"},{"line_number":504,"context_line":""},{"line_number":505,"context_line":".. _spec: https://review.openstack.org/#/c/511188/"},{"line_number":506,"context_line":""}],"source_content_type":"text/x-rst","patch_set":18,"id":"3f79a3b5_141c4564","line":503,"range":{"start_line":502,"start_character":8,"end_line":503,"end_character":29},"in_reply_to":"3f79a3b5_fe1c0a14","updated":"2018-09-18 17:49:24.000000000","message":"Are you suggesting we would no longer support isolated emulator threads in the case where cpu_shared_set is empty and all host CPUs are in cpu_dedicated_set?\n\nIf we get rid of \u0027hw:emulator_threads_policy\u0027, how would a guest express the desire to have the emulator threads run separately from the guest vCPU threads?  Or would we simply *always* do that?\n\nIf we do it always, and only on \"shared\" host CPUs, that would seem to imply that we\u0027d need to specify at least one \"shared\" host CPU per compute node.","commit_id":"587bb5b10af62404f3003a503caf1dbee063a6eb"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"eff965c598f9c6dee1c4580b8991b01bd2cdda67","unresolved":false,"context_lines":[{"line_number":502,"context_line":"    on, but the outcome of that spec does not affect the resource accounting"},{"line_number":503,"context_line":"    that this spec focuses on"},{"line_number":504,"context_line":""},{"line_number":505,"context_line":".. _spec: https://review.openstack.org/#/c/511188/"},{"line_number":506,"context_line":""},{"line_number":507,"context_line":"Example flavor configurations"},{"line_number":508,"context_line":"-----------------------------"}],"source_content_type":"text/x-rst","patch_set":18,"id":"3f79a3b5_3e404206","line":505,"range":{"start_line":505,"start_character":10,"end_line":505,"end_character":50},"updated":"2018-09-18 17:00:41.000000000","message":"Can you use the merged link (or \u0027doc\u0027 cross-references) http://specs.openstack.org/openstack/nova-specs/specs/rocky/approved/libvirt-emulator-threads-policy.html","commit_id":"587bb5b10af62404f3003a503caf1dbee063a6eb"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"55c67104f3b5d4e254437803bebcc16de3109f70","unresolved":false,"context_lines":[{"line_number":502,"context_line":"    on, but the outcome of that spec does not affect the resource accounting"},{"line_number":503,"context_line":"    that this spec focuses on"},{"line_number":504,"context_line":""},{"line_number":505,"context_line":".. _spec: https://review.openstack.org/#/c/511188/"},{"line_number":506,"context_line":""},{"line_number":507,"context_line":"Example flavor configurations"},{"line_number":508,"context_line":"-----------------------------"}],"source_content_type":"text/x-rst","patch_set":18,"id":"3f79a3b5_a1f89cc3","line":505,"range":{"start_line":505,"start_character":10,"end_line":505,"end_character":50},"in_reply_to":"3f79a3b5_3e404206","updated":"2018-09-19 16:17:03.000000000","message":"Definitely use the link as our \"migrate approved scripts\" tool likely don\u0027t check for and update these cross-references.","commit_id":"587bb5b10af62404f3003a503caf1dbee063a6eb"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"758914ddd1b5f0c69075ef7d08072d11984e8dc6","unresolved":false,"context_lines":[{"line_number":502,"context_line":"    on, but the outcome of that spec does not affect the resource accounting"},{"line_number":503,"context_line":"    that this spec focuses on"},{"line_number":504,"context_line":""},{"line_number":505,"context_line":".. _spec: https://review.openstack.org/#/c/511188/"},{"line_number":506,"context_line":""},{"line_number":507,"context_line":"Example flavor configurations"},{"line_number":508,"context_line":"-----------------------------"}],"source_content_type":"text/x-rst","patch_set":18,"id":"3f79a3b5_3305bfc2","line":505,"range":{"start_line":505,"start_character":10,"end_line":505,"end_character":50},"in_reply_to":"3f79a3b5_3e404206","updated":"2018-09-19 17:55:07.000000000","message":"Done","commit_id":"587bb5b10af62404f3003a503caf1dbee063a6eb"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"eff965c598f9c6dee1c4580b8991b01bd2cdda67","unresolved":false,"context_lines":[{"line_number":572,"context_line":"    trait2:HW_CPU_HYPERTHREADING\u003drequired"},{"line_number":573,"context_line":"    group_policy\u003disolate"},{"line_number":574,"context_line":""},{"line_number":575,"context_line":".. note::"},{"line_number":576,"context_line":""},{"line_number":577,"context_line":"    This particular use case / scenario will not be supported until the"},{"line_number":578,"context_line":"    `spec about NUMA resource providers \u003cNUMA topology with resource"},{"line_number":579,"context_line":"    providers_\u003e` is implemented, since until that happens, there will only be a"},{"line_number":580,"context_line":"    single resource provider representing the compute node."},{"line_number":581,"context_line":""},{"line_number":582,"context_line":".. note::"},{"line_number":583,"context_line":""}],"source_content_type":"text/x-rst","patch_set":18,"id":"3f79a3b5_1ed78624","line":580,"range":{"start_line":575,"start_character":0,"end_line":580,"end_character":59},"updated":"2018-09-18 17:00:41.000000000","message":"(Thanks for repeating this. It does help drive the message home :))","commit_id":"587bb5b10af62404f3003a503caf1dbee063a6eb"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"eff965c598f9c6dee1c4580b8991b01bd2cdda67","unresolved":false,"context_lines":[{"line_number":625,"context_line":"This proposal should actually make the CPU resource tracking easier to reason"},{"line_number":626,"context_line":"about and understand for end users by making the inventory of both shared and"},{"line_number":627,"context_line":"dedicated CPU resources consistent."},{"line_number":628,"context_line":""},{"line_number":629,"context_line":"Performance Impact"},{"line_number":630,"context_line":"------------------"},{"line_number":631,"context_line":""}],"source_content_type":"text/x-rst","patch_set":18,"id":"3f79a3b5_7e8d5a2f","line":628,"updated":"2018-09-18 17:00:41.000000000","message":"Does the validation of \u0027flavor.vcpus\u0027 happen in the client, currently? If so, to use any of this functionality users would need a new version of osc/novaclient, right?","commit_id":"587bb5b10af62404f3003a503caf1dbee063a6eb"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"758914ddd1b5f0c69075ef7d08072d11984e8dc6","unresolved":false,"context_lines":[{"line_number":625,"context_line":"This proposal should actually make the CPU resource tracking easier to reason"},{"line_number":626,"context_line":"about and understand for end users by making the inventory of both shared and"},{"line_number":627,"context_line":"dedicated CPU resources consistent."},{"line_number":628,"context_line":""},{"line_number":629,"context_line":"Performance Impact"},{"line_number":630,"context_line":"------------------"},{"line_number":631,"context_line":""}],"source_content_type":"text/x-rst","patch_set":18,"id":"3f79a3b5_338fff23","line":628,"in_reply_to":"3f79a3b5_7e8d5a2f","updated":"2018-09-19 17:55:07.000000000","message":"Hmm, I don\u0027t believe flavor.vcpus is validated in the client:\n\nhttps://github.com/openstack/python-novaclient/blob/9d8eda8b824d2cd106e4bb75dae6dcd4399ca343/novaclient/v2/flavors.py#L208\n\nOr at least, the client doesn\u0027t validate that \"vcpus\" is anything but an integer (0 included).\n\nThe validation for this is on the server side:\n\nhttps://github.com/openstack/nova/blob/master/nova/api/openstack/compute/schemas/flavor_manage.py#L34","commit_id":"587bb5b10af62404f3003a503caf1dbee063a6eb"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"eff965c598f9c6dee1c4580b8991b01bd2cdda67","unresolved":false,"context_lines":[{"line_number":662,"context_line":""},{"line_number":663,"context_line":"Need to think through this well. There are quite a few existing CONF options"},{"line_number":664,"context_line":"and extra specs that control pinning behavior. While this proposal reduces this"},{"line_number":665,"context_line":"list and makes them consistent, we still need to keep code around"},{"line_number":666,"context_line":"nova/virt/hardware.py to handle old options and extra specs. A first step in"},{"line_number":667,"context_line":"handling this will be to refactor any code in nova/virt/hardware.py that"},{"line_number":668,"context_line":"references hard-coded extra specs or CONF options and turn those references"},{"line_number":669,"context_line":"into parameters to functions."}],"source_content_type":"text/x-rst","patch_set":18,"id":"3f79a3b5_7e7c7aea","line":666,"range":{"start_line":665,"start_character":32,"end_line":666,"end_character":60},"updated":"2018-09-18 17:00:41.000000000","message":"We need to keep it around for at least N cycles too, where N allows sufficient overlap between various distro\u0027s LTS releases, right?","commit_id":"587bb5b10af62404f3003a503caf1dbee063a6eb"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"7ee9dd35494ffdd641e01308b6255ee9b035e348","unresolved":false,"context_lines":[{"line_number":682,"context_line":"``0`` and add a ``resources:PCPU\u003d$original_vcpus_amount`` extra spec. This is"},{"line_number":683,"context_line":"to ensure that if that guest is rebuilt or migrated, that the new ``PCPU``"},{"line_number":684,"context_line":"resource class is used instead of ``VCPU``."},{"line_number":685,"context_line":""},{"line_number":686,"context_line":"Implementation"},{"line_number":687,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":688,"context_line":""}],"source_content_type":"text/x-rst","patch_set":18,"id":"3f79a3b5_60b65b41","line":685,"updated":"2018-09-14 16:04:33.000000000","message":"++ thanks Jay for the quick catch-up.","commit_id":"587bb5b10af62404f3003a503caf1dbee063a6eb"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"eff965c598f9c6dee1c4580b8991b01bd2cdda67","unresolved":false,"context_lines":[{"line_number":702,"context_line":""},{"line_number":703,"context_line":"* Create ``PCPU`` resource class"},{"line_number":704,"context_line":"* Create ``HW_CPU_HYPERTHREADING`` trait"},{"line_number":705,"context_line":"* Create ``CONF.cpu_dedicated_set`` and ``CONF.cpu_shared_set`` options"},{"line_number":706,"context_line":"* Modify virt code to calculate the set of host CPUs that will be used for"},{"line_number":707,"context_line":"  dedicated and shared CPUs by using the above new CONF options"},{"line_number":708,"context_line":"* Modify the code that creates the request group from the flavor\u0027s extra specs"}],"source_content_type":"text/x-rst","patch_set":18,"id":"3f79a3b5_fe672a50","line":705,"range":{"start_line":705,"start_character":36,"end_line":705,"end_character":71},"updated":"2018-09-18 17:00:41.000000000","message":"This already exists","commit_id":"587bb5b10af62404f3003a503caf1dbee063a6eb"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"667ca70e7221220b12a0f15f9a8b8024ada8839b","unresolved":false,"context_lines":[{"line_number":702,"context_line":""},{"line_number":703,"context_line":"* Create ``PCPU`` resource class"},{"line_number":704,"context_line":"* Create ``HW_CPU_HYPERTHREADING`` trait"},{"line_number":705,"context_line":"* Create ``CONF.cpu_dedicated_set`` and ``CONF.cpu_shared_set`` options"},{"line_number":706,"context_line":"* Modify virt code to calculate the set of host CPUs that will be used for"},{"line_number":707,"context_line":"  dedicated and shared CPUs by using the above new CONF options"},{"line_number":708,"context_line":"* Modify the code that creates the request group from the flavor\u0027s extra specs"}],"source_content_type":"text/x-rst","patch_set":18,"id":"3f79a3b5_c008362e","line":705,"range":{"start_line":705,"start_character":36,"end_line":705,"end_character":71},"in_reply_to":"3f79a3b5_fe672a50","updated":"2018-09-19 14:48:20.000000000","message":"Yep, but it\u0027s fine I guess.","commit_id":"587bb5b10af62404f3003a503caf1dbee063a6eb"},{"author":{"_account_id":16881,"name":"Munish","email":"mm6021@att.com","username":"munish.mehan@att.com"},"change_message_id":"8d1c71d156b2eee918657bc0a29752e1bf07f5ee","unresolved":false,"context_lines":[{"line_number":41,"context_line":""},{"line_number":42,"context_line":"**physical processor**"},{"line_number":43,"context_line":"    A single logical processor on the host machine that is associated with a"},{"line_number":44,"context_line":"    physical CPU core or hyperthread"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"**dedicated CPU**"},{"line_number":47,"context_line":"    A physical processor that has been marked to be used for a single guest"}],"source_content_type":"text/x-rst","patch_set":19,"id":"3f79a3b5_1217b656","line":44,"updated":"2018-09-27 19:43:20.000000000","message":"From VNF point of view there is difference between a physical CPU and hyper threaded one. I recently encountered this with a network function that needed physical CPU for packet processing thread. if its hyper threaded it was causing performance issues, but i think you cannot distinguish that at libvirt level, but at orchestration you can reserve the two siblings and assign one of them in libvirt. So if you think this feature can be of value we can split this definition into two.","commit_id":"5442f7273709f987871a1693a233237b702ae603"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"47284d4c794e745da886bb054d8ea39a5c351591","unresolved":false,"context_lines":[{"line_number":41,"context_line":""},{"line_number":42,"context_line":"**physical processor**"},{"line_number":43,"context_line":"    A single logical processor on the host machine that is associated with a"},{"line_number":44,"context_line":"    physical CPU core or hyperthread"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"**dedicated CPU**"},{"line_number":47,"context_line":"    A physical processor that has been marked to be used for a single guest"}],"source_content_type":"text/x-rst","patch_set":19,"id":"3f79a3b5_f534644b","line":44,"in_reply_to":"3f79a3b5_1217b656","updated":"2018-09-27 20:08:14.000000000","message":"Please read below starting on line 461. If you don\u0027t want a host to expose hyperthread siblings as CPUs, you would disable hyperthreading in the kernel of that host. And the guest flavor/image metadata would need to set the forbid\u003dHW_CPU_HYPERTHREADING key/value pair to ensure it lands on hosts that don\u0027t have hyperthreading enabled.","commit_id":"5442f7273709f987871a1693a233237b702ae603"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"ce9c56efe4e663ec22c56a378d223b2291b474b8","unresolved":false,"context_lines":[{"line_number":41,"context_line":""},{"line_number":42,"context_line":"**physical processor**"},{"line_number":43,"context_line":"    A single logical processor on the host machine that is associated with a"},{"line_number":44,"context_line":"    physical CPU core or hyperthread"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"**dedicated CPU**"},{"line_number":47,"context_line":"    A physical processor that has been marked to be used for a single guest"}],"source_content_type":"text/x-rst","patch_set":19,"id":"3f79a3b5_f80d3b8f","line":44,"in_reply_to":"3f79a3b5_38ff3301","updated":"2018-09-27 21:04:11.000000000","message":"It sounds like what you\u0027re asking for is to have a guest with 18 VCPU and 2 PCPU and you want to land on a host where HW_CPU_HYPERTHREADING is not present and the cpu_dedicated_set CONF option should only include the physical host cores and not any hyperthread siblings.\n\nYou can do that with the modeling described herein, but it\u0027s not up to nova or libvirt to figure that out for you. Your MANO or inventory management system is going to need to set CONF.cpu_dedicated_set accordingly (to a pinset that doesn\u0027t include hyperthread siblings).","commit_id":"5442f7273709f987871a1693a233237b702ae603"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"2c98704cefe39a9c67a0b637530d921d02bfc8c7","unresolved":false,"context_lines":[{"line_number":41,"context_line":""},{"line_number":42,"context_line":"**physical processor**"},{"line_number":43,"context_line":"    A single logical processor on the host machine that is associated with a"},{"line_number":44,"context_line":"    physical CPU core or hyperthread"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"**dedicated CPU**"},{"line_number":47,"context_line":"    A physical processor that has been marked to be used for a single guest"}],"source_content_type":"text/x-rst","patch_set":19,"id":"3f79a3b5_813db2bd","line":44,"in_reply_to":"3f79a3b5_66c18c4e","updated":"2018-09-27 23:48:29.000000000","message":"You\u0027re either not reading my response or you haven\u0027t read the rest of this spec.","commit_id":"5442f7273709f987871a1693a233237b702ae603"},{"author":{"_account_id":16881,"name":"Munish","email":"mm6021@att.com","username":"munish.mehan@att.com"},"change_message_id":"f387162ddd15715bb87d22d811a81ace5640c257","unresolved":false,"context_lines":[{"line_number":41,"context_line":""},{"line_number":42,"context_line":"**physical processor**"},{"line_number":43,"context_line":"    A single logical processor on the host machine that is associated with a"},{"line_number":44,"context_line":"    physical CPU core or hyperthread"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"**dedicated CPU**"},{"line_number":47,"context_line":"    A physical processor that has been marked to be used for a single guest"}],"source_content_type":"text/x-rst","patch_set":19,"id":"3f79a3b5_ad121560","line":44,"in_reply_to":"3f79a3b5_813db2bd","updated":"2018-09-28 13:44:19.000000000","message":"Sorry, your reference to a host where HW_CPU_HYPERTHREADING is not present was confusing for me. I hope the use case is clear.","commit_id":"5442f7273709f987871a1693a233237b702ae603"},{"author":{"_account_id":16881,"name":"Munish","email":"mm6021@att.com","username":"munish.mehan@att.com"},"change_message_id":"018bcf4d1ed4afcf55ed77c228e6475f841798f3","unresolved":false,"context_lines":[{"line_number":41,"context_line":""},{"line_number":42,"context_line":"**physical processor**"},{"line_number":43,"context_line":"    A single logical processor on the host machine that is associated with a"},{"line_number":44,"context_line":"    physical CPU core or hyperthread"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"**dedicated CPU**"},{"line_number":47,"context_line":"    A physical processor that has been marked to be used for a single guest"}],"source_content_type":"text/x-rst","patch_set":19,"id":"3f79a3b5_38ff3301","line":44,"in_reply_to":"3f79a3b5_f534644b","updated":"2018-09-27 20:26:31.000000000","message":"Landing on a non hyper threaded host is not the requirement here, the host can be hyper threaded but tenant should be able to skip core for one or two threads based on their function. So my VNF may need 20 hyper threaded cpus but only 2 threads need 4 cpus (so i can skip cpu 1 and cpu3) application will be able to run first two threads safely on physical cpu.","commit_id":"5442f7273709f987871a1693a233237b702ae603"},{"author":{"_account_id":16881,"name":"Munish","email":"mm6021@att.com","username":"munish.mehan@att.com"},"change_message_id":"1d94e4da002a58409761aeadebc880f0e845f3a2","unresolved":false,"context_lines":[{"line_number":41,"context_line":""},{"line_number":42,"context_line":"**physical processor**"},{"line_number":43,"context_line":"    A single logical processor on the host machine that is associated with a"},{"line_number":44,"context_line":"    physical CPU core or hyperthread"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"**dedicated CPU**"},{"line_number":47,"context_line":"    A physical processor that has been marked to be used for a single guest"}],"source_content_type":"text/x-rst","patch_set":19,"id":"3f79a3b5_66c18c4e","line":44,"in_reply_to":"3f79a3b5_f80d3b8f","updated":"2018-09-27 23:10:51.000000000","message":"The host need to have Hyperthreading enabled, the tenant knows the application needs and tenants application has 18 threads of which two are hyper threading sensitive. If such a application lands on a hyper threaded host, it needs 20 vcpus first 4(2 sibling pairs) for 2 threads and rest 16 for threads who have no issues with hyper threading. So total cost is 10 physical cpus.\nNow lets land it on a host where hyper threading is not present it will consume 18 physical cpus. So the cost is higher when host is non hyper threaded . \nThe VNF need a mix of physical and hyper threaded and tenant should be able to specify that for their vms. And cost for operator should be less.","commit_id":"5442f7273709f987871a1693a233237b702ae603"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"810d35b8579861e0fc420a811b075d29fbc61be0","unresolved":false,"context_lines":[{"line_number":160,"context_line":"    physical processors on a host system and the union of the dedicated and"},{"line_number":161,"context_line":"    shared pinsets shall represent the number of physical processors that has"},{"line_number":162,"context_line":"    been reserved for the host."},{"line_number":163,"context_line":""},{"line_number":164,"context_line":".. note::"},{"line_number":165,"context_line":""},{"line_number":166,"context_line":"    The existing ``CONF.vcpu_pin_set`` will be **deprecated** in the \"S\""}],"source_content_type":"text/x-rst","patch_set":19,"id":"3f79a3b5_ec958433","line":163,"updated":"2018-09-27 18:45:39.000000000","message":"What if one is set but not the other? For example, if cpu_dedicated_set is set, but nothing else? Would that mean that the CPUs not in that set are shared? Reserved for the host?","commit_id":"5442f7273709f987871a1693a233237b702ae603"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"66109a707df40a9015008588b53327ad2fef988e","unresolved":false,"context_lines":[{"line_number":160,"context_line":"    physical processors on a host system and the union of the dedicated and"},{"line_number":161,"context_line":"    shared pinsets shall represent the number of physical processors that has"},{"line_number":162,"context_line":"    been reserved for the host."},{"line_number":163,"context_line":""},{"line_number":164,"context_line":".. note::"},{"line_number":165,"context_line":""},{"line_number":166,"context_line":"    The existing ``CONF.vcpu_pin_set`` will be **deprecated** in the \"S\""}],"source_content_type":"text/x-rst","patch_set":19,"id":"3f79a3b5_d2a7febb","line":163,"in_reply_to":"3f79a3b5_4c9598e2","updated":"2018-09-27 19:15:42.000000000","message":"Ah, thanks for the clarification. So once we\u0027re past the Stein vcpu_pin_set deprecation/transition cycle, at least one of cpu_dedicated_set/cpu_shared_set will need to be set, otherwise the host won\u0027t be able to accept any VMs (will have inventories of 0 for both PCPU and VCPU).","commit_id":"5442f7273709f987871a1693a233237b702ae603"},{"author":{"_account_id":8768,"name":"Chris Friesen","email":"chris.friesen@windriver.com","username":"cbf123"},"change_message_id":"b8d5fa052fbf1669a8630ac59bb91918a6c6c2a6","unresolved":false,"context_lines":[{"line_number":160,"context_line":"    physical processors on a host system and the union of the dedicated and"},{"line_number":161,"context_line":"    shared pinsets shall represent the number of physical processors that has"},{"line_number":162,"context_line":"    been reserved for the host."},{"line_number":163,"context_line":""},{"line_number":164,"context_line":".. note::"},{"line_number":165,"context_line":""},{"line_number":166,"context_line":"    The existing ``CONF.vcpu_pin_set`` will be **deprecated** in the \"S\""}],"source_content_type":"text/x-rst","patch_set":19,"id":"3f79a3b5_4c9598e2","line":163,"in_reply_to":"3f79a3b5_ec958433","updated":"2018-09-27 19:03:49.000000000","message":"I would expect that if \"cpu_shared_set\" is not specified it is assumed to be empty, meaning the rest are reserved for the host.","commit_id":"5442f7273709f987871a1693a233237b702ae603"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"d3645eb3a2edb3b707e927127b568f46f5538432","unresolved":false,"context_lines":[{"line_number":160,"context_line":"    physical processors on a host system and the union of the dedicated and"},{"line_number":161,"context_line":"    shared pinsets shall represent the number of physical processors that has"},{"line_number":162,"context_line":"    been reserved for the host."},{"line_number":163,"context_line":""},{"line_number":164,"context_line":".. note::"},{"line_number":165,"context_line":""},{"line_number":166,"context_line":"    The existing ``CONF.vcpu_pin_set`` will be **deprecated** in the \"S\""}],"source_content_type":"text/x-rst","patch_set":19,"id":"3f79a3b5_2cbb7c75","line":163,"in_reply_to":"3f79a3b5_ec958433","updated":"2018-09-27 18:58:16.000000000","message":"If either is not set, that means there are no host CPUs for that workload type.\n\nTherefore, if cpu_dedicated_set is the only one set, all those host processors are for dedicated guest CPUs. Any host CPUs remaining will be considered reserved for the host and not used in any guest workloads.","commit_id":"5442f7273709f987871a1693a233237b702ae603"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"810d35b8579861e0fc420a811b075d29fbc61be0","unresolved":false,"context_lines":[{"line_number":187,"context_line":"will contain inventory records for ``VCPU`` and/or ``PCPU`` resources. Note"},{"line_number":188,"context_line":"that as of writing this spec, nova-compute workers do not yet support"},{"line_number":189,"context_line":"representing physical CPU packages/sockets using child resource providers. A"},{"line_number":190,"context_line":"`separate spec \u003cNUMA topology with resource providers_\u003e` covers how virt"},{"line_number":191,"context_line":"drivers can model separate NUMA nodes or physical CPU sockets using a provider"},{"line_number":192,"context_line":"tree model."},{"line_number":193,"context_line":""}],"source_content_type":"text/x-rst","patch_set":19,"id":"3f79a3b5_f19b1b14","line":190,"range":{"start_line":190,"start_character":15,"end_line":190,"end_character":55},"updated":"2018-09-27 18:45:39.000000000","message":"This doesn\u0027t actually show up as a link in the rendered doc.","commit_id":"5442f7273709f987871a1693a233237b702ae603"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"38f881e997f7372d58d060573d9ee56a7fb74ba0","unresolved":false,"context_lines":[{"line_number":187,"context_line":"will contain inventory records for ``VCPU`` and/or ``PCPU`` resources. Note"},{"line_number":188,"context_line":"that as of writing this spec, nova-compute workers do not yet support"},{"line_number":189,"context_line":"representing physical CPU packages/sockets using child resource providers. A"},{"line_number":190,"context_line":"`separate spec \u003cNUMA topology with resource providers_\u003e` covers how virt"},{"line_number":191,"context_line":"drivers can model separate NUMA nodes or physical CPU sockets using a provider"},{"line_number":192,"context_line":"tree model."},{"line_number":193,"context_line":""}],"source_content_type":"text/x-rst","patch_set":19,"id":"3f79a3b5_eafa7a75","line":190,"range":{"start_line":190,"start_character":15,"end_line":190,"end_character":55},"in_reply_to":"3f79a3b5_34ba730a","updated":"2018-10-08 13:52:22.000000000","message":"Done","commit_id":"5442f7273709f987871a1693a233237b702ae603"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"8d39210a82aced9aca2a9a91e536071397c08e7a","unresolved":false,"context_lines":[{"line_number":187,"context_line":"will contain inventory records for ``VCPU`` and/or ``PCPU`` resources. Note"},{"line_number":188,"context_line":"that as of writing this spec, nova-compute workers do not yet support"},{"line_number":189,"context_line":"representing physical CPU packages/sockets using child resource providers. A"},{"line_number":190,"context_line":"`separate spec \u003cNUMA topology with resource providers_\u003e` covers how virt"},{"line_number":191,"context_line":"drivers can model separate NUMA nodes or physical CPU sockets using a provider"},{"line_number":192,"context_line":"tree model."},{"line_number":193,"context_line":""}],"source_content_type":"text/x-rst","patch_set":19,"id":"3f79a3b5_34ba730a","line":190,"range":{"start_line":190,"start_character":15,"end_line":190,"end_character":55},"in_reply_to":"3f79a3b5_7214ea41","updated":"2018-10-03 10:55:58.000000000","message":"The underscore should be after the backtick, not before the greater than","commit_id":"5442f7273709f987871a1693a233237b702ae603"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"d3645eb3a2edb3b707e927127b568f46f5538432","unresolved":false,"context_lines":[{"line_number":187,"context_line":"will contain inventory records for ``VCPU`` and/or ``PCPU`` resources. Note"},{"line_number":188,"context_line":"that as of writing this spec, nova-compute workers do not yet support"},{"line_number":189,"context_line":"representing physical CPU packages/sockets using child resource providers. A"},{"line_number":190,"context_line":"`separate spec \u003cNUMA topology with resource providers_\u003e` covers how virt"},{"line_number":191,"context_line":"drivers can model separate NUMA nodes or physical CPU sockets using a provider"},{"line_number":192,"context_line":"tree model."},{"line_number":193,"context_line":""}],"source_content_type":"text/x-rst","patch_set":19,"id":"3f79a3b5_7214ea41","line":190,"range":{"start_line":190,"start_character":15,"end_line":190,"end_character":55},"in_reply_to":"3f79a3b5_f19b1b14","updated":"2018-09-27 18:58:16.000000000","message":"grr I hate RST. I\u0027m not sure how this should be structured. I\u0027ll have to ask the expert (stephenfin)","commit_id":"5442f7273709f987871a1693a233237b702ae603"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"810d35b8579861e0fc420a811b075d29fbc61be0","unresolved":false,"context_lines":[{"line_number":195,"context_line":""},{"line_number":196,"context_line":"    This spec does not dictate *how* a host system will be configured to use"},{"line_number":197,"context_line":"    (or not use) NUMA. See the `spec on modeling NUMA with resource providers"},{"line_number":198,"context_line":"    \u003cNUMA topology with resource providers_\u003e` for more information."},{"line_number":199,"context_line":""},{"line_number":200,"context_line":"An example of a compute node that does *not* use the `proposed \u003cNUMA topology"},{"line_number":201,"context_line":"with resource providers_\u003e` method of modeling separate physical CPU"}],"source_content_type":"text/x-rst","patch_set":19,"id":"3f79a3b5_d1805f9f","line":198,"range":{"start_line":198,"start_character":4,"end_line":198,"end_character":44},"updated":"2018-09-27 18:45:39.000000000","message":"And here, and everywhere else, and I\u0027ll stop bringing it up.","commit_id":"5442f7273709f987871a1693a233237b702ae603"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"8d39210a82aced9aca2a9a91e536071397c08e7a","unresolved":false,"context_lines":[{"line_number":195,"context_line":""},{"line_number":196,"context_line":"    This spec does not dictate *how* a host system will be configured to use"},{"line_number":197,"context_line":"    (or not use) NUMA. See the `spec on modeling NUMA with resource providers"},{"line_number":198,"context_line":"    \u003cNUMA topology with resource providers_\u003e` for more information."},{"line_number":199,"context_line":""},{"line_number":200,"context_line":"An example of a compute node that does *not* use the `proposed \u003cNUMA topology"},{"line_number":201,"context_line":"with resource providers_\u003e` method of modeling separate physical CPU"}],"source_content_type":"text/x-rst","patch_set":19,"id":"3f79a3b5_54b5af17","line":198,"range":{"start_line":198,"start_character":4,"end_line":198,"end_character":44},"in_reply_to":"3f79a3b5_d1805f9f","updated":"2018-10-03 10:55:58.000000000","message":"As above, underscore after the backtick","commit_id":"5442f7273709f987871a1693a233237b702ae603"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"38f881e997f7372d58d060573d9ee56a7fb74ba0","unresolved":false,"context_lines":[{"line_number":195,"context_line":""},{"line_number":196,"context_line":"    This spec does not dictate *how* a host system will be configured to use"},{"line_number":197,"context_line":"    (or not use) NUMA. See the `spec on modeling NUMA with resource providers"},{"line_number":198,"context_line":"    \u003cNUMA topology with resource providers_\u003e` for more information."},{"line_number":199,"context_line":""},{"line_number":200,"context_line":"An example of a compute node that does *not* use the `proposed \u003cNUMA topology"},{"line_number":201,"context_line":"with resource providers_\u003e` method of modeling separate physical CPU"}],"source_content_type":"text/x-rst","patch_set":19,"id":"3f79a3b5_0a001666","line":198,"range":{"start_line":198,"start_character":4,"end_line":198,"end_character":44},"in_reply_to":"3f79a3b5_d1805f9f","updated":"2018-10-08 13:52:22.000000000","message":"Done","commit_id":"5442f7273709f987871a1693a233237b702ae603"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"810d35b8579861e0fc420a811b075d29fbc61be0","unresolved":false,"context_lines":[{"line_number":306,"context_line":""},{"line_number":307,"context_line":".. note::"},{"line_number":308,"context_line":""},{"line_number":309,"context_line":"    A single guest may request both shared and dedicated CPU resources."},{"line_number":310,"context_line":""},{"line_number":311,"context_line":"When requesting more than one dedicated or shared CPU resource, the guest may"},{"line_number":312,"context_line":"or may not want multiple distinct resource providers to provide its guest CPU"}],"source_content_type":"text/x-rst","patch_set":19,"id":"3f79a3b5_ec6ca4d1","line":309,"updated":"2018-09-27 18:45:39.000000000","message":"I know it\u0027s out of scope, but have we thought about how we\u0027re going to expose to the guest OS which VCPUs are shared and which are dedicated? I think someone mentioned using the metadata API at Dublin?","commit_id":"5442f7273709f987871a1693a233237b702ae603"},{"author":{"_account_id":8768,"name":"Chris Friesen","email":"chris.friesen@windriver.com","username":"cbf123"},"change_message_id":"b8d5fa052fbf1669a8630ac59bb91918a6c6c2a6","unresolved":false,"context_lines":[{"line_number":306,"context_line":""},{"line_number":307,"context_line":".. note::"},{"line_number":308,"context_line":""},{"line_number":309,"context_line":"    A single guest may request both shared and dedicated CPU resources."},{"line_number":310,"context_line":""},{"line_number":311,"context_line":"When requesting more than one dedicated or shared CPU resource, the guest may"},{"line_number":312,"context_line":"or may not want multiple distinct resource providers to provide its guest CPU"}],"source_content_type":"text/x-rst","patch_set":19,"id":"3f79a3b5_8c7890c1","line":309,"in_reply_to":"3f79a3b5_ec6ca4d1","updated":"2018-09-27 19:03:49.000000000","message":"Metadata would make sense.  It gets tricky when you have multiple guest numa nodes.\n\nI think that if any vCPUs are \"shared\", it would probably make sense for guest vCPU 0 to be one of them.","commit_id":"5442f7273709f987871a1693a233237b702ae603"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"d3645eb3a2edb3b707e927127b568f46f5538432","unresolved":false,"context_lines":[{"line_number":306,"context_line":""},{"line_number":307,"context_line":".. note::"},{"line_number":308,"context_line":""},{"line_number":309,"context_line":"    A single guest may request both shared and dedicated CPU resources."},{"line_number":310,"context_line":""},{"line_number":311,"context_line":"When requesting more than one dedicated or shared CPU resource, the guest may"},{"line_number":312,"context_line":"or may not want multiple distinct resource providers to provide its guest CPU"}],"source_content_type":"text/x-rst","patch_set":19,"id":"3f79a3b5_2c17fc56","line":309,"in_reply_to":"3f79a3b5_ec6ca4d1","updated":"2018-09-27 18:58:16.000000000","message":"not sure... it\u0027s not really on the top of my list of priority items ;)","commit_id":"5442f7273709f987871a1693a233237b702ae603"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"810d35b8579861e0fc420a811b075d29fbc61be0","unresolved":false,"context_lines":[{"line_number":419,"context_line":"Ensure groups of CPU resources are provided by different providers"},{"line_number":420,"context_line":"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"},{"line_number":421,"context_line":""},{"line_number":422,"context_line":"The guest uses a `granular request group \u003cgranular request groups (Rocky)_\u003e`"},{"line_number":423,"context_line":"for each group of CPU resources that they want provided by different providers."},{"line_number":424,"context_line":""},{"line_number":425,"context_line":"Each group will specify a number of dedicated CPUs and/or a number of shared"}],"source_content_type":"text/x-rst","patch_set":19,"id":"3f79a3b5_6cb5f431","line":422,"range":{"start_line":422,"start_character":18,"end_line":422,"end_character":75},"updated":"2018-09-27 18:45:39.000000000","message":"This link should probably appear the first time we refer to granular request groups on L373.","commit_id":"5442f7273709f987871a1693a233237b702ae603"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"d3645eb3a2edb3b707e927127b568f46f5538432","unresolved":false,"context_lines":[{"line_number":419,"context_line":"Ensure groups of CPU resources are provided by different providers"},{"line_number":420,"context_line":"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"},{"line_number":421,"context_line":""},{"line_number":422,"context_line":"The guest uses a `granular request group \u003cgranular request groups (Rocky)_\u003e`"},{"line_number":423,"context_line":"for each group of CPU resources that they want provided by different providers."},{"line_number":424,"context_line":""},{"line_number":425,"context_line":"Each group will specify a number of dedicated CPUs and/or a number of shared"}],"source_content_type":"text/x-rst","patch_set":19,"id":"3f79a3b5_ac21ccb7","line":422,"range":{"start_line":422,"start_character":18,"end_line":422,"end_character":75},"in_reply_to":"3f79a3b5_6cb5f431","updated":"2018-09-27 18:58:16.000000000","message":"yeah, true. the spec has changed so many times over the revisions it probably just lost in the shuffle.","commit_id":"5442f7273709f987871a1693a233237b702ae603"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"38f881e997f7372d58d060573d9ee56a7fb74ba0","unresolved":false,"context_lines":[{"line_number":419,"context_line":"Ensure groups of CPU resources are provided by different providers"},{"line_number":420,"context_line":"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"},{"line_number":421,"context_line":""},{"line_number":422,"context_line":"The guest uses a `granular request group \u003cgranular request groups (Rocky)_\u003e`"},{"line_number":423,"context_line":"for each group of CPU resources that they want provided by different providers."},{"line_number":424,"context_line":""},{"line_number":425,"context_line":"Each group will specify a number of dedicated CPUs and/or a number of shared"}],"source_content_type":"text/x-rst","patch_set":19,"id":"3f79a3b5_2a0f128c","line":422,"range":{"start_line":422,"start_character":18,"end_line":422,"end_character":75},"in_reply_to":"3f79a3b5_ac21ccb7","updated":"2018-10-08 13:52:22.000000000","message":"Done","commit_id":"5442f7273709f987871a1693a233237b702ae603"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"1b5fdf3c20d6b627a28de263cbab71d09db146be","unresolved":false,"context_lines":[{"line_number":525,"context_line":"1) A simple web application server workload requires a couple CPU resources."},{"line_number":526,"context_line":"   The workload does not require any dedicated CPU resources::"},{"line_number":527,"context_line":""},{"line_number":528,"context_line":"    resources:VCPU\u003d2"},{"line_number":529,"context_line":""},{"line_number":530,"context_line":"2)"},{"line_number":531,"context_line":""}],"source_content_type":"text/x-rst","patch_set":19,"id":"3f79a3b5_d98c413b","line":528,"range":{"start_line":528,"start_character":4,"end_line":528,"end_character":20},"updated":"2018-10-08 08:46:33.000000000","message":"For this example, dose this flavor include any numa related extra spec (like \u0027hw:numa_nodes\u0027)? If not, it means this guest has no numa topology.\n\nI found if the guest has no numa toplogy, the guest VCPUs will float on all the host cpus wthatever the value of cpu_pin_set or cpu_shared_set.\n\nI\u0027m a little confuse on, whether this spec propose to change this default behaviour?\n\nOr CONF.cpu_dedicated_set and CONF.cpu_shared_set is only valid for the guest with numa topology?","commit_id":"5442f7273709f987871a1693a233237b702ae603"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"38f881e997f7372d58d060573d9ee56a7fb74ba0","unresolved":false,"context_lines":[{"line_number":525,"context_line":"1) A simple web application server workload requires a couple CPU resources."},{"line_number":526,"context_line":"   The workload does not require any dedicated CPU resources::"},{"line_number":527,"context_line":""},{"line_number":528,"context_line":"    resources:VCPU\u003d2"},{"line_number":529,"context_line":""},{"line_number":530,"context_line":"2)"},{"line_number":531,"context_line":""}],"source_content_type":"text/x-rst","patch_set":19,"id":"3f79a3b5_eab27a96","line":528,"range":{"start_line":528,"start_character":4,"end_line":528,"end_character":20},"in_reply_to":"3f79a3b5_d98c413b","updated":"2018-10-08 13:52:22.000000000","message":"\u003e For this example, dose this flavor include any numa related extra\n \u003e spec (like \u0027hw:numa_nodes\u0027)? If not, it means this guest has no\n \u003e numa topology.\n\nSylvain wanted to keep NUMA-related items out of this particular spec so that he could describe those concerns in his NUMA spec here:\n\nhttps://review.openstack.org/#/c/552924/\n\nThat said, one of the biggest problems with the current nova/virt/hardware.py module and the NUMATopology object in Nova is the very tight coupling between CPU pinning and NUMA concepts. It is an unfortunate coupling, because NUMA is about memory latency and bandwidth, not CPU pinning. But because the NUMATopology object jams CPU pinning, huge pages, guest NUMA topology and NUMA node memory size all into one giant blobject, there\u0027s this confusion that CPU pinning is related to NUMA nodes. It isn\u0027t though.\n\nMore answer below...\n\n \u003e I found if the guest has no numa toplogy, the guest VCPUs will\n \u003e float on all the host cpus wthatever the value of cpu_pin_set or\n \u003e cpu_shared_set.\n\nThis is the current behaviour, correct.\n\n \u003e I\u0027m a little confuse on, whether this spec propose to change this\n \u003e default behaviour?\n\nKind of. This spec proposes that the virt driver place guest vCPU threads only on those host processors specified in the new-in-Rocky CONF.cpu_shared_set option. In addition to that, this spec requires that dedicated guest CPU resources be given a wholly-separate resource class (PCPU) and that the host processors to serve as dedicated guest CPUs be defined in a new CONF.cpu_dedicated_set.\n\n \u003e Or CONF.cpu_dedicated_set and CONF.cpu_shared_set is only valid for\n \u003e the guest with numa topology?\n\nNo, definitely not. We want to de-couple the whole NUMATopology object from the request for dedicated guest CPU resources.\n\nIf a guest specifies hw:numa_nodes (and related) flavor or image extra specs, then those extra specs will (continue to) play a role in determining which host logical processors the guest will be pinned to, but guests which do not specify a guest NUMA topology but *do* wish to have dedicated guest CPU resources will now be able to do so simply by picking a flavor with a resources:PCPU\u003d$AMOUNT extra spec.\n\nHope that explains things better.\n\nBest,\n\n-jay","commit_id":"5442f7273709f987871a1693a233237b702ae603"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"a8c151037d1c434223598fd6a955ef1024adee28","unresolved":false,"context_lines":[{"line_number":525,"context_line":"1) A simple web application server workload requires a couple CPU resources."},{"line_number":526,"context_line":"   The workload does not require any dedicated CPU resources::"},{"line_number":527,"context_line":""},{"line_number":528,"context_line":"    resources:VCPU\u003d2"},{"line_number":529,"context_line":""},{"line_number":530,"context_line":"2)"},{"line_number":531,"context_line":""}],"source_content_type":"text/x-rst","patch_set":19,"id":"3f79a3b5_19f944c4","line":528,"range":{"start_line":528,"start_character":4,"end_line":528,"end_character":20},"in_reply_to":"3f79a3b5_eab27a96","updated":"2018-10-09 04:49:58.000000000","message":"\u003e \u003e For this example, dose this flavor include any numa related extra\n \u003e \u003e spec (like \u0027hw:numa_nodes\u0027)? If not, it means this guest has no\n \u003e \u003e numa topology.\n \u003e \n \u003e Sylvain wanted to keep NUMA-related items out of this particular\n \u003e spec so that he could describe those concerns in his NUMA spec\n \u003e here:\n \u003e \n \u003e https://review.openstack.org/#/c/552924/\n \u003e \n \u003e That said, one of the biggest problems with the current\n \u003e nova/virt/hardware.py module and the NUMATopology object in Nova is\n \u003e the very tight coupling between CPU pinning and NUMA concepts. It\n \u003e is an unfortunate coupling, because NUMA is about memory latency\n \u003e and bandwidth, not CPU pinning. But because the NUMATopology object\n \u003e jams CPU pinning, huge pages, guest NUMA topology and NUMA node\n \u003e memory size all into one giant blobject, there\u0027s this confusion\n \u003e that CPU pinning is related to NUMA nodes. It isn\u0027t though.\n \u003e \n\nThanks for this explaining, that makes me more clear.\n\n \u003e More answer below...\n \u003e \n \u003e \u003e I found if the guest has no numa toplogy, the guest VCPUs will\n \u003e \u003e float on all the host cpus wthatever the value of cpu_pin_set or\n \u003e \u003e cpu_shared_set.\n \u003e \n \u003e This is the current behaviour, correct.\n \u003e \n \u003e \u003e I\u0027m a little confuse on, whether this spec propose to change this\n \u003e \u003e default behaviour?\n \u003e \n \u003e Kind of. This spec proposes that the virt driver place guest vCPU\n \u003e threads only on those host processors specified in the new-in-Rocky\n \u003e CONF.cpu_shared_set option. In addition to that, this spec requires\n \u003e that dedicated guest CPU resources be given a wholly-separate\n \u003e resource class (PCPU) and that the host processors to serve as\n \u003e dedicated guest CPUs be defined in a new CONF.cpu_dedicated_set.\n \u003e \n \u003e \u003e Or CONF.cpu_dedicated_set and CONF.cpu_shared_set is only valid\n \u003e for\n \u003e \u003e the guest with numa topology?\n \u003e \n \u003e No, definitely not. We want to de-couple the whole NUMATopology\n \u003e object from the request for dedicated guest CPU resources.\n \u003e \n \u003e If a guest specifies hw:numa_nodes (and related) flavor or image\n \u003e extra specs, then those extra specs will (continue to) play a role\n \u003e in determining which host logical processors the guest will be\n \u003e pinned to, but guests which do not specify a guest NUMA topology\n \u003e but *do* wish to have dedicated guest CPU resources will now be\n \u003e able to do so simply by picking a flavor with a resources:PCPU\u003d$AMOUNT\n \u003e extra spec.\n\nthanks, this is the answer I wanted.\n\n \u003e \n \u003e Hope that explains things better.\n \u003e \n \u003e Best,\n \u003e \n \u003e -jay","commit_id":"5442f7273709f987871a1693a233237b702ae603"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"6fa926dc301b2125251064cd966436ecbabe22ea","unresolved":false,"context_lines":[{"line_number":669,"context_line":""},{"line_number":670,"context_line":"None"},{"line_number":671,"context_line":""},{"line_number":672,"context_line":"Upgrade impact"},{"line_number":673,"context_line":"--------------"},{"line_number":674,"context_line":""},{"line_number":675,"context_line":"Need to think through this well. There are quite a few existing CONF options"}],"source_content_type":"text/x-rst","patch_set":19,"id":"3f79a3b5_a79fad4f","line":672,"updated":"2018-09-27 14:00:29.000000000","message":"Maybe it\u0027s implied in here, but I\u0027m really only picking up on the respahe implications for instances with CPU pinning today. But literally *all* instances and all compute nodes would need to be reshaped to move VCPU allocations to the child provider under the NUMA node provider, right? In a public cloud (or CERN) with hundreds of thousands of VMs and thousands of compute hosts, that\u0027s going to be major for the upgrade. Right? I\u0027m not saying your proposed modeling is not the right way to model things, but it will be a huge upgrade pain from what I can tell. Even just reshaping for VGPU in Stein is going to be quite painful because of the lack of ability to do it \"offline\".","commit_id":"5442f7273709f987871a1693a233237b702ae603"},{"author":{"_account_id":8768,"name":"Chris Friesen","email":"chris.friesen@windriver.com","username":"cbf123"},"change_message_id":"b8d5fa052fbf1669a8630ac59bb91918a6c6c2a6","unresolved":false,"context_lines":[{"line_number":669,"context_line":""},{"line_number":670,"context_line":"None"},{"line_number":671,"context_line":""},{"line_number":672,"context_line":"Upgrade impact"},{"line_number":673,"context_line":"--------------"},{"line_number":674,"context_line":""},{"line_number":675,"context_line":"Need to think through this well. There are quite a few existing CONF options"}],"source_content_type":"text/x-rst","patch_set":19,"id":"3f79a3b5_4c1a787c","line":672,"in_reply_to":"3f79a3b5_a79fad4f","updated":"2018-09-27 19:03:49.000000000","message":"Yeah, it\u0027s not pretty.  But I don\u0027t think there\u0027s any way to really model VCPU as a compute-node-level resource while still supporting NUMA-affinity for memory and PCI devices.","commit_id":"5442f7273709f987871a1693a233237b702ae603"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"d75852329df899993547a172604eadc97a36f761","unresolved":false,"context_lines":[{"line_number":669,"context_line":""},{"line_number":670,"context_line":"None"},{"line_number":671,"context_line":""},{"line_number":672,"context_line":"Upgrade impact"},{"line_number":673,"context_line":"--------------"},{"line_number":674,"context_line":""},{"line_number":675,"context_line":"Need to think through this well. There are quite a few existing CONF options"}],"source_content_type":"text/x-rst","patch_set":19,"id":"3f79a3b5_0cf3200b","line":672,"in_reply_to":"3f79a3b5_a79fad4f","updated":"2018-09-27 18:25:13.000000000","message":"Yes, change is painful.","commit_id":"5442f7273709f987871a1693a233237b702ae603"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"810d35b8579861e0fc420a811b075d29fbc61be0","unresolved":false,"context_lines":[{"line_number":687,"context_line":"dedicated host CPUs) to the new ``PCPU`` resource class. Furthermore, existing"},{"line_number":688,"context_line":"allocations for guests on those compute nodes will need to have their"},{"line_number":689,"context_line":"allocation records updated from the ``VCPU`` to ``PCPU`` resource class."},{"line_number":690,"context_line":""},{"line_number":691,"context_line":"There will also need to be a new nova online data migration that will modify"},{"line_number":692,"context_line":"the embedded flavor resource data for guests on compute nodes with ``PCPU``"},{"line_number":693,"context_line":"inventory and allocations to drop the embedded flavor\u0027s ``vcpus`` attribute to"}],"source_content_type":"text/x-rst","patch_set":19,"id":"3f79a3b5_4cb838c6","line":690,"updated":"2018-09-27 18:45:39.000000000","message":"Presumably the default for cpu_dedicated_set/cpu_shared_set is all shared, so a host used for dedicated CPUs upgraded to Stein *needs* to have cpu_dedicated_set configured?","commit_id":"5442f7273709f987871a1693a233237b702ae603"},{"author":{"_account_id":8768,"name":"Chris Friesen","email":"chris.friesen@windriver.com","username":"cbf123"},"change_message_id":"b8d5fa052fbf1669a8630ac59bb91918a6c6c2a6","unresolved":false,"context_lines":[{"line_number":687,"context_line":"dedicated host CPUs) to the new ``PCPU`` resource class. Furthermore, existing"},{"line_number":688,"context_line":"allocations for guests on those compute nodes will need to have their"},{"line_number":689,"context_line":"allocation records updated from the ``VCPU`` to ``PCPU`` resource class."},{"line_number":690,"context_line":""},{"line_number":691,"context_line":"There will also need to be a new nova online data migration that will modify"},{"line_number":692,"context_line":"the embedded flavor resource data for guests on compute nodes with ``PCPU``"},{"line_number":693,"context_line":"inventory and allocations to drop the embedded flavor\u0027s ``vcpus`` attribute to"}],"source_content_type":"text/x-rst","patch_set":19,"id":"3f79a3b5_d2c85ea9","line":690,"in_reply_to":"3f79a3b5_4cb838c6","updated":"2018-09-27 19:03:49.000000000","message":"In Stein we\u0027ll still support CONF.vcpu_pin_set so that needs to be factored in.  Once we get to T, then I think it would make sense to have no default value, and raise an exception on initialization if neither one has been specified.","commit_id":"5442f7273709f987871a1693a233237b702ae603"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"66109a707df40a9015008588b53327ad2fef988e","unresolved":false,"context_lines":[{"line_number":687,"context_line":"dedicated host CPUs) to the new ``PCPU`` resource class. Furthermore, existing"},{"line_number":688,"context_line":"allocations for guests on those compute nodes will need to have their"},{"line_number":689,"context_line":"allocation records updated from the ``VCPU`` to ``PCPU`` resource class."},{"line_number":690,"context_line":""},{"line_number":691,"context_line":"There will also need to be a new nova online data migration that will modify"},{"line_number":692,"context_line":"the embedded flavor resource data for guests on compute nodes with ``PCPU``"},{"line_number":693,"context_line":"inventory and allocations to drop the embedded flavor\u0027s ``vcpus`` attribute to"}],"source_content_type":"text/x-rst","patch_set":19,"id":"3f79a3b5_f298fa69","line":690,"in_reply_to":"3f79a3b5_d2c85ea9","updated":"2018-09-27 19:15:42.000000000","message":"Ah, so - rehashing the comments on L157 a bit - during Stein we\u0027re fine because we still support vcpu_pin_set, but during the Stein -\u003e T upgrade at least one of cpu_shared_set or cpu_dedicated_set will need to be configured, and for hosts with dedicated CPUs, it will have to be cpu_dedicated_set.","commit_id":"5442f7273709f987871a1693a233237b702ae603"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"8d39210a82aced9aca2a9a91e536071397c08e7a","unresolved":false,"context_lines":[{"line_number":687,"context_line":"dedicated host CPUs) to the new ``PCPU`` resource class. Furthermore, existing"},{"line_number":688,"context_line":"allocations for guests on those compute nodes will need to have their"},{"line_number":689,"context_line":"allocation records updated from the ``VCPU`` to ``PCPU`` resource class."},{"line_number":690,"context_line":""},{"line_number":691,"context_line":"There will also need to be a new nova online data migration that will modify"},{"line_number":692,"context_line":"the embedded flavor resource data for guests on compute nodes with ``PCPU``"},{"line_number":693,"context_line":"inventory and allocations to drop the embedded flavor\u0027s ``vcpus`` attribute to"}],"source_content_type":"text/x-rst","patch_set":19,"id":"3f79a3b5_d4253f5c","line":690,"in_reply_to":"3f79a3b5_f298fa69","updated":"2018-10-03 10:55:58.000000000","message":"I\u0027d imagine it would default to something closer resembling the current behavior, so \u0027cpu_shared_set\u0027 would default to all cores unless \u0027cpu_dedicated_set\u0027 was set. Dedicated cores are an advanced use case and we shouldn\u0027t make the default \u0027nova.conf\u0027 file (the one most people will use) any larger than it need be","commit_id":"5442f7273709f987871a1693a233237b702ae603"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"810d35b8579861e0fc420a811b075d29fbc61be0","unresolved":false,"context_lines":[{"line_number":702,"context_line":"-----------"},{"line_number":703,"context_line":""},{"line_number":704,"context_line":"Primary assignees:"},{"line_number":705,"context_line":"  sahid ferdjaoui"},{"line_number":706,"context_line":"  tetsuro nakamura"},{"line_number":707,"context_line":"  jaypipes"},{"line_number":708,"context_line":"  cfriesen"},{"line_number":709,"context_line":"  stephenfin"},{"line_number":710,"context_line":"  bauzas"},{"line_number":711,"context_line":""},{"line_number":712,"context_line":"Work Items"},{"line_number":713,"context_line":"----------"}],"source_content_type":"text/x-rst","patch_set":19,"id":"3f79a3b5_cc19a823","line":710,"range":{"start_line":705,"start_character":0,"end_line":710,"end_character":8},"updated":"2018-09-27 18:45:39.000000000","message":"Not actually a list in the rendered doc","commit_id":"5442f7273709f987871a1693a233237b702ae603"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"38f881e997f7372d58d060573d9ee56a7fb74ba0","unresolved":false,"context_lines":[{"line_number":702,"context_line":"-----------"},{"line_number":703,"context_line":""},{"line_number":704,"context_line":"Primary assignees:"},{"line_number":705,"context_line":"  sahid ferdjaoui"},{"line_number":706,"context_line":"  tetsuro nakamura"},{"line_number":707,"context_line":"  jaypipes"},{"line_number":708,"context_line":"  cfriesen"},{"line_number":709,"context_line":"  stephenfin"},{"line_number":710,"context_line":"  bauzas"},{"line_number":711,"context_line":""},{"line_number":712,"context_line":"Work Items"},{"line_number":713,"context_line":"----------"}],"source_content_type":"text/x-rst","patch_set":19,"id":"3f79a3b5_caa9be25","line":710,"range":{"start_line":705,"start_character":0,"end_line":710,"end_character":8},"in_reply_to":"3f79a3b5_cc19a823","updated":"2018-10-08 13:52:22.000000000","message":"Done","commit_id":"5442f7273709f987871a1693a233237b702ae603"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"3c201eadb842fbced3c107fe7b501101bdc8641b","unresolved":false,"context_lines":[{"line_number":150,"context_line":"The two pinsets produced by the above new CONF options should be **disjoint"},{"line_number":151,"context_line":"sets**. If the values of the two pinsets are *not* disjoint sets, we will fail"},{"line_number":152,"context_line":"to start the nova-compute service and log an error about the invalid"},{"line_number":153,"context_line":"configuration."},{"line_number":154,"context_line":""},{"line_number":155,"context_line":".. note::"},{"line_number":156,"context_line":""}],"source_content_type":"text/x-rst","patch_set":20,"id":"3f79a3b5_07bd28b1","line":153,"updated":"2018-10-23 17:05:12.000000000","message":"What happens by default when either/both conf option is absent? Thinking it through:\n\nTo be compatible with what happens today, if both are absent, it would be like:\n\n cpu_shared_set \u003d \u0027*\u0027\n cpu_dedicated_set \u003d \u0027\u0027\n\nIf cpu_shared_set is specified but cpu_dedicated_set is absent, that would translate to just VCPU inventory with (total - reserved) equal to the total number of procs indicated in the pinset. (See my gripe about `reserved` below.)\n\nIf cpu_dedicated_set is specified but cpu_shared_set is absent, does that translate to just PCPU inventory with (total - reserved) equal to the total number of procs indicated in the pinset; or do we implicitly fill out the VCPUs with the inverse of the dedicated pinset?","commit_id":"2ba9eaa914c7dc211b2b2bc7ae123ce7b7d530c9"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"dff148422bf807c80f4afd8b160db191de344981","unresolved":false,"context_lines":[{"line_number":150,"context_line":"The two pinsets produced by the above new CONF options should be **disjoint"},{"line_number":151,"context_line":"sets**. If the values of the two pinsets are *not* disjoint sets, we will fail"},{"line_number":152,"context_line":"to start the nova-compute service and log an error about the invalid"},{"line_number":153,"context_line":"configuration."},{"line_number":154,"context_line":""},{"line_number":155,"context_line":".. note::"},{"line_number":156,"context_line":""}],"source_content_type":"text/x-rst","patch_set":20,"id":"3f79a3b5_50063bce","line":153,"in_reply_to":"3f79a3b5_07bd28b1","updated":"2018-10-25 20:01:11.000000000","message":"Jay mentioned in a previous reply to me [1] that if both are unset it means all of a host\u0027s processors are reserved for itself. In other words, anything that isn\u0027t explicitly listed in either cpu_shared_set or cpu_dedicated_set is for the host. While that breaks current setups, the upgrade path (discussed on [2]) is to support the new options concurrently with the current vcpu_pin_set during a cycle.\n\nGiven that both you and I had the same question, it might be worth being more explicit in the spec.\n\n[1] https://review.openstack.org/#/c/555081/19/specs/stein/approved/cpu-resources.rst@163\n[2] https://review.openstack.org/#/c/555081/19/specs/stein/approved/cpu-resources.rst@690","commit_id":"2ba9eaa914c7dc211b2b2bc7ae123ce7b7d530c9"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"48ef3f0102d2bc2e591c56a5ca6aa624c493ab66","unresolved":false,"context_lines":[{"line_number":150,"context_line":"The two pinsets produced by the above new CONF options should be **disjoint"},{"line_number":151,"context_line":"sets**. If the values of the two pinsets are *not* disjoint sets, we will fail"},{"line_number":152,"context_line":"to start the nova-compute service and log an error about the invalid"},{"line_number":153,"context_line":"configuration."},{"line_number":154,"context_line":""},{"line_number":155,"context_line":".. note::"},{"line_number":156,"context_line":""}],"source_content_type":"text/x-rst","patch_set":20,"id":"3f79a3b5_abc72411","line":153,"in_reply_to":"3f79a3b5_50063bce","updated":"2018-10-25 20:29:58.000000000","message":"Thanks Artom. Definitely agree it should be called out in the spec. A guy shouldn\u0027t have to go read the comment history to know things like this.","commit_id":"2ba9eaa914c7dc211b2b2bc7ae123ce7b7d530c9"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"02c432aa118c7d8d158722cc2c25692b01fe9561","unresolved":false,"context_lines":[{"line_number":150,"context_line":"The two pinsets produced by the above new CONF options should be **disjoint"},{"line_number":151,"context_line":"sets**. If the values of the two pinsets are *not* disjoint sets, we will fail"},{"line_number":152,"context_line":"to start the nova-compute service and log an error about the invalid"},{"line_number":153,"context_line":"configuration."},{"line_number":154,"context_line":""},{"line_number":155,"context_line":".. note::"},{"line_number":156,"context_line":""}],"source_content_type":"text/x-rst","patch_set":20,"id":"3f79a3b5_425f4374","line":153,"in_reply_to":"3f79a3b5_abc72411","updated":"2018-10-26 13:08:25.000000000","message":"Done","commit_id":"2ba9eaa914c7dc211b2b2bc7ae123ce7b7d530c9"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"3c201eadb842fbced3c107fe7b501101bdc8641b","unresolved":false,"context_lines":[{"line_number":159,"context_line":"    ``CONF.cpu_shared_set``. The set difference between the entire set of"},{"line_number":160,"context_line":"    physical processors on a host system and the union of the dedicated and"},{"line_number":161,"context_line":"    shared pinsets shall represent the number of physical processors that has"},{"line_number":162,"context_line":"    been reserved for the host."},{"line_number":163,"context_line":""},{"line_number":164,"context_line":".. note::"},{"line_number":165,"context_line":""}],"source_content_type":"text/x-rst","patch_set":20,"id":"3f79a3b5_e78fcc1f","line":162,"updated":"2018-10-23 17:05:12.000000000","message":"Makes me wonder what it would mean if `reserved` were nonzero for {P|V}CPU when cpu_{dedicated|shared}_set is in play.\n\n[Later] Oh, yeah, see below.","commit_id":"2ba9eaa914c7dc211b2b2bc7ae123ce7b7d530c9"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"59849479916941279ff3e232921904bcc036fb2e","unresolved":false,"context_lines":[{"line_number":159,"context_line":"    ``CONF.cpu_shared_set``. The set difference between the entire set of"},{"line_number":160,"context_line":"    physical processors on a host system and the union of the dedicated and"},{"line_number":161,"context_line":"    shared pinsets shall represent the number of physical processors that has"},{"line_number":162,"context_line":"    been reserved for the host."},{"line_number":163,"context_line":""},{"line_number":164,"context_line":".. note::"},{"line_number":165,"context_line":""}],"source_content_type":"text/x-rst","patch_set":20,"id":"3f79a3b5_dd8fb473","line":162,"in_reply_to":"3f79a3b5_e78fcc1f","updated":"2018-10-26 13:19:39.000000000","message":"Note that there is currently no such concept as reserved VCPU in nova. The reserved_host_cpus CONF option describes the number of physical host processors to reserve for host use.","commit_id":"2ba9eaa914c7dc211b2b2bc7ae123ce7b7d530c9"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"3c201eadb842fbced3c107fe7b501101bdc8641b","unresolved":false,"context_lines":[{"line_number":187,"context_line":"will contain inventory records for ``VCPU`` and/or ``PCPU`` resources. Note"},{"line_number":188,"context_line":"that as of writing this spec, nova-compute workers do not yet support"},{"line_number":189,"context_line":"representing physical CPU packages/sockets using child resource providers. A"},{"line_number":190,"context_line":"`separate spec \u003cNUMA topology with resource providers\u003e`_ covers how virt"},{"line_number":191,"context_line":"drivers can model separate NUMA nodes or physical CPU sockets using a provider"},{"line_number":192,"context_line":"tree model."},{"line_number":193,"context_line":""}],"source_content_type":"text/x-rst","patch_set":20,"id":"3f79a3b5_e7958ce4","line":190,"range":{"start_line":190,"start_character":15,"end_line":190,"end_character":54},"updated":"2018-10-23 17:05:12.000000000","message":"This link doesn\u0027t work. I guess it might once both specs are available in the same branch? But until then probably better to point to the review.\n\n(Throughout)","commit_id":"2ba9eaa914c7dc211b2b2bc7ae123ce7b7d530c9"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"4ece588b2e3d50f9494d499ee7cc3841bce6b468","unresolved":false,"context_lines":[{"line_number":187,"context_line":"will contain inventory records for ``VCPU`` and/or ``PCPU`` resources. Note"},{"line_number":188,"context_line":"that as of writing this spec, nova-compute workers do not yet support"},{"line_number":189,"context_line":"representing physical CPU packages/sockets using child resource providers. A"},{"line_number":190,"context_line":"`separate spec \u003cNUMA topology with resource providers\u003e`_ covers how virt"},{"line_number":191,"context_line":"drivers can model separate NUMA nodes or physical CPU sockets using a provider"},{"line_number":192,"context_line":"tree model."},{"line_number":193,"context_line":""}],"source_content_type":"text/x-rst","patch_set":20,"id":"3f79a3b5_ddf1f497","line":190,"range":{"start_line":190,"start_character":15,"end_line":190,"end_character":54},"in_reply_to":"3f79a3b5_e7958ce4","updated":"2018-10-26 13:53:46.000000000","message":"Done","commit_id":"2ba9eaa914c7dc211b2b2bc7ae123ce7b7d530c9"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"50c62542ef4cd103621bcf3c53f81371370065cd","unresolved":false,"context_lines":[{"line_number":187,"context_line":"will contain inventory records for ``VCPU`` and/or ``PCPU`` resources. Note"},{"line_number":188,"context_line":"that as of writing this spec, nova-compute workers do not yet support"},{"line_number":189,"context_line":"representing physical CPU packages/sockets using child resource providers. A"},{"line_number":190,"context_line":"`separate spec \u003cNUMA topology with resource providers\u003e`_ covers how virt"},{"line_number":191,"context_line":"drivers can model separate NUMA nodes or physical CPU sockets using a provider"},{"line_number":192,"context_line":"tree model."},{"line_number":193,"context_line":""}],"source_content_type":"text/x-rst","patch_set":20,"id":"3f79a3b5_c22113b7","line":190,"range":{"start_line":190,"start_character":15,"end_line":190,"end_character":54},"in_reply_to":"3f79a3b5_e7958ce4","updated":"2018-10-26 13:29:17.000000000","message":"We should update these to use the \u0027doc\u0027 role once both have landed.","commit_id":"2ba9eaa914c7dc211b2b2bc7ae123ce7b7d530c9"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"3c201eadb842fbced3c107fe7b501101bdc8641b","unresolved":false,"context_lines":[{"line_number":195,"context_line":""},{"line_number":196,"context_line":"    This spec does not dictate *how* a host system will be configured to use"},{"line_number":197,"context_line":"    (or not use) NUMA. See the `spec on modeling NUMA with resource providers"},{"line_number":198,"context_line":"    \u003cNUMA topology with resource providers_\u003e` for more information."},{"line_number":199,"context_line":""},{"line_number":200,"context_line":"An example of a compute node that does *not* use the `proposed \u003cNUMA topology"},{"line_number":201,"context_line":"with resource providers\u003e`_ method of modeling separate physical CPU"}],"source_content_type":"text/x-rst","patch_set":20,"id":"3f79a3b5_278704b6","line":198,"range":{"start_line":198,"start_character":4,"end_line":198,"end_character":45},"updated":"2018-10-23 17:05:12.000000000","message":"this one doesn\u0027t render at all (I think s/_\u003e/\u003e_/)","commit_id":"2ba9eaa914c7dc211b2b2bc7ae123ce7b7d530c9"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"4ece588b2e3d50f9494d499ee7cc3841bce6b468","unresolved":false,"context_lines":[{"line_number":195,"context_line":""},{"line_number":196,"context_line":"    This spec does not dictate *how* a host system will be configured to use"},{"line_number":197,"context_line":"    (or not use) NUMA. See the `spec on modeling NUMA with resource providers"},{"line_number":198,"context_line":"    \u003cNUMA topology with resource providers_\u003e` for more information."},{"line_number":199,"context_line":""},{"line_number":200,"context_line":"An example of a compute node that does *not* use the `proposed \u003cNUMA topology"},{"line_number":201,"context_line":"with resource providers\u003e`_ method of modeling separate physical CPU"}],"source_content_type":"text/x-rst","patch_set":20,"id":"3f79a3b5_dd36d44f","line":198,"range":{"start_line":198,"start_character":4,"end_line":198,"end_character":45},"in_reply_to":"3f79a3b5_278704b6","updated":"2018-10-26 13:53:46.000000000","message":"Done","commit_id":"2ba9eaa914c7dc211b2b2bc7ae123ce7b7d530c9"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"50c62542ef4cd103621bcf3c53f81371370065cd","unresolved":false,"context_lines":[{"line_number":214,"context_line":"    [compute]"},{"line_number":215,"context_line":"    cpu_dedicated_set\u003d2-17"},{"line_number":216,"context_line":"    cpu_shared_set\u003d18-47"},{"line_number":217,"context_line":"    cpu_allocation_ratio\u003d8.0"},{"line_number":218,"context_line":""},{"line_number":219,"context_line":"The virt driver will construct a provider tree containing a single resource"},{"line_number":220,"context_line":"provider representing the compute node and report inventory of ``PCPU`` and"}],"source_content_type":"text/x-rst","patch_set":20,"id":"3f79a3b5_9d105c4e","line":217,"range":{"start_line":217,"start_character":4,"end_line":217,"end_character":24},"updated":"2018-10-26 13:29:17.000000000","message":"This is in the [DEFAULT] group [1], annoyingly\n\n[1] https://docs.openstack.org/nova/rocky/configuration/config.html#DEFAULT.cpu_allocation_ratio","commit_id":"2ba9eaa914c7dc211b2b2bc7ae123ce7b7d530c9"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"4ece588b2e3d50f9494d499ee7cc3841bce6b468","unresolved":false,"context_lines":[{"line_number":214,"context_line":"    [compute]"},{"line_number":215,"context_line":"    cpu_dedicated_set\u003d2-17"},{"line_number":216,"context_line":"    cpu_shared_set\u003d18-47"},{"line_number":217,"context_line":"    cpu_allocation_ratio\u003d8.0"},{"line_number":218,"context_line":""},{"line_number":219,"context_line":"The virt driver will construct a provider tree containing a single resource"},{"line_number":220,"context_line":"provider representing the compute node and report inventory of ``PCPU`` and"}],"source_content_type":"text/x-rst","patch_set":20,"id":"3f79a3b5_3d1108b0","line":217,"range":{"start_line":217,"start_character":4,"end_line":217,"end_character":24},"in_reply_to":"3f79a3b5_9d105c4e","updated":"2018-10-26 13:53:46.000000000","message":"Done","commit_id":"2ba9eaa914c7dc211b2b2bc7ae123ce7b7d530c9"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"3c201eadb842fbced3c107fe7b501101bdc8641b","unresolved":false,"context_lines":[{"line_number":222,"context_line":""},{"line_number":223,"context_line":"    COMPUTE NODE provider"},{"line_number":224,"context_line":"        PCPU:"},{"line_number":225,"context_line":"            total: 18"},{"line_number":226,"context_line":"            reserved: 2"},{"line_number":227,"context_line":"            min_unit: 1"},{"line_number":228,"context_line":"            max_unit: 16"},{"line_number":229,"context_line":"            step_size: 1"}],"source_content_type":"text/x-rst","patch_set":20,"id":"3f79a3b5_ea76b3a3","line":226,"range":{"start_line":225,"start_character":0,"end_line":226,"end_character":23},"updated":"2018-10-23 17:05:12.000000000","message":"mmph. Why 18/2 rather than 16/0? Implies that the virt driver needs to figure out how many CPUs are \"missing\" from the union of the pinsets, and then arbitrarily assign those reserved units to the PCPU inventory as opposed to the VCPU inventory. That\u0027s also going to make it harder to understand how to configure reserved values separately. Or are we going to make ``reserved_host_cpus`` mutually exclusive with some combination of cpu_{dedicated|shared}_set?\n\nI think it would be simpler if the pinsets are not part of the calculation of ``reserved`` values.","commit_id":"2ba9eaa914c7dc211b2b2bc7ae123ce7b7d530c9"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"50c62542ef4cd103621bcf3c53f81371370065cd","unresolved":false,"context_lines":[{"line_number":222,"context_line":""},{"line_number":223,"context_line":"    COMPUTE NODE provider"},{"line_number":224,"context_line":"        PCPU:"},{"line_number":225,"context_line":"            total: 18"},{"line_number":226,"context_line":"            reserved: 2"},{"line_number":227,"context_line":"            min_unit: 1"},{"line_number":228,"context_line":"            max_unit: 16"},{"line_number":229,"context_line":"            step_size: 1"}],"source_content_type":"text/x-rst","patch_set":20,"id":"3f79a3b5_9dda9c73","line":226,"range":{"start_line":225,"start_character":0,"end_line":226,"end_character":23},"in_reply_to":"3f79a3b5_229b2716","updated":"2018-10-26 13:29:17.000000000","message":"I agree with Eric here - this is confusing to say the least. Given that in the new world, we\u0027re going to have to explicitly configure both \u0027cpu_dedicated_set\u0027 and \u0027cpu_shared_set\u0027, why is cpu_dedicated_set still needed? Couldn\u0027t we just deprecate this along with \u0027vcpu_pin_set\u0027? If not, don\u0027t we need a check to ensure \u0027reserved_host_cpus\u0027 is the exact same size as the number of CPUs not included in the \u0027cpu_dedicated_set\u0027 and \u0027cpu_shared_set\u0027 options?","commit_id":"2ba9eaa914c7dc211b2b2bc7ae123ce7b7d530c9"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"4ece588b2e3d50f9494d499ee7cc3841bce6b468","unresolved":false,"context_lines":[{"line_number":222,"context_line":""},{"line_number":223,"context_line":"    COMPUTE NODE provider"},{"line_number":224,"context_line":"        PCPU:"},{"line_number":225,"context_line":"            total: 18"},{"line_number":226,"context_line":"            reserved: 2"},{"line_number":227,"context_line":"            min_unit: 1"},{"line_number":228,"context_line":"            max_unit: 16"},{"line_number":229,"context_line":"            step_size: 1"}],"source_content_type":"text/x-rst","patch_set":20,"id":"3f79a3b5_7d1a20c7","line":226,"range":{"start_line":225,"start_character":0,"end_line":226,"end_character":23},"in_reply_to":"3f79a3b5_9dda9c73","updated":"2018-10-26 13:53:46.000000000","message":"Done","commit_id":"2ba9eaa914c7dc211b2b2bc7ae123ce7b7d530c9"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"02c432aa118c7d8d158722cc2c25692b01fe9561","unresolved":false,"context_lines":[{"line_number":222,"context_line":""},{"line_number":223,"context_line":"    COMPUTE NODE provider"},{"line_number":224,"context_line":"        PCPU:"},{"line_number":225,"context_line":"            total: 18"},{"line_number":226,"context_line":"            reserved: 2"},{"line_number":227,"context_line":"            min_unit: 1"},{"line_number":228,"context_line":"            max_unit: 16"},{"line_number":229,"context_line":"            step_size: 1"}],"source_content_type":"text/x-rst","patch_set":20,"id":"3f79a3b5_229b2716","line":226,"range":{"start_line":225,"start_character":0,"end_line":226,"end_character":23},"in_reply_to":"3f79a3b5_ea76b3a3","updated":"2018-10-26 13:08:25.000000000","message":"I don\u0027t see how it would be wise to *not* have the virt driver take the CONF.cpu_dedicated_set and CONF.cpu_shared_set option values into account when determining how many of each (VCPU and PCPU) resource class it will leave as reserved for the host.\n\nCan you explain to me how having pinset values that don\u0027t align at all with some manually-assigned reserved_host_vcpus CONF option will be simple for an operator to reason about?","commit_id":"2ba9eaa914c7dc211b2b2bc7ae123ce7b7d530c9"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"3c201eadb842fbced3c107fe7b501101bdc8641b","unresolved":false,"context_lines":[{"line_number":300,"context_line":"Guest resource requests"},{"line_number":301,"context_line":"-----------------------"},{"line_number":302,"context_line":""},{"line_number":303,"context_line":"We propose to utilize the existing flavor ``resource:$RESOURCE_CLASS\u003d$AMOUNT``"},{"line_number":304,"context_line":"extra-specs and image properties system for requesting both shared and"},{"line_number":305,"context_line":"dedicated CPU resources for a guest."},{"line_number":306,"context_line":""}],"source_content_type":"text/x-rst","patch_set":20,"id":"3f79a3b5_aaef5b1a","line":303,"range":{"start_line":303,"start_character":44,"end_line":303,"end_character":52},"updated":"2018-10-23 17:05:12.000000000","message":"nit: resources","commit_id":"2ba9eaa914c7dc211b2b2bc7ae123ce7b7d530c9"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"4ece588b2e3d50f9494d499ee7cc3841bce6b468","unresolved":false,"context_lines":[{"line_number":300,"context_line":"Guest resource requests"},{"line_number":301,"context_line":"-----------------------"},{"line_number":302,"context_line":""},{"line_number":303,"context_line":"We propose to utilize the existing flavor ``resource:$RESOURCE_CLASS\u003d$AMOUNT``"},{"line_number":304,"context_line":"extra-specs and image properties system for requesting both shared and"},{"line_number":305,"context_line":"dedicated CPU resources for a guest."},{"line_number":306,"context_line":""}],"source_content_type":"text/x-rst","patch_set":20,"id":"3f79a3b5_3d76e80d","line":303,"range":{"start_line":303,"start_character":44,"end_line":303,"end_character":52},"in_reply_to":"3f79a3b5_aaef5b1a","updated":"2018-10-26 13:53:46.000000000","message":"Done","commit_id":"2ba9eaa914c7dc211b2b2bc7ae123ce7b7d530c9"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"3c201eadb842fbced3c107fe7b501101bdc8641b","unresolved":false,"context_lines":[{"line_number":315,"context_line":"The concept of a guest virtual CPU topology is related to the request for"},{"line_number":316,"context_line":"dedicated and shared CPU resources, but the two concepts are not exactly the"},{"line_number":317,"context_line":"same. What we discuss here is simply how to translate a desire for more than"},{"line_number":318,"context_line":"one CPU resources to be supplied by a single or a distinct set of resource"},{"line_number":319,"context_line":"providers."},{"line_number":320,"context_line":""},{"line_number":321,"context_line":"It just so happens that the resource providers of CPU resources will typically"}],"source_content_type":"text/x-rst","patch_set":20,"id":"3f79a3b5_8ac37f8c","line":318,"range":{"start_line":318,"start_character":8,"end_line":318,"end_character":17},"updated":"2018-10-23 17:05:12.000000000","message":"resource","commit_id":"2ba9eaa914c7dc211b2b2bc7ae123ce7b7d530c9"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"4ece588b2e3d50f9494d499ee7cc3841bce6b468","unresolved":false,"context_lines":[{"line_number":315,"context_line":"The concept of a guest virtual CPU topology is related to the request for"},{"line_number":316,"context_line":"dedicated and shared CPU resources, but the two concepts are not exactly the"},{"line_number":317,"context_line":"same. What we discuss here is simply how to translate a desire for more than"},{"line_number":318,"context_line":"one CPU resources to be supplied by a single or a distinct set of resource"},{"line_number":319,"context_line":"providers."},{"line_number":320,"context_line":""},{"line_number":321,"context_line":"It just so happens that the resource providers of CPU resources will typically"}],"source_content_type":"text/x-rst","patch_set":20,"id":"3f79a3b5_5d7964f8","line":318,"range":{"start_line":318,"start_character":8,"end_line":318,"end_character":17},"in_reply_to":"3f79a3b5_8ac37f8c","updated":"2018-10-26 13:53:46.000000000","message":"Done","commit_id":"2ba9eaa914c7dc211b2b2bc7ae123ce7b7d530c9"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"a8c151037d1c434223598fd6a955ef1024adee28","unresolved":false,"context_lines":[{"line_number":342,"context_line":"    Invalid input for field/attribute vcpus. Value: 0."},{"line_number":343,"context_line":"    0 is less than the minimum of 1 (HTTP 400)..."},{"line_number":344,"context_line":""},{"line_number":345,"context_line":"This is a problem since with this spec, we will be allowing an administrator to"},{"line_number":346,"context_line":"specify that a flavor *only* consumes dedicated CPU resources and no shared CPU"},{"line_number":347,"context_line":"resources. The natural solution to this problem is to change the validation on"},{"line_number":348,"context_line":"the flavor to return a failure only when flavor.vcpus is 0 *AND* there is no"},{"line_number":349,"context_line":"``resources:PCPU`` extra spec present."},{"line_number":350,"context_line":""},{"line_number":351,"context_line":"Ensure all CPU resources are supplied by the same provider"},{"line_number":352,"context_line":"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"}],"source_content_type":"text/x-rst","patch_set":20,"id":"3f79a3b5_dcc5fa0a","line":349,"range":{"start_line":345,"start_character":0,"end_line":349,"end_character":38},"updated":"2018-10-09 04:49:58.000000000","message":"so...an API change.","commit_id":"2ba9eaa914c7dc211b2b2bc7ae123ce7b7d530c9"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"3c201eadb842fbced3c107fe7b501101bdc8641b","unresolved":false,"context_lines":[{"line_number":342,"context_line":"    Invalid input for field/attribute vcpus. Value: 0."},{"line_number":343,"context_line":"    0 is less than the minimum of 1 (HTTP 400)..."},{"line_number":344,"context_line":""},{"line_number":345,"context_line":"This is a problem since with this spec, we will be allowing an administrator to"},{"line_number":346,"context_line":"specify that a flavor *only* consumes dedicated CPU resources and no shared CPU"},{"line_number":347,"context_line":"resources. The natural solution to this problem is to change the validation on"},{"line_number":348,"context_line":"the flavor to return a failure only when flavor.vcpus is 0 *AND* there is no"},{"line_number":349,"context_line":"``resources:PCPU`` extra spec present."},{"line_number":350,"context_line":""},{"line_number":351,"context_line":"Ensure all CPU resources are supplied by the same provider"},{"line_number":352,"context_line":"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"}],"source_content_type":"text/x-rst","patch_set":20,"id":"3f79a3b5_aad99b55","line":349,"range":{"start_line":345,"start_character":0,"end_line":349,"end_character":38},"in_reply_to":"3f79a3b5_dcc5fa0a","updated":"2018-10-23 17:05:12.000000000","message":"Isn\u0027t it time to unify resource requests in the flavor? Having VCPU be a first-class flavor property and PCPU be in an extra spec seems to go over the line.","commit_id":"2ba9eaa914c7dc211b2b2bc7ae123ce7b7d530c9"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"3c201eadb842fbced3c107fe7b501101bdc8641b","unresolved":false,"context_lines":[{"line_number":408,"context_line":"    resources2:PCPU\u003d1"},{"line_number":409,"context_line":"    resources3:PCPU\u003d1"},{"line_number":410,"context_line":"    resources4:PCPU\u003d1"},{"line_number":411,"context_line":"    group_policy\u003dnone"},{"line_number":412,"context_line":""},{"line_number":413,"context_line":".. note::"},{"line_number":414,"context_line":""}],"source_content_type":"text/x-rst","patch_set":20,"id":"3f79a3b5_6ac86374","line":411,"updated":"2018-10-23 17:05:12.000000000","message":"Thanks for including this section. I know it was painful :P","commit_id":"2ba9eaa914c7dc211b2b2bc7ae123ce7b7d530c9"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"3c201eadb842fbced3c107fe7b501101bdc8641b","unresolved":false,"context_lines":[{"line_number":458,"context_line":"    providers_\u003e` is implemented, since until that happens, there will only be a"},{"line_number":459,"context_line":"    single resource provider representing the compute node."},{"line_number":460,"context_line":""},{"line_number":461,"context_line":"Guest tolerance for hyperthreads"},{"line_number":462,"context_line":"--------------------------------"},{"line_number":463,"context_line":""},{"line_number":464,"context_line":"Certain guests have a tolerance for physical processors being a hyperthread"}],"source_content_type":"text/x-rst","patch_set":20,"id":"3f79a3b5_2a6cab69","line":461,"updated":"2018-10-23 17:05:12.000000000","message":"NB: I skipped this section.","commit_id":"2ba9eaa914c7dc211b2b2bc7ae123ce7b7d530c9"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"3c201eadb842fbced3c107fe7b501101bdc8641b","unresolved":false,"context_lines":[{"line_number":492,"context_line":"include one of each set of hyperthread siblings in ``CONF.cpu_dedicated_set``"},{"line_number":493,"context_line":"(and the sibling(s) should be omitted from ``CONF.cpu_shared_set`` as well)."},{"line_number":494,"context_line":""},{"line_number":495,"context_line":"Isolating emulator threads from guest vCPU threads"},{"line_number":496,"context_line":"--------------------------------------------------"},{"line_number":497,"context_line":""},{"line_number":498,"context_line":"The existing ``hw:emulator_threads_policy\u003disolate|share`` flavor extra spec and"}],"source_content_type":"text/x-rst","patch_set":20,"id":"3f79a3b5_4a9ec755","line":495,"updated":"2018-10-23 17:05:12.000000000","message":"ditto","commit_id":"2ba9eaa914c7dc211b2b2bc7ae123ce7b7d530c9"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"50c62542ef4cd103621bcf3c53f81371370065cd","unresolved":false,"context_lines":[{"line_number":507,"context_line":"    There is a separate spec_ that discusses a change to how the virt driver"},{"line_number":508,"context_line":"    would determine which host CPUs those isolate emulator threads would run"},{"line_number":509,"context_line":"    on, but the outcome of that spec does not affect the resource accounting"},{"line_number":510,"context_line":"    that this spec focuses on. Also note that long-term, it is probably worth"},{"line_number":511,"context_line":"    just getting rid of the ``hw:emulator_threads_policy`` image/flavor extra"},{"line_number":512,"context_line":"    spec and just hard-coding behaviour that says if ``CONF.cpu_shared_set`` is"},{"line_number":513,"context_line":"    not empty and the image/flavor is requesting dedicated guest CPU resources,"},{"line_number":514,"context_line":"    then emulator threads will always be placed on one of the"},{"line_number":515,"context_line":"    ``CONF.cpu_shared_set`` host processors."},{"line_number":516,"context_line":""},{"line_number":517,"context_line":".. _spec: http://specs.openstack.org/openstack/nova-specs/specs/rocky/approved/libvirt-emulator-threads-policy.html"},{"line_number":518,"context_line":""}],"source_content_type":"text/x-rst","patch_set":20,"id":"3f79a3b5_bdf518ce","line":515,"range":{"start_line":510,"start_character":31,"end_line":515,"end_character":44},"updated":"2018-10-26 13:29:17.000000000","message":"Amen","commit_id":"2ba9eaa914c7dc211b2b2bc7ae123ce7b7d530c9"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"a8c151037d1c434223598fd6a955ef1024adee28","unresolved":false,"context_lines":[{"line_number":525,"context_line":"1) A simple web application server workload requires a couple CPU resources."},{"line_number":526,"context_line":"   The workload does not require any dedicated CPU resources::"},{"line_number":527,"context_line":""},{"line_number":528,"context_line":"    resources:VCPU\u003d2"},{"line_number":529,"context_line":""},{"line_number":530,"context_line":"2)"},{"line_number":531,"context_line":""}],"source_content_type":"text/x-rst","patch_set":20,"id":"3f79a3b5_b7a377ff","line":528,"range":{"start_line":528,"start_character":4,"end_line":528,"end_character":20},"updated":"2018-10-09 04:49:58.000000000","message":"Sorry, Jay, one question coming up after going through this spec again. Also for the guest without NUMA, you want to decouple the NUMAobject with cpu pinning. So where are we going to track which  PCPU is pinning to a guest? I guess we need a new place, since the guest without NUMA, then it won\u0027t has InstanceNUMATopo obj, then it also can\u0027t utilize the existing host NUMATopo obj to track those PCPU pinning.","commit_id":"2ba9eaa914c7dc211b2b2bc7ae123ce7b7d530c9"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"a3317c665a0618dc78a03201726e3d616e61f2fc","unresolved":false,"context_lines":[{"line_number":525,"context_line":"1) A simple web application server workload requires a couple CPU resources."},{"line_number":526,"context_line":"   The workload does not require any dedicated CPU resources::"},{"line_number":527,"context_line":""},{"line_number":528,"context_line":"    resources:VCPU\u003d2"},{"line_number":529,"context_line":""},{"line_number":530,"context_line":"2)"},{"line_number":531,"context_line":""}],"source_content_type":"text/x-rst","patch_set":20,"id":"3f79a3b5_c8f0a6ff","line":528,"range":{"start_line":528,"start_character":4,"end_line":528,"end_character":20},"in_reply_to":"3f79a3b5_0dd1d02e","updated":"2018-10-23 13:51:22.000000000","message":"I mean if you boot an new instance with flavor without any \u0027HW:NUMA_xxx\u0027 stuff. Then you will get a \u0027None\u0027 value for the InstanceNumaTopology object. Then Instance.numa_topology is \u0027None\u0027.","commit_id":"2ba9eaa914c7dc211b2b2bc7ae123ce7b7d530c9"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"50c62542ef4cd103621bcf3c53f81371370065cd","unresolved":false,"context_lines":[{"line_number":525,"context_line":"1) A simple web application server workload requires a couple CPU resources."},{"line_number":526,"context_line":"   The workload does not require any dedicated CPU resources::"},{"line_number":527,"context_line":""},{"line_number":528,"context_line":"    resources:VCPU\u003d2"},{"line_number":529,"context_line":""},{"line_number":530,"context_line":"2)"},{"line_number":531,"context_line":""}],"source_content_type":"text/x-rst","patch_set":20,"id":"3f79a3b5_9de4dc0c","line":528,"range":{"start_line":528,"start_character":4,"end_line":528,"end_character":20},"in_reply_to":"3f79a3b5_a41eb25b","updated":"2018-10-26 13:29:17.000000000","message":"\u003e Or we should set cpu_policy equal to dedicated inside nova code,\n \u003e then resources:PCPU can work as natural of people understanding?\n\nI was of the opinion that this implicit behavior would happen, yes. Floating cores within host CPUs dedicated for pCPUs is a silly idea that shouldn\u0027t be allowed to happen, either due to misconfiguration or something else","commit_id":"2ba9eaa914c7dc211b2b2bc7ae123ce7b7d530c9"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"20dc50a98b1ec5abc66f2b1627f9af1ec463845d","unresolved":false,"context_lines":[{"line_number":525,"context_line":"1) A simple web application server workload requires a couple CPU resources."},{"line_number":526,"context_line":"   The workload does not require any dedicated CPU resources::"},{"line_number":527,"context_line":""},{"line_number":528,"context_line":"    resources:VCPU\u003d2"},{"line_number":529,"context_line":""},{"line_number":530,"context_line":"2)"},{"line_number":531,"context_line":""}],"source_content_type":"text/x-rst","patch_set":20,"id":"3f79a3b5_0dd1d02e","line":528,"range":{"start_line":528,"start_character":4,"end_line":528,"end_character":20},"in_reply_to":"3f79a3b5_b7a377ff","updated":"2018-10-23 13:17:48.000000000","message":"I\u0027m not proposing any changes to the assignment of host processors to guest vCPU threads. The InstanceNUMATopology object would continue to be used for that.","commit_id":"2ba9eaa914c7dc211b2b2bc7ae123ce7b7d530c9"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"ed9f4039b3095b15baef7f99fe9044e32ae8b685","unresolved":false,"context_lines":[{"line_number":525,"context_line":"1) A simple web application server workload requires a couple CPU resources."},{"line_number":526,"context_line":"   The workload does not require any dedicated CPU resources::"},{"line_number":527,"context_line":""},{"line_number":528,"context_line":"    resources:VCPU\u003d2"},{"line_number":529,"context_line":""},{"line_number":530,"context_line":"2)"},{"line_number":531,"context_line":""}],"source_content_type":"text/x-rst","patch_set":20,"id":"3f79a3b5_a41eb25b","line":528,"range":{"start_line":528,"start_character":4,"end_line":528,"end_character":20},"in_reply_to":"3f79a3b5_c8f0a6ff","updated":"2018-10-23 15:22:08.000000000","message":"After talking with Jay and Sean, I see now.\n\nThis spec doesn\u0027t change any pinning implementation or numa stuff.\n\nso the resources:VCPU doesn\u0027t mean the guest vcpu will pinning to the cpu set defined in CONF.cpu_shared_set. It will still float on all the pcpu. Since this spec doesn\u0027t propose to change that, it only about the cpu resource tracking.\n\nAlso, I see resources:PCPU doesn\u0027t mean the guest vcpu will pinning to the pcpu if without cpu_policy \u003d\u003d \u0027dedicated\u0027, the vcpu still float on all the pcpu. I see this is for the process we deprecated the cpu_policy in extra spec. probably that will confuse the user. We need to doc at somewhere.\n\nOr we should set cpu_policy equal to dedicated inside nova code, then resources:PCPU can work as natural of people understanding?","commit_id":"2ba9eaa914c7dc211b2b2bc7ae123ce7b7d530c9"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"3c201eadb842fbced3c107fe7b501101bdc8641b","unresolved":false,"context_lines":[{"line_number":556,"context_line":"3) A virtual network function running a packet-core processing application"},{"line_number":557,"context_line":"   requires 12 CPU resources. 10 of those CPU resources should be pinned to"},{"line_number":558,"context_line":"   physical host CPUs. 2 of those CPU resources may be placed on host CPUs that"},{"line_number":559,"context_line":"   other guests share. There is no requirements that the CPU resources be"},{"line_number":560,"context_line":"   provided by the same resource provider. The VNF specifies that the dedicated"},{"line_number":561,"context_line":"   CPUs it receives should *not* be hyperthread siblings (in other words, it"},{"line_number":562,"context_line":"   wants full cores for its dedicated CPU resources)::"},{"line_number":563,"context_line":""}],"source_content_type":"text/x-rst","patch_set":20,"id":"3f79a3b5_8a2cdf00","line":560,"range":{"start_line":559,"start_character":32,"end_line":560,"end_character":42},"updated":"2018-10-23 17:05:12.000000000","message":"tbc, as written, all 10 PCPUs will come from the same provider, and both VCPUs will come from the same provider. The PCPUs and VCPUs will not necessarily come from the same provider as each other.","commit_id":"2ba9eaa914c7dc211b2b2bc7ae123ce7b7d530c9"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"4ece588b2e3d50f9494d499ee7cc3841bce6b468","unresolved":false,"context_lines":[{"line_number":556,"context_line":"3) A virtual network function running a packet-core processing application"},{"line_number":557,"context_line":"   requires 12 CPU resources. 10 of those CPU resources should be pinned to"},{"line_number":558,"context_line":"   physical host CPUs. 2 of those CPU resources may be placed on host CPUs that"},{"line_number":559,"context_line":"   other guests share. There is no requirements that the CPU resources be"},{"line_number":560,"context_line":"   provided by the same resource provider. The VNF specifies that the dedicated"},{"line_number":561,"context_line":"   CPUs it receives should *not* be hyperthread siblings (in other words, it"},{"line_number":562,"context_line":"   wants full cores for its dedicated CPU resources)::"},{"line_number":563,"context_line":""}],"source_content_type":"text/x-rst","patch_set":20,"id":"3f79a3b5_5dc72412","line":560,"range":{"start_line":559,"start_character":32,"end_line":560,"end_character":42},"in_reply_to":"3f79a3b5_8a2cdf00","updated":"2018-10-26 13:53:46.000000000","message":"ack","commit_id":"2ba9eaa914c7dc211b2b2bc7ae123ce7b7d530c9"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"3c201eadb842fbced3c107fe7b501101bdc8641b","unresolved":false,"context_lines":[{"line_number":619,"context_line":"REST API impact"},{"line_number":620,"context_line":"---------------"},{"line_number":621,"context_line":""},{"line_number":622,"context_line":"None"},{"line_number":623,"context_line":""},{"line_number":624,"context_line":"Security impact"},{"line_number":625,"context_line":"---------------"}],"source_content_type":"text/x-rst","patch_set":20,"id":"3f79a3b5_ca741707","line":622,"range":{"start_line":622,"start_character":0,"end_line":622,"end_character":4},"updated":"2018-10-23 17:05:12.000000000","message":"The thing about flavor.vcpus\u003d0 that Alex calls out above.","commit_id":"2ba9eaa914c7dc211b2b2bc7ae123ce7b7d530c9"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"4ece588b2e3d50f9494d499ee7cc3841bce6b468","unresolved":false,"context_lines":[{"line_number":619,"context_line":"REST API impact"},{"line_number":620,"context_line":"---------------"},{"line_number":621,"context_line":""},{"line_number":622,"context_line":"None"},{"line_number":623,"context_line":""},{"line_number":624,"context_line":"Security impact"},{"line_number":625,"context_line":"---------------"}],"source_content_type":"text/x-rst","patch_set":20,"id":"3f79a3b5_fdc95023","line":622,"range":{"start_line":622,"start_character":0,"end_line":622,"end_character":4},"in_reply_to":"3f79a3b5_ca741707","updated":"2018-10-26 13:53:46.000000000","message":"Done","commit_id":"2ba9eaa914c7dc211b2b2bc7ae123ce7b7d530c9"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"3c201eadb842fbced3c107fe7b501101bdc8641b","unresolved":false,"context_lines":[{"line_number":667,"context_line":"Developer impact"},{"line_number":668,"context_line":"----------------"},{"line_number":669,"context_line":""},{"line_number":670,"context_line":"None"},{"line_number":671,"context_line":""},{"line_number":672,"context_line":"Upgrade impact"},{"line_number":673,"context_line":"--------------"}],"source_content_type":"text/x-rst","patch_set":20,"id":"3f79a3b5_aa699bf7","line":670,"range":{"start_line":670,"start_character":0,"end_line":670,"end_character":4},"updated":"2018-10-23 17:05:12.000000000","message":"Developers of virt driver code will need to understand how to look for, parse, interpret, and correlate the new conf options against whatever is discovered on the system.\n\nIt is not clear whether the scope of this spec includes changing any virt drivers to do the above in update_provider_tree.\n\n[Later] Oh, I see it mentioned in `Work Items`, but it isn\u0027t clear which virt driver(s) are affected.","commit_id":"2ba9eaa914c7dc211b2b2bc7ae123ce7b7d530c9"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"4ece588b2e3d50f9494d499ee7cc3841bce6b468","unresolved":false,"context_lines":[{"line_number":667,"context_line":"Developer impact"},{"line_number":668,"context_line":"----------------"},{"line_number":669,"context_line":""},{"line_number":670,"context_line":"None"},{"line_number":671,"context_line":""},{"line_number":672,"context_line":"Upgrade impact"},{"line_number":673,"context_line":"--------------"}],"source_content_type":"text/x-rst","patch_set":20,"id":"3f79a3b5_9d9ffcf4","line":670,"range":{"start_line":670,"start_character":0,"end_line":670,"end_character":4},"in_reply_to":"3f79a3b5_aa699bf7","updated":"2018-10-26 13:53:46.000000000","message":"All drivers are affected. Because currently no virt drivers report dedicated CPU resources in inventory.","commit_id":"2ba9eaa914c7dc211b2b2bc7ae123ce7b7d530c9"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"3c201eadb842fbced3c107fe7b501101bdc8641b","unresolved":false,"context_lines":[{"line_number":672,"context_line":"Upgrade impact"},{"line_number":673,"context_line":"--------------"},{"line_number":674,"context_line":""},{"line_number":675,"context_line":"Need to think through this well. There are quite a few existing CONF options"},{"line_number":676,"context_line":"and extra specs that control pinning behavior. While this proposal reduces this"},{"line_number":677,"context_line":"list and makes them consistent, we still need to keep code around"},{"line_number":678,"context_line":"nova/virt/hardware.py to handle old options and extra specs. A first step in"}],"source_content_type":"text/x-rst","patch_set":20,"id":"3f79a3b5_4d0ee133","line":675,"range":{"start_line":675,"start_character":0,"end_line":675,"end_character":33},"updated":"2018-10-23 17:05:12.000000000","message":"So is this spec still a WIP?","commit_id":"2ba9eaa914c7dc211b2b2bc7ae123ce7b7d530c9"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"4ece588b2e3d50f9494d499ee7cc3841bce6b468","unresolved":false,"context_lines":[{"line_number":672,"context_line":"Upgrade impact"},{"line_number":673,"context_line":"--------------"},{"line_number":674,"context_line":""},{"line_number":675,"context_line":"Need to think through this well. There are quite a few existing CONF options"},{"line_number":676,"context_line":"and extra specs that control pinning behavior. While this proposal reduces this"},{"line_number":677,"context_line":"list and makes them consistent, we still need to keep code around"},{"line_number":678,"context_line":"nova/virt/hardware.py to handle old options and extra specs. A first step in"}],"source_content_type":"text/x-rst","patch_set":20,"id":"3f79a3b5_3d60280d","line":675,"range":{"start_line":675,"start_character":0,"end_line":675,"end_character":33},"in_reply_to":"3f79a3b5_4d0ee133","updated":"2018-10-26 13:53:46.000000000","message":"Done","commit_id":"2ba9eaa914c7dc211b2b2bc7ae123ce7b7d530c9"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"3c201eadb842fbced3c107fe7b501101bdc8641b","unresolved":false,"context_lines":[{"line_number":683,"context_line":"Existing compute nodes in a nova installation will either be used for shared"},{"line_number":684,"context_line":"CPU guests or for dedicated CPU guests. When an existing compute node that has"},{"line_number":685,"context_line":"guests which use dedicated CPUs is upgraded to Stein, the virt driver will need"},{"line_number":686,"context_line":"to move inventory of existing ``VCPU`` resources (which are actually using"},{"line_number":687,"context_line":"dedicated host CPUs) to the new ``PCPU`` resource class. Furthermore, existing"},{"line_number":688,"context_line":"allocations for guests on those compute nodes will need to have their"},{"line_number":689,"context_line":"allocation records updated from the ``VCPU`` to ``PCPU`` resource class."}],"source_content_type":"text/x-rst","patch_set":20,"id":"3f79a3b5_ed280d86","line":686,"range":{"start_line":686,"start_character":3,"end_line":686,"end_character":17},"updated":"2018-10-23 17:05:12.000000000","message":"...and allocations. Is this a reshape operation?","commit_id":"2ba9eaa914c7dc211b2b2bc7ae123ce7b7d530c9"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"a8c151037d1c434223598fd6a955ef1024adee28","unresolved":false,"context_lines":[{"line_number":683,"context_line":"Existing compute nodes in a nova installation will either be used for shared"},{"line_number":684,"context_line":"CPU guests or for dedicated CPU guests. When an existing compute node that has"},{"line_number":685,"context_line":"guests which use dedicated CPUs is upgraded to Stein, the virt driver will need"},{"line_number":686,"context_line":"to move inventory of existing ``VCPU`` resources (which are actually using"},{"line_number":687,"context_line":"dedicated host CPUs) to the new ``PCPU`` resource class. Furthermore, existing"},{"line_number":688,"context_line":"allocations for guests on those compute nodes will need to have their"},{"line_number":689,"context_line":"allocation records updated from the ``VCPU`` to ``PCPU`` resource class."},{"line_number":690,"context_line":""}],"source_content_type":"text/x-rst","patch_set":20,"id":"3f79a3b5_9752fb11","line":687,"range":{"start_line":686,"start_character":3,"end_line":687,"end_character":55},"updated":"2018-10-09 04:49:58.000000000","message":"so at the sametime, we should suggest the operator update their CONF.cpu_dedicated_set and CONF.cpu_shared_set? Otherwise, when those guest with dedicated CPU removed, the inventory of those dedicated CPU won\u0027t be removed.\n\n\nif we suggest the operator update their CONF, then the next question is the guest without NUMA still float on all the host CPUs, we need to modify those guest CPU pinning?","commit_id":"2ba9eaa914c7dc211b2b2bc7ae123ce7b7d530c9"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"a3317c665a0618dc78a03201726e3d616e61f2fc","unresolved":false,"context_lines":[{"line_number":683,"context_line":"Existing compute nodes in a nova installation will either be used for shared"},{"line_number":684,"context_line":"CPU guests or for dedicated CPU guests. When an existing compute node that has"},{"line_number":685,"context_line":"guests which use dedicated CPUs is upgraded to Stein, the virt driver will need"},{"line_number":686,"context_line":"to move inventory of existing ``VCPU`` resources (which are actually using"},{"line_number":687,"context_line":"dedicated host CPUs) to the new ``PCPU`` resource class. Furthermore, existing"},{"line_number":688,"context_line":"allocations for guests on those compute nodes will need to have their"},{"line_number":689,"context_line":"allocation records updated from the ``VCPU`` to ``PCPU`` resource class."},{"line_number":690,"context_line":""}],"source_content_type":"text/x-rst","patch_set":20,"id":"3f79a3b5_686e3298","line":687,"range":{"start_line":686,"start_character":3,"end_line":687,"end_character":55},"in_reply_to":"3f79a3b5_0d9f9064","updated":"2018-10-23 13:51:22.000000000","message":"\u003e \u003e so at the sametime, we should suggest the operator update their\n \u003e \u003e CONF.cpu_dedicated_set and CONF.cpu_shared_set? Otherwise, when\n \u003e \u003e those guest with dedicated CPU removed, the inventory of those\n \u003e \u003e dedicated CPU won\u0027t be removed.\n \u003e \n \u003e Correct.\n \u003e \n \u003e \u003e if we suggest the operator update their CONF, then the next\n \u003e \u003e question is the guest without NUMA still float on all the host\n \u003e \u003e CPUs, we need to modify those guest CPU pinning?\n \u003e \n \u003e CPU pinning only occurs for instances that have a non-None\n \u003e InstanceNUMATopology object stored in the instance_extra.numa\n \u003e field.\n\nFor example, you defined 0-7 is dedicated CPUs, 8-15 is shared CPUs. As you said, we still have VCPUs are running at 0-7 dedicated CPUs?","commit_id":"2ba9eaa914c7dc211b2b2bc7ae123ce7b7d530c9"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"4ece588b2e3d50f9494d499ee7cc3841bce6b468","unresolved":false,"context_lines":[{"line_number":683,"context_line":"Existing compute nodes in a nova installation will either be used for shared"},{"line_number":684,"context_line":"CPU guests or for dedicated CPU guests. When an existing compute node that has"},{"line_number":685,"context_line":"guests which use dedicated CPUs is upgraded to Stein, the virt driver will need"},{"line_number":686,"context_line":"to move inventory of existing ``VCPU`` resources (which are actually using"},{"line_number":687,"context_line":"dedicated host CPUs) to the new ``PCPU`` resource class. Furthermore, existing"},{"line_number":688,"context_line":"allocations for guests on those compute nodes will need to have their"},{"line_number":689,"context_line":"allocation records updated from the ``VCPU`` to ``PCPU`` resource class."},{"line_number":690,"context_line":""}],"source_content_type":"text/x-rst","patch_set":20,"id":"3f79a3b5_1853fa16","line":687,"range":{"start_line":686,"start_character":3,"end_line":687,"end_character":55},"in_reply_to":"3f79a3b5_28727a4b","updated":"2018-10-26 13:53:46.000000000","message":"@alex_xu: I think the problem is with the terminology. The guest\u0027s vCPU *threads* are pinned to the host processors 0-7. Those host processors will be in the CONF.cpu_dedicated_set, not the CONF.cpu_shared_set.","commit_id":"2ba9eaa914c7dc211b2b2bc7ae123ce7b7d530c9"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"681c61024e38c6764440da7ae0bbc751f0394fbb","unresolved":false,"context_lines":[{"line_number":683,"context_line":"Existing compute nodes in a nova installation will either be used for shared"},{"line_number":684,"context_line":"CPU guests or for dedicated CPU guests. When an existing compute node that has"},{"line_number":685,"context_line":"guests which use dedicated CPUs is upgraded to Stein, the virt driver will need"},{"line_number":686,"context_line":"to move inventory of existing ``VCPU`` resources (which are actually using"},{"line_number":687,"context_line":"dedicated host CPUs) to the new ``PCPU`` resource class. Furthermore, existing"},{"line_number":688,"context_line":"allocations for guests on those compute nodes will need to have their"},{"line_number":689,"context_line":"allocation records updated from the ``VCPU`` to ``PCPU`` resource class."},{"line_number":690,"context_line":""}],"source_content_type":"text/x-rst","patch_set":20,"id":"3f79a3b5_28727a4b","line":687,"range":{"start_line":686,"start_character":3,"end_line":687,"end_character":55},"in_reply_to":"3f79a3b5_686e3298","updated":"2018-10-23 13:55:42.000000000","message":"\u003e \u003e \u003e so at the sametime, we should suggest the operator update their\n \u003e \u003e \u003e CONF.cpu_dedicated_set and CONF.cpu_shared_set? Otherwise, when\n \u003e \u003e \u003e those guest with dedicated CPU removed, the inventory of those\n \u003e \u003e \u003e dedicated CPU won\u0027t be removed.\n \u003e \u003e\n \u003e \u003e Correct.\n \u003e \u003e\n \u003e \u003e \u003e if we suggest the operator update their CONF, then the next\n \u003e \u003e \u003e question is the guest without NUMA still float on all the host\n \u003e \u003e \u003e CPUs, we need to modify those guest CPU pinning?\n \u003e \u003e\n \u003e \u003e CPU pinning only occurs for instances that have a non-None\n \u003e \u003e InstanceNUMATopology object stored in the instance_extra.numa\n \u003e \u003e field.\n \u003e \n \u003e For example, you defined 0-7 is dedicated CPUs, 8-15 is shared\n \u003e CPUs. As you said, we still have VCPUs are running at 0-7 dedicated\n \u003e CPUs?\n\nMy understand that you are proposing that for the request with resources\u003dVCPU:n, its VCPUs will be pinning to physical CPU 8-15.\n\nAnd you can request this without any guest numa topology configuration in the flavor.","commit_id":"2ba9eaa914c7dc211b2b2bc7ae123ce7b7d530c9"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"20dc50a98b1ec5abc66f2b1627f9af1ec463845d","unresolved":false,"context_lines":[{"line_number":683,"context_line":"Existing compute nodes in a nova installation will either be used for shared"},{"line_number":684,"context_line":"CPU guests or for dedicated CPU guests. When an existing compute node that has"},{"line_number":685,"context_line":"guests which use dedicated CPUs is upgraded to Stein, the virt driver will need"},{"line_number":686,"context_line":"to move inventory of existing ``VCPU`` resources (which are actually using"},{"line_number":687,"context_line":"dedicated host CPUs) to the new ``PCPU`` resource class. Furthermore, existing"},{"line_number":688,"context_line":"allocations for guests on those compute nodes will need to have their"},{"line_number":689,"context_line":"allocation records updated from the ``VCPU`` to ``PCPU`` resource class."},{"line_number":690,"context_line":""}],"source_content_type":"text/x-rst","patch_set":20,"id":"3f79a3b5_0d9f9064","line":687,"range":{"start_line":686,"start_character":3,"end_line":687,"end_character":55},"in_reply_to":"3f79a3b5_9752fb11","updated":"2018-10-23 13:17:48.000000000","message":"\u003e so at the sametime, we should suggest the operator update their\n \u003e CONF.cpu_dedicated_set and CONF.cpu_shared_set? Otherwise, when\n \u003e those guest with dedicated CPU removed, the inventory of those\n \u003e dedicated CPU won\u0027t be removed.\n\nCorrect.\n\n \u003e if we suggest the operator update their CONF, then the next\n \u003e question is the guest without NUMA still float on all the host\n \u003e CPUs, we need to modify those guest CPU pinning?\n\nCPU pinning only occurs for instances that have a non-None InstanceNUMATopology object stored in the instance_extra.numa field.","commit_id":"2ba9eaa914c7dc211b2b2bc7ae123ce7b7d530c9"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"4ece588b2e3d50f9494d499ee7cc3841bce6b468","unresolved":false,"context_lines":[{"line_number":683,"context_line":"Existing compute nodes in a nova installation will either be used for shared"},{"line_number":684,"context_line":"CPU guests or for dedicated CPU guests. When an existing compute node that has"},{"line_number":685,"context_line":"guests which use dedicated CPUs is upgraded to Stein, the virt driver will need"},{"line_number":686,"context_line":"to move inventory of existing ``VCPU`` resources (which are actually using"},{"line_number":687,"context_line":"dedicated host CPUs) to the new ``PCPU`` resource class. Furthermore, existing"},{"line_number":688,"context_line":"allocations for guests on those compute nodes will need to have their"},{"line_number":689,"context_line":"allocation records updated from the ``VCPU`` to ``PCPU`` resource class."},{"line_number":690,"context_line":""}],"source_content_type":"text/x-rst","patch_set":20,"id":"3f79a3b5_181e9a5d","line":687,"range":{"start_line":686,"start_character":3,"end_line":687,"end_character":55},"in_reply_to":"3f79a3b5_9752fb11","updated":"2018-10-26 13:53:46.000000000","message":"Done","commit_id":"2ba9eaa914c7dc211b2b2bc7ae123ce7b7d530c9"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"3c201eadb842fbced3c107fe7b501101bdc8641b","unresolved":false,"context_lines":[{"line_number":716,"context_line":"* Create ``PCPU`` resource class"},{"line_number":717,"context_line":"* Create ``HW_CPU_HYPERTHREADING`` trait"},{"line_number":718,"context_line":"* Create ``CONF.cpu_dedicated_set`` and ``CONF.cpu_shared_set`` options"},{"line_number":719,"context_line":"* Modify virt code to calculate the set of host CPUs that will be used for"},{"line_number":720,"context_line":"  dedicated and shared CPUs by using the above new CONF options"},{"line_number":721,"context_line":"* Modify the code that creates the request group from the flavor\u0027s extra specs"},{"line_number":722,"context_line":"  and image properties to construct a request for ``PCPU`` resources when the"}],"source_content_type":"text/x-rst","patch_set":20,"id":"3f79a3b5_2a758bc9","line":719,"range":{"start_line":719,"start_character":9,"end_line":719,"end_character":18},"updated":"2018-10-23 17:05:12.000000000","message":"Oh, here it is. Which virt driver(s)?","commit_id":"2ba9eaa914c7dc211b2b2bc7ae123ce7b7d530c9"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"50c62542ef4cd103621bcf3c53f81371370065cd","unresolved":false,"context_lines":[{"line_number":716,"context_line":"* Create ``PCPU`` resource class"},{"line_number":717,"context_line":"* Create ``HW_CPU_HYPERTHREADING`` trait"},{"line_number":718,"context_line":"* Create ``CONF.cpu_dedicated_set`` and ``CONF.cpu_shared_set`` options"},{"line_number":719,"context_line":"* Modify virt code to calculate the set of host CPUs that will be used for"},{"line_number":720,"context_line":"  dedicated and shared CPUs by using the above new CONF options"},{"line_number":721,"context_line":"* Modify the code that creates the request group from the flavor\u0027s extra specs"},{"line_number":722,"context_line":"  and image properties to construct a request for ``PCPU`` resources when the"}],"source_content_type":"text/x-rst","patch_set":20,"id":"3f79a3b5_1d952c31","line":719,"range":{"start_line":719,"start_character":9,"end_line":719,"end_character":18},"in_reply_to":"3f79a3b5_2a758bc9","updated":"2018-10-26 13:29:17.000000000","message":"Only libvirt supports CPU pinning (so pCPUs), ergo, only libvirt","commit_id":"2ba9eaa914c7dc211b2b2bc7ae123ce7b7d530c9"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"3c201eadb842fbced3c107fe7b501101bdc8641b","unresolved":false,"context_lines":[{"line_number":729,"context_line":"* Deprecate the ``hw:cpu_threads_policy`` extra spec / image property and add"},{"line_number":730,"context_line":"  documentation explaining how to add the ``HW_CPU_HYPERTHREADING`` trait as"},{"line_number":731,"context_line":"  required or forbidden in the flavor"},{"line_number":732,"context_line":""},{"line_number":733,"context_line":"Dependencies"},{"line_number":734,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":735,"context_line":""}],"source_content_type":"text/x-rst","patch_set":20,"id":"3f79a3b5_0a268fcd","line":732,"updated":"2018-10-23 17:05:12.000000000","message":"Twiddle the validation check for flavor.vcpus\u003d\u003d0","commit_id":"2ba9eaa914c7dc211b2b2bc7ae123ce7b7d530c9"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"4ece588b2e3d50f9494d499ee7cc3841bce6b468","unresolved":false,"context_lines":[{"line_number":729,"context_line":"* Deprecate the ``hw:cpu_threads_policy`` extra spec / image property and add"},{"line_number":730,"context_line":"  documentation explaining how to add the ``HW_CPU_HYPERTHREADING`` trait as"},{"line_number":731,"context_line":"  required or forbidden in the flavor"},{"line_number":732,"context_line":""},{"line_number":733,"context_line":"Dependencies"},{"line_number":734,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":735,"context_line":""}],"source_content_type":"text/x-rst","patch_set":20,"id":"3f79a3b5_387356b6","line":732,"in_reply_to":"3f79a3b5_0a268fcd","updated":"2018-10-26 13:53:46.000000000","message":"Done","commit_id":"2ba9eaa914c7dc211b2b2bc7ae123ce7b7d530c9"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"3c201eadb842fbced3c107fe7b501101bdc8641b","unresolved":false,"context_lines":[{"line_number":733,"context_line":"Dependencies"},{"line_number":734,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":735,"context_line":""},{"line_number":736,"context_line":"The `update_provider_tree`_ blueprint is required for tracking CPU resources"},{"line_number":737,"context_line":"when NUMA affinity constraints are required, since the virt driver will be"},{"line_number":738,"context_line":"reporting ``VCPU`` and ``PCPU`` inventory records against the child providers"},{"line_number":739,"context_line":"representing each NUMA node."},{"line_number":740,"context_line":""},{"line_number":741,"context_line":"The `granular request groups (Rocky)`_ spec is required for guests wishing to"},{"line_number":742,"context_line":"have the placement service fulfill the virtual NUMA topology constraints"},{"line_number":743,"context_line":"regarding dedicated CPUs."},{"line_number":744,"context_line":""},{"line_number":745,"context_line":"For any of the scenarios presented in this spec that involve a single guest\u0027s"},{"line_number":746,"context_line":"CPU resources being spread across multiple resource providers, the `NUMA"}],"source_content_type":"text/x-rst","patch_set":20,"id":"3f79a3b5_cab9777c","line":743,"range":{"start_line":736,"start_character":0,"end_line":743,"end_character":25},"updated":"2018-10-23 17:05:12.000000000","message":"Could remove this, since these are complete.","commit_id":"2ba9eaa914c7dc211b2b2bc7ae123ce7b7d530c9"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"3c201eadb842fbced3c107fe7b501101bdc8641b","unresolved":false,"context_lines":[{"line_number":743,"context_line":"regarding dedicated CPUs."},{"line_number":744,"context_line":""},{"line_number":745,"context_line":"For any of the scenarios presented in this spec that involve a single guest\u0027s"},{"line_number":746,"context_line":"CPU resources being spread across multiple resource providers, the `NUMA"},{"line_number":747,"context_line":"topology with resource providers`_ spec is a dependency."},{"line_number":748,"context_line":""},{"line_number":749,"context_line":"Testing"},{"line_number":750,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":20,"id":"3f79a3b5_6d34fddf","line":747,"range":{"start_line":746,"start_character":67,"end_line":747,"end_character":34},"updated":"2018-10-23 17:05:12.000000000","message":"oh, this one\u0027s right.","commit_id":"2ba9eaa914c7dc211b2b2bc7ae123ce7b7d530c9"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"3c201eadb842fbced3c107fe7b501101bdc8641b","unresolved":false,"context_lines":[{"line_number":762,"context_line":"  resources"},{"line_number":763,"context_line":"* Docs for how the operator can configure a single host to support guests that"},{"line_number":764,"context_line":"  tolerate hyperthread siblings as dedicated CPUs along with guests that cannot"},{"line_number":765,"context_line":""},{"line_number":766,"context_line":"References"},{"line_number":767,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":768,"context_line":""}],"source_content_type":"text/x-rst","patch_set":20,"id":"3f79a3b5_4a8487b2","line":765,"updated":"2018-10-23 17:05:12.000000000","message":"Probably need a support matrix row indicating which virt drivers support the new conf options.","commit_id":"2ba9eaa914c7dc211b2b2bc7ae123ce7b7d530c9"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"8fbf2171f95c08821bd7c0a3860fa51e084f315b","unresolved":false,"context_lines":[{"line_number":143,"context_line":".. note::"},{"line_number":144,"context_line":""},{"line_number":145,"context_line":"    The ``CONF.cpu_shared_set`` option has actually already been added due to"},{"line_number":146,"context_line":"    work on `libvirt emulator threads policy`_."},{"line_number":147,"context_line":""},{"line_number":148,"context_line":".. _libvirt emulator threads policy: http://specs.openstack.org/openstack/nova-specs/specs/rocky/approved/libvirt-emulator-threads-policy.html"},{"line_number":149,"context_line":""}],"source_content_type":"text/x-rst","patch_set":21,"id":"3f79a3b5_7460120c","line":146,"updated":"2018-12-20 17:03:08.000000000","message":"are we really sure the current behaviour of this config option is exactly the one we want once we have the new cpu_dedicated_set option ?","commit_id":"5953b568c20e642729eb62e838bd9e9a957e3c9e"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"b03f413097e4ba419f00c742282bd5bd634a4f5b","unresolved":false,"context_lines":[{"line_number":143,"context_line":".. note::"},{"line_number":144,"context_line":""},{"line_number":145,"context_line":"    The ``CONF.cpu_shared_set`` option has actually already been added due to"},{"line_number":146,"context_line":"    work on `libvirt emulator threads policy`_."},{"line_number":147,"context_line":""},{"line_number":148,"context_line":".. _libvirt emulator threads policy: http://specs.openstack.org/openstack/nova-specs/specs/rocky/approved/libvirt-emulator-threads-policy.html"},{"line_number":149,"context_line":""}],"source_content_type":"text/x-rst","patch_set":21,"id":"dfd5e7cf_05f467ce","line":146,"in_reply_to":"3f79a3b5_7460120c","updated":"2019-01-10 16:09:15.000000000","message":"We do, yes. The idea was that if you have three groups of CPUs, some for the host, some for the pCPUs and some for the vCPUs, then emulator threads fell into the last group. That\u0027s because running them on cores from the pCPU group would defeat the whole purpose of this feature (emulator overhead processes could once again interfere with possibly realtime guest core processes), running them on host cores was a no-no, and running them on guest cores was perfectly fine since these cores are all shared already. All this was fed into that spec, which is why we went with that option (sahid initially proposed adding a whole new option, iirc).","commit_id":"5953b568c20e642729eb62e838bd9e9a957e3c9e"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"8fbf2171f95c08821bd7c0a3860fa51e084f315b","unresolved":false,"context_lines":[{"line_number":159,"context_line":"    ``CONF.cpu_shared_set``. The set difference between the entire set of"},{"line_number":160,"context_line":"    physical processors on a host system and the union of the dedicated and"},{"line_number":161,"context_line":"    shared pinsets shall represent the number of physical processors that has"},{"line_number":162,"context_line":"    been reserved for the host."},{"line_number":163,"context_line":""},{"line_number":164,"context_line":".. note::"},{"line_number":165,"context_line":""}],"source_content_type":"text/x-rst","patch_set":21,"id":"3f79a3b5_d448068a","line":162,"updated":"2018-12-20 17:03:08.000000000","message":"Could we just assume that if cpu_shared_set option isn\u0027t set, then Nova will take all left pCPUs ?\n\nI only see the value to be explicit if you really want to reserve some CPUs for other things but Nova.","commit_id":"5953b568c20e642729eb62e838bd9e9a957e3c9e"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"b03f413097e4ba419f00c742282bd5bd634a4f5b","unresolved":false,"context_lines":[{"line_number":159,"context_line":"    ``CONF.cpu_shared_set``. The set difference between the entire set of"},{"line_number":160,"context_line":"    physical processors on a host system and the union of the dedicated and"},{"line_number":161,"context_line":"    shared pinsets shall represent the number of physical processors that has"},{"line_number":162,"context_line":"    been reserved for the host."},{"line_number":163,"context_line":""},{"line_number":164,"context_line":".. note::"},{"line_number":165,"context_line":""}],"source_content_type":"text/x-rst","patch_set":21,"id":"dfd5e7cf_e594c346","line":162,"in_reply_to":"3f79a3b5_d448068a","updated":"2019-01-10 16:09:15.000000000","message":"Not sure what you\u0027re getting at here. The way I expected this to work, which IIRC is not what Jay\u0027s proposed, was:\n\n- cpu_dedicated_set defined, cpu_shared_set undefined\n\n  Some pCPUs, no vCPUs, anything outside cpu_dedicated_set is host\n\n- cpu_dedicated_set undefined, cpu_shared_set defined\n\n  Some vCPUs, no pCPUs, anything outside cpu_shared_set is host\n\n- cpu_dedicated_set defined, cpu_shared_set defined\n\n  Some vCPUs, some pCPUs, anything outside cpu_dedicated_set + cpu_shared_set is host\n\nI do think we can debate this at implementation time though. There are definitely varying levels of detailed we can be here.","commit_id":"5953b568c20e642729eb62e838bd9e9a957e3c9e"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"a27f7089f1666975d23fd3639b8bfcdafc47b069","unresolved":false,"context_lines":[{"line_number":159,"context_line":"    ``CONF.cpu_shared_set``. The set difference between the entire set of"},{"line_number":160,"context_line":"    physical processors on a host system and the union of the dedicated and"},{"line_number":161,"context_line":"    shared pinsets shall represent the number of physical processors that has"},{"line_number":162,"context_line":"    been reserved for the host."},{"line_number":163,"context_line":""},{"line_number":164,"context_line":".. note::"},{"line_number":165,"context_line":""}],"source_content_type":"text/x-rst","patch_set":21,"id":"bfdaf3ff_0beda7ee","line":162,"in_reply_to":"bfdaf3ff_c5d6ae50","updated":"2019-01-11 14:15:08.000000000","message":"Ok, darn /o\\ Should have just read myself to double check. Ignore me.","commit_id":"5953b568c20e642729eb62e838bd9e9a957e3c9e"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"d1081bc2c160d3c3f139672cf5ef89065bf80d44","unresolved":false,"context_lines":[{"line_number":159,"context_line":"    ``CONF.cpu_shared_set``. The set difference between the entire set of"},{"line_number":160,"context_line":"    physical processors on a host system and the union of the dedicated and"},{"line_number":161,"context_line":"    shared pinsets shall represent the number of physical processors that has"},{"line_number":162,"context_line":"    been reserved for the host."},{"line_number":163,"context_line":""},{"line_number":164,"context_line":".. note::"},{"line_number":165,"context_line":""}],"source_content_type":"text/x-rst","patch_set":21,"id":"bfdaf3ff_c5d6ae50","line":162,"in_reply_to":"dfd5e7cf_e594c346","updated":"2019-01-11 13:05:24.000000000","message":"Stephen, what you describe is exactly what this spec proposes.","commit_id":"5953b568c20e642729eb62e838bd9e9a957e3c9e"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"13d645b506a9b66bef93bfd7f33351d5ded13f9d","unresolved":false,"context_lines":[{"line_number":164,"context_line":".. note::"},{"line_number":165,"context_line":""},{"line_number":166,"context_line":"    The existing ``CONF.reserved_host_cpus`` option will be **deprecated** in"},{"line_number":167,"context_line":"    the Stein release. This CONF option currently indicates the number of"},{"line_number":168,"context_line":"    *physical* host processors to set aside for host use. In Stein, if"},{"line_number":169,"context_line":"    ``CONF.cpu_shared_set`` and ``CONF.cpu_dedicated_set`` are both unset, we"},{"line_number":170,"context_line":"    will use the value of ``CONF.reserved_host_cpus`` in setting the"},{"line_number":171,"context_line":"    ``reserved`` inventory value for the new ``PCPU`` inventory."}],"source_content_type":"text/x-rst","patch_set":21,"id":"3f79a3b5_b6a336fd","line":168,"range":{"start_line":167,"start_character":23,"end_line":168,"end_character":57},"updated":"2018-12-19 02:09:58.000000000","message":"nit: technically  that is not quite true. \nits the number of host processors to reserve for the host to in the resource tracker and in the placement inventory of vcpus. however the number of vcpus that is reported to both is controled by the vcpu_pin_set. if unset the vcpu_pin_set is treated as containing all host processors. \n\nif you set both reserved_host_cpus and the vcpu_pin_set the\ntotal in teh vcpu inventory will be the total number of cores listed in the vcpu_pin_set and the reseved value will be the vale specifed in the reserved_host_cpus config option.\n\nmost host tuning guides do not actully use reserved_host_cpus to reserve cpus for the host and use the vcpu_pin_set instead as it is more accurate since the reserved_host_cpus does not take account of the cpu_allocation_ratio","commit_id":"5953b568c20e642729eb62e838bd9e9a957e3c9e"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"d1081bc2c160d3c3f139672cf5ef89065bf80d44","unresolved":false,"context_lines":[{"line_number":164,"context_line":".. note::"},{"line_number":165,"context_line":""},{"line_number":166,"context_line":"    The existing ``CONF.reserved_host_cpus`` option will be **deprecated** in"},{"line_number":167,"context_line":"    the Stein release. This CONF option currently indicates the number of"},{"line_number":168,"context_line":"    *physical* host processors to set aside for host use. In Stein, if"},{"line_number":169,"context_line":"    ``CONF.cpu_shared_set`` and ``CONF.cpu_dedicated_set`` are both unset, we"},{"line_number":170,"context_line":"    will use the value of ``CONF.reserved_host_cpus`` in setting the"},{"line_number":171,"context_line":"    ``reserved`` inventory value for the new ``PCPU`` inventory."}],"source_content_type":"text/x-rst","patch_set":21,"id":"bfdaf3ff_254a1a27","line":168,"range":{"start_line":167,"start_character":23,"end_line":168,"end_character":57},"in_reply_to":"3f79a3b5_b6a336fd","updated":"2019-01-11 13:05:24.000000000","message":"I think the above perfectly illustrates why there is so much confusion about the existing CONF options and the reasons why I am attempting to simplify and clarify things with this spec. At things currently exist, you either need to work at Intel or Red Hat or have a PhD in linux system tuning to understand any of it. :(","commit_id":"5953b568c20e642729eb62e838bd9e9a957e3c9e"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"13d645b506a9b66bef93bfd7f33351d5ded13f9d","unresolved":false,"context_lines":[{"line_number":167,"context_line":"    the Stein release. This CONF option currently indicates the number of"},{"line_number":168,"context_line":"    *physical* host processors to set aside for host use. In Stein, if"},{"line_number":169,"context_line":"    ``CONF.cpu_shared_set`` and ``CONF.cpu_dedicated_set`` are both unset, we"},{"line_number":170,"context_line":"    will use the value of ``CONF.reserved_host_cpus`` in setting the"},{"line_number":171,"context_line":"    ``reserved`` inventory value for the new ``PCPU`` inventory."},{"line_number":172,"context_line":""},{"line_number":173,"context_line":"    After Stein, ``CONF.cpu_shared_set`` and ``CONF.cpu_dedicated_set`` will be"},{"line_number":174,"context_line":"    used to determine the number of ``PCPU`` resources to reserve for the host"}],"source_content_type":"text/x-rst","patch_set":21,"id":"3f79a3b5_96d4fa4d","line":171,"range":{"start_line":170,"start_character":26,"end_line":171,"end_character":64},"updated":"2018-12-19 02:09:58.000000000","message":"personally i think this is incorrect as it does not preserve backwards compatiablity and also is more complicated then simply not listing it in the core in either set.\n\nsetting it in both the vcpus and pcpus reserved value would seam more corect but i hope we can simply ignore the value in train so its not enough form me to -1","commit_id":"5953b568c20e642729eb62e838bd9e9a957e3c9e"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"b03f413097e4ba419f00c742282bd5bd634a4f5b","unresolved":false,"context_lines":[{"line_number":167,"context_line":"    the Stein release. This CONF option currently indicates the number of"},{"line_number":168,"context_line":"    *physical* host processors to set aside for host use. In Stein, if"},{"line_number":169,"context_line":"    ``CONF.cpu_shared_set`` and ``CONF.cpu_dedicated_set`` are both unset, we"},{"line_number":170,"context_line":"    will use the value of ``CONF.reserved_host_cpus`` in setting the"},{"line_number":171,"context_line":"    ``reserved`` inventory value for the new ``PCPU`` inventory."},{"line_number":172,"context_line":""},{"line_number":173,"context_line":"    After Stein, ``CONF.cpu_shared_set`` and ``CONF.cpu_dedicated_set`` will be"},{"line_number":174,"context_line":"    used to determine the number of ``PCPU`` resources to reserve for the host"}],"source_content_type":"text/x-rst","patch_set":21,"id":"dfd5e7cf_0579c72d","line":171,"range":{"start_line":170,"start_character":26,"end_line":171,"end_character":64},"in_reply_to":"3f79a3b5_96d4fa4d","updated":"2019-01-10 16:09:15.000000000","message":"Hmm, good point. I wonder if it would be better to simply not report PCPU inventory at all if the required options are not defined?","commit_id":"5953b568c20e642729eb62e838bd9e9a957e3c9e"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"0a76256e231184c1a1164feb4743227316c4538d","unresolved":false,"context_lines":[{"line_number":167,"context_line":"    the Stein release. This CONF option currently indicates the number of"},{"line_number":168,"context_line":"    *physical* host processors to set aside for host use. In Stein, if"},{"line_number":169,"context_line":"    ``CONF.cpu_shared_set`` and ``CONF.cpu_dedicated_set`` are both unset, we"},{"line_number":170,"context_line":"    will use the value of ``CONF.reserved_host_cpus`` in setting the"},{"line_number":171,"context_line":"    ``reserved`` inventory value for the new ``PCPU`` inventory."},{"line_number":172,"context_line":""},{"line_number":173,"context_line":"    After Stein, ``CONF.cpu_shared_set`` and ``CONF.cpu_dedicated_set`` will be"},{"line_number":174,"context_line":"    used to determine the number of ``PCPU`` resources to reserve for the host"}],"source_content_type":"text/x-rst","patch_set":21,"id":"5fc1f717_9288c3c6","line":171,"range":{"start_line":170,"start_character":26,"end_line":171,"end_character":64},"in_reply_to":"bfdaf3ff_a55feae3","updated":"2019-03-07 22:43:52.000000000","message":"/me discards repeat comment on same subject above\n\nIMO this is something we can decide at impl time. Though I\u0027m still curious what the answer is going to be.","commit_id":"5953b568c20e642729eb62e838bd9e9a957e3c9e"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"d1081bc2c160d3c3f139672cf5ef89065bf80d44","unresolved":false,"context_lines":[{"line_number":167,"context_line":"    the Stein release. This CONF option currently indicates the number of"},{"line_number":168,"context_line":"    *physical* host processors to set aside for host use. In Stein, if"},{"line_number":169,"context_line":"    ``CONF.cpu_shared_set`` and ``CONF.cpu_dedicated_set`` are both unset, we"},{"line_number":170,"context_line":"    will use the value of ``CONF.reserved_host_cpus`` in setting the"},{"line_number":171,"context_line":"    ``reserved`` inventory value for the new ``PCPU`` inventory."},{"line_number":172,"context_line":""},{"line_number":173,"context_line":"    After Stein, ``CONF.cpu_shared_set`` and ``CONF.cpu_dedicated_set`` will be"},{"line_number":174,"context_line":"    used to determine the number of ``PCPU`` resources to reserve for the host"}],"source_content_type":"text/x-rst","patch_set":21,"id":"bfdaf3ff_a55feae3","line":171,"range":{"start_line":170,"start_character":26,"end_line":171,"end_character":64},"in_reply_to":"dfd5e7cf_0579c72d","updated":"2019-01-11 13:05:24.000000000","message":"This particular point has been gone over, changed, changed back, and debated ad infinitum over the past year. It\u0027s one of the reasons my interest in this spec has faded, frankly. I think we\u0027re essentially in analysis paralysis here.","commit_id":"5953b568c20e642729eb62e838bd9e9a957e3c9e"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"13d645b506a9b66bef93bfd7f33351d5ded13f9d","unresolved":false,"context_lines":[{"line_number":186,"context_line":"    release for removal in the \"T\" release. The ``CONF.cpu_dedicated_set`` and"},{"line_number":187,"context_line":"    ``CONF.cpu_shared_set`` options make ``CONF.vcpu_pin_set`` irrelevant. We"},{"line_number":188,"context_line":"    can fail to start the nova-compute worker if either new option is set while"},{"line_number":189,"context_line":"    the older option is also set."},{"line_number":190,"context_line":""},{"line_number":191,"context_line":"    In order to support smooth upgrade paths, we will continue to support the"},{"line_number":192,"context_line":"    ``CONF.vcpu_pin_set`` option for the Stein release. If"}],"source_content_type":"text/x-rst","patch_set":21,"id":"3f79a3b5_1658eaf9","line":189,"updated":"2018-12-19 02:09:58.000000000","message":"we can be should not in stein.\nwe can set vcpu_pin_set and cpu_shared_set in rocky as disjoint set to define the sect of cpus that will be used for emulator treads and the threads that will be used for the vcpus.","commit_id":"5953b568c20e642729eb62e838bd9e9a957e3c9e"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"b03f413097e4ba419f00c742282bd5bd634a4f5b","unresolved":false,"context_lines":[{"line_number":192,"context_line":"    ``CONF.vcpu_pin_set`` option for the Stein release. If"},{"line_number":193,"context_line":"    ``CONF.vcpu_pin_set`` is set and ``CONF.cpu_dedicated_set`` is **NOT SET**, we"},{"line_number":194,"context_line":"    will conclude that ``CONF.cpu_dedicated_set`` is equivalent to the value of"},{"line_number":195,"context_line":"    ``CPMF/vcpu_pin_set``. This is because currently nova does not support"},{"line_number":196,"context_line":"    compute hosts that have *both* pinned workloads as well as non-pinned"},{"line_number":197,"context_line":"    workloads. Currently, if ``CONF.vcpu_pin_set`` is set to some non-None"},{"line_number":198,"context_line":"    value, that indicates that the compute host uses the physical host"}],"source_content_type":"text/x-rst","patch_set":21,"id":"dfd5e7cf_a5ac7b8c","line":195,"range":{"start_line":195,"start_character":6,"end_line":195,"end_character":10},"updated":"2019-01-10 16:09:15.000000000","message":"CONF.","commit_id":"5953b568c20e642729eb62e838bd9e9a957e3c9e"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"13d645b506a9b66bef93bfd7f33351d5ded13f9d","unresolved":false,"context_lines":[{"line_number":188,"context_line":"    can fail to start the nova-compute worker if either new option is set while"},{"line_number":189,"context_line":"    the older option is also set."},{"line_number":190,"context_line":""},{"line_number":191,"context_line":"    In order to support smooth upgrade paths, we will continue to support the"},{"line_number":192,"context_line":"    ``CONF.vcpu_pin_set`` option for the Stein release. If"},{"line_number":193,"context_line":"    ``CONF.vcpu_pin_set`` is set and ``CONF.cpu_dedicated_set`` is **NOT SET**, we"},{"line_number":194,"context_line":"    will conclude that ``CONF.cpu_dedicated_set`` is equivalent to the value of"},{"line_number":195,"context_line":"    ``CPMF/vcpu_pin_set``. This is because currently nova does not support"},{"line_number":196,"context_line":"    compute hosts that have *both* pinned workloads as well as non-pinned"},{"line_number":197,"context_line":"    workloads. Currently, if ``CONF.vcpu_pin_set`` is set to some non-None"},{"line_number":198,"context_line":"    value, that indicates that the compute host uses the physical host"},{"line_number":199,"context_line":"    processors designated in ``CONF.vcpu_pin_set`` pinning guest vCPU threads"},{"line_number":200,"context_line":"    to *dedicated host processors*. Yes, we\u0027re aware of the terrible"},{"line_number":201,"context_line":"    configuration option naming involved in the original CONF options."},{"line_number":202,"context_line":""},{"line_number":203,"context_line":"It is important to point out that the existing ``CONF.cpu_allocation_ratio``"},{"line_number":204,"context_line":"refers only to the ``VCPU`` resource class -- in other words, shared guest CPU"}],"source_content_type":"text/x-rst","patch_set":21,"id":"3f79a3b5_d61b521c","line":201,"range":{"start_line":191,"start_character":0,"end_line":201,"end_character":70},"updated":"2018-12-19 02:09:58.000000000","message":"this however is something worth -1 ing for\n\nthe vcpu_pin_set today has noting to do with hw:cpu_policy\u003ddedicated.\n\nit defiens the set of cpus that vms can be sheduled to.\nit is used for non pinned instance also to define the set\nof cpus tat gest can float over.\n\nwe cannot and should not assume that if it is set it define the set of pCPU\n\nif vcpu_pin_set is set and cpu_shared_set is set and cpu_dedicated_set is not set \n\nwe could compute the dedicated set by subtrckting the cpu_shared_set form the vcpu_pin_set.\n\ntechnically the cpu_shared set is not intended ot overlap with the vcpu_pin_set today but we do not enforce that.\n\nhere are a few examples for a 4 core host\n\n- vcpu_pin_set\u003dunset cpu_shared_set\u003dunset cpu_dedicated_set\u003dunset \u003e vCPUs\u003d4 pCPUs\u003d0\n- vcpu_pin_set\u003d1, cpu_shared_set\u003dunset, cpu_dedicated_set\u003dunset \u003e vCPUs\u003d1 pCPUs\u003d0\n- vcpu_pin_set\u003d1,2,3 cpu_shared_set\u003d4 cpu_dedicated_set\u003dunset \u003e vCPUs\u003d1 pCPUs\u003d3\n- vcpu_pin_set\u003d1,2,3 cpu_shared_set\u003dunset cpu_dedicated_set\u003d4 \u003e error\n- vcpu_pin_set\u003dunset cpu_shared_set\u003d4 cpu_dedicated_set\u003d1,2,3 \u003e vCPUs\u003d1 pCPUs\u003d3\n\nusing vcpu_pin_set to define pCPUs will break existing deployment and since we already use cpu_shared_set we need to cater for that also.","commit_id":"5953b568c20e642729eb62e838bd9e9a957e3c9e"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"b03f413097e4ba419f00c742282bd5bd634a4f5b","unresolved":false,"context_lines":[{"line_number":188,"context_line":"    can fail to start the nova-compute worker if either new option is set while"},{"line_number":189,"context_line":"    the older option is also set."},{"line_number":190,"context_line":""},{"line_number":191,"context_line":"    In order to support smooth upgrade paths, we will continue to support the"},{"line_number":192,"context_line":"    ``CONF.vcpu_pin_set`` option for the Stein release. If"},{"line_number":193,"context_line":"    ``CONF.vcpu_pin_set`` is set and ``CONF.cpu_dedicated_set`` is **NOT SET**, we"},{"line_number":194,"context_line":"    will conclude that ``CONF.cpu_dedicated_set`` is equivalent to the value of"},{"line_number":195,"context_line":"    ``CPMF/vcpu_pin_set``. This is because currently nova does not support"},{"line_number":196,"context_line":"    compute hosts that have *both* pinned workloads as well as non-pinned"},{"line_number":197,"context_line":"    workloads. Currently, if ``CONF.vcpu_pin_set`` is set to some non-None"},{"line_number":198,"context_line":"    value, that indicates that the compute host uses the physical host"},{"line_number":199,"context_line":"    processors designated in ``CONF.vcpu_pin_set`` pinning guest vCPU threads"},{"line_number":200,"context_line":"    to *dedicated host processors*. Yes, we\u0027re aware of the terrible"},{"line_number":201,"context_line":"    configuration option naming involved in the original CONF options."},{"line_number":202,"context_line":""},{"line_number":203,"context_line":"It is important to point out that the existing ``CONF.cpu_allocation_ratio``"},{"line_number":204,"context_line":"refers only to the ``VCPU`` resource class -- in other words, shared guest CPU"}],"source_content_type":"text/x-rst","patch_set":21,"id":"dfd5e7cf_651a137e","line":201,"range":{"start_line":191,"start_character":0,"end_line":201,"end_character":70},"in_reply_to":"3f79a3b5_d61b521c","updated":"2019-01-10 16:09:15.000000000","message":"\u003e this however is something worth -1 ing for\n \u003e \n \u003e the vcpu_pin_set today has noting to do with hw:cpu_policy\u003ddedicated.\n \u003e \n \u003e it defiens the set of cpus that vms can be sheduled to.\n \u003e it is used for non pinned instance also to define the set\n \u003e of cpus tat gest can float over.\n\nTrue...with caveats. This option defines the set of CPUs that VMs *with a NUMA topology* can be scheduled to. If your guest doesn\u0027t have a NUMA topology, this is completely ignored (at least, based on my reading of the code and basic tests). That said, as you\u0027ve noted multiple times, you can have a NUMA topology without CPU pinning so yes we shouldn\u0027t make this assumption.\n\n \u003e we cannot and should not assume that if it is set it define the set\n \u003e of pCPU\n \u003e \n \u003e if vcpu_pin_set is set and cpu_shared_set is set and\n \u003e cpu_dedicated_set is not set\n \u003e \n \u003e we could compute the dedicated set by subtrckting the\n \u003e cpu_shared_set form the vcpu_pin_set.\n \u003e \n \u003e technically the cpu_shared set is not intended ot overlap with the\n \u003e vcpu_pin_set today but we do not enforce that.\n\nI don\u0027t think we should do that either. At the moment, we\u0027re telling people to use \u0027cpu_shared_set\u0027 for emulator thread overhead only. If whole instances suddenly start running on those cores, they\u0027re likely going to be at least a little surprised. That said, we also tell people to separate hosts intended for instances with pinned CPUs via host aggregates.\n\nAs noted above, I beginning to think the easiest way of doing this is to ignore the entire PCPU thing *unless* vcpu_pin_set is undefined and cpu_dedicated_set is used instead.","commit_id":"5953b568c20e642729eb62e838bd9e9a957e3c9e"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"d83a59869109805b4c8bee68864fa5382cc85cf2","unresolved":false,"context_lines":[{"line_number":188,"context_line":"    can fail to start the nova-compute worker if either new option is set while"},{"line_number":189,"context_line":"    the older option is also set."},{"line_number":190,"context_line":""},{"line_number":191,"context_line":"    In order to support smooth upgrade paths, we will continue to support the"},{"line_number":192,"context_line":"    ``CONF.vcpu_pin_set`` option for the Stein release. If"},{"line_number":193,"context_line":"    ``CONF.vcpu_pin_set`` is set and ``CONF.cpu_dedicated_set`` is **NOT SET**, we"},{"line_number":194,"context_line":"    will conclude that ``CONF.cpu_dedicated_set`` is equivalent to the value of"},{"line_number":195,"context_line":"    ``CPMF/vcpu_pin_set``. This is because currently nova does not support"},{"line_number":196,"context_line":"    compute hosts that have *both* pinned workloads as well as non-pinned"},{"line_number":197,"context_line":"    workloads. Currently, if ``CONF.vcpu_pin_set`` is set to some non-None"},{"line_number":198,"context_line":"    value, that indicates that the compute host uses the physical host"},{"line_number":199,"context_line":"    processors designated in ``CONF.vcpu_pin_set`` pinning guest vCPU threads"},{"line_number":200,"context_line":"    to *dedicated host processors*. Yes, we\u0027re aware of the terrible"},{"line_number":201,"context_line":"    configuration option naming involved in the original CONF options."},{"line_number":202,"context_line":""},{"line_number":203,"context_line":"It is important to point out that the existing ``CONF.cpu_allocation_ratio``"},{"line_number":204,"context_line":"refers only to the ``VCPU`` resource class -- in other words, shared guest CPU"}],"source_content_type":"text/x-rst","patch_set":21,"id":"3f79a3b5_f371b59a","line":201,"range":{"start_line":191,"start_character":0,"end_line":201,"end_character":70},"in_reply_to":"3f79a3b5_d61b521c","updated":"2018-12-19 12:15:49.000000000","message":"I think we are good. It\u0027s well indicated that when CONF.cpu_dedicated_set is **NOT SET** so basically at the point that operators are configuring it, CONF.vcpu_pin_set is ignored.\n\nThat looks to be implementation details but basically we have:\n \n  vCPUs \u003d CONF.cpu_shared_set\n  pCPUs \u003d |CONF.vpu_pin_set - CONF.cpu_shared_set|\n \n OR if CONF.cpu_dedicated_set is configured, we ignore CONF.vcpu_pin_set so:\n\n  pCPUs \u003d CONF.cpu_dedicated_set\n\n OR if just CONF.vcpu_pin_set is set:\n\n  vCPUs \u003d 0\n  pCPUs \u003d CONF.vcpu_pin_set\n\nWe can have of-course have the opposite, but I don\u0027t have strong opinion, we just need to well document the behavior.","commit_id":"5953b568c20e642729eb62e838bd9e9a957e3c9e"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"b03f413097e4ba419f00c742282bd5bd634a4f5b","unresolved":false,"context_lines":[{"line_number":188,"context_line":"    can fail to start the nova-compute worker if either new option is set while"},{"line_number":189,"context_line":"    the older option is also set."},{"line_number":190,"context_line":""},{"line_number":191,"context_line":"    In order to support smooth upgrade paths, we will continue to support the"},{"line_number":192,"context_line":"    ``CONF.vcpu_pin_set`` option for the Stein release. If"},{"line_number":193,"context_line":"    ``CONF.vcpu_pin_set`` is set and ``CONF.cpu_dedicated_set`` is **NOT SET**, we"},{"line_number":194,"context_line":"    will conclude that ``CONF.cpu_dedicated_set`` is equivalent to the value of"},{"line_number":195,"context_line":"    ``CPMF/vcpu_pin_set``. This is because currently nova does not support"},{"line_number":196,"context_line":"    compute hosts that have *both* pinned workloads as well as non-pinned"},{"line_number":197,"context_line":"    workloads. Currently, if ``CONF.vcpu_pin_set`` is set to some non-None"},{"line_number":198,"context_line":"    value, that indicates that the compute host uses the physical host"},{"line_number":199,"context_line":"    processors designated in ``CONF.vcpu_pin_set`` pinning guest vCPU threads"},{"line_number":200,"context_line":"    to *dedicated host processors*. Yes, we\u0027re aware of the terrible"},{"line_number":201,"context_line":"    configuration option naming involved in the original CONF options."},{"line_number":202,"context_line":""},{"line_number":203,"context_line":"It is important to point out that the existing ``CONF.cpu_allocation_ratio``"},{"line_number":204,"context_line":"refers only to the ``VCPU`` resource class -- in other words, shared guest CPU"}],"source_content_type":"text/x-rst","patch_set":21,"id":"dfd5e7cf_25008a01","line":201,"range":{"start_line":191,"start_character":0,"end_line":201,"end_character":70},"in_reply_to":"3f79a3b5_e4e31103","updated":"2019-01-10 16:09:15.000000000","message":"\u003e Documentation is OK with me, with the important idea that the\n \u003e vcpu_pin_set  behaviour WONT CHANGE over releases or that\u0027s\n \u003e terrible for ops.\n\nAs I\u0027ve noted above, this current design would be a change in behavior, unfortunately. We likely need a different upgrade plan.","commit_id":"5953b568c20e642729eb62e838bd9e9a957e3c9e"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"8fbf2171f95c08821bd7c0a3860fa51e084f315b","unresolved":false,"context_lines":[{"line_number":188,"context_line":"    can fail to start the nova-compute worker if either new option is set while"},{"line_number":189,"context_line":"    the older option is also set."},{"line_number":190,"context_line":""},{"line_number":191,"context_line":"    In order to support smooth upgrade paths, we will continue to support the"},{"line_number":192,"context_line":"    ``CONF.vcpu_pin_set`` option for the Stein release. If"},{"line_number":193,"context_line":"    ``CONF.vcpu_pin_set`` is set and ``CONF.cpu_dedicated_set`` is **NOT SET**, we"},{"line_number":194,"context_line":"    will conclude that ``CONF.cpu_dedicated_set`` is equivalent to the value of"},{"line_number":195,"context_line":"    ``CPMF/vcpu_pin_set``. This is because currently nova does not support"},{"line_number":196,"context_line":"    compute hosts that have *both* pinned workloads as well as non-pinned"},{"line_number":197,"context_line":"    workloads. Currently, if ``CONF.vcpu_pin_set`` is set to some non-None"},{"line_number":198,"context_line":"    value, that indicates that the compute host uses the physical host"},{"line_number":199,"context_line":"    processors designated in ``CONF.vcpu_pin_set`` pinning guest vCPU threads"},{"line_number":200,"context_line":"    to *dedicated host processors*. Yes, we\u0027re aware of the terrible"},{"line_number":201,"context_line":"    configuration option naming involved in the original CONF options."},{"line_number":202,"context_line":""},{"line_number":203,"context_line":"It is important to point out that the existing ``CONF.cpu_allocation_ratio``"},{"line_number":204,"context_line":"refers only to the ``VCPU`` resource class -- in other words, shared guest CPU"}],"source_content_type":"text/x-rst","patch_set":21,"id":"3f79a3b5_e4e31103","line":201,"range":{"start_line":191,"start_character":0,"end_line":201,"end_character":70},"in_reply_to":"3f79a3b5_f371b59a","updated":"2018-12-20 17:03:08.000000000","message":"Documentation is OK with me, with the important idea that the vcpu_pin_set  behaviour WONT CHANGE over releases or that\u0027s terrible for ops.\n\nI\u0027m then confused by the comments, do we consider changing how we use the opts and just document the change ?","commit_id":"5953b568c20e642729eb62e838bd9e9a957e3c9e"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"8fbf2171f95c08821bd7c0a3860fa51e084f315b","unresolved":false,"context_lines":[{"line_number":205,"context_line":"resources. Clearly, any allocation ratio other than 1.0 doesn\u0027t make sense for"},{"line_number":206,"context_line":"dedicated guest CPU resources (the new ``PCPU`` resource class). We will add to"},{"line_number":207,"context_line":"the ``CONF.cpu_allocation_ratio`` option\u0027s help text further clarifying this"},{"line_number":208,"context_line":"now that ``PCPU`` and ``VCPU`` are fully distinct resource classes."},{"line_number":209,"context_line":""},{"line_number":210,"context_line":"For host systems that do not use a provider tree to model providers of"},{"line_number":211,"context_line":"different pools of CPU resources (such as modeling different CPU sockets or"}],"source_content_type":"text/x-rst","patch_set":21,"id":"3f79a3b5_a4b3d90b","line":208,"updated":"2018-12-20 17:03:08.000000000","message":"That can be just a documentation point, since it doesn\u0027t change the option behaviour.","commit_id":"5953b568c20e642729eb62e838bd9e9a957e3c9e"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"13d645b506a9b66bef93bfd7f33351d5ded13f9d","unresolved":false,"context_lines":[{"line_number":254,"context_line":"    COMPUTE NODE provider"},{"line_number":255,"context_line":"        PCPU:"},{"line_number":256,"context_line":"            total: 18"},{"line_number":257,"context_line":"            reserved: 2"},{"line_number":258,"context_line":"            min_unit: 1"},{"line_number":259,"context_line":"            max_unit: 16"},{"line_number":260,"context_line":"            step_size: 1"}],"source_content_type":"text/x-rst","patch_set":21,"id":"3f79a3b5_36b5e6cf","line":257,"range":{"start_line":257,"start_character":21,"end_line":257,"end_character":23},"updated":"2018-12-19 02:09:58.000000000","message":"this should be always 0\nsee comment on line 191","commit_id":"5953b568c20e642729eb62e838bd9e9a957e3c9e"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"8fbf2171f95c08821bd7c0a3860fa51e084f315b","unresolved":false,"context_lines":[{"line_number":254,"context_line":"    COMPUTE NODE provider"},{"line_number":255,"context_line":"        PCPU:"},{"line_number":256,"context_line":"            total: 18"},{"line_number":257,"context_line":"            reserved: 2"},{"line_number":258,"context_line":"            min_unit: 1"},{"line_number":259,"context_line":"            max_unit: 16"},{"line_number":260,"context_line":"            step_size: 1"}],"source_content_type":"text/x-rst","patch_set":21,"id":"3f79a3b5_24c7c968","line":257,"range":{"start_line":257,"start_character":21,"end_line":257,"end_character":23},"in_reply_to":"3f79a3b5_36b5e6cf","updated":"2018-12-20 17:03:08.000000000","message":"Yup, I agree.","commit_id":"5953b568c20e642729eb62e838bd9e9a957e3c9e"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"d1081bc2c160d3c3f139672cf5ef89065bf80d44","unresolved":false,"context_lines":[{"line_number":254,"context_line":"    COMPUTE NODE provider"},{"line_number":255,"context_line":"        PCPU:"},{"line_number":256,"context_line":"            total: 18"},{"line_number":257,"context_line":"            reserved: 2"},{"line_number":258,"context_line":"            min_unit: 1"},{"line_number":259,"context_line":"            max_unit: 16"},{"line_number":260,"context_line":"            step_size: 1"}],"source_content_type":"text/x-rst","patch_set":21,"id":"bfdaf3ff_c5322ea8","line":257,"range":{"start_line":257,"start_character":21,"end_line":257,"end_character":23},"in_reply_to":"3f79a3b5_36b5e6cf","updated":"2019-01-11 13:05:24.000000000","message":"disagree completely.","commit_id":"5953b568c20e642729eb62e838bd9e9a957e3c9e"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"0a76256e231184c1a1164feb4743227316c4538d","unresolved":false,"context_lines":[{"line_number":254,"context_line":"    COMPUTE NODE provider"},{"line_number":255,"context_line":"        PCPU:"},{"line_number":256,"context_line":"            total: 18"},{"line_number":257,"context_line":"            reserved: 2"},{"line_number":258,"context_line":"            min_unit: 1"},{"line_number":259,"context_line":"            max_unit: 16"},{"line_number":260,"context_line":"            step_size: 1"}],"source_content_type":"text/x-rst","patch_set":21,"id":"5fc1f717_0d9b52c9","line":257,"range":{"start_line":257,"start_character":21,"end_line":257,"end_character":23},"in_reply_to":"bfdaf3ff_c5322ea8","updated":"2019-03-07 22:43:52.000000000","message":"If I had to pick, I would say 18/2, because then PCPU.total+VCPU.total represents the actual total number of procs on the system.\n\nBut functionally it makes no difference. So flip a coin and let\u0027s move on.","commit_id":"5953b568c20e642729eb62e838bd9e9a957e3c9e"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"13d645b506a9b66bef93bfd7f33351d5ded13f9d","unresolved":false,"context_lines":[{"line_number":300,"context_line":"        NUMA NODE 0 provider:"},{"line_number":301,"context_line":"            PCPU:"},{"line_number":302,"context_line":"                total: 18"},{"line_number":303,"context_line":"                reserved: 2"},{"line_number":304,"context_line":"                min_unit: 1"},{"line_number":305,"context_line":"                max_unit: 16"},{"line_number":306,"context_line":"                step_size: 1"}],"source_content_type":"text/x-rst","patch_set":21,"id":"3f79a3b5_b6c0162e","line":303,"range":{"start_line":303,"start_character":14,"end_line":303,"end_character":27},"updated":"2018-12-19 02:09:58.000000000","message":"as above it should always be 0\nill skipp cometing on this later","commit_id":"5953b568c20e642729eb62e838bd9e9a957e3c9e"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"13d645b506a9b66bef93bfd7f33351d5ded13f9d","unresolved":false,"context_lines":[{"line_number":358,"context_line":""},{"line_number":359,"context_line":".. note::"},{"line_number":360,"context_line":""},{"line_number":361,"context_line":"    The existing ``hw:cpu_policy\u003ddedicated|shared`` flavor extra spec and image"},{"line_number":362,"context_line":"    property will be **deprecated** in the \"S\" release for removal in the \"T\""},{"line_number":363,"context_line":"    release. This extra spec will be irrelevant when flavors can indicate the"},{"line_number":364,"context_line":"    exact number of dedicated and shared CPU resources they require."},{"line_number":365,"context_line":""},{"line_number":366,"context_line":"The problem with flavors.vcpus \u003d 0"},{"line_number":367,"context_line":"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"}],"source_content_type":"text/x-rst","patch_set":21,"id":"3f79a3b5_f6f8ce7d","line":364,"range":{"start_line":361,"start_character":4,"end_line":364,"end_character":68},"updated":"2018-12-19 02:09:58.000000000","message":"i dont think we can remove the image metata option.\nthe teanat still need a way to express that the require pinned cpus which they can do today when poerter dont set a cpu_policy in the flavor. since we cannot request resouce via the image removing the extra spec would be a feature regression.","commit_id":"5953b568c20e642729eb62e838bd9e9a957e3c9e"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"13d645b506a9b66bef93bfd7f33351d5ded13f9d","unresolved":false,"context_lines":[{"line_number":363,"context_line":"    release. This extra spec will be irrelevant when flavors can indicate the"},{"line_number":364,"context_line":"    exact number of dedicated and shared CPU resources they require."},{"line_number":365,"context_line":""},{"line_number":366,"context_line":"The problem with flavors.vcpus \u003d 0"},{"line_number":367,"context_line":"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"},{"line_number":368,"context_line":""},{"line_number":369,"context_line":"It is not currently possible for an admin to set the ``flavor.vcpus`` value to"},{"line_number":370,"context_line":"``0``. Attempting to do so results in a failure::"},{"line_number":371,"context_line":""},{"line_number":372,"context_line":"    stack@ubuntu:~$ openstack flavor create f1 --vcpus 0"},{"line_number":373,"context_line":"    Invalid input for field/attribute vcpus. Value: 0."},{"line_number":374,"context_line":"    0 is less than the minimum of 1 (HTTP 400)..."},{"line_number":375,"context_line":""},{"line_number":376,"context_line":"This is a problem since with this spec, we will be allowing an administrator to"},{"line_number":377,"context_line":"specify that a flavor *only* consumes dedicated CPU resources and no shared CPU"},{"line_number":378,"context_line":"resources. The natural solution to this problem is to change the validation on"},{"line_number":379,"context_line":"the flavor to return a failure only when flavor.vcpus is 0 *AND* there is no"},{"line_number":380,"context_line":"``resources:PCPU`` extra spec present."},{"line_number":381,"context_line":""},{"line_number":382,"context_line":"Ensure all CPU resources are supplied by the same provider"},{"line_number":383,"context_line":"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"}],"source_content_type":"text/x-rst","patch_set":21,"id":"3f79a3b5_b64a56ab","line":380,"range":{"start_line":366,"start_character":0,"end_line":380,"end_character":38},"updated":"2018-12-19 02:09:58.000000000","message":"i dont think there is a problm here.\nthe flavor.vcpus field spefices how many cpus the guest will see it does not specfy how many cpus the guest will use.\n\nthe hw:emultor_tread_policy\u003disolate is one existing usecase where the flavor.vcpus does not match the resouces:vcpus\u003dX request.\n\ni have said this in previos review.\nbut ill repete it again.\n\nwe currnetly generate the resouce request form the flavor here https://github.com/openstack/nova/blob/da17e0ed8a9b9ddc79b6d2004e6fb941c6163fbf/nova/scheduler/utils.py#L349-L377\n\nfirst we initalis a dict with the values for cpu ram and disk form the flavor\n\n resources \u003d {\n        fields.ResourceClass.VCPU: flavor.vcpus,\n        fields.ResourceClass.MEMORY_MB: flavor.memory_mb,\n        fields.ResourceClass.DISK_GB: disk,\n}\n\nthen we merge the resouces dict with the resouces value form the extrapeace if they exist.\n\n\nwhat we shoudl do to keep backwards compatiblity is instead of fields.ResourceClass.VCPU we should first check if there are extra_specs. if there are and hw:cpu_policy is specified the we shoul set fields.ResourceClass.PCPU: flavor.vcpus, instead. \n\nwe will also need to pass in image metadata incase hw_cpu_policy is set but this will keep backwards compatiblity and is trivial to implement.\n\nsince we never supported mixed cpus before if hw:cpu_policy\u003ddedicated or shared we can correctly apply that poicy to all cpu resouce requested.\n\nwe will will also need to tak account of the emulator thread policy but again it trivial to add support for.\n\nif you want i can write a patch for this.","commit_id":"5953b568c20e642729eb62e838bd9e9a957e3c9e"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"0a76256e231184c1a1164feb4743227316c4538d","unresolved":false,"context_lines":[{"line_number":400,"context_line":""},{"line_number":401,"context_line":"Guest does not care whether CPU resources come from multiple providers"},{"line_number":402,"context_line":"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"},{"line_number":403,"context_line":""},{"line_number":404,"context_line":"The guest uses `granular request groups \u003cgranular request groups (Rocky)\u003e`_,"},{"line_number":405,"context_line":"each containing a single request for a CPU resource (dedicated or shared) and"},{"line_number":406,"context_line":"includes the ``group_policy\u003dnone`` parameter."}],"source_content_type":"text/x-rst","patch_set":21,"id":"5fc1f717_edeb66ad","line":403,"updated":"2019-03-07 22:43:52.000000000","message":"✔ Good writeup.","commit_id":"5953b568c20e642729eb62e838bd9e9a957e3c9e"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"0a76256e231184c1a1164feb4743227316c4538d","unresolved":false,"context_lines":[{"line_number":449,"context_line":""},{"line_number":450,"context_line":"Ensure groups of CPU resources are provided by different providers"},{"line_number":451,"context_line":"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"},{"line_number":452,"context_line":""},{"line_number":453,"context_line":"The guest uses a granular request group for each group of CPU resources that"},{"line_number":454,"context_line":"they want provided by different providers."},{"line_number":455,"context_line":""}],"source_content_type":"text/x-rst","patch_set":21,"id":"5fc1f717_0d06f287","line":452,"updated":"2019-03-07 22:43:52.000000000","message":"✔","commit_id":"5953b568c20e642729eb62e838bd9e9a957e3c9e"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"0a76256e231184c1a1164feb4743227316c4538d","unresolved":false,"context_lines":[{"line_number":608,"context_line":"   possible (therefore requires the target host to support hyperthreading)::"},{"line_number":609,"context_line":""},{"line_number":610,"context_line":"    resources1:PCPU\u003d8"},{"line_number":611,"context_line":"    resources1:SRIOV_NET_VF\u003d1"},{"line_number":612,"context_line":"    trait1:HW_CPU_HYPERTHREADING\u003drequired"},{"line_number":613,"context_line":"    resources2:PCPU\u003d8"},{"line_number":614,"context_line":"    resources2:SRIOV_NET_VF\u003d1"}],"source_content_type":"text/x-rst","patch_set":21,"id":"5fc1f717_4d487acb","line":611,"range":{"start_line":611,"start_character":4,"end_line":611,"end_character":29},"updated":"2019-03-07 22:43:52.000000000","message":"Only works if the VF resources are in the NUMA node inventory (i.e. can\u0027t be in (grand)child providers representing the SRIOV PFs).\n\n(may wish to add this to the .. note:: below.","commit_id":"5953b568c20e642729eb62e838bd9e9a957e3c9e"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"8fbf2171f95c08821bd7c0a3860fa51e084f315b","unresolved":false,"context_lines":[{"line_number":699,"context_line":"documentation needs to be provided that, like the above example flavor"},{"line_number":700,"context_line":"configurations, shows operators what resources and traits extra specs to"},{"line_number":701,"context_line":"configure in order to get a particular behavior and which configuration options"},{"line_number":702,"context_line":"have changed."},{"line_number":703,"context_line":""},{"line_number":704,"context_line":"Developer impact"},{"line_number":705,"context_line":"----------------"}],"source_content_type":"text/x-rst","patch_set":21,"id":"3f79a3b5_a498b97b","line":702,"updated":"2018-12-20 17:03:08.000000000","message":"I\u0027m unclear, do we require flavors to change between releases, or do we keep Stein working with old flavors even if PCPU resource class is a thing ?","commit_id":"5953b568c20e642729eb62e838bd9e9a957e3c9e"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"b03f413097e4ba419f00c742282bd5bd634a4f5b","unresolved":false,"context_lines":[{"line_number":699,"context_line":"documentation needs to be provided that, like the above example flavor"},{"line_number":700,"context_line":"configurations, shows operators what resources and traits extra specs to"},{"line_number":701,"context_line":"configure in order to get a particular behavior and which configuration options"},{"line_number":702,"context_line":"have changed."},{"line_number":703,"context_line":""},{"line_number":704,"context_line":"Developer impact"},{"line_number":705,"context_line":"----------------"}],"source_content_type":"text/x-rst","patch_set":21,"id":"dfd5e7cf_a598fabf","line":702,"in_reply_to":"3f79a3b5_a498b97b","updated":"2019-01-10 16:09:15.000000000","message":"I\u0027m envisioning things we will carry auto-translation for as long as is feasible. There isn\u0027t really anything else we can do, at the moment. Probably should call that out","commit_id":"5953b568c20e642729eb62e838bd9e9a957e3c9e"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"13d645b506a9b66bef93bfd7f33351d5ded13f9d","unresolved":false,"context_lines":[{"line_number":732,"context_line":"resource class is used instead of ``VCPU``."},{"line_number":733,"context_line":""},{"line_number":734,"context_line":"To summarize the list of CONF-related changes:"},{"line_number":735,"context_line":""},{"line_number":736,"context_line":"* Deprecate ``CONF.vcpu_pin_set`` in Stein. If ``CONF.cpu_dedicated_set`` is"},{"line_number":737,"context_line":"  not set in Stein, fall back to using ``CONF.vcpu_pin_set`` as the set of host"},{"line_number":738,"context_line":"  logical processors to use for dedicated resources."},{"line_number":739,"context_line":"* Deprecate ``CONF.reserved_host_cpus`` in Stein. If ``CONF.cpu_dedicated_set``"},{"line_number":740,"context_line":"  *and* ``CONF.cpu_shared_set`` are *both* set in Stein, ignore the value of"},{"line_number":741,"context_line":"  ``CONF.reserved_host_cpus`` and have the virt driver calculate the ``PCPU``"}],"source_content_type":"text/x-rst","patch_set":21,"id":"3f79a3b5_f968c1bb","line":738,"range":{"start_line":735,"start_character":0,"end_line":738,"end_character":52},"updated":"2018-12-19 02:09:58.000000000","message":"that is not a backwards compatible fallback as i pointed out above.","commit_id":"5953b568c20e642729eb62e838bd9e9a957e3c9e"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"13d645b506a9b66bef93bfd7f33351d5ded13f9d","unresolved":false,"context_lines":[{"line_number":736,"context_line":"* Deprecate ``CONF.vcpu_pin_set`` in Stein. If ``CONF.cpu_dedicated_set`` is"},{"line_number":737,"context_line":"  not set in Stein, fall back to using ``CONF.vcpu_pin_set`` as the set of host"},{"line_number":738,"context_line":"  logical processors to use for dedicated resources."},{"line_number":739,"context_line":"* Deprecate ``CONF.reserved_host_cpus`` in Stein. If ``CONF.cpu_dedicated_set``"},{"line_number":740,"context_line":"  *and* ``CONF.cpu_shared_set`` are *both* set in Stein, ignore the value of"},{"line_number":741,"context_line":"  ``CONF.reserved_host_cpus`` and have the virt driver calculate the ``PCPU``"},{"line_number":742,"context_line":"  inventory reserved amount by looking at the length of (set(all_cpus) -"},{"line_number":743,"context_line":"  (set(dedicated) | set(shared))). If either ``CONF.cpu_shared_set`` or"},{"line_number":744,"context_line":"  ``CONF.cpu_dedicated_set`` is not set, log a warning that"},{"line_number":745,"context_line":"  ``CONF.reserved_host_cpus`` is deprecated and that the operator should set"},{"line_number":746,"context_line":"  ``CONF.cpu_shared_set`` and ``CONF.cpu_dedicated_set`` appropriately."},{"line_number":747,"context_line":"* Deprecated the ``hw:cpu_policy\u003ddedicated`` flavor/image extra spec. Replace"},{"line_number":748,"context_line":"  with the use of ``resources\u003dPCPU:$AMOUNT`` extra specs to specifically"},{"line_number":749,"context_line":"  request an amount of dedicated CPUs."}],"source_content_type":"text/x-rst","patch_set":21,"id":"3f79a3b5_b9a329fd","line":746,"range":{"start_line":739,"start_character":2,"end_line":746,"end_character":71},"updated":"2018-12-19 02:09:58.000000000","message":"i also covered why this is not correct above.\nthe reserved value should always be 0 we should not report cpus not listed in either the schared or dedicated set to placement at all","commit_id":"5953b568c20e642729eb62e838bd9e9a957e3c9e"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"13d645b506a9b66bef93bfd7f33351d5ded13f9d","unresolved":false,"context_lines":[{"line_number":744,"context_line":"  ``CONF.cpu_dedicated_set`` is not set, log a warning that"},{"line_number":745,"context_line":"  ``CONF.reserved_host_cpus`` is deprecated and that the operator should set"},{"line_number":746,"context_line":"  ``CONF.cpu_shared_set`` and ``CONF.cpu_dedicated_set`` appropriately."},{"line_number":747,"context_line":"* Deprecated the ``hw:cpu_policy\u003ddedicated`` flavor/image extra spec. Replace"},{"line_number":748,"context_line":"  with the use of ``resources\u003dPCPU:$AMOUNT`` extra specs to specifically"},{"line_number":749,"context_line":"  request an amount of dedicated CPUs."},{"line_number":750,"context_line":"* Change documentation for ``CONF.cpu_allocation_ratio`` to make it abundantly"},{"line_number":751,"context_line":"  clear that this option ONLY applies to ``PCPU`` and not ``VCPU`` resources"},{"line_number":752,"context_line":""}],"source_content_type":"text/x-rst","patch_set":21,"id":"3f79a3b5_d971459b","line":749,"range":{"start_line":747,"start_character":2,"end_line":749,"end_character":38},"updated":"2018-12-19 02:09:58.000000000","message":"we could but i thnk we should not as we have no replacement for the image property that an non admin can used.\n\nhttps://github.com/openstack/glance/blob/aee8a7249028e24e0f6ffbde53a3f2794f2d828f/etc/metadefs/compute-cpu-pinning.json#L23-L31\n\nthe suggestion i made on line 380 explains how we can handel this in a backwards compatible way without deprecating the options. this will man all exsiting flavors that enable pinning will work witout modification significatly reducing the upgrade impact as flavor will onlyneed to be modifed if you want to mix pinned and unpinned cpus.","commit_id":"5953b568c20e642729eb62e838bd9e9a957e3c9e"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"617ce0c2b50fa778ec273248ce8ac41d3afb565a","unresolved":false,"context_lines":[{"line_number":758,"context_line":""},{"line_number":759,"context_line":"Primary assignees:"},{"line_number":760,"context_line":""},{"line_number":761,"context_line":"* sahid ferdjaoui"},{"line_number":762,"context_line":"* tetsuro nakamura"},{"line_number":763,"context_line":"* jaypipes"},{"line_number":764,"context_line":"* cfriesen"}],"source_content_type":"text/x-rst","patch_set":21,"id":"3f79a3b5_948f52d1","line":761,"range":{"start_line":761,"start_character":0,"end_line":761,"end_character":17},"updated":"2018-12-04 00:22:14.000000000","message":"Sahid left Red Hat, is he still going to work on this with his new employer?","commit_id":"5953b568c20e642729eb62e838bd9e9a957e3c9e"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"d83a59869109805b4c8bee68864fa5382cc85cf2","unresolved":false,"context_lines":[{"line_number":758,"context_line":""},{"line_number":759,"context_line":"Primary assignees:"},{"line_number":760,"context_line":""},{"line_number":761,"context_line":"* sahid ferdjaoui"},{"line_number":762,"context_line":"* tetsuro nakamura"},{"line_number":763,"context_line":"* jaypipes"},{"line_number":764,"context_line":"* cfriesen"}],"source_content_type":"text/x-rst","patch_set":21,"id":"3f79a3b5_a0d7654d","line":761,"range":{"start_line":761,"start_character":0,"end_line":761,"end_character":17},"in_reply_to":"3f79a3b5_50ee6984","updated":"2018-12-19 12:15:49.000000000","message":"I\u0027m still going to involve on Nova at least for my work with nova-lxd. But as you can imagine my participation will be less for a couple weeks due to the fact I need to learn lot of new things.\n\nI can understand Jay if you remove me from the spec, I think you basically added me for my work on cpu_shared_set used by the spec to isolate emulator threads.","commit_id":"5953b568c20e642729eb62e838bd9e9a957e3c9e"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"13d645b506a9b66bef93bfd7f33351d5ded13f9d","unresolved":false,"context_lines":[{"line_number":758,"context_line":""},{"line_number":759,"context_line":"Primary assignees:"},{"line_number":760,"context_line":""},{"line_number":761,"context_line":"* sahid ferdjaoui"},{"line_number":762,"context_line":"* tetsuro nakamura"},{"line_number":763,"context_line":"* jaypipes"},{"line_number":764,"context_line":"* cfriesen"}],"source_content_type":"text/x-rst","patch_set":21,"id":"3f79a3b5_50ee6984","line":761,"range":{"start_line":761,"start_character":0,"end_line":761,"end_character":17},"in_reply_to":"3f79a3b5_948f52d1","updated":"2018-12-19 02:09:58.000000000","message":"good question\n\nlooking at his current gerrit patches looks like he has moved on to lxd and charms work so i woudl assmue not.\n\nhttps://review.openstack.org/#/q/owner:sahid.ferdjaoui%2540canonical.com+status:open","commit_id":"5953b568c20e642729eb62e838bd9e9a957e3c9e"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"0a76256e231184c1a1164feb4743227316c4538d","unresolved":false,"context_lines":[{"line_number":768,"context_line":"Work Items"},{"line_number":769,"context_line":"----------"},{"line_number":770,"context_line":""},{"line_number":771,"context_line":"* Create ``PCPU`` resource class"},{"line_number":772,"context_line":"* Create ``HW_CPU_HYPERTHREADING`` trait"},{"line_number":773,"context_line":"* Create ``CONF.cpu_dedicated_set`` and ``CONF.cpu_shared_set`` options"},{"line_number":774,"context_line":"* Modify virt code to calculate the set of host CPUs that will be used for"},{"line_number":775,"context_line":"  dedicated and shared CPUs by using the above new CONF options"}],"source_content_type":"text/x-rst","patch_set":21,"id":"5fc1f717_6d1e96bb","line":772,"range":{"start_line":771,"start_character":0,"end_line":772,"end_character":40},"updated":"2019-03-07 22:43:52.000000000","message":"These are now done fwiw.\n\nhttps://review.openstack.org/631711\nhttps://review.openstack.org/576030","commit_id":"5953b568c20e642729eb62e838bd9e9a957e3c9e"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"0a76256e231184c1a1164feb4743227316c4538d","unresolved":false,"context_lines":[{"line_number":790,"context_line":"Dependencies"},{"line_number":791,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":792,"context_line":""},{"line_number":793,"context_line":"The `update_provider_tree`_ blueprint is required for tracking CPU resources"},{"line_number":794,"context_line":"when NUMA affinity constraints are required, since the virt driver will be"},{"line_number":795,"context_line":"reporting ``VCPU`` and ``PCPU`` inventory records against the child providers"},{"line_number":796,"context_line":"representing each NUMA node."},{"line_number":797,"context_line":""},{"line_number":798,"context_line":"The `granular request groups (Rocky)`_ spec is required for guests wishing to"},{"line_number":799,"context_line":"have the placement service fulfill the virtual NUMA topology constraints"},{"line_number":800,"context_line":"regarding dedicated CPUs."},{"line_number":801,"context_line":""},{"line_number":802,"context_line":"For any of the scenarios presented in this spec that involve a single guest\u0027s"},{"line_number":803,"context_line":"CPU resources being spread across multiple resource providers, the `NUMA"}],"source_content_type":"text/x-rst","patch_set":21,"id":"5fc1f717_2d7e4ee4","line":800,"range":{"start_line":793,"start_character":0,"end_line":800,"end_character":25},"updated":"2019-03-07 22:43:52.000000000","message":"these are done, so can be removed.","commit_id":"5953b568c20e642729eb62e838bd9e9a957e3c9e"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"0a76256e231184c1a1164feb4743227316c4538d","unresolved":false,"context_lines":[{"line_number":806,"context_line":"Testing"},{"line_number":807,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":808,"context_line":""},{"line_number":809,"context_line":"Lots of functional testing for the various scenarios listed in the use cases"},{"line_number":810,"context_line":"above will be required."},{"line_number":811,"context_line":""},{"line_number":812,"context_line":"Documentation Impact"}],"source_content_type":"text/x-rst","patch_set":21,"id":"5fc1f717_2d672e50","line":809,"range":{"start_line":809,"start_character":0,"end_line":809,"end_character":26},"updated":"2019-03-07 22:43:52.000000000","message":"CUSTOM_FUNCTIONAL_TESTING: {\n  \u0027total\u0027: \u0027Lots\u0027,\n  ...\n}","commit_id":"5953b568c20e642729eb62e838bd9e9a957e3c9e"}],"specs/train/approved/cpu-resources.rst":[{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"f0517fe8fc36fe2178e8699375474fab487f6a5b","unresolved":false,"context_lines":[{"line_number":103,"context_line":"be used for dedicated CPU and which should be used for shared CPU"},{"line_number":104,"context_line":""},{"line_number":105,"context_line":"As a VNF vendor, I wish to specify to the infrastructure whether my VNF can use"},{"line_number":106,"context_line":"hyperthread siblings as dedicated CPUs"},{"line_number":107,"context_line":""},{"line_number":108,"context_line":"Proposed change"},{"line_number":109,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":22,"id":"5fc1f717_a611d355","line":106,"updated":"2019-04-04 15:24:52.000000000","message":"There\u0027s a bit of a theme in these use cases...","commit_id":"1a31ec568380d799e4c173dab859c374c8c4ac81"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"2635b90d0672e90e5ae12bcc8f87d7ac68808616","unresolved":false,"context_lines":[{"line_number":130,"context_line":"``PCPU`` resources for a host system."},{"line_number":131,"context_line":""},{"line_number":132,"context_line":"It shall do this by examining the contents of two new CONF options (these are"},{"line_number":133,"context_line":"new CONF options so that we do not break backwards compatibility)::"},{"line_number":134,"context_line":""},{"line_number":135,"context_line":"    [compute]"},{"line_number":136,"context_line":"    cpu_dedicated_set"}],"source_content_type":"text/x-rst","patch_set":22,"id":"5fc1f717_5be3d334","line":133,"range":{"start_line":133,"start_character":0,"end_line":133,"end_character":3},"updated":"2019-04-09 17:08:34.000000000","message":"like you say below, cpu_shared_set option already exists but meh.","commit_id":"1a31ec568380d799e4c173dab859c374c8c4ac81"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"80b82ab686ab4e043200b2f6298dc06193ebbadd","unresolved":false,"context_lines":[{"line_number":130,"context_line":"``PCPU`` resources for a host system."},{"line_number":131,"context_line":""},{"line_number":132,"context_line":"It shall do this by examining the contents of two new CONF options (these are"},{"line_number":133,"context_line":"new CONF options so that we do not break backwards compatibility)::"},{"line_number":134,"context_line":""},{"line_number":135,"context_line":"    [compute]"},{"line_number":136,"context_line":"    cpu_dedicated_set"}],"source_content_type":"text/x-rst","patch_set":22,"id":"3fce034c_a2a59fb7","line":133,"range":{"start_line":133,"start_character":0,"end_line":133,"end_character":3},"in_reply_to":"5fc1f717_5be3d334","updated":"2019-04-15 16:07:31.000000000","message":"Done","commit_id":"1a31ec568380d799e4c173dab859c374c8c4ac81"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"2635b90d0672e90e5ae12bcc8f87d7ac68808616","unresolved":false,"context_lines":[{"line_number":145,"context_line":"    The ``CONF.cpu_shared_set`` option has actually already been added due to"},{"line_number":146,"context_line":"    work on `libvirt emulator threads policy`_."},{"line_number":147,"context_line":""},{"line_number":148,"context_line":".. _libvirt emulator threads policy: http://specs.openstack.org/openstack/nova-specs/specs/rocky/approved/libvirt-emulator-threads-policy.html"},{"line_number":149,"context_line":""},{"line_number":150,"context_line":"The two pinsets produced by the above new CONF options should be **disjoint"},{"line_number":151,"context_line":"sets**. If the values of the two pinsets are *not* disjoint sets, we will fail"}],"source_content_type":"text/x-rst","patch_set":22,"id":"5fc1f717_9baffbe1","line":148,"range":{"start_line":148,"start_character":97,"end_line":148,"end_character":105},"updated":"2019-04-09 17:08:34.000000000","message":"worth noting the spec should be in the \"implemented\" repo, nope ?","commit_id":"1a31ec568380d799e4c173dab859c374c8c4ac81"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"80b82ab686ab4e043200b2f6298dc06193ebbadd","unresolved":false,"context_lines":[{"line_number":145,"context_line":"    The ``CONF.cpu_shared_set`` option has actually already been added due to"},{"line_number":146,"context_line":"    work on `libvirt emulator threads policy`_."},{"line_number":147,"context_line":""},{"line_number":148,"context_line":".. _libvirt emulator threads policy: http://specs.openstack.org/openstack/nova-specs/specs/rocky/approved/libvirt-emulator-threads-policy.html"},{"line_number":149,"context_line":""},{"line_number":150,"context_line":"The two pinsets produced by the above new CONF options should be **disjoint"},{"line_number":151,"context_line":"sets**. If the values of the two pinsets are *not* disjoint sets, we will fail"}],"source_content_type":"text/x-rst","patch_set":22,"id":"3fce034c_42aabb85","line":148,"range":{"start_line":148,"start_character":97,"end_line":148,"end_character":105},"in_reply_to":"5fc1f717_9baffbe1","updated":"2019-04-15 16:07:31.000000000","message":"Done","commit_id":"1a31ec568380d799e4c173dab859c374c8c4ac81"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"2635b90d0672e90e5ae12bcc8f87d7ac68808616","unresolved":false,"context_lines":[{"line_number":164,"context_line":".. note::"},{"line_number":165,"context_line":""},{"line_number":166,"context_line":"    The existing ``CONF.reserved_host_cpus`` option will be **deprecated** in"},{"line_number":167,"context_line":"    the Stein release. This CONF option currently indicates the number of"},{"line_number":168,"context_line":"    *physical* host processors to set aside for host use. In Stein, if"},{"line_number":169,"context_line":"    ``CONF.cpu_shared_set`` and ``CONF.cpu_dedicated_set`` are both unset, we"},{"line_number":170,"context_line":"    will use the value of ``CONF.reserved_host_cpus`` in setting the"}],"source_content_type":"text/x-rst","patch_set":22,"id":"5fc1f717_9b4b7b29","line":167,"range":{"start_line":167,"start_character":8,"end_line":167,"end_character":13},"updated":"2019-04-09 17:08:34.000000000","message":"err, Train","commit_id":"1a31ec568380d799e4c173dab859c374c8c4ac81"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"80b82ab686ab4e043200b2f6298dc06193ebbadd","unresolved":false,"context_lines":[{"line_number":164,"context_line":".. note::"},{"line_number":165,"context_line":""},{"line_number":166,"context_line":"    The existing ``CONF.reserved_host_cpus`` option will be **deprecated** in"},{"line_number":167,"context_line":"    the Stein release. This CONF option currently indicates the number of"},{"line_number":168,"context_line":"    *physical* host processors to set aside for host use. In Stein, if"},{"line_number":169,"context_line":"    ``CONF.cpu_shared_set`` and ``CONF.cpu_dedicated_set`` are both unset, we"},{"line_number":170,"context_line":"    will use the value of ``CONF.reserved_host_cpus`` in setting the"}],"source_content_type":"text/x-rst","patch_set":22,"id":"3fce034c_828e6325","line":167,"range":{"start_line":167,"start_character":8,"end_line":167,"end_character":13},"in_reply_to":"5fc1f717_9b4b7b29","updated":"2019-04-15 16:07:31.000000000","message":"Done","commit_id":"1a31ec568380d799e4c173dab859c374c8c4ac81"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"2635b90d0672e90e5ae12bcc8f87d7ac68808616","unresolved":false,"context_lines":[{"line_number":165,"context_line":""},{"line_number":166,"context_line":"    The existing ``CONF.reserved_host_cpus`` option will be **deprecated** in"},{"line_number":167,"context_line":"    the Stein release. This CONF option currently indicates the number of"},{"line_number":168,"context_line":"    *physical* host processors to set aside for host use. In Stein, if"},{"line_number":169,"context_line":"    ``CONF.cpu_shared_set`` and ``CONF.cpu_dedicated_set`` are both unset, we"},{"line_number":170,"context_line":"    will use the value of ``CONF.reserved_host_cpus`` in setting the"},{"line_number":171,"context_line":"    ``reserved`` inventory value for the new ``PCPU`` inventory."}],"source_content_type":"text/x-rst","patch_set":22,"id":"5fc1f717_db24a362","line":168,"range":{"start_line":168,"start_character":61,"end_line":168,"end_character":66},"updated":"2019-04-09 17:08:34.000000000","message":"ditto","commit_id":"1a31ec568380d799e4c173dab859c374c8c4ac81"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"2635b90d0672e90e5ae12bcc8f87d7ac68808616","unresolved":false,"context_lines":[{"line_number":168,"context_line":"    *physical* host processors to set aside for host use. In Stein, if"},{"line_number":169,"context_line":"    ``CONF.cpu_shared_set`` and ``CONF.cpu_dedicated_set`` are both unset, we"},{"line_number":170,"context_line":"    will use the value of ``CONF.reserved_host_cpus`` in setting the"},{"line_number":171,"context_line":"    ``reserved`` inventory value for the new ``PCPU`` inventory."},{"line_number":172,"context_line":""},{"line_number":173,"context_line":"    After Stein, ``CONF.cpu_shared_set`` and ``CONF.cpu_dedicated_set`` will be"},{"line_number":174,"context_line":"    used to determine the number of ``PCPU`` resources to reserve for the host"}],"source_content_type":"text/x-rst","patch_set":22,"id":"5fc1f717_dbd90356","line":171,"updated":"2019-04-09 17:08:34.000000000","message":"Sean had a backwards compat concern which I agree with about the fact that we would change a VCPU inventory by unsetting its reserved field once we upgrade if we merge the above.\n\nWe somehow need to keep in Train exact same behavior for rolling upgrade concerns, and just consider that if both \u0027new\u0027 config opts are unset, then we just have a single VCPU inventory with a reserved field controlled by CONF.reserved_host_cpus","commit_id":"1a31ec568380d799e4c173dab859c374c8c4ac81"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"2635b90d0672e90e5ae12bcc8f87d7ac68808616","unresolved":false,"context_lines":[{"line_number":170,"context_line":"    will use the value of ``CONF.reserved_host_cpus`` in setting the"},{"line_number":171,"context_line":"    ``reserved`` inventory value for the new ``PCPU`` inventory."},{"line_number":172,"context_line":""},{"line_number":173,"context_line":"    After Stein, ``CONF.cpu_shared_set`` and ``CONF.cpu_dedicated_set`` will be"},{"line_number":174,"context_line":"    used to determine the number of ``PCPU`` resources to reserve for the host"},{"line_number":175,"context_line":"    by getting the length of the set difference of all reported host logical"},{"line_number":176,"context_line":"    processors from the set union of ``CONF.cpu_shared_set`` and"}],"source_content_type":"text/x-rst","patch_set":22,"id":"5fc1f717_bbe2f7ff","line":173,"range":{"start_line":173,"start_character":10,"end_line":173,"end_character":15},"updated":"2019-04-09 17:08:34.000000000","message":"ditto","commit_id":"1a31ec568380d799e4c173dab859c374c8c4ac81"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"80b82ab686ab4e043200b2f6298dc06193ebbadd","unresolved":false,"context_lines":[{"line_number":170,"context_line":"    will use the value of ``CONF.reserved_host_cpus`` in setting the"},{"line_number":171,"context_line":"    ``reserved`` inventory value for the new ``PCPU`` inventory."},{"line_number":172,"context_line":""},{"line_number":173,"context_line":"    After Stein, ``CONF.cpu_shared_set`` and ``CONF.cpu_dedicated_set`` will be"},{"line_number":174,"context_line":"    used to determine the number of ``PCPU`` resources to reserve for the host"},{"line_number":175,"context_line":"    by getting the length of the set difference of all reported host logical"},{"line_number":176,"context_line":"    processors from the set union of ``CONF.cpu_shared_set`` and"}],"source_content_type":"text/x-rst","patch_set":22,"id":"3fce034c_a2935f4f","line":173,"range":{"start_line":173,"start_character":10,"end_line":173,"end_character":15},"in_reply_to":"5fc1f717_bbe2f7ff","updated":"2019-04-15 16:07:31.000000000","message":"Done","commit_id":"1a31ec568380d799e4c173dab859c374c8c4ac81"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"2635b90d0672e90e5ae12bcc8f87d7ac68808616","unresolved":false,"context_lines":[{"line_number":178,"context_line":"    ``CONF.reserved_host_cpus`` option will result in a warning being written"},{"line_number":179,"context_line":"    upon nova-compute startup that describes how to properly reserve logical"},{"line_number":180,"context_line":"    processors for the host (by setting the ``CONF.cpu_shared_set`` and"},{"line_number":181,"context_line":"    ``CONF.cpu_dedicated_set`` appropriately)"},{"line_number":182,"context_line":""},{"line_number":183,"context_line":".. note::"},{"line_number":184,"context_line":""}],"source_content_type":"text/x-rst","patch_set":22,"id":"5fc1f717_3b8e072e","line":181,"updated":"2019-04-09 17:08:34.000000000","message":"Worth an upgrade question : existing VCPU allocations on a single RP would still remain in Train even if the operator changed the config options and enabled CPU shared and dedicated pools.\nIf we restrict the VCPU total available amount by changing the inventory, we could lead to a capacity problem, right? \nShould we somehow consider to check existing capacity at the compute service startup so we would refuse to allocate PCPUs if there is no room ? Or should we just consider that the host would necessarly need to be empty from instances before setting those options ?","commit_id":"1a31ec568380d799e4c173dab859c374c8c4ac81"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"131b809744d152dab57a46049fc8c176947e8888","unresolved":false,"context_lines":[{"line_number":178,"context_line":"    ``CONF.reserved_host_cpus`` option will result in a warning being written"},{"line_number":179,"context_line":"    upon nova-compute startup that describes how to properly reserve logical"},{"line_number":180,"context_line":"    processors for the host (by setting the ``CONF.cpu_shared_set`` and"},{"line_number":181,"context_line":"    ``CONF.cpu_dedicated_set`` appropriately)"},{"line_number":182,"context_line":""},{"line_number":183,"context_line":".. note::"},{"line_number":184,"context_line":""}],"source_content_type":"text/x-rst","patch_set":22,"id":"5fc1f717_9ee7e912","line":181,"in_reply_to":"5fc1f717_3b8e072e","updated":"2019-04-09 17:37:10.000000000","message":"I\u0027ll try to clarify my thoughts with an upgrade example on a host with 8 physical CPUs, named CPU0 to 7:\n- in Stein, instances are running and actively taking VCPUs that are consuming CPU0 to CPU7.\n- in Train, operator wants to dedicate CPU0 and CPU1. Accordingly, CPU2 to 7 will be shared. \n\nConsequently, VCPU inventory for that host will be reduced by the amount of allocation_ratio * 2.\nIn theory, we should then allocate VCPU resource class for instances that are taking VCPUs located on CPU2 to 7 and allocate PCPU for instances that are taking CPU0 and 1.\nBut if ratio is 16, we could have 32 instances (asking for 1 VCPU) to be allocated against 2 PCPU with ratio\u003d1.0.\n\nSee the problem ?","commit_id":"1a31ec568380d799e4c173dab859c374c8c4ac81"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"5187411bcaadedbafb55507308968d5979dcc6a1","unresolved":false,"context_lines":[{"line_number":178,"context_line":"    ``CONF.reserved_host_cpus`` option will result in a warning being written"},{"line_number":179,"context_line":"    upon nova-compute startup that describes how to properly reserve logical"},{"line_number":180,"context_line":"    processors for the host (by setting the ``CONF.cpu_shared_set`` and"},{"line_number":181,"context_line":"    ``CONF.cpu_dedicated_set`` appropriately)"},{"line_number":182,"context_line":""},{"line_number":183,"context_line":".. note::"},{"line_number":184,"context_line":""}],"source_content_type":"text/x-rst","patch_set":22,"id":"5fc1f717_5e18a11c","line":181,"in_reply_to":"5fc1f717_3b8e072e","updated":"2019-04-09 17:37:42.000000000","message":"I\u0027m pretty confused by all of this and the discussion I just had with Sylvain in IRC. So let me try to summarize my thinking on this and maybe we can translate that into action (or confirmation) of what is going on here:\n\nI think we can\u0027t break existing instances on compute nodes, and requiring them to be migrated in order to update their arbitrary numbers in placement is very expensive. I think what Stephen is suggesting here is that if you have a compute node with dedicated CPUs set \"the old way\" (and thus instances with dedicated CPUs), we will log a warning on startup but continue to behave properly, not exposing PCPU inventory. That\u0027s good, and required behavior I think.\n\nHowever, I do think that we should support the operators changing the config to the new mechanism, and have the compute service, at startup, reshape its inventory and any relevant allocations to move from the old way (of everything being VCPU) to the new way of dedicated CPUs being exposed as PCPU inventory and allocations of such for instances that have dedicated CPUs.\n\nDoes that sound sane?","commit_id":"1a31ec568380d799e4c173dab859c374c8c4ac81"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"a30634203d784fd28d16254e33cc1fc3ec79cb3e","unresolved":false,"context_lines":[{"line_number":178,"context_line":"    ``CONF.reserved_host_cpus`` option will result in a warning being written"},{"line_number":179,"context_line":"    upon nova-compute startup that describes how to properly reserve logical"},{"line_number":180,"context_line":"    processors for the host (by setting the ``CONF.cpu_shared_set`` and"},{"line_number":181,"context_line":"    ``CONF.cpu_dedicated_set`` appropriately)"},{"line_number":182,"context_line":""},{"line_number":183,"context_line":".. note::"},{"line_number":184,"context_line":""}],"source_content_type":"text/x-rst","patch_set":22,"id":"5fc1f717_776572e0","line":181,"in_reply_to":"5fc1f717_5e18a11c","updated":"2019-04-10 08:33:23.000000000","message":"\u003e I\u0027m pretty confused by all of this and the discussion I just had\n \u003e with Sylvain in IRC. So let me try to summarize my thinking on this\n \u003e and maybe we can translate that into action (or confirmation) of\n \u003e what is going on here:\n \u003e \n \u003e I think we can\u0027t break existing instances on compute nodes, and\n \u003e requiring them to be migrated in order to update their arbitrary\n \u003e numbers in placement is very expensive. I think what Stephen is\n \u003e suggesting here is that if you have a compute node with dedicated\n \u003e CPUs set \"the old way\" (and thus instances with dedicated CPUs), we\n \u003e will log a warning on startup but continue to behave properly, not\n \u003e exposing PCPU inventory. That\u0027s good, and required behavior I\n \u003e think.\n \u003e \n\nJust to be clear, I\u0027m advocating for *not changing* existing instance allocations after upgrading to Train, given the only new config option is CONF.cpu_dedicated_set\n\nThat said, for instances created by using CONF.vcpu_pin_set, maybe we should ask for a reshape.\n\n \u003e However, I do think that we should support the operators changing\n \u003e the config to the new mechanism, and have the compute service, at\n \u003e startup, reshape its inventory and any relevant allocations to move\n \u003e from the old way (of everything being VCPU) to the new way of\n \u003e dedicated CPUs being exposed as PCPU inventory and allocations of\n \u003e such for instances that have dedicated CPUs.\n \u003e \n \u003e Does that sound sane?\n\nIIUC, only CONF.vcpu_pin_set needs to have a reshape.","commit_id":"1a31ec568380d799e4c173dab859c374c8c4ac81"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"2635b90d0672e90e5ae12bcc8f87d7ac68808616","unresolved":false,"context_lines":[{"line_number":205,"context_line":"resources. Clearly, any allocation ratio other than 1.0 doesn\u0027t make sense for"},{"line_number":206,"context_line":"dedicated guest CPU resources (the new ``PCPU`` resource class). We will add to"},{"line_number":207,"context_line":"the ``CONF.cpu_allocation_ratio`` option\u0027s help text further clarifying this"},{"line_number":208,"context_line":"now that ``PCPU`` and ``VCPU`` are fully distinct resource classes."},{"line_number":209,"context_line":""},{"line_number":210,"context_line":"For host systems that do not use a provider tree to model providers of"},{"line_number":211,"context_line":"different pools of CPU resources (such as modeling different CPU sockets or"}],"source_content_type":"text/x-rst","patch_set":22,"id":"5fc1f717_fb987f69","line":208,"updated":"2019-04-09 17:08:34.000000000","message":"some crazy ops could set an PCPU inventory with a ratio more than 1.0, but that\u0027s their own fooliness.","commit_id":"1a31ec568380d799e4c173dab859c374c8c4ac81"},{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"f0517fe8fc36fe2178e8699375474fab487f6a5b","unresolved":false,"context_lines":[{"line_number":220,"context_line":"representing physical CPU packages/sockets using child resource providers. A"},{"line_number":221,"context_line":"`separate spec \u003cNUMA topology with resource providers\u003e`_ covers how virt"},{"line_number":222,"context_line":"drivers can model separate NUMA nodes or physical CPU sockets using a provider"},{"line_number":223,"context_line":"tree model."},{"line_number":224,"context_line":""},{"line_number":225,"context_line":".. note::"},{"line_number":226,"context_line":""}],"source_content_type":"text/x-rst","patch_set":22,"id":"5fc1f717_c6917f9c","line":223,"updated":"2019-04-04 15:24:52.000000000","message":"This is probably one of the critical aspects of the spec, from a placement standpoint. Placement\u0027s behavior when there are no resources on the root provider, as well as issues with trait and aggregate spanning, is somewhat ill-defined. It\u0027s a topic on the various etherpads for the the PTG.","commit_id":"1a31ec568380d799e4c173dab859c374c8c4ac81"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"80b82ab686ab4e043200b2f6298dc06193ebbadd","unresolved":false,"context_lines":[{"line_number":220,"context_line":"representing physical CPU packages/sockets using child resource providers. A"},{"line_number":221,"context_line":"`separate spec \u003cNUMA topology with resource providers\u003e`_ covers how virt"},{"line_number":222,"context_line":"drivers can model separate NUMA nodes or physical CPU sockets using a provider"},{"line_number":223,"context_line":"tree model."},{"line_number":224,"context_line":""},{"line_number":225,"context_line":".. note::"},{"line_number":226,"context_line":""}],"source_content_type":"text/x-rst","patch_set":22,"id":"3fce034c_8ef654f9","line":223,"in_reply_to":"3fce034c_db2f6af4","updated":"2019-04-15 16:07:31.000000000","message":"Done","commit_id":"1a31ec568380d799e4c173dab859c374c8c4ac81"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"2635b90d0672e90e5ae12bcc8f87d7ac68808616","unresolved":false,"context_lines":[{"line_number":220,"context_line":"representing physical CPU packages/sockets using child resource providers. A"},{"line_number":221,"context_line":"`separate spec \u003cNUMA topology with resource providers\u003e`_ covers how virt"},{"line_number":222,"context_line":"drivers can model separate NUMA nodes or physical CPU sockets using a provider"},{"line_number":223,"context_line":"tree model."},{"line_number":224,"context_line":""},{"line_number":225,"context_line":".. note::"},{"line_number":226,"context_line":""}],"source_content_type":"text/x-rst","patch_set":22,"id":"5fc1f717_fbff1f63","line":223,"in_reply_to":"5fc1f717_c6917f9c","updated":"2019-04-09 17:08:34.000000000","message":"Yeah, the NUMA-ness shouldn\u0027t be *at all* covered in this spec. Here, we just address a new resource class inventory *from the same ResourceProvider*, period.","commit_id":"1a31ec568380d799e4c173dab859c374c8c4ac81"},{"author":{"_account_id":25625,"name":"Tetsuro Nakamura","email":"tetsuro.nakamura.bc@hco.ntt.co.jp","username":"tetsuro0907"},"change_message_id":"dcb698ab2f1eedbb9866f864d6498ec61af5342e","unresolved":false,"context_lines":[{"line_number":220,"context_line":"representing physical CPU packages/sockets using child resource providers. A"},{"line_number":221,"context_line":"`separate spec \u003cNUMA topology with resource providers\u003e`_ covers how virt"},{"line_number":222,"context_line":"drivers can model separate NUMA nodes or physical CPU sockets using a provider"},{"line_number":223,"context_line":"tree model."},{"line_number":224,"context_line":""},{"line_number":225,"context_line":".. note::"},{"line_number":226,"context_line":""}],"source_content_type":"text/x-rst","patch_set":22,"id":"3fce034c_db2f6af4","line":223,"in_reply_to":"5fc1f717_fbff1f63","updated":"2019-04-12 00:44:58.000000000","message":"Yes, as a first step to track PCPU resources in placement, I think it is a good idea to remove some of the parts of this spec which depend on the `NUMA topology with resource providers` spec and not to bring NUMA stuff to placement at the same time so that we can reduce and clear the discussion points, concerns, and work items.","commit_id":"1a31ec568380d799e4c173dab859c374c8c4ac81"},{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"f0517fe8fc36fe2178e8699375474fab487f6a5b","unresolved":false,"context_lines":[{"line_number":605,"context_line":"   functions are associated. The VNF vendor states that the CPU resources"},{"line_number":606,"context_line":"   can tolerate being on hyperthread siblings and the deployer would like to"},{"line_number":607,"context_line":"   pack the VNF\u0027s dedicated CPU resources onto as few physical cores as"},{"line_number":608,"context_line":"   possible (therefore requires the target host to support hyperthreading)::"},{"line_number":609,"context_line":""},{"line_number":610,"context_line":"    resources1:PCPU\u003d8"},{"line_number":611,"context_line":"    resources1:SRIOV_NET_VF\u003d1"}],"source_content_type":"text/x-rst","patch_set":22,"id":"5fc1f717_8615b7e7","line":608,"updated":"2019-04-04 15:24:52.000000000","message":"/me sighs","commit_id":"1a31ec568380d799e4c173dab859c374c8c4ac81"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"2635b90d0672e90e5ae12bcc8f87d7ac68808616","unresolved":false,"context_lines":[{"line_number":718,"context_line":""},{"line_number":719,"context_line":"Existing compute nodes in a nova installation will either be used for shared"},{"line_number":720,"context_line":"CPU guests or for dedicated CPU guests. When an existing compute node that has"},{"line_number":721,"context_line":"guests which use dedicated CPUs is upgraded to Stein, the virt driver will need"},{"line_number":722,"context_line":"to move inventory of existing ``VCPU`` resources (which are actually using"},{"line_number":723,"context_line":"dedicated host CPUs) to the new ``PCPU`` resource class. Furthermore, existing"},{"line_number":724,"context_line":"allocations for guests on those compute nodes will need to have their"}],"source_content_type":"text/x-rst","patch_set":22,"id":"5fc1f717_5b4513b3","line":721,"range":{"start_line":721,"start_character":47,"end_line":721,"end_character":52},"updated":"2019-04-09 17:08:34.000000000","message":"Train","commit_id":"1a31ec568380d799e4c173dab859c374c8c4ac81"},{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"f0517fe8fc36fe2178e8699375474fab487f6a5b","unresolved":false,"context_lines":[{"line_number":722,"context_line":"to move inventory of existing ``VCPU`` resources (which are actually using"},{"line_number":723,"context_line":"dedicated host CPUs) to the new ``PCPU`` resource class. Furthermore, existing"},{"line_number":724,"context_line":"allocations for guests on those compute nodes will need to have their"},{"line_number":725,"context_line":"allocation records updated from the ``VCPU`` to ``PCPU`` resource class."},{"line_number":726,"context_line":""},{"line_number":727,"context_line":"There will also need to be a new nova online data migration that will modify"},{"line_number":728,"context_line":"the embedded flavor resource data for guests on compute nodes with ``PCPU``"}],"source_content_type":"text/x-rst","patch_set":22,"id":"5fc1f717_e6827b00","line":725,"updated":"2019-04-04 15:24:52.000000000","message":"Would it be easier to let existing hosts with existing workloads carry on doing their thing in the old modeling and only new and newly configured hosts would be present the PCPU inventory?\n\nThat way people are explicitly opting in to the new behavior and potentially expensive and resource consuming reshaping doesn\u0027t need to happen in a lump.\n\nThat is: Why should we automate this for people?","commit_id":"1a31ec568380d799e4c173dab859c374c8c4ac81"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"2635b90d0672e90e5ae12bcc8f87d7ac68808616","unresolved":false,"context_lines":[{"line_number":722,"context_line":"to move inventory of existing ``VCPU`` resources (which are actually using"},{"line_number":723,"context_line":"dedicated host CPUs) to the new ``PCPU`` resource class. Furthermore, existing"},{"line_number":724,"context_line":"allocations for guests on those compute nodes will need to have their"},{"line_number":725,"context_line":"allocation records updated from the ``VCPU`` to ``PCPU`` resource class."},{"line_number":726,"context_line":""},{"line_number":727,"context_line":"There will also need to be a new nova online data migration that will modify"},{"line_number":728,"context_line":"the embedded flavor resource data for guests on compute nodes with ``PCPU``"}],"source_content_type":"text/x-rst","patch_set":22,"id":"5fc1f717_fb34ff4a","line":725,"in_reply_to":"5fc1f717_e6827b00","updated":"2019-04-09 17:08:34.000000000","message":"Exactly my concern above.\nAlso, I\u0027m not sure we need a reshape (that\u0027s what you ask when you say \"allocation records should be updated\")","commit_id":"1a31ec568380d799e4c173dab859c374c8c4ac81"},{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"f0517fe8fc36fe2178e8699375474fab487f6a5b","unresolved":false,"context_lines":[{"line_number":729,"context_line":"inventory and allocations to drop the embedded flavor\u0027s ``vcpus`` attribute to"},{"line_number":730,"context_line":"``0`` and add a ``resources:PCPU\u003d$original_vcpus_amount`` extra spec. This is"},{"line_number":731,"context_line":"to ensure that if that guest is rebuilt or migrated, that the new ``PCPU``"},{"line_number":732,"context_line":"resource class is used instead of ``VCPU``."},{"line_number":733,"context_line":""},{"line_number":734,"context_line":"To summarize the list of CONF-related changes:"},{"line_number":735,"context_line":""}],"source_content_type":"text/x-rst","patch_set":22,"id":"5fc1f717_c6773f3b","line":732,"updated":"2019-04-04 15:24:52.000000000","message":"Similar comment as the above.","commit_id":"1a31ec568380d799e4c173dab859c374c8c4ac81"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"b7b103fc1750681aad75247a25c5af74489c8362","unresolved":false,"context_lines":[{"line_number":53,"context_line":"**guest CPU**"},{"line_number":54,"context_line":"    A logical processor configured in a guest"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"**VCPU**"},{"line_number":57,"context_line":"    Resource class representing a unit of CPU resources for a single guest"},{"line_number":58,"context_line":"    approximating the processing power of a single physical processor"},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"**PCPU**"},{"line_number":61,"context_line":"    Resource class representing an amount of dedicated CPUs for a single guest"}],"source_content_type":"text/x-rst","patch_set":23,"id":"3fce034c_04bb230e","line":58,"range":{"start_line":56,"start_character":0,"end_line":58,"end_character":69},"updated":"2019-04-15 18:12:45.000000000","message":"im fine with this deffiniton but just want to not this is not the same thing as the flavor vCPU","commit_id":"c4e33910cb8aa9466d01e60e965480f1b8e81276"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"757033c8ec4291e2890493343d4117aec428d0b4","unresolved":false,"context_lines":[{"line_number":145,"context_line":"     - ``vcpu_pin_set``"},{"line_number":146,"context_line":"   * - Memory reservation"},{"line_number":147,"context_line":"     - ``reserved_host_memory_mb``"},{"line_number":148,"context_line":"     - ``reserved_huge_pages``"},{"line_number":149,"context_line":""},{"line_number":150,"context_line":"We will not address the memory reservation options in this spec. We do, however,"},{"line_number":151,"context_line":"propose deprecating the CPU-related configuration options,"}],"source_content_type":"text/x-rst","patch_set":23,"id":"3fce034c_e2403538","line":148,"updated":"2019-04-16 14:31:37.000000000","message":"LGTM http://logs.openstack.org/81/555081/23/check/openstack-tox-docs/65d7b8a/html/specs/train/approved/cpu-resources.html#cpu-inventory-configuration","commit_id":"c4e33910cb8aa9466d01e60e965480f1b8e81276"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"b7b103fc1750681aad75247a25c5af74489c8362","unresolved":false,"context_lines":[{"line_number":154,"context_line":""},{"line_number":155,"context_line":"    [compute]"},{"line_number":156,"context_line":"    cpu_dedicated_set"},{"line_number":157,"context_line":"    cpu_shared_set"},{"line_number":158,"context_line":""},{"line_number":159,"context_line":"The ``CONF.cpu_shared_set`` option was added as part of `libvirt emulator"},{"line_number":160,"context_line":"threads policy`_, while ``CONF.cpu_dedicated_set`` will need to be added. Both"}],"source_content_type":"text/x-rst","patch_set":23,"id":"3fce034c_04fec3ad","line":157,"range":{"start_line":157,"start_character":4,"end_line":157,"end_character":18},"updated":"2019-04-15 18:12:45.000000000","message":"we unfortunetly need to use a different config option or we have to make a backward incompatble change.\n\ncurrently cpu_shared_set define the set of cpus used for emnulator thread as noted below but if we reuse it for it original purpose (the set of core floating vms are confied too) then it will change the meaning.\n\nyou could argue that since the cpu_share_set is only used for emulator threads for vmps with cpu pinning enabled this behavior change is ok because previousl you had to partion host into those that run floating guests and those that run guests with a pinning or a numa topology but we choose to do this we need to make the upgrade impact really clear.\n\nwe could avoid redefiening cpu_shared_set by deprecating it  \nand moving it to libvirt secation as emulator_cpu_set resulting in 3 config options\n\n[compute]\npinned_cpu_set\nfloating_cpu_set\n\n[libvirt]\nemulator_cpu_set\n\n\nfor me if we do ^ it gets ride of the upgrade impact of refining what cpu_shared_set is\n\nnote that emulator_cpu_set is libvirt driver specific and should not be reported to placement as its not a consumable resouces.\n\nwe could also use\n\ndedicated_cpu_set\nshared_cpu_set\n\nor\n\npcpu_set\nvcpu_set\n\nfor the compute section.\n\nuseing the resouce class name has some appeal but\ni think vcpu_set is too clouse to vcpu_pin_set\n\nsimilarly shared_cpu_set is too close to cpu_shared_set.\n\nwhich is why im suggesting \n\n[compute]\npinned_cpu_set\nfloating_cpu_set\n\n[libvirt]\nemulator_cpu_set","commit_id":"c4e33910cb8aa9466d01e60e965480f1b8e81276"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"757033c8ec4291e2890493343d4117aec428d0b4","unresolved":false,"context_lines":[{"line_number":154,"context_line":""},{"line_number":155,"context_line":"    [compute]"},{"line_number":156,"context_line":"    cpu_dedicated_set"},{"line_number":157,"context_line":"    cpu_shared_set"},{"line_number":158,"context_line":""},{"line_number":159,"context_line":"The ``CONF.cpu_shared_set`` option was added as part of `libvirt emulator"},{"line_number":160,"context_line":"threads policy`_, while ``CONF.cpu_dedicated_set`` will need to be added. Both"}],"source_content_type":"text/x-rst","patch_set":23,"id":"3fce034c_0246a122","line":157,"range":{"start_line":157,"start_character":4,"end_line":157,"end_character":18},"in_reply_to":"3fce034c_04fec3ad","updated":"2019-04-16 14:31:37.000000000","message":"Actually, that\u0027s a good point.\nWhen reading https://docs.openstack.org/nova/latest/admin/cpu-topologies.html#customizing-instance-emulator-thread-pinning-policies it\u0027s clear there is a dependency between emulator thread policy to be isolated and tell which PCPUs to use thanks to the vcpu_pin_set option :(","commit_id":"c4e33910cb8aa9466d01e60e965480f1b8e81276"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"196419370a21b6e561a43b2106760efee93d787c","unresolved":false,"context_lines":[{"line_number":154,"context_line":""},{"line_number":155,"context_line":"    [compute]"},{"line_number":156,"context_line":"    cpu_dedicated_set"},{"line_number":157,"context_line":"    cpu_shared_set"},{"line_number":158,"context_line":""},{"line_number":159,"context_line":"The ``CONF.cpu_shared_set`` option was added as part of `libvirt emulator"},{"line_number":160,"context_line":"threads policy`_, while ``CONF.cpu_dedicated_set`` will need to be added. Both"}],"source_content_type":"text/x-rst","patch_set":23,"id":"3fce034c_8c8dea32","line":157,"range":{"start_line":157,"start_character":4,"end_line":157,"end_character":18},"in_reply_to":"3fce034c_04fec3ad","updated":"2019-04-24 14:57:05.000000000","message":"I don\u0027t like any of these options and I really don\u0027t think this is a big issue, due to the use of host aggregates you\u0027ve called out. I have, however, noted this concern along with the fact that we need to explicitly call this out as part of the release notes. Hopefully that\u0027s acceptable","commit_id":"c4e33910cb8aa9466d01e60e965480f1b8e81276"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"b7b103fc1750681aad75247a25c5af74489c8362","unresolved":false,"context_lines":[{"line_number":177,"context_line":"    shared pinsets shall represent the number of physical processors that has"},{"line_number":178,"context_line":"    been reserved for the host."},{"line_number":179,"context_line":""},{"line_number":180,"context_line":"As part of the migration path, both the ``CONF.reserved_host_cpus`` and"},{"line_number":181,"context_line":"``CONF.vcpu_pin_set`` will be initially be used to determine the number of"},{"line_number":182,"context_line":"available and reserved ``VCPU`` and ``PCPU`` resources respectively, reporting"},{"line_number":183,"context_line":"``0`` for the other type of resource. However, as they are unnecessary when"},{"line_number":184,"context_line":"``CONF.cpu_dedicated_set`` and ``CONF.cpu_shared_set`` are properly configured,"},{"line_number":185,"context_line":"they will be deprecated immediately for removal in the \"U\" release.  This will"}],"source_content_type":"text/x-rst","patch_set":23,"id":"3fce034c_a48faf21","line":182,"range":{"start_line":180,"start_character":0,"end_line":182,"end_character":67},"updated":"2019-04-15 18:12:45.000000000","message":"so the config options are still the main parts im uncomfortable with. there are some other parts but\nfor upgrades this is the bit that im worried about.\n\ni would expect most host to have vcpu_pin_set defeiend even if the host will not be used for cpu pinning.\n\nit has been the recomentation to use it instead of reserved_host_cpus because its less error prone as it is applied before the cpu allocation ratio and work for\nhost that will have numa or non numa guest.\n\nwhen used on  a host with numa guests it actully defines the set of cores we confine numa guest to even if they dont request pinning. so this is not generally map 1:1 to the idea of PCPU\n\nfor example on a host with ovs dpdk wehre all guest will use hugepage but may or may not use cpu pinning the vcpu_pin_set will be adjusted to ensure the guest do not float over teh cores used by ovs for the dpdk pmds.\n\nso im a little uncomforatble with assume vcpu_pin_set  maps to dedicated_cpu_set because for dpdk host at least i dont think it does.","commit_id":"c4e33910cb8aa9466d01e60e965480f1b8e81276"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"196419370a21b6e561a43b2106760efee93d787c","unresolved":false,"context_lines":[{"line_number":177,"context_line":"    shared pinsets shall represent the number of physical processors that has"},{"line_number":178,"context_line":"    been reserved for the host."},{"line_number":179,"context_line":""},{"line_number":180,"context_line":"As part of the migration path, both the ``CONF.reserved_host_cpus`` and"},{"line_number":181,"context_line":"``CONF.vcpu_pin_set`` will be initially be used to determine the number of"},{"line_number":182,"context_line":"available and reserved ``VCPU`` and ``PCPU`` resources respectively, reporting"},{"line_number":183,"context_line":"``0`` for the other type of resource. However, as they are unnecessary when"},{"line_number":184,"context_line":"``CONF.cpu_dedicated_set`` and ``CONF.cpu_shared_set`` are properly configured,"},{"line_number":185,"context_line":"they will be deprecated immediately for removal in the \"U\" release.  This will"}],"source_content_type":"text/x-rst","patch_set":23,"id":"3fce034c_a7023fb3","line":182,"range":{"start_line":180,"start_character":0,"end_line":182,"end_character":67},"in_reply_to":"3fce034c_a48faf21","updated":"2019-04-24 14:57:05.000000000","message":"I think I\u0027ve come up with a *very hacky* temporary solution to this.","commit_id":"c4e33910cb8aa9466d01e60e965480f1b8e81276"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"757033c8ec4291e2890493343d4117aec428d0b4","unresolved":false,"context_lines":[{"line_number":177,"context_line":"    shared pinsets shall represent the number of physical processors that has"},{"line_number":178,"context_line":"    been reserved for the host."},{"line_number":179,"context_line":""},{"line_number":180,"context_line":"As part of the migration path, both the ``CONF.reserved_host_cpus`` and"},{"line_number":181,"context_line":"``CONF.vcpu_pin_set`` will be initially be used to determine the number of"},{"line_number":182,"context_line":"available and reserved ``VCPU`` and ``PCPU`` resources respectively, reporting"},{"line_number":183,"context_line":"``0`` for the other type of resource. However, as they are unnecessary when"},{"line_number":184,"context_line":"``CONF.cpu_dedicated_set`` and ``CONF.cpu_shared_set`` are properly configured,"},{"line_number":185,"context_line":"they will be deprecated immediately for removal in the \"U\" release.  This will"}],"source_content_type":"text/x-rst","patch_set":23,"id":"3fce034c_a248edcb","line":182,"range":{"start_line":180,"start_character":0,"end_line":182,"end_character":67},"in_reply_to":"3fce034c_a48faf21","updated":"2019-04-16 14:31:37.000000000","message":"Yeah, we could also consider that for Train, we still count things as VCPUs *until* operator says \"please do the reshape for this node\". That would mean a pre-flight check for them and some way to trigger the modifications.\nFor U, we would then hard-fail of course if old opts are still in use (so the pre-flight check would change from WARNING to ERROR)","commit_id":"c4e33910cb8aa9466d01e60e965480f1b8e81276"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"b7b103fc1750681aad75247a25c5af74489c8362","unresolved":false,"context_lines":[{"line_number":261,"context_line":""},{"line_number":262,"context_line":".. note::"},{"line_number":263,"context_line":""},{"line_number":264,"context_line":"    The existing ``hw:cpu_policy\u003ddedicated|shared`` flavor extra spec and image"},{"line_number":265,"context_line":"    property will be **deprecated** in the Train release for removal in the"},{"line_number":266,"context_line":"    \"U\" release. This extra spec will be irrelevant when flavors can indicate"},{"line_number":267,"context_line":"    the exact number of dedicated and shared CPU resources they require."}],"source_content_type":"text/x-rst","patch_set":23,"id":"3fce034c_04724312","line":264,"range":{"start_line":264,"start_character":19,"end_line":264,"end_character":49},"updated":"2019-04-15 18:12:45.000000000","message":"i personally would like to keep this and instead translate the flavor.vcpu in to \nresouces:vcpu\u003dflavor.vcpu or resouces:pcpu\u003dflavor.vcpu\nextrapecs \n\njust as we convert it today \n\nhttps://github.com/openstack/nova/blob/78e742662edd164c46382c31e106884762fed029/nova/scheduler/utils.py#L415-L422\n\nbut going forward we shoudl chose the resouce class based on \nthe extraspec value.\n\nthis spec does not cover/enable instance with mixed floating/pinned cpus so with only this spec all instance will continute to have either pinned or flaoting cpus.\n\nso hw:cpu_policy is not the extra spec that cause problems for us when modeling cpus in placement hw:cpu_threads_policy is the problematic one.","commit_id":"c4e33910cb8aa9466d01e60e965480f1b8e81276"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"196419370a21b6e561a43b2106760efee93d787c","unresolved":false,"context_lines":[{"line_number":261,"context_line":""},{"line_number":262,"context_line":".. note::"},{"line_number":263,"context_line":""},{"line_number":264,"context_line":"    The existing ``hw:cpu_policy\u003ddedicated|shared`` flavor extra spec and image"},{"line_number":265,"context_line":"    property will be **deprecated** in the Train release for removal in the"},{"line_number":266,"context_line":"    \"U\" release. This extra spec will be irrelevant when flavors can indicate"},{"line_number":267,"context_line":"    the exact number of dedicated and shared CPU resources they require."}],"source_content_type":"text/x-rst","patch_set":23,"id":"3fce034c_a79ebf60","line":264,"range":{"start_line":264,"start_character":19,"end_line":264,"end_character":49},"in_reply_to":"3fce034c_04724312","updated":"2019-04-24 14:57:05.000000000","message":"Done","commit_id":"c4e33910cb8aa9466d01e60e965480f1b8e81276"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"b7b103fc1750681aad75247a25c5af74489c8362","unresolved":false,"context_lines":[{"line_number":261,"context_line":""},{"line_number":262,"context_line":".. note::"},{"line_number":263,"context_line":""},{"line_number":264,"context_line":"    The existing ``hw:cpu_policy\u003ddedicated|shared`` flavor extra spec and image"},{"line_number":265,"context_line":"    property will be **deprecated** in the Train release for removal in the"},{"line_number":266,"context_line":"    \"U\" release. This extra spec will be irrelevant when flavors can indicate"},{"line_number":267,"context_line":"    the exact number of dedicated and shared CPU resources they require."},{"line_number":268,"context_line":""}],"source_content_type":"text/x-rst","patch_set":23,"id":"3fce034c_3fd188fc","line":265,"range":{"start_line":264,"start_character":74,"end_line":265,"end_character":12},"updated":"2019-04-15 18:12:45.000000000","message":"note if we deprecate and remove the image properly we will nova no user setable replacemetn.\n\nyou can add traits to an image but you cannot have resouce requests so this will be a lose in functionality with no viable means of replaceing it via any placement native alternative","commit_id":"c4e33910cb8aa9466d01e60e965480f1b8e81276"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"196419370a21b6e561a43b2106760efee93d787c","unresolved":false,"context_lines":[{"line_number":261,"context_line":""},{"line_number":262,"context_line":".. note::"},{"line_number":263,"context_line":""},{"line_number":264,"context_line":"    The existing ``hw:cpu_policy\u003ddedicated|shared`` flavor extra spec and image"},{"line_number":265,"context_line":"    property will be **deprecated** in the Train release for removal in the"},{"line_number":266,"context_line":"    \"U\" release. This extra spec will be irrelevant when flavors can indicate"},{"line_number":267,"context_line":"    the exact number of dedicated and shared CPU resources they require."},{"line_number":268,"context_line":""}],"source_content_type":"text/x-rst","patch_set":23,"id":"3fce034c_c7998b79","line":265,"range":{"start_line":264,"start_character":74,"end_line":265,"end_character":12},"in_reply_to":"3fce034c_3fd188fc","updated":"2019-04-24 14:57:05.000000000","message":"Done","commit_id":"c4e33910cb8aa9466d01e60e965480f1b8e81276"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"b7b103fc1750681aad75247a25c5af74489c8362","unresolved":false,"context_lines":[{"line_number":266,"context_line":"    \"U\" release. This extra spec will be irrelevant when flavors can indicate"},{"line_number":267,"context_line":"    the exact number of dedicated and shared CPU resources they require."},{"line_number":268,"context_line":""},{"line_number":269,"context_line":"The problem with flavors.vcpus \u003d 0"},{"line_number":270,"context_line":"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"},{"line_number":271,"context_line":""},{"line_number":272,"context_line":"It is not currently possible for an admin to set the ``flavor.vcpus`` value to"}],"source_content_type":"text/x-rst","patch_set":23,"id":"3fce034c_e4da9715","line":269,"range":{"start_line":269,"start_character":0,"end_line":269,"end_character":34},"updated":"2019-04-15 18:12:45.000000000","message":"im not going to rat whole on this i just want to say i still think we should not set the flavor.vcpu\u003d0 in any senario\n\nthis will break exisign client that use the vcpu value in the flavor to determin how many cpus will be availabe in the guest an i think we shoudl keep it for that meaning.","commit_id":"c4e33910cb8aa9466d01e60e965480f1b8e81276"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"196419370a21b6e561a43b2106760efee93d787c","unresolved":false,"context_lines":[{"line_number":266,"context_line":"    \"U\" release. This extra spec will be irrelevant when flavors can indicate"},{"line_number":267,"context_line":"    the exact number of dedicated and shared CPU resources they require."},{"line_number":268,"context_line":""},{"line_number":269,"context_line":"The problem with flavors.vcpus \u003d 0"},{"line_number":270,"context_line":"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"},{"line_number":271,"context_line":""},{"line_number":272,"context_line":"It is not currently possible for an admin to set the ``flavor.vcpus`` value to"}],"source_content_type":"text/x-rst","patch_set":23,"id":"3fce034c_678a171c","line":269,"range":{"start_line":269,"start_character":0,"end_line":269,"end_character":34},"in_reply_to":"3fce034c_e4da9715","updated":"2019-04-24 14:57:05.000000000","message":"Done","commit_id":"c4e33910cb8aa9466d01e60e965480f1b8e81276"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"b7b103fc1750681aad75247a25c5af74489c8362","unresolved":false,"context_lines":[{"line_number":291,"context_line":"This pinning code is executed in the ``NUMATopologyFilter`` scheduler filter as"},{"line_number":292,"context_line":"part of the call to ``nova.virt.hardware.numa_fit_instance_to_host()``."},{"line_number":293,"context_line":""},{"line_number":294,"context_line":"We propose to leave this code unchanged. The ``NUMATopologyFilter`` shall"},{"line_number":295,"context_line":"remain in place and will continue to function as-is. The work from this spec,"},{"line_number":296,"context_line":"however, means that fewer ``HostInfo`` structs will be passed to the"},{"line_number":297,"context_line":"``NUMATopologyFilter`` than before, since the placement service will be able to"},{"line_number":298,"context_line":"efficiently filter out compute nodes that do not meet the basic quantitative"},{"line_number":299,"context_line":"resource requirements indicated by the ``PCPU`` and ``VCPU`` resource classes."},{"line_number":300,"context_line":""},{"line_number":301,"context_line":"We propose to add a new standard trait called ``HW_CPU_HYPERTHREADING`` that"},{"line_number":302,"context_line":"could decorate a resource provider indicating that hyperthreading is enabled on"}],"source_content_type":"text/x-rst","patch_set":23,"id":"3fce034c_5fd8147e","line":299,"range":{"start_line":294,"start_character":0,"end_line":299,"end_character":78},"updated":"2019-04-15 18:12:45.000000000","message":"while we can leave teh code in place if we want hw:cpu_threads_policy\u003disolate to continue to work on host that have hypertheading enabled we would have to make one of two choicies.\n\nfirst we could change its meaning to the opistate of prefer.\nin other words we could define hw:cpu_threads_policy\u003disolate\n\nto be the same as \n\nresouces:pCPUs\u003d4\ntrait:HW_CPU_HYPERTHREADING\u003dforbidden\n\nthis will be a change in behavior for hosts were isolate was used to dynmacally achive the same effect as disabeling hyperthreading for a specific vm.\n\nalternitivly we can not translate it into any trait. and in the case the numa toplogy filter and the weighers select a host that has hyper threading enabled then the conductor or comptue node will have to update the placement alloction.\n\n\nmy perference woudl be to introduc a new api micro version.\n\ndocument that with the new micro version \nwe will translate \nhw:cpu_threads_policy\u003disolate to trait:HW_CPU_HYPERTHREADING\u003dforbidden\nhw:cpu_threads_policy\u003drequire to trait:HW_CPU_HYPERTHREADING\u003drequire\n\nand hw:cpu_threads_policy\u003dprefer will have no trait.\n\nto get the old behavior in train the old micro version shoudl be used and that cpu_dedicated_set shoudl not be defined.","commit_id":"c4e33910cb8aa9466d01e60e965480f1b8e81276"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"196419370a21b6e561a43b2106760efee93d787c","unresolved":false,"context_lines":[{"line_number":291,"context_line":"This pinning code is executed in the ``NUMATopologyFilter`` scheduler filter as"},{"line_number":292,"context_line":"part of the call to ``nova.virt.hardware.numa_fit_instance_to_host()``."},{"line_number":293,"context_line":""},{"line_number":294,"context_line":"We propose to leave this code unchanged. The ``NUMATopologyFilter`` shall"},{"line_number":295,"context_line":"remain in place and will continue to function as-is. The work from this spec,"},{"line_number":296,"context_line":"however, means that fewer ``HostInfo`` structs will be passed to the"},{"line_number":297,"context_line":"``NUMATopologyFilter`` than before, since the placement service will be able to"},{"line_number":298,"context_line":"efficiently filter out compute nodes that do not meet the basic quantitative"},{"line_number":299,"context_line":"resource requirements indicated by the ``PCPU`` and ``VCPU`` resource classes."},{"line_number":300,"context_line":""},{"line_number":301,"context_line":"We propose to add a new standard trait called ``HW_CPU_HYPERTHREADING`` that"},{"line_number":302,"context_line":"could decorate a resource provider indicating that hyperthreading is enabled on"}],"source_content_type":"text/x-rst","patch_set":23,"id":"3fce034c_67b8d7c7","line":299,"range":{"start_line":294,"start_character":0,"end_line":299,"end_character":78},"in_reply_to":"3fce034c_5fd8147e","updated":"2019-04-24 14:57:05.000000000","message":"See below. I\u0027d proposed doing just this albeit without a microversion (because you won\u0027t be able to opt in to the old behavior and expect it to work). Will duplicate that here","commit_id":"c4e33910cb8aa9466d01e60e965480f1b8e81276"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"b7b103fc1750681aad75247a25c5af74489c8362","unresolved":false,"context_lines":[{"line_number":359,"context_line":""},{"line_number":360,"context_line":"    You will note that the resource requests only include the total amount of"},{"line_number":361,"context_line":"    PCPU and VCPU resources needed by an instance. It is entirely up to the"},{"line_number":362,"context_line":"    ``nova/virt/hardware.py`` module to **pin** the guest CPUs to the host CPUs"},{"line_number":363,"context_line":"    appropriately, doing things like taking NUMA affinity into account."},{"line_number":364,"context_line":"    The placement service will return those provider trees that match the"},{"line_number":365,"context_line":"    required amount of requested PCPU resources. But placement does not do"}],"source_content_type":"text/x-rst","patch_set":23,"id":"3fce034c_bfb818c8","line":362,"range":{"start_line":362,"start_character":6,"end_line":362,"end_character":27},"updated":"2019-04-15 18:12:45.000000000","message":"nit: the file path is fine but ``nova.virt.hardware``\nmight read better.","commit_id":"c4e33910cb8aa9466d01e60e965480f1b8e81276"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"196419370a21b6e561a43b2106760efee93d787c","unresolved":false,"context_lines":[{"line_number":359,"context_line":""},{"line_number":360,"context_line":"    You will note that the resource requests only include the total amount of"},{"line_number":361,"context_line":"    PCPU and VCPU resources needed by an instance. It is entirely up to the"},{"line_number":362,"context_line":"    ``nova/virt/hardware.py`` module to **pin** the guest CPUs to the host CPUs"},{"line_number":363,"context_line":"    appropriately, doing things like taking NUMA affinity into account."},{"line_number":364,"context_line":"    The placement service will return those provider trees that match the"},{"line_number":365,"context_line":"    required amount of requested PCPU resources. But placement does not do"}],"source_content_type":"text/x-rst","patch_set":23,"id":"3fce034c_ac1b0619","line":362,"range":{"start_line":362,"start_character":6,"end_line":362,"end_character":27},"in_reply_to":"3fce034c_bfb818c8","updated":"2019-04-24 14:57:05.000000000","message":"Done","commit_id":"c4e33910cb8aa9466d01e60e965480f1b8e81276"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"b7b103fc1750681aad75247a25c5af74489c8362","unresolved":false,"context_lines":[{"line_number":399,"context_line":"Notifications impact"},{"line_number":400,"context_line":"--------------------"},{"line_number":401,"context_line":""},{"line_number":402,"context_line":"None"},{"line_number":403,"context_line":""},{"line_number":404,"context_line":"Other end user impact"},{"line_number":405,"context_line":"---------------------"}],"source_content_type":"text/x-rst","patch_set":23,"id":"3fce034c_5f233406","line":402,"range":{"start_line":402,"start_character":0,"end_line":402,"end_character":4},"updated":"2019-04-15 18:12:45.000000000","message":"the image meta properties are versioned in the notifcation objects so whenever we add or remove properties it changes the notification object. since we are not removing them it wont striction modify them but if we do deprecate them perhaps we should also mark that somehow in the notification object.\n\nim thinking just a code comment as an actual deprecation warning could be rather noisy. perhaps a debug level log would be appropriate but it could also be over kill.","commit_id":"c4e33910cb8aa9466d01e60e965480f1b8e81276"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"b7b103fc1750681aad75247a25c5af74489c8362","unresolved":false,"context_lines":[{"line_number":420,"context_line":"have already been reduced to only those hosts which have the required number of"},{"line_number":421,"context_line":"dedicated and shared CPU resources."},{"line_number":422,"context_line":""},{"line_number":423,"context_line":"Note that the ``NUMATopologyFilter`` will still need to contain the more"},{"line_number":424,"context_line":"esoteric and complex logic surrounding CPU pinning and understanding NUMA node"},{"line_number":425,"context_line":"CPU amounts before compute nodes are given the ability to represent NUMA nodes"},{"line_number":426,"context_line":"as child resource providers in provider tree."},{"line_number":427,"context_line":""},{"line_number":428,"context_line":"Other deployer impact"},{"line_number":429,"context_line":"---------------------"}],"source_content_type":"text/x-rst","patch_set":23,"id":"3fce034c_9fd43cbf","line":426,"range":{"start_line":423,"start_character":0,"end_line":426,"end_character":45},"updated":"2019-04-15 18:12:45.000000000","message":"it will still be needed after that to be able to do per core assignment of guest cpus to host.\n\nbut other then keeping track of whcih core is free the host cell object can be simplifed and the nova.virt.hardware module can effectly assume there will always be enough room\nbecause placemnt will have checked that.\n\ntechnically that is not true we can race because of hw:cpu_thread_policy but that is likely to be removed in the future based on this proposal.","commit_id":"c4e33910cb8aa9466d01e60e965480f1b8e81276"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"b7b103fc1750681aad75247a25c5af74489c8362","unresolved":false,"context_lines":[{"line_number":444,"context_line":""},{"line_number":445,"context_line":"To summarize the list of database changes:"},{"line_number":446,"context_line":""},{"line_number":447,"context_line":"* Add a new nova online data migration that will modify the embedded flavor"},{"line_number":448,"context_line":"  resource data for guests on compute nodes with ``PCPU`` inventory and"},{"line_number":449,"context_line":"  allocations to drop the embedded flavor\u0027s ``vcpus`` attribute to ``0`` and add"},{"line_number":450,"context_line":"  a ``resources:PCPU\u003d$original_vcpus_amount`` extra spec. This is to ensure that"},{"line_number":451,"context_line":"  if that guest is rebuilt or migrated, that the new ``PCPU`` resource class is"},{"line_number":452,"context_line":"  used instead of ``VCPU``."},{"line_number":453,"context_line":""},{"line_number":454,"context_line":"To summarize the list of CONF-related changes:"},{"line_number":455,"context_line":""}],"source_content_type":"text/x-rst","patch_set":23,"id":"3fce034c_bf9578e6","line":452,"range":{"start_line":447,"start_character":1,"end_line":452,"end_character":27},"updated":"2019-04-15 18:12:45.000000000","message":"so ya i think this is not a good idea but ill try to ignore it if that is what peopel really want to do. i just think we are breaking api compatibitiy here for no good reason.\n\nwe can make existing usecases work without requireing flavor changes.\n\nembeded or otherwise","commit_id":"c4e33910cb8aa9466d01e60e965480f1b8e81276"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"b7b103fc1750681aad75247a25c5af74489c8362","unresolved":false,"context_lines":[{"line_number":453,"context_line":""},{"line_number":454,"context_line":"To summarize the list of CONF-related changes:"},{"line_number":455,"context_line":""},{"line_number":456,"context_line":"* Deprecate ``CONF.vcpu_pin_set`` in Train. If ``CONF.cpu_dedicated_set`` is"},{"line_number":457,"context_line":"  not set in Train, fall back to using ``CONF.vcpu_pin_set`` as the set of host"},{"line_number":458,"context_line":"  logical processors to use for dedicated resources."},{"line_number":459,"context_line":""},{"line_number":460,"context_line":"* Deprecate ``CONF.reserved_host_cpus`` in Train. If ``CONF.cpu_dedicated_set``"},{"line_number":461,"context_line":"  *and* ``CONF.cpu_shared_set`` are *both* set in Train, ignore the value of"}],"source_content_type":"text/x-rst","patch_set":23,"id":"3fce034c_5fad742f","line":458,"range":{"start_line":456,"start_character":1,"end_line":458,"end_character":52},"updated":"2019-04-15 18:12:45.000000000","message":"i would prefer to have no fall back.\n\nif CONF.cpu_dedicated_set is not defiend then we woudl not report any PCPU inventory.","commit_id":"c4e33910cb8aa9466d01e60e965480f1b8e81276"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"b7b103fc1750681aad75247a25c5af74489c8362","unresolved":false,"context_lines":[{"line_number":467,"context_line":"  ``CONF.cpu_shared_set`` and ``CONF.cpu_dedicated_set`` appropriately."},{"line_number":468,"context_line":""},{"line_number":469,"context_line":"* Change documentation for ``CONF.cpu_allocation_ratio`` to make it abundantly"},{"line_number":470,"context_line":"  clear that this option ONLY applies to ``PCPU`` and not ``VCPU`` resources"},{"line_number":471,"context_line":""},{"line_number":472,"context_line":"To summarize the list of flavour extra spec and image metadata changes."},{"line_number":473,"context_line":""}],"source_content_type":"text/x-rst","patch_set":23,"id":"3fce034c_3f7748d7","line":470,"range":{"start_line":470,"start_character":40,"end_line":470,"end_character":67},"updated":"2019-04-15 18:12:45.000000000","message":"this is backward","commit_id":"c4e33910cb8aa9466d01e60e965480f1b8e81276"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"b7b103fc1750681aad75247a25c5af74489c8362","unresolved":false,"context_lines":[{"line_number":471,"context_line":""},{"line_number":472,"context_line":"To summarize the list of flavour extra spec and image metadata changes."},{"line_number":473,"context_line":""},{"line_number":474,"context_line":"* Deprecate the ``hw:cpu_policy`` flavor extra spec and ``hw_cpu_policy`` image"},{"line_number":475,"context_line":"  metadata option. Replace the use of ``hw:cpu_policy\u003ddedicated`` with the use"},{"line_number":476,"context_line":"  of ``resources\u003dPCPU:$AMOUNT`` extra specs to specifically request an amount of"},{"line_number":477,"context_line":"  dedicated CPUs."},{"line_number":478,"context_line":""},{"line_number":479,"context_line":"* Deprecate the ``hw:cpu_thread_policy`` flavour extra spec and"},{"line_number":480,"context_line":"  ``hw_cpu_thread_policy`` image metadata option. Replace the use of"}],"source_content_type":"text/x-rst","patch_set":23,"id":"3fce034c_1f7cccb3","line":477,"range":{"start_line":474,"start_character":2,"end_line":477,"end_character":17},"updated":"2019-04-15 18:12:45.000000000","message":"i would keep this. and traslate it via a optional schduler prefilter.\n\nif you add the dedicated cpu set to the compute node you woudl also enabel the prefilter.\n\nif you dont you keep the old behavior.\n\ni actully mentioned we could have a microverion to change the behavior but we could also not have a microverion and just do it this way.","commit_id":"c4e33910cb8aa9466d01e60e965480f1b8e81276"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"196419370a21b6e561a43b2106760efee93d787c","unresolved":false,"context_lines":[{"line_number":471,"context_line":""},{"line_number":472,"context_line":"To summarize the list of flavour extra spec and image metadata changes."},{"line_number":473,"context_line":""},{"line_number":474,"context_line":"* Deprecate the ``hw:cpu_policy`` flavor extra spec and ``hw_cpu_policy`` image"},{"line_number":475,"context_line":"  metadata option. Replace the use of ``hw:cpu_policy\u003ddedicated`` with the use"},{"line_number":476,"context_line":"  of ``resources\u003dPCPU:$AMOUNT`` extra specs to specifically request an amount of"},{"line_number":477,"context_line":"  dedicated CPUs."},{"line_number":478,"context_line":""},{"line_number":479,"context_line":"* Deprecate the ``hw:cpu_thread_policy`` flavour extra spec and"},{"line_number":480,"context_line":"  ``hw_cpu_thread_policy`` image metadata option. Replace the use of"}],"source_content_type":"text/x-rst","patch_set":23,"id":"3fce034c_27eacf74","line":477,"range":{"start_line":474,"start_character":2,"end_line":477,"end_character":17},"in_reply_to":"3fce034c_1f7cccb3","updated":"2019-04-24 14:57:05.000000000","message":"Done","commit_id":"c4e33910cb8aa9466d01e60e965480f1b8e81276"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"b7b103fc1750681aad75247a25c5af74489c8362","unresolved":false,"context_lines":[{"line_number":476,"context_line":"  of ``resources\u003dPCPU:$AMOUNT`` extra specs to specifically request an amount of"},{"line_number":477,"context_line":"  dedicated CPUs."},{"line_number":478,"context_line":""},{"line_number":479,"context_line":"* Deprecate the ``hw:cpu_thread_policy`` flavour extra spec and"},{"line_number":480,"context_line":"  ``hw_cpu_thread_policy`` image metadata option. Replace the use of"},{"line_number":481,"context_line":"  ``hw:cpu_thread_policy\u003disolate`` with"},{"line_number":482,"context_line":"  ``trait:HW_CPU_HYPERTHREADING\u003dforbidden``, to request hosts without"},{"line_number":483,"context_line":"  hyperthreading, and the use of ``hw:cpu_threads_policy\u003drequire`` with"},{"line_number":484,"context_line":"  ``train:HW_CPU_HYPERTHREADING\u003drequired``, to request hosts with"},{"line_number":485,"context_line":"  hyperthreading."},{"line_number":486,"context_line":""},{"line_number":487,"context_line":".. important::"},{"line_number":488,"context_line":""}],"source_content_type":"text/x-rst","patch_set":23,"id":"3fce034c_9f499c8c","line":485,"range":{"start_line":479,"start_character":0,"end_line":485,"end_character":17},"updated":"2019-04-15 18:12:45.000000000","message":"we could deprecate this or keep it and translate.\n\nagain the same prefilter woudl do the transalte of the extra spec to a trait.\n\nif you want the old behavior dont define the cpu_dedicated set and dont enabel the prefilter.\nthat gives use full backward compatibility and operator can opt in in Train.\n\nwe can decide if we change the defaults then in U after we have people using the new placement way.\n\ncpu pinned guests are often pets and somethimes pandas so i woudl like to avoid international incidents.","commit_id":"c4e33910cb8aa9466d01e60e965480f1b8e81276"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"196419370a21b6e561a43b2106760efee93d787c","unresolved":false,"context_lines":[{"line_number":476,"context_line":"  of ``resources\u003dPCPU:$AMOUNT`` extra specs to specifically request an amount of"},{"line_number":477,"context_line":"  dedicated CPUs."},{"line_number":478,"context_line":""},{"line_number":479,"context_line":"* Deprecate the ``hw:cpu_thread_policy`` flavour extra spec and"},{"line_number":480,"context_line":"  ``hw_cpu_thread_policy`` image metadata option. Replace the use of"},{"line_number":481,"context_line":"  ``hw:cpu_thread_policy\u003disolate`` with"},{"line_number":482,"context_line":"  ``trait:HW_CPU_HYPERTHREADING\u003dforbidden``, to request hosts without"},{"line_number":483,"context_line":"  hyperthreading, and the use of ``hw:cpu_threads_policy\u003drequire`` with"},{"line_number":484,"context_line":"  ``train:HW_CPU_HYPERTHREADING\u003drequired``, to request hosts with"},{"line_number":485,"context_line":"  hyperthreading."},{"line_number":486,"context_line":""},{"line_number":487,"context_line":".. important::"},{"line_number":488,"context_line":""}],"source_content_type":"text/x-rst","patch_set":23,"id":"3fce034c_8798631b","line":485,"range":{"start_line":479,"start_character":0,"end_line":485,"end_character":17},"in_reply_to":"3fce034c_9f499c8c","updated":"2019-04-24 14:57:05.000000000","message":"Done","commit_id":"c4e33910cb8aa9466d01e60e965480f1b8e81276"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"b7b103fc1750681aad75247a25c5af74489c8362","unresolved":false,"context_lines":[{"line_number":499,"context_line":"  to have their allocation records updated from the ``VCPU`` to ``PCPU``"},{"line_number":500,"context_line":"  resource class."},{"line_number":501,"context_line":""},{"line_number":502,"context_line":"* Additionally, for existing compute nodes that have guests which use dedicated"},{"line_number":503,"context_line":"  CPUs **and** the ``isolate`` CPU thread policy, the number of allocated"},{"line_number":504,"context_line":"  ``PCPU`` resources may need to be increased to account for the additional CPUs"},{"line_number":505,"context_line":"  \"reserved\" by the host. On an x86 host with hyperthreading enabled, this will"},{"line_number":506,"context_line":"  result in a 2x the number of ``PCPU``\\ s being reserved (N ``PCPU`` for host"},{"line_number":507,"context_line":"  and N ``PCPU`` reserved to avoid another instance using them). This will be"},{"line_number":508,"context_line":"  considered legacy behavior and won\u0027t be supported for new instances."},{"line_number":509,"context_line":""},{"line_number":510,"context_line":"* For existing compute nodes that have guests which use the ``isolate`` emulator"},{"line_number":511,"context_line":"  thread policy, the number of allocated ``PCPU`` resources may need to be"}],"source_content_type":"text/x-rst","patch_set":23,"id":"3fce034c_1a313aed","line":508,"range":{"start_line":502,"start_character":0,"end_line":508,"end_character":70},"updated":"2019-04-15 18:12:45.000000000","message":"so we shoudl be able to determin it the host has hyper thread form the db so we shoudl be able to fix this as part of the reshape.","commit_id":"c4e33910cb8aa9466d01e60e965480f1b8e81276"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"b7b103fc1750681aad75247a25c5af74489c8362","unresolved":false,"context_lines":[{"line_number":507,"context_line":"  and N ``PCPU`` reserved to avoid another instance using them). This will be"},{"line_number":508,"context_line":"  considered legacy behavior and won\u0027t be supported for new instances."},{"line_number":509,"context_line":""},{"line_number":510,"context_line":"* For existing compute nodes that have guests which use the ``isolate`` emulator"},{"line_number":511,"context_line":"  thread policy, the number of allocated ``PCPU`` resources may need to be"},{"line_number":512,"context_line":"  increased to account for the additional CPUs used for emulator threads."},{"line_number":513,"context_line":""},{"line_number":514,"context_line":"Implementation"},{"line_number":515,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":23,"id":"3fce034c_7a571e04","line":512,"range":{"start_line":510,"start_character":1,"end_line":512,"end_character":73},"updated":"2019-04-15 18:12:45.000000000","message":"again we can fix this via the info we have in the hostCell object and the instance numa toplogy object","commit_id":"c4e33910cb8aa9466d01e60e965480f1b8e81276"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"15b2f9388f2bd903e5e47af29d5af7b3a1508010","unresolved":false,"context_lines":[{"line_number":141,"context_line":"     - Unpinned workloads"},{"line_number":142,"context_line":"     - Pinned workloads"},{"line_number":143,"context_line":"   * - CPU reservation"},{"line_number":144,"context_line":"     - ``reserved_host_cpus``"},{"line_number":145,"context_line":"     - ``vcpu_pin_set``"},{"line_number":146,"context_line":"   * - Memory reservation"},{"line_number":147,"context_line":"     - ``reserved_host_memory_mb``"}],"source_content_type":"text/x-rst","patch_set":24,"id":"3fce034c_0693f5fb","line":144,"updated":"2019-04-17 19:16:59.000000000","message":"reserved_host_cpus and vcpu_pin_set reserve CPUs for different things. The former is for the host, the latter is for instances. It\u0027s misleading to lump them both under \"CPU reservation\" as if they serve the same function.","commit_id":"dee3acaa82a14a48378469fcb083825af70fdb1a"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"196419370a21b6e561a43b2106760efee93d787c","unresolved":false,"context_lines":[{"line_number":141,"context_line":"     - Unpinned workloads"},{"line_number":142,"context_line":"     - Pinned workloads"},{"line_number":143,"context_line":"   * - CPU reservation"},{"line_number":144,"context_line":"     - ``reserved_host_cpus``"},{"line_number":145,"context_line":"     - ``vcpu_pin_set``"},{"line_number":146,"context_line":"   * - Memory reservation"},{"line_number":147,"context_line":"     - ``reserved_host_memory_mb``"}],"source_content_type":"text/x-rst","patch_set":24,"id":"ffb9cba7_c84d2073","line":144,"in_reply_to":"3fce034c_0693f5fb","updated":"2019-04-24 14:57:05.000000000","message":"Yup, I\u0027ve reworked all of this","commit_id":"dee3acaa82a14a48378469fcb083825af70fdb1a"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"15b2f9388f2bd903e5e47af29d5af7b3a1508010","unresolved":false,"context_lines":[{"line_number":154,"context_line":""},{"line_number":155,"context_line":"    [compute]"},{"line_number":156,"context_line":"    cpu_dedicated_set"},{"line_number":157,"context_line":"    cpu_shared_set"},{"line_number":158,"context_line":""},{"line_number":159,"context_line":"The ``CONF.cpu_shared_set`` option was added as part of `libvirt emulator"},{"line_number":160,"context_line":"threads policy`__, while ``CONF.cpu_dedicated_set`` will need to be added. Both"}],"source_content_type":"text/x-rst","patch_set":24,"id":"3fce034c_46601d02","line":157,"updated":"2019-04-17 19:16:59.000000000","message":"We\u0027ll need something to replace cpu_shared_set then, because as per the centre square in the table under \u0027Emulator threads policy\u0027 in [1], that pinset is used to pin emulator threads when the policy is \u0027share\u0027.\n\nLater: Ah, I see you\u0027ve addressed this on L331. Might be good to mention quickly here.\n\n[1] https://docs.openstack.org/nova/latest/user/flavors.html","commit_id":"dee3acaa82a14a48378469fcb083825af70fdb1a"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"196419370a21b6e561a43b2106760efee93d787c","unresolved":false,"context_lines":[{"line_number":154,"context_line":""},{"line_number":155,"context_line":"    [compute]"},{"line_number":156,"context_line":"    cpu_dedicated_set"},{"line_number":157,"context_line":"    cpu_shared_set"},{"line_number":158,"context_line":""},{"line_number":159,"context_line":"The ``CONF.cpu_shared_set`` option was added as part of `libvirt emulator"},{"line_number":160,"context_line":"threads policy`__, while ``CONF.cpu_dedicated_set`` will need to be added. Both"}],"source_content_type":"text/x-rst","patch_set":24,"id":"ffb9cba7_a85a2c27","line":157,"in_reply_to":"3fce034c_46601d02","updated":"2019-04-24 14:57:05.000000000","message":"Ditto. The new variation should be a little clearer","commit_id":"dee3acaa82a14a48378469fcb083825af70fdb1a"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"15b2f9388f2bd903e5e47af29d5af7b3a1508010","unresolved":false,"context_lines":[{"line_number":193,"context_line":"reserved ``VCPU`` resources and it would follow that ``CONF.vcpu_pin_set``"},{"line_number":194,"context_line":"would be used to determine the number of reserved ``PCPU`` resources. However,"},{"line_number":195,"context_line":"it\u0027s not that easy: ``CONF.vcpu_pin_set`` is used by all instances with a NUMA"},{"line_number":196,"context_line":"topology which, as noted previously, doesn\u0027t always imply pinned CPUs. As a"},{"line_number":197,"context_line":"result, it is not always possible to directly map this to"},{"line_number":198,"context_line":"``CONF.cpu_dedicated_set``. We must once again rely on our previous assumption"},{"line_number":199,"context_line":"that pinned and unpinned instances do not co-exist on the same host. Using"},{"line_number":200,"context_line":"this, the driver can inspect the instances associated with it on startup and"},{"line_number":201,"context_line":"identify if those instances are pinned, meaning ``CONF.vcpu_pin_set`` ~\u003d"},{"line_number":202,"context_line":"``CONF.cpu_dedicated_set`` and the host should report some ``PCPU`` resources"}],"source_content_type":"text/x-rst","patch_set":24,"id":"3fce034c_5c422d40","line":199,"range":{"start_line":196,"start_character":71,"end_line":199,"end_character":68},"updated":"2019-04-17 19:16:59.000000000","message":"Just throwing the idea out there: if we make the effort to uncouple InstanceNUMATopology from CPU pinning and hugepages and only have instances with pinned CPUs if they explicitly requested that, we would then be able to map vcpu_pin_set directly to cpu_dedicated_set.\n\nI *think* said uncoupling would also help us with NUMA in placement, as it would allow us to have a per-host config option along the lines of \"expose_host_numa_topology\" which would neatly solve the problem of non-NUMA aware instances fitting on NUMA-aware host (which every host would essentially become, in a NUMA-placement future)\n\n/end rant","commit_id":"dee3acaa82a14a48378469fcb083825af70fdb1a"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"15b2f9388f2bd903e5e47af29d5af7b3a1508010","unresolved":false,"context_lines":[{"line_number":197,"context_line":"result, it is not always possible to directly map this to"},{"line_number":198,"context_line":"``CONF.cpu_dedicated_set``. We must once again rely on our previous assumption"},{"line_number":199,"context_line":"that pinned and unpinned instances do not co-exist on the same host. Using"},{"line_number":200,"context_line":"this, the driver can inspect the instances associated with it on startup and"},{"line_number":201,"context_line":"identify if those instances are pinned, meaning ``CONF.vcpu_pin_set`` ~\u003d"},{"line_number":202,"context_line":"``CONF.cpu_dedicated_set`` and the host should report some ``PCPU`` resources"},{"line_number":203,"context_line":"also, or are not, meaning ``CONF.vcpu_pin_set`` is essentially ignored and the"},{"line_number":204,"context_line":"host will not report any ``PCPU`` resources. In all cases, deprecation warnings"},{"line_number":205,"context_line":"will be issued for the older options. In addition, the ``nova-compute`` service"},{"line_number":206,"context_line":"will fail to start if either older option is defined alongside the newly"},{"line_number":207,"context_line":"introduced ``CONF.cpu_dedicated_set``."},{"line_number":208,"context_line":""}],"source_content_type":"text/x-rst","patch_set":24,"id":"3fce034c_3c5e4112","line":205,"range":{"start_line":200,"start_character":6,"end_line":205,"end_character":36},"updated":"2019-04-17 19:16:59.000000000","message":"Can we make this never-ending sentence into a table or something?","commit_id":"dee3acaa82a14a48378469fcb083825af70fdb1a"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"196419370a21b6e561a43b2106760efee93d787c","unresolved":false,"context_lines":[{"line_number":197,"context_line":"result, it is not always possible to directly map this to"},{"line_number":198,"context_line":"``CONF.cpu_dedicated_set``. We must once again rely on our previous assumption"},{"line_number":199,"context_line":"that pinned and unpinned instances do not co-exist on the same host. Using"},{"line_number":200,"context_line":"this, the driver can inspect the instances associated with it on startup and"},{"line_number":201,"context_line":"identify if those instances are pinned, meaning ``CONF.vcpu_pin_set`` ~\u003d"},{"line_number":202,"context_line":"``CONF.cpu_dedicated_set`` and the host should report some ``PCPU`` resources"},{"line_number":203,"context_line":"also, or are not, meaning ``CONF.vcpu_pin_set`` is essentially ignored and the"},{"line_number":204,"context_line":"host will not report any ``PCPU`` resources. In all cases, deprecation warnings"},{"line_number":205,"context_line":"will be issued for the older options. In addition, the ``nova-compute`` service"},{"line_number":206,"context_line":"will fail to start if either older option is defined alongside the newly"},{"line_number":207,"context_line":"introduced ``CONF.cpu_dedicated_set``."},{"line_number":208,"context_line":""}],"source_content_type":"text/x-rst","patch_set":24,"id":"ffb9cba7_e8790493","line":205,"range":{"start_line":200,"start_character":6,"end_line":205,"end_character":36},"in_reply_to":"3fce034c_3c5e4112","updated":"2019-04-24 14:57:05.000000000","message":"Let me know if the new wording makes things clearer","commit_id":"dee3acaa82a14a48378469fcb083825af70fdb1a"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"54e19d4a9e6656245edba210e55bdd7a54395827","unresolved":false,"context_lines":[{"line_number":252,"context_line":"Guest resource requests"},{"line_number":253,"context_line":"-----------------------"},{"line_number":254,"context_line":""},{"line_number":255,"context_line":"We propose to utilize the existing flavor ``resources:$RESOURCE_CLASS\u003d$AMOUNT``"},{"line_number":256,"context_line":"extra-specs and image properties system for requesting both shared and"},{"line_number":257,"context_line":"dedicated CPU resources for a guest."},{"line_number":258,"context_line":""}],"source_content_type":"text/x-rst","patch_set":24,"id":"ffb9cba7_9cb9b2ea","line":255,"range":{"start_line":255,"start_character":42,"end_line":255,"end_character":79},"updated":"2019-04-24 13:08:30.000000000","message":"If I wrote \u0027resources:VCPU\u003d2\u0027 and `resources:PCPU\u003d2` in the same flavor, so the placement will find out a host which has enough vCPU and pCPU, but the libvirt virt driver doesn\u0027t support to create a VM mix the shared and dedicated cpu now. So what we do at here, just raise error on the compute node side?\n\nI prefer to translate the request group from those \u0027hw:\u0027 extra spec, instead of asking the user write \u0027resources:...\u0027 extra spec manually.","commit_id":"dee3acaa82a14a48378469fcb083825af70fdb1a"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"196419370a21b6e561a43b2106760efee93d787c","unresolved":false,"context_lines":[{"line_number":252,"context_line":"Guest resource requests"},{"line_number":253,"context_line":"-----------------------"},{"line_number":254,"context_line":""},{"line_number":255,"context_line":"We propose to utilize the existing flavor ``resources:$RESOURCE_CLASS\u003d$AMOUNT``"},{"line_number":256,"context_line":"extra-specs and image properties system for requesting both shared and"},{"line_number":257,"context_line":"dedicated CPU resources for a guest."},{"line_number":258,"context_line":""}],"source_content_type":"text/x-rst","patch_set":24,"id":"ffb9cba7_086ed894","line":255,"range":{"start_line":255,"start_character":42,"end_line":255,"end_character":79},"in_reply_to":"ffb9cba7_9cb9b2ea","updated":"2019-04-24 14:57:05.000000000","message":"I\u0027ve reworded things to make this more explicit","commit_id":"dee3acaa82a14a48378469fcb083825af70fdb1a"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"15b2f9388f2bd903e5e47af29d5af7b3a1508010","unresolved":false,"context_lines":[{"line_number":284,"context_line":"    alias for ``resources:VCPU\u003d$flavor.vcpu`` and"},{"line_number":285,"context_line":"    ``resources:PCPU\u003d$flavor.vcpu`` respectively. This may change in the future."},{"line_number":286,"context_line":""},{"line_number":287,"context_line":"The problem with flavors.vcpus \u003d 0"},{"line_number":288,"context_line":"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"},{"line_number":289,"context_line":""},{"line_number":290,"context_line":"Unfortunately, we realize that we are overloading the term \"VCPU\" here since"}],"source_content_type":"text/x-rst","patch_set":24,"id":"3fce034c_fc0c39a6","line":287,"range":{"start_line":287,"start_character":30,"end_line":287,"end_character":34},"updated":"2019-04-17 19:16:59.000000000","message":"This section talks about overloading the term vcpus in the context of flavors, but what\u0027s the specific problem with vcpus \u003d 0?","commit_id":"dee3acaa82a14a48378469fcb083825af70fdb1a"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"196419370a21b6e561a43b2106760efee93d787c","unresolved":false,"context_lines":[{"line_number":284,"context_line":"    alias for ``resources:VCPU\u003d$flavor.vcpu`` and"},{"line_number":285,"context_line":"    ``resources:PCPU\u003d$flavor.vcpu`` respectively. This may change in the future."},{"line_number":286,"context_line":""},{"line_number":287,"context_line":"The problem with flavors.vcpus \u003d 0"},{"line_number":288,"context_line":"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"},{"line_number":289,"context_line":""},{"line_number":290,"context_line":"Unfortunately, we realize that we are overloading the term \"VCPU\" here since"}],"source_content_type":"text/x-rst","patch_set":24,"id":"ffb9cba7_28e2bc30","line":287,"range":{"start_line":287,"start_character":30,"end_line":287,"end_character":34},"in_reply_to":"3fce034c_fc0c39a6","updated":"2019-04-24 14:57:05.000000000","message":"I\u0027ve removed this whole thing","commit_id":"dee3acaa82a14a48378469fcb083825af70fdb1a"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"15b2f9388f2bd903e5e47af29d5af7b3a1508010","unresolved":false,"context_lines":[{"line_number":294,"context_line":"will represent the total number of both ``VCPU``\\ s and ``PCPU``\\ s associated"},{"line_number":295,"context_line":"with the instance. If there is a mismatch, the request will be rejected."},{"line_number":296,"context_line":""},{"line_number":297,"context_line":"Guest tolerance for hyperthreads"},{"line_number":298,"context_line":"--------------------------------"},{"line_number":299,"context_line":""},{"line_number":300,"context_line":"Certain guests have a tolerance for physical processors being a hyperthread"}],"source_content_type":"text/x-rst","patch_set":24,"id":"3fce034c_9c59758f","line":297,"updated":"2019-04-17 19:16:59.000000000","message":"So setting HW_CPU_HYPERTHREADING\u003dforbidden is meant to replace the isolate policy, right? But previously, if you had for example:\n\n        NUMA Node\n          / \\\n     Core    Core\n       /\\     /\\\n     T1 T2  T3 T4\n\nand an instance with 2 CPUs and policy isolate, it could still land on T1 and T3, right? Whereas with HW_CPU_HYPERTHREADING\u003dforbidden, that entire tree (assuming the trait is set on the NUMA node) would be off-limits?\n\nI\u0027m not sure I have a solution (short of having cores be RPs with an inventory of threads), but... it\u0027s a problem, right?","commit_id":"dee3acaa82a14a48378469fcb083825af70fdb1a"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"196419370a21b6e561a43b2106760efee93d787c","unresolved":false,"context_lines":[{"line_number":294,"context_line":"will represent the total number of both ``VCPU``\\ s and ``PCPU``\\ s associated"},{"line_number":295,"context_line":"with the instance. If there is a mismatch, the request will be rejected."},{"line_number":296,"context_line":""},{"line_number":297,"context_line":"Guest tolerance for hyperthreads"},{"line_number":298,"context_line":"--------------------------------"},{"line_number":299,"context_line":""},{"line_number":300,"context_line":"Certain guests have a tolerance for physical processors being a hyperthread"}],"source_content_type":"text/x-rst","patch_set":24,"id":"ffb9cba7_08c0187b","line":297,"in_reply_to":"3fce034c_9c59758f","updated":"2019-04-24 14:57:05.000000000","message":"Correct. I\u0027ve called that out more explicitly now. It\u0027s the one obvious area where we\u0027re losing functionality, but you have to break a few eggs and all that :/","commit_id":"dee3acaa82a14a48378469fcb083825af70fdb1a"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"ba6742529b28fb0c4d9d6d4e0fa87646b3d1eba9","unresolved":false,"context_lines":[{"line_number":372,"context_line":"   should *not* be hyperthread siblings (in other words, it wants full cores"},{"line_number":373,"context_line":"   for its dedicated CPU resources)::"},{"line_number":374,"context_line":""},{"line_number":375,"context_line":"    resources:PCPU\u003d10"},{"line_number":376,"context_line":"    resources:VCPU\u003d2"},{"line_number":377,"context_line":"    trait:HW_CPU_HYPERTHREADING\u003dforbidden"},{"line_number":378,"context_line":""},{"line_number":379,"context_line":".. note::"},{"line_number":380,"context_line":""}],"source_content_type":"text/x-rst","patch_set":24,"id":"3fce034c_681d0765","line":377,"range":{"start_line":375,"start_character":0,"end_line":377,"end_character":41},"updated":"2019-04-16 14:48:44.000000000","message":"Worth noting that it\u0027s possible for the PCPU and VCPU resources to come from different providers when expressed this way.","commit_id":"dee3acaa82a14a48378469fcb083825af70fdb1a"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"196419370a21b6e561a43b2106760efee93d787c","unresolved":false,"context_lines":[{"line_number":372,"context_line":"   should *not* be hyperthread siblings (in other words, it wants full cores"},{"line_number":373,"context_line":"   for its dedicated CPU resources)::"},{"line_number":374,"context_line":""},{"line_number":375,"context_line":"    resources:PCPU\u003d10"},{"line_number":376,"context_line":"    resources:VCPU\u003d2"},{"line_number":377,"context_line":"    trait:HW_CPU_HYPERTHREADING\u003dforbidden"},{"line_number":378,"context_line":""},{"line_number":379,"context_line":".. note::"},{"line_number":380,"context_line":""}],"source_content_type":"text/x-rst","patch_set":24,"id":"ffb9cba7_8841680e","line":377,"range":{"start_line":375,"start_character":0,"end_line":377,"end_character":41},"in_reply_to":"3fce034c_681d0765","updated":"2019-04-24 14:57:05.000000000","message":"I killed this example since we\u0027re not going to target this in the initial version (this is already waaaay too complicated)","commit_id":"dee3acaa82a14a48378469fcb083825af70fdb1a"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"5bb7bc1e9e6ce156ff0d87cd896a9085ad54e849","unresolved":false,"context_lines":[{"line_number":372,"context_line":"   should *not* be hyperthread siblings (in other words, it wants full cores"},{"line_number":373,"context_line":"   for its dedicated CPU resources)::"},{"line_number":374,"context_line":""},{"line_number":375,"context_line":"    resources:PCPU\u003d10"},{"line_number":376,"context_line":"    resources:VCPU\u003d2"},{"line_number":377,"context_line":"    trait:HW_CPU_HYPERTHREADING\u003dforbidden"},{"line_number":378,"context_line":""},{"line_number":379,"context_line":".. note::"},{"line_number":380,"context_line":""}],"source_content_type":"text/x-rst","patch_set":24,"id":"3fce034c_6e4bcf58","line":377,"range":{"start_line":375,"start_character":0,"end_line":377,"end_character":41},"in_reply_to":"3fce034c_681d0765","updated":"2019-04-25 00:08:19.000000000","message":"ture but can you also confirm that \nwhile the different resocue class can come from different providres this syntax required that all 10 pcpus come form the same rp. e.g. within a cpu class it cannot be split between RPs but different resouce classes can come form different RP.\n\nthat is my undersandign of how the unnumbered resouce group works but it is not stated explcigly in teh api ref but is indeicaed in the spec that intoduces numbered request groups.","commit_id":"dee3acaa82a14a48378469fcb083825af70fdb1a"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"295f0d18310b3e01fae4a28a04a33fc9e787e261","unresolved":false,"context_lines":[{"line_number":372,"context_line":"   should *not* be hyperthread siblings (in other words, it wants full cores"},{"line_number":373,"context_line":"   for its dedicated CPU resources)::"},{"line_number":374,"context_line":""},{"line_number":375,"context_line":"    resources:PCPU\u003d10"},{"line_number":376,"context_line":"    resources:VCPU\u003d2"},{"line_number":377,"context_line":"    trait:HW_CPU_HYPERTHREADING\u003dforbidden"},{"line_number":378,"context_line":""},{"line_number":379,"context_line":".. note::"},{"line_number":380,"context_line":""}],"source_content_type":"text/x-rst","patch_set":24,"id":"ffb9cba7_04eea387","line":377,"range":{"start_line":375,"start_character":0,"end_line":377,"end_character":41},"in_reply_to":"3fce034c_6e4bcf58","updated":"2019-04-25 23:05:41.000000000","message":"I\u0027m having a hard time parsing Sean\u0027s question, but here\u0027s how the unnumbered group works:\n\n- Resources of the same class always come from the same provider (so in this example, PCPU\u003d10 will never be like 4 from one provider and 6 from another).\n- Resources of different classes *might* come from different providers (so in this example, the PCPU and VCPU may come from the same or different providers).","commit_id":"dee3acaa82a14a48378469fcb083825af70fdb1a"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"15b2f9388f2bd903e5e47af29d5af7b3a1508010","unresolved":false,"context_lines":[{"line_number":409,"context_line":"being in the shared processor set. The issue with this is that the ``POST"},{"line_number":410,"context_line":"/flavors`` REST API has a constraint on it to force \u003e0 value of ``vcpus``. We"},{"line_number":411,"context_line":"will need to add a new microversion to indicate that this constraint will be"},{"line_number":412,"context_line":"changed so that ``vcpus`` may be 0 as long as the ``resources\u003dPCPU`` extra spec"},{"line_number":413,"context_line":"has a non-zero value in it."},{"line_number":414,"context_line":""},{"line_number":415,"context_line":"Security impact"}],"source_content_type":"text/x-rst","patch_set":24,"id":"3fce034c_5c61cd04","line":412,"updated":"2019-04-17 19:16:59.000000000","message":"This contradicts L294.","commit_id":"dee3acaa82a14a48378469fcb083825af70fdb1a"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"196419370a21b6e561a43b2106760efee93d787c","unresolved":false,"context_lines":[{"line_number":409,"context_line":"being in the shared processor set. The issue with this is that the ``POST"},{"line_number":410,"context_line":"/flavors`` REST API has a constraint on it to force \u003e0 value of ``vcpus``. We"},{"line_number":411,"context_line":"will need to add a new microversion to indicate that this constraint will be"},{"line_number":412,"context_line":"changed so that ``vcpus`` may be 0 as long as the ``resources\u003dPCPU`` extra spec"},{"line_number":413,"context_line":"has a non-zero value in it."},{"line_number":414,"context_line":""},{"line_number":415,"context_line":"Security impact"}],"source_content_type":"text/x-rst","patch_set":24,"id":"ffb9cba7_484b702a","line":412,"in_reply_to":"3fce034c_5c61cd04","updated":"2019-04-24 14:57:05.000000000","message":"Done","commit_id":"dee3acaa82a14a48378469fcb083825af70fdb1a"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"ba6742529b28fb0c4d9d6d4e0fa87646b3d1eba9","unresolved":false,"context_lines":[{"line_number":506,"context_line":"  are actually using dedicated host CPUs) to the new ``PCPU`` resource class."},{"line_number":507,"context_line":"  Furthermore, existing allocations for guests on those compute nodes will need"},{"line_number":508,"context_line":"  to have their allocation records updated from the ``VCPU`` to ``PCPU``"},{"line_number":509,"context_line":"  resource class."},{"line_number":510,"context_line":""},{"line_number":511,"context_line":"* Additionally, for existing compute nodes that have guests which use dedicated"},{"line_number":512,"context_line":"  CPUs **and** the ``isolate`` CPU thread policy, the number of allocated"}],"source_content_type":"text/x-rst","patch_set":24,"id":"3fce034c_48036b0e","line":509,"updated":"2019-04-16 14:48:44.000000000","message":"This paragraph should mention that we\u0027ll do this via reshape.\n\nIn fact, it would probably be appropriate to have a section dedicated to describing how (and when) the reshape will work, pulling together pieces from the rest of the spec:\n\nThe above paragraph implies that we\u0027ll look at instances with dedicated CPU resources to figure out how many and which VCPUs should become PCPUs. This needs to be reconciled with the description starting at L192 which explains how the VCPU/PCPU sets will be inferred from legacy conf options.\n\nWhat\u0027s described so far makes sense to do at upgrade time, which gels with our stated policy for reshaping. BUT presumably the operator will at some point want to cut their conf over to using the new options properly. Are they required to do that during the upgrade? If not, are they required to make the new values conform exactly to what we inferred based on the old values? If not, do we have extra checks to fail (in update_provider_tree? elsewhere?) if they try to move CPUs that are currently in use?","commit_id":"dee3acaa82a14a48378469fcb083825af70fdb1a"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"196419370a21b6e561a43b2106760efee93d787c","unresolved":false,"context_lines":[{"line_number":506,"context_line":"  are actually using dedicated host CPUs) to the new ``PCPU`` resource class."},{"line_number":507,"context_line":"  Furthermore, existing allocations for guests on those compute nodes will need"},{"line_number":508,"context_line":"  to have their allocation records updated from the ``VCPU`` to ``PCPU``"},{"line_number":509,"context_line":"  resource class."},{"line_number":510,"context_line":""},{"line_number":511,"context_line":"* Additionally, for existing compute nodes that have guests which use dedicated"},{"line_number":512,"context_line":"  CPUs **and** the ``isolate`` CPU thread policy, the number of allocated"}],"source_content_type":"text/x-rst","patch_set":24,"id":"ffb9cba7_68467424","line":509,"in_reply_to":"3fce034c_31bd26d8","updated":"2019-04-24 14:57:05.000000000","message":"I\u0027ve come up with something arguably better. Tell me what you think.","commit_id":"dee3acaa82a14a48378469fcb083825af70fdb1a"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"5aff72f9fb9db284d4501e7fd621f32dbaa479f3","unresolved":false,"context_lines":[{"line_number":506,"context_line":"  are actually using dedicated host CPUs) to the new ``PCPU`` resource class."},{"line_number":507,"context_line":"  Furthermore, existing allocations for guests on those compute nodes will need"},{"line_number":508,"context_line":"  to have their allocation records updated from the ``VCPU`` to ``PCPU``"},{"line_number":509,"context_line":"  resource class."},{"line_number":510,"context_line":""},{"line_number":511,"context_line":"* Additionally, for existing compute nodes that have guests which use dedicated"},{"line_number":512,"context_line":"  CPUs **and** the ``isolate`` CPU thread policy, the number of allocated"}],"source_content_type":"text/x-rst","patch_set":24,"id":"3fce034c_f10f9ede","line":509,"in_reply_to":"3fce034c_48036b0e","updated":"2019-04-16 17:05:13.000000000","message":"I\u0027ll try to summarize what I proposed on IRC :\n* leave existing config options to provide VCPU resources\n* only trigger a reshape on cpu_dedicated_set that will supersede old config options and will allow nova-compute service at startup to check capacity based on those new config options (compared with existing instances) and hard-fail if not enough capacity left, or trigger the reshape.\n* for the PCPU request, leave it to be triggered thru a config knob that operators have to enable. If this knob is still disabled, still ask for VCPU","commit_id":"dee3acaa82a14a48378469fcb083825af70fdb1a"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"1b1cabb6e16e8986adf41e3150b1b2c31c1dc2e7","unresolved":false,"context_lines":[{"line_number":506,"context_line":"  are actually using dedicated host CPUs) to the new ``PCPU`` resource class."},{"line_number":507,"context_line":"  Furthermore, existing allocations for guests on those compute nodes will need"},{"line_number":508,"context_line":"  to have their allocation records updated from the ``VCPU`` to ``PCPU``"},{"line_number":509,"context_line":"  resource class."},{"line_number":510,"context_line":""},{"line_number":511,"context_line":"* Additionally, for existing compute nodes that have guests which use dedicated"},{"line_number":512,"context_line":"  CPUs **and** the ``isolate`` CPU thread policy, the number of allocated"}],"source_content_type":"text/x-rst","patch_set":24,"id":"3fce034c_31bd26d8","line":509,"in_reply_to":"3fce034c_f10f9ede","updated":"2019-04-16 17:09:04.000000000","message":"++","commit_id":"dee3acaa82a14a48378469fcb083825af70fdb1a"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"ba6742529b28fb0c4d9d6d4e0fa87646b3d1eba9","unresolved":false,"context_lines":[{"line_number":536,"context_line":""},{"line_number":537,"context_line":"Work Items"},{"line_number":538,"context_line":"----------"},{"line_number":539,"context_line":""},{"line_number":540,"context_line":"* Create ``CONF.cpu_dedicated_set`` and ``CONF.cpu_shared_set`` options"},{"line_number":541,"context_line":"* Modify virt code to calculate the set of host CPUs that will be used for"},{"line_number":542,"context_line":"  dedicated and shared CPUs by using the above new CONF options"}],"source_content_type":"text/x-rst","patch_set":24,"id":"3fce034c_080d6336","line":539,"updated":"2019-04-16 14:48:44.000000000","message":"- create PCPU resource class\n- Modify virt code to reshape \u003cas described above\u003e","commit_id":"dee3acaa82a14a48378469fcb083825af70fdb1a"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"6aba4a91946a47a21adc8152ccace05d42855825","unresolved":false,"context_lines":[{"line_number":536,"context_line":""},{"line_number":537,"context_line":"Work Items"},{"line_number":538,"context_line":"----------"},{"line_number":539,"context_line":""},{"line_number":540,"context_line":"* Create ``CONF.cpu_dedicated_set`` and ``CONF.cpu_shared_set`` options"},{"line_number":541,"context_line":"* Modify virt code to calculate the set of host CPUs that will be used for"},{"line_number":542,"context_line":"  dedicated and shared CPUs by using the above new CONF options"}],"source_content_type":"text/x-rst","patch_set":24,"id":"ffb9cba7_37d3e662","line":539,"in_reply_to":"3fce034c_080d6336","updated":"2019-04-25 14:03:56.000000000","message":"\u003e - create PCPU resource class\n\nThis was done in Stein (or maybe even Rocky)","commit_id":"dee3acaa82a14a48378469fcb083825af70fdb1a"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"54e19d4a9e6656245edba210e55bdd7a54395827","unresolved":false,"context_lines":[{"line_number":538,"context_line":"----------"},{"line_number":539,"context_line":""},{"line_number":540,"context_line":"* Create ``CONF.cpu_dedicated_set`` and ``CONF.cpu_shared_set`` options"},{"line_number":541,"context_line":"* Modify virt code to calculate the set of host CPUs that will be used for"},{"line_number":542,"context_line":"  dedicated and shared CPUs by using the above new CONF options"},{"line_number":543,"context_line":"* Modify the code that creates the request group from the flavor\u0027s extra specs"},{"line_number":544,"context_line":"  and image properties to construct a request for ``PCPU`` resources when the"},{"line_number":545,"context_line":"  ``hw:cpu_policy\u003ddedicated`` spec is found (smooth transition from legacy)"}],"source_content_type":"text/x-rst","patch_set":24,"id":"ffb9cba7_8fa892db","line":542,"range":{"start_line":541,"start_character":2,"end_line":542,"end_character":63},"updated":"2019-04-24 13:08:30.000000000","message":"What will you do to ensure the NUMATopologyfilter only allcoated the cpu set from `cpu_dedicated_set` to the dedicated vcpu?\n\nand we need turning the virt driver, to ensure the shared vcpu on running on the `cpu_shared_set`.\n\nOr this is still not the scope of this spec?","commit_id":"dee3acaa82a14a48378469fcb083825af70fdb1a"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"196419370a21b6e561a43b2106760efee93d787c","unresolved":false,"context_lines":[{"line_number":538,"context_line":"----------"},{"line_number":539,"context_line":""},{"line_number":540,"context_line":"* Create ``CONF.cpu_dedicated_set`` and ``CONF.cpu_shared_set`` options"},{"line_number":541,"context_line":"* Modify virt code to calculate the set of host CPUs that will be used for"},{"line_number":542,"context_line":"  dedicated and shared CPUs by using the above new CONF options"},{"line_number":543,"context_line":"* Modify the code that creates the request group from the flavor\u0027s extra specs"},{"line_number":544,"context_line":"  and image properties to construct a request for ``PCPU`` resources when the"},{"line_number":545,"context_line":"  ``hw:cpu_policy\u003ddedicated`` spec is found (smooth transition from legacy)"}],"source_content_type":"text/x-rst","patch_set":24,"id":"ffb9cba7_686f5492","line":542,"range":{"start_line":541,"start_character":2,"end_line":542,"end_character":63},"in_reply_to":"ffb9cba7_8fa892db","updated":"2019-04-24 14:57:05.000000000","message":"Good point. We\u0027re going to need to expose this information via the NUMA topology blob that is reported via nova-compute to nova-scheduler. I\u0027ll add this.","commit_id":"dee3acaa82a14a48378469fcb083825af70fdb1a"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"3be89f626e0d6c7eddfaf32169f0300d878b0850","unresolved":false,"context_lines":[{"line_number":243,"context_line":""},{"line_number":244,"context_line":"   For example::"},{"line_number":245,"context_line":""},{"line_number":246,"context_line":"       $ openstack flavor create --vcpus 8 ... example-2"},{"line_number":247,"context_line":"       $ openstack flavor set --property resources:PCPU\u003d2 example-2"},{"line_number":248,"context_line":""},{"line_number":249,"context_line":"   Alternatively, you can skip the explicit resource request and use the legacy"},{"line_number":250,"context_line":"   ``hw:cpu_policy`` flavor extra spec instead::"}],"source_content_type":"text/x-rst","patch_set":26,"id":"ffb9cba7_d5dcd075","line":247,"range":{"start_line":246,"start_character":33,"end_line":247,"end_character":67},"updated":"2019-04-24 22:26:42.000000000","message":"I don\u0027t understand this. Why is the flavor getting 8 vcpus if we want 8 PCPUs? And where did resources:PCPU\u003d2 come from?","commit_id":"83f403a2abc594705d233190a1f380017bdba927"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"c78a10c919d5ab805eff2ded30d097e54b6bfd65","unresolved":false,"context_lines":[{"line_number":243,"context_line":""},{"line_number":244,"context_line":"   For example::"},{"line_number":245,"context_line":""},{"line_number":246,"context_line":"       $ openstack flavor create --vcpus 8 ... example-2"},{"line_number":247,"context_line":"       $ openstack flavor set --property resources:PCPU\u003d2 example-2"},{"line_number":248,"context_line":""},{"line_number":249,"context_line":"   Alternatively, you can skip the explicit resource request and use the legacy"},{"line_number":250,"context_line":"   ``hw:cpu_policy`` flavor extra spec instead::"}],"source_content_type":"text/x-rst","patch_set":26,"id":"ffb9cba7_f16c8137","line":247,"range":{"start_line":246,"start_character":33,"end_line":247,"end_character":67},"in_reply_to":"ffb9cba7_d5dcd075","updated":"2019-04-25 10:29:49.000000000","message":"Done","commit_id":"83f403a2abc594705d233190a1f380017bdba927"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"5bb7bc1e9e6ce156ff0d87cd896a9085ad54e849","unresolved":false,"context_lines":[{"line_number":243,"context_line":""},{"line_number":244,"context_line":"   For example::"},{"line_number":245,"context_line":""},{"line_number":246,"context_line":"       $ openstack flavor create --vcpus 8 ... example-2"},{"line_number":247,"context_line":"       $ openstack flavor set --property resources:PCPU\u003d2 example-2"},{"line_number":248,"context_line":""},{"line_number":249,"context_line":"   Alternatively, you can skip the explicit resource request and use the legacy"},{"line_number":250,"context_line":"   ``hw:cpu_policy`` flavor extra spec instead::"}],"source_content_type":"text/x-rst","patch_set":26,"id":"ffb9cba7_e73047eb","line":247,"range":{"start_line":246,"start_character":33,"end_line":247,"end_character":67},"in_reply_to":"ffb9cba7_d5dcd075","updated":"2019-04-25 00:08:19.000000000","message":"flavor.vcpu is the number of cpus exposed to the guest os.\n\nit was translated into reoucese:vcpus to not require operators to update flavor but flavor.vcpu dose not imply floating cores.\n\nthe PCPU\u003d2 is a typo\n\nstephn copyide it form form exmple 1 and didnt update.","commit_id":"83f403a2abc594705d233190a1f380017bdba927"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"c78a10c919d5ab805eff2ded30d097e54b6bfd65","unresolved":false,"context_lines":[{"line_number":243,"context_line":""},{"line_number":244,"context_line":"   For example::"},{"line_number":245,"context_line":""},{"line_number":246,"context_line":"       $ openstack flavor create --vcpus 8 ... example-2"},{"line_number":247,"context_line":"       $ openstack flavor set --property resources:PCPU\u003d2 example-2"},{"line_number":248,"context_line":""},{"line_number":249,"context_line":"   Alternatively, you can skip the explicit resource request and use the legacy"},{"line_number":250,"context_line":"   ``hw:cpu_policy`` flavor extra spec instead::"}],"source_content_type":"text/x-rst","patch_set":26,"id":"ffb9cba7_91bbc5c2","line":247,"range":{"start_line":246,"start_character":33,"end_line":247,"end_character":67},"in_reply_to":"ffb9cba7_e73047eb","updated":"2019-04-25 10:29:49.000000000","message":"\u003e \u003e I don\u0027t understand this. Why is the flavor getting 8 vcpus if we\n \u003e \u003e want 8 PCPUs? And where did resources:PCPU\u003d2 come from?\n\n \u003e the PCPU\u003d2 is a typo\n \u003e \n \u003e stephn copyide it form form exmple 1 and didnt update.\n\nThis ^^","commit_id":"83f403a2abc594705d233190a1f380017bdba927"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"3be89f626e0d6c7eddfaf32169f0300d878b0850","unresolved":false,"context_lines":[{"line_number":250,"context_line":"   ``hw:cpu_policy`` flavor extra spec instead::"},{"line_number":251,"context_line":""},{"line_number":252,"context_line":"       $ openstack flavor create --vcpus 8 ... example-2"},{"line_number":253,"context_line":"       $ openstack flavor set --property hw:cpu_policy\u003ddedicated example-2"},{"line_number":254,"context_line":""},{"line_number":255,"context_line":"3) A virtual network function running a packet-core processing application"},{"line_number":256,"context_line":"   requires 8 CPU resources. The VNF specifies that the dedicated CPUs it"}],"source_content_type":"text/x-rst","patch_set":26,"id":"ffb9cba7_d5c5b08f","line":253,"updated":"2019-04-24 22:26:42.000000000","message":"In this one, the implication is that asking for hw:cpu_policy\u003ddedicated will make nova understand that you actually want your 8 flavor.vcpus to be PCPUs?\n\n[Later] Okay, I see that\u0027s the case from the explanation at L433-8.\n\nI still don\u0027t understand the one above.","commit_id":"83f403a2abc594705d233190a1f380017bdba927"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"c78a10c919d5ab805eff2ded30d097e54b6bfd65","unresolved":false,"context_lines":[{"line_number":250,"context_line":"   ``hw:cpu_policy`` flavor extra spec instead::"},{"line_number":251,"context_line":""},{"line_number":252,"context_line":"       $ openstack flavor create --vcpus 8 ... example-2"},{"line_number":253,"context_line":"       $ openstack flavor set --property hw:cpu_policy\u003ddedicated example-2"},{"line_number":254,"context_line":""},{"line_number":255,"context_line":"3) A virtual network function running a packet-core processing application"},{"line_number":256,"context_line":"   requires 8 CPU resources. The VNF specifies that the dedicated CPUs it"}],"source_content_type":"text/x-rst","patch_set":26,"id":"ffb9cba7_0c51fa62","line":253,"in_reply_to":"ffb9cba7_675a172b","updated":"2019-04-25 10:29:49.000000000","message":"Done","commit_id":"83f403a2abc594705d233190a1f380017bdba927"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"5bb7bc1e9e6ce156ff0d87cd896a9085ad54e849","unresolved":false,"context_lines":[{"line_number":250,"context_line":"   ``hw:cpu_policy`` flavor extra spec instead::"},{"line_number":251,"context_line":""},{"line_number":252,"context_line":"       $ openstack flavor create --vcpus 8 ... example-2"},{"line_number":253,"context_line":"       $ openstack flavor set --property hw:cpu_policy\u003ddedicated example-2"},{"line_number":254,"context_line":""},{"line_number":255,"context_line":"3) A virtual network function running a packet-core processing application"},{"line_number":256,"context_line":"   requires 8 CPU resources. The VNF specifies that the dedicated CPUs it"}],"source_content_type":"text/x-rst","patch_set":26,"id":"ffb9cba7_675a172b","line":253,"in_reply_to":"ffb9cba7_d5c5b08f","updated":"2019-04-25 00:08:19.000000000","message":"yes.","commit_id":"83f403a2abc594705d233190a1f380017bdba927"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"3be89f626e0d6c7eddfaf32169f0300d878b0850","unresolved":false,"context_lines":[{"line_number":263,"context_line":"   For example::"},{"line_number":264,"context_line":""},{"line_number":265,"context_line":"       $ openstack flavor create --vcpus 8 ... example-3"},{"line_number":266,"context_line":"       $ openstack flavor set --property resources:VCPU\u003d2 \\"},{"line_number":267,"context_line":"           --property trait:HW_CPU_HYPERTHREADING\u003dforbidden example-3"},{"line_number":268,"context_line":""},{"line_number":269,"context_line":"   Alternatively, you can skip the explicit resource request and trait request"}],"source_content_type":"text/x-rst","patch_set":26,"id":"ffb9cba7_553780b1","line":266,"range":{"start_line":266,"start_character":51,"end_line":266,"end_character":57},"updated":"2019-04-24 22:26:42.000000000","message":"wha??","commit_id":"83f403a2abc594705d233190a1f380017bdba927"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"c78a10c919d5ab805eff2ded30d097e54b6bfd65","unresolved":false,"context_lines":[{"line_number":263,"context_line":"   For example::"},{"line_number":264,"context_line":""},{"line_number":265,"context_line":"       $ openstack flavor create --vcpus 8 ... example-3"},{"line_number":266,"context_line":"       $ openstack flavor set --property resources:VCPU\u003d2 \\"},{"line_number":267,"context_line":"           --property trait:HW_CPU_HYPERTHREADING\u003dforbidden example-3"},{"line_number":268,"context_line":""},{"line_number":269,"context_line":"   Alternatively, you can skip the explicit resource request and trait request"}],"source_content_type":"text/x-rst","patch_set":26,"id":"ffb9cba7_ac4f8ebb","line":266,"range":{"start_line":266,"start_character":51,"end_line":266,"end_character":57},"in_reply_to":"ffb9cba7_553780b1","updated":"2019-04-25 10:29:49.000000000","message":"Done","commit_id":"83f403a2abc594705d233190a1f380017bdba927"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"5bb7bc1e9e6ce156ff0d87cd896a9085ad54e849","unresolved":false,"context_lines":[{"line_number":263,"context_line":"   For example::"},{"line_number":264,"context_line":""},{"line_number":265,"context_line":"       $ openstack flavor create --vcpus 8 ... example-3"},{"line_number":266,"context_line":"       $ openstack flavor set --property resources:VCPU\u003d2 \\"},{"line_number":267,"context_line":"           --property trait:HW_CPU_HYPERTHREADING\u003dforbidden example-3"},{"line_number":268,"context_line":""},{"line_number":269,"context_line":"   Alternatively, you can skip the explicit resource request and trait request"}],"source_content_type":"text/x-rst","patch_set":26,"id":"ffb9cba7_c74ae353","line":266,"range":{"start_line":266,"start_character":51,"end_line":266,"end_character":57},"in_reply_to":"ffb9cba7_553780b1","updated":"2019-04-25 00:08:19.000000000","message":"this is a typo again this should be PCPU\u003d8","commit_id":"83f403a2abc594705d233190a1f380017bdba927"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"3be89f626e0d6c7eddfaf32169f0300d878b0850","unresolved":false,"context_lines":[{"line_number":283,"context_line":""},{"line_number":284,"context_line":".. note::"},{"line_number":285,"context_line":""},{"line_number":286,"context_line":"    It will not initially be possible to request both ``PCPU`` and ``VCPU`` in"},{"line_number":287,"context_line":"    the same request. This functionality may be added later but such requests"},{"line_number":288,"context_line":"    will be rejected until that happens."},{"line_number":289,"context_line":""},{"line_number":290,"context_line":".. note::"}],"source_content_type":"text/x-rst","patch_set":26,"id":"ffb9cba7_d54a9025","line":287,"range":{"start_line":286,"start_character":4,"end_line":287,"end_character":21},"updated":"2019-04-24 22:26:42.000000000","message":"@Alex, @Huaqiang: this is a show-stopper for PBF à la Jay, isn\u0027t it?","commit_id":"83f403a2abc594705d233190a1f380017bdba927"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"c78a10c919d5ab805eff2ded30d097e54b6bfd65","unresolved":false,"context_lines":[{"line_number":283,"context_line":""},{"line_number":284,"context_line":".. note::"},{"line_number":285,"context_line":""},{"line_number":286,"context_line":"    It will not initially be possible to request both ``PCPU`` and ``VCPU`` in"},{"line_number":287,"context_line":"    the same request. This functionality may be added later but such requests"},{"line_number":288,"context_line":"    will be rejected until that happens."},{"line_number":289,"context_line":""},{"line_number":290,"context_line":".. note::"}],"source_content_type":"text/x-rst","patch_set":26,"id":"ffb9cba7_6cc75614","line":287,"range":{"start_line":286,"start_character":4,"end_line":287,"end_character":21},"in_reply_to":"ffb9cba7_0798fbbd","updated":"2019-04-25 10:29:49.000000000","message":"What Sean said :)","commit_id":"83f403a2abc594705d233190a1f380017bdba927"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"8a2faa9f75951bc300c3c3dc4a1a2a3a66f9d22d","unresolved":false,"context_lines":[{"line_number":283,"context_line":""},{"line_number":284,"context_line":".. note::"},{"line_number":285,"context_line":""},{"line_number":286,"context_line":"    It will not initially be possible to request both ``PCPU`` and ``VCPU`` in"},{"line_number":287,"context_line":"    the same request. This functionality may be added later but such requests"},{"line_number":288,"context_line":"    will be rejected until that happens."},{"line_number":289,"context_line":""},{"line_number":290,"context_line":".. note::"}],"source_content_type":"text/x-rst","patch_set":26,"id":"ffb9cba7_c3fac873","line":287,"range":{"start_line":286,"start_character":4,"end_line":287,"end_character":21},"in_reply_to":"ffb9cba7_6cc75614","updated":"2019-04-25 17:03:37.000000000","message":"Thanks Eric, Sean, I will be happy we have pined and unpined vcpu in the same vm. But I don\u0027t think that worth to be in this spec also, since this spec already very complex, and  mix pined and unpined vcpu in the same vm need other tuning of virt driver, that is out of scope for this spec.\n\nI also interested in Jay\u0027s proposal, that is why I begin to review this spec. I want to find out a way matching the requirement from both side.","commit_id":"83f403a2abc594705d233190a1f380017bdba927"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"5bb7bc1e9e6ce156ff0d87cd896a9085ad54e849","unresolved":false,"context_lines":[{"line_number":283,"context_line":""},{"line_number":284,"context_line":".. note::"},{"line_number":285,"context_line":""},{"line_number":286,"context_line":"    It will not initially be possible to request both ``PCPU`` and ``VCPU`` in"},{"line_number":287,"context_line":"    the same request. This functionality may be added later but such requests"},{"line_number":288,"context_line":"    will be rejected until that happens."},{"line_number":289,"context_line":""},{"line_number":290,"context_line":".. note::"}],"source_content_type":"text/x-rst","patch_set":26,"id":"ffb9cba7_0798fbbd","line":287,"range":{"start_line":286,"start_character":4,"end_line":287,"end_character":21},"in_reply_to":"ffb9cba7_d54a9025","updated":"2019-04-25 00:08:19.000000000","message":"short answer no mixed cpus in the same guest is not a blocker for https://review.opendev.org/#/c/649882/. that spec is about afinising cpus to high performacne cores or low performas core not mixing floating and pinned cores in the same guest.\n\n\n----- longer answer---------\n\nwe dont need to add that restition but today we cannot mix pinned and unping cpus in the same instance.\n\nthere was a sperate follow on spec for mixing pinned and unpinned cpus last cycle but sicne this spec i complex enough im not sure we want to add it.\n\nthechnically if we dont put in a check to prevent it the operator could jsut doe \n\nopenstack flavor create --vcpus 8 ... mixed\nopenstack flavor set --property resources:VCPU\u003d4 \\\n--property resources:VCPU\u003d4 mixed\n\nhowever the nova.virt.hardware module cannot pin an instance with mixed cpus and it will be invasive to supprot that.\n\nim porsonally not against doing this work but i think it shoudl be in a dedicated spec covering jsut the libvirt drivier chagnes and not part of this spec.\n\nall existing pinned instance are not mixed so there is no regression in functionality by not supporting mixed instance initially.  we could support both in train but i would stongly prefer to do the tracking in placment first and mixed cpus in a singel instance after.\n\nwe will have to do a lot of the ground work for it anyway to allow floating instnace and pinned instances on the same host but i think there is a clear order here.\n\nfirst we need to implement this spec which will allow mixing pinned guest and floating guest on the same host.\n\nthen we shoudl implement mixed cpus within a guest to enable realtime guest to use floating cores for there non realtime cores. after that we shoudl implement the cpu frequecy pools. that said im not sold that we should implement \nhttps://review.opendev.org/#/c/649882/ yet.\n\n\n----- resaons why jay and i are worried about increasing complexity -------------\n\n\nto put this all in context today without any of these specs we can already ask for pinned core or floating cores. if we have pinned core we can use a mask to request some of them to be given realtime prioity. we can also specify the thread selection policy (prefer require or avoid hyper trheads).\n\nwe can seperaly create multiple virtual numa node and devied the core between them.\n\non another axis we can also specify the cpu topology in terms of socket core and thread.\n\nwe can specify if the emultor tread can float over the same host cores as the guest cpus or be a isolate host core or float over a shared set of host cores.\n\nall with in the same instance.\n\nto that we are suggesitn allowing some cores to float will other are pinnind within the same instance and allow any of the guest cores to be allocated for distinct pool of cpu priority with cache allocation.\n\nso we have basically exposed a significant portion of the libvirt cpu tune elements capablities via a python module that was never designed to be this flexable and has had many feature bolted on over time.\n\nim not saying we cant or shouldn\u0027t support the new usecase but i think we need to take baby steps here and in this spec focus on supporting our exisig feature in placment.\n\nnote there are even more things that the libvirt dirver has to deal with then i listed above i was just focusing on the cpu aspect.","commit_id":"83f403a2abc594705d233190a1f380017bdba927"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"3be89f626e0d6c7eddfaf32169f0300d878b0850","unresolved":false,"context_lines":[{"line_number":435,"context_line":"prefilter. For flavors/images using the ``shared`` policy, we will replace this"},{"line_number":436,"context_line":"with the ``resources\u003dVCPU:$flavor.vcpus`` extra spec, and for flavors/images"},{"line_number":437,"context_line":"using the ``dedicated`` policy, we will replace this with the"},{"line_number":438,"context_line":"``resources\u003dPCPU:$flavor.vcpus`` extra spec."},{"line_number":439,"context_line":""},{"line_number":440,"context_line":"In addition, we will alias the ``hw:cpu_thread_policy`` flavour extra spec and"},{"line_number":441,"context_line":"``hw_cpu_thread_policy`` image metadata option to"}],"source_content_type":"text/x-rst","patch_set":26,"id":"ffb9cba7_35ae8c98","line":438,"updated":"2019-04-24 22:26:42.000000000","message":"oic\n\nYeah, that\u0027s pretty confusing.\n\nI\u0027ll have to sleep on it and see if I get used to the idea.","commit_id":"83f403a2abc594705d233190a1f380017bdba927"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"5bb7bc1e9e6ce156ff0d87cd896a9085ad54e849","unresolved":false,"context_lines":[{"line_number":435,"context_line":"prefilter. For flavors/images using the ``shared`` policy, we will replace this"},{"line_number":436,"context_line":"with the ``resources\u003dVCPU:$flavor.vcpus`` extra spec, and for flavors/images"},{"line_number":437,"context_line":"using the ``dedicated`` policy, we will replace this with the"},{"line_number":438,"context_line":"``resources\u003dPCPU:$flavor.vcpus`` extra spec."},{"line_number":439,"context_line":""},{"line_number":440,"context_line":"In addition, we will alias the ``hw:cpu_thread_policy`` flavour extra spec and"},{"line_number":441,"context_line":"``hw_cpu_thread_policy`` image metadata option to"}],"source_content_type":"text/x-rst","patch_set":26,"id":"ffb9cba7_c79e6362","line":438,"in_reply_to":"ffb9cba7_35ae8c98","updated":"2019-04-25 00:08:19.000000000","message":"just for reference we already alias flavor.vcpu to the vcpu resouce class in 2 placens\n\nhere https://github.com/openstack/nova/blob/master/nova/scheduler/utils.py#L398-L402\nand \nhttps://github.com/openstack/nova/blob/master/nova/scheduler/utils.py#L419-L422\n\nthe first is only used by nova manage and i think its actully incorrect now in some cases.\n\nhere https://github.com/openstack/nova/blob/master/nova/scheduler/utils.py#L398-L402\n\nthe second \nhttps://github.com/openstack/nova/blob/master/nova/scheduler/utils.py#L419-L422\n\nis what we use to actuly generate the palcemnet request today.\n\nso this will litally be an if what will  select VCPU or PCPU in those two places.","commit_id":"83f403a2abc594705d233190a1f380017bdba927"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"3be89f626e0d6c7eddfaf32169f0300d878b0850","unresolved":false,"context_lines":[{"line_number":459,"context_line":"CPUs **and** the ``isolate`` CPU thread policy, the number of allocated"},{"line_number":460,"context_line":"``PCPU`` resources may need to be increased to account for the additional CPUs"},{"line_number":461,"context_line":"\"reserved\" by the host. On an x86 host with hyperthreading enabled, this will"},{"line_number":462,"context_line":"result in a 2x the number of ``PCPU``\\ s being reserved (N ``PCPU`` resources"},{"line_number":463,"context_line":"for the instance itself and N ``PCPU`` reserved to avoid another instance using"},{"line_number":464,"context_line":"them). This will be considered legacy behavior and won\u0027t be supported for new"},{"line_number":465,"context_line":"instances."}],"source_content_type":"text/x-rst","patch_set":26,"id":"ffb9cba7_f578f42b","line":462,"range":{"start_line":462,"start_character":47,"end_line":462,"end_character":55},"updated":"2019-04-24 22:26:42.000000000","message":"allocated?","commit_id":"83f403a2abc594705d233190a1f380017bdba927"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"3be89f626e0d6c7eddfaf32169f0300d878b0850","unresolved":false,"context_lines":[{"line_number":459,"context_line":"CPUs **and** the ``isolate`` CPU thread policy, the number of allocated"},{"line_number":460,"context_line":"``PCPU`` resources may need to be increased to account for the additional CPUs"},{"line_number":461,"context_line":"\"reserved\" by the host. On an x86 host with hyperthreading enabled, this will"},{"line_number":462,"context_line":"result in a 2x the number of ``PCPU``\\ s being reserved (N ``PCPU`` resources"},{"line_number":463,"context_line":"for the instance itself and N ``PCPU`` reserved to avoid another instance using"},{"line_number":464,"context_line":"them). This will be considered legacy behavior and won\u0027t be supported for new"},{"line_number":465,"context_line":"instances."}],"source_content_type":"text/x-rst","patch_set":26,"id":"ffb9cba7_b5727c48","line":462,"range":{"start_line":462,"start_character":12,"end_line":462,"end_character":25},"updated":"2019-04-24 22:26:42.000000000","message":"is this going to be a problem on a saturated host, or is it okay because we\u0027re actually creating double the inventory amount of PCPUs at the same time?","commit_id":"83f403a2abc594705d233190a1f380017bdba927"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"c78a10c919d5ab805eff2ded30d097e54b6bfd65","unresolved":false,"context_lines":[{"line_number":459,"context_line":"CPUs **and** the ``isolate`` CPU thread policy, the number of allocated"},{"line_number":460,"context_line":"``PCPU`` resources may need to be increased to account for the additional CPUs"},{"line_number":461,"context_line":"\"reserved\" by the host. On an x86 host with hyperthreading enabled, this will"},{"line_number":462,"context_line":"result in a 2x the number of ``PCPU``\\ s being reserved (N ``PCPU`` resources"},{"line_number":463,"context_line":"for the instance itself and N ``PCPU`` reserved to avoid another instance using"},{"line_number":464,"context_line":"them). This will be considered legacy behavior and won\u0027t be supported for new"},{"line_number":465,"context_line":"instances."}],"source_content_type":"text/x-rst","patch_set":26,"id":"ffb9cba7_ccdf62d4","line":462,"range":{"start_line":462,"start_character":12,"end_line":462,"end_character":25},"in_reply_to":"ffb9cba7_b5727c48","updated":"2019-04-25 10:29:49.000000000","message":"\u003e is this going to be a problem on a saturated host, or is it okay\n \u003e because we\u0027re actually creating double the inventory amount of\n \u003e PCPUs at the same time?\n\nI don\u0027t think so. We\u0027re still ultimately consuming the same amount of cores. The only difference is that with this workaround, we actually account for them in placement. We can\u0027t do that going forward because that would necessitate us knowing how many extra cores to reserve per host (i.e. we\u0027d have to assume all hosts have hyperthreads or no hosts have hyperthreads)","commit_id":"83f403a2abc594705d233190a1f380017bdba927"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"c78a10c919d5ab805eff2ded30d097e54b6bfd65","unresolved":false,"context_lines":[{"line_number":459,"context_line":"CPUs **and** the ``isolate`` CPU thread policy, the number of allocated"},{"line_number":460,"context_line":"``PCPU`` resources may need to be increased to account for the additional CPUs"},{"line_number":461,"context_line":"\"reserved\" by the host. On an x86 host with hyperthreading enabled, this will"},{"line_number":462,"context_line":"result in a 2x the number of ``PCPU``\\ s being reserved (N ``PCPU`` resources"},{"line_number":463,"context_line":"for the instance itself and N ``PCPU`` reserved to avoid another instance using"},{"line_number":464,"context_line":"them). This will be considered legacy behavior and won\u0027t be supported for new"},{"line_number":465,"context_line":"instances."}],"source_content_type":"text/x-rst","patch_set":26,"id":"ffb9cba7_ecda66e7","line":462,"range":{"start_line":462,"start_character":47,"end_line":462,"end_character":55},"in_reply_to":"ffb9cba7_f578f42b","updated":"2019-04-25 10:29:49.000000000","message":"Done","commit_id":"83f403a2abc594705d233190a1f380017bdba927"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"9ee9a8c30374478d28ff24779e5d5e8bd4941b16","unresolved":false,"context_lines":[{"line_number":348,"context_line":"There should be a positive impact on performance due to the placement service"},{"line_number":349,"context_line":"being able to perform a good portion of the work that the"},{"line_number":350,"context_line":"``NUMATopologyFilter`` currently does. The ``NUMATopologyFilter`` would be"},{"line_number":351,"context_line":"trimmed down to only handling questions about whether a particular thread"},{"line_number":352,"context_line":"allocation policy (tolerance of hyperthreads) could be met by a compute node."},{"line_number":353,"context_line":"The number of ``HostInfo`` objects passed to the ``NUMATopologyFilter`` will"},{"line_number":354,"context_line":"have already been reduced to only those hosts which have the required number of"},{"line_number":355,"context_line":"dedicated and shared CPU resources."}],"source_content_type":"text/x-rst","patch_set":27,"id":"ffb9cba7_4c493289","line":352,"range":{"start_line":351,"start_character":16,"end_line":352,"end_character":77},"updated":"2019-04-25 11:32:08.000000000","message":"with the hyper thread traits i dont think we need to do that anymore. although it happens automaically as part of the calualtion of the pinning anyway so we cant remove it but \n\nplacement should take care of that for us","commit_id":"fe68b9cd8098b002bc4c9bc43f0f3e4279701254"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"a75c91246bd24faf532a7d81f217bb7fe14139a7","unresolved":false,"context_lines":[{"line_number":348,"context_line":"There should be a positive impact on performance due to the placement service"},{"line_number":349,"context_line":"being able to perform a good portion of the work that the"},{"line_number":350,"context_line":"``NUMATopologyFilter`` currently does. The ``NUMATopologyFilter`` would be"},{"line_number":351,"context_line":"trimmed down to only handling questions about whether a particular thread"},{"line_number":352,"context_line":"allocation policy (tolerance of hyperthreads) could be met by a compute node."},{"line_number":353,"context_line":"The number of ``HostInfo`` objects passed to the ``NUMATopologyFilter`` will"},{"line_number":354,"context_line":"have already been reduced to only those hosts which have the required number of"},{"line_number":355,"context_line":"dedicated and shared CPU resources."}],"source_content_type":"text/x-rst","patch_set":27,"id":"ffb9cba7_f4cc6cbd","line":352,"range":{"start_line":351,"start_character":16,"end_line":352,"end_character":77},"in_reply_to":"ffb9cba7_4c493289","updated":"2019-04-25 13:26:45.000000000","message":"Not quite. Say we\u0027ve used the first thread of a number of CPUs on a host (lots of one vcpu instances): the host might be able to provide enough PCPUs but not enough complete cores (CPU and it\u0027s sibling) to satisfy the \u0027require\u0027 thread policy. It\u0027s a corner case but one we\u0027ve to worry about for now","commit_id":"fe68b9cd8098b002bc4c9bc43f0f3e4279701254"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"9ad5fddd07c6d6165e4f3e1eb13047832b044821","unresolved":false,"context_lines":[{"line_number":122,"context_line":"added to track the host CPUs that will be allocated to the ``PCPU`` inventory."},{"line_number":123,"context_line":"This will complement the existing ``[compute] cpu_shared_set`` config option,"},{"line_number":124,"context_line":"which will now be used to track the host CPUs that will be allocated to the"},{"line_number":125,"context_line":"``VCPU`` inventory. These sets must be disjoint sets. If the two values are no"},{"line_number":126,"context_line":"disjoint, we will fail to start with an error. If they are, any host CPUs not"},{"line_number":127,"context_line":"included in the combined set will be considered reserved for the host."},{"line_number":128,"context_line":""}],"source_content_type":"text/x-rst","patch_set":28,"id":"ffb9cba7_627afa88","line":125,"range":{"start_line":125,"start_character":76,"end_line":125,"end_character":78},"updated":"2019-04-25 15:30:03.000000000","message":"not","commit_id":"0fcfb762567ebdc1d5db35f2db75659d4e8d6a04"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"9ad5fddd07c6d6165e4f3e1eb13047832b044821","unresolved":false,"context_lines":[{"line_number":123,"context_line":"This will complement the existing ``[compute] cpu_shared_set`` config option,"},{"line_number":124,"context_line":"which will now be used to track the host CPUs that will be allocated to the"},{"line_number":125,"context_line":"``VCPU`` inventory. These sets must be disjoint sets. If the two values are no"},{"line_number":126,"context_line":"disjoint, we will fail to start with an error. If they are, any host CPUs not"},{"line_number":127,"context_line":"included in the combined set will be considered reserved for the host."},{"line_number":128,"context_line":""},{"line_number":129,"context_line":"The ``Flavor.vcpus`` field will continue to represent the combined number of"},{"line_number":130,"context_line":"CPUs used by the instance, be they dedicated (``PCPU``) or shared (``VCPU``)."}],"source_content_type":"text/x-rst","patch_set":28,"id":"ffb9cba7_42857659","line":127,"range":{"start_line":126,"start_character":47,"end_line":127,"end_character":70},"updated":"2019-04-25 15:30:03.000000000","message":"++\n\nthis is simple and logical. and also what I originally proposed.","commit_id":"0fcfb762567ebdc1d5db35f2db75659d4e8d6a04"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"10577729e092bd0de9521a89fff29bc471949e7a","unresolved":false,"context_lines":[{"line_number":123,"context_line":"This will complement the existing ``[compute] cpu_shared_set`` config option,"},{"line_number":124,"context_line":"which will now be used to track the host CPUs that will be allocated to the"},{"line_number":125,"context_line":"``VCPU`` inventory. These sets must be disjoint sets. If the two values are no"},{"line_number":126,"context_line":"disjoint, we will fail to start with an error. If they are, any host CPUs not"},{"line_number":127,"context_line":"included in the combined set will be considered reserved for the host."},{"line_number":128,"context_line":""},{"line_number":129,"context_line":"The ``Flavor.vcpus`` field will continue to represent the combined number of"},{"line_number":130,"context_line":"CPUs used by the instance, be they dedicated (``PCPU``) or shared (``VCPU``)."}],"source_content_type":"text/x-rst","patch_set":28,"id":"dfbec78f_49bd0167","line":127,"range":{"start_line":126,"start_character":47,"end_line":127,"end_character":70},"in_reply_to":"ffb9cba7_42857659","updated":"2019-05-02 16:25:47.000000000","message":"Yup, I agree, this is plain and simple.","commit_id":"0fcfb762567ebdc1d5db35f2db75659d4e8d6a04"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"10577729e092bd0de9521a89fff29bc471949e7a","unresolved":false,"context_lines":[{"line_number":129,"context_line":"The ``Flavor.vcpus`` field will continue to represent the combined number of"},{"line_number":130,"context_line":"CPUs used by the instance, be they dedicated (``PCPU``) or shared (``VCPU``)."},{"line_number":131,"context_line":"In addition, the ``cpu_allocation_ratio`` will apply only to ``VCPU`` resources"},{"line_number":132,"context_line":"since overcommit for dedicated resources does not make sense."},{"line_number":133,"context_line":""},{"line_number":134,"context_line":".. note::"},{"line_number":135,"context_line":""}],"source_content_type":"text/x-rst","patch_set":28,"id":"dfbec78f_cca1ff97","line":132,"updated":"2019-05-02 16:25:47.000000000","message":"sure, we just need to make sure we document it properly.","commit_id":"0fcfb762567ebdc1d5db35f2db75659d4e8d6a04"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"9ad5fddd07c6d6165e4f3e1eb13047832b044821","unresolved":false,"context_lines":[{"line_number":142,"context_line":""},{"line_number":143,"context_line":"Nova exposes hardware threads as individual \"cores\", meaning a host with, for"},{"line_number":144,"context_line":"example, two Intel Xeon E5-2620 v3 CPUs will report 24 cores - 2 sockets * 6"},{"line_number":145,"context_line":"cores * 2 threads. However, hardware threads aren\u0027t real CPUs as they share"},{"line_number":146,"context_line":"share many components with each other. As a result, processes running on these"},{"line_number":147,"context_line":"cores can suffer from contention. This can be problematic for workloads that"},{"line_number":148,"context_line":"require no contention (think: real-time workloads)."},{"line_number":149,"context_line":""}],"source_content_type":"text/x-rst","patch_set":28,"id":"ffb9cba7_82e7ee40","line":146,"range":{"start_line":145,"start_character":70,"end_line":146,"end_character":5},"updated":"2019-04-25 15:30:03.000000000","message":"share","commit_id":"0fcfb762567ebdc1d5db35f2db75659d4e8d6a04"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"10577729e092bd0de9521a89fff29bc471949e7a","unresolved":false,"context_lines":[{"line_number":165,"context_line":""},{"line_number":166,"context_line":".. note::"},{"line_number":167,"context_line":""},{"line_number":168,"context_line":"    The ``HW_CPU_HYPERTHREADING`` trait will need to be among the traits that"},{"line_number":169,"context_line":"    the virt driver cannot always override, since the operator may want to"},{"line_number":170,"context_line":"    indicate that a single NUMA node on a multi-NUMA-node host is meant for"},{"line_number":171,"context_line":"    guests that tolerate hyperthread siblings as dedicated CPUs."},{"line_number":172,"context_line":""}],"source_content_type":"text/x-rst","patch_set":28,"id":"dfbec78f_6cbc93bb","line":169,"range":{"start_line":168,"start_character":39,"end_line":169,"end_character":43},"updated":"2019-05-02 16:25:47.000000000","message":"I don\u0027t think we have a way at the moment to prevent such things by code, but we can make it a big fat comment in the code itself or make it conditional. tl;dr: implementation detail here.","commit_id":"0fcfb762567ebdc1d5db35f2db75659d4e8d6a04"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"520fe70a2fd7dd1fb5da956ccd33a17af100f92a","unresolved":false,"context_lines":[{"line_number":205,"context_line":"    COMPUTE NODE provider"},{"line_number":206,"context_line":"        PCPU:"},{"line_number":207,"context_line":"            total: 18"},{"line_number":208,"context_line":"            reserved: 2"},{"line_number":209,"context_line":"            min_unit: 1"},{"line_number":210,"context_line":"            max_unit: 16"},{"line_number":211,"context_line":"            step_size: 1"}],"source_content_type":"text/x-rst","patch_set":28,"id":"dfbec78f_b8a93ce0","line":208,"updated":"2019-05-06 11:13:24.000000000","message":"nit: it feels arbitrary that nova report 18 PCPU and 2 reserved PCPU. What is the reason we represent the PCPUs reserved to a host in placement? With the same nova conf we could have the following equally valid inventories in placement as well:\n\n1) PCPU.total\u003d16 PCPU.reserverd\u003d0\n2) PCPU.total\u003d48 PCPU.reserverd\u003d32 (2 for the host 30 for VCPUs.)","commit_id":"0fcfb762567ebdc1d5db35f2db75659d4e8d6a04"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"179196452df607ed0feaba79475a7adbfc9afbf8","unresolved":false,"context_lines":[{"line_number":198,"context_line":"    cpu_dedicated_set\u003d2-17"},{"line_number":199,"context_line":"    cpu_shared_set\u003d18-47"},{"line_number":200,"context_line":""},{"line_number":201,"context_line":"The virt driver will construct a provider tree containing a single resource"},{"line_number":202,"context_line":"provider representing the compute node and report inventory of ``PCPU`` and"},{"line_number":203,"context_line":"``VCPU`` for this single provider accordingly::"},{"line_number":204,"context_line":""},{"line_number":205,"context_line":"    COMPUTE NODE provider"},{"line_number":206,"context_line":"        PCPU:"},{"line_number":207,"context_line":"            total: 18"},{"line_number":208,"context_line":"            reserved: 2"},{"line_number":209,"context_line":"            min_unit: 1"},{"line_number":210,"context_line":"            max_unit: 16"},{"line_number":211,"context_line":"            step_size: 1"},{"line_number":212,"context_line":"            allocation_ratio: 1.0"},{"line_number":213,"context_line":"        VCPU:"},{"line_number":214,"context_line":"            total: 30"},{"line_number":215,"context_line":"            reserved: 0"},{"line_number":216,"context_line":"            min_unit: 1"},{"line_number":217,"context_line":"            max_unit: 30"},{"line_number":218,"context_line":"            step_size: 1"},{"line_number":219,"context_line":"            allocation_ratio: 8.0"},{"line_number":220,"context_line":""},{"line_number":221,"context_line":"Example flavor configurations"},{"line_number":222,"context_line":"-----------------------------"}],"source_content_type":"text/x-rst","patch_set":28,"id":"dfbec78f_b5fbf0be","line":219,"range":{"start_line":201,"start_character":0,"end_line":219,"end_character":33},"updated":"2019-05-15 09:45:16.000000000","message":"so looks like this is still not updated.\n\ni had tought we had settled on only reporting the consumable cpus to placement so in the above example \nthe it shoudl be \n\n        PCPU:\n            total: 16\n            reserved: 0\n            min_unit: 1\n            max_unit: 16\n            step_size: 1\n            allocation_ratio: 1.0\n\n\nbecasue there are 16 cpus in the cpu_dedicated_set.","commit_id":"0fcfb762567ebdc1d5db35f2db75659d4e8d6a04"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"766145d48a6eb39cc7ae62b787a659815af41b8d","unresolved":false,"context_lines":[{"line_number":198,"context_line":"    cpu_dedicated_set\u003d2-17"},{"line_number":199,"context_line":"    cpu_shared_set\u003d18-47"},{"line_number":200,"context_line":""},{"line_number":201,"context_line":"The virt driver will construct a provider tree containing a single resource"},{"line_number":202,"context_line":"provider representing the compute node and report inventory of ``PCPU`` and"},{"line_number":203,"context_line":"``VCPU`` for this single provider accordingly::"},{"line_number":204,"context_line":""},{"line_number":205,"context_line":"    COMPUTE NODE provider"},{"line_number":206,"context_line":"        PCPU:"},{"line_number":207,"context_line":"            total: 18"},{"line_number":208,"context_line":"            reserved: 2"},{"line_number":209,"context_line":"            min_unit: 1"},{"line_number":210,"context_line":"            max_unit: 16"},{"line_number":211,"context_line":"            step_size: 1"},{"line_number":212,"context_line":"            allocation_ratio: 1.0"},{"line_number":213,"context_line":"        VCPU:"},{"line_number":214,"context_line":"            total: 30"},{"line_number":215,"context_line":"            reserved: 0"},{"line_number":216,"context_line":"            min_unit: 1"},{"line_number":217,"context_line":"            max_unit: 30"},{"line_number":218,"context_line":"            step_size: 1"},{"line_number":219,"context_line":"            allocation_ratio: 8.0"},{"line_number":220,"context_line":""},{"line_number":221,"context_line":"Example flavor configurations"},{"line_number":222,"context_line":"-----------------------------"}],"source_content_type":"text/x-rst","patch_set":28,"id":"dfbec78f_7506d822","line":219,"range":{"start_line":201,"start_character":0,"end_line":219,"end_character":33},"in_reply_to":"dfbec78f_b5fbf0be","updated":"2019-05-15 14:32:05.000000000","message":"Done","commit_id":"0fcfb762567ebdc1d5db35f2db75659d4e8d6a04"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"238390350df490080344956158956cd0617ff78d","unresolved":false,"context_lines":[{"line_number":224,"context_line":"Consider the following example flavor/image configurations, in increasing order"},{"line_number":225,"context_line":"of complexity."},{"line_number":226,"context_line":""},{"line_number":227,"context_line":"1) A simple web application server workload requires a couple CPU resources."},{"line_number":228,"context_line":"   The workload does not require any dedicated CPU resources::"},{"line_number":229,"context_line":""},{"line_number":230,"context_line":"       resources:VCPU\u003d2"}],"source_content_type":"text/x-rst","patch_set":28,"id":"ffb9cba7_70a10b46","line":227,"updated":"2019-05-02 02:34:38.000000000","message":"nit: \"a couple of\"? Or better yet, \"two CPU resources\"?","commit_id":"0fcfb762567ebdc1d5db35f2db75659d4e8d6a04"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"766145d48a6eb39cc7ae62b787a659815af41b8d","unresolved":false,"context_lines":[{"line_number":224,"context_line":"Consider the following example flavor/image configurations, in increasing order"},{"line_number":225,"context_line":"of complexity."},{"line_number":226,"context_line":""},{"line_number":227,"context_line":"1) A simple web application server workload requires a couple CPU resources."},{"line_number":228,"context_line":"   The workload does not require any dedicated CPU resources::"},{"line_number":229,"context_line":""},{"line_number":230,"context_line":"       resources:VCPU\u003d2"}],"source_content_type":"text/x-rst","patch_set":28,"id":"dfbec78f_b510d058","line":227,"in_reply_to":"ffb9cba7_70a10b46","updated":"2019-05-15 14:32:05.000000000","message":"Done","commit_id":"0fcfb762567ebdc1d5db35f2db75659d4e8d6a04"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"520fe70a2fd7dd1fb5da956ccd33a17af100f92a","unresolved":false,"context_lines":[{"line_number":241,"context_line":""},{"line_number":242,"context_line":"2) A database server requires 8 CPU resources, and the workload needs dedicated"},{"line_number":243,"context_line":"   CPU resources to minimize effects of other workloads hosted on the same"},{"line_number":244,"context_line":"   hardware. The deployer wishes to ensure that those dedicated CPU resources"},{"line_number":245,"context_line":"   are all served by the same resource provider::"},{"line_number":246,"context_line":""},{"line_number":247,"context_line":"       resources:PCPU\u003d8"},{"line_number":248,"context_line":""}],"source_content_type":"text/x-rst","patch_set":28,"id":"dfbec78f_78d98481","line":245,"range":{"start_line":244,"start_character":13,"end_line":245,"end_character":47},"updated":"2019-05-06 11:13:24.000000000","message":"If the deployer wishes otherwise we would be in trouble supporting it until can_split is implemented in placement. :)","commit_id":"0fcfb762567ebdc1d5db35f2db75659d4e8d6a04"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"766145d48a6eb39cc7ae62b787a659815af41b8d","unresolved":false,"context_lines":[{"line_number":241,"context_line":""},{"line_number":242,"context_line":"2) A database server requires 8 CPU resources, and the workload needs dedicated"},{"line_number":243,"context_line":"   CPU resources to minimize effects of other workloads hosted on the same"},{"line_number":244,"context_line":"   hardware. The deployer wishes to ensure that those dedicated CPU resources"},{"line_number":245,"context_line":"   are all served by the same resource provider::"},{"line_number":246,"context_line":""},{"line_number":247,"context_line":"       resources:PCPU\u003d8"},{"line_number":248,"context_line":""}],"source_content_type":"text/x-rst","patch_set":28,"id":"dfbec78f_3002ae0b","line":245,"range":{"start_line":244,"start_character":13,"end_line":245,"end_character":47},"in_reply_to":"dfbec78f_78d98481","updated":"2019-05-15 14:32:05.000000000","message":"I just removed this","commit_id":"0fcfb762567ebdc1d5db35f2db75659d4e8d6a04"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"520fe70a2fd7dd1fb5da956ccd33a17af100f92a","unresolved":false,"context_lines":[{"line_number":249,"context_line":"   For example::"},{"line_number":250,"context_line":""},{"line_number":251,"context_line":"       $ openstack flavor create --vcpus 8 ... example-2"},{"line_number":252,"context_line":"       $ openstack flavor set --property resources:PCPU\u003d8 example-2"},{"line_number":253,"context_line":""},{"line_number":254,"context_line":"   Alternatively, you can skip the explicit resource request and use the legacy"},{"line_number":255,"context_line":"   ``hw:cpu_policy`` flavor extra spec instead, ::"}],"source_content_type":"text/x-rst","patch_set":28,"id":"dfbec78f_38bc6c04","line":252,"range":{"start_line":252,"start_character":7,"end_line":252,"end_character":67},"updated":"2019-05-06 11:13:24.000000000","message":"Can resources:PCPU\u003d8 be combined with hw:numa_nodes\u003d2 in the flavor? Currently hw:cpu_policy\u003ddedicated and hw:numa_nodes\u003d2 can be combined.","commit_id":"0fcfb762567ebdc1d5db35f2db75659d4e8d6a04"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"766145d48a6eb39cc7ae62b787a659815af41b8d","unresolved":false,"context_lines":[{"line_number":249,"context_line":"   For example::"},{"line_number":250,"context_line":""},{"line_number":251,"context_line":"       $ openstack flavor create --vcpus 8 ... example-2"},{"line_number":252,"context_line":"       $ openstack flavor set --property resources:PCPU\u003d8 example-2"},{"line_number":253,"context_line":""},{"line_number":254,"context_line":"   Alternatively, you can skip the explicit resource request and use the legacy"},{"line_number":255,"context_line":"   ``hw:cpu_policy`` flavor extra spec instead, ::"}],"source_content_type":"text/x-rst","patch_set":28,"id":"dfbec78f_100bea23","line":252,"range":{"start_line":252,"start_character":7,"end_line":252,"end_character":67},"in_reply_to":"dfbec78f_38bc6c04","updated":"2019-05-15 14:32:05.000000000","message":"Yes because we don\u0027t have NUMA-aware scheduling at present","commit_id":"0fcfb762567ebdc1d5db35f2db75659d4e8d6a04"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"238390350df490080344956158956cd0617ff78d","unresolved":false,"context_lines":[{"line_number":252,"context_line":"       $ openstack flavor set --property resources:PCPU\u003d8 example-2"},{"line_number":253,"context_line":""},{"line_number":254,"context_line":"   Alternatively, you can skip the explicit resource request and use the legacy"},{"line_number":255,"context_line":"   ``hw:cpu_policy`` flavor extra spec instead, ::"},{"line_number":256,"context_line":""},{"line_number":257,"context_line":"       $ openstack flavor create --vcpus 8 ... example-2"},{"line_number":258,"context_line":"       $ openstack flavor set --property hw:cpu_policy\u003ddedicated example-2"}],"source_content_type":"text/x-rst","patch_set":28,"id":"ffb9cba7_108a0fbe","line":255,"updated":"2019-05-02 02:34:38.000000000","message":"nit: extra comma?","commit_id":"0fcfb762567ebdc1d5db35f2db75659d4e8d6a04"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"766145d48a6eb39cc7ae62b787a659815af41b8d","unresolved":false,"context_lines":[{"line_number":252,"context_line":"       $ openstack flavor set --property resources:PCPU\u003d8 example-2"},{"line_number":253,"context_line":""},{"line_number":254,"context_line":"   Alternatively, you can skip the explicit resource request and use the legacy"},{"line_number":255,"context_line":"   ``hw:cpu_policy`` flavor extra spec instead, ::"},{"line_number":256,"context_line":""},{"line_number":257,"context_line":"       $ openstack flavor create --vcpus 8 ... example-2"},{"line_number":258,"context_line":"       $ openstack flavor set --property hw:cpu_policy\u003ddedicated example-2"}],"source_content_type":"text/x-rst","patch_set":28,"id":"dfbec78f_b0153e42","line":255,"in_reply_to":"ffb9cba7_108a0fbe","updated":"2019-05-15 14:32:05.000000000","message":"Done","commit_id":"0fcfb762567ebdc1d5db35f2db75659d4e8d6a04"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"9ad5fddd07c6d6165e4f3e1eb13047832b044821","unresolved":false,"context_lines":[{"line_number":259,"context_line":""},{"line_number":260,"context_line":"   In this legacy case, ``hw:cpu_policy`` acts as an alias for"},{"line_number":261,"context_line":"   ``resources\u003dPCPU:${flavor.vcpus}`` as discussed :ref:`later"},{"line_number":262,"context_line":"   \u003ccpu-resources_upgrade\u003e`."},{"line_number":263,"context_line":""},{"line_number":264,"context_line":"3) A virtual network function running a packet-core processing application"},{"line_number":265,"context_line":"   requires 8 CPU resources. The VNF specifies that the dedicated CPUs it"}],"source_content_type":"text/x-rst","patch_set":28,"id":"ffb9cba7_5d0a3b8a","line":262,"updated":"2019-04-25 15:30:03.000000000","message":"I highly recommend deprecating the hw:cpu_policy extra spec and *only* having a single way to represent a request for dedicated CPU resources.","commit_id":"0fcfb762567ebdc1d5db35f2db75659d4e8d6a04"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"295f0d18310b3e01fae4a28a04a33fc9e787e261","unresolved":false,"context_lines":[{"line_number":259,"context_line":""},{"line_number":260,"context_line":"   In this legacy case, ``hw:cpu_policy`` acts as an alias for"},{"line_number":261,"context_line":"   ``resources\u003dPCPU:${flavor.vcpus}`` as discussed :ref:`later"},{"line_number":262,"context_line":"   \u003ccpu-resources_upgrade\u003e`."},{"line_number":263,"context_line":""},{"line_number":264,"context_line":"3) A virtual network function running a packet-core processing application"},{"line_number":265,"context_line":"   requires 8 CPU resources. The VNF specifies that the dedicated CPUs it"}],"source_content_type":"text/x-rst","patch_set":28,"id":"ffb9cba7_848e13ce","line":262,"in_reply_to":"ffb9cba7_5d0a3b8a","updated":"2019-04-25 23:05:41.000000000","message":"Heh, I was going to say the opposite, because it seems pretty confusing to say --vcpus 8 *and* PCPU:8 in order to end up with 8 (as opposed to 16) procs. And if you say --vcpus 8 and PCPU:7, what happens? Error?","commit_id":"0fcfb762567ebdc1d5db35f2db75659d4e8d6a04"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"1fd6c4f2997ce448a0218ff2943ef724080b006a","unresolved":false,"context_lines":[{"line_number":259,"context_line":""},{"line_number":260,"context_line":"   In this legacy case, ``hw:cpu_policy`` acts as an alias for"},{"line_number":261,"context_line":"   ``resources\u003dPCPU:${flavor.vcpus}`` as discussed :ref:`later"},{"line_number":262,"context_line":"   \u003ccpu-resources_upgrade\u003e`."},{"line_number":263,"context_line":""},{"line_number":264,"context_line":"3) A virtual network function running a packet-core processing application"},{"line_number":265,"context_line":"   requires 8 CPU resources. The VNF specifies that the dedicated CPUs it"}],"source_content_type":"text/x-rst","patch_set":28,"id":"ffb9cba7_9aaf4ee2","line":262,"in_reply_to":"ffb9cba7_848e13ce","updated":"2019-04-26 00:59:19.000000000","message":"Not sure I understand you. I\u0027m recommending (and originally wrote in prior revisions of this spec) deprecating the hw:cpu_policy extra spec entirely because with this spec, it\u0027s not needed and the purely quantitative resources:PCPU\u003dX is the way of specifying dedicated CPU resources that aligns with the other resource classes.","commit_id":"0fcfb762567ebdc1d5db35f2db75659d4e8d6a04"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"d8362f5f328e0812becffa56c0b79720c5012f27","unresolved":false,"context_lines":[{"line_number":259,"context_line":""},{"line_number":260,"context_line":"   In this legacy case, ``hw:cpu_policy`` acts as an alias for"},{"line_number":261,"context_line":"   ``resources\u003dPCPU:${flavor.vcpus}`` as discussed :ref:`later"},{"line_number":262,"context_line":"   \u003ccpu-resources_upgrade\u003e`."},{"line_number":263,"context_line":""},{"line_number":264,"context_line":"3) A virtual network function running a packet-core processing application"},{"line_number":265,"context_line":"   requires 8 CPU resources. The VNF specifies that the dedicated CPUs it"}],"source_content_type":"text/x-rst","patch_set":28,"id":"ffb9cba7_44d8ff1c","line":262,"in_reply_to":"ffb9cba7_9222c7a3","updated":"2019-04-27 22:01:19.000000000","message":"we would not need to set resouces:vcpu\u003d0 we just would not generate it at all in the resouce request. \n\nthat said the same is true of flavor.memory_mb which is now just a shortcut for resouces:memort_mb\u003dX\n\nim ok with deprecating hw:cpu_policy in principal provided we have an overlap of at least on cycle for both forms.\n\ni am not ok with setting flavor.vcpu\u003d0 i think its missleading.\n\n\nwhat i think we could both agree on is that the current flavor we use are not what we would design today. i still think there is value in nova provideing and abstration over the resouce requests.\n\ni personally find how the granualr request spec defined the flavor based syntax troubling. especially the fact that operators have specify numbered and un-numbered requrest groups. i think we are leaking too much of placments data model and the internal of the drivers via novas apis. https://specs.openstack.org/openstack/nova-specs/specs/queens/approved/granular-resource-requests.html#syntax-in-flavors\n\nthat said im not sure i have a better solution without signifcantly changing our flavors.","commit_id":"0fcfb762567ebdc1d5db35f2db75659d4e8d6a04"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"2d72e9942f3c52bd4b8c84f94caffe2ee03a5505","unresolved":false,"context_lines":[{"line_number":259,"context_line":""},{"line_number":260,"context_line":"   In this legacy case, ``hw:cpu_policy`` acts as an alias for"},{"line_number":261,"context_line":"   ``resources\u003dPCPU:${flavor.vcpus}`` as discussed :ref:`later"},{"line_number":262,"context_line":"   \u003ccpu-resources_upgrade\u003e`."},{"line_number":263,"context_line":""},{"line_number":264,"context_line":"3) A virtual network function running a packet-core processing application"},{"line_number":265,"context_line":"   requires 8 CPU resources. The VNF specifies that the dedicated CPUs it"}],"source_content_type":"text/x-rst","patch_set":28,"id":"ffb9cba7_9c3c2bc0","line":262,"in_reply_to":"ffb9cba7_9aaf4ee2","updated":"2019-04-26 02:33:05.000000000","message":"Perhaps I misunderstood. I thought by your comment you were advocating for the example on L251-2, which specifies both --vcpus 8 and PCPU:8. Are you in fact advocating for a third option not shown here, where only PCPU:8 is given? Then the flavor.vcpus is what, zero?","commit_id":"0fcfb762567ebdc1d5db35f2db75659d4e8d6a04"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"ab19e7b0b059c44b1b395bd43837ef3d3f2f335a","unresolved":false,"context_lines":[{"line_number":259,"context_line":""},{"line_number":260,"context_line":"   In this legacy case, ``hw:cpu_policy`` acts as an alias for"},{"line_number":261,"context_line":"   ``resources\u003dPCPU:${flavor.vcpus}`` as discussed :ref:`later"},{"line_number":262,"context_line":"   \u003ccpu-resources_upgrade\u003e`."},{"line_number":263,"context_line":""},{"line_number":264,"context_line":"3) A virtual network function running a packet-core processing application"},{"line_number":265,"context_line":"   requires 8 CPU resources. The VNF specifies that the dedicated CPUs it"}],"source_content_type":"text/x-rst","patch_set":28,"id":"ffb9cba7_9222c7a3","line":262,"in_reply_to":"ffb9cba7_9c3c2bc0","updated":"2019-04-26 18:40:14.000000000","message":"\u003e Perhaps I misunderstood. I thought by your comment you were\n \u003e advocating for the example on L251-2, which specifies both --vcpus\n \u003e 8 and PCPU:8. Are you in fact advocating for a third option not\n \u003e shown here, where only PCPU:8 is given? Then the flavor.vcpus is\n \u003e what, zero?\n\nYes, the flavor\u0027s resources:VCPU would be 0. I no longer even think about flavor.vcpus because it\u0027s meaningless and confusing UI fluff once this spec is implemented.\n\nMy primary complaint is with the hw:cpu_policy\u003ddedicated extra spec, though. I consider it to be harmful because it is a \"shortcut\" to saying:\n\n resources:VCPU\u003d0\n resources:PCPU\u003dX\n\nand shortcuts only serve to complicate things and we should instead of be striving to make the request of resources a consistent experience.\n\nWhich is why I think hw:cpu_policy should be deprecated once this spec is implemented.","commit_id":"0fcfb762567ebdc1d5db35f2db75659d4e8d6a04"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"b9c433735644569a4a39d676aecd7a1231816769","unresolved":false,"context_lines":[{"line_number":259,"context_line":""},{"line_number":260,"context_line":"   In this legacy case, ``hw:cpu_policy`` acts as an alias for"},{"line_number":261,"context_line":"   ``resources\u003dPCPU:${flavor.vcpus}`` as discussed :ref:`later"},{"line_number":262,"context_line":"   \u003ccpu-resources_upgrade\u003e`."},{"line_number":263,"context_line":""},{"line_number":264,"context_line":"3) A virtual network function running a packet-core processing application"},{"line_number":265,"context_line":"   requires 8 CPU resources. The VNF specifies that the dedicated CPUs it"}],"source_content_type":"text/x-rst","patch_set":28,"id":"ffb9cba7_45c6d24a","line":262,"in_reply_to":"ffb9cba7_9c3c2bc0","updated":"2019-04-26 09:45:45.000000000","message":"jay is advocating for seting flavor.vcpu\u003d0 yes but i think that is a needless backwards incomaptible change unless we remove vcpu entirely for all virtdrivers and require all flavors to be updated.\n\n\ni fundamentally dont agree with keeping flavor.vcpu and setting it to 0 only when pinning is enabled as flaovr.vcpu\ndoes not mean the number of floating cpus.\n\nthe vcpu resouce class may mean that as defiend above but\nflaovr.vcpu repents the number of logical thread exposed to the guest. which is why i think we should keep it for that meaning which is common across hypervisors.","commit_id":"0fcfb762567ebdc1d5db35f2db75659d4e8d6a04"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"9ad5fddd07c6d6165e4f3e1eb13047832b044821","unresolved":false,"context_lines":[{"line_number":276,"context_line":"           --property trait:HW_CPU_HYPERTHREADING\u003dforbidden example-3"},{"line_number":277,"context_line":""},{"line_number":278,"context_line":"   Alternatively, you can skip the explicit resource request and trait request"},{"line_number":279,"context_line":"   and use the legacy ``hw:cpu_policy`` and ``hw:cpu_thread_policy`` flavor"},{"line_number":280,"context_line":"   extra specs instead::"},{"line_number":281,"context_line":""},{"line_number":282,"context_line":"       $ openstack flavor create --vcpus 8 ... example-3"}],"source_content_type":"text/x-rst","patch_set":28,"id":"ffb9cba7_7df4df86","line":279,"range":{"start_line":279,"start_character":3,"end_line":279,"end_character":67},"updated":"2019-04-25 15:30:03.000000000","message":"highly recommend deprecating these and using the resources+trait way. having multiple ways of doing the same thing breeds confusion, complexity and long-term maintenance headaches.","commit_id":"0fcfb762567ebdc1d5db35f2db75659d4e8d6a04"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"b9c433735644569a4a39d676aecd7a1231816769","unresolved":false,"context_lines":[{"line_number":276,"context_line":"           --property trait:HW_CPU_HYPERTHREADING\u003dforbidden example-3"},{"line_number":277,"context_line":""},{"line_number":278,"context_line":"   Alternatively, you can skip the explicit resource request and trait request"},{"line_number":279,"context_line":"   and use the legacy ``hw:cpu_policy`` and ``hw:cpu_thread_policy`` flavor"},{"line_number":280,"context_line":"   extra specs instead::"},{"line_number":281,"context_line":""},{"line_number":282,"context_line":"       $ openstack flavor create --vcpus 8 ... example-3"}],"source_content_type":"text/x-rst","patch_set":28,"id":"ffb9cba7_65ef56b0","line":279,"range":{"start_line":279,"start_character":3,"end_line":279,"end_character":67},"in_reply_to":"ffb9cba7_7df4df86","updated":"2019-04-26 09:45:45.000000000","message":"we could remove these in the future but i think there is merrit in keeping them for Train to allow at least 1 cycle where there is overlap.\n\nthat said i am concerned that we are leaking atribute of placement via the nova api. i do think there is merrit in auto generating  the placement resouce requests for extra specs so that as the modeling of resouces evovles in placement that flavor do not need to be updated as nova consumes thoes changes.\n\nusing the resources classes directly requires the operator to understand how each virt driver models resources in placement\nand craft there flavor accordingly which is quite a leaky abstraction.\n\nwithout live resize or similar to allow inplace update of the flavor im uncofrtable forceing that upgrade impact when we could avoid it by doing this over two cycles.","commit_id":"0fcfb762567ebdc1d5db35f2db75659d4e8d6a04"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"9ad5fddd07c6d6165e4f3e1eb13047832b044821","unresolved":false,"context_lines":[{"line_number":315,"context_line":"Alternatives"},{"line_number":316,"context_line":"------------"},{"line_number":317,"context_line":""},{"line_number":318,"context_line":"There\u0027s definitely going to be some confusion around ``Flavour.vcpus``"},{"line_number":319,"context_line":"referring to both ``VCPU`` and ``PCPU`` resource classes. To avoid this, we"},{"line_number":320,"context_line":"could call the ``PCPU`` resource class ``CPU_DEDICATED`` to more explicitly"},{"line_number":321,"context_line":"indicate its purpose. However, we will continue to use the ``VCPU`` resource"}],"source_content_type":"text/x-rst","patch_set":28,"id":"ffb9cba7_fd0e8f8b","line":318,"range":{"start_line":318,"start_character":55,"end_line":318,"end_character":62},"updated":"2019-04-25 15:30:03.000000000","message":"Flavor","commit_id":"0fcfb762567ebdc1d5db35f2db75659d4e8d6a04"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"9ad5fddd07c6d6165e4f3e1eb13047832b044821","unresolved":false,"context_lines":[{"line_number":315,"context_line":"Alternatives"},{"line_number":316,"context_line":"------------"},{"line_number":317,"context_line":""},{"line_number":318,"context_line":"There\u0027s definitely going to be some confusion around ``Flavour.vcpus``"},{"line_number":319,"context_line":"referring to both ``VCPU`` and ``PCPU`` resource classes. To avoid this, we"},{"line_number":320,"context_line":"could call the ``PCPU`` resource class ``CPU_DEDICATED`` to more explicitly"},{"line_number":321,"context_line":"indicate its purpose. However, we will continue to use the ``VCPU`` resource"}],"source_content_type":"text/x-rst","patch_set":28,"id":"ffb9cba7_5d7d5be5","line":318,"range":{"start_line":318,"start_character":19,"end_line":318,"end_character":46},"updated":"2019-04-25 15:30:03.000000000","message":"right, which is why I originally recommended deprecating the flavor.vcpus field over time.","commit_id":"0fcfb762567ebdc1d5db35f2db75659d4e8d6a04"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"766145d48a6eb39cc7ae62b787a659815af41b8d","unresolved":false,"context_lines":[{"line_number":315,"context_line":"Alternatives"},{"line_number":316,"context_line":"------------"},{"line_number":317,"context_line":""},{"line_number":318,"context_line":"There\u0027s definitely going to be some confusion around ``Flavour.vcpus``"},{"line_number":319,"context_line":"referring to both ``VCPU`` and ``PCPU`` resource classes. To avoid this, we"},{"line_number":320,"context_line":"could call the ``PCPU`` resource class ``CPU_DEDICATED`` to more explicitly"},{"line_number":321,"context_line":"indicate its purpose. However, we will continue to use the ``VCPU`` resource"}],"source_content_type":"text/x-rst","patch_set":28,"id":"dfbec78f_302b8e83","line":318,"range":{"start_line":318,"start_character":55,"end_line":318,"end_character":62},"in_reply_to":"ffb9cba7_fd0e8f8b","updated":"2019-05-15 14:32:05.000000000","message":"Done","commit_id":"0fcfb762567ebdc1d5db35f2db75659d4e8d6a04"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"295f0d18310b3e01fae4a28a04a33fc9e787e261","unresolved":false,"context_lines":[{"line_number":323,"context_line":"counterpart to the existing ``VCPU`` resource class."},{"line_number":324,"context_line":""},{"line_number":325,"context_line":"Another option is to call the ``PCPU`` resource class ``VCPU_DEDICATED``. This"},{"line_number":326,"context_line":"doubles down on the idea that the term *vCPU* refers to an instance\u0027s CPUs (as"},{"line_number":327,"context_line":"opposed to the host CPUs) but the name is clunky and it\u0027s still somewhat"},{"line_number":328,"context_line":"confusing."},{"line_number":329,"context_line":""}],"source_content_type":"text/x-rst","patch_set":28,"id":"ffb9cba7_c4adeb31","line":326,"updated":"2019-04-25 23:05:41.000000000","message":"that actually helps me understand this whole thing, FWIW","commit_id":"0fcfb762567ebdc1d5db35f2db75659d4e8d6a04"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"72df0a16cbbd2e0d6cd5c36b2da966477adf3a5e","unresolved":false,"context_lines":[{"line_number":330,"context_line":"Data model impact"},{"line_number":331,"context_line":"-----------------"},{"line_number":332,"context_line":""},{"line_number":333,"context_line":"None."},{"line_number":334,"context_line":""},{"line_number":335,"context_line":"REST API impact"},{"line_number":336,"context_line":"---------------"}],"source_content_type":"text/x-rst","patch_set":28,"id":"ffb9cba7_7fefecaf","line":333,"range":{"start_line":333,"start_character":0,"end_line":333,"end_character":5},"updated":"2019-04-25 23:58:39.000000000","message":"I guess you need some of tuning on NUMACell obj? It is easy to update the \u0027cpu_dedicated_set\u0027 to the NUMACell.cpu_set, to ensure the NUMA affinit filter only allocate the pcpu from \u0027cpu_dedicated_set\u0027. But for the shared vcpus, the usage is calculated by \u0027len(NUMACell.cpu_set)\u0027 also, that sounds will go wrong.","commit_id":"0fcfb762567ebdc1d5db35f2db75659d4e8d6a04"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"766145d48a6eb39cc7ae62b787a659815af41b8d","unresolved":false,"context_lines":[{"line_number":330,"context_line":"Data model impact"},{"line_number":331,"context_line":"-----------------"},{"line_number":332,"context_line":""},{"line_number":333,"context_line":"None."},{"line_number":334,"context_line":""},{"line_number":335,"context_line":"REST API impact"},{"line_number":336,"context_line":"---------------"}],"source_content_type":"text/x-rst","patch_set":28,"id":"dfbec78f_4d50e40b","line":333,"range":{"start_line":333,"start_character":0,"end_line":333,"end_character":5},"in_reply_to":"ffb9cba7_4581f28e","updated":"2019-05-15 14:32:05.000000000","message":"Done","commit_id":"0fcfb762567ebdc1d5db35f2db75659d4e8d6a04"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"b9c433735644569a4a39d676aecd7a1231816769","unresolved":false,"context_lines":[{"line_number":330,"context_line":"Data model impact"},{"line_number":331,"context_line":"-----------------"},{"line_number":332,"context_line":""},{"line_number":333,"context_line":"None."},{"line_number":334,"context_line":""},{"line_number":335,"context_line":"REST API impact"},{"line_number":336,"context_line":"---------------"}],"source_content_type":"text/x-rst","patch_set":28,"id":"ffb9cba7_4581f28e","line":333,"range":{"start_line":333,"start_character":0,"end_line":333,"end_character":5},"in_reply_to":"ffb9cba7_7fefecaf","updated":"2019-04-26 09:45:45.000000000","message":"yes we will need to update teh numa topology object with a new field to track both shared and dedicated cpu sets separately.\n\ni think we can leave that to the implementation or a follow up patch to document.\n\nhttps://github.com/openstack/nova/blob/50c5fa3f4d977950fb478fdff78956898aeec60e/nova/objects/numa.py#L49-L59\n\ncpu set currently contains the cpus defined in the vcpu pin set.\n\nto enable migrating the data i would recommend creating two new fields and deleting the existing cpuset filed.\n\nthis will require an online data migration where by each  as compute agent start it will load the old definition and save teh updated from when it updated teh resouces. \n\n\nin the nova.virt.hardware module you will need to support both form at least intially to enable rolling upgrades.","commit_id":"0fcfb762567ebdc1d5db35f2db75659d4e8d6a04"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"9ad5fddd07c6d6165e4f3e1eb13047832b044821","unresolved":false,"context_lines":[{"line_number":397,"context_line":"situations:"},{"line_number":398,"context_line":""},{"line_number":399,"context_line":"* `NUMA, CPU Pinning and \u0027vcpu_pin_set\u0027"},{"line_number":400,"context_line":"  \u003chttps://that.guru/blog/cpu-resources/\u003e`__"},{"line_number":401,"context_line":""},{"line_number":402,"context_line":"Configuration options"},{"line_number":403,"context_line":"~~~~~~~~~~~~~~~~~~~~~"}],"source_content_type":"text/x-rst","patch_set":28,"id":"ffb9cba7_7d505f5e","line":400,"range":{"start_line":400,"start_character":3,"end_line":400,"end_character":39},"updated":"2019-04-25 15:30:03.000000000","message":"great stuff. :)","commit_id":"0fcfb762567ebdc1d5db35f2db75659d4e8d6a04"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"10577729e092bd0de9521a89fff29bc471949e7a","unresolved":false,"context_lines":[{"line_number":402,"context_line":"Configuration options"},{"line_number":403,"context_line":"~~~~~~~~~~~~~~~~~~~~~"},{"line_number":404,"context_line":""},{"line_number":405,"context_line":"We will deprecate the ``vcpu_pin_set`` config option in Train. If both the"},{"line_number":406,"context_line":"``[compute] cpu_dedicated_set`` and ``[compute] cpu_shared_set`` config options"},{"line_number":407,"context_line":"are set in Train, this option will be ignored entirely and ``[compute]"},{"line_number":408,"context_line":"cpu_shared_set`` will be used in place of ``vcpu_pin_set`` to calculate the"}],"source_content_type":"text/x-rst","patch_set":28,"id":"dfbec78f_8cd9c723","line":405,"updated":"2019-05-02 16:25:47.000000000","message":"++","commit_id":"0fcfb762567ebdc1d5db35f2db75659d4e8d6a04"},{"author":{"_account_id":25625,"name":"Tetsuro Nakamura","email":"tetsuro.nakamura.bc@hco.ntt.co.jp","username":"tetsuro0907"},"change_message_id":"37333bba5d8e83140630b64e73a04c8c2bcd87c0","unresolved":false,"context_lines":[{"line_number":406,"context_line":"``[compute] cpu_dedicated_set`` and ``[compute] cpu_shared_set`` config options"},{"line_number":407,"context_line":"are set in Train, this option will be ignored entirely and ``[compute]"},{"line_number":408,"context_line":"cpu_shared_set`` will be used in place of ``vcpu_pin_set`` to calculate the"},{"line_number":409,"context_line":"amount of ``VCPU`` resources to report for each compute node. If the"},{"line_number":410,"context_line":"``[compute] cpu_dedicated_set`` option is not set in Train, we will issue a"},{"line_number":411,"context_line":"warning and fall back to using ``vcpu_pin_set`` as the set of host logical"},{"line_number":412,"context_line":"processors to allocate for ``PCPU`` resources. These CPUs **will not** be"},{"line_number":413,"context_line":"excluded from the list of host logical processors used to generate the"},{"line_number":414,"context_line":"inventory of ``VCPU`` resources since ``vcpu_pin_set`` is useful for all"},{"line_number":415,"context_line":"NUMA-based instances, not just those with pinned CPUs, and we therefore cannot"}],"source_content_type":"text/x-rst","patch_set":28,"id":"ffb9cba7_c985edd0","line":412,"range":{"start_line":409,"start_character":61,"end_line":412,"end_character":46},"updated":"2019-04-27 10:21:10.000000000","message":"When even the vcpu_pin_set is not set, what happens?\n\na) double report all the detected cpus both as PCPUs and VCPUs\nb) report all the detected cpus as VCPUs\n\nIf I remember correctly, the legacy has allowed to deploy CPU pinned instances to hosts without vcpu_pin_set set, so we might reluctantly take (a).\n\nHowever I think there is a possibility that we can take (b) as follows?\n\n* We warn operators that we can no longer at all support pinning instances on hosts where vcpu_pin_set is not set in the release note (and summit) \n* Technically, we block the compute service to start up via the /reshaper method [1] if the new cpu_dedicate_set or even vcpu_pin_set hasn\u0027t been properly set (including cases where even vcpu_pin_set is not set)\n\n[1] https://specs.openstack.org/openstack/nova-specs/specs/rocky/approved/reshape-provider-tree.html","commit_id":"0fcfb762567ebdc1d5db35f2db75659d4e8d6a04"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"766145d48a6eb39cc7ae62b787a659815af41b8d","unresolved":false,"context_lines":[{"line_number":406,"context_line":"``[compute] cpu_dedicated_set`` and ``[compute] cpu_shared_set`` config options"},{"line_number":407,"context_line":"are set in Train, this option will be ignored entirely and ``[compute]"},{"line_number":408,"context_line":"cpu_shared_set`` will be used in place of ``vcpu_pin_set`` to calculate the"},{"line_number":409,"context_line":"amount of ``VCPU`` resources to report for each compute node. If the"},{"line_number":410,"context_line":"``[compute] cpu_dedicated_set`` option is not set in Train, we will issue a"},{"line_number":411,"context_line":"warning and fall back to using ``vcpu_pin_set`` as the set of host logical"},{"line_number":412,"context_line":"processors to allocate for ``PCPU`` resources. These CPUs **will not** be"},{"line_number":413,"context_line":"excluded from the list of host logical processors used to generate the"},{"line_number":414,"context_line":"inventory of ``VCPU`` resources since ``vcpu_pin_set`` is useful for all"},{"line_number":415,"context_line":"NUMA-based instances, not just those with pinned CPUs, and we therefore cannot"}],"source_content_type":"text/x-rst","patch_set":28,"id":"dfbec78f_0d7d0c6d","line":412,"range":{"start_line":409,"start_character":61,"end_line":412,"end_character":46},"in_reply_to":"dfbec78f_1877283d","updated":"2019-05-15 14:32:05.000000000","message":"\u003e Would it be too harsh to refuse to start the compute service until\n \u003e both cpu_dedicated_set and cpu_shared_set are configured properly\n \u003e by the deployer? This would not prevent the in-place upgrade with\n \u003e running workload as these config options always have a valid value\n \u003e depending on the currently running workload.\n \u003e For libivirt I would be possible to write a tool that reads the old\n \u003e vcpu_pin_set config and checks the cpu config of the defined\n \u003e domains on a given compute and emits the value of two new config\n \u003e options.\n\nI think so, yes. Issuing a warning is very different from refusing to start. I\u0027d like to give people at least one cycle to make the necessary changes before throwing them into the fire like this. I also personally think the current strategy should be effective and make this unnecessary.","commit_id":"0fcfb762567ebdc1d5db35f2db75659d4e8d6a04"},{"author":{"_account_id":25625,"name":"Tetsuro Nakamura","email":"tetsuro.nakamura.bc@hco.ntt.co.jp","username":"tetsuro0907"},"change_message_id":"68bb77bb47a68ca2df2ea82a73a51ea102946427","unresolved":false,"context_lines":[{"line_number":406,"context_line":"``[compute] cpu_dedicated_set`` and ``[compute] cpu_shared_set`` config options"},{"line_number":407,"context_line":"are set in Train, this option will be ignored entirely and ``[compute]"},{"line_number":408,"context_line":"cpu_shared_set`` will be used in place of ``vcpu_pin_set`` to calculate the"},{"line_number":409,"context_line":"amount of ``VCPU`` resources to report for each compute node. If the"},{"line_number":410,"context_line":"``[compute] cpu_dedicated_set`` option is not set in Train, we will issue a"},{"line_number":411,"context_line":"warning and fall back to using ``vcpu_pin_set`` as the set of host logical"},{"line_number":412,"context_line":"processors to allocate for ``PCPU`` resources. These CPUs **will not** be"},{"line_number":413,"context_line":"excluded from the list of host logical processors used to generate the"},{"line_number":414,"context_line":"inventory of ``VCPU`` resources since ``vcpu_pin_set`` is useful for all"},{"line_number":415,"context_line":"NUMA-based instances, not just those with pinned CPUs, and we therefore cannot"}],"source_content_type":"text/x-rst","patch_set":28,"id":"ffb9cba7_b4055748","line":412,"range":{"start_line":409,"start_character":61,"end_line":412,"end_character":46},"in_reply_to":"ffb9cba7_0491a747","updated":"2019-04-29 21:06:30.000000000","message":"Ack. Why I preferred option (b) is because I didn\u0027t want to confuse never-CPU-pinning operators who will see the PCPUs inventory appear suddenly in placement from Train, so if we go with option (a), we should warn operators loudly to set cpu_shared_set even if they are not interested in pinning CPUs.","commit_id":"0fcfb762567ebdc1d5db35f2db75659d4e8d6a04"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"520fe70a2fd7dd1fb5da956ccd33a17af100f92a","unresolved":false,"context_lines":[{"line_number":406,"context_line":"``[compute] cpu_dedicated_set`` and ``[compute] cpu_shared_set`` config options"},{"line_number":407,"context_line":"are set in Train, this option will be ignored entirely and ``[compute]"},{"line_number":408,"context_line":"cpu_shared_set`` will be used in place of ``vcpu_pin_set`` to calculate the"},{"line_number":409,"context_line":"amount of ``VCPU`` resources to report for each compute node. If the"},{"line_number":410,"context_line":"``[compute] cpu_dedicated_set`` option is not set in Train, we will issue a"},{"line_number":411,"context_line":"warning and fall back to using ``vcpu_pin_set`` as the set of host logical"},{"line_number":412,"context_line":"processors to allocate for ``PCPU`` resources. These CPUs **will not** be"},{"line_number":413,"context_line":"excluded from the list of host logical processors used to generate the"},{"line_number":414,"context_line":"inventory of ``VCPU`` resources since ``vcpu_pin_set`` is useful for all"},{"line_number":415,"context_line":"NUMA-based instances, not just those with pinned CPUs, and we therefore cannot"}],"source_content_type":"text/x-rst","patch_set":28,"id":"dfbec78f_1877283d","line":412,"range":{"start_line":409,"start_character":61,"end_line":412,"end_character":46},"in_reply_to":"ffb9cba7_b4055748","updated":"2019-05-06 11:13:24.000000000","message":"Would it be too harsh to refuse to start the compute service until both cpu_dedicated_set and cpu_shared_set are configured properly by the deployer? This would not prevent the in-place upgrade with running workload as these config options always have a valid value depending on the currently running workload. \nFor libivirt I would be possible to write a tool that reads the old vcpu_pin_set config and checks the cpu config of the defined domains on a given compute and emits the value of two new config options.","commit_id":"0fcfb762567ebdc1d5db35f2db75659d4e8d6a04"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"d8362f5f328e0812becffa56c0b79720c5012f27","unresolved":false,"context_lines":[{"line_number":406,"context_line":"``[compute] cpu_dedicated_set`` and ``[compute] cpu_shared_set`` config options"},{"line_number":407,"context_line":"are set in Train, this option will be ignored entirely and ``[compute]"},{"line_number":408,"context_line":"cpu_shared_set`` will be used in place of ``vcpu_pin_set`` to calculate the"},{"line_number":409,"context_line":"amount of ``VCPU`` resources to report for each compute node. If the"},{"line_number":410,"context_line":"``[compute] cpu_dedicated_set`` option is not set in Train, we will issue a"},{"line_number":411,"context_line":"warning and fall back to using ``vcpu_pin_set`` as the set of host logical"},{"line_number":412,"context_line":"processors to allocate for ``PCPU`` resources. These CPUs **will not** be"},{"line_number":413,"context_line":"excluded from the list of host logical processors used to generate the"},{"line_number":414,"context_line":"inventory of ``VCPU`` resources since ``vcpu_pin_set`` is useful for all"},{"line_number":415,"context_line":"NUMA-based instances, not just those with pinned CPUs, and we therefore cannot"}],"source_content_type":"text/x-rst","patch_set":28,"id":"ffb9cba7_0491a747","line":412,"range":{"start_line":409,"start_character":61,"end_line":412,"end_character":46},"in_reply_to":"ffb9cba7_c985edd0","updated":"2019-04-27 22:01:19.000000000","message":"vcpu_pin_set effectivly defults to all cpus so we would do option a.\n\ni dont think b is an option especially for edge deployment.\n\non of the things dan smith has asked us to keep in mind is the abligy to do an in place upgrade with running workloads without assuming the ablity to migrate instance to another host. with that constraint in mind b would not be viable, i also dont think its preferable between the two options.","commit_id":"0fcfb762567ebdc1d5db35f2db75659d4e8d6a04"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"10577729e092bd0de9521a89fff29bc471949e7a","unresolved":false,"context_lines":[{"line_number":413,"context_line":"excluded from the list of host logical processors used to generate the"},{"line_number":414,"context_line":"inventory of ``VCPU`` resources since ``vcpu_pin_set`` is useful for all"},{"line_number":415,"context_line":"NUMA-based instances, not just those with pinned CPUs, and we therefore cannot"},{"line_number":416,"context_line":"assume that these will be used exclusively by pinned instances. However, this"},{"line_number":417,"context_line":"double reporting of inventory is not considered an issue as our long-standing"},{"line_number":418,"context_line":"advice has been to use host aggregates to group pinned and unpinned instances."},{"line_number":419,"context_line":"As a result, we should not encounter the two types of instance on the same host"},{"line_number":420,"context_line":"and either the ``VCPU`` or ``PCPU`` inventory will be unused. If host"},{"line_number":421,"context_line":"aggregates are not used and both pinned and unpinned instances exist in the"}],"source_content_type":"text/x-rst","patch_set":28,"id":"dfbec78f_0c34f749","line":418,"range":{"start_line":416,"start_character":63,"end_line":418,"end_character":78},"updated":"2019-05-02 16:25:47.000000000","message":"That\u0027s the key of the solution. We need to make sure we document it properly as a required pre-upgrade requisite if needed (in the release notes at least) but I\u0027m cool with the approach.","commit_id":"0fcfb762567ebdc1d5db35f2db75659d4e8d6a04"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"238390350df490080344956158956cd0617ff78d","unresolved":false,"context_lines":[{"line_number":430,"context_line":"option will be ignored and the virt driver will calculate the ``PCPU``"},{"line_number":431,"context_line":"inventory reserved amount using the following formula::"},{"line_number":432,"context_line":""},{"line_number":433,"context_line":"    (set(all_cpus) - (set(dedicated) | set(shared)))"},{"line_number":434,"context_line":""},{"line_number":435,"context_line":"If the ``[compute] cpu_dedicated_set`` config option is not set, a warning will"},{"line_number":436,"context_line":"be logged stating that ``reserved_host_cpus`` is deprecated and that the"}],"source_content_type":"text/x-rst","patch_set":28,"id":"ffb9cba7_308713b8","line":433,"updated":"2019-05-02 02:34:38.000000000","message":"Maybe should be asked in the initial proposed change section, but if cpu_dedicated_set or cpu_shared_set is unset, does it it mean that it\u0027s empty? This is the only way that I see this calculation working out.","commit_id":"0fcfb762567ebdc1d5db35f2db75659d4e8d6a04"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"179196452df607ed0feaba79475a7adbfc9afbf8","unresolved":false,"context_lines":[{"line_number":427,"context_line":"We will also deprecate the ``reserved_host_cpus`` config option in Train. If"},{"line_number":428,"context_line":"both the ``[compute] cpu_dedicated_set`` and ``[compute] cpu_shared_set``"},{"line_number":429,"context_line":"config options are set in Train, the value of the ``reserved_host_cpus`` config"},{"line_number":430,"context_line":"option will be ignored and the virt driver will calculate the ``PCPU``"},{"line_number":431,"context_line":"inventory reserved amount using the following formula::"},{"line_number":432,"context_line":""},{"line_number":433,"context_line":"    (set(all_cpus) - (set(dedicated) | set(shared)))"},{"line_number":434,"context_line":""},{"line_number":435,"context_line":"If the ``[compute] cpu_dedicated_set`` config option is not set, a warning will"},{"line_number":436,"context_line":"be logged stating that ``reserved_host_cpus`` is deprecated and that the"}],"source_content_type":"text/x-rst","patch_set":28,"id":"dfbec78f_35d6202a","line":433,"range":{"start_line":430,"start_character":22,"end_line":433,"end_character":52},"updated":"2019-05-15 09:45:16.000000000","message":"we shoudl delete this section.\nthe reserved value for the PCPUs should be set to 0\nand we should not report cpus outside of the shard and dedicated sets.","commit_id":"0fcfb762567ebdc1d5db35f2db75659d4e8d6a04"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"766145d48a6eb39cc7ae62b787a659815af41b8d","unresolved":false,"context_lines":[{"line_number":427,"context_line":"We will also deprecate the ``reserved_host_cpus`` config option in Train. If"},{"line_number":428,"context_line":"both the ``[compute] cpu_dedicated_set`` and ``[compute] cpu_shared_set``"},{"line_number":429,"context_line":"config options are set in Train, the value of the ``reserved_host_cpus`` config"},{"line_number":430,"context_line":"option will be ignored and the virt driver will calculate the ``PCPU``"},{"line_number":431,"context_line":"inventory reserved amount using the following formula::"},{"line_number":432,"context_line":""},{"line_number":433,"context_line":"    (set(all_cpus) - (set(dedicated) | set(shared)))"},{"line_number":434,"context_line":""},{"line_number":435,"context_line":"If the ``[compute] cpu_dedicated_set`` config option is not set, a warning will"},{"line_number":436,"context_line":"be logged stating that ``reserved_host_cpus`` is deprecated and that the"}],"source_content_type":"text/x-rst","patch_set":28,"id":"dfbec78f_cd9a94b7","line":433,"range":{"start_line":430,"start_character":22,"end_line":433,"end_character":52},"in_reply_to":"dfbec78f_35d6202a","updated":"2019-05-15 14:32:05.000000000","message":"Done","commit_id":"0fcfb762567ebdc1d5db35f2db75659d4e8d6a04"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"520fe70a2fd7dd1fb5da956ccd33a17af100f92a","unresolved":false,"context_lines":[{"line_number":430,"context_line":"option will be ignored and the virt driver will calculate the ``PCPU``"},{"line_number":431,"context_line":"inventory reserved amount using the following formula::"},{"line_number":432,"context_line":""},{"line_number":433,"context_line":"    (set(all_cpus) - (set(dedicated) | set(shared)))"},{"line_number":434,"context_line":""},{"line_number":435,"context_line":"If the ``[compute] cpu_dedicated_set`` config option is not set, a warning will"},{"line_number":436,"context_line":"be logged stating that ``reserved_host_cpus`` is deprecated and that the"}],"source_content_type":"text/x-rst","patch_set":28,"id":"dfbec78f_78f66492","line":433,"in_reply_to":"ffb9cba7_308713b8","updated":"2019-05-06 11:13:24.000000000","message":"That is also something we have to very well document. Today the default configuration means that the nova-compute can use all PCPUs on a compute host. With the new default config where dedicated and shared both empty it means the nova-compute cannot use any PCPUs from the host.","commit_id":"0fcfb762567ebdc1d5db35f2db75659d4e8d6a04"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"10577729e092bd0de9521a89fff29bc471949e7a","unresolved":false,"context_lines":[{"line_number":442,"context_line":"for both emulator threads and ``VCPU`` resources. Note that because this option"},{"line_number":443,"context_line":"already exists, we can\u0027t rely on its presence to do things like ignore"},{"line_number":444,"context_line":"``vcpu_pin_set``, as outlined previously, and must rely on ``[compute]"},{"line_number":445,"context_line":"cpu_dedicated_set`` instead."},{"line_number":446,"context_line":""},{"line_number":447,"context_line":"Finally, we will change documentation for the ``cpu_allocation_ratio`` config"},{"line_number":448,"context_line":"option to make it abundantly clear that this option ONLY applies to ``VCPU``"}],"source_content_type":"text/x-rst","patch_set":28,"id":"dfbec78f_8c20e7f9","line":445,"updated":"2019-05-02 16:25:47.000000000","message":"... and I\u0027m fine with it, provided it only changes if you use other  cpu_dedicated_set option.","commit_id":"0fcfb762567ebdc1d5db35f2db75659d4e8d6a04"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"10577729e092bd0de9521a89fff29bc471949e7a","unresolved":false,"context_lines":[{"line_number":446,"context_line":""},{"line_number":447,"context_line":"Finally, we will change documentation for the ``cpu_allocation_ratio`` config"},{"line_number":448,"context_line":"option to make it abundantly clear that this option ONLY applies to ``VCPU``"},{"line_number":449,"context_line":"and not ``PCPU`` resources"},{"line_number":450,"context_line":""},{"line_number":451,"context_line":"Flavor extra specs and image metadata properties"},{"line_number":452,"context_line":"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"}],"source_content_type":"text/x-rst","patch_set":28,"id":"dfbec78f_4c78aff7","line":449,"updated":"2019-05-02 16:25:47.000000000","message":"yup","commit_id":"0fcfb762567ebdc1d5db35f2db75659d4e8d6a04"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"520fe70a2fd7dd1fb5da956ccd33a17af100f92a","unresolved":false,"context_lines":[{"line_number":456,"context_line":"scheduler prefilter. For flavors/images using the ``shared`` policy, we will"},{"line_number":457,"context_line":"replace this with the ``resources\u003dVCPU:${flavor.vcpus}`` extra spec, and for"},{"line_number":458,"context_line":"flavors/images using the ``dedicated`` policy, we will replace this with the"},{"line_number":459,"context_line":"``resources\u003dPCPU:${flavor.vcpus}`` extra spec. Note that this is similar,"},{"line_number":460,"context_line":"though not identical, to how we currently translate ``Flavour.vcpus`` into a"},{"line_number":461,"context_line":"placement request for ``VCPU`` resources during scheduling."},{"line_number":462,"context_line":""}],"source_content_type":"text/x-rst","patch_set":28,"id":"dfbec78f_7824240e","line":459,"updated":"2019-05-06 11:13:24.000000000","message":"Will this translation be persisted in the flavor stored inside the instance? I suggest not to. Instead we re-do the translation each time we need to generate the a_c query.","commit_id":"0fcfb762567ebdc1d5db35f2db75659d4e8d6a04"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"766145d48a6eb39cc7ae62b787a659815af41b8d","unresolved":false,"context_lines":[{"line_number":456,"context_line":"scheduler prefilter. For flavors/images using the ``shared`` policy, we will"},{"line_number":457,"context_line":"replace this with the ``resources\u003dVCPU:${flavor.vcpus}`` extra spec, and for"},{"line_number":458,"context_line":"flavors/images using the ``dedicated`` policy, we will replace this with the"},{"line_number":459,"context_line":"``resources\u003dPCPU:${flavor.vcpus}`` extra spec. Note that this is similar,"},{"line_number":460,"context_line":"though not identical, to how we currently translate ``Flavour.vcpus`` into a"},{"line_number":461,"context_line":"placement request for ``VCPU`` resources during scheduling."},{"line_number":462,"context_line":""}],"source_content_type":"text/x-rst","patch_set":28,"id":"dfbec78f_8d901c97","line":459,"in_reply_to":"dfbec78f_7824240e","updated":"2019-05-15 14:32:05.000000000","message":"I hadn\u0027t thought about that. Let\u0027s discuss during implementation :)","commit_id":"0fcfb762567ebdc1d5db35f2db75659d4e8d6a04"},{"author":{"_account_id":25625,"name":"Tetsuro Nakamura","email":"tetsuro.nakamura.bc@hco.ntt.co.jp","username":"tetsuro0907"},"change_message_id":"37333bba5d8e83140630b64e73a04c8c2bcd87c0","unresolved":false,"context_lines":[{"line_number":476,"context_line":"actually using dedicated host CPUs) to the new ``PCPU`` resource class."},{"line_number":477,"context_line":"Furthermore, existing allocations for guests on those compute nodes will need"},{"line_number":478,"context_line":"to have their allocation records updated from the ``VCPU`` to ``PCPU`` resource"},{"line_number":479,"context_line":"class."},{"line_number":480,"context_line":""},{"line_number":481,"context_line":"In addition, for existing compute nodes that have guests which use dedicated"},{"line_number":482,"context_line":"CPUs **and** the ``isolate`` CPU thread policy, the number of allocated"}],"source_content_type":"text/x-rst","patch_set":28,"id":"ffb9cba7_d4590435","line":479,"updated":"2019-04-27 10:21:10.000000000","message":"This is done via the placement /reshaper API, I assume?\n\n[1] https://specs.openstack.org/openstack/nova-specs/specs/rocky/approved/reshape-provider-tree.html","commit_id":"0fcfb762567ebdc1d5db35f2db75659d4e8d6a04"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"10577729e092bd0de9521a89fff29bc471949e7a","unresolved":false,"context_lines":[{"line_number":476,"context_line":"actually using dedicated host CPUs) to the new ``PCPU`` resource class."},{"line_number":477,"context_line":"Furthermore, existing allocations for guests on those compute nodes will need"},{"line_number":478,"context_line":"to have their allocation records updated from the ``VCPU`` to ``PCPU`` resource"},{"line_number":479,"context_line":"class."},{"line_number":480,"context_line":""},{"line_number":481,"context_line":"In addition, for existing compute nodes that have guests which use dedicated"},{"line_number":482,"context_line":"CPUs **and** the ``isolate`` CPU thread policy, the number of allocated"}],"source_content_type":"text/x-rst","patch_set":28,"id":"dfbec78f_cc6b3f1d","line":479,"in_reply_to":"ffb9cba7_d4590435","updated":"2019-05-02 16:25:47.000000000","message":"Yes and it will be done at compute service startup","commit_id":"0fcfb762567ebdc1d5db35f2db75659d4e8d6a04"},{"author":{"_account_id":25625,"name":"Tetsuro Nakamura","email":"tetsuro.nakamura.bc@hco.ntt.co.jp","username":"tetsuro0907"},"change_message_id":"37333bba5d8e83140630b64e73a04c8c2bcd87c0","unresolved":false,"context_lines":[{"line_number":485,"context_line":"result in a 2x the number of ``PCPU``\\ s being reserved (N ``PCPU`` resources"},{"line_number":486,"context_line":"for the instance itself and N ``PCPU`` allocated to avoid another instance"},{"line_number":487,"context_line":"using them). This will be considered legacy behavior and won\u0027t be supported for"},{"line_number":488,"context_line":"new instances."},{"line_number":489,"context_line":""},{"line_number":490,"context_line":"Implementation"},{"line_number":491,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":28,"id":"ffb9cba7_1406bc1e","line":488,"updated":"2019-04-27 10:21:10.000000000","message":"In addition, we could report extra 1 PCPU when emulate_thread_policy\u003disolate, though I don\u0027t think that\u0027s necessary  since that is not the usage of the actual vcpu and later NUMATopology filter can consider that even if placement is not aware of this.","commit_id":"0fcfb762567ebdc1d5db35f2db75659d4e8d6a04"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"d8362f5f328e0812becffa56c0b79720c5012f27","unresolved":false,"context_lines":[{"line_number":485,"context_line":"result in a 2x the number of ``PCPU``\\ s being reserved (N ``PCPU`` resources"},{"line_number":486,"context_line":"for the instance itself and N ``PCPU`` allocated to avoid another instance"},{"line_number":487,"context_line":"using them). This will be considered legacy behavior and won\u0027t be supported for"},{"line_number":488,"context_line":"new instances."},{"line_number":489,"context_line":""},{"line_number":490,"context_line":"Implementation"},{"line_number":491,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":28,"id":"ffb9cba7_441f9fb6","line":488,"in_reply_to":"ffb9cba7_1406bc1e","updated":"2019-04-27 22:01:19.000000000","message":"why would we report 1 extra pcpu\n\n emulate_thread_policy\u003disolate consumes 1 addtional cpu per vm it does not create 1 addtion pcpu on the host.","commit_id":"0fcfb762567ebdc1d5db35f2db75659d4e8d6a04"},{"author":{"_account_id":25625,"name":"Tetsuro Nakamura","email":"tetsuro.nakamura.bc@hco.ntt.co.jp","username":"tetsuro0907"},"change_message_id":"68bb77bb47a68ca2df2ea82a73a51ea102946427","unresolved":false,"context_lines":[{"line_number":485,"context_line":"result in a 2x the number of ``PCPU``\\ s being reserved (N ``PCPU`` resources"},{"line_number":486,"context_line":"for the instance itself and N ``PCPU`` allocated to avoid another instance"},{"line_number":487,"context_line":"using them). This will be considered legacy behavior and won\u0027t be supported for"},{"line_number":488,"context_line":"new instances."},{"line_number":489,"context_line":""},{"line_number":490,"context_line":"Implementation"},{"line_number":491,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":28,"id":"ffb9cba7_1449c389","line":488,"in_reply_to":"ffb9cba7_441f9fb6","updated":"2019-04-29 21:06:30.000000000","message":"Yes. I meant we could report extra 1 PCPU consumption, but on the second look, I realized it is already in L481-484... sorry, ignore me.","commit_id":"0fcfb762567ebdc1d5db35f2db75659d4e8d6a04"}]}
