GRPC Core  9.0.0
Data Structures | Namespaces | Macros | Enumerations | Functions | Variables
resource_quota.cc File Reference
#include <grpc/support/port_platform.h>
#include "src/core/lib/iomgr/resource_quota.h"
#include <inttypes.h>
#include <limits.h>
#include <stdint.h>
#include <string.h>
#include <grpc/slice_buffer.h>
#include <grpc/support/alloc.h>
#include <grpc/support/log.h>
#include <grpc/support/string_util.h>
#include "src/core/lib/gpr/useful.h"
#include "src/core/lib/iomgr/combiner.h"
#include "src/core/lib/slice/slice_internal.h"

Data Structures

struct  grpc_resource_user_link
 
struct  grpc_resource_user
 
struct  grpc_resource_quota
 
class  grpc_core::RuSliceRefcount
 
struct  rq_resize_args
 

Namespaces

 grpc_core
 Round Robin Policy.
 

Macros

#define MEMORY_USAGE_ESTIMATION_MAX   65536
 

Enumerations

enum  grpc_rulist {
  GRPC_RULIST_AWAITING_ALLOCATION, GRPC_RULIST_NON_EMPTY_FREE_POOL, GRPC_RULIST_RECLAIMER_BENIGN, GRPC_RULIST_RECLAIMER_DESTRUCTIVE,
  GRPC_RULIST_COUNT
}
 

Functions

grpc_resource_quotagrpc_resource_quota_create (const char *name)
 Create a buffer pool. More...
 
void grpc_resource_quota_unref_internal (grpc_resource_quota *resource_quota)
 
void grpc_resource_quota_unref (grpc_resource_quota *resource_quota)
 Drop a reference to a buffer pool. More...
 
grpc_resource_quotagrpc_resource_quota_ref_internal (grpc_resource_quota *resource_quota)
 
void grpc_resource_quota_ref (grpc_resource_quota *resource_quota)
 Add a reference to a buffer pool. More...
 
double grpc_resource_quota_get_memory_pressure (grpc_resource_quota *resource_quota)
 
void grpc_resource_quota_set_max_threads (grpc_resource_quota *resource_quota, int new_max_threads)
 Update the size of the maximum number of threads allowed. More...
 
void grpc_resource_quota_resize (grpc_resource_quota *resource_quota, size_t size)
 Update the size of a buffer pool. More...
 
size_t grpc_resource_quota_peek_size (grpc_resource_quota *resource_quota)
 
grpc_resource_quotagrpc_resource_quota_from_channel_args (const grpc_channel_args *channel_args, bool create)
 
const grpc_arg_pointer_vtablegrpc_resource_quota_arg_vtable (void)
 Fetch a vtable for a grpc_channel_arg that points to a grpc_resource_quota. More...
 
grpc_resource_usergrpc_resource_user_create (grpc_resource_quota *resource_quota, const char *name)
 
grpc_resource_quotagrpc_resource_user_quota (grpc_resource_user *resource_user)
 
void grpc_resource_user_ref (grpc_resource_user *resource_user)
 
void grpc_resource_user_unref (grpc_resource_user *resource_user)
 
void grpc_resource_user_shutdown (grpc_resource_user *resource_user)
 
bool grpc_resource_user_allocate_threads (grpc_resource_user *resource_user, int thread_count)
 
void grpc_resource_user_free_threads (grpc_resource_user *resource_user, int thread_count)
 
bool grpc_resource_user_safe_alloc (grpc_resource_user *resource_user, size_t size)
 
bool grpc_resource_user_alloc (grpc_resource_user *resource_user, size_t size, grpc_closure *optional_on_done)
 
void grpc_resource_user_free (grpc_resource_user *resource_user, size_t size)
 
void grpc_resource_user_post_reclaimer (grpc_resource_user *resource_user, bool destructive, grpc_closure *closure)
 
void grpc_resource_user_finish_reclamation (grpc_resource_user *resource_user)
 
void grpc_resource_user_slice_allocator_init (grpc_resource_user_slice_allocator *slice_allocator, grpc_resource_user *resource_user, grpc_iomgr_cb_func cb, void *p)
 
bool grpc_resource_user_alloc_slices (grpc_resource_user_slice_allocator *slice_allocator, size_t length, size_t count, grpc_slice_buffer *dest)
 

Variables

grpc_core::TraceFlag grpc_resource_quota_trace (false, "resource_quota")
 

Macro Definition Documentation

◆ MEMORY_USAGE_ESTIMATION_MAX

#define MEMORY_USAGE_ESTIMATION_MAX   65536

Enumeration Type Documentation

