Earlier  
Posted Nick Remark
#openstack-nova - 2020-02-11
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.
18:59:21 efried so if you ask for 2 vcpu, we go to a max of hw:numa_nodes=2
18:59:45 dansmith sure, but I think we need to not be willing to split memory at 1MB and 8191MB
18:59:55 dansmith or 31 cpus and 1
19:00:05 dansmith and the ratio needs to be close/equal for cpus and memory
19:00:08 efried Right, I'm saying that happens implicitly
19:00:25 dansmith how?
19:00:50 efried each iteration of the loop simply behaves as if you said hw:numa_nodes=$n.
19:01:07 efried which simply splits your CPU and mem "evenly" across $n nodes.
19:01:15 dansmith that just seems to naive to me
19:01:19 efried yes
19:01:20 efried it is
19:01:32 efried but so is "I don't care about NUMA"?
19:01:41 efried And it ought to work 99% of the time
19:01:52 efried and if it doesn't, switch on your [workaround] for a couple of hosts.
19:02:07 dansmith I want the workaround to go away, remember
19:02:23 efried Yes, the workaround goes away completely once we beef up placement to understand can_split
19:02:53 dansmith okay your even splitting is just the first pass at sanity? then that's fine
19:04:27 efried oh, yeah, eventually we want the utopia where all of this happens in one call with can_split, whose ratios are tunable (via placement side conf? via nova conf fed into placement qparams?)
19:04:43 dansmith has to be nova-side
19:04:52 dansmith communicated to placement via the query
19:05:15 efried then we won't need the workaround anymore, because everything will be able to land (and if it can't, it's because it *shouldn't*).
19:05:43 efried In practice, we may even find that nobody needs the workaround. But we'll see.
19:09:39 efried Did we decide how we're going to deal with "control plane is updated but some computes are not"? Does the control plane wait to start using the new query style until all the computes are updated? We have that capability, right?
19:11:05 efried okay, I see that discussed in the spec.
19:18:58 sean-k-mooney efried: i think if we go that route in ussuri we wont be able to land it in time
19:19:36 efried why not?
19:19:47 efried we're not talking about trying to implement can_split in any form in ussuri
19:20:04 efried are you concerned that the progressive-splitting algorithm is too complicated?
19:20:28 sean-k-mooney just multiple queries wehre we try to progressively split
19:20:36 sean-k-mooney efried: yes
19:21:01 efried meh, I don't see how it's any worse than the proposed fallback.
19:21:28 sean-k-mooney efried: it will have to take into accoung numa, native request groups in teh flavor, external requests form cyborng and netorn ports and not suck form a performnce point of view
19:21:58 sean-k-mooney the proposed fallback is two queries, the native nuam one followed by the query we do today
19:22:08 sean-k-mooney and it only impacts the perfomce of numa instances
19:22:20 sean-k-mooney the other way imacpts the perfomce of all non numa instnaces
19:22:37 efried sean-k-mooney: I don't think it has to take all that stuff into account at all.
19:23:07 efried sean-k-mooney: It should behave *exactly* as if you said hw:numa_nodes=$n with no other hw:numa*-isms.
19:23:40 efried (except I think we said we would bounce if we couldn't split evenly; that restriction would have to be lifted for this case.)
19:24:12 sean-k-mooney so we would create a fake flaovr where we overrid that and pass it to the current get numa constratis funct

Earlier   Later