コード例 #1
0
ファイル: sys_info.cpp プロジェクト: flyawayii/kbengine
//-------------------------------------------------------------------------------------
float SystemInfo::getCPUPer()
{
	sigar_cpu_t current;
	 
	if(_g_sigar_cpu == NULL)
		sigar_open(&_g_sigar_cpu);

	// sigar_cpu_get(_g_sigar_cpu, &_g_old_cpu);
	 
	sigar_cpu_perc_t perc;

	// while(1)
	{
		sigar_cpu_get(_g_sigar_cpu, &current);
		sigar_cpu_perc_calculate(&_g_old_cpu, &current, &perc);
	 
		// std::cout << "CPU " << perc.combined * 100 << "%\n";
		_g_old_cpu = current;
	//	sleep(1000);
	}
	 
	 
	float ret = float(perc.combined) * 100.f;
	//sigar_close(sigar_cpu);
	// DEBUG_MSG(fmt::format("SystemInfo::getCPUPer(): {}\n", ret));
	return ret;
}
コード例 #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
JNIEXPORT void SIGAR_JNI(CpuPerc_gather)
(JNIEnv *env, jobject jperc, jobject sigar_obj, jobject jprev, jobject jcurr)
{
    sigar_cpu_t prev, curr;
    sigar_cpu_perc_t perc;
    dSIGAR_VOID;

    JAVA_SIGAR_GET_FIELDS_CPU(jprev, prev);
    JAVA_SIGAR_GET_FIELDS_CPU(jcurr, curr);
    sigar_cpu_perc_calculate(&prev, &curr, &perc);
    JAVA_SIGAR_INIT_FIELDS_CPUPERC(JENV->GetObjectClass(env, jperc));
    JAVA_SIGAR_SET_FIELDS_CPUPERC(NULL, jperc, perc);
}
コード例 #4
0
ファイル: core.cpp プロジェクト: fredix/geekast
CpuStat::CpuStat()
{
    int status, i;
    sigar_t *sigar;
    sigar_cpu_t _prev_cpu, cpu;
    sigar_cpu_perc_t cpu_perc;

    sigar_open(&sigar);
    status = sigar_cpu_get(sigar, &_prev_cpu);

    if (status != SIGAR_OK) {
        printf("cpu stat error: %d (%s)\n",
               status, sigar_strerror(sigar, status));
        exit(1);
    }

    QTest::qSleep(1000);

    status = sigar_cpu_get(sigar, &cpu);

    if (status != SIGAR_OK) {
        printf("cpu stat error: %d (%s)\n",
               status, sigar_strerror(sigar, status));
        exit(1);
    }

    sigar_cpu_perc_calculate(&_prev_cpu, &cpu, &cpu_perc);



    user.setNum(cpu_perc.user * 100.);
    sys.setNum(cpu_perc.sys * 100.);
    nice.setNum(cpu_perc.nice * 100.);
    idle.setNum(cpu_perc.idle * 100.);
    wait.setNum(cpu_perc.wait * 100.);
    irq.setNum(cpu_perc.irq * 100.);
    soft_irq.setNum(cpu_perc.soft_irq * 100.);
    stolen.setNum(cpu_perc.stolen * 100.);
    combined.setNum(cpu_perc.combined * 100.);

    total.setNum(cpu.total);

    sigar_close(sigar);
}
コード例 #5
0
ファイル: cpuinfo.c プロジェクト: gc87/ctools
cJSON* cpu_info_get(CPUInfo* info) {
    sigar_cpu_t cpu_old;
    sigar_cpu_t cpu_cur;
    sigar_cpu_get(info->sigar, &cpu_old);
    sigar_cpu_perc_t perc;
    sleep(1);
    sigar_cpu_get(info->sigar, &cpu_cur);
    sigar_cpu_perc_calculate(&cpu_old, &cpu_cur, &perc);

    //填充json数据格式
    cJSON* body = cJSON_GetObjectItem(info->json, "body");
    cJSON_GetObjectItem(body, "user")->valuedouble = perc.user * 100;
    cJSON_GetObjectItem(body, "sys")->valuedouble = perc.sys * 100;
    cJSON_GetObjectItem(body, "wait")->valuedouble = perc.wait * 100;
    cJSON_GetObjectItem(body, "nice")->valuedouble = perc.nice * 100;
    cJSON_GetObjectItem(body, "irq")->valuedouble = perc.irq * 100;
    cJSON_GetObjectItem(body, "combined")->valuedouble = perc.combined * 100;
    cJSON_GetObjectItem(body, "idle")->valuedouble = perc.idle * 100;

    //char* ret = cJSON_Print(info->json);
    cpu_old = cpu_cur;
    return info->json;
}