| Posted | Nick | Remark | |
|---|---|---|---|
| #openstack-nova - 2018-03-27 | |||
| 20:02:20 | sean-k-mooney[m] | dansmith: so are you saying we should be explcit and have some way of saying its ok to merge? | |
| 20:02:23 | dansmith | sean-k-mooney[m]: if the resource comes from a different pile, then it needs to be a different RP (even if the same pf) | |
| 20:02:44 | dansmith | sean-k-mooney[m]: and if it's not then placement doesn't need to know about it | |
| 20:03:11 | efried | dansmith: That doesn't let you express bandwidth on the PFs though. | |
| 20:03:17 | dansmith | sean-k-mooney[m]: rather decide whether not stating them as separate means they're merge-able or if it means it's a 400 | |
| 20:03:26 | edleafe | cdent: So you see a case where someone would create flavors with traits that are prefixed with '!', but not specify a microversion that supports it? I guess I can't see that. | |
| 20:03:44 | edleafe | But if it's necessary, so be it | |
| 20:04:04 | sean-k-mooney[m] | efried: well it kind of does | |
| 20:04:08 | cdent | edleafe: no I see a non-nova client of the placement api make requests to get resource providers filtered by traits, forgetting to set the microversion | |
| 20:04:20 | jaypipes | efried, sean-k-mooney[m]: I think you are both over-thinking this. | |
| 20:04:22 | efried | dansmith: Example that sean-k-mooney[m] is talking about: resources1=VF:1,NET_EGRESS_BW:200&resources2=VF:1,NET_EGRESS_BW:300 -- you can get back a candidate like { PF_RP1: { VF: 2, NET_EGRESS_BW: 500 } } | |
| 20:04:25 | cdent | edleafe: as in: a human | |
| 20:04:47 | sean-k-mooney[m] | the case that is not covered today would be anti afintiy of PFs for VFs for ha bonds | |
| 20:04:56 | dansmith | efried: right, it's still nova asking neutron for the fine-grained quota on each port though | |
| 20:05:06 | efried | neutron is responsible for carving out two PFs. How does it know that one needs BW:200 and the other needs 300? | |
| 20:05:09 | dansmith | efried: placement doesn't need more information than that 500 is committed to that consumer | |
| 20:05:19 | dansmith | efried: it doesn't imply it from placement, IMHO | |
| 20:05:20 | jaypipes | dansmith: zactly. | |
| 20:05:38 | efried | then from where? | |
| 20:05:44 | dansmith | from where what? | |
| 20:06:05 | dansmith | either in the port you created ahead of time, or from the flavor details when nova goes to create it for you | |
| 20:06:06 | jaypipes | efried: the allocation is the amount of that resource that is being provided by that specific resourc eprovider. it's 500. | |
| 20:06:07 | efried | Where does it get the information that that request entails one VF with BW:200 and one with BW:300? | |
| 20:06:22 | efried | neutron has access to the flavor? And the image? | |
| 20:06:31 | sean-k-mooney[m] | efried: if there are no different traits between resouce1 and resouce2 its ok to merge | |
| 20:06:36 | dansmith | efried: are you being difficult now or what? | |
| 20:06:45 | dansmith | efried: neutron ports don't just magically get created | |
| 20:07:22 | dansmith | efried: normally nova creates ports for you based on what you asked for in terms of --nic arguments, presumably influenced by the flavor if this sort of bw quota was encoded there | |
| 20:07:28 | dansmith | nova uses that to decide what to ask placement for, | |
| 20:07:37 | dansmith | and then uses it to talk to neutron to create the ports for you | |
| 20:07:52 | dansmith | placement is not the Windows Registry of information about instances for other services to mine :) | |
| 20:07:58 | dansmith | jaypipes: quote of the day for you ^ | |
| 20:08:23 | efried | dansmith: Okay, so for this case we get it from here, for that case we get it from there, for this other case maybe we have to invent something convoluted to pass it through... Whereas if we split up the allocations in placement, it could all come from the same place in a consistent way. | |
| 20:08:30 | efried | and no, I'm not *trying* to be difficult. | |
| 20:08:45 | dansmith | efried: the answer to the above leading question is not "mine it from placement" | |
| 20:08:45 | efried | I'm predicting that we will suffer a death of a thousand cuts by solving this problem differently every time we encounter it. | |
| 20:08:57 | sean-k-mooney[m] | efried: neutron has acess to neither the flavor or image | |
| 20:08:58 | dansmith | efried: haaaaave you met us? | |
| 20:09:04 | dansmith | either way, | |
| 20:09:24 | dansmith | placement is not the database of things for neutron to imply random things about your quota or policy from | |
| 20:09:48 | jaypipes | WHAT dansmith SAID. | |
| 20:10:04 | sean-k-mooney[m] | the enutron port case i was thinking of is i create two sriov ports in enutron tell nova to use both and want to express anti afinity for those at the pf level so in the granualr request to placment we need some what to tell placement they cannont come form the same RP even though they have not other differences | |
| 20:10:08 | jaypipes | this is precisely the conversation I had with gibi and mlavalle earlier today. | |
| 20:10:16 | dansmith | nova could, for example, be configured to ask placement for bandwidth resource, but never tell neutron about it, if we want general recordkeeping and kinda soft quotas for distribution, but we don't need actual administrative limiting of bandwidth, for example | |
| 20:10:26 | dansmith | if you mine it out of placement, you have no idea the semantics of the data you're examining | |
| 20:10:27 | efried | if this was a neutron-specific or nova-specific thing, okay. I don't see it that way, though. | |
| 20:10:33 | jaypipes | sean-k-mooney[m]: that is what granular request groups are for. | |
| 20:10:55 | efried | jaypipes: granular request groups don't solve it. | |
| 20:10:56 | dansmith | efried: the port case is a nova/neutron conversation and placement should C its way out | |
| 20:11:04 | dansmith | efried: for disks, it's nova/nova or nova/cinder or whatever | |
| 20:11:46 | jaypipes | efried: how is granular request groups not for solving the case of "gimme 2 of these resources from different providers"? | |
| 20:11:54 | sean-k-mooney[m] | placement is the thing to model all quantitive resouces with and qualitive tratis however so i may want to express affities between resouce in the future. for now i gues a filter could be used but i would be somewhat concered that we would get no valid host becaue of the limit we pass into placement | |
| 20:11:58 | efried | jaypipes: We have no way to say "from different providers". | |
| 20:12:09 | openstackgerrit | Matt Riedemann proposed openstack/nova-specs master: tox.ini: remove the stale 'minversion = 1.4' https://review.openstack.org/530776 | |
| 20:12:10 | efried | jaypipes: Unless there happen to be traits we can exploit. | |
| 20:12:11 | dansmith | efried: that's what I was saying, | |
| 20:12:15 | jaypipes | that's the whole dang point behind granular request groups. | |
| 20:12:24 | dansmith | efried: I think it's implied that if you ask for two DISK_GB allocations you expect them to be from different RPs | |
| 20:12:28 | sean-k-mooney[m] | jaypipes: the thing that granualr resouce groups is missing is i cant say Resouce1 and resouce2 can be from the same RP or the inverse the must be form the same RP | |
| 20:12:33 | efried | dansmith: Oh, definitely not that. | |
| 20:12:38 | jaypipes | dansmith: zactly my thought. | |
| 20:12:45 | dansmith | efried: and thus we should decide whether that is the case and reject, or if we should expect those to come back merged | |
| 20:12:52 | dansmith | efried: well, I would have thought exactly that, fwiw | |
| 20:12:53 | efried | What if you only have one disk provider? and still want two disks? | |
| 20:13:00 | dansmith | efried: that's not a placement thing dude | |
| 20:13:03 | dansmith | efried: that's a nova thing | |
| 20:13:10 | dansmith | efried: it will ask for how much resource from a specific provider it needs, | |
| 20:13:13 | dansmith | and it may cut it up or not | |
| 20:13:19 | dansmith | placement has no bidness knowing or caring about that | |
| 20:13:27 | jaypipes | sean-k-mooney[m]: that was the whole point of granular request groups. to allow the caller to say "give me a total of 2 of these things, but make sure I get 1 each from different providers". | |
| 20:13:44 | efried | jaypipes: No, not that. | |
| 20:13:51 | jaypipes | yes, yes that | |
| 20:13:53 | dansmith | efried: yes that | |
| 20:13:58 | dansmith | exactly that | |
| 20:14:00 | efried | jaypipes: "Give me two of these things, but each one has different traits" I'll grant you. | |
| 20:14:14 | efried | ...which has the effect of dividing them across two providers. | |
| 20:14:19 | dansmith | efried: if you ask for two things with no trait difference, I think the assumption is you want them from different places | |
| 20:14:31 | efried | But if they *don't* have different traits, putting them in different groups does *not* give you different RPs. | |
| 20:14:45 | dansmith | you're saying that, | |
| 20:14:47 | dansmith | but I disagree that that is how it should be | |
| 20:15:00 | dansmith | so if you're talking about your patches as of now, then okay.. but then we should find and -2 those :) | |
| 20:15:23 | efried | dansmith: http://specs.openstack.org/openstack/nova-specs/specs/rocky/approved/granular-resource-requests.html#semantics third bullet. | |
| 20:15:39 | jaypipes | agree wholeheartedly with dansmith. I don't see any logic in granular request groups *ever* meaning "give me two of these exact same resources, but allow them both to be from the same provider" | |
| 20:16:06 | dansmith | efried: okay so that's what I was saying above.. we either decide if they should be different (what I've been assuming) or they're not and they're effectively merged | |
| 20:16:11 | dansmith | efried: your bullet says the latter | |
| 20:16:22 | dansmith | which, if we've decided, then cool, but I think that was/is a mistake | |
| 20:16:30 | efried | jaypipes: You would never want two VFs from the same PF? | |
| 20:16:33 | jaypipes | agreed it was a mistake. | |
| 20:16:45 | dansmith | efried: two VFs from one PF is VF=2 | |
| 20:16:51 | jaypipes | efried: if you did, you would say resources:SRIOV_NET_VF=2 | |
| 20:16:53 | dansmith | efried: not VF=1,VF=1 | |
| 20:16:54 | sean-k-mooney[m] | jaypipes: it does simply one case which is merging resouce request form the image/flavor/port/volume | |
| 20:17:02 | sean-k-mooney[m] | jaypipes: it also has implcation for you cpu spec | |
| 20:17:18 | dansmith | what jaypipes said | |
| 20:17:39 | efried | How do you say, "Give me 8 VCPUs, but I don't care how you split them across NUMA nodes"? | |
| 20:17:43 | sean-k-mooney[m] | today if i have a guest with no numa toplogy and it cant fit on one numa node it will be spread. | |
| 20:17:51 | jaypipes | IMO, that third bullet should absolutely be amended to say "requesting granular request groups of the same resource means that the resulting candidates will be from different providers" | |
| 20:17:54 | dansmith | efried: if I just want multiple VFs and ensure they're on different PFs, but I don't care about any other reason, then VF=1,VF=1 means that, different from VF=2 | |
| 20:18:06 | dansmith | efried: VCPUS=8 | |
| 20:18:10 | sean-k-mooney[m] | if we say the non numbered resouce request must also be form one RP we cannot support that now | |