Earlier  
Posted Nick Remark
#openstack-nova - 2019-08-26
18:44:18 openstackgerrit Artom Lifshitz proposed openstack/nova master: LM: add support for augmenting migrate_data with info from claims https://review.opendev.org/634828
18:44:19 openstackgerrit Artom Lifshitz proposed openstack/nova master: Deprecate CONF.workarounds.enable_numa_live_migration https://review.opendev.org/640021
18:44:19 openstackgerrit Artom Lifshitz proposed openstack/nova master: NUMA live migration support https://review.opendev.org/634606
18:44:20 openstackgerrit Artom Lifshitz proposed openstack/nova master: Functional test for NUMA live migration https://review.opendev.org/672595
18:44:35 dansmith efried: well, I don't know without looking, but let me tell you why it's not built in:
18:45:17 dansmith efried: since OVOs can have only part of the database state loaded, we don't provide a default equality operator because determining equality with missing things may be doable in some cases and not others
18:45:32 dansmith efried: and with a nested object the parent and child may have differing rules there
18:46:11 efried dansmith: ack, thanks for the explanation.
18:46:25 mriedem true story, i was writing some ovo compare stuff for cross cell resize and had masked bugs because something was passing b/c one of the objects didn't have a field loaded
18:46:40 dansmith efried: so for an object with primitive field types, then yes that should work, but if it has any nested objects, it won't
18:46:59 openstackgerrit Merged openstack/nova master: Update SDK fixture for openstacksdk 0.35.0 https://review.opendev.org/678237
18:47:42 dansmith efried: for some objects, "does the row id match" is good enough, and for others, you need to compare the contents in more depth
18:53:25 efried dansmith: so for this Resource thing, we're going to be asking the virt driver to populate the (local) resources associated with a provider every time RT update runs (so on periodics, instance ops, etc). I would think we want to avoid writing the same records back to the database every iteration.
18:53:40 efried Which means we need to be able to compare with existing
18:53:56 efried what decides how much of the object gets loaded from the db?
18:54:39 dansmith efried: the code that loads it from the db
18:54:53 dansmith efried: this is a performance-hating blob-based object right? in that case, it always comes out whole
18:55:20 efried The touchpoint with the db is that InstanceExtra gets a resources field which is of type ResourceList
18:56:17 efried so ultimately I guess we need to be able to compare a ResourceList we get/build from the virt driver with whatever's in Instance.extras
19:00:57 sean-k-mooney dansmith: yes although i was not sure if we already covered it on irc
19:01:06 sean-k-mooney ill resond on the revew https://review.opendev.org/#/c/635669/39/nova/compute/resource_tracker.py
19:11:29 artom In an artificial func test scenario with 2 compute hosts, we boot 2 instances. The first one can only fit on one host, the second one on either. Can we be 100% it will be placed on the host that does *not* have the first instance?
19:11:40 artom 100% sure?
19:11:53 artom IOW, in that contrived scenario, how deterministic is scheduling?
19:12:10 dansmith if it can't fit, it should be fully deterministic
19:12:34 artom dansmith, the first instance, yeah. But the second instance can go on either host.
19:12:36 dansmith there are a couple tests that add a weigher which always prefers the first host to help it be deterministic in the order it selects even the first one
19:12:57 dansmith artom: so you're asking if the second one, which will *still* fit will go to one specifically?
19:13:17 sean-k-mooney if you boot it in that order tehn its determistic
19:13:23 artom dansmith, yeah. The scheduler's choice is "host A with another instance" or "host B with no instances"
19:13:28 dansmith sean-k-mooney: not if host_subset_size != 1
19:13:33 sean-k-mooney if you wan to force it to the other host i thike we added --host option recently
19:13:56 dansmith artom: I would rather you write the test to be more specific than that if possible
19:14:13 artom dansmith, so force it with a weigher to a host?
19:14:29 artom It doesn't change the mechanics of the test, just the numbers that we assert.
19:14:31 sean-k-mooney is the scenarion that the ifrst instace can oly fit on the first host and the second can fit on either(but not after the first is booted)
19:14:51 artom sean-k-mooney, no, the second can fit on either regardless of the first instance.
19:14:58 sean-k-mooney oh
19:15:00 dansmith artom: yeah, I don't really like altering the behavior in a functional test, but scheduling determinism bugs in functional tests are annoying,
19:15:15 dansmith artom: especially if they work now, but start to fail the obscure assumptions made in a year
19:15:18 sean-k-mooney then use https://github.com/openstack/nova-specs/blob/master/specs/train/approved/add-host-and-hypervisor-hostname-flag-to-create-server.rst
19:15:27 artom dansmith, well, what I currently have is just an if
19:15:40 artom if hostA; assert hostA things; else assert hostB things
19:15:47 artom (really just the number of the pinned CPUs)
19:15:51 dansmith artom: meaning the test tolerates it being either place?
19:15:53 sean-k-mooney i think we merged the code for that a few weeks ago right
19:15:56 artom dansmith, exactly
19:16:08 dansmith artom: kinda seems like that's begging for testing both scenarios, no?
19:16:26 dansmith artom: can you boot a third like the second that will have to go in the spot not taken by the second instance and then assert it al?
19:16:38 artom dansmith, yeah, but why?
19:16:58 artom This is all just a "forcing" function to make sure that when I live migrate it, the XML will have to get updates
19:17:02 dansmith artom: well, if you put it on the second host, I'll ask if you're sure it would have worked if co-located
19:17:10 sean-k-mooney we are litrally adding a feature this cycle to allow this.
19:17:14 dansmith artom: and if it is co-located, I'll ask if it would have worked if by itself :D
19:17:29 dansmith artom: ah, right, forgot about the migration
19:17:41 dansmith artom: so you an migrate it to and fro and cover both cases right?
19:17:48 sean-k-mooney and its marked as implemented https://blueprints.launchpad.net/nova/+spec/add-host-and-hypervisor-hostname-flag-to-create-server
19:17:53 dansmith i.e. migrate twice instead of boot thrice
19:18:01 artom It's about forcing the migration to move the server to a cell that as different CPU numbers
19:18:29 sean-k-mooney you are trying to force the xml to be regenerated
19:18:33 artom Yeah
19:18:50 dansmith artom: right, so two migrations will cover the bases of migrating to an empty host which could take anything and to a host where it can't (as long as it didn't choose the same by luck)
19:18:56 artom The idea is to have a server with 2 NUMA cells: 2 CPUs and 3 CPUs
19:19:02 artom And another with just a single cell: 2 CPUs
19:19:15 sean-k-mooney so why not use the host/hypervioer_host name parmaters on server create
19:19:30 artom But such that the 2-CPU cells have different physical CPUs in them
19:19:38 sean-k-mooney it will allow you slect the host and it will use the schdler to validate it is sutable
19:19:46 artom So host2: [0, 1], host3: [0, 1, 2] [3, 4]
19:20:14 artom "Fill" the 3-CPU cell with a first instance
19:20:20 artom Then boot the 2-CPU instance
19:20:29 dansmith artom: is this for a tempest test or a functional test?
19:20:35 artom I don't care where it goes, as long as I live migrate it, its CPU pins have changed
19:20:38 artom dansmith, functional
19:21:16 dansmith okay, I think we have other tests that migrate twice just to make sure we hit both hosts, regardless of the ordering
19:21:27 dansmith which I prefer to modifying the scheduler, if it will cover us
19:21:45 dansmith targeting the build works too I guess, but it's also not the more realistic case you're trying to replicate
19:21:54 sean-k-mooney we currently dont have any live migration test the suceed and use the fakelibvirt dirver in teh functional tests
19:22:08 artom Yey, I'm first :(
19:22:32 sean-k-mooney so ignrogn the lack of live migration tests i dont see what the big deal is
19:22:56 sean-k-mooney you stare each compute node with a different config with non overlaping cpus
19:23:03 sean-k-mooney in the dedicate_cpu_set
19:23:10 sean-k-mooney then spawn a singel vm
19:23:17 sean-k-mooney and migrated to the ohter node
19:23:23 sean-k-mooney and your done
19:23:39 artom Uhh, literally *ALL* tests are failing with "keystoneauth1.exceptions.auth_plugins.MissingAuthPlugin: An auth plugin is required to determine endpoint URL"
19:23:42 artom I think devstack bork
19:23:50 sean-k-mooney you need to rebase
19:23:59 sean-k-mooney this is fixed on master
19:24:38 artom ack
19:24:45 artom When I push the new func test
19:24:55 sean-k-mooney are you goint to do ^
19:24:56 artom I gotta run for a daughter school thing (yes, she's starting shool!)
19:25:10 artom sean-k-mooney, can't have different configs in func tests
19:25:19 sean-k-mooney yes you can
19:25:32 artom Nope, CONF is global
19:25:43 sean-k-mooney you need to chente the config flag and start the compute agent serially
19:26:11 sean-k-mooney it does not have to be with mocks and we read most of the values on start up
19:26:20 dansmith sean-k-mooney: that only works for a subset of cases
19:30:17 sean-k-mooney dansmith: yes but i think it will work in this case. i do not belview we parse the config on ever iteration of the perodic tasks.
19:31:03 sean-k-mooney if we do we should stop and cache it. we dont support change this config at runtime.

Earlier   Later