コード例 #1
0
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;
}
コード例 #2
0
ファイル: cpuinfo.c プロジェクト: gc87/ctools
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);
}
コード例 #3
0
ファイル: CpuInfo.cpp プロジェクト: ruleless/sysinfo
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;
}
コード例 #4
0
ファイル: cpuinfo.c プロジェクト: gc87/ctools
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;
}
コード例 #5
0
ファイル: rbsigar.c プロジェクト: mdkent/sigar
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;
}
コード例 #6
0
ファイル: core.cpp プロジェクト: fredix/geekast
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);
}