17:00:18 <alaski> #startmeeting nova_cells 17:00:19 <openstack> Meeting started Wed Jan 14 17:00:18 2015 UTC and is due to finish in 60 minutes. The chair is alaski. Information about MeetBot at http://wiki.debian.org/MeetBot. 17:00:20 <openstack> Useful Commands: #action #agreed #help #info #idea #link #topic #startvote. 17:00:22 <openstack> The meeting name has been set to 'nova_cells' 17:00:23 <vineetmenon> hi 17:00:31 <bauzas> bonjour 17:00:33 <bauzas> \o 17:00:37 <alaski> o/ 17:00:39 <melwitt> o/ 17:00:42 <dansmith> o/ 17:00:48 <belmoreira> o/ 17:01:09 <alaski> well, we have a simple agenda today 17:01:21 <alaski> #topic scheduling 17:01:28 <bauzas> link ? 17:01:33 <bauzas> about the agenda 17:01:38 <alaski> https://wiki.openstack.org/wiki/Meetings/NovaCellsv2#Agenda 17:01:45 * bauzas is too lazy... 17:01:49 <edleafe> o/ 17:02:01 <alaski> https://review.openstack.org/#/c/141486/ is the current review for cells scheduling 17:02:26 <bauzas> thanks for having updated it 17:02:27 <alaski> last week the consensus was that we would spend this week diving into scheduling 17:03:10 <alaski> so what are the current points of consternation or interest? 17:04:04 <vineetmenon> how is failure being handled in this scheme? 17:04:12 <vineetmenon> i mean, are we in a position to discuss details? 17:04:26 <bauzas> alaski: I'm basically +1 your spec 17:04:39 <alaski> vineetmenon: some level of detail, yes 17:04:52 <belmoreira> alaski: I like this proposal as well 17:04:58 <alaski> vineetmenon: but I would like to get the broad details discussed before getting too deep 17:04:59 <bauzas> alaski: some details are a bit debatable that said 17:05:20 <dansmith> agreed, I'm pretty much on board with that spec 17:05:31 <bauzas> alaski: I'm really concerned about how you plan to persist those request details (for not naming the devil by its name) 17:05:39 <johnthetubaguy> alaski: I like the general idea, question about the cells v1 support though 17:05:58 <belmoreira> alaski: I have some questions that I'm commenting in the spec but I think we can discuss here as well 17:06:02 <johnthetubaguy> alaski: can we not just have the top level scheduler send an RPC to the child scheduler, rather than do a partial decision? 17:06:28 <dansmith> johnthetubaguy: that's really a detail for later, right? 17:06:31 <dansmith> meaning, 17:06:33 <bauzas> johnthetubaguy: I really like the idea to have the cells API to manage the 2 calls rather than a top sched proxying children 17:06:40 <alaski> johnthetubaguy: yes. but let me elaborate for a sec 17:06:57 <dansmith> the concerning bit is handling the api contract, and what happens after the fact to get to a cell,host is something else 17:07:08 <alaski> johnthetubaguy: basically what dansmith said 17:07:14 <dansmith> \o/ 17:07:18 <alaski> heh 17:07:20 <bauzas> dansmith: right 17:07:29 <johnthetubaguy> yeah, thats fair 17:07:35 <bauzas> that was indeed my 2nd question 17:07:49 <bauzas> I recall the first one : how do you plan to persist the request 17:07:53 <belmoreira> I like the proxy option... 17:08:18 <alaski> bauzas: essentially by persisting what is sent in the API request 17:08:27 <alaski> bauzas: in a very basic manner for now 17:08:36 <dansmith> we need to generate them a uuid 17:08:44 <dansmith> but otherwise, if we store what they sent us, plus the uuid, that's enough I think 17:08:57 <alaski> yep, that was my thinking as well 17:09:06 <bauzas> alaski: so let me say the devil's name, don't you think that http://specs.openstack.org/openstack/nova-specs/specs/kilo/approved/request-spec-object.html would be a dependency FWIW 17:09:07 <bauzas> ? 17:09:16 <johnthetubaguy> alaski: about the request_spec store, I guess the other way I remember dansmith mentioned was instread having the instance "cache" hold the data from the beginning? But thats a detail really, thats just the how its stored, I agree we need to store it 17:09:22 <bauzas> provided that we persist that object of course 17:10:22 <alaski> bauzas: I'm not too concerned about whether we persist the object, or the input that allows the creation of the object 17:11:04 <bauzas> alaski: well the history showed us that persistency is worth good 17:11:05 <alaski> bauzas: I don't want to be blocked on the request spec object, but if it's in place I think it would be worth using 17:11:15 <johnthetubaguy> I am trying to think about any other APIs that return before creating an object in a specific cell, but I guess instance is the only oneā¦ 17:11:21 <dansmith> bauzas: persistency? :P 17:11:32 <dansmith> instance is the big one for sure 17:11:36 <bauzas> dansmith: aren't we all French, someone said last week in the news ? :) 17:11:47 <dansmith> they said persistency? awesome 17:12:05 * bauzas reading a dictionary now 17:12:18 <alaski> johnthetubaguy: there might be more, but we'll tackle them as they come up 17:12:32 <bauzas> eh I was close, only 2 letters to change 17:13:06 <bauzas> alaski: agreed on the plan, we can maybe iterate on what you need first, and integrate with ReqSpec while it comes 17:13:17 <alaski> johnthetubaguy: where it's stored is a detail, but what I like about using a separate table for the persistance right now is since the data is short lived we can iterate that store over time without worrying too much about compatibility/versioning 17:13:23 <johnthetubaguy> alaski: agreed, I was just wondering if going the tasks route will help give us a more general solution than storing "build_request", but I am probably thinking too deep 17:13:35 <johnthetubaguy> alaski: yeah, agreed, too deep 17:13:50 <bauzas> alaski: and FYI https://review.openstack.org/#/q/status:open+project:openstack/nova+branch:master+topic:bp/request-spec-object,n,z is implemented on the object side 17:13:51 <johnthetubaguy> I agree with having to store "the request" for the reasons you state 17:14:20 <alaski> bauzas: cool, I'll look into it 17:14:27 <bauzas> sounds like we're in violent agreement then ? 17:14:30 <alaski> johnthetubaguy: cool 17:14:44 <alaski> bauzas: with the broak strokes at least 17:14:50 <alaski> s/broak/broad/ 17:14:55 <bauzas> alaski: do your homework, create a table and then we'll see how to turn up to the object later on 17:15:19 <bauzas> alaski: of course, you still need to iterate your spec by adding details on the *persistance* 17:15:33 <dansmith> yeah, needs fleshing out 17:15:41 <alaski> yeah. so realistically I think this is multiple specs 17:16:00 <bauzas> alaski: +1 17:16:09 <bauzas> we need to split out things 17:16:27 <bauzas> there is also some scheduling homework 17:16:30 <alaski> I can break this out now that there's general agreement, but I'm not sure what we can get moving during the freeze 17:16:37 <alaski> but I'll push on what I can 17:16:49 <bauzas> alaski: are you planning to implement something for Kilo ? 17:17:04 <alaski> bauzas: yes 17:17:17 <bauzas> alaski: I guess then the approved specs, right ? 17:17:20 <alaski> there's already approved specs which need implementations 17:17:40 <alaski> and I would like to continue into scheduling if we get to that point 17:17:47 <bauzas> alaski: hence my point, that's not really a problem to rewrite those scheduler specs, as it's not planned for Kilo 17:17:47 <alaski> how that's done is an open question right now 17:18:08 <bauzas> alaski: yeah, but we can work on drafts and merge on L 17:18:27 <bauzas> alaski: I can see some point where the scheduler should serve CellsV2 as destinations 17:18:30 <mvineetmenon> the approved specs are for cell-instance-mapping and scheduler, right 17:18:43 <mvineetmenon> what are you planning to implement in those? 17:18:44 <bauzas> I mean that the scheduler should provide cells as a result 17:18:49 <alaski> mvineetmenon: not scheduling 17:19:12 <bauzas> well, I think the extra DB thing is already a huge thing :) 17:19:16 <alaski> bauzas: sure, let's focus on what's approved and iterate on this in the mean time 17:19:29 <bauzas> alaski: because you need to cable all the bits for creating a 2nd DB 17:19:45 <alaski> are there more specifics on scheduling that anyone would like to dive into now? 17:19:47 <bauzas> alaski: did you work on a POC for this btw. ? 17:20:06 <alaski> bauzas: I have not 17:20:12 <bauzas> alaski: again, I think that for scheduling, we need to split this spec into specific items 17:20:26 <bauzas> and see what's needed to change in the scheduler 17:20:41 <bauzas> the current proposal is vague about the capability of providing cells 17:20:55 <bauzas> do you plan to merge the Cells V1 scheduler code into the mainstream one ? 17:20:59 <bauzas> alaski: ^ 17:21:02 <mvineetmenon> .join ##barc-cern-openstack 17:21:29 <alaski> bauzas: not exactly 17:21:36 <bauzas> alaski: cool 17:21:37 <belmoreira> bauzas: how the scheduler will handle the case of the 2 layer approach? 17:21:53 <bauzas> belmoreira: I was thinking of extending the Scheduler API 17:22:03 <bauzas> by adding a new method 17:22:15 <belmoreira> but will the top scheduler be aware of everything anyway? 17:22:20 <alaski> bauzas: there are some filters and weighers for cells that the scheduler should be able to handle. We'll need to determine the gaps that need to be filled so that can happen 17:22:26 <bauzas> that would be the safiest approach, as many bps are planning to work on select_dest() 17:22:42 <bauzas> alaski: agreed, we need to jump into the details 17:23:06 <bauzas> alaski: and I have to admit I have to dig into the Cells V1 scheduler code, my knowledge being vague on it 17:23:18 <belmoreira> bauzas: but one of the goals of cells if to split things... 17:23:42 <bauzas> belmoreira: I don't get your point ? 17:23:51 <alaski> bauzas: it's quite similar to the scheduler in it's manner of operation, but it schedules primarily by flavor availability 17:24:03 <bauzas> alaski: ack 17:24:11 <dansmith> I thought the plan was to make the scheduling flexible enough to use single-level scheduling by default, but allow 2-level if there was some reason 17:24:20 <dansmith> like, a filter that could punt to a second scheduler 17:24:40 <vineetmenon> ***scalalibity*** ? 17:24:40 <dansmith> because with a caching scheduler, I don't really understand why two levels are needed 17:24:57 <belmoreira> dansmith: in that case the first schedule will only have limited light info, right? 17:25:19 <dansmith> belmoreira: no, I don't think so, but it may make lightweight decisions 17:25:44 <belmoreira> dansmith: for example we have filters enabled in only some cells 17:25:56 <johnthetubaguy> dansmith: I think we should be able to pick from all hosts from all cells in one go, and just tell the caller which cell it was (at least until some level of scale) 17:26:07 <dansmith> johnthetubaguy: that's what I'd like, yeah 17:26:13 <vineetmenon> dansmith: so, the first scheduler is powerful enough to select a cell, host tuple? 17:26:18 <edleafe> johnthetubaguy: +1 17:26:22 <dansmith> vineetmenon: yeah 17:26:23 <johnthetubaguy> we would need some extra stuff to filter on cells properties, but that just works 17:26:24 <melwitt> johnthetubaguy: +1 17:26:52 <bauzas> dansmith: that's possible, provided we define a clear abstraction 17:27:05 <bauzas> dansmith: at the moment, the mainstream scheduler is host-centric 17:27:19 * vineetmenon is thinking about scalability issues with thousands of nodes 17:27:22 <johnthetubaguy> the problem is when the caching scheduler's DB call takes so long, its doing nothing else, but we can hopefully ignore that case 17:27:41 <dansmith> well, I think a cell-aware scheduler is just one that has info about cells and extra filters to make cell-based decisions early in the stack and then host-based decisions once you select a cell 17:27:42 <melwitt> I like dansmith's idea of the flexibility to go to two-level later on 17:27:52 <dansmith> right, and so once that's properly abstracted, 17:27:57 <alaski> bauzas: agreed. no matter the physical setup of the scheduler I think it logically needs to operate on cells and hosts 17:28:00 <johnthetubaguy> vineetmenon: there were some plans to use kafka as the data store to get incremental updates, a-la no-db-scheduler plan from a few releases back, but I am ignoring that as a detail 17:28:10 <dansmith> we should have the ability for a filter to return "contact scheduler at 1.2.3.4 to continue" 17:28:18 <dansmith> and just let it punt to the next one 17:28:28 <johnthetubaguy> alaski: I think its a list of hosts, and cell is a property of the host, but its the same difference really 17:28:40 <dansmith> that way if you *want* to have lots of schedulers, with different configs, you can write filters such that you'll proceed from top to mid to bottom scheduler before a decision is made 17:28:52 <melwitt> +1 17:29:00 <alaski> johnthetubaguy: I disagree, because cells have capabilities on their own with no regards to the hosts 17:29:02 <bauzas> dansmith: but you mean that a filter would issue a call to a 2nd scheduler ? 17:29:13 <johnthetubaguy> alaski: thats the same as aggregates today though 17:29:23 <dansmith> bauzas: or return some result that says "stop what you're doing, pass what you have to $scheduler2 and let it proceed" 17:29:25 <belmoreira> alaski: +1 17:29:38 <bauzas> johnthetubaguy: and that's why we're working on changing how we access that aggregate info 17:29:43 <dansmith> bauzas: whether that is a result to the client and the client re-queries, or we proxy is an open question, but I don't think it matters much 17:29:45 <johnthetubaguy> alaski: we can just make those properties of every cell, and it flattens things, and filters/weight just pick which they want to act on 17:30:12 <johnthetubaguy> but its a detail, and it doesn't change much 17:30:18 <dansmith> johnthetubaguy: right, aggregates seem like the way you handle such things to me 17:30:23 <bauzas> dansmith: interesting, I just need to think about that 17:30:26 <dansmith> johnthetubaguy: and keep a host-centric scheduler 17:30:30 <edleafe> bauzas: yeah, this sounds like a subset of aggregates 17:30:30 <bauzas> dansmith: that sounds like sharding 17:30:42 <johnthetubaguy> dansmith: we can just map cells to aggregates for "v1" support I guess 17:30:50 <dansmith> johnthetubaguy: yeah 17:30:57 <bauzas> johnthetubaguy: indeed 17:31:25 <bauzas> anyway, we should put our thoughts in a spec :) 17:31:31 <belmoreira> johnthetubaguy: humm 17:31:35 <alaski> belmoreira: in answer to your concern, the ability to filter differently for different cells should remain if you need it, it would just be handled in the scheduler rather than in nova 17:32:17 <alaski> dansmith: I'm very much in agreement with your statement of things, but not quite sure what exactly host-centric means yet 17:32:28 <bauzas> belmoreira: +1 with alaski, that's just a matter of configurating nova-scheduler, not nova-api 17:32:36 <dansmith> alaski: meaning that the scheduler's goal is to select a host, not to select a cell 17:32:57 <alaski> dansmith: gotcha, then yeah I'm on the same page 17:33:14 <edleafe> dansmith: +1 17:33:47 <bauzas> alaski: btw. http://specs.openstack.org/openstack/nova-specs/specs/kilo/approved/isolate-scheduler-db-aggregates.html will be the new way for the scheduler to work with aggregates 17:34:07 <bauzas> that sounds feasible to map the design but with cells 17:34:07 <alaski> so everyone is good with taking this and splitting out some detailed specs to continue the discussion on? 17:34:13 <bauzas> +1 17:34:17 <alaski> bauzas: thanks, will take a look 17:34:21 <dansmith> yup 17:34:52 <alaski> great, moving on then 17:34:53 <edleafe> yes 17:34:57 <alaski> #topic open discussion 17:35:21 <bauzas> I was having an action from last week 17:35:21 <dansmith> move to adjourn? :) 17:35:25 <dansmith> damn. 17:35:28 <bauzas> eh 17:35:31 <alaski> dansmith: hah 17:35:48 <alaski> bauzas: any update? 17:35:59 <bauzas> I'll be very brief, I promise :) 17:36:04 <bauzas> so, 73 tests failing now 17:36:51 <bauzas> so I'm about to add a new job like https://github.com/openstack-infra/project-config/blob/f98caac794f6d1327cb7565c446c026cc951a873/jenkins/jobs/devstack-gate.yaml#L816-L829 by adding those 73 tests 17:37:12 <vineetmenon> anyone figured out the reason for new year +30 bonanza? 17:37:13 <bauzas> everybody agrees ? 17:37:40 <vineetmenon> +1 17:37:59 <bauzas> and I won't touch the job above 17:38:05 <bauzas> alaski: you ok ? 17:38:09 <alaski> bauzas: I like that. If we can get that to voting in a reasonable time it will prevent backslides 17:38:18 <bauzas> alaski: ok, will do 17:38:23 <bauzas> that's it 17:38:39 <alaski> vineetmenon: I have not. it's a TODO for me that I haven't done yet 17:39:01 <alaski> bauzas: thanks 17:39:15 <alaski> I would like to point out https://review.openstack.org/#/c/145922/ 17:39:32 <alaski> and that's it from me 17:39:36 <alaski> anything else? 17:39:53 <belmoreira> alaski: we would like to contribute in the implementation 17:40:25 <vineetmenon> belmoreira: +1 17:40:41 <alaski> belmoreira: great. ping me outside of the meeting and we can discuss that 17:40:49 <belmoreira> alaski: ok 17:41:33 <alaski> dansmith: anything from you? :) 17:41:40 <dansmith> move to adjourn :) 17:41:46 <alaski> seconded 17:42:01 <bauzas> sld 17:42:02 <bauzas> sold 17:42:09 <alaski> motion passes 17:42:11 <alaski> thanks everyone! 17:42:26 <alaski> #endmeeting