Improve EndpointLookupsCache occupancy #9876
Draft
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Description
Avoid storing complete
WorkloadEndpoint
/HostEndpoint
objects in the EndpointLookupCache. Extract the required fields and store only what is needed. The rest of the calculation graph already discards data it doesn't need to reduce occupancy, but a single new place that stores the "original" object results in storing both the full original object and the smaller extracted structs elsewhere.Split the cache into local and remote maps.
Expose the EndpointData as an interface instead of a struct for the collector/aggregator to use.
Add utility methods and marker methods to the "model" datatypes, makes it a lot easier to work with WEPs and HEPs as a single type (and gives type checking in more places throughout the calc graph).
Related issues/PRs
CORE-11061
Todos
Release Note
Reminder for the reviewer
Make sure that this PR has the correct labels and milestone set.
Every PR needs one
docs-*
label.docs-pr-required
: This change requires a change to the documentation that has not been completed yet.docs-completed
: This change has all necessary documentation completed.docs-not-required
: This change has no user-facing impact and requires no docs.Every PR needs one
release-note-*
label.release-note-required
: This PR has user-facing changes. Most PRs should have this label.release-note-not-required
: This PR has no user-facing changes.Other optional labels:
cherry-pick-candidate
: This PR should be cherry-picked to an earlier release. For bug fixes only.needs-operator-pr
: This PR is related to install and requires a corresponding change to the operator.