)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"719fb7c662d88bf811a51b1812da052fc30624a3","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     dakshinai \u003cdakshina.ilangovan@intel.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2019-01-17 13:55:40 -0800"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Nova changes to support Local Resource Management that uses Resource Management Daemon"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"We propose a solution for OpenStack Nova to leverage the Resource Management Daemon (RMD) to manage a subset of host resources traditionally not visible to Nova. These are resources that shall allow more fine grain resource control for more predictable performance. This will require running RMD on the compute nodes and modifying Nova Compute."},{"line_number":10,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"bfdaf3ff_1ccfa829","line":7,"range":{"start_line":7,"start_character":0,"end_line":7,"end_character":86},"updated":"2019-01-18 23:26:49.000000000","message":"Let\u0027s get this down to 50c per the guidelines [1].\n\n[1] https://wiki.openstack.org/wiki/GitCommitMessages#Summary_of_Git_commit_message_structure","commit_id":"dafab5afa12714775d03f979b5f1dba64e50f38e"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"719fb7c662d88bf811a51b1812da052fc30624a3","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Nova changes to support Local Resource Management that uses Resource Management Daemon"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"We propose a solution for OpenStack Nova to leverage the Resource Management Daemon (RMD) to manage a subset of host resources traditionally not visible to Nova. These are resources that shall allow more fine grain resource control for more predictable performance. This will require running RMD on the compute nodes and modifying Nova Compute."},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"Implements: blueprint nova-changes-to-support-local-resource-management-that-uses-resource-management-daemon"},{"line_number":12,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"bfdaf3ff_fcd984f2","line":9,"range":{"start_line":9,"start_character":0,"end_line":9,"end_character":344},"updated":"2019-01-18 23:26:49.000000000","message":"Please wrap this at 72c per the guidelines [1].\n\n[1] https://wiki.openstack.org/wiki/GitCommitMessages#Summary_of_Git_commit_message_structure","commit_id":"dafab5afa12714775d03f979b5f1dba64e50f38e"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"719fb7c662d88bf811a51b1812da052fc30624a3","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"We propose a solution for OpenStack Nova to leverage the Resource Management Daemon (RMD) to manage a subset of host resources traditionally not visible to Nova. These are resources that shall allow more fine grain resource control for more predictable performance. This will require running RMD on the compute nodes and modifying Nova Compute."},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"Implements: blueprint nova-changes-to-support-local-resource-management-that-uses-resource-management-daemon"},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Change-Id: Idd3a0b678d231e58cb349fdbef6e720194c0e5d9"},{"line_number":14,"context_line":"Signed-off-by: Dakshina Ilangovan \u003cdakshina.ilangovan@intel.com\u003e"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"bfdaf3ff_5c9770ed","line":11,"range":{"start_line":11,"start_character":22,"end_line":11,"end_character":108},"updated":"2019-01-18 23:26:49.000000000","message":"This seems... excessive. cache-management-via-rmd would probably work fine.","commit_id":"dafab5afa12714775d03f979b5f1dba64e50f38e"}],"specs/stein/approved/nova-changes-to-support-local-resource-management-that-uses-resource-management-daemon.rst":[{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"719fb7c662d88bf811a51b1812da052fc30624a3","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"bfdaf3ff_5c64504a","updated":"2019-01-18 23:26:49.000000000","message":"Does this spec supersede [1]? If so, that patch should be abandoned. But it and its predecessor [2] need to be mentioned prominently somewhere in here.\n\n[1] https://review.openstack.org/#/c/568678/\n[2] https://review.openstack.org/#/c/502575/","commit_id":"dafab5afa12714775d03f979b5f1dba64e50f38e"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"7662f6d1fa6fe82893ff165698f659a8ff410b3a","unresolved":false,"context_lines":[{"line_number":108,"context_line":"  eligible hosts and the amount and types of the various resources being"},{"line_number":109,"context_line":"  requested for an instance."},{"line_number":110,"context_line":""},{"line_number":111,"context_line":"* Enabling a path from Nova Compute to Placement API to update resource"},{"line_number":112,"context_line":"  inventory information obtained from RMD."},{"line_number":113,"context_line":""},{"line_number":114,"context_line":"The changes are illustrated below:"},{"line_number":115,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"bfdaf3ff_921a9f6c","line":112,"range":{"start_line":111,"start_character":2,"end_line":112,"end_character":42},"updated":"2019-01-18 16:58:44.000000000","message":"this already exists. it\u0027s the code in the resource tracker and the scheduler reportclient. Unfortunately, the PCI manager module in Nova and the NUMA/topology management code in Nova are (unsurprisingly) the parts of resource management that are *not* properly linked with placement and the other resource tracking parts of Nova.","commit_id":"dafab5afa12714775d03f979b5f1dba64e50f38e"},{"author":{"_account_id":29334,"name":"Dakshina Ilangovan","email":"dakshina.ilangovan@intel.com","username":"dakshinai"},"change_message_id":"776277bd780ca5d4b8ccd7e6be1425d59a028112","unresolved":false,"context_lines":[{"line_number":108,"context_line":"  eligible hosts and the amount and types of the various resources being"},{"line_number":109,"context_line":"  requested for an instance."},{"line_number":110,"context_line":""},{"line_number":111,"context_line":"* Enabling a path from Nova Compute to Placement API to update resource"},{"line_number":112,"context_line":"  inventory information obtained from RMD."},{"line_number":113,"context_line":""},{"line_number":114,"context_line":"The changes are illustrated below:"},{"line_number":115,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"9fdfeff1_759f80b4","line":112,"range":{"start_line":111,"start_character":2,"end_line":112,"end_character":42},"in_reply_to":"bfdaf3ff_921a9f6c","updated":"2019-01-18 20:03:56.000000000","message":"This proposal does not use resource tracker and neither will be a good fit there since RMD is not a hypervisor. It also does not declare that this is the recommended path for any communication between Nova compute and placement API. The proposed change is specific to how Nova compute can relay information from an independent Openstack compute node entity like RMD.","commit_id":"dafab5afa12714775d03f979b5f1dba64e50f38e"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"7662f6d1fa6fe82893ff165698f659a8ff410b3a","unresolved":false,"context_lines":[{"line_number":127,"context_line":"           |             |NOVA      |        |"},{"line_number":128,"context_line":"           |             |SCHEDULER |        |"},{"line_number":129,"context_line":"     +-----v----+        +----^-----+        |"},{"line_number":130,"context_line":"     |NOVA      |             | Resource     |"},{"line_number":131,"context_line":"     |CONDUCTOR \u003c-------------+ Inventory    |"},{"line_number":132,"context_line":"     +-----+----+               Updates      |"},{"line_number":133,"context_line":"           |                                 |"},{"line_number":134,"context_line":"           |                                 |"},{"line_number":135,"context_line":"     +-----v----+                            |"}],"source_content_type":"text/x-rst","patch_set":5,"id":"bfdaf3ff_3225f3ab","line":132,"range":{"start_line":130,"start_character":31,"end_line":132,"end_character":40},"updated":"2019-01-18 16:58:44.000000000","message":"no. this isn\u0027t what happens any more. The individual compute nodes tell placement service directly what has changed w.r.t. inventory of resources on the compute node.","commit_id":"dafab5afa12714775d03f979b5f1dba64e50f38e"},{"author":{"_account_id":29334,"name":"Dakshina Ilangovan","email":"dakshina.ilangovan@intel.com","username":"dakshinai"},"change_message_id":"51f9e7e4a4ea9e57f4595cf4188c0a4391d9b454","unresolved":false,"context_lines":[{"line_number":127,"context_line":"           |             |NOVA      |        |"},{"line_number":128,"context_line":"           |             |SCHEDULER |        |"},{"line_number":129,"context_line":"     +-----v----+        +----^-----+        |"},{"line_number":130,"context_line":"     |NOVA      |             | Resource     |"},{"line_number":131,"context_line":"     |CONDUCTOR \u003c-------------+ Inventory    |"},{"line_number":132,"context_line":"     +-----+----+               Updates      |"},{"line_number":133,"context_line":"           |                                 |"},{"line_number":134,"context_line":"           |                                 |"},{"line_number":135,"context_line":"     +-----v----+                            |"}],"source_content_type":"text/x-rst","patch_set":5,"id":"9fdfeff1_ab38eed2","line":132,"range":{"start_line":130,"start_character":31,"end_line":132,"end_character":40},"in_reply_to":"bfdaf3ff_3225f3ab","updated":"2019-01-23 06:52:37.000000000","message":"\"Resource Inventory Updates\" marks the flow from Nova compute to Placement. Shall clarify this.","commit_id":"dafab5afa12714775d03f979b5f1dba64e50f38e"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"719fb7c662d88bf811a51b1812da052fc30624a3","unresolved":false,"context_lines":[{"line_number":149,"context_line":""},{"line_number":150,"context_line":"* The Resource Management Daemon (RMD) is outside the scope of Nova."},{"line_number":151,"context_line":"* Note that no changes are needed to the Placement service. Custom Resource"},{"line_number":152,"context_line":"  classes will be leveraged for each resource enabled by RMD. Eah Nova flavor"},{"line_number":153,"context_line":"  request will request Extra Specs to use the Custom Resource Classes created."},{"line_number":154,"context_line":"* For fetch resource inventory requests to RMD, the interface will be"},{"line_number":155,"context_line":"  GET /v1/\u003cresourcetype\u003e (e.g. GET /v1/cache)."}],"source_content_type":"text/x-rst","patch_set":5,"id":"bfdaf3ff_6f539840","line":152,"range":{"start_line":152,"start_character":62,"end_line":152,"end_character":65},"updated":"2019-01-18 23:26:49.000000000","message":"Each","commit_id":"dafab5afa12714775d03f979b5f1dba64e50f38e"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"7662f6d1fa6fe82893ff165698f659a8ff410b3a","unresolved":false,"context_lines":[{"line_number":148,"context_line":"                                  +-----+     +-----+    +-----+"},{"line_number":149,"context_line":""},{"line_number":150,"context_line":"* The Resource Management Daemon (RMD) is outside the scope of Nova."},{"line_number":151,"context_line":"* Note that no changes are needed to the Placement service. Custom Resource"},{"line_number":152,"context_line":"  classes will be leveraged for each resource enabled by RMD. Eah Nova flavor"},{"line_number":153,"context_line":"  request will request Extra Specs to use the Custom Resource Classes created."},{"line_number":154,"context_line":"* For fetch resource inventory requests to RMD, the interface will be"},{"line_number":155,"context_line":"  GET /v1/\u003cresourcetype\u003e (e.g. GET /v1/cache)."},{"line_number":156,"context_line":"* For resource allocation requests to RMD, the interface will be"}],"source_content_type":"text/x-rst","patch_set":5,"id":"bfdaf3ff_727dbb7d","line":153,"range":{"start_line":151,"start_character":0,"end_line":153,"end_character":78},"updated":"2019-01-18 16:58:44.000000000","message":"this is a problem. Instead of standardizing things with non-custom resource classes, you\u0027ll proliferate a bunch of custom resource classes and have an entirely different way of tracking those resources (using RMD). This is exactly the problem with the existing code: *some* resources -- namely, PCI devices and NUMA topology-related resources -- are tracked outside of the placement service\u0027s modeling of resources. And it\u0027s those resources that are the primary problem area. What this spec is proposing is just having the RMD external daemon model and track those NUMA and PCI resources instead of the PCI manager and NUMA /hardware.py module in Nova. So, you\u0027re just replacing two different resource trackers (nova/pci/* and nova/virt/hardware.py) with a single different resource tracker (RMD).\n\nThat doesn\u0027t solve any problem. The solution to the problem is to have placement model and manage inventory, not yet another thing.\n\nWhat\u0027s worse is that with this proposal, you\u0027re introducing a competing concept of \"allocation\" outside of placement. So, instead of being able to rely on the transactional, multi-provider nature of placement allocations for consuming resources, now we would have RMD\u0027s concept of allocations needing to be tracked (and rolled back on a failure) along with placement\u0027s concept of allocations. Which is *precisely* the reason we moved to using the placement service for doing atomic consumption of resources. This would be a step backwards, or at least, a step sideways.","commit_id":"dafab5afa12714775d03f979b5f1dba64e50f38e"},{"author":{"_account_id":29334,"name":"Dakshina Ilangovan","email":"dakshina.ilangovan@intel.com","username":"dakshinai"},"change_message_id":"776277bd780ca5d4b8ccd7e6be1425d59a028112","unresolved":false,"context_lines":[{"line_number":148,"context_line":"                                  +-----+     +-----+    +-----+"},{"line_number":149,"context_line":""},{"line_number":150,"context_line":"* The Resource Management Daemon (RMD) is outside the scope of Nova."},{"line_number":151,"context_line":"* Note that no changes are needed to the Placement service. Custom Resource"},{"line_number":152,"context_line":"  classes will be leveraged for each resource enabled by RMD. Eah Nova flavor"},{"line_number":153,"context_line":"  request will request Extra Specs to use the Custom Resource Classes created."},{"line_number":154,"context_line":"* For fetch resource inventory requests to RMD, the interface will be"},{"line_number":155,"context_line":"  GET /v1/\u003cresourcetype\u003e (e.g. GET /v1/cache)."},{"line_number":156,"context_line":"* For resource allocation requests to RMD, the interface will be"}],"source_content_type":"text/x-rst","patch_set":5,"id":"9fdfeff1_558efc27","line":153,"range":{"start_line":151,"start_character":0,"end_line":153,"end_character":78},"in_reply_to":"bfdaf3ff_727dbb7d","updated":"2019-01-18 20:03:56.000000000","message":"To explain the goals of RMD\n1. It will not re-invent the wheel for existing resources in the umbrella of Openstack. Irrespective of how Openstack will support certain resources (allocation and tracking standardized or not) it is restricted to static provisioning of those resources, more of fire and forget or update and forget for the workloads\n2. It will support resources that are require adjustments in shorter time intervals, hence RMD is being deployed local to a node. The dynamic changes are not subjective to a single workload but considers all the workloads sharing the local node, so that we dont starve one system to provide for another. \n3. RMD does not do any tracking and we leave it upto Openstack to be up-to-date. RMD also does not provide competeing allocation mechanism, dynamic allocations during the life-cycle of a VM is not an Openstack feature today.\n\nThe primary focus is 2 and RMD is designed to do this on any environment even without Openstack. We are proposing a way for Openstack to use the dynamic control of resources that RMD provides.\n\nWe try to ensure that transactional nature of Openstack is preserved. Even if Openstack can control a resource for static provisioning, when RMD does any dynamic updates, the changes should be relayed back to Openstack. We expect Openstack to talk to RMD to track any updates done by RMD for a resource. \n\nPlease recommend the right approach if you feel we should not let Nova compute do the tracking, again we are not trying to mimic resource tracker.","commit_id":"dafab5afa12714775d03f979b5f1dba64e50f38e"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"7662f6d1fa6fe82893ff165698f659a8ff410b3a","unresolved":false,"context_lines":[{"line_number":169,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":170,"context_line":""},{"line_number":171,"context_line":"Today, Nova Compute only provides static allocation of hardware resources at"},{"line_number":172,"context_line":"scheduled times, with no concept of local node monitoring or fine tuning of a"},{"line_number":173,"context_line":"subset of hardware resources, which could help improve or maintain the"},{"line_number":174,"context_line":"performance of latency-sensitive and real-time workloads. Secondly, for every"},{"line_number":175,"context_line":"new vendor resource that has to be supported, today there is no centralized"},{"line_number":176,"context_line":"approach to provide a user interface with high-level abstraction of allocation"},{"line_number":177,"context_line":"requests and with additional Quality of Service (QoS) metadata."}],"source_content_type":"text/x-rst","patch_set":5,"id":"bfdaf3ff_723e1b8d","line":174,"range":{"start_line":172,"start_character":17,"end_line":174,"end_character":57},"updated":"2019-01-18 16:58:44.000000000","message":"correct. if you want such things, then have a VM that hard-constrains the resource limits and then run a kubelet within that VM. Then k8s can dole out its containerized \"resources\" (cpu shares, shared memory ranges, etc) to the microservice workloads running within the pod.","commit_id":"dafab5afa12714775d03f979b5f1dba64e50f38e"},{"author":{"_account_id":29334,"name":"Dakshina Ilangovan","email":"dakshina.ilangovan@intel.com","username":"dakshinai"},"change_message_id":"776277bd780ca5d4b8ccd7e6be1425d59a028112","unresolved":false,"context_lines":[{"line_number":169,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":170,"context_line":""},{"line_number":171,"context_line":"Today, Nova Compute only provides static allocation of hardware resources at"},{"line_number":172,"context_line":"scheduled times, with no concept of local node monitoring or fine tuning of a"},{"line_number":173,"context_line":"subset of hardware resources, which could help improve or maintain the"},{"line_number":174,"context_line":"performance of latency-sensitive and real-time workloads. Secondly, for every"},{"line_number":175,"context_line":"new vendor resource that has to be supported, today there is no centralized"},{"line_number":176,"context_line":"approach to provide a user interface with high-level abstraction of allocation"},{"line_number":177,"context_line":"requests and with additional Quality of Service (QoS) metadata."}],"source_content_type":"text/x-rst","patch_set":5,"id":"9fdfeff1_35eb38b1","line":174,"range":{"start_line":172,"start_character":17,"end_line":174,"end_character":57},"in_reply_to":"bfdaf3ff_723e1b8d","updated":"2019-01-18 20:03:56.000000000","message":"Can you help clarify where the fine-tuning happens for such a system? Even if we hard-constrain a VM, it can remain under-utilized on resources that can in turn be provided to another VM.","commit_id":"dafab5afa12714775d03f979b5f1dba64e50f38e"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"7662f6d1fa6fe82893ff165698f659a8ff410b3a","unresolved":false,"context_lines":[{"line_number":178,"context_line":"The Resource Management Daemon (RMD) solution will allow vendors to easily"},{"line_number":179,"context_line":"integrate their resources into a local node daemon instead of having to"},{"line_number":180,"context_line":"upstream code for different interfaces for multiple resources and their"},{"line_number":181,"context_line":"multiple versions.  This will eliminate vendor/platform dependent changes in"},{"line_number":182,"context_line":"OpenStack."},{"line_number":183,"context_line":""},{"line_number":184,"context_line":"Use Cases"},{"line_number":185,"context_line":"---------"}],"source_content_type":"text/x-rst","patch_set":5,"id":"bfdaf3ff_8ffb5c45","line":182,"range":{"start_line":181,"start_character":19,"end_line":182,"end_character":10},"updated":"2019-01-18 16:58:44.000000000","message":"sorry, this isn\u0027t true. RMD is a vendor-specific solution (Intel) so I don\u0027t see how using RMD will eliminate vendor/platform depedent changes in OpenStack. :(\n\nRMD is essentially greasing the wheel for Intel RDT/CAT technology and masquerading as a \"vendor-neutral\" solution. It isn\u0027t, and we shouldn\u0027t pretend that it is.","commit_id":"dafab5afa12714775d03f979b5f1dba64e50f38e"},{"author":{"_account_id":29334,"name":"Dakshina Ilangovan","email":"dakshina.ilangovan@intel.com","username":"dakshinai"},"change_message_id":"776277bd780ca5d4b8ccd7e6be1425d59a028112","unresolved":false,"context_lines":[{"line_number":178,"context_line":"The Resource Management Daemon (RMD) solution will allow vendors to easily"},{"line_number":179,"context_line":"integrate their resources into a local node daemon instead of having to"},{"line_number":180,"context_line":"upstream code for different interfaces for multiple resources and their"},{"line_number":181,"context_line":"multiple versions.  This will eliminate vendor/platform dependent changes in"},{"line_number":182,"context_line":"OpenStack."},{"line_number":183,"context_line":""},{"line_number":184,"context_line":"Use Cases"},{"line_number":185,"context_line":"---------"}],"source_content_type":"text/x-rst","patch_set":5,"id":"9fdfeff1_95e304a5","line":182,"range":{"start_line":181,"start_character":19,"end_line":182,"end_character":10},"in_reply_to":"bfdaf3ff_8ffb5c45","updated":"2019-01-18 20:03:56.000000000","message":"I would disagree here since RMD design using resource plugins and platform awareness does not limit extensions to other vendor resources or platforms. It is often misleading since RMD supports RDT. Again RDT, is also offered by other competing technologies like that of Qualcomm which can be supported.\n\nWhat we imply by vendor/platform independence here is, if you require changes to support a resource like SRIOV NIC for instance, you can include the implementation in RMD and let RMD handle the resource management for static or dynamic fine-tuning instead of having N vendor specific implementations in Openstack. This is more of benefit as a side-effect to main feature of RMD - Dynamic control of resources across VMs during their life-cycle.\n\nNote that if a resource does not require any dynamic fine-tuning, there is no requirement for it to be supported by RMD.","commit_id":"dafab5afa12714775d03f979b5f1dba64e50f38e"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"719fb7c662d88bf811a51b1812da052fc30624a3","unresolved":false,"context_lines":[{"line_number":184,"context_line":"Use Cases"},{"line_number":185,"context_line":"---------"},{"line_number":186,"context_line":""},{"line_number":187,"context_line":"Use case #1: Efficient co-location of workloads on OpenStack compute nodes"},{"line_number":188,"context_line":"Actors: Users, Deployers"},{"line_number":189,"context_line":""},{"line_number":190,"context_line":"The users and deployers of workloads that are sensitive to hardware resources"},{"line_number":191,"context_line":"may require dynamic management of the resources for optimal performance in a"}],"source_content_type":"text/x-rst","patch_set":5,"id":"bfdaf3ff_b2456345","line":188,"range":{"start_line":187,"start_character":0,"end_line":188,"end_character":24},"updated":"2019-01-18 23:26:49.000000000","message":"(formatting nit) This line break doesn\u0027t render. Ditto below.","commit_id":"dafab5afa12714775d03f979b5f1dba64e50f38e"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"7662f6d1fa6fe82893ff165698f659a8ff410b3a","unresolved":false,"context_lines":[{"line_number":201,"context_line":"updated policy to make dynamic adjustments based on long-term monitoring"},{"line_number":202,"context_line":"results obtained from all nodes."},{"line_number":203,"context_line":""},{"line_number":204,"context_line":"Use case #2: Vendor Independence for OpenStack Resource Management"},{"line_number":205,"context_line":"Actors: Users, Vendors, Developers"},{"line_number":206,"context_line":""},{"line_number":207,"context_line":"Users, vendors and developers need to control resources in easy to understand"}],"source_content_type":"text/x-rst","patch_set":5,"id":"bfdaf3ff_4fc014e2","line":204,"range":{"start_line":204,"start_character":13,"end_line":204,"end_character":32},"updated":"2019-01-18 16:58:44.000000000","message":"no, it\u0027s not vendor independence. It\u0027s Intel-specific.","commit_id":"dafab5afa12714775d03f979b5f1dba64e50f38e"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"7662f6d1fa6fe82893ff165698f659a8ff410b3a","unresolved":false,"context_lines":[{"line_number":246,"context_line":""},{"line_number":247,"context_line":"1. Modifications to Nova Compute"},{"line_number":248,"context_line":"--------------------------------"},{"line_number":249,"context_line":"We introduce a new agent in Nova Compute to leverage RMD when RMD is deployed"},{"line_number":250,"context_line":"on a compute node. The new Nova Compute agent is enabled from Nova"},{"line_number":251,"context_line":"configuration. All interactions to RMD HTTPS REST interface are mutually"},{"line_number":252,"context_line":"authenticated using certificates enabled from Nova configuration. The Nova"}],"source_content_type":"text/x-rst","patch_set":5,"id":"bfdaf3ff_52df570c","line":249,"range":{"start_line":249,"start_character":0,"end_line":249,"end_character":77},"updated":"2019-01-18 16:58:44.000000000","message":"just what we need... another agent. :(\n\nSeriously, why not just have the virt driver query RMD for inventory and report that inventory using the standardized way of reporting inventory (update_provider_tree())?\n\nWhy do we want yet another agent with yet another system of modeling resources for just the local compute node\u0027s Intel-specific (RDT/CAT/MB) resources? This is the exact problem we have gotten into with the existing PCI manager and hardware.py (NUMA) resource managers...","commit_id":"dafab5afa12714775d03f979b5f1dba64e50f38e"},{"author":{"_account_id":29334,"name":"Dakshina Ilangovan","email":"dakshina.ilangovan@intel.com","username":"dakshinai"},"change_message_id":"776277bd780ca5d4b8ccd7e6be1425d59a028112","unresolved":false,"context_lines":[{"line_number":246,"context_line":""},{"line_number":247,"context_line":"1. Modifications to Nova Compute"},{"line_number":248,"context_line":"--------------------------------"},{"line_number":249,"context_line":"We introduce a new agent in Nova Compute to leverage RMD when RMD is deployed"},{"line_number":250,"context_line":"on a compute node. The new Nova Compute agent is enabled from Nova"},{"line_number":251,"context_line":"configuration. All interactions to RMD HTTPS REST interface are mutually"},{"line_number":252,"context_line":"authenticated using certificates enabled from Nova configuration. The Nova"}],"source_content_type":"text/x-rst","patch_set":5,"id":"9fdfeff1_15b71489","line":249,"range":{"start_line":249,"start_character":0,"end_line":249,"end_character":77},"in_reply_to":"bfdaf3ff_52df570c","updated":"2019-01-18 20:03:56.000000000","message":"We can always revisit the part of how Openstack can track RMD resources. Our goal here is to ensure RMD changes are reported back.\n\nThis is a requirement for RMD.","commit_id":"dafab5afa12714775d03f979b5f1dba64e50f38e"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"719fb7c662d88bf811a51b1812da052fc30624a3","unresolved":false,"context_lines":[{"line_number":287,"context_line":" [5]_ to let users request for resources reported and managed by RMD. Nova can"},{"line_number":288,"context_line":" request for a new resource allocation or a delete on resource allocations."},{"line_number":289,"context_line":""},{"line_number":290,"context_line":" With the introduction and QoS and other meta-data into the flavor that can be"},{"line_number":291,"context_line":" used by RMD, Nova should implement an RMD filter on the flavor to extract max"},{"line_number":292,"context_line":" value requested for resources that can be used by the scheduler. Based on the"},{"line_number":293,"context_line":" request for a resource managed by RMD through custom flavors and inventory"}],"source_content_type":"text/x-rst","patch_set":5,"id":"bfdaf3ff_928fff73","line":290,"range":{"start_line":290,"start_character":23,"end_line":290,"end_character":26},"updated":"2019-01-18 23:26:49.000000000","message":"of?","commit_id":"dafab5afa12714775d03f979b5f1dba64e50f38e"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"719fb7c662d88bf811a51b1812da052fc30624a3","unresolved":false,"context_lines":[{"line_number":288,"context_line":" request for a new resource allocation or a delete on resource allocations."},{"line_number":289,"context_line":""},{"line_number":290,"context_line":" With the introduction and QoS and other meta-data into the flavor that can be"},{"line_number":291,"context_line":" used by RMD, Nova should implement an RMD filter on the flavor to extract max"},{"line_number":292,"context_line":" value requested for resources that can be used by the scheduler. Based on the"},{"line_number":293,"context_line":" request for a resource managed by RMD through custom flavors and inventory"},{"line_number":294,"context_line":" information in the Placement API, the scheduler can select the appropriate"}],"source_content_type":"text/x-rst","patch_set":5,"id":"bfdaf3ff_12f1cf01","line":291,"range":{"start_line":291,"start_character":75,"end_line":291,"end_character":78},"updated":"2019-01-18 23:26:49.000000000","message":"Not the min?","commit_id":"dafab5afa12714775d03f979b5f1dba64e50f38e"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"719fb7c662d88bf811a51b1812da052fc30624a3","unresolved":false,"context_lines":[{"line_number":293,"context_line":" request for a resource managed by RMD through custom flavors and inventory"},{"line_number":294,"context_line":" information in the Placement API, the scheduler can select the appropriate"},{"line_number":295,"context_line":" compute node reporting the respective RMD resource. The Nova Compute agent"},{"line_number":296,"context_line":" should delegate resource allocation and management to RMD by formulating a"},{"line_number":297,"context_line":" request through a policy sent to RMD\u0027s REST API. The Nova Compute agent can"},{"line_number":298,"context_line":" create this policy using information from the flavor. This can include"},{"line_number":299,"context_line":" resource allocation amounts for the RMD resources as well as other meta-data"}],"source_content_type":"text/x-rst","patch_set":5,"id":"bfdaf3ff_52d43748","line":296,"range":{"start_line":296,"start_character":26,"end_line":296,"end_character":36},"updated":"2019-01-18 23:26:49.000000000","message":"\"allocation\" here meaning assignment of the real resource to the VM, right? The allocation in placement terms still needs to happen in placement.","commit_id":"dafab5afa12714775d03f979b5f1dba64e50f38e"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"7662f6d1fa6fe82893ff165698f659a8ff410b3a","unresolved":false,"context_lines":[{"line_number":304,"context_line":" do any CPU pinning but can use the information to do resource allocations to"},{"line_number":305,"context_line":" the set of cores the VM is pinned to."},{"line_number":306,"context_line":""},{"line_number":307,"context_line":" When the Nova Compute agent sends a request to RMD to perform resource"},{"line_number":308,"context_line":" allocation for a subset of host resources on a compute node that is identified"},{"line_number":309,"context_line":" by the scheduler, the following scenarios will occur:"},{"line_number":310,"context_line":""},{"line_number":311,"context_line":"  a. If RMD allocation succeeds, no further interactions are needed."}],"source_content_type":"text/x-rst","patch_set":5,"id":"bfdaf3ff_d22907e6","line":308,"range":{"start_line":307,"start_character":1,"end_line":308,"end_character":42},"updated":"2019-01-18 16:58:44.000000000","message":"no... placement has *already* allocated all of the resources associated with a request. And placement has done that in an atomic, transactional way.\n\nDoing things this way would set us back 3+ years to the days when had two scheduler processes pick the same compute node and one of the processes ends up going into a retry loop because by the time it got to the destination host, the other process had consumed its resources. This was the whole reason we moved to using placement for consuming resources transactionally.","commit_id":"dafab5afa12714775d03f979b5f1dba64e50f38e"},{"author":{"_account_id":29334,"name":"Dakshina Ilangovan","email":"dakshina.ilangovan@intel.com","username":"dakshinai"},"change_message_id":"776277bd780ca5d4b8ccd7e6be1425d59a028112","unresolved":false,"context_lines":[{"line_number":304,"context_line":" do any CPU pinning but can use the information to do resource allocations to"},{"line_number":305,"context_line":" the set of cores the VM is pinned to."},{"line_number":306,"context_line":""},{"line_number":307,"context_line":" When the Nova Compute agent sends a request to RMD to perform resource"},{"line_number":308,"context_line":" allocation for a subset of host resources on a compute node that is identified"},{"line_number":309,"context_line":" by the scheduler, the following scenarios will occur:"},{"line_number":310,"context_line":""},{"line_number":311,"context_line":"  a. If RMD allocation succeeds, no further interactions are needed."}],"source_content_type":"text/x-rst","patch_set":5,"id":"9fdfeff1_1545d470","line":308,"range":{"start_line":307,"start_character":1,"end_line":308,"end_character":42},"in_reply_to":"bfdaf3ff_d22907e6","updated":"2019-01-18 20:03:56.000000000","message":"I believe we still use the placement and a single scheduler to determine which compute node the VM fits (for standard resources + resource offered by RMD). The resources offered by RMD are different from the standard resources so there is no conflicting action here. Also, we expect allocation using RMD to be transactional from placement since Nova compute does the request, similar to how it talks to Libvirt. So these resources are marked allocated in allocation table and same status is reflected on the compute node.","commit_id":"dafab5afa12714775d03f979b5f1dba64e50f38e"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"719fb7c662d88bf811a51b1812da052fc30624a3","unresolved":false,"context_lines":[{"line_number":315,"context_line":"     scheduler. Note than an exception is returned from RMD even if one of the"},{"line_number":316,"context_line":"     resource allocations requested in the policy fails."},{"line_number":317,"context_line":"  c. RMD persists policies it receives in a lightweight no-sql file. When a"},{"line_number":318,"context_line":"     workload (e.g., VM) crashes or restarts or RMD is restarted, RMD clears"},{"line_number":319,"context_line":"     the policies and allocations if the workload no longer exists or restores"},{"line_number":320,"context_line":"     the allocations from polices if the workload exists. Nova Compute takes"},{"line_number":321,"context_line":"     care of updating the Placement API in OpenStack for workloads that do not"}],"source_content_type":"text/x-rst","patch_set":5,"id":"bfdaf3ff_720cdbec","line":318,"range":{"start_line":318,"start_character":15,"end_line":318,"end_character":23},"updated":"2019-01-18 23:26:49.000000000","message":"Not e.g.; exactly a VM. What other types of \"workload\" would there be in this context?","commit_id":"dafab5afa12714775d03f979b5f1dba64e50f38e"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"719fb7c662d88bf811a51b1812da052fc30624a3","unresolved":false,"context_lines":[{"line_number":317,"context_line":"  c. RMD persists policies it receives in a lightweight no-sql file. When a"},{"line_number":318,"context_line":"     workload (e.g., VM) crashes or restarts or RMD is restarted, RMD clears"},{"line_number":319,"context_line":"     the policies and allocations if the workload no longer exists or restores"},{"line_number":320,"context_line":"     the allocations from polices if the workload exists. Nova Compute takes"},{"line_number":321,"context_line":"     care of updating the Placement API in OpenStack for workloads that do not"},{"line_number":322,"context_line":"     exist."},{"line_number":323,"context_line":"  d. Any dynamic re-allocations to workload resources done by RMD is handled"},{"line_number":324,"context_line":"     in the range of min and max allocation values requested for those"},{"line_number":325,"context_line":"     resources."}],"source_content_type":"text/x-rst","patch_set":5,"id":"bfdaf3ff_f220cb4a","line":322,"range":{"start_line":320,"start_character":58,"end_line":322,"end_character":11},"updated":"2019-01-18 23:26:49.000000000","message":"Either this goes without saying (Nova is responsible for deleting placement allocations for deleted instances) or it\u0027s implying something scary that isn\u0027t going to happen - namely Nova effectively \"resizing\" an instance at the behest of something happening in RMD.","commit_id":"dafab5afa12714775d03f979b5f1dba64e50f38e"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"719fb7c662d88bf811a51b1812da052fc30624a3","unresolved":false,"context_lines":[{"line_number":320,"context_line":"     the allocations from polices if the workload exists. Nova Compute takes"},{"line_number":321,"context_line":"     care of updating the Placement API in OpenStack for workloads that do not"},{"line_number":322,"context_line":"     exist."},{"line_number":323,"context_line":"  d. Any dynamic re-allocations to workload resources done by RMD is handled"},{"line_number":324,"context_line":"     in the range of min and max allocation values requested for those"},{"line_number":325,"context_line":"     resources."},{"line_number":326,"context_line":""},{"line_number":327,"context_line":" Nova Compute polls for these changes to resource allocations of the workloads,"},{"line_number":328,"context_line":" done by RMD and sends updates to Allocations API in the Placement API for each"}],"source_content_type":"text/x-rst","patch_set":5,"id":"bfdaf3ff_52a3d7b2","line":325,"range":{"start_line":323,"start_character":5,"end_line":325,"end_character":15},"updated":"2019-01-18 23:26:49.000000000","message":"Assume there\u0027s going to be more detailed discussion below about how these min and max values are handled. From what I can infer up to this point, trying to manage min/max in any realistic way is going to be pretty sloppy - either wasteful or prone to overbooking. (The latter is what allocation_ratio is for, but it would be impossible to set an allocation_ratio that appropriately predicts the difference between max and min for hypothetical future instances.)","commit_id":"dafab5afa12714775d03f979b5f1dba64e50f38e"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"719fb7c662d88bf811a51b1812da052fc30624a3","unresolved":false,"context_lines":[{"line_number":324,"context_line":"     in the range of min and max allocation values requested for those"},{"line_number":325,"context_line":"     resources."},{"line_number":326,"context_line":""},{"line_number":327,"context_line":" Nova Compute polls for these changes to resource allocations of the workloads,"},{"line_number":328,"context_line":" done by RMD and sends updates to Allocations API in the Placement API for each"},{"line_number":329,"context_line":" workload."},{"line_number":330,"context_line":""},{"line_number":331,"context_line":"Example - Modifications to Nova Compute - Last Level Cache and Memory Bandwidth"},{"line_number":332,"context_line":"-------------------------------------------------------------------------------"}],"source_content_type":"text/x-rst","patch_set":5,"id":"bfdaf3ff_528c3735","line":329,"range":{"start_line":327,"start_character":1,"end_line":329,"end_character":10},"updated":"2019-01-18 23:26:49.000000000","message":"Okay, so this is indeed the latter thing I said up at L320. This (\"dynamic resizing\") would represent a major paradigm shift and is unlikely to gain traction.","commit_id":"dafab5afa12714775d03f979b5f1dba64e50f38e"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"719fb7c662d88bf811a51b1812da052fc30624a3","unresolved":false,"context_lines":[{"line_number":331,"context_line":"Example - Modifications to Nova Compute - Last Level Cache and Memory Bandwidth"},{"line_number":332,"context_line":"-------------------------------------------------------------------------------"},{"line_number":333,"context_line":""},{"line_number":334,"context_line":"We introduce a new agent in Nova Compute to leverage RMD when RMD is deployed"},{"line_number":335,"context_line":"on a compute node. With the above extensions to Nova Compute we illustrate"},{"line_number":336,"context_line":"leveraging two RMD resources; namely Last Level Cache (LLC) and Memory"},{"line_number":337,"context_line":"Bandwidth."}],"source_content_type":"text/x-rst","patch_set":5,"id":"bfdaf3ff_72961b42","line":334,"range":{"start_line":334,"start_character":13,"end_line":334,"end_character":24},"updated":"2019-01-18 23:26:49.000000000","message":"Like, a new OpenStack service? Not sure this is warranted. Can\u0027t the virt driver just talk directly to RMD during the spawn operation?","commit_id":"dafab5afa12714775d03f979b5f1dba64e50f38e"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"719fb7c662d88bf811a51b1812da052fc30624a3","unresolved":false,"context_lines":[{"line_number":377,"context_line":"   }"},{"line_number":378,"context_line":"  }"},{"line_number":379,"context_line":""},{"line_number":380,"context_line":" Nova code snippet to query resource inventory information from RMD GET API"},{"line_number":381,"context_line":" ::"},{"line_number":382,"context_line":""},{"line_number":383,"context_line":"   requests.get(self._urlbase % \"/v1/mba\","}],"source_content_type":"text/x-rst","patch_set":5,"id":"bfdaf3ff_d2cd8766","line":380,"range":{"start_line":380,"start_character":68,"end_line":380,"end_character":75},"updated":"2019-01-18 23:26:49.000000000","message":"GET MBA API?","commit_id":"dafab5afa12714775d03f979b5f1dba64e50f38e"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"719fb7c662d88bf811a51b1812da052fc30624a3","unresolved":false,"context_lines":[{"line_number":385,"context_line":"   cert\u003d(CONF.cache.rmd_cert, CONF.cache.rmd_key)).json()"},{"line_number":386,"context_line":""},{"line_number":387,"context_line":""},{"line_number":388,"context_line":" Sample output from RMD GET L3 Cache API"},{"line_number":389,"context_line":" ::"},{"line_number":390,"context_line":""},{"line_number":391,"context_line":"   GET /mba"}],"source_content_type":"text/x-rst","patch_set":5,"id":"bfdaf3ff_f2ca0b4c","line":388,"range":{"start_line":388,"start_character":28,"end_line":388,"end_character":30},"updated":"2019-01-18 23:26:49.000000000","message":"MBA","commit_id":"dafab5afa12714775d03f979b5f1dba64e50f38e"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"719fb7c662d88bf811a51b1812da052fc30624a3","unresolved":false,"context_lines":[{"line_number":401,"context_line":""},{"line_number":402,"context_line":" On current generation systems, we can expect one LLC per socket. We will"},{"line_number":403,"context_line":" leverage nested resource providers to report LLC and memory bandwidth resource"},{"line_number":404,"context_line":" inventories based on location of the resource in the NUMA topology."},{"line_number":405,"context_line":""},{"line_number":406,"context_line":" For instance on a node with 2 sockets with 1 LLC per socket, we report the"},{"line_number":407,"context_line":" capacities per numa node as follows."}],"source_content_type":"text/x-rst","patch_set":5,"id":"bfdaf3ff_f2f8cb7b","line":404,"updated":"2019-01-18 23:26:49.000000000","message":"This is going to be tricky. We\u0027re not yet representing NUMA topology via nested resource providers, so it\u0027s not clear how you\u0027re going to reconcile CPUs allocated from the general pool on the compute node resource provider with LLC MB units from the correct NUMA node.","commit_id":"dafab5afa12714775d03f979b5f1dba64e50f38e"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"719fb7c662d88bf811a51b1812da052fc30624a3","unresolved":false,"context_lines":[{"line_number":440,"context_line":"   resources: CUSTOM_LLC\u003d20"},{"line_number":441,"context_line":"   resources: CUSTOM_MBW\u003d2000"},{"line_number":442,"context_line":""},{"line_number":443,"context_line":" The administrator can collocate VCPUs, LLC and memory bandwidth to belong to"},{"line_number":444,"context_line":" the same Numa using granular resource requests [6]_ such as"},{"line_number":445,"context_line":" ::"},{"line_number":446,"context_line":""},{"line_number":447,"context_line":"   resources1: VCPU\u003d4"},{"line_number":448,"context_line":"   resources1: CUSTOM_LLC\u003d5"},{"line_number":449,"context_line":"   resources1: CUSTOM_MBW\u003d200"},{"line_number":450,"context_line":""},{"line_number":451,"context_line":" RMD also introduces the concept of cache pools (division of cache ways) to"},{"line_number":452,"context_line":" associate Guaranteed, Best-effort and Shared QoS for cache allocations."}],"source_content_type":"text/x-rst","patch_set":5,"id":"bfdaf3ff_72805bc1","line":449,"range":{"start_line":443,"start_character":0,"end_line":449,"end_character":29},"updated":"2019-01-18 23:26:49.000000000","message":"Yeah, except again, I don\u0027t think we have real code that models separate NUMA nodes as providers of VCPU.","commit_id":"dafab5afa12714775d03f979b5f1dba64e50f38e"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"719fb7c662d88bf811a51b1812da052fc30624a3","unresolved":false,"context_lines":[{"line_number":735,"context_line":"History"},{"line_number":736,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":737,"context_line":""},{"line_number":738,"context_line":".. list-table:: Revisions"},{"line_number":739,"context_line":"   :header-rows: 1"},{"line_number":740,"context_line":""},{"line_number":741,"context_line":"   * - Release Name"},{"line_number":742,"context_line":"     - Description"},{"line_number":743,"context_line":"   * - Stein"},{"line_number":744,"context_line":"     - Introduced"}],"source_content_type":"text/x-rst","patch_set":5,"id":"bfdaf3ff_7c8034c1","line":744,"range":{"start_line":738,"start_character":0,"end_line":744,"end_character":17},"updated":"2019-01-18 23:26:49.000000000","message":"This needs to mention (with links) the pike [1] and rocky [2] incarnations of this spec.\n\n[1] https://review.openstack.org/#/c/502575/\n[2] https://review.openstack.org/#/c/568678/","commit_id":"dafab5afa12714775d03f979b5f1dba64e50f38e"}]}
