Earlier  
Posted Nick Remark
#openstack-nova - 2018-03-07
18:36:49 mriedem where once we archive instances, we delete the related mappings and reqspecs from the api db
18:37:08 dansmith I guess I didn't realize we were calling those "archived" in the output, because they can't be recovered
18:38:28 mriedem it's a bit misleading
18:39:00 tssurya I shouldn't have them displayed in the output ?
18:39:26 mriedem it's not a huge issue for me
18:39:52 dansmith yeah I don't care that much, it just triggered the wrong thing in my brain, so it could for others
18:40:33 mriedem if we care, we could put some words in the CLI docs https://docs.openstack.org/nova/latest/cli/nova-manage.html#nova-database
18:44:35 openstackgerrit Eric Berglund proposed openstack/nova master: PowerVM Driver: DiskAdapter parent class https://review.openstack.org/549053
18:57:27 openstackgerrit OpenStack Proposal Bot proposed openstack/python-novaclient master: Updated from global requirements https://review.openstack.org/550569
19:09:03 mriedem jaypipes: what's a VF in placement world? a resource class?
19:09:05 artom mriedem, wait, we're doing live migration with PCI devices now? I was only told about CPU pinning
19:09:18 mriedem artom: you're right, i was conflating the two earlier
19:09:50 artom mriedem, also, I'm pretty sure we need loads of underlying stuff for PCI devices to be live-migratable
19:10:04 mriedem jaypipes: or do we have CN RP (root) -> PF RP (child) -> VF RP (grandchild)?
19:10:08 artom We had an internal call this morning and someone brought up live migration with SRIOV
19:10:37 artom And while I still need to do research and ask around, the conclusion was "we need low level stuff, possible even at the kernel level"
19:11:10 mnaser can someone give me some pointers about where to RTFM regarding what happens between the time a new server request comes in and the vm gets a cell assigned? i'm seeing behaviour where VMs will intermittantly (under load) go in BUILD status, with no task
19:11:12 dansmith mriedem: VF is a resource not a provider
19:11:17 dansmith mriedem: a PF is a provider (of VFs)
19:11:33 dansmith PF is also a provider of inventory of 1 PF, in case you want to pass a PF into the guest
19:11:35 mnaser usually i would see BUILD status + SCHEDULING when i see any scheduler issues, but this seems before a cell gets assigned (i think?)
19:11:49 mnaser not looking for an answer, but maybe a pointer to where should i be reading
19:12:12 mriedem dansmith: ok, trying to load https://review.openstack.org/#/c/485522/ into my brain
19:13:05 mriedem mnaser: the build request, which represents the instance until it's created in a cell, is created in the compute API._provision_instances method
19:13:15 mriedem the API casts to conductor's schedule_and_build_instances method,
19:13:38 mriedem which calls the scheduler for hosts and then based on the host selected, finds the cell the host is in and creates the instance in that cell
19:13:41 mriedem then deletes the build request
19:13:53 mnaser mriedem: ok i see, i'll trace from there, i guess something is happening so the instance doesn't even go into scheduling state.. so i'll see what happens across there
19:14:09 mnaser it's strange because it just happens from time to time (but seems to happen more under stress)
19:14:47 mriedem dansmith: was wondering if in this trusted VF thing, with placement, if there would be a way to say a VF is trusted, but if it's a resource and not a provider, then i don't think there is
19:15:10 mriedem it sounds like the thing would be saying the PF has trusted VFs
19:15:22 artom Could "trusted" be a trait?
19:15:27 mriedem artom: that's what i'm saying
19:15:42 mriedem the PF resource provider of VF inventory would have a 'trusted' trait
19:16:03 artom Grr, I keep forgetting only providers have traits
19:16:18 dansmith how would one VF be trusted and not another?
19:16:20 mriedem and then the flavor extra spec says it requires trusted VFs, and the flavor could be in a set of host aggregates for hosts that provide trusted VFs
19:16:45 dansmith either way, if you want to have some VFs with a trait, you expose two providers with the VFs you want, and a trait of trusted
19:16:58 dansmith but yeah, placement is the way to do this I think
19:17:25 mriedem i haven't gotten far enough long in this spec to yet see what is the proposed solution, but i'm assuming it doesn't involve placement
19:17:36 mriedem so i'm working up the context for my questions
19:17:45 dansmith yeah,m doesn't look like it
19:18:26 artom A thing to keep in mind is that the operator decides what's trusted and not
19:18:34 artom There's a way for them to do that in placement, right?
19:21:14 mriedem well,
19:21:20 mriedem presumably
19:21:28 mriedem admins can set traits on providers, yes
19:21:32 mriedem however,
19:21:52 mriedem nova currently doesn't merge in any externally set traits if it's also setting traits on the same provider
19:21:53 mriedem like the compute node
19:21:57 mriedem that came up on friday at the ptg
19:22:01 mriedem remember artom?!
19:22:23 artom Why am I sensing aggression? ;)
19:22:27 mriedem ha
19:22:32 artom But yeah, I remember the merging of traits
19:23:05 openstackgerrit Merged openstack/nova master: Allow 'network' in RequestContext service_catalog https://review.openstack.org/548572
19:23:30 artom So that... could be a problem. Or a dependency, I should say
19:24:39 mriedem bauzas: ^ merged so can you remove the -W on https://review.openstack.org/#/c/550259/ ?
19:25:20 mriedem artom: well in the case of PFs it's likely not a problem *today* since nova doesn't create PF providers or set traits on them, but with NRP i'm not sure what the plan is for who creates PFs
19:25:23 mriedem nova or neutron or other
19:25:50 artom mriedem, right, but I'm thinking of the trusted VFs thing
19:26:19 artom If the plan is to handle them in placement (which I think is a good idea), then we probably need some dependencies to land first (or semi-concurrently, at least)
19:26:33 artom Well
19:26:39 mriedem artom: oh totally
19:26:50 artom Unless Nova just sets *no* traits on VFs at all
19:26:59 mriedem before i even read it, i'm assuming the spec is not placement, but just a frankenstein of flavor extra specs, host aggregates, and neutron binding profile plumbing
19:27:01 artom So that only the externally set "trusted" trait is, err, set
19:27:07 artom mriedem, oh yeah
19:27:28 mriedem and to say "we should do this the right way (tm) with placement" it would mean it not happening in rocky
19:28:01 artom Well, my downstream hat wants to say "do it now!" but my upstream hat is saying "let's do this properly"
19:29:21 dansmith +1 from me
19:34:01 mriedem i'll take that as dansmith +1ing the 'do it now' part of that
19:34:11 mriedem quick and dirty yeehaw pew pew
19:35:25 mnaser so i've been trying to find how nova sets an instance to SCHEDULING task state.. i see two places where it is actually set and one is in compute/api.py in _populate_instance_for_create which seems like cells v1 code from what i read, the other one is in _do_build_and_run_instance() upon 'RescheduledException' being raised, it seems to reset it back to SCHEDULING
19:35:31 mnaser but i can't find where it gets set for the first time? :\
19:36:25 mnaser in following _provision_instances down to the conductor schedule_and_build_instances, i dont see anything that changes the task_state
19:37:11 mriedem mnaser: _provision_instances -> create_db_entry_for_new_instance -> _populate_instance_for_create
19:37:30 mriedem the instance returned is serialized and stored in the build_requiest
19:37:32 mriedem *request
19:37:33 mnaser mriedem: so the comment right above create db entry saying "This method remains because cellsv1 uses it in the scheduler"
19:37:46 mnaser is a bit misleading maybe?
19:38:01 mriedem yeah, i think that's more for the create_instance kwarg on the method
19:38:10 mnaser gr, you're right, that's part of the flow too
19:38:32 mnaser create_db_entry_for_new_instance => _populate_instance_for_create => instance.task_state = task_states.SCHEDULING
19:38:38 mriedem right
19:38:43 mnaser so i guess it never reaches that state because the instance is in BUILD/None
19:39:20 mriedem it should be SCHEDULING until the next thing that changes the task_state
19:39:53 mnaser hmm, i see, so maybe the issue here is that something takes it from BUILD/SCHEDULING => BUILD/None and it just stalls out
19:39:56 mriedem which i think is build_and_run_instance in the compute
19:40:09 mnaser but i dont see a compute host listed when i see the instance in that state
19:40:21 mriedem is the instance in cell0?
19:40:37 jaypipes mriedem: typically a VF will be represented as an amount of SRIOV_NET_VF resource class inventory on a resource provider representing the PF. However, it is possible that a resource provider representing the individual VF could be created by the virt driver or neutron agent IFF differences in capabilities/traits differentiate individual VFs from each other.
19:40:51 mnaser mriedem: i can only assume eventually it ends up there once it stalls on BUILD/None for a while, ill investigate a bit more
19:41:28 mriedem should be able to tell by just looking for the instance in the cell0 db
19:41:46 mnaser grepping scheduler logs while this happens too
19:42:23 mnaser it doesn't end up in cell0
19:42:56 mriedem so there must be a build_request for it in the nova_api db
19:43:05 mriedem query the build_requests table for that instance uuid?
19:44:06 mnaser no build request in nova_api, but the instance is in the cell db (not cell0) with state as 'building'
19:44:11 mnaser until i assume the instance was just deleted

Earlier   Later