1
0
mirror of https://github.com/mariadb-corporation/mariadb-columnstore-engine.git synced 2025-07-30 19:23:07 +03:00

MCOL-505 Performance improvements to ExeMgr

This fix improves the performance of ExeMgr by doing the following:

* Significantly reduces the amount of time the xml configuration is
scanned
* Uses a much faster way to determine the CPU core count
* Reduces the amount of times certain allocations are executed
* Rowgroup pre-allocates vectors for 1024 rows

This improves performance for the first query of a connection and the
performance for smaller result sets. It may well improve performance in
other areas too.
This commit is contained in:
Andrew Hutchings
2017-01-12 16:58:16 +00:00
parent ae630b3375
commit 2f3937ac7e
4 changed files with 37 additions and 44 deletions

View File

@ -278,11 +278,11 @@ namespace oam
const string MODULE_TYPE = "ModuleType";
systemmoduletypeconfig.moduletypeconfig.clear();
Config* sysConfig = Config::makeConfig(CalpontConfigFile.c_str());
for (int moduleTypeID = 1; moduleTypeID < MAX_MODULE_TYPE+1; moduleTypeID++)
{
ModuleTypeConfig moduletypeconfig;
Config* sysConfig = Config::makeConfig(CalpontConfigFile.c_str());
// get Module info
@ -375,7 +375,7 @@ namespace oam
int moduleFound = 0;
//get NIC IP address/hostnames
for (int moduleID = 1; moduleID < MAX_MODULE ; moduleID++)
for (int moduleID = 1; moduleID <= moduletypeconfig.ModuleCount ; moduleID++)
{
DeviceNetworkConfig devicenetworkconfig;
HostConfig hostconfig;
@ -385,7 +385,9 @@ namespace oam
string ModuleIpAddr = MODULE_IP_ADDR + itoa(moduleID) + "-" + itoa(nicID) + "-" + itoa(moduleTypeID);
string ipAddr = sysConfig->getConfig(Section, ModuleIpAddr);
if (ipAddr.empty() || ipAddr == UnassignedIpAddr )
if (ipAddr.empty())
break;
else if (ipAddr == UnassignedIpAddr )
continue;
string ModuleHostName = MODULE_SERVER_NAME + itoa(moduleID) + "-" + itoa(nicID) + "-" + itoa(moduleTypeID);
@ -428,7 +430,7 @@ namespace oam
// get dbroot IDs
moduleFound = 0;
for (int moduleID = 1; moduleID < MAX_MODULE+1 ; moduleID++)
for (int moduleID = 1; moduleID <= moduletypeconfig.ModuleCount ; moduleID++)
{
string ModuleDBRootCount = MODULE_DBROOT_COUNT + itoa(moduleID) + "-" + itoa(moduleTypeID);
string temp = sysConfig->getConfig(Section, ModuleDBRootCount).c_str();
@ -1925,12 +1927,12 @@ namespace oam
const string SECTION_NAME = "PROCESSCONFIG";
systemprocessconfig.processconfig.clear();
Config* proConfig = Config::makeConfig(ProcessConfigFile.c_str());
for (int processID = 1; processID < MAX_PROCESS+1; processID++)
{
ProcessConfig processconfig;
Config* proConfig = Config::makeConfig(ProcessConfigFile.c_str());
// get process info
string sectionName = SECTION_NAME + itoa(processID);