提交 f61b55b3 编写于 作者: T Tyshawn 提交者: wangzelin.wzl

[BUG.FIX] Reduce lock conflicts

上级 55f77695
......@@ -130,15 +130,20 @@ int ObTenantMetaMemMgr::init()
{
int ret = OB_SUCCESS;
lib::ObMemAttr mem_attr(tenant_id_, "MetaAllocator", ObCtxIds::META_OBJ_CTX_ID);
const int64_t mem_limit = get_tenant_memory_limit(tenant_id_);
const int64_t min_bkt_cnt = DEFAULT_BUCKET_NUM;
const int64_t max_bkt_cnt = 10000000L;
const int64_t tablet_bucket_num = std::min(std::max((mem_limit / (1024 * 1024 * 1024)) * 50000, min_bkt_cnt), max_bkt_cnt);
const int64_t bucket_num = common::hash::cal_next_prime(tablet_bucket_num);
if (OB_UNLIKELY(is_inited_)) {
ret = OB_INIT_TWICE;
LOG_WARN("ObTenantMetaMemMgr has been initialized", K(ret));
} else if (OB_FAIL(bucket_lock_.init(DEFAULT_LOCK_BUCKET_COUNT, ObLatchIds::BLOCK_MANAGER_LOCK))) {
} else if (OB_FAIL(bucket_lock_.init(bucket_num, ObLatchIds::BLOCK_MANAGER_LOCK))) {
LOG_WARN("fail to init bucket lock", K(ret));
} else if (OB_FAIL(allocator_.init(lib::ObMallocAllocator::get_instance(),
OB_MALLOC_NORMAL_BLOCK_SIZE, mem_attr))) {
LOG_WARN("fail to init tenant fifo allocator", K(ret));
} else if (OB_FAIL(tablet_map_.init(DEFAULT_BUCKET_NUM, "TabletMap", TOTAL_LIMIT, HOLD_LIMIT,
} else if (OB_FAIL(tablet_map_.init(bucket_num, "TabletMap", TOTAL_LIMIT, HOLD_LIMIT,
common::OB_MALLOC_NORMAL_BLOCK_SIZE))) {
LOG_WARN("fail to initialize tablet map", K(ret));
} else if (OB_FAIL(last_min_minor_sstable_set_.create(DEFAULT_MINOR_SSTABLE_SET_COUNT))) {
......
......@@ -90,7 +90,6 @@ private:
static const int64_t MAX_TABLET_CNT_IN_OBJ_POOL = 50000;
static const int64_t MAX_SSTABLE_CNT_IN_OBJ_POOL = 5 * MAX_TABLET_CNT_IN_OBJ_POOL;
static const int64_t MAX_MEMTABLE_CNT_IN_OBJ_POOL = 2 * MAX_TABLET_CNT_IN_OBJ_POOL;
static const int64_t DEFAULT_LOCK_BUCKET_COUNT = 2048;
static const int64_t MAX_TX_DATA_MEMTABLE_CNT_IN_OBJ_POOL = MAX_MEMSTORE_CNT * OB_MINI_MODE_MAX_LS_NUM_PER_TENANT_PER_SERVER;
static const int64_t MAX_TX_CTX_MEMTABLE_CNT_IN_OBJ_POOL = OB_MINI_MODE_MAX_LS_NUM_PER_TENANT_PER_SERVER;
static const int64_t MAX_LOCK_MEMTABLE_CNT_IN_OBJ_POOL = OB_MINI_MODE_MAX_LS_NUM_PER_TENANT_PER_SERVER;
......
......@@ -66,7 +66,7 @@ TestMetaPointerMap::TestMetaPointerMap()
void TestMetaPointerMap::SetUp()
{
int ret = tablet_map_.init(10243L, "TabletMap", 15 * 1024L * 1024L * 1024L, 8 * 1024L * 1024L,
int ret = tablet_map_.init(100000000L, "TabletMap", 15 * 1024L * 1024L * 1024L, 8 * 1024L * 1024L,
common::OB_MALLOC_NORMAL_BLOCK_SIZE);
ASSERT_EQ(common::OB_SUCCESS, ret);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册