Earlier  
Posted Nick Remark
#openstack-nova - 2020-04-29
14:00:22 openstackgerrit Stephen Finucane proposed openstack/nova master: nova-audit: Use cliff instead of homegrown argparse bleh https://review.opendev.org/724332
14:00:30 artom I have to say, this shows the power of operator involvement upstream
14:00:46 dansmith artom: man, I really wish this had just been done as migrate-on-load
14:01:07 artom Us devs get "access" to actual large deployment, and the operators get devs not being stupid ;)
14:01:53 artom dansmith, I guess stephenfin's response to that would be "but then we'll never know for sure that we can remove the compat routines"
14:02:18 stephenfin 'zactly
14:02:30 dansmith artom: I think we'd load this whenever we do update available resource, so it'd be migrated within one cycle
14:02:51 artom dansmith, for all instances?
14:02:54 dansmith and if not, we could have just added it to the preloads and forced it to happen
14:02:56 gmann bauzas: gibi oh, i checked locally but i might need to init the policy explicitly depends on when cmd are run. let me test those scenario also. I will do after my internal meeting.
14:03:00 dansmith artom: yes, parallelized by compute node
14:03:36 stephenfin dansmith: have we an in-tree example of this migrate-on-load pattern?
14:04:02 dansmith I can point you at one for sure, but let me see if we have any in current master
14:04:52 artom The fact that belmoreira appears to have RIP'ed running that query is worrisome ;)
14:06:23 sean-k-mooney stephenfin: one thing we could do if this was expensive is to not do it as a normal online data migration in the sense of a global change
14:06:37 dansmith stephenfin: https://github.com/openstack/nova/blob/58aaffade9f78c5fdc6b0d26ec26b70908b7a6aa/nova/objects/migration.py#L89-L89
14:06:41 sean-k-mooney but instead have a nova manage command that would allow you do it per host
14:06:52 dansmith stephenfin: we generate uuid for migration on load if not present
14:07:04 sean-k-mooney so you could slowly space our the migration host by host until you are done
14:07:36 dansmith sean-k-mooney: we already have batch limits in place, so that doesn't help
14:07:41 dansmith other than create more debt in the form of a new command
14:07:51 belmoreira I was running these in our DBs. Again this is per cell. Some have much more than 1000 instances but for those we don't have numa topology defined. The ones that have numa_topology defined only run batch processing so they are large instances. Meaning that we have x4 or x8 times the number of compute nodes.
14:08:09 belmoreira in both cases queries take few ms
14:08:21 sean-k-mooney well ya that basically what i was thinkign of just limiting the rows it touches but if we can already do that then sure
14:08:40 stephenfin belmoreira++ excellent, thanks for checking that up
14:08:53 artom belmoreira, yep, that's very helpful, thanks!
14:09:38 belmoreira artom stephenfin thanks for ping me on this
14:09:42 sean-k-mooney well there are two parts first the query to get all the instance that need to be migrated then we need to lock the db and update all recoreds
14:10:01 sean-k-mooney you can actully do that in one update query
14:10:18 sean-k-mooney in general bug not in this case
14:10:24 artom belmoreira, just to make sure I understand, you're saying that your numa_topology-having instances are only about 4 to 8 instances per compute host, right?
14:10:25 gibi gmann: ack, thanks
14:10:25 dansmith belmoreira: I'm not sure I got what you said.. you don't have a db with tons of instances with a numa topology to test this on right?
14:11:49 sean-k-mooney if i parsed it correctly the cells with numa instance only run large vms so they have fewer isntances then the other cells
14:12:01 dansmith right
14:12:01 belmoreira artom yes
14:12:46 artom belmoreira, aha, ok - well, it tells us that the sql engine (or sqlalchemy itself?) is smart and checks the more restrictive stuff first - iow having a numa_topology at all
14:13:03 artom But it doesn't tell us what happens if there are thousands of numa_topology-having instances... :(
14:13:06 sean-k-mooney to be fair i would suspect that is likly common of many deployments. e.g. most nuam instance will be large flavors and therefore there will be less of them then standard instances
14:13:27 artom sean-k-mooney, that does seem very likely...
14:13:47 dansmith stephenfin: without the migrate on load, any idea what I can do to tickle those instances to rewrite them?
14:13:47 belmoreira dansmith you're right. I don't have a cell with a lot of instances. <2000 instances only
14:13:54 dansmith belmoreira: gotcha, thanks
14:14:12 sean-k-mooney belmoreira: could you do a count(*) on instance that have a numa topology so we can get a feel for the amount you have
14:14:32 belmoreira sean-k-mooney yes, give a sec
14:14:53 sean-k-mooney just wondering if its in the 100s or roughly what you were messuring
14:15:53 sean-k-mooney artom: i mean we can always fake it if we need too
14:16:08 artom sean-k-mooney, fake what?
14:16:24 sean-k-mooney a db with 1000s of numa instances
14:16:39 artom True
14:16:49 belmoreira our typical use case:
14:16:52 belmoreira select count(*) from instance_extra where deleted = 0; #711
14:16:52 belmoreira select count(*) from compute_nodes nodes; #176
14:16:53 belmoreira select * from instance_extra where deleted = 0 and numa_topology is not null and numa_topology like "%nova_object.name%"; #took 38.2 ms
14:17:10 sean-k-mooney ok so 700 ish is not bad
14:17:27 sean-k-mooney its not 2000 but its not 10
14:18:07 artom So based on those number it might actually be OK to go ahead as is...
14:18:11 sean-k-mooney if we were to assume this was liniar then i think it would be accpetable
14:18:13 artom *numbers
14:19:09 dansmith so, if we just convert to migrate-on-load, we don't take any overhead for string searching at all, migrate only the instances that need it, and are assured that they have migrated all instances by the end of the cycle, right?
14:19:22 dansmith even with nova-manage, we can't make them run it without a blocker migration (which is also expensive)
14:19:48 belmoreira in this case nova_topology is not defined, but may help in the analysis:
14:19:55 belmoreira select count(*) from instance_extra where deleted = 0; #1573
14:19:55 belmoreira select count(*) from compute_nodes nodes; #88
14:19:57 belmoreira select * from instance_extra where deleted = 0 and numa_topology is not null and numa_topology like "%nova_object.name%"; #took 106 ms
14:19:58 dansmith if we did that, stephenfin could just remove his nova-manage bits entirely, no impact for anyone that doesn't have old instances
14:20:35 stephenfin Yeah, I can do that too. Let me see if I can wrangle something up
14:20:39 artom dansmith, the end of cycle stuff is complicated by FFUs and operators skipping releases, no?
14:20:47 sean-k-mooney ya if we migrate on load that also works but the only realy implciation is keeping that for a relase or two for FFU
14:21:00 dansmith artom: ah, yeah, good point...
14:21:34 artom So 2 or 3 cycles, I guess
14:21:39 dansmith artom: if we had migrate-on-load for a while, then it'd be fine, but that's the problem trying to do the switch quickly
14:21:41 sean-k-mooney we coudl do both e.g. do the migrate on load and then wen we drop that provide a nova manange command with a blocker migration
14:22:15 dansmith sean-k-mooney: stephenfin has been trying to get this done for a long time so we're trying not to make this a career-long arc
14:22:46 artom dansmith, it's a thing he'll bequeath to his grandchildren
14:23:08 sean-k-mooney yep i know if this was a few weeks ato i woudl have suggeted doing the migrate on load in ussuri and then the blocker/migrate command in victoria
14:23:16 stephenfin 826 days
14:23:55 stephenfin oh my, I appear to have broken zuul https://review.opendev.org/#/c/724332/
14:24:24 artom Dayyyyuuuuum
14:24:30 sean-k-mooney hehe let me check with infra
14:27:43 sean-k-mooney zuul is being restart
14:28:00 sean-k-mooney it hit an out of memory issue and they are currently trying to fix it
14:29:17 sean-k-mooney so hold rechecks for a few minutes while they sort this out
14:29:50 sean-k-mooney well clearly his patch ate all the memory
14:35:00 sean-k-mooney ok zuul is back up. changes running before 14:00 UTC have been requed anything uploaded or approved bettween 14:00 and 14:30 needs to be rechecked
14:35:19 sean-k-mooney infra are going to send a staus update for the same shortly
14:52:11 kashyap sean-k-mooney: Since you've reviewed an older version (PS-5) and a newer one (PS-7), I'll just address the PS-7 bits here: https://review.opendev.org/#/c/631154/
14:52:15 kashyap sean-k-mooney: That okay?
14:55:54 sean-k-mooney kashyap: am sure
14:56:25 sean-k-mooney i think i coppied most of the relevent bits although if you read both and just resond on 7 that is fine with me
14:56:42 sean-k-mooney or well update it in version 8
14:56:54 kashyap sean-k-mooney: While I comment in the spec, on the "increased memory usage" bit -- I knew that thing, but haven't explicitly mentioned it because it requires precise tests, in what scenarios, etc
14:57:06 kashyap You can't just put a generic: "in all cases memory is increased"
14:57:32 sean-k-mooney kashyap: not really even with 1 pci root port dan found it used more memeory the pc
14:57:34 kashyap It requires more testing; so somebody ought to do the "performance testing guy's job"...
14:57:45 sean-k-mooney so i think in all configurtion it has more memory overhead
14:58:06 kashyap sean-k-mooney: Right; I'll mention that, but need to carefully write it in context and with a config example
14:58:42 sean-k-mooney or we can jsut say we expect that q35 will use more memroy as we have never seen a case where it uses less
14:58:44 kashyap sean-k-mooney: Also I don't want us to get sucked into that black-hole and get derailed...
14:58:56 kashyap But that begs the question: "how much more memory than before"

Earlier   Later