[FEAT MERGE] system resource optimization
Co-authored-by: tushicheng <18829573815@163.com> Co-authored-by: HaHaJeff <jeffzhouhhh@gmail.com> Co-authored-by: dimstars <liangjinrongcm@gmail.com>
This commit is contained in:
@ -210,105 +210,6 @@ TEST_F(ObserverExpandShink, resize_tenant_log_disk)
|
||||
// EXPECT_NE(0, GCTX.log_block_mgr_->min_log_disk_size_for_all_tenants_);
|
||||
// SERVER_LOG(INFO, "create_tenant_after_restart trace", KPC(GCTX.log_block_mgr_));
|
||||
//}
|
||||
|
||||
TEST_F(ObserverExpandShink, test_hidden_sys_tenant)
|
||||
{
|
||||
omt::ObMultiTenant *omt = GCTX.omt_;
|
||||
bool remove_tenant_succ = false;
|
||||
int64_t log_disk_size_in_use = GCTX.log_block_mgr_->min_log_disk_size_for_all_tenants_;
|
||||
|
||||
share::TenantUnits units;
|
||||
EXPECT_EQ(OB_SUCCESS, omt->get_tenant_units(units, false));
|
||||
EXPECT_EQ(false, units.empty());
|
||||
int64_t origin_sys_log_disk_size = 0;
|
||||
int64_t hidden_sys_log_disk_size = 0;
|
||||
for (int i = 0; i < units.count(); i++) {
|
||||
if (OB_SYS_TENANT_ID == units[i].tenant_id_) {
|
||||
origin_sys_log_disk_size = units[i].config_.log_disk_size();
|
||||
EXPECT_EQ(OB_SUCCESS, omt->convert_real_to_hidden_sys_tenant());
|
||||
}
|
||||
}
|
||||
|
||||
EXPECT_EQ(OB_SUCCESS, omt->get_tenant_units(units, false));
|
||||
EXPECT_EQ(false, units.empty());
|
||||
ObUnitInfoGetter::ObTenantConfig sys_unit_config;
|
||||
for (int i = 0; i < units.count(); i++) {
|
||||
if (OB_SYS_TENANT_ID == units[i].tenant_id_) {
|
||||
hidden_sys_log_disk_size = units[i].config_.log_disk_size();
|
||||
sys_unit_config = units[i];
|
||||
sys_unit_config.config_.resource_.log_disk_size_ = origin_sys_log_disk_size + 512*1024*1024;
|
||||
}
|
||||
}
|
||||
CLOG_LOG(INFO, "runlin trace convert_hidden_to_real_sys_tenant", K(log_disk_size_in_use), KPC(GCTX.log_block_mgr_), K(origin_sys_log_disk_size), K(hidden_sys_log_disk_size));
|
||||
|
||||
// 类型转换后,sys租户的unit规格可能会发生变化(隐藏sys租户的规格会被重新生成,具体逻辑参见gen_sys_tenant_unit_config)
|
||||
EXPECT_EQ(log_disk_size_in_use-origin_sys_log_disk_size+hidden_sys_log_disk_size,
|
||||
GCTX.log_block_mgr_->min_log_disk_size_for_all_tenants_);
|
||||
log_disk_size_in_use = GCTX.log_block_mgr_->min_log_disk_size_for_all_tenants_;
|
||||
EXPECT_EQ(OB_SUCCESS, omt->convert_hidden_to_real_sys_tenant(sys_unit_config));
|
||||
EXPECT_EQ(log_disk_size_in_use-hidden_sys_log_disk_size+sys_unit_config.config_.log_disk_size(),
|
||||
GCTX.log_block_mgr_->min_log_disk_size_for_all_tenants_);
|
||||
log_disk_size_in_use = GCTX.log_block_mgr_->min_log_disk_size_for_all_tenants_;
|
||||
CLOG_LOG(INFO, "runlin trace after convert_hidden_to_real_sys_tenant", K(log_disk_size_in_use), KPC(GCTX.log_block_mgr_),
|
||||
K(origin_sys_log_disk_size));
|
||||
int64_t new_sys_log_disk_size = sys_unit_config.config_.log_disk_size()+512*1024*1024;
|
||||
omt::ObTenant *tenant = nullptr;
|
||||
EXPECT_EQ(OB_SUCCESS, omt->get_tenant(OB_SYS_TENANT_ID, tenant));
|
||||
share::ObUnitInfoGetter::ObTenantConfig unit_config = tenant->get_unit();
|
||||
unit_config.config_.resource_.log_disk_size_ = new_sys_log_disk_size;
|
||||
// 扩容直接成功
|
||||
EXPECT_EQ(OB_SUCCESS, omt->update_tenant_unit(unit_config));
|
||||
unit_config = tenant->get_unit();
|
||||
EXPECT_EQ(unit_config.config_.log_disk_size(), new_sys_log_disk_size);
|
||||
EXPECT_EQ(log_disk_size_in_use-sys_unit_config.config_.log_disk_size()+new_sys_log_disk_size,
|
||||
GCTX.log_block_mgr_->min_log_disk_size_for_all_tenants_);
|
||||
CLOG_LOG(INFO, "runlin trace after convert_real_to_hidden_sys_tenant", K(log_disk_size_in_use), KPC(GCTX.log_block_mgr_),
|
||||
K(origin_sys_log_disk_size));
|
||||
}
|
||||
|
||||
|
||||
// don't has any case after this.
|
||||
TEST_F(ObserverExpandShink, paralle_set)
|
||||
{
|
||||
omt::ObTenantNodeBalancer::get_instance().refresh_interval_ = 1000 * 1000 * 1000;
|
||||
sleep(3);
|
||||
LOG_INFO("start to test parallel_set");
|
||||
share::ObTenantSwitchGuard tguard;
|
||||
ASSERT_EQ(OB_SUCCESS, tguard.switch_to(1));
|
||||
ObLogService *log_service = MTL(ObLogService*);
|
||||
palf::PalfOptions opts;
|
||||
ASSERT_NE(nullptr, log_service);
|
||||
EXPECT_EQ(OB_SUCCESS, log_service->get_palf_options(opts));
|
||||
EXPECT_EQ(OB_INVALID_ARGUMENT, log_service->update_log_disk_usage_limit_size(1000));
|
||||
opts.disk_options_.log_disk_utilization_limit_threshold_ = 10;
|
||||
opts.disk_options_.log_disk_utilization_threshold_ = 11;
|
||||
EXPECT_EQ(OB_INVALID_ARGUMENT, log_service->palf_env_->update_options(opts));
|
||||
{
|
||||
const int64_t new_log_disk_size = opts.disk_options_.log_disk_usage_limit_size_*50/100;
|
||||
EXPECT_EQ(OB_SUCCESS, log_service->update_log_disk_usage_limit_size(new_log_disk_size));
|
||||
sleep(1);
|
||||
EXPECT_EQ(log_service->palf_env_->palf_env_impl_.disk_options_wrapper_.disk_opts_for_stopping_writing_.log_disk_usage_limit_size_,
|
||||
new_log_disk_size);
|
||||
}
|
||||
{
|
||||
const int64_t count1 = 10000;
|
||||
const int64_t count2 = 9000;
|
||||
std::atomic<int> new_log_disk_size(1*1024*1024*1024);
|
||||
auto update_size = [&log_service, &new_log_disk_size](int64_t count)
|
||||
{
|
||||
for (int64_t i = 0; i < count; i++) {
|
||||
log_service->update_log_disk_usage_limit_size(++new_log_disk_size);
|
||||
}
|
||||
};
|
||||
std::thread t1(update_size, count1);
|
||||
std::thread t2(update_size, count2);
|
||||
t1.join();
|
||||
t2.join();
|
||||
EXPECT_EQ(OB_SUCCESS, log_service->get_palf_options(opts));
|
||||
EXPECT_EQ(opts.disk_options_.log_disk_usage_limit_size_, 1*1024*1024*1024+count1+count2);
|
||||
}
|
||||
}
|
||||
|
||||
} // end unittest
|
||||
} // end oceanbase
|
||||
|
||||
|
||||
Reference in New Issue
Block a user