14:00:11 #startmeeting nova_scheduler 14:00:12 Meeting started Mon Oct 9 14:00:11 2017 UTC and is due to finish in 60 minutes. The chair is edleafe. Information about MeetBot at http://wiki.debian.org/MeetBot. 14:00:13 Useful Commands: #action #agreed #help #info #idea #link #topic #startvote. 14:00:15 The meeting name has been set to 'nova_scheduler' 14:00:20 \o 14:00:22 o/ 14:00:22 #link Meeting Agenda https://wiki.openstack.org/wiki/Meetings/NovaScheduler 14:00:23 o/ 14:01:01 Let's wait a minute for more people to arrive 14:01:03 o/ 14:02:21 hola 14:02:30 * jaypipes caffeinated 14:03:01 #topic Specs 14:03:33 Lots merged last week 14:03:42 3 left that I know of: 14:03:43 #link Granular Resource Request Syntax https://review.openstack.org/510244 14:03:46 #link Add spec for symmetric GET and PUT of allocations https://review.openstack.org/#/c/508164/ 14:03:49 #link Support traits in the Ironic driver https://review.openstack.org/#/c/507052/ 14:03:58 Any comments on these? 14:04:17 That first one I just added on Friday. It's introducing the numbered-group syntax in GET /allocation_candidates 14:04:27 I'll review each this morning. the symmetric one is a no brainer I think... 14:04:41 https://review.openstack.org/#/c/507052/ is approved, just won't merge because of the depends-on 14:04:56 the GRanular one was just submitted by efried on Friday. it's the one about requesting multiple distinct "subrequests" of resource/traits 14:04:59 there’s a mild issue in the symmetric one that I’ve just discovered while doing the implementation: 14:05:14 * bauzas waves 14:05:19 when we GET there’s no project_id and user_id in the response, but we require that on the PUT. Do we care? 14:05:39 I’ll highlight it when I commit, and we can discuss it on the review. 14:05:41 cdent: probably should be made consistent... 14:06:56 an aspect of making it consistent is that it kind of assumes that they might stay the same, which may be too big of an assumption 14:07:12 it’s easy to adjust whatever we decide 14:07:16 cdent: agreed 14:07:24 getting the info about the current project/user is fine, 14:07:35 doesn't mean the PUT has to be the same, but i don't know of case where they wouldn't be the same 14:08:47 #topic Reviews 14:08:56 #link Nested RP series starting with: https://review.openstack.org/#/c/470575/ 14:08:59 There was one question attached to this in the agenda: 14:09:01 Debate: should the root_provider_uuid be reported in the GET /resource_providers response? 14:09:16 So my vote is yes. 14:09:21 Someone had concerns about this a while back - anyone remember why? 14:09:31 edleafe Heh, jaypipes said it was you :) 14:09:44 efried: yeah, I think he's mis-remembering 14:10:07 very possible 14:10:18 Okay. My take is that I want to be able to look at a given RP and get the whole tree for that RP in one step. 14:10:31 With parent but not root, I have to walk the whole tree up. 14:10:42 edleafe, efried: I can certainly add it back in if the group votes for that. not a difficult change at all. 14:10:47 With the root ID, I can just call with ?tree=root and I'm done. 14:11:08 makes sense to me 14:11:14 efried: well, you could also just do ?tree= and the backend can query on root. 14:11:25 efried: meaning there's no reason to expose the attribute. 14:12:01 if it works that way, I'd be cool with that. But I still think there's reason to have the root. 14:12:16 like I said, I'm cool putting it in 14:12:19 Thinking about the scheduler using it to figure out e.g. the compute host. 14:12:28 ack 14:12:32 ok, let's vote... 14:12:43 #vote expose the root 14:12:47 sounds kinky. 14:12:55 startvote FTW 14:13:16 Simpler: anyone opposed? 14:13:20 well, let's do it this way... does anyone NOT want to expose the root? 14:13:21 It was likely me that was opposed originally because it seemed an unecessary detail and I was trying to limit the growth of atributes in the representation 14:13:25 edleafe: heh, jinks 14:13:26 jinx 14:13:29 lol 14:13:44 seriously? I dunno 14:13:54 but at this stage, given the extent of hairiness that nested is looking like it is going to become, I don’t reckon it matters 14:13:57 use a coin ? 14:14:00 there’s going to be a lot of hair 14:14:03 so I’d say go for it 14:14:18 bauzas: what say you? 14:14:20 I don't think it hurts 14:14:24 I don't hear anyone saying no, so... 14:14:28 #agreed Add root provider uuid to GET /resource_providers 14:14:33 dansmith, mriedem: any thoughts? 14:14:45 jaypipes: I meant we should flip a coin 14:14:49 for deciding 14:14:53 but meh 14:15:08 I'd have to read back 14:15:15 just a stupid untranslatable and unbearable French try of joke 14:15:23 bauzas: :) 14:15:32 jaypipes: anything else on the nested RP series to discuss now? 14:15:36 so we're talking about exposing something when we don't have a use case to use it? 14:15:39 or a need to use it yet? 14:15:44 I think the spec is pretty rock solid 14:16:07 mriedem: we have one approved spec that would use nested RPs 14:16:09 mriedem: no, there's definitely a use case for it. 14:16:33 oh, the root UUID ? 14:16:35 well, meh 14:16:41 mriedem: it's something that *could* be derived by the caller though. in other words, it just makes life a little easier for the scheduler code. 14:16:52 lemme say something terrible 14:17:07 just pass a parameter for telling whether we should return it 14:17:09 tadaaaaaaa 14:17:40 um 14:17:41 so, honestly, I don't care and like I said, it doesn't hurt 14:17:49 given i don't have context on how the scheduler code is going to look with or without it, i can't really say 14:17:56 if it makes the scheduler client code better, then sure, throw it in 14:18:04 it's not a performance problem, right? 14:18:10 I don't understand why we wouldn't if we have the data 14:18:10 so, should we really care of that? 14:18:37 yeah, the less rebuilding of the tree client-side is the way to go 14:18:41 bauzas: no, nothing perf related 14:19:05 ok, it's settled then, let's move on. 14:19:09 I'll update the review. 14:19:15 danke 14:19:15 jaypipes: again, anything else on the nested RP series to discuss now? 14:19:24 jaypipes: yeah I know, so honestly not a big deal if we leak it 14:19:31 edleafe: just to note that I'm rebasing the n-r-p series on the no-orm-resource-providers HEAD 14:19:47 jaypipes: got it 14:19:53 Next up: 14:19:57 #link Add traits to GET /allocation_candidates https://review.openstack.org/479776 14:20:23 alex_xu is back this week, so we should see some activity there 14:20:36 yea, i 14:20:42 'm working on it 14:20:56 * alex_xu isn 14:21:00 ... 14:21:26 new keyboard layout... 14:21:31 :) 14:21:32 alex_xu: same thing with 14:21:33 #link Add traits to get RPs with shared https://review.openstack.org/478464/ 14:21:35 Use a Dvorak keyboard. The ' is nowhere near the key. 14:21:36 ? 14:22:50 i thought we were deferring shared support from queens? 14:22:56 why bother with api changes? 14:23:20 because when we start working on what the client needs for that support, we might need to change the api 14:23:36 or, is this totally not that and i should shut up? 14:24:03 * bauzas bbiab (kids) 14:24:12 yeah nevermind, this isn't what i thought it was 14:24:53 moving on 14:24:55 #link Allow _set_allocations to delete allocations https://review.openstack.org/#/c/501051/ 14:25:05 cdent: anything going on with that? 14:25:19 it’s just waiting for people to review it pretty much 14:25:53 it’s a precursor to doing POST /allocations 14:26:05 Good segueway 14:26:06 #link WIP - POST /allocations for >1 consumer https://review.openstack.org/#/c/500073/ 14:26:46 next up 14:26:47 #link Use ksa adapter for placement https://review.openstack.org/#/c/492247/ 14:27:10 efried: any comments on these? They look pretty straightforward to me 14:27:39 The base of that series is getting final reviews from mriedem at this point. 14:27:55 That patch itself should indeed be pretty straightforward. 14:28:21 And the rest of the stuff in that series doesn't have anything to do with placement/scheduler. 14:28:29 got the tab open 14:28:44 next up 14:28:45 #link Migration allocation fixes: series starting with https://review.openstack.org/#/c/498950/ 14:29:01 That series is moving along 14:29:54 Final review on the agenda: 14:29:56 #link Alternate hosts: series starting with https://review.openstack.org/#/c/486215/ 14:30:17 I have to add versioning to the allocation_request in the Selection object 14:30:20 :( 14:30:31 jesus does that bottom change still have the s/failure/error/ comment?! 14:31:02 mriedem: what comment? 14:31:21 nvm 14:31:42 ok 14:32:05 I also need suggestions for naming the parameter added to the select_destinations() RPC call 14:32:27 This tells the scheduler to return the selection objects and alternates 14:32:39 I called it 'modern_flag' as a placeholder 14:32:46 let the bikeshedding begin! 14:33:18 Please add your thoughts to the review 14:33:22 Moving on 14:33:23 #topic Bugs 14:33:28 2 new ones: 14:33:36 #link https://bugs.launchpad.net/nova/+bugs?field.tag=placement 14:33:44 #link placement server needs to retry allocations, server-side https://bugs.launchpad.net/nova/+bug/1719933 14:33:45 Launchpad bug 1719933 in OpenStack Compute (nova) "placement server needs to retry allocations, server-side" [Medium,In progress] - Assigned to Jay Pipes (jaypipes) 14:34:05 This was uncovered by mriedem trying to start 1000 servers at once 14:34:24 which wouldn't have fixed the ultimately reason why i was hitting that, but yeah 14:34:25 edleafe: yeah, I'm on that 14:34:31 *ultimate 14:34:40 cool 14:34:44 The other is: 14:34:45 #link Evacuate cleanup fails at _delete_allocation_for_moved_instance https://bugs.launchpad.net/nova/+bug/1721652 14:34:46 Launchpad bug 1721652 in OpenStack Compute (nova) pike "Evacuate cleanup fails at _delete_allocation_for_moved_instance" [High,Confirmed] 14:34:59 gibi has started a recreate for ^ 14:35:18 https://review.openstack.org/#/c/510176/ 14:36:32 #link Functional test for bug 1721652https://review.openstack.org/#/c/510176/ 14:36:32 bug 1721652 in OpenStack Compute (nova) pike "Evacuate cleanup fails at _delete_allocation_for_moved_instance" [High,Confirmed] https://launchpad.net/bugs/1721652 14:36:41 #undo 14:36:42 Removing item from minutes: #link https://review.openstack.org/#/c/510176/ 14:36:50 #link Functional test for bug 1721652 https://review.openstack.org/#/c/510176/ 14:37:22 Anything else for bugs? 14:38:23 * cdent watches the pretty tumbleweeds 14:38:30 mr gorbachev, tear down this meeting 14:38:37 nope 14:38:39 #topic Open Discussion 14:38:55 Getting allocations into virt (e.g. new param to spawn). Some discussion here: 14:38:58 #link Getting allocations into virt http://eavesdrop.openstack.org/irclogs/%23openstack-nova/%23openstack-nova.2017-10-04.log.html#t2017-10-04T13:49:18-2 14:39:38 efried: wanna lead this? 14:40:05 Some alternatives that were (briefly) discussed: 14:40:17 Adding allocations to the request spec 14:40:24 Or elsewhere in the instance object. 14:40:47 IIRC, those were rejected because of general resistance to glomming more gorp onto those things. 14:41:04 Yeah, glomming gorp is bad 14:41:36 The drive for this is for virt to be able to understand comprehensively what has been requested of it. 14:41:58 right now it's just going to be passing shit through flavor extra specs isn't it? 14:42:00 unless we change that? 14:42:33 Which is limited 14:42:33 doesn't alex_xu have a spec for specifying traits in a flavor 14:42:38 yes 14:43:12 efried: so you want something more spectific, no? 14:43:18 we agreed to limited support for stuff like vgpus in queens 14:43:23 I guess efried is talking about specific resource allocated to the instance? 14:43:28 what are you needing? like a complex data structure? 14:43:35 E.g., not just a VF, but a VF on a particular PF? 14:43:38 Right; flavor extra specs tells us what was requested generically; the allocations will tell us specific RPs etc. 14:43:50 edleafe just so. 14:44:02 mriedem Not any more complex than the allocations object :) 14:44:19 so, as a user, i want not only a VF, but the 3rd VF on 4th PF? 14:44:23 * edleafe remembers when we were making clouds... 14:44:41 mriedem Or possibly just "a VF on the 4th PF". But yeah, that's the general idea. 14:44:49 ew 14:44:51 Because placement is going to have allocated inventory out of a specific RP. 14:44:58 do we need this for queens? 14:45:06 If spawn doesn't have any way to know which one, how does it know where to take the VF from? 14:45:19 it's random isn't it? 14:45:27 What's random? 14:45:38 the PF 14:45:39 Certainly not which PF the VF comes from. 14:45:43 No, not at all. 14:45:46 or is that all whitelist magic? 14:45:50 Could be based on traits, inventory, etc. 14:45:54 Not even thinking about whitelist. 14:46:29 Placement narrowed it down, scheduler picked one. Virt needs to know which one. 14:46:48 can't virt ask placement for the one that was picked? 14:46:59 Yes, could. 14:47:06 But I got the impression we didn't want virt to talk to placement. 14:47:18 it already does for reporting inventory 14:47:27 bauzas and dansmith both expressed that 14:47:31 Not directly 14:47:49 virt == compute service == contains the rt that reports inventory 14:47:55 in my head anyway 14:48:00 virt != compute service:) 14:48:06 "virt driver" then. 14:48:06 virt should not talk directly to placement, IMHO 14:48:09 compute should 14:48:15 ok, 14:48:22 so compute manager asks placement for the allocations for a given request, 14:48:28 builds those into some fancy pants object, 14:48:32 and passes that to the virt drive 14:48:33 *driver 14:48:44 ? 14:49:07 Didn't scheduler already give that allocations object to compute manager? 14:49:09 compute should provide the allocations to virt when needed, yeah 14:49:15 just like the neutron network API asks neutron for ports, builds network_info and passes that to spawn 14:49:30 efried: no 14:49:53 So it'll have to ask placement for that allocations object. Okay. 14:49:56 so this essentially sounds like the same thing we do for bdms and ports 14:50:08 so in _build_resources you yield another new thing 14:50:13 and pass that to driver.spawn 14:50:17 And yeah, I guess we could funnel it into a pythonic nova object (which may eventually be an os-placement object) 14:50:29 right 14:50:32 oo we're already talking about new libraries?! 14:50:40 :P 14:50:41 When we split placement out into its own thing? 14:50:49 Sorry, don't mean to muddy the waters. 14:51:13 ok so in the Slime release... 14:51:36 anyway, i think you get the general idea of what the compute would do yeah/ 14:51:37 ? 14:52:00 You're saying this isn't something we want to do in Queens? 14:52:00 is there a specific bp that is going to need this? 14:52:15 there are things we can want to do, and things we can actually get done 14:52:34 Well, I don't see how e.g. the vGPU thing is going to work without it. 14:52:37 i'm trying to figure out what we actually need to get done so we can focus on those first 14:52:52 Unless we bridge the gap by having the virt driver ask placement for the allocations. 14:53:08 is there any poc up yet for that? 14:53:19 maybe the xen team hasn't gotten that far? 14:53:21 For vGPU? 14:53:23 yeah 14:53:41 bauzas was going to be working on this 14:53:42 anyway, maybe it will be needed, but i'd check with the other people working on this too 14:53:43 Wasn't there a big stack with mdev in libvirt? 14:53:52 providing the allocation to virt so we could do that 14:53:53 however, 14:53:54 the totally separate effort? 14:54:00 we can use the flavor for right now and move on 14:54:33 dansmith And accept that the virt driver may pick a different PF than that from which placement allocated the inventory? 14:54:50 And have the virt driver duplicate the logic to check for traits? 14:54:51 efried: placement isn't picking PFs right now 14:54:51 efried: so how about you follow up with the xen team and see what they had in mind for this, 14:55:25 placement is picking specific RPs. Depending how the RPs are modeled, those could be PFs. Just using PFs as a general example. 14:55:30 efried: it's just picking "has a vgpu" which means virt can easily grab the first free one and do that thing 14:55:40 Unless traits. 14:55:55 efried: we don't have nrps, which means it's not picking traits 14:56:06 er, picking PFs, 14:56:08 All of that is landing in Queens, early. 14:56:13 at least in theory. 14:56:15 but also means no multiples, so traits are irrelevant 14:56:28 Also hopefully landing in Queens. 14:56:35 * bauzas is back 14:56:41 efried: yeah, in theory and we're working on it, but we can easily land a flavor-based thing right now and have that as a backup if we don't get NRPs or something else blocks us 14:56:43 it's trivial 14:57:07 3 minutes to go 14:57:17 Let me ask it this way: does putting allocations in a spawn param need a blueprint? 14:57:20 if we linearize everything, something is definitely going to miss queens 14:57:26 efried: not IMHO 14:58:08 Cool. Then if someone gets the bandwidth to propose a patch, and it doesn't seem too heinous, it could happen. 14:58:09 efried: the thing I'm worried about is that if we go the allocation route, 14:58:27 you have to build a big matrix of rp_uuids to actual devices and figure out how to do all that accounting before you can do the basic thing 14:58:39 however, if we just assume one set of identical gpus per node with flavor right now, 14:58:45 you can get basic support in place 14:59:08 if we rabbit-hole on this after NRPs are done, we could likely miss queens and bauzas will be taken to the gallows 14:59:10 dansmith Sure, fair point. That matrix of RP UUIDs to devices is something that's going to have to happen. 14:59:17 efried: totes 14:59:35 efried: but let's not hamstring any sort of support on that when we can do the easy thing right now 14:59:54 Sure 15:00:01 OK, thanks everyone! Continue the discussion in -nova 15:00:01 #endmeeting