mirror of
https://github.com/MariaDB/server.git
synced 2025-01-17 12:32:27 +01:00
Bug#29044 - memory buddy allocator "unoptimal" memory handling
- add config param to have better behavior with large tables
This commit is contained in:
parent
98e08c79b0
commit
805d32bd0f
5 changed files with 26 additions and 0 deletions
|
@ -118,6 +118,8 @@
|
|||
|
||||
#define CFG_DB_O_DIRECT 168
|
||||
|
||||
#define CFG_DB_MAX_ALLOCATE 169
|
||||
|
||||
#define CFG_DB_SGA 198 /* super pool mem */
|
||||
#define CFG_DB_DATA_MEM_2 199 /* used in special build in 5.1 */
|
||||
|
||||
|
|
|
@ -2618,6 +2618,7 @@ private:
|
|||
|
||||
ArrayPool<Page> c_page_pool;
|
||||
Uint32 cnoOfAllocatedPages;
|
||||
Uint32 m_max_allocate_pages;
|
||||
|
||||
Tablerec *tablerec;
|
||||
Uint32 cnoOfTablerec;
|
||||
|
|
|
@ -308,6 +308,12 @@ void Dbtup::execREAD_CONFIG_REQ(Signal* signal)
|
|||
Uint32 noOfTriggers= 0;
|
||||
|
||||
Uint32 tmp= 0;
|
||||
|
||||
if (ndb_mgm_get_int_parameter(p, CFG_DB_MAX_ALLOCATE, &tmp))
|
||||
tmp = 32 * 1024 * 1024;
|
||||
m_max_allocate_pages = (tmp + GLOBAL_PAGE_SIZE - 1) / GLOBAL_PAGE_SIZE;
|
||||
|
||||
tmp = 0;
|
||||
ndbrequire(!ndb_mgm_get_int_parameter(p, CFG_TUP_PAGE_RANGE, &tmp));
|
||||
initPageRangeSize(tmp);
|
||||
ndbrequire(!ndb_mgm_get_int_parameter(p, CFG_TUP_TABLE, &cnoOfTablerec));
|
||||
|
|
|
@ -434,6 +434,11 @@ void Dbtup::allocMoreFragPages(Fragrecord* const regFragPtr)
|
|||
// We will grow by 18.75% plus two more additional pages to grow
|
||||
// a little bit quicker in the beginning.
|
||||
/* -----------------------------------------------------------------*/
|
||||
|
||||
if (noAllocPages > m_max_allocate_pages)
|
||||
{
|
||||
noAllocPages = m_max_allocate_pages;
|
||||
}
|
||||
Uint32 allocated = allocFragPages(regFragPtr, noAllocPages);
|
||||
regFragPtr->noOfPagesToGrow += allocated;
|
||||
}//Dbtup::allocMoreFragPages()
|
||||
|
|
|
@ -1313,6 +1313,18 @@ const ConfigInfo::ParamInfo ConfigInfo::m_ParamInfo[] = {
|
|||
"0",
|
||||
STR_VALUE(MAX_INT_RNIL) },
|
||||
|
||||
{
|
||||
CFG_DB_MAX_ALLOCATE,
|
||||
"MaxAllocate",
|
||||
DB_TOKEN,
|
||||
"Maximum size of allocation to use when allocating memory for tables",
|
||||
ConfigInfo::CI_USED,
|
||||
false,
|
||||
ConfigInfo::CI_INT,
|
||||
"32M",
|
||||
"1M",
|
||||
"1G" },
|
||||
|
||||
{
|
||||
CFG_DB_MEMREPORT_FREQUENCY,
|
||||
"MemReportFrequency",
|
||||
|
|
Loading…
Reference in a new issue