)]}'
{"specs/train/approved/libvirt-vgpu-numa-affinity.rst":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"91816af8e965ab7f1a8dee7ffc0bfe81b2d7a4dd","unresolved":false,"context_lines":[{"line_number":47,"context_line":""},{"line_number":48,"context_line":"As like PCI NUMA affinity this spec propose reusing the same NUMA affinity"},{"line_number":49,"context_line":"policies (required, preferred and legacy) for vGPUs via a new flavor extra_spec"},{"line_number":50,"context_line":"hw:vgpu_numa_affinity_policy and image metadata property hw_vgpu_numa_affinity."},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"**required**"},{"line_number":53,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"5fc1f717_752d808d","line":50,"range":{"start_line":50,"start_character":0,"end_line":50,"end_character":79},"updated":"2019-04-09 15:52:26.000000000","message":"Before we do this, why do we need both and, if they\u0027re both defined, what is the priority?","commit_id":"eb510f8cc16f6c6c35b452100d69770f05a6afe5"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"fd0245268772ba52723bd9cb2a1b0a601bda3ad8","unresolved":false,"context_lines":[{"line_number":47,"context_line":""},{"line_number":48,"context_line":"As like PCI NUMA affinity this spec propose reusing the same NUMA affinity"},{"line_number":49,"context_line":"policies (required, preferred and legacy) for vGPUs via a new flavor extra_spec"},{"line_number":50,"context_line":"hw:vgpu_numa_affinity_policy and image metadata property hw_vgpu_numa_affinity."},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"**required**"},{"line_number":53,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"5fc1f717_78b7b522","line":50,"range":{"start_line":50,"start_character":0,"end_line":50,"end_character":79},"in_reply_to":"5fc1f717_752d808d","updated":"2019-04-09 16:16:49.000000000","message":"Good question. Maybe just flavors should be supported at the moment, or if we agree on having both images and flavors, flavors be the priority.","commit_id":"eb510f8cc16f6c6c35b452100d69770f05a6afe5"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"91816af8e965ab7f1a8dee7ffc0bfe81b2d7a4dd","unresolved":false,"context_lines":[{"line_number":50,"context_line":"hw:vgpu_numa_affinity_policy and image metadata property hw_vgpu_numa_affinity."},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"**required**"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"  This value will mean that nova will boot instances with vGPU devices *only*"},{"line_number":55,"context_line":"  if at least one of the guest NUMA nodes would fit to the host NUMA node that"},{"line_number":56,"context_line":"  provides the vGPU. That means that if NUMA node information for any physical"}],"source_content_type":"text/x-rst","patch_set":1,"id":"5fc1f717_f5565005","line":53,"updated":"2019-04-09 15:52:26.000000000","message":"Remove these newlines or the below will render as a block comment","commit_id":"eb510f8cc16f6c6c35b452100d69770f05a6afe5"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"fd0245268772ba52723bd9cb2a1b0a601bda3ad8","unresolved":false,"context_lines":[{"line_number":50,"context_line":"hw:vgpu_numa_affinity_policy and image metadata property hw_vgpu_numa_affinity."},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"**required**"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"  This value will mean that nova will boot instances with vGPU devices *only*"},{"line_number":55,"context_line":"  if at least one of the guest NUMA nodes would fit to the host NUMA node that"},{"line_number":56,"context_line":"  provides the vGPU. That means that if NUMA node information for any physical"}],"source_content_type":"text/x-rst","patch_set":1,"id":"5fc1f717_78133502","line":53,"in_reply_to":"5fc1f717_f5565005","updated":"2019-04-09 16:16:49.000000000","message":"Oh shit you\u0027re right.","commit_id":"eb510f8cc16f6c6c35b452100d69770f05a6afe5"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"91816af8e965ab7f1a8dee7ffc0bfe81b2d7a4dd","unresolved":false,"context_lines":[{"line_number":77,"context_line":"  Usually we have information about association of PCI devices like GPUs with"},{"line_number":78,"context_line":"  NUMA nodes. However, some PCI devices do not provide such information. The"},{"line_number":79,"context_line":"  ``legacy`` value will mean that nova will boot instances with vGPU device on"},{"line_number":80,"context_line":"  litterally any host regardless of its NUMA host information. That will also"},{"line_number":81,"context_line":"  help upgrades by providing feature on par between Stein and Train."},{"line_number":82,"context_line":"  In a later cycle, we reserve the right to deprecate this policy for only"},{"line_number":83,"context_line":"  providing the two others."}],"source_content_type":"text/x-rst","patch_set":1,"id":"5fc1f717_b56528e3","line":80,"range":{"start_line":80,"start_character":2,"end_line":80,"end_character":12},"updated":"2019-04-09 15:52:26.000000000","message":"literally","commit_id":"eb510f8cc16f6c6c35b452100d69770f05a6afe5"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"91816af8e965ab7f1a8dee7ffc0bfe81b2d7a4dd","unresolved":false,"context_lines":[{"line_number":71,"context_line":"  host that can provide NUMA affinity. This will work similarly to the existing"},{"line_number":72,"context_line":"  PCI weigher [2]_."},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"**legacy**"},{"line_number":75,"context_line":""},{"line_number":76,"context_line":"  This will be the default NUMA policy for vGPUs."},{"line_number":77,"context_line":"  Usually we have information about association of PCI devices like GPUs with"},{"line_number":78,"context_line":"  NUMA nodes. However, some PCI devices do not provide such information. The"},{"line_number":79,"context_line":"  ``legacy`` value will mean that nova will boot instances with vGPU device on"},{"line_number":80,"context_line":"  litterally any host regardless of its NUMA host information. That will also"},{"line_number":81,"context_line":"  help upgrades by providing feature on par between Stein and Train."},{"line_number":82,"context_line":"  In a later cycle, we reserve the right to deprecate this policy for only"},{"line_number":83,"context_line":"  providing the two others."},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"In addition to the new weigher for the ``preferred`` policy, the"},{"line_number":86,"context_line":"NUMATopologyFilter will be extended to filter hosts based on vGPU request when"}],"source_content_type":"text/x-rst","patch_set":1,"id":"5fc1f717_3588586f","line":83,"range":{"start_line":74,"start_character":0,"end_line":83,"end_character":27},"updated":"2019-04-09 15:52:26.000000000","message":"I\u0027m not sure if this is necessary. If a host doesn\u0027t provide NUMA affinity then that\u0027s likely because it doesn\u0027t have a NUMA topology. As such, preferred would cover this just fine.\n\nThe only reason \u0027legacy\u0027 exists is to work around behavior we have at the moment where the _device_ doesn\u0027t publish NUMA affinity information. I doubt that\u0027s an issue here seeing as don\u0027t do any NUMA\u0027y stuff here at the moment","commit_id":"eb510f8cc16f6c6c35b452100d69770f05a6afe5"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"fd0245268772ba52723bd9cb2a1b0a601bda3ad8","unresolved":false,"context_lines":[{"line_number":71,"context_line":"  host that can provide NUMA affinity. This will work similarly to the existing"},{"line_number":72,"context_line":"  PCI weigher [2]_."},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"**legacy**"},{"line_number":75,"context_line":""},{"line_number":76,"context_line":"  This will be the default NUMA policy for vGPUs."},{"line_number":77,"context_line":"  Usually we have information about association of PCI devices like GPUs with"},{"line_number":78,"context_line":"  NUMA nodes. However, some PCI devices do not provide such information. The"},{"line_number":79,"context_line":"  ``legacy`` value will mean that nova will boot instances with vGPU device on"},{"line_number":80,"context_line":"  litterally any host regardless of its NUMA host information. That will also"},{"line_number":81,"context_line":"  help upgrades by providing feature on par between Stein and Train."},{"line_number":82,"context_line":"  In a later cycle, we reserve the right to deprecate this policy for only"},{"line_number":83,"context_line":"  providing the two others."},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"In addition to the new weigher for the ``preferred`` policy, the"},{"line_number":86,"context_line":"NUMATopologyFilter will be extended to filter hosts based on vGPU request when"}],"source_content_type":"text/x-rst","patch_set":1,"id":"5fc1f717_38d7ed25","line":83,"range":{"start_line":74,"start_character":0,"end_line":83,"end_character":27},"in_reply_to":"5fc1f717_3588586f","updated":"2019-04-09 16:16:49.000000000","message":"Cool, I\u0027ll remove it.","commit_id":"eb510f8cc16f6c6c35b452100d69770f05a6afe5"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"91816af8e965ab7f1a8dee7ffc0bfe81b2d7a4dd","unresolved":false,"context_lines":[{"line_number":86,"context_line":"NUMATopologyFilter will be extended to filter hosts based on vGPU request when"},{"line_number":87,"context_line":"the ``required`` policy is specified. As with the implementation of other NUMA"},{"line_number":88,"context_line":"related features the new vGPU affinity code will be added to"},{"line_number":89,"context_line":"nova/virt/hardware.py so that it can be shared between the scheduler filters"},{"line_number":90,"context_line":"and the compute service."},{"line_number":91,"context_line":""},{"line_number":92,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"5fc1f717_95982cc0","line":89,"range":{"start_line":89,"start_character":0,"end_line":89,"end_character":21},"updated":"2019-04-09 15:52:26.000000000","message":"``literal``","commit_id":"eb510f8cc16f6c6c35b452100d69770f05a6afe5"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"fd0245268772ba52723bd9cb2a1b0a601bda3ad8","unresolved":false,"context_lines":[{"line_number":86,"context_line":"NUMATopologyFilter will be extended to filter hosts based on vGPU request when"},{"line_number":87,"context_line":"the ``required`` policy is specified. As with the implementation of other NUMA"},{"line_number":88,"context_line":"related features the new vGPU affinity code will be added to"},{"line_number":89,"context_line":"nova/virt/hardware.py so that it can be shared between the scheduler filters"},{"line_number":90,"context_line":"and the compute service."},{"line_number":91,"context_line":""},{"line_number":92,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"5fc1f717_98e70113","line":89,"range":{"start_line":89,"start_character":0,"end_line":89,"end_character":21},"in_reply_to":"5fc1f717_95982cc0","updated":"2019-04-09 16:16:49.000000000","message":"Heh, sure ``lord`` !","commit_id":"eb510f8cc16f6c6c35b452100d69770f05a6afe5"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"91816af8e965ab7f1a8dee7ffc0bfe81b2d7a4dd","unresolved":false,"context_lines":[{"line_number":118,"context_line":"that contain Resource Provider UUIDs (and not names) accepting specific"},{"line_number":119,"context_line":"resource class queried amounts, we think it\u0027s better to abstractly provide"},{"line_number":120,"context_line":"a list of resource provider UUIDs as devices tied to a specific NUMA node."},{"line_number":121,"context_line":"This way, until Placement models this relationship, any PCI device that"},{"line_number":122,"context_line":"provides inventories of resources using Placement can reuse this logic and"},{"line_number":123,"context_line":"not exclusively physical GPUs providing ``VGPU`` resources."},{"line_number":124,"context_line":""},{"line_number":125,"context_line":"    fields \u003d {"},{"line_number":126,"context_line":"        \u0027id\u0027: fields.IntegerField(read_only\u003dTrue),"}],"source_content_type":"text/x-rst","patch_set":1,"id":"5fc1f717_75b7c022","line":123,"range":{"start_line":121,"start_character":0,"end_line":123,"end_character":59},"updated":"2019-04-09 15:52:26.000000000","message":"++","commit_id":"eb510f8cc16f6c6c35b452100d69770f05a6afe5"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"91816af8e965ab7f1a8dee7ffc0bfe81b2d7a4dd","unresolved":false,"context_lines":[{"line_number":157,"context_line":"---------------------"},{"line_number":158,"context_line":""},{"line_number":159,"context_line":"None, except they can start using image metadata properties if they want to"},{"line_number":160,"context_line":"explicitely ask for NUMA affinity."},{"line_number":161,"context_line":""},{"line_number":162,"context_line":"Performance Impact"},{"line_number":163,"context_line":"------------------"}],"source_content_type":"text/x-rst","patch_set":1,"id":"5fc1f717_1538bc9d","line":160,"range":{"start_line":160,"start_character":0,"end_line":160,"end_character":11},"updated":"2019-04-09 15:52:26.000000000","message":"explicitly","commit_id":"eb510f8cc16f6c6c35b452100d69770f05a6afe5"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"e3c6e7aa66ed0d795ed047734e10ae315e5bcf8f","unresolved":false,"context_lines":[{"line_number":45,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"As like PCI NUMA affinity this spec propose using kind of the same policies"},{"line_number":49,"context_line":"(required and preferred, legacy being not needed since we don\u0027t already have"},{"line_number":50,"context_line":"NUMA affinity) for vGPUs via a new flavor extra_spec"},{"line_number":51,"context_line":"hw:vgpu_numa_affinity_policy."}],"source_content_type":"text/x-rst","patch_set":2,"id":"3fce034c_eb5a51f1","line":48,"range":{"start_line":48,"start_character":36,"end_line":48,"end_character":43},"updated":"2019-04-16 15:49:16.000000000","message":"proposes","commit_id":"f13770d5fc232e09367941330660ba01ce8f872d"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"cbb2755563e07a3dc2682a25c74d9caa9c7ce102","unresolved":false,"context_lines":[{"line_number":63,"context_line":"  minimal consideration for the NUMA affinity of vGPUs. `nova-compute`"},{"line_number":64,"context_line":"  will attempt a best effort selection of vGPU devices based on NUMA affinity,"},{"line_number":65,"context_line":"  however, if this is not possible then `nova-compute` will fall back to"},{"line_number":66,"context_line":"  affitising the guest to a NUMA node that is not associated with the vGPU."},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"  Note that even though the ``NUMATopologyFilter`` will not consider NUMA"},{"line_number":69,"context_line":"  affinity of the vGPU a new vGPU weigher will be intoduced to prefer"}],"source_content_type":"text/x-rst","patch_set":2,"id":"3fce034c_475fdb71","line":66,"range":{"start_line":66,"start_character":2,"end_line":66,"end_character":12},"updated":"2019-04-16 13:53:16.000000000","message":"affinitizing","commit_id":"f13770d5fc232e09367941330660ba01ce8f872d"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"cbb2755563e07a3dc2682a25c74d9caa9c7ce102","unresolved":false,"context_lines":[{"line_number":66,"context_line":"  affitising the guest to a NUMA node that is not associated with the vGPU."},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"  Note that even though the ``NUMATopologyFilter`` will not consider NUMA"},{"line_number":69,"context_line":"  affinity of the vGPU a new vGPU weigher will be intoduced to prefer"},{"line_number":70,"context_line":"  host that can provide NUMA affinity. This will work similarly to the existing"},{"line_number":71,"context_line":"  PCI weigher [2]_."},{"line_number":72,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"3fce034c_a74f9fbb","line":69,"range":{"start_line":69,"start_character":50,"end_line":69,"end_character":59},"updated":"2019-04-16 13:53:16.000000000","message":"introduced","commit_id":"f13770d5fc232e09367941330660ba01ce8f872d"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"cbb2755563e07a3dc2682a25c74d9caa9c7ce102","unresolved":false,"context_lines":[{"line_number":80,"context_line":"related features the new vGPU affinity code will be added to"},{"line_number":81,"context_line":"``nova/virt/hardware.py`` so that it can be shared between the scheduler"},{"line_number":82,"context_line":"filters and the compute service."},{"line_number":83,"context_line":""},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"To facilitate this new behavior the ``NUMACell`` object will be extended to"},{"line_number":86,"context_line":"track pGPU relationship with NUMA nodes. This is described later in the Data"}],"source_content_type":"text/x-rst","patch_set":2,"id":"3fce034c_47ed9b89","line":83,"updated":"2019-04-16 13:53:16.000000000","message":"What will be the behavior of this flag when we _are_ doing things via placement? Will adding this level of optionality to the request bite us later when placement will want to only return  hosts that actually have the topology required? Or might it significantly complicate our ability to ask placement for candidates based on the two possible layout preferences?","commit_id":"f13770d5fc232e09367941330660ba01ce8f872d"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"e3c6e7aa66ed0d795ed047734e10ae315e5bcf8f","unresolved":false,"context_lines":[{"line_number":80,"context_line":"related features the new vGPU affinity code will be added to"},{"line_number":81,"context_line":"``nova/virt/hardware.py`` so that it can be shared between the scheduler"},{"line_number":82,"context_line":"filters and the compute service."},{"line_number":83,"context_line":""},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"To facilitate this new behavior the ``NUMACell`` object will be extended to"},{"line_number":86,"context_line":"track pGPU relationship with NUMA nodes. This is described later in the Data"}],"source_content_type":"text/x-rst","patch_set":2,"id":"3fce034c_2b2cd900","line":83,"in_reply_to":"3fce034c_47ed9b89","updated":"2019-04-16 15:49:16.000000000","message":"It shouldn\u0027t be hard to translate hw:vgpu_numa_affinity_policy into placement-ese once that concept exists*. And I\u0027m becoming more and more a fan of the idea of simple conf/flavor/image keys that we translate under the covers into complex placement-isms, rather than asking operators to construct raw request groups. So I think this is probably fine.\n\n*Note that, lacking \"preferred traits\", the ``preferred`` value will still have to be handled on the nova side via a weigher.","commit_id":"f13770d5fc232e09367941330660ba01ce8f872d"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"cbb2755563e07a3dc2682a25c74d9caa9c7ce102","unresolved":false,"context_lines":[{"line_number":89,"context_line":"``NUMACell`` object with the Resource Provider UUIDs corresponding to the"},{"line_number":90,"context_line":"physical GPU(s) matching the supported types."},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"Alternatives"},{"line_number":93,"context_line":"------------"},{"line_number":94,"context_line":""},{"line_number":95,"context_line":"If NUMA topologies were modeled in the Placement API along with the"}],"source_content_type":"text/x-rst","patch_set":2,"id":"3fce034c_87f38373","line":92,"updated":"2019-04-16 13:53:16.000000000","message":"Can you add an alternative for \"we could just pick the \u0027preferred\u0027 behavior above as a minimal-effort incremental improvement to get us to the placement-based solution\" ?\n\nAlso, comments on whether or not choosing either preferred or required as the only behavior for the moment would be worth the less effort for a \"legacy\" approach.","commit_id":"f13770d5fc232e09367941330660ba01ce8f872d"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"e3c6e7aa66ed0d795ed047734e10ae315e5bcf8f","unresolved":false,"context_lines":[{"line_number":93,"context_line":"------------"},{"line_number":94,"context_line":""},{"line_number":95,"context_line":"If NUMA topologies were modeled in the Placement API along with the"},{"line_number":96,"context_line":"capabilities to model relationships between resouce request groups and distance"},{"line_number":97,"context_line":"between resouce subtrees we could achieve this goal through this way. Since"},{"line_number":98,"context_line":"there is still a long path to go before we could express this, this spec does"},{"line_number":99,"context_line":"not propose using it for Train but still leave this to be doable in a later"}],"source_content_type":"text/x-rst","patch_set":2,"id":"3fce034c_eb0fb1de","line":96,"range":{"start_line":96,"start_character":44,"end_line":96,"end_character":51},"updated":"2019-04-16 15:49:16.000000000","message":"resource","commit_id":"f13770d5fc232e09367941330660ba01ce8f872d"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"0ad562d5b6ad1aacaac27f41161fa6ebe6ab6438","unresolved":false,"context_lines":[{"line_number":94,"context_line":""},{"line_number":95,"context_line":"If NUMA topologies were modeled in the Placement API along with the"},{"line_number":96,"context_line":"capabilities to model relationships between resouce request groups and distance"},{"line_number":97,"context_line":"between resouce subtrees we could achieve this goal through this way. Since"},{"line_number":98,"context_line":"there is still a long path to go before we could express this, this spec does"},{"line_number":99,"context_line":"not propose using it for Train but still leave this to be doable in a later"},{"line_number":100,"context_line":"release."}],"source_content_type":"text/x-rst","patch_set":2,"id":"3fce034c_c7a66b54","line":97,"range":{"start_line":97,"start_character":8,"end_line":97,"end_character":15},"updated":"2019-04-16 13:56:54.000000000","message":"resource","commit_id":"f13770d5fc232e09367941330660ba01ce8f872d"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"e3c6e7aa66ed0d795ed047734e10ae315e5bcf8f","unresolved":false,"context_lines":[{"line_number":94,"context_line":""},{"line_number":95,"context_line":"If NUMA topologies were modeled in the Placement API along with the"},{"line_number":96,"context_line":"capabilities to model relationships between resouce request groups and distance"},{"line_number":97,"context_line":"between resouce subtrees we could achieve this goal through this way. Since"},{"line_number":98,"context_line":"there is still a long path to go before we could express this, this spec does"},{"line_number":99,"context_line":"not propose using it for Train but still leave this to be doable in a later"},{"line_number":100,"context_line":"release."}],"source_content_type":"text/x-rst","patch_set":2,"id":"3fce034c_4b3285a9","line":97,"range":{"start_line":97,"start_character":52,"end_line":97,"end_character":59},"updated":"2019-04-16 15:49:16.000000000","message":"strike","commit_id":"f13770d5fc232e09367941330660ba01ce8f872d"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"e3c6e7aa66ed0d795ed047734e10ae315e5bcf8f","unresolved":false,"context_lines":[{"line_number":96,"context_line":"capabilities to model relationships between resouce request groups and distance"},{"line_number":97,"context_line":"between resouce subtrees we could achieve this goal through this way. Since"},{"line_number":98,"context_line":"there is still a long path to go before we could express this, this spec does"},{"line_number":99,"context_line":"not propose using it for Train but still leave this to be doable in a later"},{"line_number":100,"context_line":"release."},{"line_number":101,"context_line":""},{"line_number":102,"context_line":"Data model impact"}],"source_content_type":"text/x-rst","patch_set":2,"id":"3fce034c_ab220951","line":99,"range":{"start_line":99,"start_character":41,"end_line":99,"end_character":46},"updated":"2019-04-16 15:49:16.000000000","message":"leaves","commit_id":"f13770d5fc232e09367941330660ba01ce8f872d"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"79d0e0341515efb2037cccefcdeb9af6038ea2cd","unresolved":false,"context_lines":[{"line_number":97,"context_line":"between resouce subtrees we could achieve this goal through this way. Since"},{"line_number":98,"context_line":"there is still a long path to go before we could express this, this spec does"},{"line_number":99,"context_line":"not propose using it for Train but still leave this to be doable in a later"},{"line_number":100,"context_line":"release."},{"line_number":101,"context_line":""},{"line_number":102,"context_line":"Data model impact"},{"line_number":103,"context_line":"-----------------"}],"source_content_type":"text/x-rst","patch_set":2,"id":"5fc1f717_be13c05b","line":100,"updated":"2019-04-09 21:09:24.000000000","message":"Do we have an idea what would be involved in modeling NUMA topologies in placement? Is it just a matter of leveraging the nested resource provider functionality that is already provided?\n\nThen, are the only changes needed in placement to add resource provider affinity in general? (When I say \"only\", I don\u0027t mean that it\u0027s small work.)\n\nI just want to understand what would be involved at a high level, for the future road.","commit_id":"f13770d5fc232e09367941330660ba01ce8f872d"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"0ad562d5b6ad1aacaac27f41161fa6ebe6ab6438","unresolved":false,"context_lines":[{"line_number":97,"context_line":"between resouce subtrees we could achieve this goal through this way. Since"},{"line_number":98,"context_line":"there is still a long path to go before we could express this, this spec does"},{"line_number":99,"context_line":"not propose using it for Train but still leave this to be doable in a later"},{"line_number":100,"context_line":"release."},{"line_number":101,"context_line":""},{"line_number":102,"context_line":"Data model impact"},{"line_number":103,"context_line":"-----------------"}],"source_content_type":"text/x-rst","patch_set":2,"id":"3fce034c_47491b89","line":100,"in_reply_to":"5fc1f717_b66c33d0","updated":"2019-04-16 13:56:54.000000000","message":"FWIW, the more stuff we add in this old way, the more we\u0027re going to have to bake weird things into whatever changes to request groups we\u0027re going to need to maintain compatibility. I\u0027d really hope we\u0027re putting at least as much effort into improving request groups as we are into things like this spec.","commit_id":"f13770d5fc232e09367941330660ba01ce8f872d"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"51d0808e883a9e16f60c00fb93ddb914c39dff0c","unresolved":false,"context_lines":[{"line_number":97,"context_line":"between resouce subtrees we could achieve this goal through this way. Since"},{"line_number":98,"context_line":"there is still a long path to go before we could express this, this spec does"},{"line_number":99,"context_line":"not propose using it for Train but still leave this to be doable in a later"},{"line_number":100,"context_line":"release."},{"line_number":101,"context_line":""},{"line_number":102,"context_line":"Data model impact"},{"line_number":103,"context_line":"-----------------"}],"source_content_type":"text/x-rst","patch_set":2,"id":"5fc1f717_b66c33d0","line":100,"in_reply_to":"5fc1f717_be13c05b","updated":"2019-04-10 16:22:11.000000000","message":"Most of the crux is in https://review.openstack.org/#/c/552924/ but adding PCI devices as children of NUMA nodes is a harder deal as it requires to change a bit of how request groups work at the moment, because for example, we can\u0027t ask at the moment \u0027I want this child RP (the NUMA node) and the child of this child (the pGPU) be on the same subtree for the VGPU and VCPU RC query, but I don\u0027t care for DISK_GB\".","commit_id":"f13770d5fc232e09367941330660ba01ce8f872d"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"e3c6e7aa66ed0d795ed047734e10ae315e5bcf8f","unresolved":false,"context_lines":[{"line_number":112,"context_line":"a list of resource provider UUIDs as devices tied to a specific NUMA node."},{"line_number":113,"context_line":"This way, until Placement models this relationship, any PCI device that"},{"line_number":114,"context_line":"provides inventories of resources using Placement can reuse this logic and"},{"line_number":115,"context_line":"not exclusively physical GPUs providing ``VGPU`` resources."},{"line_number":116,"context_line":""},{"line_number":117,"context_line":"    fields \u003d {"},{"line_number":118,"context_line":"        \u0027id\u0027: fields.IntegerField(read_only\u003dTrue),"}],"source_content_type":"text/x-rst","patch_set":2,"id":"3fce034c_ebdd7142","line":115,"updated":"2019-04-16 15:49:16.000000000","message":"use a :: somewhere around here to get the below to show up formatted the way you intended.","commit_id":"f13770d5fc232e09367941330660ba01ce8f872d"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"e3c6e7aa66ed0d795ed047734e10ae315e5bcf8f","unresolved":false,"context_lines":[{"line_number":124,"context_line":"        \u0027siblings\u0027: fields.ListOfSetsOfIntegersField(),"},{"line_number":125,"context_line":"        \u0027mempages\u0027: fields.ListOfObjectsField(\u0027NUMAPagesTopology\u0027),"},{"line_number":126,"context_line":"        \u0027network_metadata\u0027: fields.ObjectField(\u0027NetworkMetadata\u0027),"},{"line_number":127,"context_line":"        \u0027devices\u0027: fields.ListOfUUIDField(default\u003d[]), # list of RP UUIDs"},{"line_number":128,"context_line":"        }"},{"line_number":129,"context_line":""},{"line_number":130,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"3fce034c_0bba3ddd","line":127,"range":{"start_line":127,"start_character":9,"end_line":127,"end_character":16},"updated":"2019-04-16 15:49:16.000000000","message":"/me bikesheds\n\nto make this clearer, you could name it device_rp_uuids","commit_id":"f13770d5fc232e09367941330660ba01ce8f872d"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"cbb2755563e07a3dc2682a25c74d9caa9c7ce102","unresolved":false,"context_lines":[{"line_number":166,"context_line":"Upgrade impact"},{"line_number":167,"context_line":"--------------"},{"line_number":168,"context_line":""},{"line_number":169,"context_line":"None, since by default we keep no NUMA affinity behaviour."},{"line_number":170,"context_line":""},{"line_number":171,"context_line":""},{"line_number":172,"context_line":"Implementation"}],"source_content_type":"text/x-rst","patch_set":2,"id":"3fce034c_e78847c7","line":169,"updated":"2019-04-16 13:53:16.000000000","message":"But what about right after the upgrade of the controllers? They will be looking for the new field on the numa objects that the old computes might not have updated right? If I immediately add the above key to my flavor, what will be the behavior of the scheduler if no computes have yet reported gpu affinity?","commit_id":"f13770d5fc232e09367941330660ba01ce8f872d"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"b0bfafa11ab6dca659871d4b4cfdd9324e426ca7","unresolved":false,"context_lines":[{"line_number":75,"context_line":"``NUMACell`` object with the Resource Provider UUIDs corresponding to the"},{"line_number":76,"context_line":"physical GPU(s) matching the supported types."},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"Eventually, we will pass allocation candidates to the weighers so the new"},{"line_number":79,"context_line":"vGPU weigher will be able to compare proposed resource provider UUIDs with"},{"line_number":80,"context_line":"the UUIDs that match the supported physical GPUs for this host."},{"line_number":81,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"3fce034c_b16b28b5","line":78,"range":{"start_line":78,"start_character":0,"end_line":78,"end_character":62},"updated":"2019-04-18 13:37:40.000000000","message":"If there are multiple allocation candidates per host which candidate will be passed to the weighers? How we can make sure that if there are two allocation candidates for a host, one with GPU-CPU co-location and one with a GPU and a CPU on different NUMA nodes are returned by placement then we are judging the host by the better allocation candidate in the weigher?","commit_id":"9fe04da9d38dbb44e0a3af9b7544f9e82e54dd5a"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"b0bfafa11ab6dca659871d4b4cfdd9324e426ca7","unresolved":false,"context_lines":[{"line_number":102,"context_line":"a list of resource provider UUIDs as devices tied to a specific NUMA node."},{"line_number":103,"context_line":"This way, until Placement models this relationship, any PCI device that"},{"line_number":104,"context_line":"provides inventories of resources using Placement can reuse this logic and"},{"line_number":105,"context_line":"not exclusively physical GPUs providing ``VGPU`` resources::"},{"line_number":106,"context_line":""},{"line_number":107,"context_line":"    fields \u003d {"},{"line_number":108,"context_line":"        \u0027id\u0027: fields.IntegerField(read_only\u003dTrue),"}],"source_content_type":"text/x-rst","patch_set":5,"id":"3fce034c_b1b00845","line":105,"updated":"2019-04-18 13:37:40.000000000","message":"+1","commit_id":"9fe04da9d38dbb44e0a3af9b7544f9e82e54dd5a"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"38af02d4e4543010ab9b1c93db06e1493a7fc851","unresolved":false,"context_lines":[{"line_number":5,"context_line":" http://creativecommons.org/licenses/by/3.0/legalcode"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":8,"context_line":"NUMA affinity for vGPUs with libvirt"},{"line_number":9,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"https://blueprints.launchpad.net/nova/+spec/libvirt-vgpu-numa-affinity"}],"source_content_type":"text/x-rst","patch_set":6,"id":"9fb8cfa7_f1d7cf22","line":8,"range":{"start_line":8,"start_character":5,"end_line":8,"end_character":13},"updated":"2019-06-04 13:50:37.000000000","message":"Could call this \"soft affinity\" since that\u0027s what the spec describes.","commit_id":"2bab73292f7672f1052e7d0f67e1a1b9ba6468be"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"5fb7e40c4e1e5ea5b4d88ad93a9f727bad4a0fc1","unresolved":false,"context_lines":[{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Given how Memory-Mapped I/O performance can be impacted for any peripheral"},{"line_number":14,"context_line":"device depending on the NUMA placement, it is very important for operators to"},{"line_number":15,"context_line":"get the best return on investiment on graphical hardware, in particular given"},{"line_number":16,"context_line":"their prices."},{"line_number":17,"context_line":"This spec seeks to address this concern by introducing support for numa aware"},{"line_number":18,"context_line":"placement of virtual machines with vGPU request under the control of NUMA"}],"source_content_type":"text/x-rst","patch_set":6,"id":"bfb3d3c7_42065a54","line":15,"range":{"start_line":15,"start_character":23,"end_line":15,"end_character":34},"updated":"2019-05-30 18:41:49.000000000","message":"investment","commit_id":"2bab73292f7672f1052e7d0f67e1a1b9ba6468be"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"5fb7e40c4e1e5ea5b4d88ad93a9f727bad4a0fc1","unresolved":false,"context_lines":[{"line_number":36,"context_line":"with the performance that meets their need and is competitive with other"},{"line_number":37,"context_line":"offerings."},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"As an operator I want to ensure maximum throughput of my hardware and therefore"},{"line_number":40,"context_line":"want to be able to control NUMA affinity of certain resources based on policies"},{"line_number":41,"context_line":"I express in flavors to deliver different SLAs at different price points."},{"line_number":42,"context_line":""},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"Proposed change"}],"source_content_type":"text/x-rst","patch_set":6,"id":"bfb3d3c7_65f608da","line":41,"range":{"start_line":39,"start_character":0,"end_line":41,"end_character":73},"updated":"2019-05-30 18:41:49.000000000","message":"Given the fuzzy best-effort nature of the solution, I don\u0027t think it satisfies this use case. That is, I don\u0027t think you can offer your customer a higher-priced SLA that says, \"We\u0027ll try to get you affinity, but if it doesn\u0027t work out, shrug, you get what you get.\"","commit_id":"2bab73292f7672f1052e7d0f67e1a1b9ba6468be"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"c601f881154df79ff2cccf27e7a35913d8cc0bba","unresolved":false,"context_lines":[{"line_number":36,"context_line":"with the performance that meets their need and is competitive with other"},{"line_number":37,"context_line":"offerings."},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"As an operator I want to ensure maximum throughput of my hardware and therefore"},{"line_number":40,"context_line":"want to be able to control NUMA affinity of certain resources based on policies"},{"line_number":41,"context_line":"I express in flavors to deliver different SLAs at different price points."},{"line_number":42,"context_line":""},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"Proposed change"}],"source_content_type":"text/x-rst","patch_set":6,"id":"9fb8cfa7_1bf3a2a0","line":41,"range":{"start_line":39,"start_character":0,"end_line":41,"end_character":73},"in_reply_to":"9fb8cfa7_1b02c2b5","updated":"2019-06-04 14:05:14.000000000","message":"the original proposal was not best effort and was going to be enforce by the numa toplogy filter","commit_id":"2bab73292f7672f1052e7d0f67e1a1b9ba6468be"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"3dbaf51f074552e84d4bad10915d4f65f14cbba0","unresolved":false,"context_lines":[{"line_number":36,"context_line":"with the performance that meets their need and is competitive with other"},{"line_number":37,"context_line":"offerings."},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"As an operator I want to ensure maximum throughput of my hardware and therefore"},{"line_number":40,"context_line":"want to be able to control NUMA affinity of certain resources based on policies"},{"line_number":41,"context_line":"I express in flavors to deliver different SLAs at different price points."},{"line_number":42,"context_line":""},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"Proposed change"}],"source_content_type":"text/x-rst","patch_set":6,"id":"9fb8cfa7_1b02c2b5","line":41,"range":{"start_line":39,"start_character":0,"end_line":41,"end_character":73},"in_reply_to":"bfb3d3c7_65f608da","updated":"2019-06-04 12:24:02.000000000","message":"Alex has a suggestion (filter) below that could help making this solution SLA friendly.","commit_id":"2bab73292f7672f1052e7d0f67e1a1b9ba6468be"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"add600a0e3fb9b5091a722e794a0467beb8f5980","unresolved":false,"context_lines":[{"line_number":60,"context_line":"  the largest number of vGPU allocation candidates. This will work similarly to"},{"line_number":61,"context_line":"  the existing PCI weigher [2]_."},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"- when claiming, the `nova-compute` service will attempt a best effort"},{"line_number":64,"context_line":"  selection of the NUMA node that is tied to the pGPU that was previously"},{"line_number":65,"context_line":"  allocated by Placement. If not possible, it will use another NUMA node."},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"As with the implementation of other NUMA related features the new vGPU affinity"}],"source_content_type":"text/x-rst","patch_set":6,"id":"bfb3d3c7_92e815b3","line":64,"range":{"start_line":63,"start_character":59,"end_line":64,"end_character":28},"updated":"2019-05-31 06:41:02.000000000","message":"This best effort selection actually can be executed in the scheduler NUMAAffinity filter. In the nova-scheduler, we  choice the host numa node with gpu best effort also.","commit_id":"2bab73292f7672f1052e7d0f67e1a1b9ba6468be"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"e1481e25073f7082ac3f3239354b829b407bacd7","unresolved":false,"context_lines":[{"line_number":60,"context_line":"  the largest number of vGPU allocation candidates. This will work similarly to"},{"line_number":61,"context_line":"  the existing PCI weigher [2]_."},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"- when claiming, the `nova-compute` service will attempt a best effort"},{"line_number":64,"context_line":"  selection of the NUMA node that is tied to the pGPU that was previously"},{"line_number":65,"context_line":"  allocated by Placement. If not possible, it will use another NUMA node."},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"As with the implementation of other NUMA related features the new vGPU affinity"}],"source_content_type":"text/x-rst","patch_set":6,"id":"9fb8cfa7_b53b82cf","line":64,"range":{"start_line":63,"start_character":59,"end_line":64,"end_character":28},"in_reply_to":"9fb8cfa7_5b3efa29","updated":"2019-06-04 14:12:01.000000000","message":"OK so I\u0027m going to -1 then to update the spec to clarify and avoid the confusion in here.","commit_id":"2bab73292f7672f1052e7d0f67e1a1b9ba6468be"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"c601f881154df79ff2cccf27e7a35913d8cc0bba","unresolved":false,"context_lines":[{"line_number":60,"context_line":"  the largest number of vGPU allocation candidates. This will work similarly to"},{"line_number":61,"context_line":"  the existing PCI weigher [2]_."},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"- when claiming, the `nova-compute` service will attempt a best effort"},{"line_number":64,"context_line":"  selection of the NUMA node that is tied to the pGPU that was previously"},{"line_number":65,"context_line":"  allocated by Placement. If not possible, it will use another NUMA node."},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"As with the implementation of other NUMA related features the new vGPU affinity"}],"source_content_type":"text/x-rst","patch_set":6,"id":"9fb8cfa7_5b3efa29","line":64,"range":{"start_line":63,"start_character":59,"end_line":64,"end_character":28},"in_reply_to":"9fb8cfa7_9b0eb2e3","updated":"2019-06-04 14:05:14.000000000","message":"this is what was proposed in v1 and this was made best effor based on dan smith\u0027s feedback on v2\n\nthe orighnal proposal was to supprot the same numa affinity policyes that are supported by pci passthough.\n\nthe numa topology filter would have enforced strict affinity and a weigher would have optiomised best effort affintiy by prefering host that can provide numa affintiy.\n\ndan wanted to avoid adding addtional complexity and ask to reduce the scope to just the minium required for best effort affintiy and wait to leverage placmeent for strict affinity.\n\nwe can certenly do stick affintiy with out placement.\nwe can also remove race condition on claiming numa resouces without placment. but im not sure how viable that is given the current preference to wait for placement so i would perfer not to block this on requiring stict affinity or placement supprot so that we can actully make some progress this cycle.","commit_id":"2bab73292f7672f1052e7d0f67e1a1b9ba6468be"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"3dbaf51f074552e84d4bad10915d4f65f14cbba0","unresolved":false,"context_lines":[{"line_number":60,"context_line":"  the largest number of vGPU allocation candidates. This will work similarly to"},{"line_number":61,"context_line":"  the existing PCI weigher [2]_."},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"- when claiming, the `nova-compute` service will attempt a best effort"},{"line_number":64,"context_line":"  selection of the NUMA node that is tied to the pGPU that was previously"},{"line_number":65,"context_line":"  allocated by Placement. If not possible, it will use another NUMA node."},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"As with the implementation of other NUMA related features the new vGPU affinity"}],"source_content_type":"text/x-rst","patch_set":6,"id":"9fb8cfa7_9b0eb2e3","line":64,"range":{"start_line":63,"start_character":59,"end_line":64,"end_character":28},"in_reply_to":"bfb3d3c7_92e815b3","updated":"2019-06-04 12:24:02.000000000","message":"Following Alex\u0027s suggestion, by doing this in a Filter, you can actually fulfill the SLA use case properly.","commit_id":"2bab73292f7672f1052e7d0f67e1a1b9ba6468be"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"38af02d4e4543010ab9b1c93db06e1493a7fc851","unresolved":false,"context_lines":[{"line_number":61,"context_line":"  the existing PCI weigher [2]_."},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"- when claiming, the `nova-compute` service will attempt a best effort"},{"line_number":64,"context_line":"  selection of the NUMA node that is tied to the pGPU that was previously"},{"line_number":65,"context_line":"  allocated by Placement. If not possible, it will use another NUMA node."},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"As with the implementation of other NUMA related features the new vGPU affinity"},{"line_number":68,"context_line":"code will be added to ``nova/virt/hardware.py`` so that it can be shared"}],"source_content_type":"text/x-rst","patch_set":6,"id":"9fb8cfa7_1154e3c9","line":65,"range":{"start_line":64,"start_character":49,"end_line":65,"end_character":25},"updated":"2019-06-04 13:50:37.000000000","message":"Are we modeling PGPU inventory in placement yet?","commit_id":"2bab73292f7672f1052e7d0f67e1a1b9ba6468be"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"3f083b42b2df513f607da49bee418b9b839f5763","unresolved":false,"context_lines":[{"line_number":61,"context_line":"  the existing PCI weigher [2]_."},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"- when claiming, the `nova-compute` service will attempt a best effort"},{"line_number":64,"context_line":"  selection of the NUMA node that is tied to the pGPU that was previously"},{"line_number":65,"context_line":"  allocated by Placement. If not possible, it will use another NUMA node."},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"As with the implementation of other NUMA related features the new vGPU affinity"},{"line_number":68,"context_line":"code will be added to ``nova/virt/hardware.py`` so that it can be shared"}],"source_content_type":"text/x-rst","patch_set":6,"id":"9fb8cfa7_0684cfb0","line":65,"range":{"start_line":64,"start_character":49,"end_line":65,"end_character":25},"in_reply_to":"9fb8cfa7_06caeb4c","updated":"2019-06-17 14:21:02.000000000","message":"Sorry, was misunderstanding your question.\n\nWe now have an inventory per pGPU now about how many vGPU can be used for this physical device. I\u0027ll just modify the above to make it more clear.","commit_id":"2bab73292f7672f1052e7d0f67e1a1b9ba6468be"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"6a77dc48d17923f6a6c797eb1185a05efe20581d","unresolved":false,"context_lines":[{"line_number":61,"context_line":"  the existing PCI weigher [2]_."},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"- when claiming, the `nova-compute` service will attempt a best effort"},{"line_number":64,"context_line":"  selection of the NUMA node that is tied to the pGPU that was previously"},{"line_number":65,"context_line":"  allocated by Placement. If not possible, it will use another NUMA node."},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"As with the implementation of other NUMA related features the new vGPU affinity"},{"line_number":68,"context_line":"code will be added to ``nova/virt/hardware.py`` so that it can be shared"}],"source_content_type":"text/x-rst","patch_set":6,"id":"9fb8cfa7_3272cdae","line":65,"range":{"start_line":64,"start_character":49,"end_line":65,"end_character":25},"in_reply_to":"9fb8cfa7_1154e3c9","updated":"2019-06-11 15:46:43.000000000","message":"We have pGPU inventories, yes. What we don\u0027t have is NUMA nodes or pGPU/NUMA relationships if you prefer.","commit_id":"2bab73292f7672f1052e7d0f67e1a1b9ba6468be"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"009ccf74361861aad33b7add974b674a65e5cbd8","unresolved":false,"context_lines":[{"line_number":61,"context_line":"  the existing PCI weigher [2]_."},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"- when claiming, the `nova-compute` service will attempt a best effort"},{"line_number":64,"context_line":"  selection of the NUMA node that is tied to the pGPU that was previously"},{"line_number":65,"context_line":"  allocated by Placement. If not possible, it will use another NUMA node."},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"As with the implementation of other NUMA related features the new vGPU affinity"},{"line_number":68,"context_line":"code will be added to ``nova/virt/hardware.py`` so that it can be shared"}],"source_content_type":"text/x-rst","patch_set":6,"id":"9fb8cfa7_06caeb4c","line":65,"range":{"start_line":64,"start_character":49,"end_line":65,"end_character":25},"in_reply_to":"9fb8cfa7_3272cdae","updated":"2019-06-11 19:14:53.000000000","message":"Are you sure about that? I don\u0027t see any PGPU resource class being reported by the libvirt driver, just VGPU inventory being reported on child providers of a PGPU parent (but that parent isn\u0027t reporting PGPU inventory as far as I can tell).\n\nThere is also no PGPU standard resource class:\n\nhttps://github.com/openstack/os-resource-classes/blob/master/os_resource_classes/__init__.py","commit_id":"2bab73292f7672f1052e7d0f67e1a1b9ba6468be"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"38af02d4e4543010ab9b1c93db06e1493a7fc851","unresolved":false,"context_lines":[{"line_number":73,"context_line":"``NUMACell`` object that will be extended. This is described later in the Data"},{"line_number":74,"context_line":"model impact section."},{"line_number":75,"context_line":"Accordingly, the libvirt driver will be modified to populate the extended"},{"line_number":76,"context_line":"``NUMACell`` object with the Resource Provider UUIDs corresponding to the"},{"line_number":77,"context_line":"physical GPU(s) matching the supported types."},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"Preferring hosts that have multiple pGPU allocation candidates"},{"line_number":80,"context_line":"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"}],"source_content_type":"text/x-rst","patch_set":6,"id":"9fb8cfa7_d1040bc9","line":77,"range":{"start_line":76,"start_character":29,"end_line":77,"end_character":45},"updated":"2019-06-04 13:50:37.000000000","message":"If we\u0027re not modeling PGPU inventory in placement I don\u0027t understand how you calculate this. Do you mean taking the VGPU allocation and find it\u0027s parent PGPU and affine to the numa node that way?\n\n(later)\n\nOK I see the \"Choosing a NUMA node whose pGPU attached has a vGPU allocation\" section now.","commit_id":"2bab73292f7672f1052e7d0f67e1a1b9ba6468be"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"6a77dc48d17923f6a6c797eb1185a05efe20581d","unresolved":false,"context_lines":[{"line_number":73,"context_line":"``NUMACell`` object that will be extended. This is described later in the Data"},{"line_number":74,"context_line":"model impact section."},{"line_number":75,"context_line":"Accordingly, the libvirt driver will be modified to populate the extended"},{"line_number":76,"context_line":"``NUMACell`` object with the Resource Provider UUIDs corresponding to the"},{"line_number":77,"context_line":"physical GPU(s) matching the supported types."},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"Preferring hosts that have multiple pGPU allocation candidates"},{"line_number":80,"context_line":"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"}],"source_content_type":"text/x-rst","patch_set":6,"id":"9fb8cfa7_926059d1","line":77,"range":{"start_line":76,"start_character":29,"end_line":77,"end_character":45},"in_reply_to":"9fb8cfa7_d1040bc9","updated":"2019-06-11 15:46:43.000000000","message":"Cool. Lemme know if you need some other way to explain it.","commit_id":"2bab73292f7672f1052e7d0f67e1a1b9ba6468be"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"5fb7e40c4e1e5ea5b4d88ad93a9f727bad4a0fc1","unresolved":false,"context_lines":[{"line_number":88,"context_line":"Practically speaking, we will pass allocation candidates to the weighers so the"},{"line_number":89,"context_line":"new vGPU weigher will be able to compare proposed resource provider UUIDs with"},{"line_number":90,"context_line":"the UUIDs that match the supported physical GPUs for this host and return a"},{"line_number":91,"context_line":"weighed object that will considerate how many of those host physical GPUs are"},{"line_number":92,"context_line":"already candidates."},{"line_number":93,"context_line":""},{"line_number":94,"context_line":"Choosing a NUMA node whose pGPU attached has a vGPU allocation"}],"source_content_type":"text/x-rst","patch_set":6,"id":"bfb3d3c7_8239b2f2","line":91,"range":{"start_line":91,"start_character":25,"end_line":91,"end_character":36},"updated":"2019-05-30 18:41:49.000000000","message":"consider","commit_id":"2bab73292f7672f1052e7d0f67e1a1b9ba6468be"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"38af02d4e4543010ab9b1c93db06e1493a7fc851","unresolved":false,"context_lines":[{"line_number":103,"context_line":"to the claim so that the hardware module can return the correct NUMA node that"},{"line_number":104,"context_line":"matches. That said, we don\u0027t want to have hard affinity yet, so in case the"},{"line_number":105,"context_line":"chosen NUMA node can\u0027t satisfy other NUMA requests, we will forget it and just"},{"line_number":106,"context_line":"use another NUMA node (even if that means no NUMA affinity for the vGPU)."},{"line_number":107,"context_line":"We could later imagine a possible policy on hard affinity that would fail the"},{"line_number":108,"context_line":"claim, but this is not targeted in this spec."},{"line_number":109,"context_line":""}],"source_content_type":"text/x-rst","patch_set":6,"id":"9fb8cfa7_711e7f0d","line":106,"range":{"start_line":106,"start_character":22,"end_line":106,"end_character":73},"updated":"2019-06-04 13:50:37.000000000","message":"Again there goes your SLA.","commit_id":"2bab73292f7672f1052e7d0f67e1a1b9ba6468be"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"38af02d4e4543010ab9b1c93db06e1493a7fc851","unresolved":false,"context_lines":[{"line_number":104,"context_line":"matches. That said, we don\u0027t want to have hard affinity yet, so in case the"},{"line_number":105,"context_line":"chosen NUMA node can\u0027t satisfy other NUMA requests, we will forget it and just"},{"line_number":106,"context_line":"use another NUMA node (even if that means no NUMA affinity for the vGPU)."},{"line_number":107,"context_line":"We could later imagine a possible policy on hard affinity that would fail the"},{"line_number":108,"context_line":"claim, but this is not targeted in this spec."},{"line_number":109,"context_line":""},{"line_number":110,"context_line":"Alternatives"},{"line_number":111,"context_line":"------------"}],"source_content_type":"text/x-rst","patch_set":6,"id":"9fb8cfa7_3118071c","line":108,"range":{"start_line":107,"start_character":0,"end_line":108,"end_character":45},"updated":"2019-06-04 13:50:37.000000000","message":"Then you should remove the SLA use case probably.","commit_id":"2bab73292f7672f1052e7d0f67e1a1b9ba6468be"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"6a77dc48d17923f6a6c797eb1185a05efe20581d","unresolved":false,"context_lines":[{"line_number":104,"context_line":"matches. That said, we don\u0027t want to have hard affinity yet, so in case the"},{"line_number":105,"context_line":"chosen NUMA node can\u0027t satisfy other NUMA requests, we will forget it and just"},{"line_number":106,"context_line":"use another NUMA node (even if that means no NUMA affinity for the vGPU)."},{"line_number":107,"context_line":"We could later imagine a possible policy on hard affinity that would fail the"},{"line_number":108,"context_line":"claim, but this is not targeted in this spec."},{"line_number":109,"context_line":""},{"line_number":110,"context_line":"Alternatives"},{"line_number":111,"context_line":"------------"}],"source_content_type":"text/x-rst","patch_set":6,"id":"9fb8cfa7_72a125f8","line":108,"range":{"start_line":107,"start_character":0,"end_line":108,"end_character":45},"in_reply_to":"9fb8cfa7_3118071c","updated":"2019-06-11 15:46:43.000000000","message":"Done","commit_id":"2bab73292f7672f1052e7d0f67e1a1b9ba6468be"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"5fb7e40c4e1e5ea5b4d88ad93a9f727bad4a0fc1","unresolved":false,"context_lines":[{"line_number":113,"context_line":"If NUMA topologies were modeled in the Placement API along with the"},{"line_number":114,"context_line":"capabilities to model relationships between resource request groups and"},{"line_number":115,"context_line":"distance between resource subtrees we could achieve this goal this way."},{"line_number":116,"context_line":"Since there is still a long path to go before we could express this, this spec"},{"line_number":117,"context_line":"does not propose using it for Train but still leave this to be doable in a"},{"line_number":118,"context_line":"later release."},{"line_number":119,"context_line":""}],"source_content_type":"text/x-rst","patch_set":6,"id":"bfb3d3c7_42109a57","line":116,"range":{"start_line":116,"start_character":15,"end_line":116,"end_character":38},"updated":"2019-05-30 18:41:49.000000000","message":"not so long https://review.opendev.org/#/c/662191/","commit_id":"2bab73292f7672f1052e7d0f67e1a1b9ba6468be"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"c601f881154df79ff2cccf27e7a35913d8cc0bba","unresolved":false,"context_lines":[{"line_number":113,"context_line":"If NUMA topologies were modeled in the Placement API along with the"},{"line_number":114,"context_line":"capabilities to model relationships between resource request groups and"},{"line_number":115,"context_line":"distance between resource subtrees we could achieve this goal this way."},{"line_number":116,"context_line":"Since there is still a long path to go before we could express this, this spec"},{"line_number":117,"context_line":"does not propose using it for Train but still leave this to be doable in a"},{"line_number":118,"context_line":"later release."},{"line_number":119,"context_line":""}],"source_content_type":"text/x-rst","patch_set":6,"id":"9fb8cfa7_5bda7ae9","line":116,"range":{"start_line":116,"start_character":15,"end_line":116,"end_character":38},"in_reply_to":"9fb8cfa7_3b51c6d9","updated":"2019-06-04 14:05:14.000000000","message":"i think it is still unlikely that we will have the plamcenet feature implemented by m2 so that we can actully proposed a version of this spec that depends on it.\n\ni think having a direct dependency on the placement feature will put any numa related feature at risk of not being implemented until U.\n\nthat said it is making progress yes.","commit_id":"2bab73292f7672f1052e7d0f67e1a1b9ba6468be"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"e58cc46a527c006144a1df5c225955bd343a7bc9","unresolved":false,"context_lines":[{"line_number":113,"context_line":"If NUMA topologies were modeled in the Placement API along with the"},{"line_number":114,"context_line":"capabilities to model relationships between resource request groups and"},{"line_number":115,"context_line":"distance between resource subtrees we could achieve this goal this way."},{"line_number":116,"context_line":"Since there is still a long path to go before we could express this, this spec"},{"line_number":117,"context_line":"does not propose using it for Train but still leave this to be doable in a"},{"line_number":118,"context_line":"later release."},{"line_number":119,"context_line":""}],"source_content_type":"text/x-rst","patch_set":6,"id":"9fb8cfa7_3b51c6d9","line":116,"range":{"start_line":116,"start_character":15,"end_line":116,"end_character":38},"in_reply_to":"bfb3d3c7_42109a57","updated":"2019-06-04 12:14:54.000000000","message":"not so long in placement. But somebody needs to enhance nova to be able to use the placement feature. Remember how much work was in nova to use nested RPs from placement.","commit_id":"2bab73292f7672f1052e7d0f67e1a1b9ba6468be"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"38af02d4e4543010ab9b1c93db06e1493a7fc851","unresolved":false,"context_lines":[{"line_number":174,"context_line":"Other deployer impact"},{"line_number":175,"context_line":"---------------------"},{"line_number":176,"context_line":""},{"line_number":177,"context_line":"None, since by default we keep no NUMA affinity behaviour."},{"line_number":178,"context_line":""},{"line_number":179,"context_line":"Developer impact"},{"line_number":180,"context_line":"----------------"}],"source_content_type":"text/x-rst","patch_set":6,"id":"9fb8cfa7_717aff24","line":177,"updated":"2019-06-04 13:50:37.000000000","message":"Would there be a configuration option to control the weigher behavior to pack vs spread? If so, also note that since Stein admins can override the weight value on a per-aggregate basis.","commit_id":"2bab73292f7672f1052e7d0f67e1a1b9ba6468be"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"6a77dc48d17923f6a6c797eb1185a05efe20581d","unresolved":false,"context_lines":[{"line_number":174,"context_line":"Other deployer impact"},{"line_number":175,"context_line":"---------------------"},{"line_number":176,"context_line":""},{"line_number":177,"context_line":"None, since by default we keep no NUMA affinity behaviour."},{"line_number":178,"context_line":""},{"line_number":179,"context_line":"Developer impact"},{"line_number":180,"context_line":"----------------"}],"source_content_type":"text/x-rst","patch_set":6,"id":"9fb8cfa7_12c9c9aa","line":177,"in_reply_to":"9fb8cfa7_717aff24","updated":"2019-06-11 15:46:43.000000000","message":"I wasn\u0027t thinking of it at the moment. Just in case we see a need when implementing, I\u0027d make sure I\u0027ll provide a FUP for this spec if you agree.","commit_id":"2bab73292f7672f1052e7d0f67e1a1b9ba6468be"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"3dbaf51f074552e84d4bad10915d4f65f14cbba0","unresolved":false,"context_lines":[{"line_number":203,"context_line":"Work Items"},{"line_number":204,"context_line":"----------"},{"line_number":205,"context_line":""},{"line_number":206,"context_line":"- Amend the BaseWeigher weigh_objects() method to accept provider_summaries"},{"line_number":207,"context_line":"  as an extra parameter."},{"line_number":208,"context_line":"- Extend host NUMA topology object to track pGPUs"},{"line_number":209,"context_line":"- Extend libvirt driver to populate NUMACell objects with list of RPs that are"}],"source_content_type":"text/x-rst","patch_set":6,"id":"9fb8cfa7_db898a26","line":206,"range":{"start_line":206,"start_character":57,"end_line":206,"end_character":75},"updated":"2019-06-04 12:24:02.000000000","message":"Does provider_summaries enough? Above (L84) you write \"ask the scheduler to weigh hosts on the number of vGPU allocation\ncandidates\" a provider in the summary can contribute to more than one allocation candidate.","commit_id":"2bab73292f7672f1052e7d0f67e1a1b9ba6468be"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"6a77dc48d17923f6a6c797eb1185a05efe20581d","unresolved":false,"context_lines":[{"line_number":203,"context_line":"Work Items"},{"line_number":204,"context_line":"----------"},{"line_number":205,"context_line":""},{"line_number":206,"context_line":"- Amend the BaseWeigher weigh_objects() method to accept provider_summaries"},{"line_number":207,"context_line":"  as an extra parameter."},{"line_number":208,"context_line":"- Extend host NUMA topology object to track pGPUs"},{"line_number":209,"context_line":"- Extend libvirt driver to populate NUMACell objects with list of RPs that are"}],"source_content_type":"text/x-rst","patch_set":6,"id":"9fb8cfa7_f2c3d587","line":206,"range":{"start_line":206,"start_character":57,"end_line":206,"end_character":75},"in_reply_to":"9fb8cfa7_3528f284","updated":"2019-06-11 15:46:43.000000000","message":"Yeah I think it could be enough. Just in case the implementation needs more, I\u0027ll provide a FUP for this spec if you\u0027re okay.","commit_id":"2bab73292f7672f1052e7d0f67e1a1b9ba6468be"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"e1481e25073f7082ac3f3239354b829b407bacd7","unresolved":false,"context_lines":[{"line_number":203,"context_line":"Work Items"},{"line_number":204,"context_line":"----------"},{"line_number":205,"context_line":""},{"line_number":206,"context_line":"- Amend the BaseWeigher weigh_objects() method to accept provider_summaries"},{"line_number":207,"context_line":"  as an extra parameter."},{"line_number":208,"context_line":"- Extend host NUMA topology object to track pGPUs"},{"line_number":209,"context_line":"- Extend libvirt driver to populate NUMACell objects with list of RPs that are"}],"source_content_type":"text/x-rst","patch_set":6,"id":"9fb8cfa7_3528f284","line":206,"range":{"start_line":206,"start_character":57,"end_line":206,"end_character":75},"in_reply_to":"9fb8cfa7_5b24bac6","updated":"2019-06-04 14:12:01.000000000","message":"The weigher interface already gets the RequestSpec and the HostState but not the provider summaries or allocation candidates. I\u0027d rather not pass everything possible to the new weigher if it\u0027s not going to use everything (allocation candidates in this case), so if provider summaries is sufficient then just add that to the interface (since all weighers will have to be updated for that interface change, both in and out of tree).","commit_id":"2bab73292f7672f1052e7d0f67e1a1b9ba6468be"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"c601f881154df79ff2cccf27e7a35913d8cc0bba","unresolved":false,"context_lines":[{"line_number":203,"context_line":"Work Items"},{"line_number":204,"context_line":"----------"},{"line_number":205,"context_line":""},{"line_number":206,"context_line":"- Amend the BaseWeigher weigh_objects() method to accept provider_summaries"},{"line_number":207,"context_line":"  as an extra parameter."},{"line_number":208,"context_line":"- Extend host NUMA topology object to track pGPUs"},{"line_number":209,"context_line":"- Extend libvirt driver to populate NUMACell objects with list of RPs that are"}],"source_content_type":"text/x-rst","patch_set":6,"id":"9fb8cfa7_5b24bac6","line":206,"range":{"start_line":206,"start_character":57,"end_line":206,"end_character":75},"in_reply_to":"9fb8cfa7_db898a26","updated":"2019-06-04 14:05:14.000000000","message":"ideally we would be passed the set of allcoation candiates and the request_spec that was used to query placement\ne.g. the modified one that is created by the request filters\nprior to calling placement.\n\n\nthe providor summaries my be enough for this feature but in general i dont think it would be for other allocation candiate based weighers.","commit_id":"2bab73292f7672f1052e7d0f67e1a1b9ba6468be"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"38af02d4e4543010ab9b1c93db06e1493a7fc851","unresolved":false,"context_lines":[{"line_number":228,"context_line":"Documentation Impact"},{"line_number":229,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":230,"context_line":""},{"line_number":231,"context_line":"None."},{"line_number":232,"context_line":""},{"line_number":233,"context_line":"References"},{"line_number":234,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":6,"id":"9fb8cfa7_51a25b9c","line":231,"updated":"2019-06-04 13:50:37.000000000","message":"You\u0027d document the new weigher:\n\nhttps://docs.openstack.org/nova/latest/admin/configuration/schedulers.html#weights\n\nhttps://docs.openstack.org/nova/latest/user/filter-scheduler.html#weights\n\nAnd probably worthwhile to mention it in the vGPU docs:\n\nhttps://docs.openstack.org/nova/latest/admin/virtual-gpu.html","commit_id":"2bab73292f7672f1052e7d0f67e1a1b9ba6468be"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"6a77dc48d17923f6a6c797eb1185a05efe20581d","unresolved":false,"context_lines":[{"line_number":228,"context_line":"Documentation Impact"},{"line_number":229,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":230,"context_line":""},{"line_number":231,"context_line":"None."},{"line_number":232,"context_line":""},{"line_number":233,"context_line":"References"},{"line_number":234,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":6,"id":"9fb8cfa7_d24b3128","line":231,"in_reply_to":"9fb8cfa7_51a25b9c","updated":"2019-06-11 15:46:43.000000000","message":"Good point.","commit_id":"2bab73292f7672f1052e7d0f67e1a1b9ba6468be"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"009ccf74361861aad33b7add974b674a65e5cbd8","unresolved":false,"context_lines":[{"line_number":57,"context_line":""},{"line_number":58,"context_line":"- when claiming, the `nova-compute` service will attempt a *best effort*"},{"line_number":59,"context_line":"  selection of the NUMA node that is tied to the pGPU that was previously"},{"line_number":60,"context_line":"  allocated by Placement. If not possible, it will use another NUMA node."},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"As with the implementation of other NUMA related features the new vGPU affinity"},{"line_number":63,"context_line":"code will be added to ``nova/virt/hardware.py`` so that it can be shared"}],"source_content_type":"text/x-rst","patch_set":7,"id":"9fb8cfa7_86e33bd9","line":60,"range":{"start_line":60,"start_character":2,"end_line":60,"end_character":24},"updated":"2019-06-11 19:14:53.000000000","message":"Going back to PS6, the libvirt driver isn\u0027t actually reporting a resource class called PGPU, and that standard resource class does not exist:\n\nhttps://github.com/openstack/os-resource-classes/blob/master/os_resource_classes/__init__.py\n\nBut that\u0027s not what we\u0027re talking about here, correct? Just VGPU inventory on the child providers.","commit_id":"472e10f66d7a32f6e15bd71871dcfe2094dd7033"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"3f083b42b2df513f607da49bee418b9b839f5763","unresolved":false,"context_lines":[{"line_number":57,"context_line":""},{"line_number":58,"context_line":"- when claiming, the `nova-compute` service will attempt a *best effort*"},{"line_number":59,"context_line":"  selection of the NUMA node that is tied to the pGPU that was previously"},{"line_number":60,"context_line":"  allocated by Placement. If not possible, it will use another NUMA node."},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"As with the implementation of other NUMA related features the new vGPU affinity"},{"line_number":63,"context_line":"code will be added to ``nova/virt/hardware.py`` so that it can be shared"}],"source_content_type":"text/x-rst","patch_set":7,"id":"9fb8cfa7_e6af3b29","line":60,"range":{"start_line":60,"start_character":2,"end_line":60,"end_character":24},"in_reply_to":"9fb8cfa7_86e33bd9","updated":"2019-06-17 14:21:02.000000000","message":"Yeah, will modify this.","commit_id":"472e10f66d7a32f6e15bd71871dcfe2094dd7033"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"009ccf74361861aad33b7add974b674a65e5cbd8","unresolved":false,"context_lines":[{"line_number":94,"context_line":"For that reason, when a consumer allocation is made for a VGPU, we want to"},{"line_number":95,"context_line":"ideally elect the NUMA node where the physical GPU is connected to and not"},{"line_number":96,"context_line":"blindly pick any NUMA node regardless of the vGPU allocation."},{"line_number":97,"context_line":"Consequently, we want to pass the consumer allocation for the instance UUID"},{"line_number":98,"context_line":"to the claim so that the hardware module can return the correct NUMA node that"},{"line_number":99,"context_line":"matches. That said, we don\u0027t want to have hard affinity yet, so in case the"},{"line_number":100,"context_line":"chosen NUMA node can\u0027t satisfy other NUMA requests, we will forget it and just"},{"line_number":101,"context_line":"use another NUMA node (even if that means no NUMA affinity for the vGPU)."},{"line_number":102,"context_line":"We could later imagine a possible policy on hard affinity that would fail the"}],"source_content_type":"text/x-rst","patch_set":7,"id":"9fb8cfa7_c6edb3b7","line":99,"range":{"start_line":97,"start_character":0,"end_line":99,"end_character":8},"updated":"2019-06-11 19:14:53.000000000","message":"So this will be a change to the ResourceTracker instance_claim right? Alternatively we could have passed down a limit like we do for numa_topology, right? The only problem with that is the scheduler filters populate the SchedulerLimits object, not weighers. Although it looks like that\u0027s just on the HostState.limits dict which the weigher would have access to. Are you proposing to re-calculate the VGPU allocation from compute for the claim rather than pass down limits?","commit_id":"472e10f66d7a32f6e15bd71871dcfe2094dd7033"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"3f083b42b2df513f607da49bee418b9b839f5763","unresolved":false,"context_lines":[{"line_number":94,"context_line":"For that reason, when a consumer allocation is made for a VGPU, we want to"},{"line_number":95,"context_line":"ideally elect the NUMA node where the physical GPU is connected to and not"},{"line_number":96,"context_line":"blindly pick any NUMA node regardless of the vGPU allocation."},{"line_number":97,"context_line":"Consequently, we want to pass the consumer allocation for the instance UUID"},{"line_number":98,"context_line":"to the claim so that the hardware module can return the correct NUMA node that"},{"line_number":99,"context_line":"matches. That said, we don\u0027t want to have hard affinity yet, so in case the"},{"line_number":100,"context_line":"chosen NUMA node can\u0027t satisfy other NUMA requests, we will forget it and just"},{"line_number":101,"context_line":"use another NUMA node (even if that means no NUMA affinity for the vGPU)."},{"line_number":102,"context_line":"We could later imagine a possible policy on hard affinity that would fail the"}],"source_content_type":"text/x-rst","patch_set":7,"id":"9fb8cfa7_2997643d","line":99,"range":{"start_line":97,"start_character":0,"end_line":99,"end_character":8},"in_reply_to":"9fb8cfa7_a6faff3f","updated":"2019-06-17 14:21:02.000000000","message":"The weigher is just not really needed actually. It will just try to either spread or stack vGPU resources between computes.\n\nWhat\u0027s really needed for trying to get a soft affinity will be the instance claim : we will pass the vGPU allocation to the virt.hardware module so the module will know which pGPU is used and then it will try to use the related NUMA node like already done with CPU pinning on https://github.com/openstack/nova/blob/787a9f2/nova/virt/hardware.py#L1770","commit_id":"472e10f66d7a32f6e15bd71871dcfe2094dd7033"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"f0726f82874f237ccb8798162ecb56834083c637","unresolved":false,"context_lines":[{"line_number":94,"context_line":"For that reason, when a consumer allocation is made for a VGPU, we want to"},{"line_number":95,"context_line":"ideally elect the NUMA node where the physical GPU is connected to and not"},{"line_number":96,"context_line":"blindly pick any NUMA node regardless of the vGPU allocation."},{"line_number":97,"context_line":"Consequently, we want to pass the consumer allocation for the instance UUID"},{"line_number":98,"context_line":"to the claim so that the hardware module can return the correct NUMA node that"},{"line_number":99,"context_line":"matches. That said, we don\u0027t want to have hard affinity yet, so in case the"},{"line_number":100,"context_line":"chosen NUMA node can\u0027t satisfy other NUMA requests, we will forget it and just"},{"line_number":101,"context_line":"use another NUMA node (even if that means no NUMA affinity for the vGPU)."},{"line_number":102,"context_line":"We could later imagine a possible policy on hard affinity that would fail the"}],"source_content_type":"text/x-rst","patch_set":7,"id":"9fb8cfa7_a6faff3f","line":99,"range":{"start_line":97,"start_character":0,"end_line":99,"end_character":8},"in_reply_to":"9fb8cfa7_c6edb3b7","updated":"2019-06-11 19:18:49.000000000","message":"I\u0027m also thinking about how if you disable some filters, their resource keys aren\u0027t in the limits dict and we don\u0027t claim on them, but if you\u0027re not going to use the limits dict, regardless of scheduler configuration (maybe I\u0027m not using your weigher) the compute claim is still going to use the VGPU allocations, right?","commit_id":"472e10f66d7a32f6e15bd71871dcfe2094dd7033"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"009ccf74361861aad33b7add974b674a65e5cbd8","unresolved":false,"context_lines":[{"line_number":169,"context_line":"Other deployer impact"},{"line_number":170,"context_line":"---------------------"},{"line_number":171,"context_line":""},{"line_number":172,"context_line":"None, since by default we keep no NUMA affinity behaviour."},{"line_number":173,"context_line":""},{"line_number":174,"context_line":"Developer impact"},{"line_number":175,"context_line":"----------------"}],"source_content_type":"text/x-rst","patch_set":7,"id":"9fb8cfa7_c64933b7","line":172,"updated":"2019-06-11 19:14:53.000000000","message":"(2:13:12 PM) mriedem: dansmith: would you see a use for a weigher config option for the vgpu/numa affinity weigher in sylvain\u0027s spec? https://review.opendev.org/#/c/650963/\n(2:13:22 PM) mriedem: since we have config options to control all other weighers\n(2:13:38 PM) dansmith: just in general? I mean, I would expect all weighers to be controllable like that\n(2:13:49 PM) mriedem: in general yes\n(2:14:03 PM) dansmith: unless it was something SUPER airtight like the failed computes weigher","commit_id":"472e10f66d7a32f6e15bd71871dcfe2094dd7033"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"73b6344bbf12a9e038f99f154feab0e2ed726416","unresolved":false,"context_lines":[{"line_number":169,"context_line":"Other deployer impact"},{"line_number":170,"context_line":"---------------------"},{"line_number":171,"context_line":""},{"line_number":172,"context_line":"None, since by default we keep no NUMA affinity behaviour."},{"line_number":173,"context_line":""},{"line_number":174,"context_line":"Developer impact"},{"line_number":175,"context_line":"----------------"}],"source_content_type":"text/x-rst","patch_set":7,"id":"9fb8cfa7_e6db17ea","line":172,"in_reply_to":"9fb8cfa7_c64933b7","updated":"2019-06-11 19:16:09.000000000","message":"The last line about the failed computes weigher was sarcasm, meant to highlight why we *would* want a tunable for every weigher.","commit_id":"472e10f66d7a32f6e15bd71871dcfe2094dd7033"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"1e624521a95700012e377e70a77646e5c7477878","unresolved":false,"context_lines":[{"line_number":30,"context_line":"Use Cases"},{"line_number":31,"context_line":"---------"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"As an operator I wish to support my users to deploy GPU accelerated workloads"},{"line_number":35,"context_line":"with the performance that meets their need and is competitive with other"},{"line_number":36,"context_line":"offerings."}],"source_content_type":"text/x-rst","patch_set":8,"id":"9fb8cfa7_c4054f16","line":33,"updated":"2019-06-17 15:36:10.000000000","message":"Extra line here","commit_id":"a69a56d77267176b4021034fca70dab89ffd5029"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"546d844f7c3163cfc7f3089e6b7eddc17872f2f4","unresolved":false,"context_lines":[{"line_number":30,"context_line":"Use Cases"},{"line_number":31,"context_line":"---------"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"As an operator I wish to support my users to deploy GPU accelerated workloads"},{"line_number":35,"context_line":"with the performance that meets their need and is competitive with other"},{"line_number":36,"context_line":"offerings."}],"source_content_type":"text/x-rst","patch_set":8,"id":"7faddb67_06a4da07","line":33,"in_reply_to":"9fb8cfa7_c4054f16","updated":"2019-07-03 16:11:44.000000000","message":"Done","commit_id":"a69a56d77267176b4021034fca70dab89ffd5029"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"1e624521a95700012e377e70a77646e5c7477878","unresolved":false,"context_lines":[{"line_number":42,"context_line":"The proposal"},{"line_number":43,"context_line":"------------"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"We won\u0027t provide any user or operator experience change (in the API or by a"},{"line_number":46,"context_line":"configuration option). We will rather try to just prefer hosts with a specific"},{"line_number":47,"context_line":"NUMA node having both available CPU *and* VGPU resources in it, but if we are"},{"line_number":48,"context_line":"unable to find any of such NUMA nodes, then we\u0027ll just accept to use a host"}],"source_content_type":"text/x-rst","patch_set":8,"id":"9fb8cfa7_e402d30b","line":45,"range":{"start_line":45,"start_character":3,"end_line":45,"end_character":8},"updated":"2019-06-17 15:36:10.000000000","message":"will not","commit_id":"a69a56d77267176b4021034fca70dab89ffd5029"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"546d844f7c3163cfc7f3089e6b7eddc17872f2f4","unresolved":false,"context_lines":[{"line_number":42,"context_line":"The proposal"},{"line_number":43,"context_line":"------------"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"We won\u0027t provide any user or operator experience change (in the API or by a"},{"line_number":46,"context_line":"configuration option). We will rather try to just prefer hosts with a specific"},{"line_number":47,"context_line":"NUMA node having both available CPU *and* VGPU resources in it, but if we are"},{"line_number":48,"context_line":"unable to find any of such NUMA nodes, then we\u0027ll just accept to use a host"}],"source_content_type":"text/x-rst","patch_set":8,"id":"7faddb67_26a9d6de","line":45,"range":{"start_line":45,"start_character":3,"end_line":45,"end_character":8},"in_reply_to":"9fb8cfa7_e402d30b","updated":"2019-07-03 16:11:44.000000000","message":"Done","commit_id":"a69a56d77267176b4021034fca70dab89ffd5029"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"1e624521a95700012e377e70a77646e5c7477878","unresolved":false,"context_lines":[{"line_number":51,"context_line":""},{"line_number":52,"context_line":"This will have two implications that will be detailed later in the spec:"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"- the `nova-scheduler` service will weigh hosts preferring the ones that have"},{"line_number":55,"context_line":"  the largest number of vGPU allocation candidates. This will work similarly to"},{"line_number":56,"context_line":"  the existing PCI weigher [2]_."},{"line_number":57,"context_line":""}],"source_content_type":"text/x-rst","patch_set":8,"id":"9fb8cfa7_df175645","line":54,"range":{"start_line":54,"start_character":2,"end_line":54,"end_character":5},"updated":"2019-06-17 15:36:10.000000000","message":"capitalize","commit_id":"a69a56d77267176b4021034fca70dab89ffd5029"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"1e624521a95700012e377e70a77646e5c7477878","unresolved":false,"context_lines":[{"line_number":55,"context_line":"  the largest number of vGPU allocation candidates. This will work similarly to"},{"line_number":56,"context_line":"  the existing PCI weigher [2]_."},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"- when claiming, the `nova-compute` service will attempt a *best effort*"},{"line_number":59,"context_line":"  selection of the NUMA node that is tied to the pGPU used by the virtual GPU"},{"line_number":60,"context_line":"  that was previously allocated by Placement. If not possible, it will use"},{"line_number":61,"context_line":"  another NUMA node."}],"source_content_type":"text/x-rst","patch_set":8,"id":"9fb8cfa7_3f20f29b","line":58,"range":{"start_line":58,"start_character":2,"end_line":58,"end_character":6},"updated":"2019-06-17 15:36:10.000000000","message":"same","commit_id":"a69a56d77267176b4021034fca70dab89ffd5029"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"1e624521a95700012e377e70a77646e5c7477878","unresolved":false,"context_lines":[{"line_number":100,"context_line":"blindly pick any NUMA node regardless of the vGPU allocation like we already"},{"line_number":101,"context_line":"do for CPU pinning [3]_."},{"line_number":102,"context_line":"Consequently, we want to pass the consumer allocation for the instance UUID"},{"line_number":103,"context_line":"to the claim so that the hardware module can return the correct NUMA node that"},{"line_number":104,"context_line":"matches. That said, we don\u0027t want to have hard affinity yet, so in case the"},{"line_number":105,"context_line":"chosen NUMA node can\u0027t satisfy other NUMA requests, we will forget it and just"},{"line_number":106,"context_line":"use another NUMA node (even if that means no NUMA affinity for the vGPU)."}],"source_content_type":"text/x-rst","patch_set":8,"id":"9fb8cfa7_bf6142d6","line":103,"range":{"start_line":103,"start_character":25,"end_line":103,"end_character":33},"updated":"2019-06-17 15:36:10.000000000","message":"Might want to ``hardware`` this so it\u0027s clear you mean the nova hardware python module and not some module of actual hardware :)","commit_id":"a69a56d77267176b4021034fca70dab89ffd5029"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"546d844f7c3163cfc7f3089e6b7eddc17872f2f4","unresolved":false,"context_lines":[{"line_number":100,"context_line":"blindly pick any NUMA node regardless of the vGPU allocation like we already"},{"line_number":101,"context_line":"do for CPU pinning [3]_."},{"line_number":102,"context_line":"Consequently, we want to pass the consumer allocation for the instance UUID"},{"line_number":103,"context_line":"to the claim so that the hardware module can return the correct NUMA node that"},{"line_number":104,"context_line":"matches. That said, we don\u0027t want to have hard affinity yet, so in case the"},{"line_number":105,"context_line":"chosen NUMA node can\u0027t satisfy other NUMA requests, we will forget it and just"},{"line_number":106,"context_line":"use another NUMA node (even if that means no NUMA affinity for the vGPU)."}],"source_content_type":"text/x-rst","patch_set":8,"id":"7faddb67_c696c295","line":103,"range":{"start_line":103,"start_character":25,"end_line":103,"end_character":33},"in_reply_to":"9fb8cfa7_bf6142d6","updated":"2019-07-03 16:11:44.000000000","message":"Done","commit_id":"a69a56d77267176b4021034fca70dab89ffd5029"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"1e624521a95700012e377e70a77646e5c7477878","unresolved":false,"context_lines":[{"line_number":101,"context_line":"do for CPU pinning [3]_."},{"line_number":102,"context_line":"Consequently, we want to pass the consumer allocation for the instance UUID"},{"line_number":103,"context_line":"to the claim so that the hardware module can return the correct NUMA node that"},{"line_number":104,"context_line":"matches. That said, we don\u0027t want to have hard affinity yet, so in case the"},{"line_number":105,"context_line":"chosen NUMA node can\u0027t satisfy other NUMA requests, we will forget it and just"},{"line_number":106,"context_line":"use another NUMA node (even if that means no NUMA affinity for the vGPU)."},{"line_number":107,"context_line":"We could later imagine a possible policy on hard affinity that would fail the"}],"source_content_type":"text/x-rst","patch_set":8,"id":"9fb8cfa7_1fd88e7d","line":104,"range":{"start_line":104,"start_character":23,"end_line":104,"end_character":28},"updated":"2019-06-17 15:36:10.000000000","message":"do not\n\nYour english is good and makes proper use of contractions, but in general I think it\u0027s best to leave them out of non-native speaker text. So maybe go fix the rest and I\u0027ll stop marking them? :)","commit_id":"a69a56d77267176b4021034fca70dab89ffd5029"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"0cb05211c40ec71a9589ab4c63a44e8370adc421","unresolved":false,"context_lines":[{"line_number":101,"context_line":"do for CPU pinning [3]_."},{"line_number":102,"context_line":"Consequently, we want to pass the consumer allocation for the instance UUID"},{"line_number":103,"context_line":"to the claim so that the hardware module can return the correct NUMA node that"},{"line_number":104,"context_line":"matches. That said, we don\u0027t want to have hard affinity yet, so in case the"},{"line_number":105,"context_line":"chosen NUMA node can\u0027t satisfy other NUMA requests, we will forget it and just"},{"line_number":106,"context_line":"use another NUMA node (even if that means no NUMA affinity for the vGPU)."},{"line_number":107,"context_line":"We could later imagine a possible policy on hard affinity that would fail the"}],"source_content_type":"text/x-rst","patch_set":8,"id":"7faddb67_3a180980","line":104,"range":{"start_line":104,"start_character":23,"end_line":104,"end_character":28},"in_reply_to":"9fb8cfa7_1fd88e7d","updated":"2019-07-03 22:44:38.000000000","message":"\u003e general I think it\u0027s best to leave them out of non-native speaker\n\nit is\n\n \u003e text. So maybe go fix the rest and I\u0027ll stop marking them? :)\n\nI will","commit_id":"a69a56d77267176b4021034fca70dab89ffd5029"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"546d844f7c3163cfc7f3089e6b7eddc17872f2f4","unresolved":false,"context_lines":[{"line_number":101,"context_line":"do for CPU pinning [3]_."},{"line_number":102,"context_line":"Consequently, we want to pass the consumer allocation for the instance UUID"},{"line_number":103,"context_line":"to the claim so that the hardware module can return the correct NUMA node that"},{"line_number":104,"context_line":"matches. That said, we don\u0027t want to have hard affinity yet, so in case the"},{"line_number":105,"context_line":"chosen NUMA node can\u0027t satisfy other NUMA requests, we will forget it and just"},{"line_number":106,"context_line":"use another NUMA node (even if that means no NUMA affinity for the vGPU)."},{"line_number":107,"context_line":"We could later imagine a possible policy on hard affinity that would fail the"}],"source_content_type":"text/x-rst","patch_set":8,"id":"7faddb67_e693bea2","line":104,"range":{"start_line":104,"start_character":23,"end_line":104,"end_character":28},"in_reply_to":"9fb8cfa7_1fd88e7d","updated":"2019-07-03 16:11:44.000000000","message":"Done","commit_id":"a69a56d77267176b4021034fca70dab89ffd5029"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"1e624521a95700012e377e70a77646e5c7477878","unresolved":false,"context_lines":[{"line_number":128,"context_line":"that contain Resource Provider UUIDs (and not names) accepting specific"},{"line_number":129,"context_line":"resource class queried amounts, we think it\u0027s better to abstractly provide"},{"line_number":130,"context_line":"a list of resource provider UUIDs as devices tied to a specific NUMA node."},{"line_number":131,"context_line":"This way, until Placement models this relationship, any PCI device that"},{"line_number":132,"context_line":"provides inventories of resources using Placement can reuse this logic and"},{"line_number":133,"context_line":"not exclusively physical GPUs providing ``VGPU`` resources::"},{"line_number":134,"context_line":""},{"line_number":135,"context_line":"    fields \u003d {"}],"source_content_type":"text/x-rst","patch_set":8,"id":"9fb8cfa7_7fd0aa54","line":132,"range":{"start_line":131,"start_character":52,"end_line":132,"end_character":70},"updated":"2019-06-17 15:36:10.000000000","message":"This seems like a good plan","commit_id":"a69a56d77267176b4021034fca70dab89ffd5029"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"1e624521a95700012e377e70a77646e5c7477878","unresolved":false,"context_lines":[{"line_number":142,"context_line":"        \u0027siblings\u0027: fields.ListOfSetsOfIntegersField(),"},{"line_number":143,"context_line":"        \u0027mempages\u0027: fields.ListOfObjectsField(\u0027NUMAPagesTopology\u0027),"},{"line_number":144,"context_line":"        \u0027network_metadata\u0027: fields.ObjectField(\u0027NetworkMetadata\u0027),"},{"line_number":145,"context_line":"        \u0027child_rp_uuids\u0027: fields.ListOfUUIDField(default\u003d[]), # new field"},{"line_number":146,"context_line":"        }"},{"line_number":147,"context_line":""},{"line_number":148,"context_line":""}],"source_content_type":"text/x-rst","patch_set":8,"id":"9fb8cfa7_9f08fed9","line":145,"updated":"2019-06-17 15:36:10.000000000","message":"Okay, so NUMACell lives in NUMATopology, which is serialized into the DB right? So no need for a new column or anything here, correct?\n\nThis is not marked as nullable\u003dTrue, which is good, but what will be the handling of existing objects in the database during an upgrade? They\u0027ll be missing, so will we assume default\u003d[] for those? In Upgrade below, you say \"skip\". Does that mean those hosts just don\u0027t get a weight one way or the other?","commit_id":"a69a56d77267176b4021034fca70dab89ffd5029"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"546d844f7c3163cfc7f3089e6b7eddc17872f2f4","unresolved":false,"context_lines":[{"line_number":142,"context_line":"        \u0027siblings\u0027: fields.ListOfSetsOfIntegersField(),"},{"line_number":143,"context_line":"        \u0027mempages\u0027: fields.ListOfObjectsField(\u0027NUMAPagesTopology\u0027),"},{"line_number":144,"context_line":"        \u0027network_metadata\u0027: fields.ObjectField(\u0027NetworkMetadata\u0027),"},{"line_number":145,"context_line":"        \u0027child_rp_uuids\u0027: fields.ListOfUUIDField(default\u003d[]), # new field"},{"line_number":146,"context_line":"        }"},{"line_number":147,"context_line":""},{"line_number":148,"context_line":""}],"source_content_type":"text/x-rst","patch_set":8,"id":"7faddb67_462df244","line":145,"in_reply_to":"9fb8cfa7_9f08fed9","updated":"2019-07-03 16:11:44.000000000","message":"\u003e Okay, so NUMACell lives in NUMATopology, which is serialized into\n \u003e the DB right? So no need for a new column or anything here,\n \u003e correct?\n \u003e \n\nYup, indeed : https://github.com/openstack/nova/blob/b24ad37/nova/objects/instance.py#L447-L450\n\n \u003e This is not marked as nullable\u003dTrue, which is good, but what will\n \u003e be the handling of existing objects in the database during an\n \u003e upgrade? They\u0027ll be missing, so will we assume default\u003d[] for\n \u003e those? In Upgrade below, you say \"skip\". Does that mean those hosts\n \u003e just don\u0027t get a weight one way or the other?\n\nYup, because for old computes, we don\u0027t specifically want them to be prioritized as their source code doesn\u0027t know (yet, in the next release) how to handle soft affinity.\n\nI\u0027ll document that in the upgrade section.","commit_id":"a69a56d77267176b4021034fca70dab89ffd5029"}]}