◆ grpc_rulist

Enumerator
GRPC_RULIST_AWAITING_ALLOCATION 
GRPC_RULIST_NON_EMPTY_FREE_POOL 
GRPC_RULIST_RECLAIMER_BENIGN 
GRPC_RULIST_RECLAIMER_DESTRUCTIVE 
GRPC_RULIST_COUNT 

Function Documentation

◆ grpc_resource_quota_arg_vtable()

const grpc_arg_pointer_vtable* grpc_resource_quota_arg_vtable ( void  )

Fetch a vtable for a grpc_channel_arg that points to a grpc_resource_quota.

◆ grpc_resource_quota_create()

grpc_resource_quota* grpc_resource_quota_create ( const char *  name)

Create a buffer pool.

◆ grpc_resource_quota_from_channel_args()

grpc_resource_quota* grpc_resource_quota_from_channel_args ( const grpc_channel_args channel_args,
bool  create 
)

◆ grpc_resource_quota_get_memory_pressure()

double grpc_resource_quota_get_memory_pressure ( grpc_resource_quota resource_quota)

◆ grpc_resource_quota_peek_size()

size_t grpc_resource_quota_peek_size ( grpc_resource_quota resource_quota)

◆ grpc_resource_quota_ref()

void grpc_resource_quota_ref ( grpc_resource_quota resource_quota)

Add a reference to a buffer pool.

◆ grpc_resource_quota_ref_internal()

grpc_resource_quota* grpc_resource_quota_ref_internal ( grpc_resource_quota resource_quota)

◆ grpc_resource_quota_resize()

void grpc_resource_quota_resize ( grpc_resource_quota resource_quota,
size_t  size 
)

Update the size of a buffer pool.

◆ grpc_resource_quota_set_max_threads()

void grpc_resource_quota_set_max_threads ( grpc_resource_quota resource_quota,
int  new_max_threads 
)

Update the size of the maximum number of threads allowed.

◆ grpc_resource_quota_unref()

void grpc_resource_quota_unref ( grpc_resource_quota resource_quota)

Drop a reference to a buffer pool.

◆ grpc_resource_quota_unref_internal()

void grpc_resource_quota_unref_internal ( grpc_resource_quota resource_quota)

◆ grpc_resource_user_alloc()

bool grpc_resource_user_alloc ( grpc_resource_user resource_user,
size_t  size,
grpc_closure optional_on_done 
)

◆ grpc_resource_user_alloc_slices()

bool grpc_resource_user_alloc_slices ( grpc_resource_user_slice_allocator slice_allocator,
size_t  length,
size_t  count,
grpc_slice_buffer dest 
)

◆ grpc_resource_user_allocate_threads()

bool grpc_resource_user_allocate_threads ( grpc_resource_user resource_user,
int  thread_count 
)

◆ grpc_resource_user_create()

grpc_resource_user* grpc_resource_user_create ( grpc_resource_quota resource_quota,
const char *  name 
)

◆ grpc_resource_user_finish_reclamation()

void grpc_resource_user_finish_reclamation ( grpc_resource_user resource_user)

◆ grpc_resource_user_free()

void grpc_resource_user_free ( grpc_resource_user resource_user,
size_t  size 
)

◆ grpc_resource_user_free_threads()

void grpc_resource_user_free_threads ( grpc_resource_user resource_user,
int  thread_count 
)

◆ grpc_resource_user_post_reclaimer()

void grpc_resource_user_post_reclaimer ( grpc_resource_user resource_user,
bool  destructive,
grpc_closure closure 
)

◆ grpc_resource_user_quota()

grpc_resource_quota* grpc_resource_user_quota ( grpc_resource_user resource_user)

◆ grpc_resource_user_ref()

void grpc_resource_user_ref ( grpc_resource_user resource_user)

◆ grpc_resource_user_safe_alloc()

bool grpc_resource_user_safe_alloc ( grpc_resource_user resource_user,
size_t  size 
)

◆ grpc_resource_user_shutdown()

void grpc_resource_user_shutdown ( grpc_resource_user resource_user)

◆ grpc_resource_user_slice_allocator_init()

void grpc_resource_user_slice_allocator_init ( grpc_resource_user_slice_allocator slice_allocator,
grpc_resource_user resource_user,
grpc_iomgr_cb_func  cb,
void *  p 
)

◆ grpc_resource_user_unref()

void grpc_resource_user_unref ( grpc_resource_user resource_user)

Variable Documentation

◆ grpc_resource_quota_trace

grpc_core::TraceFlag grpc_resource_quota_trace(false, "resource_quota")