From 244e39b86ec3b7c7d89fd2865b9d8268b08c71e4 Mon Sep 17 00:00:00 2001 From: Craig Tiller <ctiller@google.com> Date: Mon, 5 Dec 2022 18:38:40 -0800 Subject: [PATCH] [experiments] Enable memory_pressure_controller for debug builds (#31811) * [experiments] Enable memory_pressure_controller by default * fix found crash * fixy --- bazel/experiments.bzl | 4 +++- src/core/lib/experiments/experiments.cc | 2 +- src/core/lib/experiments/experiments.yaml | 2 +- src/core/lib/resource_quota/memory_quota.h | 7 ++++--- 4 files changed, 9 insertions(+), 6 deletions(-) diff --git a/bazel/experiments.bzl b/bazel/experiments.bzl index b2cb2695f15..c55ebeda0df 100644 --- a/bazel/experiments.bzl +++ b/bazel/experiments.bzl @@ -24,6 +24,9 @@ EXPERIMENTS = { "hpack_test": [ "new_hpack_huffman_decoder", ], + "resource_quota_test": [ + "memory_pressure_controller", + ], }, "off": { "core_end2end_test": [ @@ -45,7 +48,6 @@ EXPERIMENTS = { "promise_based_client_call", ], "resource_quota_test": [ - "memory_pressure_controller", "unconstrained_max_quota_buffer_size", ], }, diff --git a/src/core/lib/experiments/experiments.cc b/src/core/lib/experiments/experiments.cc index 86812251435..2249e83b57e 100644 --- a/src/core/lib/experiments/experiments.cc +++ b/src/core/lib/experiments/experiments.cc @@ -67,7 +67,7 @@ const ExperimentMetadata g_experiment_metadata[] = { {"peer_state_based_framing", description_peer_state_based_framing, false}, {"flow_control_fixes", description_flow_control_fixes, true}, {"memory_pressure_controller", description_memory_pressure_controller, - false}, + kDefaultForDebugOnly}, {"unconstrained_max_quota_buffer_size", description_unconstrained_max_quota_buffer_size, false}, {"new_hpack_huffman_decoder", description_new_hpack_huffman_decoder, diff --git a/src/core/lib/experiments/experiments.yaml b/src/core/lib/experiments/experiments.yaml index c66134cc214..6326426c939 100644 --- a/src/core/lib/experiments/experiments.yaml +++ b/src/core/lib/experiments/experiments.yaml @@ -80,7 +80,7 @@ - name: memory_pressure_controller description: New memory pressure controller - default: false + default: debug expiry: 2023/01/01 owner: ctiller@google.com test_tags: [resource_quota_test] diff --git a/src/core/lib/resource_quota/memory_quota.h b/src/core/lib/resource_quota/memory_quota.h index c0da890ed58..38c4971294b 100644 --- a/src/core/lib/resource_quota/memory_quota.h +++ b/src/core/lib/resource_quota/memory_quota.h @@ -280,12 +280,12 @@ class BasicMemoryQuota final // Data about current memory pressure. struct PressureInfo { // The current instantaneously measured memory pressure. - double instantaneous_pressure; + double instantaneous_pressure = 0.0; // A control value that can be used to scale buffer sizes up or down to // adjust memory pressure to our target set point. - double pressure_control_value; + double pressure_control_value = 0.0; // Maximum recommended individual allocation size. - size_t max_recommended_allocation_size; + size_t max_recommended_allocation_size = 0; }; explicit BasicMemoryQuota(std::string name) : name_(std::move(name)) {} @@ -460,6 +460,7 @@ class MemoryOwner final : public MemoryAllocator { // Instantaneous memory pressure in the underlying quota. BasicMemoryQuota::PressureInfo GetPressureInfo() const { + if (!is_valid()) return BasicMemoryQuota::PressureInfo{}; return impl()->GetPressureInfo(); }