| Posted | Nick | Remark | |
|---|---|---|---|
| #openstack-nova - 2020-02-11 | |||
| 17:11:41 | sean-k-mooney | artom: no | |
| 17:11:46 | artom | I guess not, if you retry with enough combinations of guest NUMA nodes and CPUs per node | |
| 17:12:48 | artom | So if you some how end up with NUMA0 with 1 CPU free, and NUMA1 with 3 CPUs free, and boot an instance with 4 CPUs, you would need to retry until you get to the numa0_cpus:1,numa2_cpus=3 combo | |
| 17:12:56 | sean-k-mooney | honestly doing 4 placment queries with 1-4 numa nodes is still proably faster then the numa toplogy filter today | |
| 17:13:16 | sean-k-mooney | but i dont think this is productive to continue now | |
| 17:13:20 | artom | True | |
| 17:13:26 | artom | (On the second point) | |
| 17:13:35 | dansmith | if, like I said, we had a range of nodes, I would think placement could just loop internally much faster than even our retry process | |
| 17:13:40 | dansmith | and just dump us more options in the first go | |
| 17:14:15 | sean-k-mooney | dansmith: ya its really a proablem of being able to express our actul constratin to placmenet so they can do an efficent thing | |
| 17:14:22 | dansmith | right | |
| 17:14:42 | sean-k-mooney | at the moment we are over spcifying and underspecifying at the same time | |
| 17:14:49 | artom | dansmith, I think placement would want to now know about NUMA | |
| 17:14:57 | artom | And only think of things in terms of generic RPs | |
| 17:14:58 | sean-k-mooney | since the way we express the query does not fully match what we need | |
| 17:15:06 | artom | *to not know | |
| 17:15:19 | dansmith | artom: that's the proposal, AFAIK | |
| 17:15:32 | dansmith | artom: to model this in placement as RPs with the relevant hierarchy | |
| 17:15:47 | artom | dansmith, how does this fit with your "internal placement retry loop" idea though? | |
| 17:15:48 | sean-k-mooney | artom: right but we added some emantic meaning that is not helpful to come concpets in placment. | |
| 17:15:53 | dansmith | artom: ? | |
| 17:16:08 | artom | dansmith, well, wouldn't placement need to understand what a NUMA node is to do that? | |
| 17:16:14 | sean-k-mooney | for example resouces:vcpu=2 must allcaote 2 cpus form the same RP | |
| 17:16:40 | sean-k-mooney | artom: no it just need to know that some resouce need to be in the same sub tree | |
| 17:17:01 | artom | sean-k-mooney, I guess I can see that | |
| 17:17:01 | sean-k-mooney | with a parent contiing a opacue trating "HW_NUMA_ROOT" | |
| 17:17:08 | dansmith | artom: no, I don't think so, we just need to provide some way to communicate to placement that it can satisfy the required resources by allowing them to exist in multiple parts in the tree, with some minimum amount per provider, with maybe matching ratios of cpus and memory | |
| 17:17:56 | dansmith | artom: I don't mean an "&numa_nodes=1-4" level of explicitness (even though I've said that just as an example), but it really just needs to be the generic form of that | |
| 17:18:12 | artom | dansmith, I wonder if we could tell placement something like "aggregate_at_root=true", and then it could sum the child RPs resources temporarily when handling that query | |
| 17:18:26 | dansmith | artom: we need more than that, I think | |
| 17:18:35 | sean-k-mooney | no that is not enouch | |
| 17:18:48 | dansmith | artom: we need to be able to say "don't give me 7 cpus on one node with 1MB of ram, and 1 CPU on the other with 8G" | |
| 17:18:54 | sean-k-mooney | the thing that breaks with simple models is alwasy disk space | |
| 17:19:00 | sean-k-mooney | if i asked for 100 | |
| 17:19:01 | dansmith | artom: something like "cpus and mem must match 60/40 across the split" or something | |
| 17:19:15 | sean-k-mooney | 100G you cant give me 2x50G | |
| 17:19:24 | dansmith | yep | |
| 17:20:01 | sean-k-mooney | so it has to be per resouce class and we need to express grouping constratins and potaentail sizing info like the 64/40 split | |
| 17:20:48 | sean-k-mooney | artom: right now to do ^ we have to specify the toplogy exactly rather then saying these are the limits give me anyting that matches | |
| 17:20:52 | artom | But... the disk would never be on a NUMA child RP... | |
| 17:21:07 | dansmith | artom: he's giving an example of a resource splitting constraint | |
| 17:22:05 | artom | TBH I still don't see why we need to express splitting constraints, but I'm probably just being thick | |
| 17:22:25 | artom | And as sean-k-mooney said, it's an academic discussion not relevant to the current spec | |
| 17:22:27 | sean-k-mooney | same thing applies to hugpegaes. if i ask for 512mb of hugepages and the host only has 1G hugepages allocated you cant split it | |
| 17:22:36 | sean-k-mooney | disk is just more approchable | |
| 17:22:44 | dansmith | because if you ask for 16 CPUs and 32G of RAM, we need to be able to say "we're willing to take that split across two nodes as long as the ratio of the split for those resources is at most 60/40" | |
| 17:22:52 | artom | sean-k-mooney, right, but hugepages we model as their own RP | |
| 17:23:37 | artom | So you'd never get 1GB hugepages anyways, you'd get, for example, 400MB from 1 RP, and 112 from another (unrealistic numbers, I know) | |
| 17:24:30 | artom | dansmith, so that's my thing - why do we want to say that? What's wrong with CPUs split 1/15 and memory 30GB/2GB | |
| 17:24:39 | sean-k-mooney | it would get rejected by the step size yes | |
| 17:24:51 | dansmith | artom: because that would be pretty unhelpful? | |
| 17:25:06 | artom | dansmith, hey, they user they don't care about NUMA topologies ^_^ | |
| 17:25:09 | sean-k-mooney | but point is there are limits on how thing can be split that depned on the resouce class and how it willl be used | |
| 17:25:17 | artom | But seriously, unhelpful from a performance POV? | |
| 17:25:35 | dansmith | artom: right, the user isn't opinionated, but they still want a sane instance | |
| 17:25:55 | dansmith | artom: not caring about numa doesn't mean we should give them something completely pathologically stupid | |
| 17:26:17 | artom | lulz - we need a hw:sanity extra specs | |
| 17:26:27 | artom | And if they set it to ludicrous we do ^^ | |
| 17:26:44 | artom | dansmith, but yeah, I get your point | |
| 17:26:46 | dansmith | if we did this, we'd want to be able to specify what those splits are, and if the op really doesn't care, then they can set the split policy to something very fine | |
| 17:27:03 | dansmith | but it wouldn't make much sense for them to do that | |
| 17:27:18 | artom | I was mostly joking about that extra spec | |
| 17:27:27 | sean-k-mooney | yes we know | |
| 17:28:32 | sean-k-mooney | anyway form my view point if you dont set hw:numa_nodes at all it gives nova the freedome to do something sane | |
| 17:28:49 | sean-k-mooney | that can be create a numa toplogy if it chooese | |
| 17:29:24 | sean-k-mooney | for now we leave libvirt invent a single numa node with no affinity | |
| 17:30:36 | sean-k-mooney | haveing one or multiple numa nodes in the guest and mapping them to 1 or more numa node on the host are two different thing | |
| 17:31:00 | sean-k-mooney | so can if we want expose 1 numa node to the guest and on the host map it across them | |
| 17:31:51 | sean-k-mooney | i think we can do better then that howwever. anyway time to go review something else | |
| 17:51:21 | stephenfin | ah, crap. Today was supposed to be spec review day | |
| 17:51:30 | stephenfin | Guess tomorrow is spec review day for me now \o/ | |
| 17:53:37 | yoctozepto | stephenfin: the most busy today - tomorrow :-) | |
| 17:57:00 | stephenfin | sean-k-mooney: Tempest is failing on my extra spec validation patch because it's using generic e.g. 'key1=value1' extra specs. What's the most generic extra spec we've got? | |
| 17:57:14 | stephenfin | I've been using 'hw:numa_nodes' but that's libvirt/HyperV specific | |
| 17:57:50 | spatel | sean-k-mooney: sorry i was in meeting | |
| 17:59:58 | spatel | sean-k-mooney: as per your recommendation i have added cpu_threads=2 and cpu_sockets=2 in flavor and run test but result was OK (compare to 16 vCPU with single numa0) | |
| 18:00:55 | spatel | still i don't understand why, erlang correctly detected CPUTopology on VM but still result was poor with 28vCPU | |
| 18:11:29 | openstackgerrit | Lee Yarwood proposed openstack/nova master: images: Move qemu-img info calls into privsep https://review.opendev.org/706897 | |
| 18:11:30 | openstackgerrit | Lee Yarwood proposed openstack/nova master: virt: Pass request context to extend_volume https://review.opendev.org/706899 | |
| 18:11:30 | openstackgerrit | Lee Yarwood proposed openstack/nova master: images: Allow the output format of qemu-img info to be controlled https://review.opendev.org/706898 | |
| 18:11:31 | openstackgerrit | Lee Yarwood proposed openstack/nova master: WIP libvirt: Fix attached encrypted LUKSv1 volume extension https://review.opendev.org/706900 | |
| 18:13:11 | openstackgerrit | Stephen Finucane proposed openstack/nova master: WIP: api: Add support for extra spec validation https://review.opendev.org/704643 | |
| 18:13:12 | openstackgerrit | Stephen Finucane proposed openstack/nova master: conf: Deprecate '[scheduler] driver' https://review.opendev.org/707225 | |
| 18:13:12 | openstackgerrit | Stephen Finucane proposed openstack/nova master: trivial: Remove FakeScheduler https://review.opendev.org/707224 | |
| 18:13:13 | openstackgerrit | Stephen Finucane proposed openstack/nova master: doc: Improve documentation on writing custom scheduler filters https://review.opendev.org/707226 | |
| 18:13:42 | stephenfin | sean-k-mooney: I went with 'hw:numa_nodes' and 'hw:cpu_policy' for want of something better | |
| 18:44:45 | efried | sean-k-mooney, bauzas, gibi: I think I would actually prefer the approach dansmith suggests, even if we only do it at the coarsest level, rather than effectively disable the topology modeling in ussuri. | |
| 18:49:49 | efried | - Flavors without hw:numa*-isms get looped for $n in range(0, $max_sane_number_of_numa_nodes_we_expect_a_host_to_ever_have) to behave as if they had specified hw:numa_nodes=$n, stopping as soon as we get a hit. | |
| 18:49:49 | efried | - Flavors with hw:numa*-isms get translated as specced. | |
| 18:49:49 | efried | - Model with NUMA topology by default. Provide the [workaround] option to *disable* (and un-reshape) for situations where the following is just sh*tting all over itself and nothing is landing. | |
| 18:49:49 | efried | in other words: | |
| 18:50:58 | efried | This is without changing anything in placement. | |
| 18:52:44 | efried | For uneven splits, we just get as close as we can, but make no attempt to be "fuzzy" (like "up to 60/40" or anything like that). So like, for $n=2 and VCPU=10, we try 10, then 5/5, then 3/3/4, then 2/3/2/3. | |
| 18:56:04 | dansmith | there has to be some sort of policy tunable for how wild we're able to get I think | |
| 18:56:29 | efried | max_numa_nodes_guessed ? | |
| 18:57:23 | efried | Are there really hosts out there with more than, say, 8 NUMA cells? | |
| 18:57:27 | dansmith | no, I mean how small of a footprint on a given node we're going to allow | |
| 18:58:34 | efried | To be clear, I'm talking about splitting as evenly as possible, always. | |
| 18:58:45 | efried | You're saying that sometimes that would result in unreasonably small footprint on one numa node anyway? | |
| 18:59:05 | efried | obv we stop trying to split if any of the cells are going to get 0 of anything. | |