[placement] update 19-30

Chris Dent cdent+os at anticdent.org
Fri Aug 2 12:37:41 UTC 2019


HTML: https://anticdent.org/placement-update-19-30.html

Pupdate 19-30 is brought to you by the letter P for Performance.

# Most Important

The main things on the Placement radar are implementing Consumer
Types and cleanups, performance analysis, and documentation related
to nested resource providers.

# What's Changed

* [os-traits 0.16.0 was released](https://review.opendev.org/673294)
   was released, with a corresponding [canary
   update](https://review.opendev.org/673964).

* The [ProviderIds namedtuple was
   removed](https://review.opendev.org/673788). This is the first in
   a series of performance optimizations discovered as part of the
   analysis described below in the Cleanup section.

# Stories/Bugs

(Numbers in () are the change since the last pupdate.)

There are 23 (2) stories in [the placement
group](https://storyboard.openstack.org/#!/project_group/placement).
0 (0) are [untagged](https://storyboard.openstack.org/#!/worklist/580).
3 (1) are [bugs](https://storyboard.openstack.org/#!/worklist/574). 5 (0)
are [cleanups](https://storyboard.openstack.org/#!/worklist/575). 11
(1) are [rfes](https://storyboard.openstack.org/#!/worklist/594).
4 (0) are [docs](https://storyboard.openstack.org/#!/worklist/637).

If you're interested in helping out with placement, those stories
are good places to look.

* Placement related nova [bugs not yet in progress](https://goo.gl/TgiPXb)
   on launchpad: 17 (0).

* Placement related nova [in progress bugs](https://goo.gl/vzGGDQ) on
   launchpad: 4 (0).

# osc-placement

osc-placement is currently behind by 12 microversions.

* <https://review.opendev.org/666542>
   Add support for multiple member_of. There's been some useful
   discussion about how to achieve this, and a consensus has emerged
   on how to get the best results.

* <https://review.opendev.org/640898>
   Adds a new '--amend' option which can update resource provider
   inventory without requiring the user to pass a full replacement
   for inventory

# Main Themes

## Consumer Types

Adding a type to consumers will allow them to be grouped for various
purposes, including quota accounting.

* <https://review.opendev.org/#/q/topic:bp/support-consumer-types>
   A WIP, as microversion 1.37, has started.

## Cleanup

Cleanup is an overarching theme related to improving documentation,
performance and the maintainability of the code. The changes we are
making this cycle are fairly complex to use and are fairly complex
to write, so it is good that we're going to have plenty of time to
clean and clarify all these things.

I started some performance analysis this week. Initially I started
working with [placement master in a
container](https://anticdent.org/profiling-placement-in-docker.html)
but as I started making changes I moved back to
[container-less](https://anticdent.org/profiling-wsgi-apps.html).
What I discovered was that there is quite a bit of redundancy in the
code in the `objects` package that I was able to remove. For
example we were creating at least twice as many ProviderSummary
objects than required in a situation with multiple request groups.
It's likely there would have been more duplicates with more request
groups. That's improved in [this
change](https://review.opendev.org/674254), which is at the end of a
stack of several other like-minded improvements.

The improvements in that stack will not be obvious until the [more
complex nested topology](https://review.opendev.org/#/c/673513/) is
generally available. My analysis was based on that topology.

Not to put too fine a point on it, but this kind of incremental
analysis and improvement is something I think we (the we that is the
community of OpenStack) should be doing far more often. It is
_incredibly_ revealing about how the system works and opportunities
for making the code both work better and be easier to maintain.

One outcome of this work will be something like a _Deployment
Considerations_ document to help people choose how to tweak their
placement deployment to match their needs. The simple answer is use
more web servers and more database servers, but that's often very
wasteful.

# Other Placement

Miscellaneous changes can be found in [the usual
place](https://review.opendev.org/#/q/project:openstack/placement+status:open).

There is one [os-traits
changes](https://review.opendev.org/#/q/project:openstack/os-traits+status:open)
being discussed. And two [os-resource-classes
changes](https://review.opendev.org/#/q/project:openstack/os-resource-classes+status:open).

# Other Service Users

New discoveries are added to the end. Merged stuff is removed.
Anything that has had no activity in 4 weeks has been removed.

* <https://review.openstack.org/#/q/topic:bug/1819923>
   Nova: nova-manage: heal port allocations

* <https://review.opendev.org/659233>
   Cyborg: Placement report

* <https://review.opendev.org/662229>
   helm: add placement chart

* <https://review.opendev.org/634551>
   libvirt: report pmem namespaces resources by provider tree

* <https://review.opendev.org/660852>
   Nova: Remove PlacementAPIConnectFailure handling from AggregateAPI

* <https://review.opendev.org/670112>
   Nova: WIP: Add a placement audit command

* <https://review.opendev.org/586960>
   zun: [WIP] Use placement for unified resource management

* <https://review.opendev.org/671478>
   Kayobe: Build placement images by default

* <https://review.opendev.org/671312>
   blazar: Fix placement operations in multi-region deployments

* <https://review.opendev.org/671793>
   Nova: libvirt: Start reporting PCPU inventory to placement

* <https://review.opendev.org/#/q/topic:bp/support-move-ops-with-qos-ports>
   Nova: support move ops with qos ports

* <https://review.opendev.org/664689>
   Nova: get_ksa_adapter: nix by-service-type confgrp hack

* <https://review.opendev.org/666202>
   Blazar: Create placement client for each request

* <https://review.opendev.org/667952>
   nova: Support filtering of hosts by forbidden aggregates

* <https://review.opendev.org/669079>
   blazar: Send global_request_id for tracing calls

* <https://review.opendev.org/668252>
   Nova: Update HostState.\*\_allocation_ratio earlier

* <https://review.opendev.org/670696>
   tempest: Add placement API methods for testing routed provider nets

* <https://review.opendev.org/672678>
   openstack-helm: Build placement in OSH-images

* <https://review.opendev.org/674129>
   Correct global_request_id sent to Placement

# End

I started working with around approximately 20,000 providers this
week. Only 980,000 to go.

-- 
Chris Dent                       ٩◔̯◔۶           https://anticdent.org/
freenode: cdent


More information about the openstack-discuss mailing list