)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"106f6d416f55f266980efd3a8106fe68111330aa","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Fix additional mistakes in the NUMA spec document"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"The \u0027hw:numa_mempolicy\u0027 paramter was never implemented and will likely"},{"line_number":10,"context_line":"never be, however, it\u0027s located in the \u0027implemented\u0027 folder suggesting"},{"line_number":11,"context_line":"otherwise. Seeing as specs are as much a reference as anything, this"},{"line_number":12,"context_line":"invalid information should not be retained. Correct this."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"7aa08908_f65efb43","line":9,"updated":"2016-06-06 15:45:06.000000000","message":"s/paramter/parameter/","commit_id":"72ad3e1cd180cb23b0cc6bdfed4d11039228900b"}],"specs/juno/implemented/virt-driver-numa-placement.rst":[{"author":{"_account_id":12171,"name":"Moshe Levi","email":"moshele@nvidia.com","username":"moshele"},"change_message_id":"0ccf76163677a2a5cdc9869221e223837d872b0f","unresolved":false,"context_lines":[{"line_number":115,"context_line":""},{"line_number":116,"context_line":"* vcpus\u003d8"},{"line_number":117,"context_line":"* mem\u003d4"},{"line_number":118,"context_line":"* hw:numa_nodes\u003d2 - numa of NUMA nodes to expose to the guest."},{"line_number":119,"context_line":"* hw:numa_cpus.0\u003d0,1,2,3,4,5"},{"line_number":120,"context_line":"* hw:numa_cpus.1\u003d6,7"},{"line_number":121,"context_line":"* hw:numa_mem.0\u003d3072"}],"source_content_type":"text/x-rst","patch_set":1,"id":"7aa08908_c903920c","line":118,"range":{"start_line":118,"start_character":19,"end_line":118,"end_character":24},"updated":"2016-06-04 17:12:56.000000000","message":"I guess this should be \"number of NUMA nodes\"","commit_id":"72ad3e1cd180cb23b0cc6bdfed4d11039228900b"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"106f6d416f55f266980efd3a8106fe68111330aa","unresolved":false,"context_lines":[{"line_number":115,"context_line":""},{"line_number":116,"context_line":"* vcpus\u003d8"},{"line_number":117,"context_line":"* mem\u003d4"},{"line_number":118,"context_line":"* hw:numa_nodes\u003d2 - numa of NUMA nodes to expose to the guest."},{"line_number":119,"context_line":"* hw:numa_cpus.0\u003d0,1,2,3,4,5"},{"line_number":120,"context_line":"* hw:numa_cpus.1\u003d6,7"},{"line_number":121,"context_line":"* hw:numa_mem.0\u003d3072"}],"source_content_type":"text/x-rst","patch_set":1,"id":"7aa08908_d65bff52","line":118,"updated":"2016-06-06 15:45:06.000000000","message":"yup, Moshele++","commit_id":"72ad3e1cd180cb23b0cc6bdfed4d11039228900b"},{"author":{"_account_id":6772,"name":"Stephen Gordon","email":"sgordon@redhat.com","username":"sgordon"},"change_message_id":"9778eb25cd4aafdfa9d93f3ac3c0d7f135b04f8e","unresolved":false,"context_lines":[{"line_number":84,"context_line":"control over the NUMA topology / fit characteristics."},{"line_number":85,"context_line":""},{"line_number":86,"context_line":"* ``hw:numa_nodes\u003dNN`` - number of NUMA nodes to expose to the guest."},{"line_number":87,"context_line":"* ``hw:numa_cpus.0\u003d\u003ccpu-list\u003e`` - mapping of vCPUS N-M to NUMA node 0"},{"line_number":88,"context_line":"* ``hw:numa_cpus.1\u003d\u003ccpu-list\u003e`` - mapping of vCPUS N-M to NUMA node 1"},{"line_number":89,"context_line":"* ``hw:numa_mem.0\u003d\u003cram-size\u003e`` - mapping N MB of RAM to NUMA node 0"},{"line_number":90,"context_line":"* ``hw:numa_mem.1\u003d\u003cram-size\u003e`` - mapping N MB of RAM to NUMA node 1"}],"source_content_type":"text/x-rst","patch_set":2,"id":"3aaa91ec_0238d33c","line":87,"updated":"2016-07-01 17:16:44.000000000","message":"I think I made a similar comment on the variation of this spec that was ultimately implemented but I believe we need to explicitly state *guest* NUMA node 0/1 here to alleviate confusion for users coming from traditional virtualization environments.","commit_id":"28c0b23faff8fbe7c9a6d0b8c0d1eb03de4cd5ac"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"27fcdb04113ff4c7856eb2517ca4978a1dc49e12","unresolved":false,"context_lines":[{"line_number":28,"context_line":"also desirable that the guest be placed on the same NUMA node as any PCI device"},{"line_number":29,"context_line":"that is assigned to it."},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"The libvirt driver does not currently attempt any NUMA placement, the guests"},{"line_number":32,"context_line":"are free to float across any host pCPUs and their memory is allocated from any"},{"line_number":33,"context_line":"NUMA node. This is very wasteful of compute resources and increases memory"},{"line_number":34,"context_line":"access latency which is harmful for NFV use cases."}],"source_content_type":"text/x-rst","patch_set":5,"id":"1a430d35_d78b0f1d","line":31,"updated":"2017-02-09 17:32:19.000000000","message":"The comma above should be a semicolon :)","commit_id":"54e11f3d5676aa3394b696092cbfe7d3fa3f04cd"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"7dfbc61b80b32c025f551df7ad5d4d22d2bcb1ea","unresolved":false,"context_lines":[{"line_number":28,"context_line":"also desirable that the guest be placed on the same NUMA node as any PCI device"},{"line_number":29,"context_line":"that is assigned to it."},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"The libvirt driver does not currently attempt any NUMA placement, the guests"},{"line_number":32,"context_line":"are free to float across any host pCPUs and their memory is allocated from any"},{"line_number":33,"context_line":"NUMA node. This is very wasteful of compute resources and increases memory"},{"line_number":34,"context_line":"access latency which is harmful for NFV use cases."}],"source_content_type":"text/x-rst","patch_set":5,"id":"fa31d9ce_09a00cf4","line":31,"in_reply_to":"1a430d35_d78b0f1d","updated":"2017-02-10 11:21:09.000000000","message":"Done","commit_id":"54e11f3d5676aa3394b696092cbfe7d3fa3f04cd"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"27fcdb04113ff4c7856eb2517ca4978a1dc49e12","unresolved":false,"context_lines":[{"line_number":90,"context_line":"  guest NUMA node."},{"line_number":91,"context_line":""},{"line_number":92,"context_line":".. important ::"},{"line_number":93,"context_line":"   The NUMA nodes, CPUs and memory refered to above are guest NUMA nodes,"},{"line_number":94,"context_line":"   guest CPUs, and guest memory. It is not possible to define specific host"},{"line_number":95,"context_line":"   nodes, CPUs or memory that should be assigned to a guest."},{"line_number":96,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"1a430d35_171037a8","line":93,"updated":"2017-02-09 17:32:19.000000000","message":"s/refered/referred/","commit_id":"54e11f3d5676aa3394b696092cbfe7d3fa3f04cd"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"7dfbc61b80b32c025f551df7ad5d4d22d2bcb1ea","unresolved":false,"context_lines":[{"line_number":90,"context_line":"  guest NUMA node."},{"line_number":91,"context_line":""},{"line_number":92,"context_line":".. important ::"},{"line_number":93,"context_line":"   The NUMA nodes, CPUs and memory refered to above are guest NUMA nodes,"},{"line_number":94,"context_line":"   guest CPUs, and guest memory. It is not possible to define specific host"},{"line_number":95,"context_line":"   nodes, CPUs or memory that should be assigned to a guest."},{"line_number":96,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"1a430d35_0881f6fb","line":93,"in_reply_to":"1a430d35_171037a8","updated":"2017-02-10 11:21:09.000000000","message":"Done","commit_id":"54e11f3d5676aa3394b696092cbfe7d3fa3f04cd"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"27fcdb04113ff4c7856eb2517ca4978a1dc49e12","unresolved":false,"context_lines":[{"line_number":96,"context_line":""},{"line_number":97,"context_line":"The most common case will be that the admin only sets ``hw:numa_nodes`` and"},{"line_number":98,"context_line":"then the flavor vCPUs and memory will be divided equally across the NUMA nodes."},{"line_number":99,"context_line":"When this is set, it is mandatory for the instance\u0027s memory allocations to come"},{"line_number":100,"context_line":"from the NUMA nodes to which it is bound."},{"line_number":101,"context_line":""},{"line_number":102,"context_line":"It should only be required to use the ``hw:numa_cpu.N`` and ``hw:numa_mem.N``"}],"source_content_type":"text/x-rst","patch_set":5,"id":"1a430d35_77e41bac","line":99,"range":{"start_line":99,"start_character":5,"end_line":99,"end_character":16},"updated":"2017-02-09 17:32:19.000000000","message":"When *what* is set? hw:numa_nodes? I believe this originally referred to when hw:numa_mempolicy\u003dstrict?","commit_id":"54e11f3d5676aa3394b696092cbfe7d3fa3f04cd"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"7dfbc61b80b32c025f551df7ad5d4d22d2bcb1ea","unresolved":false,"context_lines":[{"line_number":96,"context_line":""},{"line_number":97,"context_line":"The most common case will be that the admin only sets ``hw:numa_nodes`` and"},{"line_number":98,"context_line":"then the flavor vCPUs and memory will be divided equally across the NUMA nodes."},{"line_number":99,"context_line":"When this is set, it is mandatory for the instance\u0027s memory allocations to come"},{"line_number":100,"context_line":"from the NUMA nodes to which it is bound."},{"line_number":101,"context_line":""},{"line_number":102,"context_line":"It should only be required to use the ``hw:numa_cpu.N`` and ``hw:numa_mem.N``"}],"source_content_type":"text/x-rst","patch_set":5,"id":"1a430d35_e88bca1c","line":99,"range":{"start_line":99,"start_character":5,"end_line":99,"end_character":16},"in_reply_to":"1a430d35_77e41bac","updated":"2017-02-10 11:21:09.000000000","message":"Done","commit_id":"54e11f3d5676aa3394b696092cbfe7d3fa3f04cd"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"27fcdb04113ff4c7856eb2517ca4978a1dc49e12","unresolved":false,"context_lines":[{"line_number":99,"context_line":"When this is set, it is mandatory for the instance\u0027s memory allocations to come"},{"line_number":100,"context_line":"from the NUMA nodes to which it is bound."},{"line_number":101,"context_line":""},{"line_number":102,"context_line":"It should only be required to use the ``hw:numa_cpu.N`` and ``hw:numa_mem.N``"},{"line_number":103,"context_line":"settings if the guest NUMA nodes should have asymetrical allocation of CPUs and"},{"line_number":104,"context_line":"memory. This is important for some NFV workloads, but in general these will be"},{"line_number":105,"context_line":"rarely used tunables. If the ``hw:numa_cpu`` or ``hw:numa_mem`` settings are"}],"source_content_type":"text/x-rst","patch_set":5,"id":"1a430d35_3788d3c6","line":102,"range":{"start_line":102,"start_character":40,"end_line":102,"end_character":53},"updated":"2017-02-09 17:32:19.000000000","message":"s/hw:numa_cpu.N/hw:numa_cpus.N/","commit_id":"54e11f3d5676aa3394b696092cbfe7d3fa3f04cd"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"7dfbc61b80b32c025f551df7ad5d4d22d2bcb1ea","unresolved":false,"context_lines":[{"line_number":99,"context_line":"When this is set, it is mandatory for the instance\u0027s memory allocations to come"},{"line_number":100,"context_line":"from the NUMA nodes to which it is bound."},{"line_number":101,"context_line":""},{"line_number":102,"context_line":"It should only be required to use the ``hw:numa_cpu.N`` and ``hw:numa_mem.N``"},{"line_number":103,"context_line":"settings if the guest NUMA nodes should have asymetrical allocation of CPUs and"},{"line_number":104,"context_line":"memory. This is important for some NFV workloads, but in general these will be"},{"line_number":105,"context_line":"rarely used tunables. If the ``hw:numa_cpu`` or ``hw:numa_mem`` settings are"}],"source_content_type":"text/x-rst","patch_set":5,"id":"1a430d35_48a21e9c","line":102,"range":{"start_line":102,"start_character":40,"end_line":102,"end_character":53},"in_reply_to":"1a430d35_3788d3c6","updated":"2017-02-10 11:21:09.000000000","message":"Done","commit_id":"54e11f3d5676aa3394b696092cbfe7d3fa3f04cd"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"27fcdb04113ff4c7856eb2517ca4978a1dc49e12","unresolved":false,"context_lines":[{"line_number":102,"context_line":"It should only be required to use the ``hw:numa_cpu.N`` and ``hw:numa_mem.N``"},{"line_number":103,"context_line":"settings if the guest NUMA nodes should have asymetrical allocation of CPUs and"},{"line_number":104,"context_line":"memory. This is important for some NFV workloads, but in general these will be"},{"line_number":105,"context_line":"rarely used tunables. If the ``hw:numa_cpu`` or ``hw:numa_mem`` settings are"},{"line_number":106,"context_line":"provided and their values do not sum to the total vcpu count / memory size,"},{"line_number":107,"context_line":"this is considered to be a configuration error. An exception will be raised by"},{"line_number":108,"context_line":"the compute driver when attempting to boot the instance. As an enhancement it"}],"source_content_type":"text/x-rst","patch_set":5,"id":"1a430d35_978fc7cb","line":105,"range":{"start_line":105,"start_character":29,"end_line":105,"end_character":43},"updated":"2017-02-09 17:32:19.000000000","message":"s/hw:numa_cpu.N/hw:numa_cpus.N/","commit_id":"54e11f3d5676aa3394b696092cbfe7d3fa3f04cd"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"7dfbc61b80b32c025f551df7ad5d4d22d2bcb1ea","unresolved":false,"context_lines":[{"line_number":102,"context_line":"It should only be required to use the ``hw:numa_cpu.N`` and ``hw:numa_mem.N``"},{"line_number":103,"context_line":"settings if the guest NUMA nodes should have asymetrical allocation of CPUs and"},{"line_number":104,"context_line":"memory. This is important for some NFV workloads, but in general these will be"},{"line_number":105,"context_line":"rarely used tunables. If the ``hw:numa_cpu`` or ``hw:numa_mem`` settings are"},{"line_number":106,"context_line":"provided and their values do not sum to the total vcpu count / memory size,"},{"line_number":107,"context_line":"this is considered to be a configuration error. An exception will be raised by"},{"line_number":108,"context_line":"the compute driver when attempting to boot the instance. As an enhancement it"}],"source_content_type":"text/x-rst","patch_set":5,"id":"1a430d35_28b4f2cf","line":105,"range":{"start_line":105,"start_character":29,"end_line":105,"end_character":43},"in_reply_to":"1a430d35_978fc7cb","updated":"2017-02-10 11:21:09.000000000","message":"Done","commit_id":"54e11f3d5676aa3394b696092cbfe7d3fa3f04cd"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"27fcdb04113ff4c7856eb2517ca4978a1dc49e12","unresolved":false,"context_lines":[{"line_number":111,"context_line":"prerequisite for this work though so such work can be done out-of-band to the"},{"line_number":112,"context_line":"main development effort."},{"line_number":113,"context_line":""},{"line_number":114,"context_line":"When scheduling, if only the ``hw:numa_nodes\u003dNNN`` property is set the"},{"line_number":115,"context_line":"scheduler will synthesize ``hw:numa_cpus.NN`` and ``hw:numa_mem.NN`` properties"},{"line_number":116,"context_line":"such that the flavor allocation is equally spread across the desired number of"},{"line_number":117,"context_line":"NUMA nodes.  It will then look consider the available NUMA resources on hosts"},{"line_number":118,"context_line":"to find one that exactly matches the requirements of the guest. So, given an"},{"line_number":119,"context_line":"example config:"},{"line_number":120,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"1a430d35_ca29a68b","line":117,"range":{"start_line":114,"start_character":0,"end_line":117,"end_character":11},"updated":"2017-02-09 17:32:19.000000000","message":"Technically, this is not true. Sure, the scheduler will \"synthesize\" the CPU list and memory for the instance by \"fitting\" the instance to a particular host NUMA topology, but then it promptly just throws away that fitting and the fitting is done again entirely on the nova-compute node during the instance_claim() process. The results of the fitting process during claim on the nova-compute node can yield a completely different set of NUMA node, CPU pinning and memory consumption depending on if another workload claimed NUMA resources in between the time the scheduler \"synthesized\" the resources and the instance claim takes place on the nova-compute. :(\n\nHere\u0027s where the scheduler \"synthesizes\" (fits) the instance to a host topology and promptly throws away the fitting decision:\n\nhttps://github.com/openstack/nova/blob/master/nova/scheduler/filters/numa_topology_filter.py#L92-L105\n\nand here is where the nova-compute actually DOES the fitting and saves the fitting decision:\n\nhttps://github.com/openstack/nova/blob/master/nova/compute/claims.py#L211-L227","commit_id":"54e11f3d5676aa3394b696092cbfe7d3fa3f04cd"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"7dfbc61b80b32c025f551df7ad5d4d22d2bcb1ea","unresolved":false,"context_lines":[{"line_number":111,"context_line":"prerequisite for this work though so such work can be done out-of-band to the"},{"line_number":112,"context_line":"main development effort."},{"line_number":113,"context_line":""},{"line_number":114,"context_line":"When scheduling, if only the ``hw:numa_nodes\u003dNNN`` property is set the"},{"line_number":115,"context_line":"scheduler will synthesize ``hw:numa_cpus.NN`` and ``hw:numa_mem.NN`` properties"},{"line_number":116,"context_line":"such that the flavor allocation is equally spread across the desired number of"},{"line_number":117,"context_line":"NUMA nodes.  It will then look consider the available NUMA resources on hosts"},{"line_number":118,"context_line":"to find one that exactly matches the requirements of the guest. So, given an"},{"line_number":119,"context_line":"example config:"},{"line_number":120,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"fa31d9ce_c95fd40c","line":117,"range":{"start_line":114,"start_character":0,"end_line":117,"end_character":11},"in_reply_to":"1a430d35_ca29a68b","updated":"2017-02-10 11:21:09.000000000","message":"Done, I think","commit_id":"54e11f3d5676aa3394b696092cbfe7d3fa3f04cd"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"8ed378522cecccafa786fc92d87095e8d826ba6e","unresolved":false,"context_lines":[{"line_number":105,"context_line":"It should only be required to use the ``hw:numa_cpus.N`` and ``hw:numa_mem.N``"},{"line_number":106,"context_line":"settings if the guest NUMA nodes should have asymmetrical allocation of CPUs"},{"line_number":107,"context_line":"and memory. This is important for some NFV workloads, but in general these will"},{"line_number":108,"context_line":"be rarely used tunables. If the ``hw:numa_cpus`` or ``hw:numa_mem`` settings are"},{"line_number":109,"context_line":"provided and their values do not sum to the total vcpu count / memory size,"},{"line_number":110,"context_line":"this is considered to be a configuration error. An exception will be raised by"},{"line_number":111,"context_line":"the compute driver when attempting to boot the instance. As an enhancement it"}],"source_content_type":"text/x-rst","patch_set":6,"id":"fa31d9ce_d4d67ac4","line":108,"updated":"2017-02-10 18:18:19.000000000","message":"You terrible, terrible person you.\n\nAssertionError: False is not true : specs/juno/implemented/virt-driver-numa-placement.rst:108: Line limited to a maximum of 79 characters.","commit_id":"370f8cccefa1c3340e57ca951f71118d3c3398ce"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"8ed378522cecccafa786fc92d87095e8d826ba6e","unresolved":false,"context_lines":[{"line_number":121,"context_line":"and once during claiming, when the resources are actually allocated. Both"},{"line_number":122,"context_line":"processes will consider the available NUMA resources on hosts to find one that"},{"line_number":123,"context_line":"exactly matches the requirements of the guest. For example, given the following"},{"line_number":124,"context_line":"config:"},{"line_number":125,"context_line":""},{"line_number":126,"context_line":"* ``vcpus\u003d8``"},{"line_number":127,"context_line":"* ``mem\u003d4``"}],"source_content_type":"text/x-rst","patch_set":6,"id":"fa31d9ce_7495cee2","line":124,"updated":"2017-02-10 18:18:19.000000000","message":"good :)","commit_id":"370f8cccefa1c3340e57ca951f71118d3c3398ce"}]}
