mirror of
https://github.com/MariaDB/server.git
synced 2025-02-01 11:31:51 +01:00
ndb dd
add reporting of shared pool
This commit is contained in:
parent
47026d8e48
commit
ba875278ea
5 changed files with 52 additions and 5 deletions
|
@ -1099,6 +1099,37 @@ Cmvmi::execDUMP_STATE_ORD(Signal* signal)
|
|||
g_sectionSegmentPool.getSize(),
|
||||
g_sectionSegmentPool.getNoOfFree());
|
||||
}
|
||||
|
||||
if (dumpState->args[0] == 1000)
|
||||
{
|
||||
Uint32 len = signal->getLength();
|
||||
if (signal->getLength() == 1)
|
||||
{
|
||||
signal->theData[1] = 0;
|
||||
signal->theData[2] = ~0;
|
||||
sendSignal(reference(), GSN_DUMP_STATE_ORD, signal, 3, JBB);
|
||||
return;
|
||||
}
|
||||
Uint32 id = signal->theData[1];
|
||||
Resource_limit rl;
|
||||
if (!m_ctx.m_mm.get_resource_limit(id, rl))
|
||||
len = 2;
|
||||
else
|
||||
{
|
||||
if (rl.m_min || rl.m_curr || rl.m_max)
|
||||
infoEvent("Resource %d min: %d max: %d curr: %d",
|
||||
id, rl.m_min, rl.m_max, rl.m_curr);
|
||||
}
|
||||
|
||||
if (len == 3)
|
||||
{
|
||||
signal->theData[0] = 1000;
|
||||
signal->theData[1] = id+1;
|
||||
signal->theData[2] = ~0;
|
||||
sendSignal(reference(), GSN_DUMP_STATE_ORD, signal, 3, JBB);
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
if (dumpState->args[0] == DumpStateOrd::CmvmiSetRestartOnErrorInsert){
|
||||
if(signal->getLength() == 1)
|
||||
|
|
|
@ -325,13 +325,14 @@ Ndbfs::readWriteRequest(int action, Signal * signal)
|
|||
request->action = (Request::Action) action;
|
||||
request->theTrace = signal->getTrace();
|
||||
|
||||
Uint32 format = fsRWReq->getFormatFlag(fsRWReq->operationFlag);
|
||||
|
||||
if (fsRWReq->numberOfPages == 0) { //Zero pages not allowed
|
||||
jam();
|
||||
errorCode = FsRef::fsErrInvalidParameters;
|
||||
goto error;
|
||||
}
|
||||
|
||||
Uint32 format = fsRWReq->getFormatFlag(fsRWReq->operationFlag);
|
||||
if(format != FsReadWriteReq::fsFormatGlobalPage &&
|
||||
format != FsReadWriteReq::fsFormatSharedPage)
|
||||
{
|
||||
|
|
|
@ -38,7 +38,6 @@ WOPool::init(const Record_info& ri, const Pool_context& pc)
|
|||
bool
|
||||
WOPool::seize_new_page(Ptr<void>& ptr)
|
||||
{
|
||||
ndbout_c("WOPool::seize_new_page(%x)", m_record_info.m_type_id);
|
||||
WOPage* page;
|
||||
Uint32 page_no = RNIL;
|
||||
if ((page = (WOPage*)m_ctx.alloc_page(m_record_info.m_type_id, &page_no)))
|
||||
|
@ -63,7 +62,6 @@ WOPool::seize_new_page(Ptr<void>& ptr)
|
|||
void
|
||||
WOPool::release_not_current(Ptr<void> ptr)
|
||||
{
|
||||
ndbout_c("WOPool::release_not_current(%x)", m_record_info.m_type_id);
|
||||
WOPage* page = (WOPage*)(UintPtr(ptr.p) & ~(GLOBAL_PAGE_SIZE - 1));
|
||||
Uint32 cnt = page->m_ref_count;
|
||||
Uint32 type = page->m_type_id;
|
||||
|
|
|
@ -166,6 +166,17 @@ Ndbd_mem_manager::set_resource_limit(const Resource_limit& rl)
|
|||
m_resource_limit[0].m_min = current_reserved + reserve;
|
||||
}
|
||||
|
||||
bool
|
||||
Ndbd_mem_manager::get_resource_limit(Uint32 id, Resource_limit& rl) const
|
||||
{
|
||||
if (id < XX_RL_COUNT)
|
||||
{
|
||||
rl = m_resource_limit[id];
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
bool
|
||||
Ndbd_mem_manager::init(bool alloc_less_memory)
|
||||
{
|
||||
|
@ -173,6 +184,7 @@ Ndbd_mem_manager::init(bool alloc_less_memory)
|
|||
|
||||
Uint32 pages = 0;
|
||||
Uint32 max_page = 0;
|
||||
Uint32 reserved = m_resource_limit[0].m_min;
|
||||
if (m_resource_limit[0].m_max)
|
||||
{
|
||||
pages = m_resource_limit[0].m_max;
|
||||
|
@ -267,7 +279,10 @@ Ndbd_mem_manager::init(bool alloc_less_memory)
|
|||
if (last > max_page)
|
||||
max_page = last;
|
||||
}
|
||||
|
||||
m_resource_limit[0].m_resource_id = max_page;
|
||||
m_resource_limit[0].m_min = reserved;
|
||||
m_resource_limit[0].m_max = 0;
|
||||
|
||||
for (Uint32 i = 0; i<cnt; i++)
|
||||
{
|
||||
|
@ -567,6 +582,7 @@ Ndbd_mem_manager::release_page(Uint32 type, Uint32 i)
|
|||
Uint32 sub = (rl.m_curr < rl.m_min) ? 0 : 1; // Over min ?
|
||||
release(i, 1);
|
||||
m_resource_limit[0].m_curr = tot.m_curr - sub;
|
||||
m_resource_limit[idx].m_curr = rl.m_curr - 1;
|
||||
}
|
||||
|
||||
#ifdef UNIT_TEST
|
||||
|
|
|
@ -55,7 +55,8 @@ public:
|
|||
Ndbd_mem_manager();
|
||||
|
||||
void set_resource_limit(const Resource_limit& rl);
|
||||
|
||||
bool get_resource_limit(Uint32 id, Resource_limit& rl) const;
|
||||
|
||||
bool init(bool allow_alloc_less_than_requested = true);
|
||||
void* get_memroot() const { return (void*)m_base_page;}
|
||||
|
||||
|
@ -65,7 +66,7 @@ public:
|
|||
void dump() const ;
|
||||
|
||||
void* alloc_page(Uint32 type, Uint32* i);
|
||||
void release_page(Uint32 type, Uint32 i, void * p);
|
||||
void release_page(Uint32 type, Uint32 i);
|
||||
|
||||
void* alloc_pages(Uint32 type, Uint32* i, Uint32 *cnt, Uint32 min = 1);
|
||||
void release_pages(Uint32 type, Uint32 i, void*p, Uint32 cnt);
|
||||
|
|
Loading…
Add table
Reference in a new issue