JNIEXPORT jobjectArray SIGAR_JNIx(getCpuInfoList) (JNIEnv *env, jobject sigar_obj) { int status; unsigned int i; sigar_cpu_info_list_t cpu_infos; jobjectArray cpuarray; jclass cls = SIGAR_FIND_CLASS("CpuInfo"); dSIGAR(NULL); if ((status = sigar_cpu_info_list_get(sigar, &cpu_infos)) != SIGAR_OK) { sigar_throw_error(env, jsigar, status); return NULL; } JAVA_SIGAR_INIT_FIELDS_CPUINFO(cls); cpuarray = JENV->NewObjectArray(env, cpu_infos.number, cls, 0); SIGAR_CHEX; for (i=0; i<cpu_infos.number; i++) { jobject info_obj = JENV->AllocObject(env, cls); SIGAR_CHEX; JAVA_SIGAR_SET_FIELDS_CPUINFO(cls, info_obj, cpu_infos.data[i]); JENV->SetObjectArrayElement(env, cpuarray, i, info_obj); SIGAR_CHEX; } sigar_cpu_info_list_destroy(sigar, &cpu_infos); return cpuarray; }
void test_cpu_info(void) { //int status, i; sigar_t *sigar; //sigar_cpu_list_t cpulist; sigar_open(&sigar); sigar_cpu_info_list_t cpu_info_list; sigar_cpu_info_list_get(sigar, &cpu_info_list); //sigar_cpu_info_t cpu_info = cup_info_list; printf("vendor......%s\n", cpu_info_list.data->vendor); printf("model......%s\n", cpu_info_list.data->model); printf("mhz......%d\n", cpu_info_list.data->mhz); printf("total cores......%d\n", cpu_info_list.data->total_cores); //printf("Vendor......%s\n", cpu_info->vendor); sigar_cpu_info_list_destroy(sigar, &cpu_info_list); sigar_cpu_t cpu_old; sigar_cpu_t cpu_cur; sigar_cpu_get(sigar, &cpu_old); sigar_cpu_perc_t perc; sleep(1); sigar_cpu_get(sigar, &cpu_cur); sigar_cpu_perc_calculate(&cpu_old, &cpu_cur, &perc); printf("user......%3.2f%%\n", perc.user * 100); printf("sys......%3.2f%%\n", perc.sys * 100); printf("wait......%3.2f%%\n", perc.wait * 100); printf("nice......%3.2f%%\n", perc.nice * 100); printf("irq time......%f\n", perc.irq); printf("total used rate......%3.2f%%\n", perc.combined * 100); printf("total idle rate......%3.2f%%\n", perc.idle * 100); cpu_old = cpu_cur; /* status = sigar_cpu_list_get(sigar, &cpulist); if (status != SIGAR_OK) { printf("cpu_list error: %d (%s)\n", status, sigar_strerror(sigar, status)); exit(1); } for (i=0; i<cpulist.number; i++) { sigar_cpu_t cpu = cpulist.data[i]; printf("cpu user: %ld, sys: %ld, nice: %ld, idle: %ld, wait: %ld, irq: %ld, soft_irq: %ld, stolen: %ld, total: %ld.\n", cpu.user, cpu.sys, cpu.nice, cpu.idle, cpu.wait, cpu.irq, cpu.soft_irq, cpu.stolen, cpu.total); } sigar_cpu_list_destroy(sigar, &cpulist); */ sigar_close(sigar); }
ulong CpuInfo::_runCommand() { sigar_t *s = NULL; if (sigar_open(&s) != SIGAR_OK) { return 0; } sigar_cpu_info_list_t cpuinfo; if (sigar_cpu_info_list_get(s, &cpuinfo) != SIGAR_OK) { sigar_close(s); return 0; } char line[MAX_BUF] = {0}; for (int i = 0; i < cpuinfo.number; ++i) { sigar_cpu_info_t *info = &cpuinfo.data[i]; sprintf(line, "CPU %d:\n", i+1); mMyStream<<line; #define CPU_FORMAT_STR(field) \ sprintf(line, "%16s: %s\n", #field, info->field); \ mMyStream<<line; \ #define CPU_FORMAT_INT(field) \ sprintf(line, "%16s: %d\n", #field, info->field); \ mMyStream<<line; \ #define CPU_FORMAT_INT64(field) \ sprintf(line, "%16s: %llu\n", #field, info->field); \ mMyStream<<line; \ CPU_FORMAT_STR(vendor); CPU_FORMAT_STR(model); CPU_FORMAT_INT(mhz); CPU_FORMAT_INT(mhz_max); CPU_FORMAT_INT(mhz_min); CPU_FORMAT_INT64(cache_size); CPU_FORMAT_INT(total_sockets); CPU_FORMAT_INT(total_cores); CPU_FORMAT_INT(cores_per_socket); mMyStream<<"\n"; } sigar_cpu_info_list_destroy(s, &cpuinfo); sigar_close(s); return 0; }
CPUInfo* cpu_info_create(char* client_id) { CPUInfo* info = (CPUInfo*)malloc(sizeof(CPUInfo)); if(NULL == info) return NULL; sigar_t* sigar; sigar_open(&sigar); sigar_cpu_info_list_t cpu_info_list; sigar_cpu_info_list_get(sigar, &cpu_info_list); info->sigar = sigar; info->cpu_info_list = &cpu_info_list; info->vendor = cpu_info_list.data->vendor; info->model = cpu_info_list.data->model; info->mhz = cpu_info_list.data->mhz; info->cores = cpu_info_list.data->total_cores; //设计json数据格式 cJSON* root; cJSON* clt; cJSON* body; root = cJSON_CreateObject(); cJSON_AddItemToObject(root, "cmd", cJSON_CreateString("cpu")); cJSON_AddItemToObject(root, "clt", clt = cJSON_CreateObject()); cJSON_AddStringToObject(clt, "clt_id", client_id); cJSON_AddItemToObject(root, "body", body = cJSON_CreateObject()); cJSON_AddStringToObject(body, "vendor", info->vendor); cJSON_AddStringToObject(body, "model", info->model); cJSON_AddNumberToObject(body, "mhz", info->mhz); cJSON_AddNumberToObject(body, "cores", info->cores); cJSON_AddNumberToObject(body, "user", 0); cJSON_AddNumberToObject(body, "sys", 0); cJSON_AddNumberToObject(body, "wait", 0); cJSON_AddNumberToObject(body, "nice", 0); cJSON_AddNumberToObject(body, "irq", 0); cJSON_AddNumberToObject(body, "combined", 0); cJSON_AddNumberToObject(body, "idle", 0); info->json = root; return info; }
static VALUE rb_sigar_cpu_info_list(VALUE obj) { int status; sigar_t *sigar = rb_sigar_get(obj); sigar_cpu_info_list_t cpu_infos; VALUE RETVAL; status = sigar_cpu_info_list_get(sigar, &cpu_infos); if (status != SIGAR_OK) { RB_SIGAR_CROAK; } RETVAL = rb_sigar_new_list((char *)&cpu_infos.data[0], cpu_infos.number, sizeof(*cpu_infos.data), rb_cSigarCpuInfo); sigar_cpu_info_list_destroy(sigar, &cpu_infos); return RETVAL; }
Cpu::Cpu() { int status, i; sigar_t *sigar; sigar_cpu_info_list_t cpulist; sigar_open(&sigar); status = sigar_cpu_info_list_get(sigar, &cpulist); if (status != SIGAR_OK) { printf("cpu_list error: %d (%s)\n", status, sigar_strerror(sigar, status)); exit(1); } /* for (i=0; i<cpulist.number; i++) { sigar_cpu_info_t cpu = cpulist.data[i]; cpus << cpu.vendor; cpus << cpu.model; cpus << cpu.mhz; cpus << cpu.cache_size; }*/ sigar_cpu_info_t cpu = cpulist.data[0]; vendor = cpu.vendor; model = cpu.model; mhz.setNum(cpu.mhz); cache_size.setNum(cpu.cache_size); number.setNum(cpulist.number); total_cores.setNum(cpu.total_cores); total_sockets.setNum(cpu.total_sockets); cores_per_socket.setNum(cpu.cores_per_socket); sigar_cpu_info_list_destroy(sigar, &cpulist); sigar_close(sigar); }