Earlier  
Posted Nick Remark
#openstack-nova - 2018-03-22
16:10:20 cdent I said it didn't make sense, but that may be because I'm not fully understanding dan's use case
16:10:20 jaypipes cfriesen: right, and I'm opposed to that, because it f**ks with resource tracking and inventory management.
16:10:53 dansmith cdent: I'm on a call right now, but maybe a hangout with interested parties when I'm done?
16:10:58 cdent and also because I wasn't really thinking and on the resources case, more concatenation of value
16:11:03 dansmith if it's really a misunderstanding thing
16:11:26 cdent dansmith: I'd like to understand more but today's not great, i'm in a meeting right now and have been in one or another since I started today
16:11:27 efried The problem is simply that we used ',' to mean 'AND' in the `resources` qparam; but ',' is already taken in `member_of` (to mean 'OR', unfortunately, but disambiguated by requiring `in:`, which consumes another nice piece of punctuation, the ';')
16:11:31 jaypipes cfriesen: I am attempting to create a new resource class that represents a physical dedicated CPU (sahid would rather this resource class be called CPU_DEDICATED insetad of PCPU) that can be used to inventory these kinds of resources (which are currently not tracked in the same way as other resources, much to my dismay)
16:11:51 efried s/';'/':'/
16:11:53 efried sigh
16:12:04 dansmith efried: ah okay, although that's also kindof already done, but yeah I see that now
16:12:06 sean-k-mooney jaypipes: yes, if we track the overhead sepreatly form the pcpus/vcpu resuces it could imply that the cpus the guest sees is the resouce:*CPU-overhead or we ask for resouce:*cpus + over head form placement
16:12:31 cfriesen jaypipes: the problem is if I have X "dedicated" guest vcpus, and I want to allocate X+1 physical cpus, and run the emulator threads on a physical CPU that isn't running any vCPU thread.
16:12:40 jaypipes sean-k-mooney: this has nothing to do with "what the guest sees". this is a resource accounting issue only.
16:12:42 coreycb mriedem: special sauce indeeed! my bad.
16:12:42 efried dansmith: so let's move ahead with repeatable member_of. Human reading query string will interpret '&' as 'AND', as it should be.
16:12:47 mriedem nice
16:13:30 cdent wait, efried, did you just make a new different decision? I thought we had gone the other way ten minutes ago?
16:13:39 efried vay
16:13:40 cfriesen jaypipes: I'd be fine with CPU_DEDICATED. Would we also have CPU_SHARED instead of VCPU?
16:14:01 efried cdent: Where's your purple thingy?
16:14:04 jaypipes sean-k-mooney: this is only about answering the question "how many dedicated CPUs are left on the host (or on a specific NUMA node)?" and "how many shared CPUs are left on the host (or specific NUMA node)"
16:14:06 sean-k-mooney jaypipes: well it could what im asking is the resouces we counting are track soly by the vaules of resources:PCPU and resources:VCPU and that the overhead extra spec dont effect how we claim in placement
16:14:19 cdent efried: do p!help
16:14:22 efried p!help
16:14:26 jaypipes cfriesen: no, we can't change VCPU to CPU_SHARED, unfortunately.
16:14:29 cdent p!help
16:14:46 efried p!log
16:14:53 jaypipes cfriesen: which is why I wanted PCPU to be the class name for the dedicated CPU resource, since it matched VCPU
16:15:05 cdent you can do it in a privmsg too, so we don't have to see it. there you can leave off the p! prefic
16:15:18 efried cdent: http://p.anticdent.org/logs/openstack-nova?dated=2018-03-22%2016:05:18.169011#4hT5
16:16:37 efried cdent: Basically, we collectively on average seem to hate the available options for intra-param punctuation more than we hate deviating from the rest of the API by supporting repeatable for this one new case.
16:16:52 sean-k-mooney jaypipes: can you clear up somthing for me. if i have resources:VCPU=4 resources:PCPU=1 and hw:overhead_dedicated_set=0 do i claim 5 cpus in placement (4 shared and 1 dedicated)
16:16:53 cdent oh, that's not how intepreted that
16:16:58 openstackgerrit Eric Young proposed openstack/nova master: Support extending attached ScaleIO volumes https://review.openstack.org/554679
16:17:23 purplerbot <cdent> efried: "fixable problem" was the immediate thing of "being able to accept duplicates on keys in general". I agree that addressign dan's problem in the least disruptive way is probably syntax in the param [2018-03-22 15:53:38.038412] [n 3cRQ]
16:17:23 cdent I got what I said here about being least disruptive: [t 3cRQ]
16:17:35 jaypipes sean-k-mooney: no, you claim 4 VCPU and 1 PCPU resources.
16:17:47 jaypipes sean-k-mooney: there's no such things as a generic "CPU resource"
16:17:51 sean-k-mooney jaypipes: yes that is what i ment
16:18:23 sean-k-mooney i just wanted to make sure we dont claim 4VCPUs and 2 PCPUS
16:18:50 cfriesen sean-k-mooney: jaypipes: hw:overhead_dedicated_set doesn't make sense since we may want to run emulator threads separate from all vCPU threads (this is what "isolate" does today)
16:19:05 sean-k-mooney and in this case the guest recived 5 logical cpus and the emulator tread is pinned to the PCPU that was allocated to the vm
16:19:11 cdent efried: it probably doesn't matter _that_ much as long as documentation etc
16:19:17 cdent (whichever choice we make)
16:19:31 jaypipes cfriesen: ack. I'm reworking this in the spec after your feedback.
16:19:56 sean-k-mooney cfriesen when you say isolate which isolate do you mean
16:20:00 efried cdent, dansmith, edleafe: Okay, let's make a call one way or another. And send an email. And propose a spec delta. And fix the code. And close the books.
16:20:00 jaypipes cfriesen, sean-k-mooney: can there ever be >1 emulator thread, though?
16:20:08 cfriesen jaypipes: yes
16:20:12 edleafe cdent: efried: I didn't realize that we didn't accept multiple resources= params. But I do agree that changing that now is not a good use of time
16:20:15 jaypipes sean-k-mooney: he is referring to hw:emulator_threads_policy=isolate
16:20:22 cfriesen jaypipes: and there can be multiple I/O threads too
16:20:50 jaypipes cfriesen: and how does "hw:emulator_threads_policy=isolate" account for >1 emulator thread? that was the whole point of the overhead_dedicated_set being a pinset -- allowing >1 emulator thread to be specified.
16:20:56 sean-k-mooney jaypipes: ah ok hw:cpu_threads_policy=isolate is different just makeing sure
16:21:11 cfriesen jaypipes: all the emulator threads get affined to a single physical cpu
16:21:44 jaypipes cfriesen: that sounds like a libvirt-specific assumption that will likely change at any given time (as most of these things tend to do)
16:22:03 sahid jaypipes: oh so you can't change VCPU? in that case i'm ok with PCPU
16:22:18 cfriesen jaypipes: the emulator threads don't usually have a lot of work to do (the exception is during live migration I think). the goal of "hw:emulator_threads_policy=isolate" is to ensure that the minimal work they do doesn't interrupt the guest cpu threads
16:22:25 jaypipes sahid: I mean, we *could*, but that would be a seriously annoying code change ;)
16:23:00 mriedem melwitt: if you approve a blueprint like https://blueprints.launchpad.net/nova/+spec/hurrah-for-privsep-again you should set the 'series goal' to rocky so it shows up on the actual rocky blueprints page: https://blueprints.launchpad.net/nova/rocky
16:23:36 melwitt mriedem: sorry, I missed that it wasn't set. setting now
16:24:05 jaypipes cfriesen: so it never makes sense to have emulator threads on dedicated CPUs and guest vCPU threads on shared CPUs, right?
16:24:12 cfriesen jaypipes: yes, I suppose that's qemu-specific
16:24:34 cfriesen jaypipes: no, that wouldn't make sense.
16:24:37 sahid jaypipes: yes i'm agreed with cfriesen, that never make sense
16:25:04 jaypipes cfriesen: furthermore, from what I gather from your and sean-k-mooney's feedback, it also would never make sense to have emulator threads policy set to *anything* if the guest vCPU threads were *not* pinned to dedicated CPUs.
16:25:28 cfriesen jaypipes: yes
16:25:35 jaypipes k
16:26:16 cfriesen jaypipes: but it might make sense to have vcpu threads on dedicated cpu, and emulator threads on shared cpu (lumped together with other emulator threads and shared vcpu threads)
16:27:01 stephenfin yeah, that's one of the ideas that came up in reviews of sahid's spec ^
16:27:08 cfriesen jaypipes: sahid: I'm just not sure if we need to keep the "allocate a whole host cpu for my emulator threads because I'm super important and don't want other guests to impact my emulator threads"
16:27:42 sahid cfriesen: yes, you have asked me, but did not have responded. I think that is not necessary
16:27:44 stephenfin assuming we gain 'pcpu_pin_set' option (or whatever tetsuro's spec called for)
16:28:22 sahid we just want in some cases the emulthreads to run somewhere
16:28:26 jaypipes stephenfin: CONF.cpu_dedicated_set
16:28:32 cfriesen If we don't need that, then the simplest thing would be to enforce that we always have at least one shared host CPU, and if you ask for hw:cpu_threads_policy=isolate it runs there.
16:28:33 stephenfin that's the one
16:28:44 jaypipes stephenfin: is my proposal, along with CONF.cpu_shared_set being the other disjoint set.
16:28:59 stephenfin or maybe not, but the idea's the same
16:29:13 jaypipes cfriesen: you mean emulator_threads_policy, not cpu_threads_policy.
16:29:18 cfriesen bah, yes
16:29:20 sahid cfriesen: i see you point, we can't have cpu_shared_set empty
16:29:29 jaypipes yet another reason all this stuff is so confusing...
16:30:09 stephenfin So we'd completely remove the ability to have one core per guest for emulator threads (e.g. what we currently have)
16:30:19 stephenfin not that I'm against that. Just making sure I understand
16:30:29 cfriesen stephenfin: that's really an implementation detail currently, but yes
16:30:29 sahid stephenfin: yes, no need of that anymore
16:30:37 stephenfin (y)
16:31:38 jaypipes stephenfin: I don't understand that last statement...
16:31:47 jaypipes stephenfin: why would we be removing that ability?
16:32:03 cfriesen jaypipes: if we assume that the emulator thread work scales with the number of vcpus, then we don't need to account for it separately, it's already in cpu_allocation_ratio. This would simplify things since you wouldn't need to ask for an extra VCPU from placement.
16:32:21 stephenfin jaypipes: Because you can't account for the extra per-guest CPU
16:32:24 cfriesen jaypipes: we're saying we'd remove the code that allocates a whole extra host CPU to run the emulator threads
16:32:36 jaypipes cfriesen: that's exactly *not* what I want.
16:32:36 stephenfin what cfriesen says
16:33:03 cfriesen jaypipes: sorry, which conversation thread is that for?
16:33:04 cfriesen :)
16:33:08 jaypipes cfriesen: *something* needs to account for CPU resources consumed by emulator threads. right now, nothing is accounted for in placement.
16:33:43 cfriesen jaypipes: there are two possibilities. 1) emulator thread work scales with the number of guests. 2) emulator thread work scales with the number of vcpus

Earlier   Later