diff --git a/inc/toolsdef.h b/inc/toolsdef.h index aaf918b8..f2a5104b 100644 --- a/inc/toolsdef.h +++ b/inc/toolsdef.h @@ -223,6 +223,7 @@ int32_t toolsCloseDir(TdDirPtr *ppDir); int64_t atomic_add_fetch_64(int64_t volatile* ptr, int64_t val); int32_t toolsGetNumberOfCores(); +int32_t toolsGetPhysicalMemory(); int64_t toolsGetTimestamp(int32_t precision); void toolsMsleep(int32_t mseconds); diff --git a/src/benchInsert.c b/src/benchInsert.c index 4a3d3be1..106fedb7 100644 --- a/src/benchInsert.c +++ b/src/benchInsert.c @@ -493,6 +493,34 @@ int32_t getVgroupsOfDb(SBenchConn *conn, SDataBase *database) { } #endif // TD_VER_COMPATIBLE_3_0_0_0 +// export from taos osSysinfo.c +int32_t taosGetTotalMemory(int64_t *totalKB); + +int32_t toolsGetDefaultVGroups() { + int32_t cores = toolsGetNumberOfCores(); + if (cores < 3 ) { + return 1; + } + + int64_t MemKB = 0; + taosGetTotalMemory(&MemKB); + + infoPrint("check local machine CPU: %d Memory:%d MB \n", cores, (int32_t)(MemKB/1024)); + if (MemKB <= 2*1024*1024) { // 2G + return 1; + } else if (MemKB <= 4*1024*1024) { // 4G + return 2; + } else if (MemKB <= 8*1024*1024) { // 8G + return 3; + } else if (MemKB <= 16*1024*1024) { // 16G + return 4; + } else if (MemKB <= 32*1024*1024) { // 32G + return 5; + } else { + return cores / 2; + } +} + int geneDbCreateCmd(SDataBase *database, char *command, int remainVnodes) { int dataLen = 0; int n; @@ -505,7 +533,7 @@ int geneDbCreateCmd(SDataBase *database, char *command, int remainVnodes) { database->dbName, (-1 != g_arguments->inputted_vgroups)? g_arguments->inputted_vgroups: - min(remainVnodes, toolsGetNumberOfCores())); + min(remainVnodes, toolsGetDefaultVGroups())); } else { n = snprintf(command + dataLen, SHORT_1K_SQL_BUFF_LEN - dataLen, g_arguments->escape_character