BUGFIX: change memstore_limit to tenant level
This commit is contained in:
@ -214,7 +214,6 @@ void ObMemstoreAllocator::init_throttle_config(int64_t &resource_limit,
|
||||
int64_t &max_duration)
|
||||
{
|
||||
// define some default value
|
||||
const int64_t MEMSTORE_LIMIT_PERCENTAGE = 50;
|
||||
const int64_t MEMSTORE_THROTTLE_TRIGGER_PERCENTAGE = 60;
|
||||
const int64_t MEMSTORE_THROTTLE_MAX_DURATION = 2LL * 60LL * 60LL * 1000LL * 1000LL; // 2 hours
|
||||
|
||||
@ -223,15 +222,14 @@ void ObMemstoreAllocator::init_throttle_config(int64_t &resource_limit,
|
||||
// Use tenant config to init throttle config
|
||||
omt::ObTenantConfigGuard tenant_config(TENANT_CONF(MTL_ID()));
|
||||
if (tenant_config.is_valid()) {
|
||||
resource_limit = total_memory * tenant_config->memstore_limit_percentage / 100LL;
|
||||
trigger_percentage = tenant_config->writing_throttling_trigger_percentage;
|
||||
max_duration = tenant_config->writing_throttling_maximum_duration;
|
||||
} else {
|
||||
COMMON_LOG_RET(WARN, OB_INVALID_CONFIG, "init throttle config with default value");
|
||||
resource_limit = total_memory * MEMSTORE_LIMIT_PERCENTAGE / 100;
|
||||
trigger_percentage = MEMSTORE_THROTTLE_TRIGGER_PERCENTAGE;
|
||||
max_duration = MEMSTORE_THROTTLE_MAX_DURATION;
|
||||
}
|
||||
resource_limit = total_memory * MTL(storage::ObTenantFreezer *)->get_memstore_limit_percentage() / 100;
|
||||
}
|
||||
|
||||
void ObMemstoreAllocator::adaptive_update_limit(const int64_t tenant_id,
|
||||
|
||||
@ -40,18 +40,18 @@ void ObSharedMemAllocMgr::update_throttle_config()
|
||||
omt::ObTenantConfigGuard tenant_config(TENANT_CONF(MTL_ID()));
|
||||
if (tenant_config.is_valid()) {
|
||||
int64_t share_mem_limit_percentage = tenant_config->_tx_share_memory_limit_percentage;
|
||||
int64_t memstore_limit_percentage = tenant_config->memstore_limit_percentage;
|
||||
int64_t tenant_memstore_limit_percentage = MTL(ObTenantFreezer*)->get_memstore_limit_percentage();
|
||||
int64_t tx_data_limit_percentage = tenant_config->_tx_data_memory_limit_percentage;
|
||||
int64_t mds_limit_percentage = tenant_config->_mds_memory_limit_percentage;
|
||||
int64_t trigger_percentage = tenant_config->writing_throttling_trigger_percentage;
|
||||
int64_t max_duration = tenant_config->writing_throttling_maximum_duration;
|
||||
if (0 == share_mem_limit_percentage) {
|
||||
// 0 means use (memstore_limit + 10)
|
||||
share_mem_limit_percentage = memstore_limit_percentage + 10;
|
||||
share_mem_limit_percentage = tenant_memstore_limit_percentage + 10;
|
||||
}
|
||||
|
||||
int64_t share_mem_limit = total_memory / 100 * share_mem_limit_percentage;
|
||||
int64_t memstore_limit = total_memory / 100 * memstore_limit_percentage;
|
||||
int64_t memstore_limit = total_memory / 100 * tenant_memstore_limit_percentage;
|
||||
int64_t tx_data_limit = total_memory / 100 * tx_data_limit_percentage;
|
||||
int64_t mds_limit = total_memory / 100 * mds_limit_percentage;
|
||||
|
||||
@ -78,7 +78,7 @@ void ObSharedMemAllocMgr::update_throttle_config()
|
||||
K(total_memory),
|
||||
K(share_mem_limit_percentage),
|
||||
K(share_mem_limit),
|
||||
K(memstore_limit_percentage),
|
||||
K(tenant_memstore_limit_percentage),
|
||||
K(memstore_limit),
|
||||
K(tx_data_limit_percentage),
|
||||
K(tx_data_limit),
|
||||
|
||||
@ -139,12 +139,8 @@ int ObTenantMutilAllocatorMgr::get_tenant_memstore_limit_percent_(const uint64_t
|
||||
ret = OB_INVALID_ARGUMENT;
|
||||
OB_LOG(WARN, "invalid arguments", K(ret), K(tenant_id));
|
||||
} else {
|
||||
omt::ObTenantConfigGuard tenant_config(TENANT_CONF(tenant_id));
|
||||
if (!tenant_config.is_valid()) {
|
||||
ret = OB_ERR_UNEXPECTED;
|
||||
OB_LOG(ERROR, "tenant config invalid", K(ret), K(tenant_id));
|
||||
} else {
|
||||
limit_percent = tenant_config->memstore_limit_percentage;
|
||||
MTL_SWITCH(tenant_id) {
|
||||
limit_percent = MTL(ObTenantFreezer*)->get_memstore_limit_percentage();
|
||||
}
|
||||
}
|
||||
return ret;
|
||||
|
||||
Reference in New Issue
Block a user