aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/core/lib/iomgr/resource_quota.cc
diff options
context:
space:
mode:
Diffstat (limited to 'src/core/lib/iomgr/resource_quota.cc')
-rw-r--r--src/core/lib/iomgr/resource_quota.cc78
1 files changed, 0 insertions, 78 deletions
diff --git a/src/core/lib/iomgr/resource_quota.cc b/src/core/lib/iomgr/resource_quota.cc
index b6fc7579f7..539bc120ce 100644
--- a/src/core/lib/iomgr/resource_quota.cc
+++ b/src/core/lib/iomgr/resource_quota.cc
@@ -96,9 +96,6 @@ struct grpc_resource_user {
list, false otherwise */
bool added_to_free_pool;
- /* The number of threads currently allocated to this resource user */
- gpr_atm num_threads_allocated;
-
/* Reclaimers: index 0 is the benign reclaimer, 1 is the destructive reclaimer
*/
grpc_closure* reclaimers[2];
@@ -138,33 +135,12 @@ struct grpc_resource_quota {
gpr_atm last_size;
- /* Mutex to protect max_threads and num_threads_allocated */
- /* Note: We could have used gpr_atm for max_threads and num_threads_allocated
- * and avoid having this mutex; but in that case, each invocation of the
- * function grpc_resource_user_allocate_threads() would have had to do at
- * least two atomic loads (for max_threads and num_threads_allocated) followed
- * by a CAS (on num_threads_allocated).
- * Moreover, we expect grpc_resource_user_allocate_threads() to be often
- * called concurrently thereby increasing the chances of failing the CAS
- * operation. This additional complexity is not worth the tiny perf gain we
- * may (or may not) have by using atomics */
- gpr_mu thread_count_mu;
-
- /* Max number of threads allowed */
- int max_threads;
-
- /* Number of threads currently allocated via this resource_quota object */
- int num_threads_allocated;
-
/* Has rq_step been scheduled to occur? */
bool step_scheduled;
-
/* Are we currently reclaiming memory */
bool reclaiming;
-
/* Closure around rq_step */
grpc_closure rq_step_closure;
-
/* Closure around rq_reclamation_done */
grpc_closure rq_reclamation_done_closure;
@@ -548,11 +524,6 @@ static void ru_shutdown(void* ru, grpc_error* error) {
static void ru_destroy(void* ru, grpc_error* error) {
grpc_resource_user* resource_user = static_cast<grpc_resource_user*>(ru);
GPR_ASSERT(gpr_atm_no_barrier_load(&resource_user->refs) == 0);
- // Free all the remaining thread quota
- grpc_resource_user_free_threads(resource_user,
- static_cast<int>(gpr_atm_no_barrier_load(
- &resource_user->num_threads_allocated)));
-
for (int i = 0; i < GRPC_RULIST_COUNT; i++) {
rulist_remove(resource_user, static_cast<grpc_rulist>(i));
}
@@ -623,9 +594,6 @@ grpc_resource_quota* grpc_resource_quota_create(const char* name) {
resource_quota->free_pool = INT64_MAX;
resource_quota->size = INT64_MAX;
gpr_atm_no_barrier_store(&resource_quota->last_size, GPR_ATM_MAX);
- gpr_mu_init(&resource_quota->thread_count_mu);
- resource_quota->max_threads = INT_MAX;
- resource_quota->num_threads_allocated = 0;
resource_quota->step_scheduled = false;
resource_quota->reclaiming = false;
gpr_atm_no_barrier_store(&resource_quota->memory_usage_estimation, 0);
@@ -648,8 +616,6 @@ grpc_resource_quota* grpc_resource_quota_create(const char* name) {
void grpc_resource_quota_unref_internal(grpc_resource_quota* resource_quota) {
if (gpr_unref(&resource_quota->refs)) {
- // No outstanding thread quota
- GPR_ASSERT(resource_quota->num_threads_allocated == 0);
GRPC_COMBINER_UNREF(resource_quota->combiner, "resource_quota");
gpr_free(resource_quota->name);
gpr_free(resource_quota);
@@ -681,15 +647,6 @@ double grpc_resource_quota_get_memory_pressure(
}
/* Public API */
-void grpc_resource_quota_set_max_threads(grpc_resource_quota* resource_quota,
- int new_max_threads) {
- GPR_ASSERT(new_max_threads >= 0);
- gpr_mu_lock(&resource_quota->thread_count_mu);
- resource_quota->max_threads = new_max_threads;
- gpr_mu_unlock(&resource_quota->thread_count_mu);
-}
-
-/* Public API */
void grpc_resource_quota_resize(grpc_resource_quota* resource_quota,
size_t size) {
grpc_core::ExecCtx exec_ctx;
@@ -774,7 +731,6 @@ grpc_resource_user* grpc_resource_user_create(
grpc_closure_list_init(&resource_user->on_allocated);
resource_user->allocating = false;
resource_user->added_to_free_pool = false;
- gpr_atm_no_barrier_store(&resource_user->num_threads_allocated, 0);
resource_user->reclaimers[0] = nullptr;
resource_user->reclaimers[1] = nullptr;
resource_user->new_reclaimers[0] = nullptr;
@@ -829,40 +785,6 @@ void grpc_resource_user_shutdown(grpc_resource_user* resource_user) {
}
}
-bool grpc_resource_user_allocate_threads(grpc_resource_user* resource_user,
- int thread_count) {
- GPR_ASSERT(thread_count >= 0);
- bool is_success = false;
- gpr_mu_lock(&resource_user->resource_quota->thread_count_mu);
- grpc_resource_quota* rq = resource_user->resource_quota;
- if (rq->num_threads_allocated + thread_count <= rq->max_threads) {
- rq->num_threads_allocated += thread_count;
- gpr_atm_no_barrier_fetch_add(&resource_user->num_threads_allocated,
- thread_count);
- is_success = true;
- }
- gpr_mu_unlock(&resource_user->resource_quota->thread_count_mu);
- return is_success;
-}
-
-void grpc_resource_user_free_threads(grpc_resource_user* resource_user,
- int thread_count) {
- GPR_ASSERT(thread_count >= 0);
- gpr_mu_lock(&resource_user->resource_quota->thread_count_mu);
- grpc_resource_quota* rq = resource_user->resource_quota;
- rq->num_threads_allocated -= thread_count;
- int old_count = static_cast<int>(gpr_atm_no_barrier_fetch_add(
- &resource_user->num_threads_allocated, -thread_count));
- if (old_count < thread_count || rq->num_threads_allocated < 0) {
- gpr_log(GPR_ERROR,
- "Releasing more threads (%d) than currently allocated (rq threads: "
- "%d, ru threads: %d)",
- thread_count, rq->num_threads_allocated + thread_count, old_count);
- abort();
- }
- gpr_mu_unlock(&resource_user->resource_quota->thread_count_mu);
-}
-
void grpc_resource_user_alloc(grpc_resource_user* resource_user, size_t size,
grpc_closure* optional_on_done) {
gpr_mu_lock(&resource_user->mu);