add some fix for speed_limit

This commit is contained in:
cr0
2021-12-24 10:54:59 +08:00
committed by LINxiansheng
parent 870a799aaa
commit 888a02778c
8 changed files with 76 additions and 13 deletions

View File

@ -74,6 +74,16 @@ int64_t get_tenant_memory_hold(uint64_t tenant_id)
return bytes;
}
int64_t get_tenant_memory_remain(uint64_t tenant_id)
{
int64_t bytes = 0;
ObMallocAllocator *allocator = ObMallocAllocator::get_instance();
if (!OB_ISNULL(allocator)) {
bytes = allocator->get_tenant_remain(tenant_id);
}
return bytes;
}
int64_t get_tenant_memory_hold(const uint64_t tenant_id, const uint64_t ctx_id)
{
int64_t bytes = 0;

View File

@ -32,6 +32,7 @@ void set_tenant_memory_limit(uint64_t tenant_id, int64_t bytes);
int64_t get_tenant_memory_limit(uint64_t tenant_id);
int64_t get_tenant_memory_hold(uint64_t tenant_id);
int64_t get_tenant_memory_hold(const uint64_t tenant_id, const uint64_t ctx_id);
int64_t get_tenant_memory_remain(uint64_t tenant_id);
void get_tenant_mod_memory(uint64_t tenant_id, int mod_id, common::ObModItem& ObModItem);
void ob_set_reserved_memory(const int64_t bytes);
void ob_set_urgent_memory(const int64_t bytes);

View File

@ -420,6 +420,16 @@ int64_t ObMallocAllocator::get_tenant_hold(uint64_t tenant_id)
return hold;
}
int64_t ObMallocAllocator::get_tenant_remain(uint64_t tenant_id)
{
int64_t remain = 0;
with_resource_handle_invoke(tenant_id, [&remain](ObTenantMemoryMgr *mgr) {
remain = mgr->get_limit() - mgr->get_sum_hold() + mgr->get_cache_hold();
return OB_SUCCESS;
});
return remain;
}
int64_t ObMallocAllocator::get_tenant_rpc_hold(uint64_t tenant_id)
{
int64_t rpc_hold = 0;

View File

@ -57,6 +57,7 @@ public:
static int set_tenant_limit(uint64_t tenant_id, int64_t bytes);
static int64_t get_tenant_limit(uint64_t tenant_id);
static int64_t get_tenant_hold(uint64_t tenant_id);
static int64_t get_tenant_remain(uint64_t tenant_id);
static int64_t get_tenant_rpc_hold(uint64_t tenant_id);
int64_t get_tenant_ctx_hold(const uint64_t tenant_id, const uint64_t ctx_id) const;
void get_tenant_mod_usage(uint64_t tenant_id, int mod_id, common::ObModItem& item) const;