Below is the list of changes that have just been committed into a local
5.1 repository of jonas. When jonas does a push these changes will
be propagated to the main repository and, within 24 hours after the
push, to the public repository.
For information on how to access the public repository
see http://dev.mysql.com/doc/mysql/en/installing-source-tree.html
ChangeSet
1.2108 06/02/22 14:23:53 jonas@stripped +14 -0
ndb dd - bug#16657 - add new config variable
storage/ndb/src/mgmsrv/InitConfigFileParser.cpp
1.23 06/02/22 14:23:50 jonas@stripped +6 -4
Fix bug in handling of my.cnf files
storage/ndb/src/mgmsrv/ConfigInfo.cpp
1.73 06/02/22 14:23:50 jonas@stripped +12 -0
Introduce new config parameter for "SharedGlobalMemory",
only user is so far undo log buffer memory
storage/ndb/src/kernel/vm/ndbd_malloc_impl.cpp
1.6 06/02/22 14:23:50 jonas@stripped +11 -2
better startup printouts
storage/ndb/src/kernel/vm/SimulatedBlock.hpp
1.22 06/02/22 14:23:50 jonas@stripped +2 -1
Add new format "shared" page to easily migrate from/to superpool
storage/ndb/src/kernel/vm/SimulatedBlock.cpp
1.29 06/02/22 14:23:50 jonas@stripped +1 -0
Add new format "shared" page to easily migrate from/to superpool
storage/ndb/src/kernel/vm/GlobalData.hpp
1.7 06/02/22 14:23:50 jonas@stripped +1 -0
Add new format "shared" page to easily migrate from/to superpool
storage/ndb/src/kernel/blocks/ndbfs/Ndbfs.cpp
1.24 06/02/22 14:23:50 jonas@stripped +19 -5
Add new format "shared" page to easily migrate from/to superpool
storage/ndb/src/kernel/blocks/lgman.cpp
1.13 06/02/22 14:23:50 jonas@stripped +23 -30
Add new format "shared" page to easily migrate from/to superpool
storage/ndb/src/kernel/blocks/cmvmi/Cmvmi.cpp
1.27 06/02/22 14:23:50 jonas@stripped +20 -5
Add new format "shared" page to easily migrate from/to superpool
storage/ndb/src/kernel/SimBlockList.cpp
1.14 06/02/22 14:23:50 jonas@stripped +3 -2
Fix compiler error
storage/ndb/src/common/debugger/signaldata/FsReadWriteReq.cpp
1.6 06/02/22 14:23:50 jonas@stripped +2 -0
Add new format "shared" page to easily migrate from/to superpool
storage/ndb/include/mgmapi/mgmapi_config_parameters.h
1.26 06/02/22 14:23:50 jonas@stripped +3 -2
Introduce new config parameter for "SharedGlobalMemory",
only user is so far undo log buffer memory
storage/ndb/include/kernel/signaldata/FsReadWriteReq.hpp
1.4 06/02/22 14:23:50 jonas@stripped +2 -1
Add new format "shared" page to easily migrate from/to superpool
storage/ndb/include/kernel/ndb_limits.h
1.23 06/02/22 14:23:50 jonas@stripped +0 -6
remove hardcoded limit
# This is a BitKeeper patch. What follows are the unified diffs for the
# set of deltas contained in the patch. The rest of the patch, the part
# that BitKeeper cares about, is below these diffs.
# User: jonas
# Host: perch.ndb.mysql.com
# Root: /home/jonas/src/51-ndb
--- 1.12/storage/ndb/src/kernel/blocks/lgman.cpp 2006-02-17 18:29:56 +01:00
+++ 1.13/storage/ndb/src/kernel/blocks/lgman.cpp 2006-02-22 14:23:50 +01:00
@@ -858,9 +858,6 @@
bool
Lgman::alloc_logbuffer_memory(Ptr<Logfile_group> ptr, Uint32 bytes)
{
- /**
- * TODO use buddy allocator
- */
Uint32 pages= (((bytes + 3) >> 2) + File_formats::NDB_PAGE_SIZE_WORDS - 1)
/ File_formats::NDB_PAGE_SIZE_WORDS;
Uint32 requested= pages;
@@ -868,14 +865,14 @@
Page_map map(m_data_buffer_pool, ptr.p->m_buffer_pages);
while(pages)
{
- Ptr<GlobalPage> page;
- if(m_global_page_pool.seize(page))
+ Uint32 ptrI;
+ Uint32 cnt = pages > 64 ? 64 : pages;
+ m_ctx.m_mm.alloc(&ptrI, &cnt, 1);
+ if (cnt)
{
Buffer_idx range;
- range.m_ptr_i= page.i;
- range.m_idx = 1;
- while(pages >range.m_idx && m_global_page_pool.seizeId(page, page.i+1))
- range.m_idx++;
+ range.m_ptr_i= ptrI;
+ range.m_idx = cnt;
ndbrequire(map.append((Uint32*)&range, 2));
pages -= range.m_idx;
@@ -988,12 +985,8 @@
tmp[0] = *it.data;
ndbrequire(map.next(it));
tmp[1] = *it.data;
- while(range.m_idx)
- {
- m_global_page_pool.release(range.m_ptr_i);
- range.m_ptr_i++;
- range.m_idx--;
- }
+
+ m_ctx.m_mm.release(range.m_ptr_i, range.m_idx);
map.next(it);
}
map.release();
@@ -1082,7 +1075,7 @@
* Do force
*/
Buffer_idx pos= ptr.p->m_pos[PRODUCER].m_current_pos;
- GlobalPage *page = m_global_page_pool.getPtr(pos.m_ptr_i);
+ GlobalPage *page = m_shared_page_pool.getPtr(pos.m_ptr_i);
Uint32 free= File_formats::UNDO_PAGE_WORDS - pos.m_idx;
if(pos.m_idx) // don't flush empty page...
@@ -1172,7 +1165,7 @@
Lgman::get_log_buffer(Ptr<Logfile_group> ptr, Uint32 sz)
{
GlobalPage *page;
- page=m_global_page_pool.getPtr(ptr.p->m_pos[PRODUCER].m_current_pos.m_ptr_i);
+ page=m_shared_page_pool.getPtr(ptr.p->m_pos[PRODUCER].m_current_pos.m_ptr_i);
Uint32 total_free= ptr.p->m_free_buffer_words;
assert(total_free >= sz);
@@ -1210,7 +1203,7 @@
pos= 0;
assert(total_free >= free);
total_free -= free;
- page= m_global_page_pool.getPtr(next_page(ptr.p, PRODUCER));
+ page= m_shared_page_pool.getPtr(next_page(ptr.p, PRODUCER));
goto next;
}
@@ -1348,7 +1341,7 @@
else
{
Buffer_idx pos= producer.m_current_pos;
- GlobalPage *page = m_global_page_pool.getPtr(pos.m_ptr_i);
+ GlobalPage *page = m_shared_page_pool.getPtr(pos.m_ptr_i);
Uint32 free= File_formats::UNDO_PAGE_WORDS - pos.m_idx;
@@ -1567,7 +1560,7 @@
req->data.pageData[0] = pageId;
req->operationFlag = 0;
FsReadWriteReq::setFormatFlag(req->operationFlag,
- FsReadWriteReq::fsFormatGlobalPage);
+ FsReadWriteReq::fsFormatSharedPage);
if(max > pages)
{
@@ -1588,7 +1581,7 @@
filePtr.p->m_state |= Undofile::FS_OUTSTANDING;
File_formats::Undofile::Undo_page *page= (File_formats::Undofile::Undo_page*)
- m_global_page_pool.getPtr(pageId + max - 1);
+ m_shared_page_pool.getPtr(pageId + max - 1);
Uint64 lsn = 0;
lsn += page->m_page_header.m_page_lsn_hi; lsn <<= 32;
lsn += page->m_page_header.m_page_lsn_lo;
@@ -1614,7 +1607,7 @@
filePtr.p->m_state |= Undofile::FS_OUTSTANDING;
File_formats::Undofile::Undo_page *page= (File_formats::Undofile::Undo_page*)
- m_global_page_pool.getPtr(pageId + max - 1);
+ m_shared_page_pool.getPtr(pageId + max - 1);
Uint64 lsn = 0;
lsn += page->m_page_header.m_page_lsn_hi; lsn <<= 32;
lsn += page->m_page_header.m_page_lsn_lo;
@@ -2095,7 +2088,7 @@
req->data.pageData[0] = page_id;
req->operationFlag = 0;
FsReadWriteReq::setFormatFlag(req->operationFlag,
- FsReadWriteReq::fsFormatGlobalPage);
+ FsReadWriteReq::fsFormatSharedPage);
sendSignal(NDBFS_REF, GSN_FSREADREQ, signal,
FsReadWriteReq::FixedLength + 1, JBA);
@@ -2136,7 +2129,7 @@
req->data.pageData[0] = page_id;
req->operationFlag = 0;
FsReadWriteReq::setFormatFlag(req->operationFlag,
- FsReadWriteReq::fsFormatGlobalPage);
+ FsReadWriteReq::fsFormatSharedPage);
sendSignal(NDBFS_REF, GSN_FSREADREQ, signal,
FsReadWriteReq::FixedLength + 1, JBA);
@@ -2197,7 +2190,7 @@
lg_ptr.p->m_outstanding_fs = cnt - 1;
Ptr<GlobalPage> page_ptr;
- m_global_page_pool.getPtr(page_ptr, ptr.p->m_online.m_outstanding);
+ m_shared_page_pool.getPtr(page_ptr, ptr.p->m_online.m_outstanding);
ptr.p->m_online.m_outstanding= 0;
File_formats::Undofile::Undo_page* page =
@@ -2329,7 +2322,7 @@
req->data.pageData[0] = page_id;
req->operationFlag = 0;
FsReadWriteReq::setFormatFlag(req->operationFlag,
- FsReadWriteReq::fsFormatGlobalPage);
+ FsReadWriteReq::fsFormatSharedPage);
sendSignal(NDBFS_REF, GSN_FSREADREQ, signal,
FsReadWriteReq::FixedLength + 1, JBA);
@@ -2434,7 +2427,7 @@
Uint32 page = ptr.p->m_pos[CONSUMER].m_current_pos.m_ptr_i;
File_formats::Undofile::Undo_page* pageP =
- (File_formats::Undofile::Undo_page*)m_global_page_pool.getPtr(page);
+ (File_formats::Undofile::Undo_page*)m_shared_page_pool.getPtr(page);
ptr.p->m_pos[CONSUMER].m_current_pos.m_idx = pageP->m_words_used;
ptr.p->m_pos[PRODUCER].m_current_pos.m_idx = 1;
@@ -2574,7 +2567,7 @@
req->userPointer = filePtr.i;
req->operationFlag = 0;
FsReadWriteReq::setFormatFlag(req->operationFlag,
- FsReadWriteReq::fsFormatGlobalPage);
+ FsReadWriteReq::fsFormatSharedPage);
if(max > pages)
@@ -2713,7 +2706,7 @@
Uint32 page = consumer.m_current_pos.m_ptr_i;
File_formats::Undofile::Undo_page* pageP=(File_formats::Undofile::Undo_page*)
- m_global_page_pool.getPtr(page);
+ m_shared_page_pool.getPtr(page);
if(pos == 0)
{
@@ -2791,7 +2784,7 @@
ndbout_c("reading from %d", consumer.m_current_pos.m_ptr_i);
pageP=(File_formats::Undofile::Undo_page*)
- m_global_page_pool.getPtr(consumer.m_current_pos.m_ptr_i);
+ m_shared_page_pool.getPtr(consumer.m_current_pos.m_ptr_i);
pos= consumer.m_current_pos.m_idx= pageP->m_words_used;
--- 1.5/storage/ndb/src/kernel/vm/ndbd_malloc_impl.cpp 2006-02-21 17:29:42 +01:00
+++ 1.6/storage/ndb/src/kernel/vm/ndbd_malloc_impl.cpp 2006-02-22 14:23:50 +01:00
@@ -181,13 +181,22 @@
{
pages = m_resource_limit[0].m_min; // reserved
}
- assert(pages);
+
+ if (m_resource_limit[0].m_min == 0)
+ {
+ m_resource_limit[0].m_min = pages;
+ }
g_eventLogger.info("Ndbd_mem_manager::init(%d) min: %dMb initial: %dMb",
alloc_less_memory,
(sizeof(Alloc_page)*m_resource_limit[0].m_min)>>20,
- (sizeof(Alloc_page)*m_resource_limit[0].m_max)>>20);
+ (sizeof(Alloc_page)*pages)>>20);
+ if (pages == 0)
+ {
+ return 0;
+ }
+
/**
* Do malloc
*/
--- 1.25/storage/ndb/include/mgmapi/mgmapi_config_parameters.h 2006-02-08 21:52:06 +01:00
+++ 1.26/storage/ndb/include/mgmapi/mgmapi_config_parameters.h 2006-02-22 14:23:50 +01:00
@@ -88,10 +88,11 @@
#define CFG_DB_STRING_MEMORY 161 /* used from 5.1 */
#define CFG_DB_INITIAL_OPEN_FILES 162 /* used from 5.1 */
-#define CFG_DB_DATA_MEM_2 199 /* used in special build in 5.1 */
-
#define CFG_DB_DISK_PAGE_BUFFER_MEMORY 160
#define CFG_DB_STRING_MEMORY 161
+
+#define CFG_DB_SGA 198 /* super pool mem */
+#define CFG_DB_DATA_MEM_2 199 /* used in special build in 5.1 */
#define CFG_NODE_ARBIT_RANK 200
#define CFG_NODE_ARBIT_DELAY 201
--- 1.22/storage/ndb/include/kernel/ndb_limits.h 2006-01-17 09:24:51 +01:00
+++ 1.23/storage/ndb/include/kernel/ndb_limits.h 2006-02-22 14:23:50 +01:00
@@ -149,10 +149,4 @@
*/
#define LCP_RESTORE_BUFFER (4*32)
-/*
- * Log buffer pages
- * 8M
- */
-#define LGMAN_LOG_BUFFER (8*32)
-
#endif
--- 1.3/storage/ndb/include/kernel/signaldata/FsReadWriteReq.hpp 2005-11-07 12:19:05 +01:00
+++ 1.4/storage/ndb/include/kernel/signaldata/FsReadWriteReq.hpp 2006-02-22 14:23:50 +01:00
@@ -60,9 +60,10 @@
fsFormatArrayOfPages=1,
fsFormatListOfMemPages=2,
fsFormatGlobalPage=3,
+ fsFormatSharedPage=4,
fsFormatMax
};
-
+
/**
* Length of signal
*/
--- 1.5/storage/ndb/src/common/debugger/signaldata/FsReadWriteReq.cpp 2005-11-07 12:19:06 +01:00
+++ 1.6/storage/ndb/src/common/debugger/signaldata/FsReadWriteReq.cpp 2006-02-22 14:23:50 +01:00
@@ -49,6 +49,8 @@
break;
case FsReadWriteReq::fsFormatGlobalPage:
fprintf(output, "List of global pages)\n");
+ case FsReadWriteReq::fsFormatSharedPage:
+ fprintf(output, "List of shared pages)\n");
break;
default:
fprintf(output, "fsFormatMax not handled\n");
--- 1.72/storage/ndb/src/mgmsrv/ConfigInfo.cpp 2006-01-20 10:59:51 +01:00
+++ 1.73/storage/ndb/src/mgmsrv/ConfigInfo.cpp 2006-02-22 14:23:50 +01:00
@@ -771,6 +771,18 @@
"64M",
"4M",
"1024G" },
+
+ {
+ CFG_DB_SGA,
+ "SharedGlobalMemory",
+ DB_TOKEN,
+ "Total number bytes on each "DB_TOKEN_PRINT" node allocated for any use",
+ ConfigInfo::CI_USED,
+ false,
+ ConfigInfo::CI_INT64,
+ "20M",
+ "0",
+ "65536G" }, // 32k pages * 32-bit i value
{
CFG_DB_START_PARTIAL_TIMEOUT,
--- 1.22/storage/ndb/src/mgmsrv/InitConfigFileParser.cpp 2005-11-04 21:09:59 +01:00
+++ 1.23/storage/ndb/src/mgmsrv/InitConfigFileParser.cpp 2006-02-22 14:23:50 +01:00
@@ -800,6 +800,7 @@
/**
* Add ndbd, ndb_mgmd, api/mysqld
*/
+ Uint32 idx = options.size();
{
struct my_option opt;
bzero(&opt, sizeof(opt));
@@ -809,7 +810,6 @@
opt.var_type = GET_STR;
opt.arg_type = REQUIRED_ARG;
options.push_back(opt);
- ndbd = &options.back();
opt.name = "ndb_mgmd";
opt.id = 256;
@@ -817,7 +817,6 @@
opt.var_type = GET_STR;
opt.arg_type = REQUIRED_ARG;
options.push_back(opt);
- ndb_mgmd = &options.back();
opt.name = "mysqld";
opt.id = 256;
@@ -825,7 +824,6 @@
opt.var_type = GET_STR;
opt.arg_type = REQUIRED_ARG;
options.push_back(opt);
- mysqld = &options.back();
opt.name = "api";
opt.id = 256;
@@ -833,10 +831,14 @@
opt.var_type = GET_STR;
opt.arg_type = REQUIRED_ARG;
options.push_back(opt);
- api = &options.back();
bzero(&opt, sizeof(opt));
options.push_back(opt);
+
+ ndbd = &options[idx];
+ ndb_mgmd = &options[idx+1];
+ mysqld = &options[idx+2];
+ api = &options[idx+3];
}
--- 1.26/storage/ndb/src/kernel/blocks/cmvmi/Cmvmi.cpp 2006-02-13 13:12:41 +01:00
+++ 1.27/storage/ndb/src/kernel/blocks/cmvmi/Cmvmi.cpp 2006-02-22 14:23:50 +01:00
@@ -324,13 +324,28 @@
Uint64 page_buffer = 64*1024*1024;
ndb_mgm_get_int64_parameter(p, CFG_DB_DISK_PAGE_BUFFER_MEMORY, &page_buffer);
- page_buffer /= GLOBAL_PAGE_SIZE; // in pages
- if (page_buffer > 0)
+ Uint32 pages = 0;
+ pages += page_buffer / GLOBAL_PAGE_SIZE; // in pages
+ pages += LCP_RESTORE_BUFFER;
+ m_global_page_pool.setSize(pages + 64, true);
+
+ Uint64 shared_mem = 8*1024*1024;
+ ndb_mgm_get_int64_parameter(p, CFG_DB_SGA, &shared_mem);
+ shared_mem /= GLOBAL_PAGE_SIZE;
+ if (shared_mem)
{
- page_buffer += LGMAN_LOG_BUFFER;
+ Resource_limit rl;
+ rl.m_min = 0;
+ rl.m_max = shared_mem;
+ rl.m_resource_id = 0;
+ m_ctx.m_mm.set_resource_limit(rl);
+ }
+
+ ndbrequire(m_ctx.m_mm.init());
+ {
+ void* ptr = m_ctx.m_mm.get_memroot();
+ m_shared_page_pool.set((GlobalPage*)ptr, ~0);
}
- page_buffer += LCP_RESTORE_BUFFER;
- m_global_page_pool.setSize(page_buffer + 64, true);
ReadConfigConf * conf = (ReadConfigConf*)signal->getDataPtrSend();
conf->senderRef = reference();
--- 1.23/storage/ndb/src/kernel/blocks/ndbfs/Ndbfs.cpp 2006-02-13 13:12:42 +01:00
+++ 1.24/storage/ndb/src/kernel/blocks/ndbfs/Ndbfs.cpp 2006-02-22 14:23:50 +01:00
@@ -331,8 +331,10 @@
goto error;
}
- if(fsRWReq->getFormatFlag(fsRWReq->operationFlag) !=
- FsReadWriteReq::fsFormatGlobalPage){
+ Uint32 format = fsRWReq->getFormatFlag(fsRWReq->operationFlag);
+ if(format != FsReadWriteReq::fsFormatGlobalPage &&
+ format != FsReadWriteReq::fsFormatSharedPage)
+ {
if (fsRWReq->varIndex >= getBatSize(blockNumber)) {
jam();// Ensure that a valid variable is used
errorCode = FsRef::fsErrInvalidParameters;
@@ -353,7 +355,7 @@
tNRR = myBaseAddrRef->nrr;
tWA = (char*)myBaseAddrRef->WA;
- switch (fsRWReq->getFormatFlag(fsRWReq->operationFlag)) {
+ switch (format) {
// List of memory and file pages pairs
case FsReadWriteReq::fsFormatListOfPairs: {
@@ -422,7 +424,9 @@
goto error;
}//default
}//switch
- } else {
+ }
+ else if (format == FsReadWriteReq::fsFormatGlobalPage)
+ {
Ptr<GlobalPage> ptr;
m_global_page_pool.getPtr(ptr, fsRWReq->data.pageData[0]);
request->par.readWrite.pages[0].buf = (char*)ptr.p;
@@ -430,10 +434,20 @@
request->par.readWrite.pages[0].offset= ((UintPtr)GLOBAL_PAGE_SIZE)*fsRWReq->varIndex;
request->par.readWrite.numberOfPages = 1;
}
+ else
+ {
+ ndbrequire(format == FsReadWriteReq::fsFormatSharedPage);
+ Ptr<GlobalPage> ptr;
+ m_shared_page_pool.getPtr(ptr, fsRWReq->data.pageData[0]);
+ request->par.readWrite.pages[0].buf = (char*)ptr.p;
+ request->par.readWrite.pages[0].size = ((UintPtr)GLOBAL_PAGE_SIZE)*fsRWReq->numberOfPages;
+ request->par.readWrite.pages[0].offset= ((UintPtr)GLOBAL_PAGE_SIZE)*fsRWReq->varIndex;
+ request->par.readWrite.numberOfPages = 1;
+ }
ndbrequire(forward(openFile, request));
return;
-
+
error:
theRequestPool->put(request);
FsRef * const fsRef = (FsRef *)&signal->theData[0];
--- 1.13/storage/ndb/src/kernel/SimBlockList.cpp 2006-02-21 09:07:42 +01:00
+++ 1.14/storage/ndb/src/kernel/SimBlockList.cpp 2006-02-22 14:23:50 +01:00
@@ -15,7 +15,7 @@
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */
#include "SimBlockList.hpp"
-#include "EmulatorData.hpp"
+#include <Emulator.hpp>
#include <SimulatedBlock.hpp>
#include <Cmvmi.hpp>
#include <Ndbfs.hpp>
@@ -85,7 +85,8 @@
SimulatedBlock * fs = 0;
{
Uint32 dl;
- const ndb_mgm_configuration_iterator * p = conf.getOwnConfigIterator();
+ const ndb_mgm_configuration_iterator * p =
+ ctx.m_config.getOwnConfigIterator();
if(p && !ndb_mgm_get_int_parameter(p, CFG_DB_DISCLESS, &dl) && dl){
fs = NEW_BLOCK(VoidFs)(ctx);
} else {
--- 1.6/storage/ndb/src/kernel/vm/GlobalData.hpp 2005-11-07 12:19:08 +01:00
+++ 1.7/storage/ndb/src/kernel/vm/GlobalData.hpp 2006-02-22 14:23:50 +01:00
@@ -81,6 +81,7 @@
SimulatedBlock* blockTable[NO_OF_BLOCKS]; // Owned by Dispatcher::
public:
ArrayPool<GlobalPage> m_global_page_pool;
+ ArrayPool<GlobalPage> m_shared_page_pool;
};
extern GlobalData globalData;
--- 1.28/storage/ndb/src/kernel/vm/SimulatedBlock.cpp 2006-02-13 13:12:43 +01:00
+++ 1.29/storage/ndb/src/kernel/vm/SimulatedBlock.cpp 2006-02-22 14:23:50 +01:00
@@ -52,6 +52,7 @@
theReference(numberToRef(blockNumber, globalData.ownId)),
m_ctx(ctx),
m_global_page_pool(globalData.m_global_page_pool),
+ m_shared_page_pool(globalData.m_shared_page_pool),
c_fragmentInfoHash(c_fragmentInfoPool),
c_linearFragmentSendList(c_fragmentSendPool),
c_segmentedFragmentSendList(c_fragmentSendPool),
--- 1.21/storage/ndb/src/kernel/vm/SimulatedBlock.hpp 2006-02-21 09:07:42 +01:00
+++ 1.22/storage/ndb/src/kernel/vm/SimulatedBlock.hpp 2006-02-22 14:23:50 +01:00
@@ -426,7 +426,8 @@
protected:
ArrayPool<GlobalPage>& m_global_page_pool;
-
+ ArrayPool<GlobalPage>& m_shared_page_pool;
+
private:
/**
* Node state
| Thread |
|---|
| • bk commit into 5.1 tree (jonas:1.2108) BUG#16657 | jonas | 22 Feb |