提交 778c43f1 编写于 作者: O obdev 提交者: ob-robot

[CP] fix bug of mem chunk size

上级 435b0502
......@@ -12,10 +12,11 @@
#define USING_LOG_PREFIX SERVER
#include "share/rc/ob_tenant_base.h"
#include "observer/table_load/ob_table_load_assigned_memory_manager.h"
#include "observer/omt/ob_multi_tenant.h"
#include "share/rc/ob_tenant_base.h"
#include "observer/omt/ob_tenant.h"
#include "storage/direct_load/ob_direct_load_mem_define.h"
namespace oceanbase
{
......@@ -36,7 +37,7 @@ using namespace omt;
ObTableLoadAssignedMemoryManager::ObTableLoadAssignedMemoryManager()
: avail_sort_memory_(0),
avail_memory_(0),
sort_task_count_(0),
chunk_count_(0),
is_inited_(false)
{
}
......@@ -66,9 +67,9 @@ int ObTableLoadAssignedMemoryManager::assign_memory(bool is_sort, int64_t assign
LOG_WARN("ObTableLoadAssignedMemoryManager not init", KR(ret), KP(this));
} else {
ObMutexGuard guard(mutex_);
sort_task_count_ += (is_sort ? 1 : 0);
chunk_count_ += (is_sort ? assign_memory / ObDirectLoadExternalMultiPartitionRowChunk::MIN_MEMORY_LIMIT : 0);
avail_sort_memory_ -= (is_sort ? 0 : assign_memory);
LOG_INFO("ObTableLoadAssignedMemoryManager::assign_memory", K(MTL_ID()), K(is_sort), K(assign_memory), K(sort_task_count_), K(avail_sort_memory_));
LOG_INFO("ObTableLoadAssignedMemoryManager::assign_memory", K(MTL_ID()), K(is_sort), K(chunk_count_), K(assign_memory), K(avail_sort_memory_));
}
return ret;
......@@ -82,9 +83,9 @@ int ObTableLoadAssignedMemoryManager::recycle_memory(bool is_sort, int64_t assig
LOG_WARN("ObTableLoadAssignedMemoryManager not init", KR(ret), KP(this));
} else {
ObMutexGuard guard(mutex_);
sort_task_count_ -= (is_sort ? 1 : 0);
chunk_count_ -= (is_sort ? assign_memory / ObDirectLoadExternalMultiPartitionRowChunk::MIN_MEMORY_LIMIT : 0);
avail_sort_memory_ += (is_sort ? 0 : assign_memory);
LOG_INFO("ObTableLoadAssignedMemoryManager::recycle_memory", K(MTL_ID()), K(is_sort), K(assign_memory), K(sort_task_count_), K(avail_sort_memory_));
LOG_INFO("ObTableLoadAssignedMemoryManager::recycle_memory", K(MTL_ID()), K(is_sort), K(chunk_count_), K(assign_memory), K(avail_sort_memory_));
}
return ret;
......@@ -123,11 +124,11 @@ int ObTableLoadAssignedMemoryManager::get_sort_memory(int64_t &sort_memory)
LOG_WARN("ObTableLoadAssignedMemoryManager not init", KR(ret), KP(this));
} else {
ObMutexGuard guard(mutex_);
if (OB_UNLIKELY(sort_task_count_ == 0)) {
if (OB_UNLIKELY(chunk_count_ == 0)) {
ret = OB_ERR_UNEXPECTED;
LOG_WARN("unexpected sort_task_count_ equal to zero", KR(ret));
LOG_WARN("unexpected chunk_count_ equal to zero", KR(ret));
} else {
sort_memory = avail_sort_memory_ / sort_task_count_;
sort_memory = avail_sort_memory_ / chunk_count_;
}
}
......
......@@ -39,7 +39,7 @@ public:
private:
int64_t avail_sort_memory_;
int64_t avail_memory_;
int64_t sort_task_count_;
int64_t chunk_count_;
mutable lib::ObMutex mutex_;
bool is_inited_;
};
......
......@@ -109,8 +109,6 @@ int ObDirectLoadMemLoader::work()
sort_memory = mem_ctx_->table_data_desc_.mem_chunk_size_;
} else if (OB_FAIL(ObTableLoadService::get_sort_memory(sort_memory))) {
LOG_WARN("fail to get sort memory", KR(ret));
} else {
sort_memory /= mem_ctx_->table_data_desc_.max_mem_chunk_count_;
}
if (OB_SUCC(ret)) {
if (OB_FAIL(chunk->init(MTL_ID(), sort_memory))) {
......
......@@ -207,8 +207,6 @@ int ObDirectLoadMultipleHeapTableSorter::work()
sort_memory = mem_ctx_->table_data_desc_.heap_table_mem_chunk_size_;
} else if (OB_FAIL(ObTableLoadService::get_sort_memory(sort_memory))) {
LOG_WARN("fail to get sort memory", KR(ret));
} else {
sort_memory /= mem_ctx_->table_data_desc_.session_count_;
}
if (OB_SUCC(ret)) {
chunk = OB_NEW(ChunkType, ObMemAttr(MTL_ID(), "TLD_MemChunkVal"), sort_memory);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册