Skip to content

Reduce Route/VirtualHost memory utilization by avoiding RateLimitPolicy instances when not needed#24243

Merged
zuercher merged 3 commits intoenvoyproxy:mainfrom
yurykats:config_memory_2
Dec 2, 2022
Merged

Reduce Route/VirtualHost memory utilization by avoiding RateLimitPolicy instances when not needed#24243
zuercher merged 3 commits intoenvoyproxy:mainfrom
yurykats:config_memory_2

Conversation

@yurykats
Copy link
Copy Markdown
Contributor

@yurykats yurykats commented Nov 29, 2022

Reduce Route/VirtualHost memory utilization by avoiding RateLimitPolicy instances when not needed.

Currently an instance of RateLimitPolicyImpl is created in each vhost and route, even if no rate limiting is configured. This PR switches instances to unique_ptr and only creates RateLimitPolicyImpl objects when actually configured. Otherwise a singletong default policy is used.

This is a step towards more memory efficient config data structures. Issue #24154.

Similar change to Retry, Hedge and InternalRedirect policies was made in PR #24182.

Signed-off-by: Yury Kats ykats@google.com

Commit Message:
Additional Description:
Risk Level:
Testing:
Docs Changes:
Release Notes:
Platform Specific Features:
[Optional Runtime guard:]
[Optional Fixes #Issue]
[Optional Fixes commit #PR or SHA]
[Optional Deprecated:]
[Optional API Considerations:]

RateLimitPolicy instances when not needed.

Currently an instance of RateLimitPolicyImpl is created in each vhost
and route, even if no rate limiting is configured. This PR switches
instances to unique_ptr and only creates RateLimitPolicyImpl objects
when actually configured. Otherwise a singletong default policy is used.

This is a step towards more memory efficient config data structures. Issue envoyproxy#24154.

Similar change to Retry, Hedge and InternalRedirect policies was made in
PR envoyproxy#24182.

Signed-off-by: Yury Kats <ykats@google.com>
@repokitteh-read-only
Copy link
Copy Markdown

As a reminder, PRs marked as draft will not be automatically assigned reviewers,
or be handled by maintainer-oncall triage.

Please mark your PR as ready when you want it to be reviewed!

🐱

Caused by: #24243 was opened by yurykats.

see: more, trace.

@yurykats yurykats changed the title Reduce Route/VirtualHost memory utilization by avoiding optional RateLimitPolicy instances when not needed Reduce Route/VirtualHost memory utilization by avoiding RateLimitPolicy instances when not needed Nov 29, 2022
Signed-off-by: Yury Kats <ykats@google.com>
@yurykats
Copy link
Copy Markdown
Contributor Author

/retest

@repokitteh-read-only
Copy link
Copy Markdown

Retrying Azure Pipelines:
Check envoy-presubmit didn't fail.

🐱

Caused by: a #24243 (comment) was created by @yurykats.

see: more, trace.

Signed-off-by: Yury Kats <ykats@google.com>
@yurykats yurykats marked this pull request as ready for review November 29, 2022 21:47
@yurykats
Copy link
Copy Markdown
Contributor Author

/assign @adisuissa @zuercher

@yurykats
Copy link
Copy Markdown
Contributor Author

/retest

@repokitteh-read-only
Copy link
Copy Markdown

Retrying Azure Pipelines:
Retried failed jobs in: envoy-presubmit

🐱

Caused by: a #24243 (comment) was created by @yurykats.

see: more, trace.

Copy link
Copy Markdown
Contributor

@adisuissa adisuissa left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM, thanks!

Copy link
Copy Markdown
Member

@zuercher zuercher left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

thanks!

@zuercher zuercher merged commit a1a5e7d into envoyproxy:main Dec 2, 2022
@yurykats yurykats deleted the config_memory_2 branch December 2, 2022 03:29
jpsim added a commit to alyssawilk/envoy that referenced this pull request Dec 2, 2022
* origin/main:
  Start slow start window on first successful HC, make slow start re-enterable (envoyproxy#23946)
  contrib-sipproxy: rework sipproxy stats (envoyproxy#24165)
  build(deps): bump github/codeql-action from 2.1.32 to 2.1.35 (envoyproxy#24292)
  build(deps): bump node from `c59fb39` to `80844b6` in /examples/ext_authz/auth/http-service (envoyproxy#24274)
  build(deps): bump actions/upload-artifact from 2 to 3 (envoyproxy#24121)
  build(deps): bump mysql from `96439dd` to `66efaaa` in /examples/mysql (envoyproxy#24273)
  build(deps): bump grpcio from 1.50.0 to 1.51.1 in /examples/grpc-bridge/client (envoyproxy#24272)
  Allow mobile/library/common/jni/ to be built on non-Android platforms. (envoyproxy#24299)
  generic proxy: added drain support to generic proxy to doing graceful closes on connections when possible (envoyproxy#24220)
  Reduce Route/VirtualHost memory utilization by avoiding RateLimitPolicy instances when not needed (envoyproxy#24243)
  Reduce VirtualHost memory utilization by avoiding CatchAllVirtualCluster when not needed (envoyproxy#24182)
  Fix mobile/tools/check_format.sh to re-apply envoyproxy#2698 (envoyproxy#24300)
  upstream: don't require `source_address` in `upstream_bind_config` (envoyproxy#24250)
  Quiche roll 20221201150327 (envoyproxy#24290)

Signed-off-by: JP Simard <jp@jpsim.com>
jpsim added a commit that referenced this pull request Dec 2, 2022
…/docs/sphinx-5.3.0

* origin/main: (50 commits)
  ci: Bump mobile build images (#24317)
  ci: update llvm on bazel CI (#24296)
  ci: Fix flaky coverage limit (#24320)
  ci: Fix change detection (part 2) (#24264)
  Start slow start window on first successful HC, make slow start re-enterable (#23946)
  contrib-sipproxy: rework sipproxy stats (#24165)
  build(deps): bump github/codeql-action from 2.1.32 to 2.1.35 (#24292)
  build(deps): bump node from `c59fb39` to `80844b6` in /examples/ext_authz/auth/http-service (#24274)
  build(deps): bump actions/upload-artifact from 2 to 3 (#24121)
  build(deps): bump mysql from `96439dd` to `66efaaa` in /examples/mysql (#24273)
  build(deps): bump grpcio from 1.50.0 to 1.51.1 in /examples/grpc-bridge/client (#24272)
  Allow mobile/library/common/jni/ to be built on non-Android platforms. (#24299)
  generic proxy: added drain support to generic proxy to doing graceful closes on connections when possible (#24220)
  Reduce Route/VirtualHost memory utilization by avoiding RateLimitPolicy instances when not needed (#24243)
  Reduce VirtualHost memory utilization by avoiding CatchAllVirtualCluster when not needed (#24182)
  Fix mobile/tools/check_format.sh to re-apply #2698 (#24300)
  upstream: don't require `source_address` in `upstream_bind_config` (#24250)
  Quiche roll 20221201150327 (#24290)
  Cleanup threading/ownership semantics of PlatformBridgeCertValidator (#2713)
  Add unit tests of the PlatformBridgeCertValidator (#2704)
  ...

Signed-off-by: JP Simard <jp@jpsim.com>
jpsim added a commit that referenced this pull request Dec 2, 2022
…/docs/pygments-2.13.0

* origin/main: (25 commits)
  ci: Bump mobile build images (#24317)
  ci: update llvm on bazel CI (#24296)
  ci: Fix flaky coverage limit (#24320)
  ci: Fix change detection (part 2) (#24264)
  Start slow start window on first successful HC, make slow start re-enterable (#23946)
  contrib-sipproxy: rework sipproxy stats (#24165)
  build(deps): bump github/codeql-action from 2.1.32 to 2.1.35 (#24292)
  build(deps): bump node from `c59fb39` to `80844b6` in /examples/ext_authz/auth/http-service (#24274)
  build(deps): bump actions/upload-artifact from 2 to 3 (#24121)
  build(deps): bump mysql from `96439dd` to `66efaaa` in /examples/mysql (#24273)
  build(deps): bump grpcio from 1.50.0 to 1.51.1 in /examples/grpc-bridge/client (#24272)
  Allow mobile/library/common/jni/ to be built on non-Android platforms. (#24299)
  generic proxy: added drain support to generic proxy to doing graceful closes on connections when possible (#24220)
  Reduce Route/VirtualHost memory utilization by avoiding RateLimitPolicy instances when not needed (#24243)
  Reduce VirtualHost memory utilization by avoiding CatchAllVirtualCluster when not needed (#24182)
  Fix mobile/tools/check_format.sh to re-apply #2698 (#24300)
  upstream: don't require `source_address` in `upstream_bind_config` (#24250)
  Quiche roll 20221201150327 (#24290)
  Cleanup threading/ownership semantics of PlatformBridgeCertValidator (#2713)
  Add unit tests of the PlatformBridgeCertValidator (#2704)
  ...

Signed-off-by: JP Simard <jp@jpsim.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants