| Posted | Nick | Remark | |
|---|---|---|---|
| #openstack-cyborg - 2018-04-04 | |||
| 14:30:57 | zhipeng | great :) | |
| 14:31:11 | Melissa_S | I think you could put Chuck's name down - he is on the apps side | |
| 14:31:24 | zhipeng | duly noted :) | |
| 14:31:30 | Melissa_S | we will find the correct internal team for this project | |
| 14:31:35 | zhipeng | #topic critical rocky spec review | |
| 14:32:02 | zhipeng | first up, Sundar's Nova-Cyborg interaction spec | |
| 14:32:22 | chucksong | zhipeng, yes I will take the role | |
| 14:32:25 | zhipeng | Sundar could you help get everyone up to speed ? | |
| 14:33:26 | Sundar | Sure, Howard | |
| 14:33:27 | zhipeng | #info Sundar cyborg-nova spec discussion | |
| 14:33:30 | zhipeng | #link https://etherpad.openstack.org/p/Cyborg-Nova-Multifunction | |
| 14:33:46 | zhipeng | #link https://review.openstack.org/#/c/554717/ | |
| 14:34:01 | Sundar | We had arrived at a way of representing FPGA components in Nova, and worklfows for all use cases based on hat representation, back in the PTG | |
| 14:34:26 | Sundar | The spec that Howard provided above codifies that | |
| 14:35:01 | Sundar | However, there was a race condition for one use case, which has been debated in the community. An analogy was found with a vGPU issue, and a joint solution was proposed | |
| 14:35:27 | Sundar | http://lists.openstack.org/pipermail/openstack-dev/2018-March/128888.html | |
| 14:35:41 | zhipeng | #link http://lists.openstack.org/pipermail/openstack-dev/2018-March/128888.html | |
| 14:36:03 | Sundar | Based on that, I worked out the details, in a way that should cover GPUs etc. but probably focuses more on FPGAs. | |
| 14:36:16 | Sundar | #link https://etherpad.openstack.org/p/Cyborg-Nova-Multifunction | |
| 14:36:38 | Sundar | I think this is a better solution than the PTG flow :) both for Nova and Cyborg | |
| 14:37:34 | Sundar | For Cyborg, this means that we don't need to keep accelerator usage details in Cyborg DB -- just use placement info :) | |
| 14:38:16 | Sundar | Eventually, if/when Nova supports preferred traits, maybe we don't need the weigher -- but we can evaluat that when it becomes real | |
| 14:38:54 | Sundar | For the new folks in Cyborg, this may sound cryptic :) I am open to walking folks through the proposal in a call if needed | |
| 14:39:27 | Sundar | Howard, do you want me to explain the crux of the proposal here? | |
| 14:39:28 | Li_Liu | Sundar, regardless, we still need to track individual assignment for each device in Cyborg, right? | |
| 14:40:04 | zhipeng | Sundar it would be great to have a brief walk through and the central take aways :) | |
| 14:40:07 | Sundar | Li_Liu: Yes, we will be handling acceleratr -PF/VF matching | |
| 14:40:46 | Sundar | That is not involve din the scheduling, because Placement counts accelerator resources | |
| 14:41:16 | Sundar | As instances are spawned and terminated, Cyborg agent can track PF/VF usage | |
| 14:41:50 | Sundar | Howard, sure. | |
| 14:41:56 | Sundar | The brief summary is this: | |
| 14:42:13 | Melissa_S | Sundar - I am open to scheduling a call and walkthrough of your proposal. | |
| 14:42:32 | Sundar | We want to expose FPGAs in 2 ways: FPGA as a Service (FPGA aaS), and Accelerated Function as a Service (AFaaS) | |
| 14:43:20 | Sundar | For FPGAaaS, user/flavor asks for a device type (or region type) and optionally a bitstream ID that needs to be applied by Cyborg before the instance comes up. | |
| 14:43:44 | Sundar | This is similar to Amazon flow. | |
| 14:44:19 | Sundar | For AFaaS, the user/flavor asks for a function/algorithm e.g. 'ipsec' + some indication of what device family the VM has the drivers for | |
| 14:44:42 | Sundar | To cover both cases, we say that an accelerator can be a device/region or a function | |
| 14:45:09 | Sundar | We represent a generic accelerator with the custom resource class (RC) CUSTOM_ACCELERATOR | |
| 14:45:34 | Sundar | We also represent FPGAs and their inner regions as nested Resource Providers (RPs) | |
| 14:45:57 | Sundar | So, a region RP can provide N instances of a CUSTOM_ACCELERATOR class. Most commonly, N=1 | |
| 14:46:48 | Sundar | Also, each region RP has traits: region type (e.g. CUSTOM_FPGA_<vendor>_REGION_...) | |
| 14:47:08 | Sundar | possibly function type (e.g. CUSTOM_FPGA_<ipsec_uuid>) | |
| 14:47:37 | Sundar | and device family (e.g. CUSTOM_FPGA_XILINX_<product/part>...) | |
| 14:47:52 | Li_Liu | Sundar, for AFaaS, on top of asking for a function/algorithm, I think users can also specify the minimum kpi/capability for the requested resources | |
| 14:48:05 | Li_Liu | you keep going | |
| 14:48:15 | Li_Liu | I just throw some of my thoughts here | |
| 14:48:22 | Sundar | Li_Liu, NP, I'll get back to that | |
| 14:48:51 | Sundar | With this background, here's how a flavor can ask for FPGA aaS: | |
| 14:49:24 | Sundar | resource:CUSTOM_ACCELERATOR=1; trait:CUSTOM_FPGA_<vendor>_REGION_<uuid>=required | |
| 14:49:48 | Sundar | optionally, one more extra spec: bitstream:3A56D4=required | |
| 14:50:29 | Sundar | This gets Placement to choose all matching devices based on trait. Once a node is selected, the Cyborg agent in the node notes the extra spec and applies the bitstream | |
| 14:50:44 | Sundar | Before I go to AFaaS, does this make sense for FPGA aaS/ | |
| 14:50:57 | zhipeng | it does for me, this is awesome Sundar | |
| 14:51:19 | Li_Liu | yup, it looks great | |
| 14:51:34 | Sundar | Cool :) Now for AFaaS flavor | |
| 14:51:43 | chucksong | It sounds good Sundar. I need to know more about this project though. I just joined this project and still have a lot to learn | |
| 14:52:22 | Duth | Yes agreed. Sundar, can you share some more information on this proposal for FPGA aaS/ | |
| 14:52:42 | zhipeng | Duth let's schedule another dedicated call for it | |
| 14:52:45 | zhipeng | :) | |
| 14:52:57 | Sundar | resource:CUSTOM_ACCELERATOR=1; trait:CUSTOM_FPGA_INTEL_<ipsec-uuid>=required; trait:CUSOTM_FPGA_INTEL_<product>=required | |
| 14:52:59 | zhipeng | video conf would be better for a deep dive walk through | |
| 14:53:18 | Melissa_S | Agreed. | |
| 14:53:18 | Sundar | Yes, we can do more in a video call | |
| 14:53:39 | zhipeng | Sundar plz carry on the AFaaS scenario | |
| 14:54:10 | Sundar | Some folks don't like the UUIDs. I think UUIDs make it very concrete and we can make it more user-friendly later. Also, for AFaaS, we can avoid region UUIDs and use just product name | |
| 14:54:37 | zhipeng | string name could do the trick ? | |
| 14:54:37 | Sundar | OK, back to AFaaS :) | |
| 14:54:50 | zhipeng | sorry go ahead | |
| 14:56:50 | Sundar | Zhipeng: We can discuss strings in more deatail, may be in an email? | |
| 14:57:19 | zhipeng | Sundar absolutely | |
| 14:57:38 | zhipeng | plz carry on, sorry for the interruption :) | |
| 14:57:39 | Sundar | OK. AfFaaS flavor: resource:CUSTOM_ACCELERATOR=1; trait:CUSTOM_FPGA_INTEL_<ipsec-uuid>=required; trait:CUSOTM_FPGA_INTEL_<product>=required | |
| 14:58:37 | Sundar | This picks all devices that have the required function. Makes sense, except that if no free instance of that function is available, the request will just fail, rather than have Cyborg pick an available region and reprogram it | |
| 14:59:18 | Sundar | That is ok if that's what the operator wants: he may want to prevent reprogramming for whatever reason. | |
| 14:59:37 | Sundar | But, in the general case, we want the ability to reprogram if needed. | |
| 15:00:04 | Sundar | So, what we want is: trait:CUSTOM_FPGA_INTEL_<ipsec-uuid>=preferred (not required) | |
| 15:00:34 | Sundar | But Nova does not support preferred traits today. I am told that it is not even close | |
| 15:01:01 | Sundar | So, the next best thing: resource:CUSTOM_ACCELERATOR=1; trait:CUSOTM_FPGA_INTEL_<product>=required | |
| 15:01:19 | Sundar | another extra spec: function:CUSTOM_FPGA_INTEL_<ipsec-uuid>=required | |
| 15:01:45 | Sundar | Now, Placement chooses all devices that match the product, whether or not they have the function | |
| 15:02:21 | Sundar | A Cyborg weigher can check the allocation candidates to see which ones have the function -- based on the function trait -- and rank them higher | |
| 15:03:13 | Sundar | So, Nova is likely to pick a device that has the function. if not, Cyborg agent in the compute node will note the requested function is not present in the selected device/region RP | |
| 15:03:35 | Sundar | It will contact Glance to get a matching bitstream and program it, before the instance comes up | |
| 15:03:46 | zhipeng | where would the weigher be implemented ? | |
| 15:04:06 | Sundar | This is the core of the proposal, and covers situations where each bitstream implements only one function | |
| 15:04:48 | Sundar | Zhipeng: the weigher would initially be a Cyborg weigher in my understanding -- but it is not Cyborg-specific. It could possibly become Nova in-tree hopefully | |
| 15:05:25 | Sundar | The weighe ris looking at a list of RPS and choosing those with a specific trait. It is generic | |
| 15:05:37 | zhipeng | i mean the weigher will be part of the agent ? | |
| 15:06:10 | Sundar | It is a weigher in the Nova controller -- like all other filters/weighers in Nova framework | |
| 15:06:21 | Li_Liu | The weigher has to be in Cyborg Controller I think | |
| 15:07:06 | shaohe_feng_ | yes, it should. And seems nova agree on the weigher | |
| 15:07:18 | Sundar | Li_Liu: OK, what I meant is, it runs in the controlle ralong with Nova/Cyborg. The operator must update nova.conf to use this weigher | |
| 15:07:36 | Li_Liu | Right :) | |
| 15:07:47 | zhipeng | Okey | |
| 15:08:15 | shaohe_feng_ | yes. just a config option in nova | |
| 15:08:45 | zhipeng | Sundar I think it is definitely fine to update the spec patch based upon the current discussion conclusion | |
| 15:09:04 | zhipeng | and let's schedule another video conf for a detailed discussion with Xilinx team | |
| 15:09:08 | Sundar | The part of this proposal which needs further review from Nova is when one bitstream has multiple functions, say crypto and compression. I think that is for the future and may not be needed in rocky. Does that sound agreeable? | |
| 15:09:15 | zhipeng | to see if there is any further improvements | |
| 15:09:37 | shaohe_feng_ | but weigher may be not very high priority. It is help to speed up the creation of a VM. but no helpful for the VM performance after VM start | |