| Posted | Nick | Remark | |
|---|---|---|---|
| #openstack-nova - 2017-09-28 | |||
| 21:45:05 | cdent | but even if inventory is not consume at the top we must have the resource provider uuid of the compute node so we know what the destination is | |
| 21:45:37 | edleafe | we are always returning root RPs, right? | |
| 21:45:47 | cdent | so even if the allocation part of the allocation candiate doesn’t consumer, there will be a record in the other half of the tuple which has the roots | |
| 21:45:59 | edleafe | IOW, we'd never return a NIC by itself | |
| 21:46:04 | cdent | edleafe: i think so, yes, at least in the resource providers half of the tuple | |
| 21:46:06 | efried | More recently we've talked about modeling NUMA by making the NUMA nodes child RPs and having them provide the CPU/MEM(/possibly-other-things-like-PFs) resources. | |
| 21:46:17 | cdent | efried: right, but they are still a child | |
| 21:46:32 | efried | Well, okay, but if the tree is three deep, the root RP may still not have the traits the leaf is inheriting. | |
| 21:46:32 | cdent | so you could alloc against them, but still _place_ on the parent | |
| 21:46:52 | cdent | I think inheritance is a very bad way of thinking of this | |
| 21:46:59 | cdent | and that’s what my comment was inspired by | |
| 21:47:04 | cdent | (on the review) | |
| 21:48:07 | cdent | which spec has allocation candidates? | |
| 21:48:38 | edleafe | cdent: yeah, this is more like composition than inheritance | |
| 21:49:00 | cdent | ah, it’s got the wrong name: http://specs.openstack.org/openstack/nova-specs/specs/pike/implemented/placement-allocation-requests.html | |
| 21:49:25 | dansmith | gah | |
| 21:49:31 | dansmith | does anyone else get stopped in devstack doing this? | |
| 21:49:31 | dansmith | 403 Forbidden: You are not authorized to complete publicize_image action. (HTTP 403) | |
| 21:49:50 | dansmith | must be residue leftover from my previous install, but I don't know what it is | |
| 21:50:35 | cdent | efried: in there, provider_summaries is the second half of the tuple, contains the rp info. in there will be represented the info to construct a nested provider hierarchy, I don’t know if that’s defined yet | |
| 21:50:56 | cdent | efried: but in that a trait will be on the thing to which the trait was associated, not its children | |
| 21:51:30 | efried | cdent You could totally return *just* the RPs that are being claimed against, and the scheduler would have to use the root RP UUID to pull the whole tree from placement at that point. | |
| 21:52:10 | efried | Or you could return the whole tree, and the scheduler would not have to do that, but there would be empty "allocations". | |
| 21:52:11 | cdent | you could, yes, but I don’t think that was the plan. I suggested at one point we should just return uuids and require the client to go back for more info if it wanted | |
| 21:52:26 | efried | Or you could return just the claimed RPs in the allocations, but return the whole RP trees in the provider summaries. | |
| 21:52:26 | cdent | why would there be empty allocations? | |
| 21:52:51 | cdent | the structure in provider_summaries is not directly mapped to what is in allocations | |
| 21:52:54 | mriedem | dansmith: making an image public? | |
| 21:53:06 | mriedem | but devstack uploads the image... | |
| 21:53:07 | dansmith | mriedem: that's just during stack | |
| 21:53:43 | efried | dansmith Could be perms in your configured temp dir, which glance uses to store a copy of the image while it's uploading it. | |
| 21:54:02 | dansmith | efried: I dunno what would have changed from one stack run to another | |
| 21:54:07 | cdent | efried: so I’m still confused about how/why you want inheritance to be a thing | |
| 21:54:33 | efried | cdent Lemme find that conversation. It's in the same spec, same area, earlier rev... | |
| 21:54:34 | dansmith | mriedem: efried: this is a centos box and my best guess is that clean.sh doesn't clean something for redhat systems like it does for ubuntu or something | |
| 21:54:41 | dansmith | guess what I'm doing right now? | |
| 21:55:05 | mriedem | umm | |
| 21:55:23 | efried | cdent PS6 | |
| 21:55:37 | efried | cdent There's an example there | |
| 21:56:30 | efried | cdent And more background in PS4 | |
| 21:56:40 | efried | ...which is where jaypipes actually provided the example | |
| 21:57:55 | cdent | that’s no inherited, the trait still matched on the compute rp, we _also_ got numa node 1 because we required magic cache thingy | |
| 21:58:31 | openstackgerrit | Matt Riedemann proposed openstack/nova master: Remove old compat code from servers ViewBuilder._get_metadata https://review.openstack.org/508326 | |
| 21:58:52 | cdent | the compute rp is a member of the results | |
| 21:59:02 | efried | cdent But with no inventory. | |
| 21:59:11 | efried | no inventory consumed* that is | |
| 21:59:35 | cdent | if it were not a member of the results, then that would be inheritance | |
| 22:00:05 | efried | But we need to be crisp about this because when we start doing the "grouping" thing, it's going to be important to be able to say that you *don't* get results that *don't* have your traits for a given group. | |
| 22:00:08 | efried | I said that horribly. | |
| 22:01:24 | efried | In this example, the NUMA node and the compute node are *different* RPs. | |
| 22:02:01 | cdent | I agree that we need to be crisp, which is why I’m disputing the use of the term “inherited” it’s misleading | |
| 22:02:03 | efried | If I ask for inventory on a resource class, I should only get a RP that has inventory in that resource class. If I ask for a required trait, I should only get a RP that has that trait. | |
| 22:03:10 | efried | In this case, I'm asking for e.g. CPU inventory, which belongs to the NUMA node (not the compute host). And I'm asking for trait HW_CPU_MAGIC_CACHE_THINGY, which belongs to the NUMA node (not the compute host). So far so good. | |
| 22:03:25 | efried | But then I'm *also* asking for trait HW_CPU_X86_SSE2. | |
| 22:03:38 | efried | That trait belongs to the compute RP but *not* the NUMA node RP. | |
| 22:04:10 | efried | So by the rules, with no "inheritance" (or whatever you wanna call it), that request would kick out the NUMA node RP because the NUMA node RP doesn't have the HW_CPU_X86_SSE2 trait. | |
| 22:04:59 | efried | If we want to do it that way, it's possible, but it means the implementor who models the RPs would have to *duplicate* the HW_CPU_X86_SSE2 trait (and all those other CPUey traits) onto each NUMA node RP. | |
| 22:05:24 | efried | jaypipes put a stake in the ground and said we could inherit downward, which is why we needed to make this statement in the spec. | |
| 22:06:09 | efried | Based on your confusion, though, it seems like we would have done well to include the example, as well as listing the no-inheritance-but-duplication thing in Alternatives. | |
| 22:07:23 | cdent | I guess maybe I’m too embedded but the statement is a) obvious, b) not inheritance. It is simply that you “got” the compute node, because you asked for that trait | |
| 22:07:41 | cdent | it’s not that the numa node has that trait by inheritance | |
| 22:07:44 | efried | But I don't want the compute nod. | |
| 22:07:46 | efried | node | |
| 22:07:48 | cdent | you do | |
| 22:07:52 | cdent | you _have_ to have the compute node | |
| 22:07:53 | efried | I'm not claiming any inventory off of it. | |
| 22:07:55 | cdent | it is your destination | |
| 22:08:25 | cdent | it is the place where your inventory is | |
| 22:08:27 | efried | Meh, that's kind of an artifact of the root RP happening to be a compute node. | |
| 22:08:42 | efried | cdent Ah, so wait, that's where we're disagreeing I think. | |
| 22:08:51 | efried | The compute node RP is *not* where your inventory is. | |
| 22:08:58 | efried | The NUMA node RP is where your inventory is. | |
| 22:09:31 | efried | Unless you're saying the compute node inherits (accumulates? composes?) the inventory from its descendants. | |
| 22:09:33 | cdent | which is “within” the copute node, by representation (even if it happens to be only logically so) | |
| 22:10:14 | cdent | nested providers are nested | |
| 22:10:38 | cdent | and they are generally created when a compute node does get_inventory | |
| 22:10:56 | efried | Right. So inventory is implicitly crossing RP boundaries (you don't like the word "inheritance"; fine; pick another word). The disputed statement is saying traits do the same. | |
| 22:11:19 | efried | Also trying to think not totally compute-node-is-the-root-RP-centric | |
| 22:11:27 | cdent | I’m saying it’s not relevant when requesting allocation_candidates to know that | |
| 22:11:40 | cdent | (that being “traits compose”) | |
| 22:13:08 | efried | I'm coming from, "it is relevant, both from the perspective of the requestor and the perspective of the implementor of the RP models being looked at by the allocation_candidates API." Let me think through it again... | |
| 22:14:28 | cdent | If we’re trying to be crispy, then the crispiness I’m trying to go for in the example is that we shouldn’t say “the numa node is HW_CPU_X86_SSE2” when it is the parent that has that trait | |
| 22:15:30 | efried | Then we would have to duplicate the trait on each NUMA node. | |
| 22:15:59 | cdent | that’s what I’m not understanding. How are you reaching that conclusion? | |
| 22:16:33 | efried | In this case I'm assuming the resources themselves are owned by the NUMA node RPs. Not by the compute node RP. | |
| 22:16:43 | efried | GET /allocation_candidates?resources=VCPU:1,required=HW_CPU_X86_SSE2,HW_CPU_MAGIC_CACHE_THINGY | |
| 22:17:51 | efried | I haven't gotten the impression that we're supposed to return allocations that satisfy any permutation of that request. I've gotten the impression we're supposed to return allocations that satisfy *all* of those criteria. | |
| 22:18:13 | cdent | well, not to draw us off into the weeds too far, but if you’re going to put the VCPU inventory on a numa node, then presumably you put the hw traits of cpus on the numa node too? | |
| 22:18:26 | cdent | ignore that | |
| 22:18:30 | efried | Ah, that's the point of contention. jaypipes said (in PS4)... okay. | |
| 22:19:00 | cdent | I agree that we should only satisfy all those criteria | |
| 22:19:44 | efried | Okay. Then as modeled, without "inheritance", we would get nada back from that request. | |
| 22:20:00 | efried | because there isn't a single resource provider that satisfies all of it. | |
| 22:20:21 | cdent | so perhaps you are using the term “inheritance” to mean something like “which direction in the resource provider tree should would look to see if a trait is available”? | |
| 22:20:28 | cdent | up, down, both | |
| 22:20:31 | jaypipes | efried: I also said in PS4 that I disagreed with you calling it inheritance. :) | |
| 22:20:31 | cdent | and you’re saying only up | |
| 22:20:53 | cdent | if “only up” then cool, but don’t use the term inheritiance :) | |
| 22:20:56 | efried | bah, let's come up with a word for it that isn't "inheritance" so we can stop getting distracted by that. What do we call it. | |
| 22:21:08 | jaypipes | propagation. | |