sysinfo in monitor
This commit is contained in:
parent
c018e91859
commit
c890b0b5c1
|
@ -88,9 +88,9 @@ typedef struct {
|
|||
float cpu_engine;
|
||||
float cpu_system;
|
||||
float cpu_cores;
|
||||
float mem_engine; // MB
|
||||
float mem_system; // MB
|
||||
float mem_total; // MB
|
||||
int64_t mem_engine; // KB
|
||||
int64_t mem_system; // KB
|
||||
int64_t mem_total; // KB
|
||||
float disk_engine; // GB
|
||||
float disk_used; // GB
|
||||
float disk_total; // GB
|
||||
|
|
|
@ -28,11 +28,11 @@ extern char tsCharset[];
|
|||
extern char tsLocale[];
|
||||
extern int8_t tsDaylight;
|
||||
extern bool tsEnableCoreFile;
|
||||
extern int64_t tsPageSize;
|
||||
extern int64_t tsPageSizeKB;
|
||||
extern int64_t tsOpenMax;
|
||||
extern int64_t tsStreamMax;
|
||||
extern int32_t tsNumOfCores;
|
||||
extern int32_t tsTotalMemoryMB;
|
||||
extern float tsNumOfCores;
|
||||
extern int64_t tsTotalMemoryKB;
|
||||
|
||||
extern char configDir[];
|
||||
extern char tsDataDir[];
|
||||
|
|
|
@ -36,12 +36,12 @@ typedef struct {
|
|||
void taosGetSystemInfo();
|
||||
int32_t taosGetEmail(char *email, int32_t maxLen);
|
||||
int32_t taosGetOsReleaseName(char *releaseName, int32_t maxLen);
|
||||
int32_t taosGetCpuInfo(char *cpuModel, int32_t maxLen, int32_t *numOfCores);
|
||||
int32_t taosGetCpuCores();
|
||||
bool taosGetCpuUsage(float *sysCpuUsage, float *procCpuUsage);
|
||||
bool taosGetTotalSysMemoryKB(uint64_t *kb);
|
||||
bool taosGetProcMemory(float *memoryUsedMB); //
|
||||
bool taosGetSysMemory(float *memoryUsedMB); //
|
||||
int32_t taosGetCpuInfo(char *cpuModel, int32_t maxLen, float *numOfCores);
|
||||
int32_t taosGetCpuCores(float *numOfCores);
|
||||
int32_t taosGetCpuUsage(float *cpu_system, float *cpu_engine);
|
||||
int32_t taosGetTotalMemory(int64_t *totalKB);
|
||||
int32_t taosGetProcMemory(int64_t *usedKB);
|
||||
int32_t taosGetSysMemory(int64_t *usedKB);
|
||||
int32_t taosGetDiskSize(char *dataDir, SDiskSize *diskSize);
|
||||
bool taosReadProcIO(int64_t *rchars, int64_t *wchars);
|
||||
bool taosGetProcIO(float *readKB, float *writeKB);
|
||||
|
|
|
@ -279,11 +279,11 @@ static int32_t taosAddSystemCfg(SConfig *pCfg) {
|
|||
if (cfgAddLocale(pCfg, "locale", tsLocale) != 0) return -1;
|
||||
if (cfgAddCharset(pCfg, "charset", tsCharset) != 0) return -1;
|
||||
if (cfgAddBool(pCfg, "enableCoreFile", 1, 1) != 0) return -1;
|
||||
if (cfgAddInt32(pCfg, "numOfCores", tsNumOfCores, 1, 100000, 1) != 0) return -1;
|
||||
if (cfgAddInt32(pCfg, "pageSize(KB)", tsPageSize, 0, INT64_MAX, 1) != 0) return -1;
|
||||
if (cfgAddFloat(pCfg, "numOfCores", tsNumOfCores, 0, 100000, 1) != 0) return -1;
|
||||
if (cfgAddInt64(pCfg, "openMax", tsOpenMax, 0, INT64_MAX, 1) != 0) return -1;
|
||||
if (cfgAddInt64(pCfg, "streamMax", tsStreamMax, 0, INT64_MAX, 1) != 0) return -1;
|
||||
if (cfgAddInt32(pCfg, "totalMemory(MB)", tsTotalMemoryMB, 0, INT32_MAX, 1) != 0) return -1;
|
||||
if (cfgAddInt32(pCfg, "pageSize(KB)", tsPageSizeKB, 0, INT64_MAX, 1) != 0) return -1;
|
||||
if (cfgAddInt64(pCfg, "totalMemory(KB)", tsTotalMemoryKB, 0, INT64_MAX, 1) != 0) return -1;
|
||||
if (cfgAddString(pCfg, "os sysname", info.sysname, 1) != 0) return -1;
|
||||
if (cfgAddString(pCfg, "os nodename", info.nodename, 1) != 0) return -1;
|
||||
if (cfgAddString(pCfg, "os release", info.release, 1) != 0) return -1;
|
||||
|
@ -404,10 +404,6 @@ static void taosSetSystemCfg(SConfig *pCfg) {
|
|||
const char *charset = cfgGetItem(pCfg, "charset")->str;
|
||||
taosSetSystemLocale(locale, charset);
|
||||
|
||||
if (tsNumOfCores <= 1) {
|
||||
tsNumOfCores = 2;
|
||||
}
|
||||
|
||||
bool enableCore = cfgGetItem(pCfg, "enableCoreFile")->bval;
|
||||
taosSetConsoleEcho(enableCore);
|
||||
|
||||
|
|
|
@ -474,13 +474,40 @@ void dndProcessStartupReq(SDnode *pDnode, SRpcMsg *pReq) {
|
|||
rpcSendResponse(&rpcRsp);
|
||||
}
|
||||
|
||||
static int32_t dndGetMonitorBasicInfo(SDnode *pDnode, SMonBasicInfo *pInfo) {
|
||||
static void dndGetMonitorBasicInfo(SDnode *pDnode, SMonBasicInfo *pInfo) {
|
||||
pInfo->dnode_id = dndGetDnodeId(pDnode);
|
||||
tstrncpy(pInfo->dnode_ep, tsLocalEp, TSDB_EP_LEN);
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int32_t dndGetMonitorDnodeInfo(SDnode *pDnode, SMonDnodeInfo *pInfo) { return 0; }
|
||||
static void dndGetMonitorDnodeInfo(SDnode *pDnode, SMonDnodeInfo *pInfo) {
|
||||
pInfo->uptime = (taosGetTimestampMs() - pDnode->dmgmt.rebootTime) / (86400000.0f);
|
||||
taosGetCpuUsage(&pInfo->cpu_engine, &pInfo->cpu_system);
|
||||
pInfo->cpu_cores = tsNumOfCores;
|
||||
taosGetProcMemory(&pInfo->mem_engine);
|
||||
taosGetSysMemory(&pInfo->mem_system);
|
||||
pInfo->mem_total = tsTotalMemoryKB;
|
||||
pInfo->disk_engine = 4.1;
|
||||
pInfo->disk_used = 4.2;
|
||||
pInfo->disk_total = 4.3;
|
||||
pInfo->net_in = 5.1;
|
||||
pInfo->net_out = 5.2;
|
||||
pInfo->io_read = 6.1;
|
||||
pInfo->io_write = 6.2;
|
||||
pInfo->io_read_disk = 7.1;
|
||||
pInfo->io_write_disk = 7.2;
|
||||
pInfo->req_select = 8;
|
||||
pInfo->req_select_rate = 8.1;
|
||||
pInfo->req_insert = 9;
|
||||
pInfo->req_insert_success = 10;
|
||||
pInfo->req_insert_rate = 10.1;
|
||||
pInfo->req_insert_batch = 11;
|
||||
pInfo->req_insert_batch_success = 12;
|
||||
pInfo->req_insert_batch_rate = 12.3;
|
||||
pInfo->errors = 4;
|
||||
pInfo->vnodes_num = 5;
|
||||
pInfo->masters = 6;
|
||||
pInfo->has_mnode = 1;
|
||||
}
|
||||
|
||||
static void dndSendMonitorReport(SDnode *pDnode) {
|
||||
if (!tsEnableMonitor || tsMonitorFqdn[0] == 0 || tsMonitorPort == 0) return;
|
||||
|
@ -490,9 +517,8 @@ static void dndSendMonitorReport(SDnode *pDnode) {
|
|||
if (pMonitor == NULL) return;
|
||||
|
||||
SMonBasicInfo basicInfo = {0};
|
||||
if (dndGetMonitorBasicInfo(pDnode, &basicInfo) == 0) {
|
||||
monSetBasicInfo(pMonitor, &basicInfo);
|
||||
}
|
||||
dndGetMonitorBasicInfo(pDnode, &basicInfo);
|
||||
monSetBasicInfo(pMonitor, &basicInfo);
|
||||
|
||||
SMonClusterInfo clusterInfo = {0};
|
||||
SMonVgroupInfo vgroupInfo = {0};
|
||||
|
@ -504,9 +530,8 @@ static void dndSendMonitorReport(SDnode *pDnode) {
|
|||
}
|
||||
|
||||
SMonDnodeInfo dnodeInfo = {0};
|
||||
if (dndGetMonitorDnodeInfo(pDnode, &dnodeInfo) == 0) {
|
||||
monSetDnodeInfo(pMonitor, &dnodeInfo);
|
||||
}
|
||||
dndGetMonitorDnodeInfo(pDnode, &dnodeInfo);
|
||||
monSetDnodeInfo(pMonitor, &dnodeInfo);
|
||||
|
||||
SMonDiskInfo diskInfo = {0};
|
||||
if (dndGetMonitorDiskInfo(pDnode, &diskInfo) == 0) {
|
||||
|
|
|
@ -56,19 +56,16 @@ static char* mndBuildTelemetryReport(SMnode* pMnode) {
|
|||
tjsonAddStringToObject(pJson, "os", tmp);
|
||||
}
|
||||
|
||||
int32_t numOfCores = 0;
|
||||
float numOfCores = 0;
|
||||
if (taosGetCpuInfo(tmp, sizeof(tmp), &numOfCores) == 0) {
|
||||
tjsonAddStringToObject(pJson, "cpuModel", tmp);
|
||||
tjsonAddDoubleToObject(pJson, "numOfCpu", numOfCores);
|
||||
} else {
|
||||
tjsonAddDoubleToObject(pJson, "numOfCpu", taosGetCpuCores());
|
||||
tjsonAddDoubleToObject(pJson, "numOfCpu", tsNumOfCores);
|
||||
}
|
||||
|
||||
uint64_t memoryKB = 0;
|
||||
if (taosGetTotalSysMemoryKB(&memoryKB)) {
|
||||
snprintf(tmp, sizeof(tmp), "%" PRIu64 " kB", memoryKB);
|
||||
tjsonAddStringToObject(pJson, "memory", tmp);
|
||||
}
|
||||
snprintf(tmp, sizeof(tmp), "%" PRId64 " kB", tsTotalMemoryKB);
|
||||
tjsonAddStringToObject(pJson, "memory", tmp);
|
||||
|
||||
tjsonAddStringToObject(pJson, "version", version);
|
||||
tjsonAddStringToObject(pJson, "buildInfo", buildinfo);
|
||||
|
|
|
@ -31,11 +31,11 @@ char tsLocale[TD_LOCALE_LEN] = {0};
|
|||
char tsCharset[TD_CHARSET_LEN] = {0};
|
||||
int8_t tsDaylight = 0;
|
||||
bool tsEnableCoreFile = 0;
|
||||
int64_t tsPageSize = 0;
|
||||
int64_t tsPageSizeKB = 0;
|
||||
int64_t tsOpenMax = 0;
|
||||
int64_t tsStreamMax = 0;
|
||||
int32_t tsNumOfCores = 0;
|
||||
int32_t tsTotalMemoryMB = 0;
|
||||
float tsNumOfCores = 0;
|
||||
int64_t tsTotalMemoryKB = 0;
|
||||
|
||||
void osInit() {
|
||||
srand(taosSafeRand());
|
||||
|
@ -44,6 +44,11 @@ void osInit() {
|
|||
taosSetSystemTimezone(tsTimezone, tsTimezone, &tsDaylight);
|
||||
taosGetSystemInfo();
|
||||
|
||||
// deadlock in query
|
||||
if (tsNumOfCores < 2) {
|
||||
tsNumOfCores = 2;
|
||||
}
|
||||
|
||||
#if defined(_TD_WINDOWS_64) || defined(_TD_WINDOWS_32)
|
||||
taosWinSocketInit();
|
||||
|
||||
|
|
|
@ -39,32 +39,32 @@
|
|||
#include <DbgHelp.h>
|
||||
#pragma warning(pop)
|
||||
|
||||
static int32_t taosGetTotalMemory() {
|
||||
int32_t taosGetTotalMemory(int64_t *totalKB) {
|
||||
MEMORYSTATUSEX memsStat;
|
||||
memsStat.dwLength = sizeof(memsStat);
|
||||
if (!GlobalMemoryStatusEx(&memsStat)) {
|
||||
return 0;
|
||||
return -1;
|
||||
}
|
||||
|
||||
float nMemTotal = memsStat.ullTotalPhys / (1024.0f * 1024.0f);
|
||||
return (int32_t)nMemTotal;
|
||||
*totalKB = memsStat.ullTotalPhys / 1024;
|
||||
return 0;
|
||||
}
|
||||
|
||||
bool taosGetSysMemory(float *memoryUsedMB) {
|
||||
int32_t taosGetSysMemory(int64_t *usedKB) {
|
||||
MEMORYSTATUSEX memsStat;
|
||||
memsStat.dwLength = sizeof(memsStat);
|
||||
if (!GlobalMemoryStatusEx(&memsStat)) {
|
||||
return false;
|
||||
return -1;
|
||||
}
|
||||
|
||||
float nMemFree = memsStat.ullAvailPhys / (1024.0f * 1024.0f);
|
||||
float nMemTotal = memsStat.ullTotalPhys / (1024.0f * 1024.0f);
|
||||
int64_t nMemFree = memsStat.ullAvailPhys / 1024;
|
||||
int64_t nMemTotal = memsStat.ullTotalPhys / 1024.0;
|
||||
|
||||
*memoryUsedMB = nMemTotal - nMemFree;
|
||||
return true;
|
||||
*usedKB = nMemTotal - nMemFree;
|
||||
return 0;
|
||||
}
|
||||
|
||||
bool taosGetProcMemory(float *memoryUsedMB) {
|
||||
int32_t taosGetProcMemory(int64_t *usedKB) {
|
||||
unsigned bytes_used = 0;
|
||||
|
||||
#if defined(_WIN64) && defined(_MSC_VER)
|
||||
|
@ -76,20 +76,21 @@ bool taosGetProcMemory(float *memoryUsedMB) {
|
|||
}
|
||||
#endif
|
||||
|
||||
*memoryUsedMB = (float)bytes_used / 1024 / 1024;
|
||||
return true;
|
||||
*usedKB = bytes_used / 1024;
|
||||
return 0;
|
||||
}
|
||||
|
||||
int32_t taosGetCpuCores() {
|
||||
int32_t taosGetCpuCores(float *numOfCores) {
|
||||
SYSTEM_INFO info;
|
||||
GetSystemInfo(&info);
|
||||
return (int32_t)info.dwNumberOfProcessors;
|
||||
*numOfCores = info.dwNumberOfProcessors;
|
||||
return 0;
|
||||
}
|
||||
|
||||
bool taosGetCpuUsage(float *sysCpuUsage, float *procCpuUsage) {
|
||||
int32_t taosGetCpuUsage(float *sysCpuUsage, float *procCpuUsage) {
|
||||
*sysCpuUsage = 0;
|
||||
*procCpuUsage = 0;
|
||||
return true;
|
||||
return 0;
|
||||
}
|
||||
|
||||
int32_t taosGetDiskSize(char *dataDir, SDiskSize *diskSize) {
|
||||
|
@ -162,8 +163,8 @@ bool taosGetProcIO(float *readKB, float *writeKB) {
|
|||
}
|
||||
|
||||
void taosGetSystemInfo() {
|
||||
tsNumOfCores = taosGetCpuCores();
|
||||
tsTotalMemoryMB = taosGetTotalMemory();
|
||||
taosGetCpuCores(&tsNumOfCores);
|
||||
taosGetTotalMemory(&tsTotalMemoryKB);
|
||||
|
||||
float tmp1, tmp2;
|
||||
taosGetBandSpeed(&tmp1);
|
||||
|
@ -245,16 +246,17 @@ void taosKillSystem() {
|
|||
exit(0);
|
||||
}
|
||||
|
||||
int32_t taosGetCpuCores() { return sysconf(_SC_NPROCESSORS_ONLN); }
|
||||
int32_t taosGetCpuCores(float *numOfCores) {
|
||||
*numOfCores = sysconf(_SC_NPROCESSORS_ONLN);
|
||||
return 0;
|
||||
}
|
||||
|
||||
void taosGetSystemInfo() {
|
||||
// taosGetProcInfos();
|
||||
|
||||
tsNumOfCores = sysconf(_SC_NPROCESSORS_ONLN);
|
||||
long physical_pages = sysconf(_SC_PHYS_PAGES);
|
||||
long page_size = sysconf(_SC_PAGESIZE);
|
||||
tsTotalMemoryMB = physical_pages * page_size / (1024 * 1024);
|
||||
tsPageSize = page_size;
|
||||
tsTotalMemoryKB = physical_pages * page_size / 1024;
|
||||
tsPageSizeKB = page_size / 1024;
|
||||
tsNumOfCores = sysconf(_SC_NPROCESSORS_ONLN);
|
||||
}
|
||||
|
||||
bool taosReadProcIO(int64_t *rchars, int64_t *wchars) {
|
||||
|
@ -281,20 +283,20 @@ bool taosGetBandSpeed(float *bandSpeedKb) {
|
|||
return true;
|
||||
}
|
||||
|
||||
bool taosGetCpuUsage(float *sysCpuUsage, float *procCpuUsage) {
|
||||
int32_t taosGetCpuUsage(float *sysCpuUsage, float *procCpuUsage) {
|
||||
*sysCpuUsage = 0;
|
||||
*procCpuUsage = 0;
|
||||
return true;
|
||||
return 0;
|
||||
}
|
||||
|
||||
bool taosGetProcMemory(float *memoryUsedMB) {
|
||||
*memoryUsedMB = 0;
|
||||
return true;
|
||||
int32_t taosGetProcMemory(int64_t *usedKB) {
|
||||
*usedKB = 0;
|
||||
return 0;
|
||||
}
|
||||
|
||||
bool taosGetSysMemory(float *memoryUsedMB) {
|
||||
*memoryUsedMB = 0;
|
||||
return true;
|
||||
int32_t taosGetSysMemory(int64_t *usedKB) {
|
||||
*usedKB = 0;
|
||||
return 0;
|
||||
}
|
||||
|
||||
int taosSystem(const char *cmd) {
|
||||
|
@ -375,35 +377,34 @@ static char tsSysCpuFile[] = "/proc/stat";
|
|||
static char tsProcCpuFile[25] = {0};
|
||||
static char tsProcMemFile[25] = {0};
|
||||
static char tsProcIOFile[25] = {0};
|
||||
static float tsPageSizeKB = 0;
|
||||
|
||||
static void taosGetProcInfos() {
|
||||
tsPageSize = sysconf(_SC_PAGESIZE);
|
||||
tsPageSizeKB = sysconf(_SC_PAGESIZE) / 1024;
|
||||
tsOpenMax = sysconf(_SC_OPEN_MAX);
|
||||
tsStreamMax = sysconf(_SC_STREAM_MAX);
|
||||
|
||||
tsProcId = (pid_t)syscall(SYS_gettid);
|
||||
tsPageSizeKB = (float)(sysconf(_SC_PAGESIZE)) / 1024;
|
||||
|
||||
snprintf(tsProcMemFile, 25, "/proc/%d/status", tsProcId);
|
||||
snprintf(tsProcCpuFile, 25, "/proc/%d/stat", tsProcId);
|
||||
snprintf(tsProcIOFile, 25, "/proc/%d/io", tsProcId);
|
||||
snprintf(tsProcMemFile, sizeof(tsProcMemFile), "/proc/%d/status", tsProcId);
|
||||
snprintf(tsProcCpuFile, sizeof(tsProcCpuFile), "/proc/%d/stat", tsProcId);
|
||||
snprintf(tsProcIOFile, sizeof(tsProcIOFile), "/proc/%d/io", tsProcId);
|
||||
}
|
||||
|
||||
static int32_t taosGetTotalMemory() { return (int32_t)((float)sysconf(_SC_PHYS_PAGES) * tsPageSizeKB / 1024); }
|
||||
|
||||
bool taosGetSysMemory(float *memoryUsedMB) {
|
||||
float memoryAvailMB = (float)sysconf(_SC_AVPHYS_PAGES) * tsPageSizeKB / 1024;
|
||||
*memoryUsedMB = (float)tsTotalMemoryMB - memoryAvailMB;
|
||||
return true;
|
||||
int32_t taosGetTotalMemory(int64_t *totalKB) {
|
||||
*totalKB = (int64_t)(sysconf(_SC_PHYS_PAGES) * tsPageSizeKB);
|
||||
return 0;
|
||||
}
|
||||
|
||||
bool taosGetProcMemory(float *memoryUsedMB) {
|
||||
int32_t taosGetSysMemory(int64_t *usedKB) {
|
||||
*usedKB = sysconf(_SC_AVPHYS_PAGES) * tsPageSizeKB;
|
||||
return 0;
|
||||
}
|
||||
|
||||
int32_t taosGetProcMemory(int64_t *usedKB) {
|
||||
// FILE *fp = fopen(tsProcMemFile, "r");
|
||||
TdFilePtr pFile = taosOpenFile(tsProcMemFile, TD_FILE_READ | TD_FILE_STREAM);
|
||||
if (pFile == NULL) {
|
||||
// printf("open file:%s failed", tsProcMemFile);
|
||||
return false;
|
||||
return -1;
|
||||
}
|
||||
|
||||
ssize_t _bytes = 0;
|
||||
|
@ -421,25 +422,23 @@ bool taosGetProcMemory(float *memoryUsedMB) {
|
|||
if (line == NULL) {
|
||||
// printf("read file:%s failed", tsProcMemFile);
|
||||
taosCloseFile(&pFile);
|
||||
return false;
|
||||
return -1;
|
||||
}
|
||||
|
||||
int64_t memKB = 0;
|
||||
char tmp[10];
|
||||
sscanf(line, "%s %" PRId64, tmp, &memKB);
|
||||
*memoryUsedMB = (float)((double)memKB / 1024);
|
||||
char tmp[10];
|
||||
sscanf(line, "%s %" PRId64, tmp, usedKB);
|
||||
|
||||
if (line != NULL) tfree(line);
|
||||
taosCloseFile(&pFile);
|
||||
return true;
|
||||
return 0;
|
||||
}
|
||||
|
||||
static bool taosGetSysCpuInfo(SysCpuInfo *cpuInfo) {
|
||||
static int32_t taosGetSysCpuInfo(SysCpuInfo *cpuInfo) {
|
||||
// FILE *fp = fopen(tsSysCpuFile, "r");
|
||||
TdFilePtr pFile = taosOpenFile(tsSysCpuFile, TD_FILE_READ | TD_FILE_STREAM);
|
||||
if (pFile == NULL) {
|
||||
// printf("open file:%s failed", tsSysCpuFile);
|
||||
return false;
|
||||
return -1;
|
||||
}
|
||||
|
||||
char *line = NULL;
|
||||
|
@ -447,7 +446,7 @@ static bool taosGetSysCpuInfo(SysCpuInfo *cpuInfo) {
|
|||
if ((_bytes < 0) || (line == NULL)) {
|
||||
// printf("read file:%s failed", tsSysCpuFile);
|
||||
taosCloseFile(&pFile);
|
||||
return false;
|
||||
return -1;
|
||||
}
|
||||
|
||||
char cpu[10] = {0};
|
||||
|
@ -456,15 +455,15 @@ static bool taosGetSysCpuInfo(SysCpuInfo *cpuInfo) {
|
|||
|
||||
if (line != NULL) tfree(line);
|
||||
taosCloseFile(&pFile);
|
||||
return true;
|
||||
return 0;
|
||||
}
|
||||
|
||||
static bool taosGetProcCpuInfo(ProcCpuInfo *cpuInfo) {
|
||||
static int32_t taosGetProcCpuInfo(ProcCpuInfo *cpuInfo) {
|
||||
// FILE *fp = fopen(tsProcCpuFile, "r");
|
||||
TdFilePtr pFile = taosOpenFile(tsProcCpuFile, TD_FILE_READ | TD_FILE_STREAM);
|
||||
if (pFile == NULL) {
|
||||
// printf("open file:%s failed", tsProcCpuFile);
|
||||
return false;
|
||||
return -1;
|
||||
}
|
||||
|
||||
char *line = NULL;
|
||||
|
@ -472,7 +471,7 @@ static bool taosGetProcCpuInfo(ProcCpuInfo *cpuInfo) {
|
|||
if ((_bytes < 0) || (line == NULL)) {
|
||||
// printf("read file:%s failed", tsProcCpuFile);
|
||||
taosCloseFile(&pFile);
|
||||
return false;
|
||||
return -1;
|
||||
}
|
||||
|
||||
for (int i = 0, blank = 0; line[i] != 0; ++i) {
|
||||
|
@ -486,23 +485,26 @@ static bool taosGetProcCpuInfo(ProcCpuInfo *cpuInfo) {
|
|||
|
||||
if (line != NULL) tfree(line);
|
||||
taosCloseFile(&pFile);
|
||||
return true;
|
||||
return 0;
|
||||
}
|
||||
|
||||
int32_t taosGetCpuCores() { return (int32_t)sysconf(_SC_NPROCESSORS_ONLN); }
|
||||
int32_t taosGetCpuCores(float *numOfCores) {
|
||||
*numOfCores = sysconf(_SC_NPROCESSORS_ONLN);
|
||||
return 0;
|
||||
}
|
||||
|
||||
bool taosGetCpuUsage(float *sysCpuUsage, float *procCpuUsage) {
|
||||
int32_t taosGetCpuUsage(float *cpu_system, float *cpu_engine) {
|
||||
static uint64_t lastSysUsed = 0;
|
||||
static uint64_t lastSysTotal = 0;
|
||||
static uint64_t lastProcTotal = 0;
|
||||
|
||||
SysCpuInfo sysCpu;
|
||||
ProcCpuInfo procCpu;
|
||||
if (!taosGetSysCpuInfo(&sysCpu)) {
|
||||
return false;
|
||||
if (taosGetSysCpuInfo(&sysCpu) != 0) {
|
||||
return -1;
|
||||
}
|
||||
if (!taosGetProcCpuInfo(&procCpu)) {
|
||||
return false;
|
||||
if (taosGetProcCpuInfo(&procCpu) != 0) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
uint64_t curSysUsed = sysCpu.user + sysCpu.nice + sysCpu.system;
|
||||
|
@ -513,21 +515,21 @@ bool taosGetCpuUsage(float *sysCpuUsage, float *procCpuUsage) {
|
|||
lastSysUsed = curSysUsed > 1 ? curSysUsed : 1;
|
||||
lastSysTotal = curSysTotal > 1 ? curSysTotal : 1;
|
||||
lastProcTotal = curProcTotal > 1 ? curProcTotal : 1;
|
||||
return false;
|
||||
return -1;
|
||||
}
|
||||
|
||||
if (curSysTotal == lastSysTotal) {
|
||||
return false;
|
||||
return -1;
|
||||
}
|
||||
|
||||
*sysCpuUsage = (float)((double)(curSysUsed - lastSysUsed) / (double)(curSysTotal - lastSysTotal) * 100);
|
||||
*procCpuUsage = (float)((double)(curProcTotal - lastProcTotal) / (double)(curSysTotal - lastSysTotal) * 100);
|
||||
*cpu_engine = (float)((double)(curSysUsed - lastSysUsed) / (double)(curSysTotal - lastSysTotal) * 100);
|
||||
*cpu_system = (float)((double)(curProcTotal - lastProcTotal) / (double)(curSysTotal - lastSysTotal) * 100);
|
||||
|
||||
lastSysUsed = curSysUsed;
|
||||
lastSysTotal = curSysTotal;
|
||||
lastProcTotal = curProcTotal;
|
||||
|
||||
return true;
|
||||
return 0;
|
||||
}
|
||||
|
||||
int32_t taosGetDiskSize(char *dataDir, SDiskSize *diskSize) {
|
||||
|
@ -700,13 +702,10 @@ bool taosGetProcIO(float *readKB, float *writeKB) {
|
|||
|
||||
void taosGetSystemInfo() {
|
||||
taosGetProcInfos();
|
||||
|
||||
tsNumOfCores = taosGetCpuCores();
|
||||
tsTotalMemoryMB = taosGetTotalMemory();
|
||||
taosGetCpuCores(&tsNumOfCores);
|
||||
taosGetTotalMemory(&tsTotalMemoryKB);
|
||||
|
||||
float tmp1, tmp2;
|
||||
taosGetSysMemory(&tmp1);
|
||||
taosGetProcMemory(&tmp2);
|
||||
taosGetBandSpeed(&tmp1);
|
||||
taosGetCpuUsage(&tmp1, &tmp2);
|
||||
taosGetProcIO(&tmp1, &tmp2);
|
||||
|
@ -923,7 +922,7 @@ int32_t taosGetOsReleaseName(char *releaseName, int32_t maxLen) {
|
|||
return code;
|
||||
}
|
||||
|
||||
int32_t taosGetCpuInfo(char *cpuModel, int32_t maxLen, int32_t *numOfCores) {
|
||||
int32_t taosGetCpuInfo(char *cpuModel, int32_t maxLen, float *numOfCores) {
|
||||
char *line = NULL;
|
||||
size_t size = 0;
|
||||
int32_t done = 0;
|
||||
|
@ -941,7 +940,7 @@ int32_t taosGetCpuInfo(char *cpuModel, int32_t maxLen, int32_t *numOfCores) {
|
|||
done |= 1;
|
||||
} else if (((done & 2) == 0) && strncmp(line, "cpu cores", 9) == 0) {
|
||||
const char *v = strchr(line, ':') + 2;
|
||||
*numOfCores = atoi(v);
|
||||
*numOfCores = atof(v);
|
||||
done |= 2;
|
||||
}
|
||||
}
|
||||
|
@ -952,28 +951,4 @@ int32_t taosGetCpuInfo(char *cpuModel, int32_t maxLen, int32_t *numOfCores) {
|
|||
return code;
|
||||
}
|
||||
|
||||
bool taosGetTotalSysMemoryKB(uint64_t *kb) {
|
||||
char *line = NULL;
|
||||
size_t size = 0;
|
||||
bool ret = false;
|
||||
|
||||
TdFilePtr pFile = taosOpenFile("/proc/meminfo", TD_FILE_READ | TD_FILE_STREAM);
|
||||
if (pFile == NULL) return false;
|
||||
|
||||
while ((size = taosGetLineFile(pFile, &line)) != -1) {
|
||||
line[size - 1] = '\0';
|
||||
if (strncmp(line, "MemTotal", 8) == 0) {
|
||||
const char *p = strchr(line, ':') + 1;
|
||||
while (*p == ' ') p++;
|
||||
ret = true;
|
||||
*kb = atoll(p);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (line != NULL) free(line);
|
||||
taosCloseFile(&pFile);
|
||||
return ret;
|
||||
}
|
||||
|
||||
#endif
|
||||
|
|
Loading…
Reference in New Issue