| Posted | Nick | Remark | |
|---|---|---|---|
| #openstack-nova - 2017-04-19 | |||
| 14:41:08 | bauzas | mriedem: posting a summary in the spec ? | |
| 14:41:10 | mriedem | 'disk_gb': (instance_info['memory_mb'] + 512) // units.Ki | |
| 14:41:20 | mriedem | bauzas: yeah, in a minute | |
| 14:41:26 | mriedem | looking at this py35 weirdness | |
| 14:41:36 | bauzas | mriedem: okay, because I was about writing a new rev -ish | |
| 14:42:36 | edleafe | mriedem: oh, that's much clearer | |
| 14:43:15 | mriedem | edleafe: the xen and libvirt ones are more confusing | |
| 14:44:07 | mriedem | gcb: i'm having a hard time knowing which test is doing the stack overflow | |
| 14:44:18 | mriedem | but there appears to be an infinite recursion in oslo.config | |
| 14:44:35 | mriedem | gcb: i also see at the end: nova.tests.unit.test_rpc.TestRPC.test_add_extra_exmods [] ... inprogress | |
| 14:44:37 | bauzas | mriedem: the libvirt one is scarying me, because I wonder if we could even cache that | |
| 14:44:38 | mriedem | so maybe it's that one | |
| 14:44:47 | mriedem | bauzas: because it's config driven? | |
| 14:44:51 | mriedem | and per-image | |
| 14:45:15 | mriedem | bauzas: yeah that's a good point | |
| 14:45:17 | mriedem | dansmith: ^ | |
| 14:45:24 | melwitt | mriedem: is anyone working on the intermittent ironic test failure? I want to take a stab at it if not | |
| 14:45:24 | mriedem | the libvirt overhead one kind of screws us | |
| 14:45:28 | mriedem | melwitt: no | |
| 14:45:30 | bauzas | mriedem: exactly this | |
| 14:45:41 | dansmith | hmm, I don't remember the config bit | |
| 14:45:41 | mriedem | melwitt: i was considering just skipping it for now | |
| 14:45:50 | mriedem | dansmith: might not be config, but it's based on image meta | |
| 14:46:00 | gcb | mriedem, Do you get error from https://review.openstack.org/#/c/456397 ? It seems oslo.config have recursion calls | |
| 14:46:02 | johnthetubaguy | melwitt: I saw talk of something in the neutron channel about ironic, but seemed more like a hard failure | |
| 14:46:09 | dansmith | mriedem: yeah image meta | |
| 14:46:24 | mriedem | gcb: it's multiple changes failing on this | |
| 14:46:27 | mriedem | according to logstash | |
| 14:46:45 | melwitt | mriedem: okay. I think the right thing to do is just raise the Timeout exception. we shouldn't be doing a real timeout | |
| 14:46:55 | melwitt | (as discussed on the bug) | |
| 14:47:11 | mriedem | melwitt: so remove all of the fake stub methods that are doing logic to trigger the timeout? | |
| 14:47:15 | mriedem | melwitt: that's the easy fix | |
| 14:47:34 | mriedem | i think i get the point of why the test was doing that though | |
| 14:47:39 | mriedem | to stub and mimic what the driver is doing | |
| 14:47:43 | mriedem | but it's pretty fragile | |
| 14:48:07 | melwitt | mriedem: yeah, stub the looping call to raise the timeout. I thought the test wants to check that it does the right thing when a timeout occurs, that it raises the ConsoleNotAvailable | |
| 14:49:21 | melwitt | that is, I think we can assume that oslo_service looping calls work correctly, else we're also testing oslo functionality | |
| 14:49:30 | mriedem | melwitt: yeah it's a fine line | |
| 14:49:49 | bauzas | mriedem: dansmith: we also lookup the instance if we don't have the numa topology set in the instance object for knowing the overhead | |
| 14:49:53 | mriedem | melwitt: i'm fine with doing that | |
| 14:49:56 | dansmith | mriedem: so, a couple things | |
| 14:50:00 | mriedem | melwitt: because my solution was skipTest :) | |
| 14:50:18 | gcb | mriedem, it's really strange, nova.tests.unit.test_rpc.TestRPC.test_add_extra_exmods is simple test. what I found just deprecated warning from oslo.messaging | |
| 14:50:41 | dansmith | mriedem: (1) presumably we'll do this without the cache first, (2) we can cache on flavorid/hv/ver first, (3) we might just make a hash key function that generates a key based on all the things currently known to matter | |
| 14:51:09 | mriedem | dansmith: where (3) could take into account the image id too? | |
| 14:51:12 | dansmith | mriedem: and (4) the penalty for missing means we *might* fail to build because of overhead on the compute, which sucks, but.. builds can fail | |
| 14:51:17 | dansmith | mriedem: yeah | |
| 14:51:26 | mriedem | dansmith: and the image meta could change w/o changing the image id | |
| 14:51:37 | dansmith | mriedem: or just hash in the actual fields we know are ever looked at | |
| 14:51:45 | dansmith | mriedem: right well, that's why I was thinking ^ instead of id, but yeah | |
| 14:51:55 | bauzas | mriedem: dansmith: so just to make it clear, we introspect the instance every time we claim the resource in the RT if libvirt | |
| 14:51:57 | melwitt | mriedem: heh, okay. I'll upload it and we'll see | |
| 14:52:02 | mriedem | changing meta on an image w/o dumping the old image seems like a bad idea | |
| 14:52:10 | dansmith | because if you have two images, but without cpu policy set, those shouldn't need to be done separately | |
| 14:52:17 | mriedem | bauzas: if libvirt/hyperv/xen | |
| 14:52:18 | bauzas | mriedem: dansmith: for knowing the numa topology | |
| 14:52:37 | mriedem | bauzas: where do we even set instance.numa_topology during instance creatE? | |
| 14:52:41 | dansmith | bauzas: I know, what's your point? hopefully that all goes away anyway | |
| 14:52:50 | dansmith | mriedem: it's during virt build I think | |
| 14:52:58 | mriedem | heh | |
| 14:53:00 | mriedem | so... | |
| 14:53:01 | dansmith | well, that's where we fill it out | |
| 14:53:05 | bauzas | dansmith: the fact that we could potentially not be able to cache things | |
| 14:53:22 | bauzas | because there could be only one occurence | |
| 14:53:33 | mriedem | sfinucan: do you know where we set instance.numa_topology during instance build? | |
| 14:53:36 | bauzas | I mean a cache hit of 1 occurrence | |
| 14:53:46 | sfinucan | mriedem: We set it twice | |
| 14:54:06 | sfinucan | Once during the filtering stage (to see if an instance would fit on the host) | |
| 14:54:08 | dansmith | bauzas: the looking at the instance.numa part is just to calculate the same thing, but without having flavor/image meta | |
| 14:54:17 | sfinucan | and once when actually booting the instance | |
| 14:54:23 | sfinucan | I'll get the two calls now | |
| 14:54:31 | dansmith | bauzas: you would get the same answer from the instance as from the metadata | |
| 14:54:57 | dansmith | mriedem: ^ | |
| 14:55:16 | mriedem | sfinucan: looks like RT.instance_claim sets it on the instance | |
| 14:55:59 | bauzas | dansmith: mmm, you're right, two instances sharing same flavors/images would necessarly have the same overhead even with numa | |
| 14:56:08 | dansmith | right, | |
| 14:56:17 | dansmith | it's just that we get the value either calculated from meta, or already set if the instance has had it done | |
| 14:56:21 | dansmith | it's still the same answer | |
| 14:56:23 | bauzas | right | |
| 14:56:31 | bauzas | so, the key is the tuple (image, flavor) | |
| 14:56:35 | bauzas | well | |
| 14:56:38 | dansmith | no | |
| 14:56:46 | bauzas | (image, flavor, hv_type, hv_version) | |
| 14:56:51 | dansmith | the key is a hash value of flavorid, a set of image properties, hv, version) | |
| 14:56:51 | dansmith | yeah | |
| 14:57:00 | dansmith | not image id though | |
| 14:57:08 | mriedem | what other nasty things is the RT doing that we aren't thinking about? | |
| 14:57:12 | mriedem | cpu pinning stuff on the host? | |
| 14:57:21 | edleafe | Can we simplify things and get a good estimate of what the max total overhead could ever be on a particular host? | |
| 14:57:24 | bauzas | mriedem: I think we CPU pin indeed | |
| 14:57:27 | edleafe | And then just reserve that? | |
| 14:57:48 | mriedem | edleafe: as cdent noted earlier, we don't get the reserved inventory for this | |
| 14:57:58 | bauzas | mriedem: AFAIK, we just verify if we can accept a host for CPU pinning, but we do set the pin between pCPU and vCPU at the RT stage | |
| 14:58:08 | bauzas | sfinucan: correct ? ^ | |
| 14:58:08 | sfinucan | mriedem: Yeah, you're looking for calls to 'numa_fit_instance_to_host' | |
| 14:58:32 | edleafe | mriedem: I mean when creating the resource provider, add the total overhead it might need to the reserved part for the hypervisor | |
| 14:58:33 | sfinucan | bauzas: Correct | |
| 14:58:37 | cdent | mriedem: that's not what I said. What I said was _if_ we change reserved, we don't change the allocations. I actually think making a good guess at what global overhead is at boot time, and adding that to reserved is the right way to go | |
| 14:58:56 | cdent | s/boot/host boot/ | |
| 14:59:01 | sfinucan | We call 'numa_fit_instance_to_host' to make sure that the instance would fit on a host with a given CPU pinning permutation | |