[resource_quota] Remove periodic resource quota experiment (#31670)

pull/31001/head^2
Craig Tiller 2 years ago committed by GitHub
parent ffe8d0f31c
commit 0d4000dd48
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 9
      bazel/experiments.bzl
  2. 4
      src/core/lib/experiments/experiments.cc
  3. 17
      src/core/lib/experiments/experiments.h
  4. 9
      src/core/lib/experiments/experiments.yaml
  5. 4
      src/core/lib/resource_quota/memory_quota.cc
  6. 3
      src/core/lib/resource_quota/memory_quota.h

@ -60,15 +60,6 @@ EXPERIMENTS = {
"flow_control_test": [
"tcp_read_chunks",
],
"hpack_test": [
"periodic_resource_quota_reclamation",
],
"promise_test": [
"periodic_resource_quota_reclamation",
],
"resource_quota_test": [
"periodic_resource_quota_reclamation",
],
},
"opt": {
},

@ -37,8 +37,6 @@ const char* const description_flow_control_fixes =
"Various fixes for flow control, max frame size setting.";
const char* const description_memory_pressure_controller =
"New memory pressure controller";
const char* const description_periodic_resource_quota_reclamation =
"Periodically return memory to the resource quota";
const char* const description_unconstrained_max_quota_buffer_size =
"Discard the cap on the max free pool size for one memory allocator";
const char* const description_new_hpack_huffman_decoder =
@ -70,8 +68,6 @@ const ExperimentMetadata g_experiment_metadata[] = {
{"flow_control_fixes", description_flow_control_fixes, false},
{"memory_pressure_controller", description_memory_pressure_controller,
false},
{"periodic_resource_quota_reclamation",
description_periodic_resource_quota_reclamation, true},
{"unconstrained_max_quota_buffer_size",
description_unconstrained_max_quota_buffer_size, false},
{"new_hpack_huffman_decoder", description_new_hpack_huffman_decoder,

@ -33,20 +33,17 @@ inline bool IsFlowControlFixesEnabled() { return IsExperimentEnabled(4); }
inline bool IsMemoryPressureControllerEnabled() {
return IsExperimentEnabled(5);
}
inline bool IsPeriodicResourceQuotaReclamationEnabled() {
return IsExperimentEnabled(6);
}
inline bool IsUnconstrainedMaxQuotaBufferSizeEnabled() {
return IsExperimentEnabled(7);
return IsExperimentEnabled(6);
}
inline bool IsNewHpackHuffmanDecoderEnabled() { return IsExperimentEnabled(8); }
inline bool IsEventEngineClientEnabled() { return IsExperimentEnabled(9); }
inline bool IsMonitoringExperimentEnabled() { return IsExperimentEnabled(10); }
inline bool IsNewHpackHuffmanDecoderEnabled() { return IsExperimentEnabled(7); }
inline bool IsEventEngineClientEnabled() { return IsExperimentEnabled(8); }
inline bool IsMonitoringExperimentEnabled() { return IsExperimentEnabled(9); }
inline bool IsPromiseBasedClientCallEnabled() {
return IsExperimentEnabled(11);
return IsExperimentEnabled(10);
}
inline bool IsPosixEventEngineEnablePollingEnabled() {
return IsExperimentEnabled(12);
return IsExperimentEnabled(11);
}
struct ExperimentMetadata {
@ -55,7 +52,7 @@ struct ExperimentMetadata {
bool default_value;
};
constexpr const size_t kNumExperiments = 13;
constexpr const size_t kNumExperiments = 12;
extern const ExperimentMetadata g_experiment_metadata[kNumExperiments];
} // namespace grpc_core

@ -67,7 +67,7 @@
on the peer's memory pressure which is reflected in its max http2 frame
size.
default: false
expiry: 2022/11/01
expiry: 2023/01/01
owner: vigneshbabu@google.com
test_tags: ["flow_control_test"]
- name: flow_control_fixes
@ -84,13 +84,6 @@
expiry: 2023/01/01
owner: ctiller@google.com
test_tags: [resource_quota_test]
- name: periodic_resource_quota_reclamation
description:
Periodically return memory to the resource quota
default: true
expiry: 2023/04/01
owner: ctiller@google.com
test_tags: [resource_quota_test, promise_test, hpack_test]
- name: unconstrained_max_quota_buffer_size
description:
Discard the cap on the max free pool size for one memory allocator

@ -253,9 +253,7 @@ void GrpcMemoryAllocatorImpl::MaybeDonateBack() {
free > kMaxQuotaBufferSize / 2) {
ret = std::max(ret, free - kMaxQuotaBufferSize / 2);
}
if (IsPeriodicResourceQuotaReclamationEnabled()) {
ret = std::max(ret, free > 8192 ? free / 2 : free);
}
ret = std::max(ret, free > 8192 ? free / 2 : free);
const size_t new_free = free - ret;
if (free_bytes_.compare_exchange_weak(free, new_free,
std::memory_order_acq_rel,

@ -367,8 +367,7 @@ class GrpcMemoryAllocatorImpl final : public EventEngineMemoryAllocatorImpl {
size_t prev_free = free_bytes_.fetch_add(n, std::memory_order_release);
if ((!IsUnconstrainedMaxQuotaBufferSizeEnabled() &&
prev_free + n > kMaxQuotaBufferSize) ||
(IsPeriodicResourceQuotaReclamationEnabled() &&
donate_back_.Tick([](Duration) {}))) {
donate_back_.Tick([](Duration) {})) {
// Try to immediately return some free'ed memory back to the total quota.
MaybeDonateBack();
}

Loading…
Cancel
Save