14:02:54 #startmeeting openstack-cyborg-driver 14:02:55 Meeting started Mon Jun 4 14:02:54 2018 UTC and is due to finish in 60 minutes. The chair is shaohe_feng. Information about MeetBot at http://wiki.debian.org/MeetBot. 14:02:56 Useful Commands: #action #agreed #help #info #idea #link #topic #startvote. 14:02:58 The meeting name has been set to 'openstack_cyborg_driver' 14:03:14 #topic Roll Call 14:03:28 #info Sundar 14:03:29 #info shaohe 14:04:16 #info Helloway 14:05:53 Sundar_, let's wait minutes for other? 14:06:21 evening wangzhh 14:06:23 hi 14:06:35 hello tony 14:06:58 hello everyone 14:07:11 hello everyone 14:07:32 shaohe: Sure 14:08:12 OK. let's start. 14:08:19 Hi Tony 14:08:26 Hi Wangzhh 14:08:29 Hi 14:08:31 welcome tony 14:08:39 #topic current status of drivers 14:09:16 ths shaohe 14:09:17 I have list the tasks on the etherpad #link https://etherpad.openstack.org/p/cyborg-driver-tasks 14:09:53 let go through the tasks 14:10:20 wangzhh, are you going on the VGPU? 14:10:31 OK. Let introduce my work. 14:10:50 welcome. 14:11:08 I'm going on the VGPU. 14:11:42 And when I merged my code. I find some exist bug:( 14:12:12 cyborg-agent doesn't work well. 14:12:35 Such as https://review.openstack.org/#/c/572080/ 14:13:56 So, before VGPU driver, maybe I should fix them first. 14:14:13 good catch. 14:14:49 so this is an urgent fix. 14:15:10 Hi sorry for being late 14:15:21 xinran__, evening. 14:15:50 Li_liu is not on line. 14:16:11 he introduce deployable object. 14:17:04 Sundar_, and other developers, please help to review wangzhh bug fix 14:17:15 #link https://review.openstack.org/#/c/572080/ 14:18:05 wangzhh, other process on VGPU? can you help to update the task list? #link https://etherpad.openstack.org/p/cyborg-driver-tasks 14:19:12 ^ wangzhh, update the status. 14:19:23 OK, next. 14:19:29 shaohe_feng: OK 14:19:46 SPDK, Helloway are you on line? 14:20:38 yes 14:21:15 so any process on the SPDK? 14:22:37 Temporarily no 14:24:38 Helloway, can you help to update the SPDK status on the #link https://etherpad.openstack.org/p/cyborg-driver-tasks ? 14:24:58 OK, next provider report. 14:25:52 Sundar_, Do we support multi-resource class and nest provider in this release 14:26:09 Shaohe: IMHO, it is becoming risky 14:26:31 Sundar_, what's the risky? 14:26:38 We have been waiting too long. Even in today's discussion in Nova scheduler meeting, it is not clear that it is going to come soon 14:27:05 how should we do? 14:27:08 IMO, we should switch immediately to my originally proposed plan to use compute node as RP, till we get nRP 14:27:56 This means we can have multiple devices on the same host but they must all have the same types/traits 14:28:02 OK. Can you have a discuss with jaypipes about cyborg's resource provider? 14:28:11 during the summit? 14:28:30 E.g. 2 GPUs, 2 FPGAs both from Xilinx with same device family, 2 FPGAs both from Intel (say A10) etc 14:29:22 I discussed with edleafe etc., primarily on the comments that we should not have vendor/product/device names in traits. 14:29:40 That got resolved, because we do need vendor/device names, but not product names. The spec has been updated 14:29:57 On nRP, it is a larger discussion, that is still going on in the Nova community 14:30:09 if we have a 1 Xilinx and 1 intel's FPGA on one host, what's the resource name? and what's the traits name? 14:30:33 We cannot have that unless we get nRPs. I'll explain why 14:30:47 OK. please 14:30:47 * edleafe is here. Didn't know the meeting time changed 14:31:04 For each device (GPU or FPGA), we will apply a trait like CUSTOM_GPU_AMD, CUSTOM_FPGA_INTEL 14:31:30 In your example, it will be CUSTOM_FPGA_INTEL and CUSTOM_FPGA_XILINX 14:31:55 We will also publish the resource class as CUSTOM_ACCELERATOR_FPGA 14:32:14 I would prefer 2 nested children, each with an inventory of 1 CUSTOM_FPGA. Then use traits to distinguish them 14:32:20 However, without nRP, it will get applied on the compute node, not on the individual devices 14:32:47 shaohe: that requires nRP. We may not get that soon enough to meet our Rocky goals. 14:33:26 There is currently discussion in placement on the potential upgrade problems when moving from non-nested to nested. It would be better to only plan on implementing on the nested model if possible 14:34:00 Without nRP, it will get applied on the compute node. So, the cpmpute node will advertise 2 units of CUSTOM_ACCELERATOR_FPGA, with 2 traits: CUSTOM_FPGA_INTEL and CUSTOM_FPGA_XILINX. But, Placement wil see that as 2 RCs each with 2 traits 14:34:23 There is no way to say that one unit of the RC has one trait, and the other has another trait 14:34:59 Does that make sense? 14:35:07 Sundar_: precisely. That's the main reason for waiting for nested 14:35:58 edleafe, Sundar_ : there's issue in this way. 14:36:24 edleafe: Thanks for joining. My concern is, we are already in June and even today's Nova sched discussion indicates concerns with rolling upgrades and nRPs 14:36:46 It would be better to get something done with caveats, than nothing 14:37:23 for example, user apply one CUSTOM_FPGA_XILINX, then inventory will remain one intel's CUSTOM_ACCELERATOR_FPGA 14:37:49 then user still apply one CUSTOM_FPGA_XILINX, what's will go on? 14:38:04 But besides the issues noted with moving from non-nested to nested, Cyborg will also have to re-do a lot of the naming of custom resource classes 14:38:11 shaohe: traits go with resource providers (RPs), not resource classes (RCs) 14:39:55 Sundar_, yes, that's issue. 14:40:41 Sundar_, so the user still can apply a FPGA, but not XILINX that he expect. 14:44:16 edleafe, any suggestion on this issue? 14:44:48 Hi 14:45:02 wangzhh proposed openstack/cyborg master: Fix Deployable get_by_host https://review.openstack.org/572080 14:45:16 Can you see my typing? 14:45:20 Sundar_, welcome to come back 14:45:33 Sundar_, just see "Hi" 14:45:37 I got blocked for some reason -- whatever I typed did not show up 14:45:49 edleafe, Sundar_ , only support one kind of FPGA to avoid this issue? 14:46:13 Yes, omultiple devices ok, but all of the same type 14:46:30 We cannot have a GPU and a FPGA on the same host, or 2 kinds of FPGAs 14:46:39 That should be ok for Rocky 14:48:05 shaohe_feng: sorry, had to step away for a moment 14:48:39 shaohe_feng: FPGA is a resource *class*. GPU is a resource *class* 14:48:49 They should be modeled that way from the start. 14:49:01 specific types should be distinguished with traits 14:49:27 edleafe: That is exactly what we are doing 14:49:54 Sundar_: good. I really would hate to see things like CUSTOM_FPGA_XILINX 14:50:14 It is just that, without nRPs, we will apply the traits to the compute node, for Rocky cycle alone. That means, all devices on the same host must have the same traits. 14:50:37 edleafe: CUSTOM_FPGA_XILINX would be a trait on the RP, not a RC 14:50:39 CUSTOM_FPGA_XILINX is resource or traits? 14:50:55 We are still hoping to have NRP complete in Rocky 14:51:02 shaohe: trait, not RC 14:51:25 ah, that wasn't clear. In context I thought you were using it as an RC 14:51:39 edleafe: I understand, but with 2 months left to go, I think we are risking Cyborg's Rocky goals by waiting further 14:52:42 Sure, that's understandable. I just want to make sure you know that that will make moving to an NRP design later harder 14:53:08 What makes the switch to nRPs hard? 14:53:54 The set of RCs and traits will stay the same. But we will apply the traits to individual device RPs later 14:54:50 You will have inventory of devices for the compute node. When you upgrade, somehow these must be converted to a nested design, and any existing instances that are using those resources will have to have their allocations moved. That is the current upgrade discussion going on. 14:55:42 Remember, allocations are for an instance against the RP. When you move to nested, you now have a new child RP, and the allocations should be against it 14:56:28 But they will be against the compute node for any existing instances at the time of upgrade. How to reconcile all of this correctly is what we are trying to work out now 14:58:31 OK 14:58:48 OK. There are 2 options: (a) Do not support expectations of upgrades for Cyborg in rocky (IMHO, Rocky addresses the basic Cyborg use cases and lays a strong foundation for further development) (b) Support upgrades by providing some mechanism to delete traits on compute node at a safe time (would appreciate your input here) 15:00:23 edleafe: What do you think? 15:00:24 Sundar_, can you summary it, and we can get conclusion on Wednesday's meeting 15:00:56 ^ edleafe, any suggestion on it? 15:01:00 shaohe: Above is the summary :). What additional info do you want? 15:01:14 You would probably have to write some custom upgrade script to iterate over all machines to find old-style traits and allocations, convert them to the new style, and then delete the old ones 15:01:55 Sundar_, does these 2 options are mutually exclusive? 15:02:20 edleafe: On an upgrade, the new agent/driver(s) will automatically create nested RPs and apply traits there, while the old traits on the compute node still exist 15:03:21 Can we then delete the traits on the compute node, while instances are still running? 15:04:14 If so, we can provide a script that the operator must run after upgrade, which deletes Cyborg traits on compute nodes 15:05:14 shaohe: they are exclusive. 15:06:29 Sundar_: Traits aren't the issue. Allocations / Inventory is what is important to update 15:07:15 Otherwise, a compute node will have, say, inventory of 2 FPGAs, and will now have two child RPs with an FPGA inventory 15:07:38 In that example, Placement will now see 4 FPGAs on the one compute node. 15:08:06 edleafe: True. May be the upgrade script can set the reserved to total for the compute node RP? 15:09:07 That's one way. The other would be to simply delete that inventory, since it really isn't the compute node's anymore 15:09:44 Can we do that while the instances are still using that inventory? 15:09:44 Allocations will also have to be adjusted, because having a double allocation has an impact on things like measuring quotas 15:10:09 Sundar_: :) Now you 15:10:12 oops 15:10:33 Now you're seeing why I don't like to go the non-nested to nested path 15:10:43 Can we do that while the instances are still using that inventory? 15:11:03 i.e. delete the inventory on compute node RPs 15:11:05 There are a lot of issues, and we're tyring to come up with a generic solution that will work for Cyborg as well as things like NUMA 15:11:40 edleafe, does provider support NUMA at present? 15:12:11 edleafe, how do we organizate 15:12:21 shaohe_feng: yes, but in a non-nested way 15:12:59 We're trying to figure out how to do that upgrade, and it doesn't look easy 15:13:59 one in numa node0, another in numa node1 15:14:38 The way NUMA has been modeled in Nova is a horrible hack that was done before Placement even existed 15:14:40 May be it is simplest to go with option a: for upgrades with Cyborg, first stop all instances using accelerators, run a script that cleans up, then upgrade to new Cyborg. For other subsystems, I understand the issue. But, Cyborg is a new and we can set expectations 15:15:14 Sundar_: yes, that is a luxury that a generic solution wouldn't have 15:16:39 edleafe, ^ any suggestion on the ultima solution for cyborg accelerator numa topo ? 15:18:22 shaohe_feng: I would think it would look something like: compute_node -> NUMA node -> FPGA device -> FPGA regions - > FPGA function 15:18:52 But from what I know of NUMA, you can configure it multiple ways. 15:20:43 compute_node is provider, NUMA node is provider, FPGA device , FPGA regions, FPGA function are all provider? 15:20:49 ^ edleafe, 15:21:15 Sundar_, have consider numa topo for FPGA 15:21:23 shaohe_feng: yes. The only inventory is the function, which is what the user wants 15:21:23 ? 15:21:51 edleafe, ok, got it. 4 level provider. 15:21:53 thanks 15:22:30 shaohe: kinda. But, my suggestion is to focus on the basics for Rocky. If we try to throw in everything, we will not deliver anything 15:23:01 shaohe_feng: of course, it doesn't *have to* be that way, but it is one possibility 15:24:31 edleafe, thanks again. 15:24:50 Sundar_, let's go ahead? 15:25:00 for next task? 15:25:29 Yes, I will send an email to openstack-dev, proposing this (lack of) upgrade plan 15:25:55 Sundar_, OK, please, thanks. 15:26:06 next is Intel FPGA driver 15:26:40 I see the owner is rorojo 15:26:58 Sundar_, rorojo is not on line 15:27:09 can you help to sync with him? 15:27:31 Yes. Discussions are ongoing about the implementation 15:27:40 great. 15:27:46 any update there? 15:28:35 Nothing significant. I helped Rodrigo to get started, with code browsing etc 15:28:57 I had issues with devstack myself :), but I got that fixed, so I have a working deployment on MCP now 15:29:20 I am now working on agent-driver API update 15:29:59 Sundar_, Oh, we have improve the devstack doc 15:30:08 let me find it for you. 15:31:02 #link https://docs.openstack.org/cyborg/latest/contributor/devstack_setup.html#devstack-quick-start 15:31:06 The issue was not with Cyborg plugin. I was hitting version conflicts on various components in oslo etc. 15:31:38 OK, there's a bug on oslo components? 15:32:13 I had to do a 'pip install --upgrade' on many components, because they were lower version than the minimum 15:32:37 Then, I took eveything in /opt/stack/requirements/lower_constraints.text and tried to do a mass upgrade 15:33:06 should we submit a patch to upgrade the cyborg requirement? 15:33:09 That failed because some components need Python 3. So, I excluded some things manually, and otherwise hacked, till it worked 15:34:02 The issue is, devstack does not seem to upgrade the components to their minimum versions automatically. 15:34:08 wangzhh proposed openstack/cyborg master: Fix Deployable get_by_host https://review.openstack.org/572080 15:34:43 This is not Cyborg-specific 15:35:31 FPGA programing, Li_liu is not on line. let's skip it. 15:35:54 HPTS, yumeng is not online, skip it. 15:36:12 Cyborg/Nova interaction, Sundar_ 15:36:33 You may have seen the spec updates 15:36:46 Waiting for approval 15:36:50 Sundar_: Maybe you can try PIP_UPGRADE=True in local.conf 15:37:22 wangzhh: Thanks, will try it next time 15:37:40 wangzhh, thanks. can you submit a patch for our developer guider? 15:38:13 Hi Sundar, there are one problem we faced in our environment: suppose there are two GPU in one host, when attaching one gpu to vm, if this attachment is failed, will nova try to attach the second gpu in this host to vm? 15:38:23 wangzhh, also with other doc bugs. #link https://docs.openstack.org/cyborg/latest/contributor/devstack_setup.html#devstack-quick-start 15:38:37 It's an common config. Do we need to maintain it? 15:39:04 wangzhh, maybe we can add some note for developer. 15:39:05 sorry to interrupt. 15:39:18 Guest4480, it does not matter. 15:39:18 OK. 15:39:33 Guest4480, go ahead. 15:39:55 Sundar_, Guest4480 ask help from you. 15:40:12 Guest4480: since they are independent resources, failure to attach one should not affect the other one. 15:41:49 next task. 15:42:26 Cyborg/Nova interaction(nova side), Sundar_ any plan for it. Should we move it in next release? 15:42:58 What does that mean? 15:43:15 Sundar_, I think you will talk with jaypipes, edleafe and other nova developer's about it. 15:43:24 Do you mean, nova compute calling into os-acc? 15:43:55 Yes, we need to follow up. We have an os-acc spec, which is awaiting approval 15:44:36 I will update the specs once more by this week 15:44:53 zhipengh[m], zhuli_ will works on os-acc. 15:45:04 Sundar_: ping me in -nova when they are ready 15:45:30 edleafe: Sure. Thanks 15:45:43 Sundar_, but we still need volunteers working on nova side. 15:45:50 OK, we will follow the spec to see where to add our work(code) which has be done. 15:46:12 shaohe_feng: I can help with the nova side 15:46:55 Excellent, edleafe. Nova compute needs to call into os-acc for specific instance events, as documented in os-acc spec 15:47:11 #link https://review.openstack.org/#/c/566798/ 15:47:18 edleafe, thanks. 15:48:22 Sundar_, you can have more details with edleafe. 15:48:30 Yes 15:48:36 thanks. 15:48:43 next task. 15:48:45 Quota for accelerator 15:48:51 xinran__, are you on line? 15:49:14 Yes 15:49:15 I need to drop off in 5 minutes 15:49:20 I’m here 15:49:25 OK. 15:49:45 Cyborg/Nova/Glance intercation in compute node, including os-acc 15:49:51 Sundar_, it is ready? 15:50:19 xinran__, how is quota going on? 15:50:44 wangzhh proposed openstack/cyborg master: Fix Deployable get_by_host https://review.openstack.org/572080 15:50:50 can you update the task status on the #link https://etherpad.openstack.org/p/cyborg-driver-tasks 15:50:57 shaohe: I will respond to comments and update it. Hopefully, we are on the last iteration 15:51:14 I implemented quota reserve and commit in api layer 15:51:14 Sundar_, thanks. 15:51:26 xinran__, ok, thanks. 15:51:56 that's all for today's task status 15:52:06 Sundar_, have a good day. 15:52:13 it is too late in China. 15:52:18 But I got sundar’s comment that the first point nove enter to cyborg is agent, I’m not sure about that 15:53:07 do you means nova will call cyborg agent directly? 15:53:40 Nova compute calls os-acc, which calls Cyborg agent 15:54:34 Bye 15:54:57 Bye 15:55:36 no time left for us to discuss it on today's meeting. let's remain it to Wed's meeting. 15:55:49 okay bye 15:55:50 For it is too late in China. 15:56:08 okey meeting adjourned 15:56:26 #endmeeting