示例#1
0
static void calc_ser_cds(struct module *mod, dbi_conn conn, int interval)
{
    int ct = 0, st = 0;
    dbi_result result = 0;
    ST_CDS *ps = NULL;
    ST_CDS *pe = NULL;
    long long rst = 0;

    ps = (ST_CDS *)mod->ser_array;
    pe = (ST_CDS *)mod->emp_array;

    st = 0;
    /* acquire ser uss stats */
    result = dbi_conn_queryf(conn, "select d_id from \"T_Device\" where d_type = 'mds' order by d_id");
    if (result) {
        while(dbi_result_next_row(result)) {
            ps[st].sdr_id = dbi_result_get_longlong(result, "d_id");
            convert_time_to_string(statis.cur_time, ps[st].sdr_record_time, 0);
            convert_time_to_string(statis.cur_time - 24*60*60, ps[st].sdr_time, 1);
            if (interval == 0) {
                ps[st].sdr_date_flag = 0;
            } else if (interval == 7) {
                ps[st].sdr_date_flag = 1;
            } else {
                ps[st].sdr_date_flag = 2;
            }
            st++;
        }
        dbi_result_free(result);
    }

    for (st = 0; st < mod->ser_record; st++)
    {
        result = dbi_conn_queryf(conn, "select e_id from \"T_Enterprise\" where \
                e_mds_id = %lld order by e_id ", ps[st].sdr_id);
        if (result) {
            while(dbi_result_next_row(result)) {
                rst = dbi_result_get_longlong(result, "e_id");
                for (ct = 0; ct < mod->emp_record; ct++) {
                    if (rst == pe[ct].sdr_id) {
                        ps[st].sdr_ptt_htime += pe[ct].sdr_ptt_htime;
                        ps[st].sdr_ptt_hcount += pe[ct].sdr_ptt_hcount;
                        ps[st].sdr_call_htime += pe[ct].sdr_call_htime;
                        ps[st].sdr_call_hcount += pe[ct].sdr_call_hcount;
                        ps[st].sdr_video_htime += pe[ct].sdr_video_htime;
                        ps[st].sdr_video_hcount += pe[ct].sdr_video_hcount;
                        ps[st].sdr_audio_htime += pe[ct].sdr_audio_htime;
                        ps[st].sdr_audio_hcount += pe[ct].sdr_audio_hcount;
                    }
                }
            }
            dbi_result_free(result);
        }
    }

    //log_cds_stats(ps, mod->ser_record);

    return;
}
示例#2
0
int main (void) {

	double delay_sec = 2;
	int delay_us = delay_sec*1000000;
	double num_steps = 10; // number of step inputs
	//double dur_sec = 60; // test duration	
	double pmax = 44;
	double pmin = 20;
    double step_height = (pmax-pmin)/num_steps;
	int i;
	struct timespec tv;
	char time_buffer[32];

	//open output file
	FILE	*fp = NULL; 
	fp=fopen("data/setpoint.csv", "w");

	for (i=0;i<num_steps+1;i++){
		fprintf(stdout, "p%.2f\n",pmin);
		clock_gettime(CLOCK_MONOTONIC, &tv);
		convert_time_to_string(tv, time_buffer);
		fprintf(fp, "%s,%.2f,\n",time_buffer,pmin);
		usleep(delay_us); 
		fprintf(stdout, "p%.2f\n",(double)i*step_height+pmin); 
		clock_gettime(CLOCK_MONOTONIC, &tv);
		convert_time_to_string(tv, time_buffer);
		fprintf(fp, "%s,%.2f,\n",time_buffer,(double)i*step_height+pmin);
		usleep(delay_us);
	}
	fprintf(stdout, "q\n"); 

	// close output file
    if (fp!=NULL)
        fclose(fp);

	return EXIT_SUCCESS;
}
示例#3
0
static void calc_amp_cds(struct module *mod, dbi_conn conn, int interval)
{
    int ct = 0, st = 0;
    dbi_result result = 0;
    ST_CDS *pa = NULL;
    ST_CDS *pe = NULL;
    long long rst = 0;
    
    logRecord( LOG_INFO, "%s(%d): cal amp, interval:%d", __FUNCTION__, __LINE__, interval );

    pa = (ST_CDS *)mod->amp_array;
    pe = (ST_CDS *)mod->emp_array;

    /* acquire omp uss stats */
    pa[0].sdr_id = 0;
    strncpy(pa[0].sdr_amp_id, "0", sizeof(pa[0].sdr_amp_id) - 1);
    convert_time_to_string(statis.cur_time, pa[ct].sdr_record_time, 0);
    convert_time_to_string(statis.cur_time - 24*60*60, pa[ct].sdr_time, 1);
    if (interval == 0) {
        pa[0].sdr_date_flag = 0;
    } else if (interval == 7) {
        pa[0].sdr_date_flag = 1;
    } else {
        pa[0].sdr_date_flag = 2;
    }
    for (ct = 0; ct < mod->emp_record; ct++)
    {
        pa[0].sdr_ptt_htime += pe[ct].sdr_ptt_htime;
        pa[0].sdr_ptt_hcount += pe[ct].sdr_ptt_hcount;
        pa[0].sdr_call_htime += pe[ct].sdr_call_htime;
        pa[0].sdr_call_hcount += pe[ct].sdr_call_hcount;
        pa[0].sdr_video_htime += pe[ct].sdr_video_htime;
        pa[0].sdr_video_hcount += pe[ct].sdr_video_hcount;
        pa[0].sdr_audio_htime += pe[ct].sdr_audio_htime;
        pa[0].sdr_audio_hcount += pe[ct].sdr_audio_hcount;
    }

    st = 1;
    /* acquire amp uss stats */
    result = dbi_conn_queryf(conn, "select ag_number from \"T_Agents\" order by ag_number");
    if (result) {
        while(dbi_result_next_row(result)) {
            //pa[st].sdr_id = atoll(dbi_result_get_string(result, "ag_number"));
            strncpy( pa[st].sdr_amp_id, dbi_result_get_string(result, "ag_number"), sizeof(pa[st].sdr_amp_id) - 1 );
            pa[st].sdr_amp_id[sizeof(pa[st].sdr_amp_id) - 1] = '\0';
            convert_time_to_string(statis.cur_time, pa[st].sdr_record_time, 0);
            convert_time_to_string(statis.cur_time - 24*60*60, pa[st].sdr_time, 1);
            if (interval == 0) {
                pa[st].sdr_date_flag = 0;
            } else if (interval == 7) {
                pa[st].sdr_date_flag = 1;
            } else {
                pa[st].sdr_date_flag = 2;
            }
            st++;
        }
        dbi_result_free(result);
    }

    for (st = 1; st < mod->amp_record; st++)
    {
        /*
        result = dbi_conn_queryf(conn, "select e_id from \"T_Enterprise\" where \
                e_ag_path like '%s%lld%s' order by e_id", "%", pa[st].sdr_id, "%");
                */
                
        result = dbi_conn_queryf(conn, "select e_id from \"T_Enterprise\" where \
                e_ag_path like '%s%s%s' order by e_id", "%", pa[st].sdr_amp_id, "%");
        if (result) {
            while(dbi_result_next_row(result)) {
                rst = dbi_result_get_longlong(result, "e_id");
                for (ct = 0; ct < mod->emp_record; ct++) {
                    if (rst == pe[ct].sdr_id) {
                        pa[st].sdr_ptt_htime += pe[ct].sdr_ptt_htime;
                        pa[st].sdr_ptt_hcount += pe[ct].sdr_ptt_hcount;
                        pa[st].sdr_call_htime += pe[ct].sdr_call_htime;
                        pa[st].sdr_call_hcount += pe[ct].sdr_call_hcount;
                        pa[st].sdr_video_htime += pe[ct].sdr_video_htime;
                        pa[st].sdr_video_hcount += pe[ct].sdr_video_hcount;
                        pa[st].sdr_audio_htime += pe[ct].sdr_audio_htime;
                        pa[st].sdr_audio_hcount += pe[ct].sdr_audio_hcount;

                        break;
                    }
                }
            }
            dbi_result_free(result);
        }
    }

    //log_cds_stats(pa, mod->amp_record);

    return;
}
示例#4
0
static void calc_emp_cds_stats(struct module *mod, dbi_conn conn)
{
    int ct = 0;
    char dev_ip[LEN_32];
    char dev_port[LEN_32];
    dbi_result result = 0;
    ST_CDS *pe = NULL;
    tDBConn *pconn = NULL;

    pe = (ST_CDS *)mod->emp_array;

    /* acquire every enterprise id */
    result = dbi_conn_queryf(conn, "select e_id from \"T_Enterprise\" order by e_id");
    if (result) {
        while(dbi_result_next_row(result)) {
            pe[ct].sdr_id = dbi_result_get_longlong(result, "e_id");
            convert_time_to_string(statis.cur_time, pe[ct].sdr_record_time, 0);
            convert_time_to_string(statis.cur_time - 24*60*60, pe[ct].sdr_time, 1);
            pe[ct].sdr_date_flag = 0;
            ct++;
        }
        dbi_result_free(result);
    }

    for (ct = 0; ct < mod->emp_record; ct++)
    {
        long long sdr_id = pe[ct].sdr_id;

        result = dbi_conn_queryf(conn, "select d_ip2 from \"T_Device\" where d_id = \
                (select e_ss_id from \"T_Enterprise\" where e_id = %lld);", sdr_id);
        if (result) {
            while (dbi_result_next_row(result)) {
                memset(dev_ip, '\0', LEN_32);
                memset(dev_port, '\0', LEN_32);
                strcpy(dev_ip, dbi_result_get_string(result, "d_ip2"));
                strcpy(dev_port, "5432");
            }
            dbi_result_free(result);
        }

        if ((pconn = attach_conn(SSDB, dev_ip, dev_port)) == NULL)
        {
            logRecord(LOG_ERR, "%s(%d): failed to get db conn\n", __FUNCTION__, __LINE__);
            continue;
        }

        pe[ct].sdr_ptt_htime = dbi_query_long(pconn->conn, "sum", "select sum(callsec) from \
                \"cdr_%lld\" where endtime < %lld and (call_type = 3 or call_type = 4);",
                sdr_id, statis.cur_time);
        pe[ct].sdr_ptt_hcount = dbi_query_long(pconn->conn, "count", "select count(*) from \
                \"cdr_%lld\" where endtime < %lld and (call_type = 3 or call_type = 4);",
                sdr_id, statis.cur_time);
        pe[ct].sdr_call_htime = 2 * dbi_query_long(pconn->conn, "sum", "select sum(callsec) from \
                \"cdr_%lld\" where endtime < %lld and (call_type = 1 or call_type = 2);",
                sdr_id, statis.cur_time);
        pe[ct].sdr_call_hcount = 2 * dbi_query_long(pconn->conn, "count", "select count(*) from \
                \"cdr_%lld\" where endtime < %lld and (call_type = 1 or call_type = 2);",
                sdr_id, statis.cur_time);
        pe[ct].sdr_video_htime = 2 * dbi_query_long(pconn->conn, "sum", "select sum(callsec) from \
                \"cdr_%lld\" where endtime < %lld and call_type = 2;",
                sdr_id, statis.cur_time);
        pe[ct].sdr_video_hcount = 2 * dbi_query_long(pconn->conn, "count", "select count(*) from \
                \"cdr_%lld\" where endtime < %lld and call_type = 2",
                sdr_id, statis.cur_time);
        pe[ct].sdr_audio_htime = 2 * dbi_query_long(pconn->conn, "sum", "select sum(callsec) from \
                \"cdr_%lld\" where endtime < %lld and call_type = 1;",
                sdr_id, statis.cur_time);
        pe[ct].sdr_audio_hcount = 2 * dbi_query_long(pconn->conn, "count", "select count(*) from \
                \"cdr_%lld\" where endtime < %lld and call_type = 1;",
                sdr_id, statis.cur_time);

        detach_conn(pconn);

    }

    //log_cds_stats(pe, mod->emp_record);

    return;
}
示例#5
0
void
do_print_energy_info()
{
    int i = 0;
    int domain = 0;
    uint64_t node = 0;
    double new_sample;
    double delta;
    double power;

    double prev_sample[num_node][RAPL_NR_DOMAIN];
    double power_watt[num_node][RAPL_NR_DOMAIN];
    double cum_energy_J[num_node][RAPL_NR_DOMAIN];
    double cum_energy_mWh[num_node][RAPL_NR_DOMAIN];

    char time_buffer[32];
    struct timeval tv;
    int msec;
    uint64_t tsc;
    uint64_t freq;
    double start, end, interval_start;
    double total_elapsed_time;
    double interval_elapsed_time;

    /* don't buffer if piped */
    setbuf(stdout, NULL);

    /* Print header */
    fprintf(stdout, "System Time,RDTSC,Elapsed Time (sec),");
    for (i = node; i < num_node; i++) {
        fprintf(stdout, "IA Frequency_%d (MHz),",i);
        if(is_supported_domain(RAPL_PKG))
            fprintf(stdout,"Processor Power_%d (Watt),Cumulative Processor Energy_%d (Joules),Cumulative Processor Energy_%d (mWh),", i,i,i);
        if(is_supported_domain(RAPL_PP0))
            fprintf(stdout, "IA Power_%d (Watt),Cumulative IA Energy_%d (Joules),Cumulative IA Energy_%d(mWh),", i,i,i);
        if(is_supported_domain(RAPL_PP1))
            fprintf(stdout, "GT Power_%d (Watt),Cumulative GT Energy_%d (Joules),Cumulative GT Energy_%d(mWh)", i,i,i);
        if(is_supported_domain(RAPL_DRAM))
            fprintf(stdout, "DRAM Power_%d (Watt),Cumulative DRAM Energy_%d (Joules),Cumulative DRAM Energy_%d(mWh),", i,i,i);
    }
    fprintf(stdout, "\n");

    /* Read initial values */
    for (i = node; i < num_node; i++) {
        for (domain = 0; domain < RAPL_NR_DOMAIN; ++domain) {
            if(is_supported_domain(domain)) {
                prev_sample[i][domain] = get_rapl_energy_info(domain, i);
            }
        }
    }

    gettimeofday(&tv, NULL);
    start = convert_time_to_sec(tv);
    end = start;

    /* Begin sampling */
    while (1) {

        usleep(delay_us);

        gettimeofday(&tv, NULL);
        interval_start = convert_time_to_sec(tv);
        interval_elapsed_time = interval_start - end;

        for (i = node; i < num_node; i++) {
            for (domain = 0; domain < RAPL_NR_DOMAIN; ++domain) {
                if(is_supported_domain(domain)) {
                    new_sample = get_rapl_energy_info(domain, i);
                    delta = new_sample - prev_sample[i][domain];

                    /* Handle wraparound */
                    if (delta < 0) {
                        delta += MAX_ENERGY_STATUS_JOULES;
                    }

                    prev_sample[i][domain] = new_sample;

                    // Use the computed elapsed time between samples (and not
                    // just the sleep delay, in order to more accourately account for
                    // the delay between samples
                    power_watt[i][domain] = delta / interval_elapsed_time;
                    cum_energy_J[i][domain] += delta;
                    cum_energy_mWh[i][domain] = cum_energy_J[i][domain] / 3.6; // mWh
                }
            }
        }

        gettimeofday(&tv, NULL);
        end = convert_time_to_sec(tv);
        total_elapsed_time = end - start;
        convert_time_to_string(tv, time_buffer);

        read_tsc(&tsc);
        fprintf(stdout,"%s,%lu,%.4lf,", time_buffer, tsc, total_elapsed_time);
        for (i = node; i < num_node; i++) {
            get_pp0_freq_mhz(i, &freq);
            fprintf(stdout, "%lu,", freq);
            for (domain = 0; domain < RAPL_NR_DOMAIN; ++domain) {
                if(is_supported_domain(domain)) {
                    fprintf(stdout, "%.4lf,%.4lf,%.4lf,",
                            power_watt[i][domain], cum_energy_J[i][domain], cum_energy_mWh[i][domain]);
                }
            }
        }
        fprintf(stdout, "\n");

        // check to see if we are done
        if(total_elapsed_time >= duration)
            break;
    }

    end = clock();

    /* Print summary */
    fprintf(stdout, "\nTotal Elapsed Time(sec)=%.4lf\n\n", total_elapsed_time);
    for (i = node; i < num_node; i++) {
        if(is_supported_domain(RAPL_PKG)){
            fprintf(stdout, "Total Processor Energy_%d(Joules)=%.4lf\n", i, cum_energy_J[i][RAPL_PKG]);
            fprintf(stdout, "Total Processor Energy_%d(mWh)=%.4lf\n", i, cum_energy_mWh[i][RAPL_PKG]);
            fprintf(stdout, "Average Processor Power_%d(Watt)=%.4lf\n\n", i, cum_energy_J[i][RAPL_PKG]/total_elapsed_time);
        }
        if(is_supported_domain(RAPL_PP0)){
            fprintf(stdout, "Total IA Energy_%d(Joules)=%.4lf\n", i, cum_energy_J[i][RAPL_PP0]);
            fprintf(stdout, "Total IA Energy_%d(mWh)=%.4lf\n", i, cum_energy_mWh[i][RAPL_PP0]);
            fprintf(stdout, "Average IA Power_%d(Watt)=%.4lf\n\n", i, cum_energy_J[i][RAPL_PP0]/total_elapsed_time);
        }
        if(is_supported_domain(RAPL_PP1)){
            fprintf(stdout, "Total GT Energy_%d(Joules)=%.4lf\n", i, cum_energy_J[i][RAPL_PP1]);
            fprintf(stdout, "Total GT Energy_%d(mWh)=%.4lf\n", i, cum_energy_mWh[i][RAPL_PP1]);
            fprintf(stdout, "Average GT Power_%d(Watt)=%.4lf\n\n", i, cum_energy_J[i][RAPL_PP1]/total_elapsed_time);
        }
        if(is_supported_domain(RAPL_DRAM)){
            fprintf(stdout, "Total DRAM Energy_%d(Joules)=%.4lf\n", i, cum_energy_J[i][RAPL_DRAM]);
            fprintf(stdout, "Total DRAM Energy_%d(mWh)=%.4lf\n", i, cum_energy_mWh[i][RAPL_DRAM]);
            fprintf(stdout, "Average DRAM Power_%d(Watt)=%.4lf\n\n", i, cum_energy_J[i][RAPL_DRAM]/total_elapsed_time);
        }
    }
    read_tsc(&tsc);
    fprintf(stdout,"TSC=%lu\n", tsc);
}
示例#6
0
static void calc_emp_uas_stats(struct module *mod, dbi_conn conn)
{
    int ct = 0;
    char dev_ip[LEN_32];
    char dev_port[LEN_32];
    dbi_result result = 0;
    ST_UAS *pe = NULL;
    tDBConn *pconn = NULL;
    int     user_status = -1;

    pe = (ST_UAS *)mod->emp_array;

    /* acquire every enterprise id */
    result = dbi_conn_queryf(conn, "select u_number, u_e_id from \"T_User\" order by u_e_id");
    if (result) {
        while(dbi_result_next_row(result)) {
            pe[ct].sdr_num = atoll(dbi_result_get_string(result, "u_number"));
            pe[ct].sdr_id = dbi_result_get_longlong(result, "u_e_id");
            convert_time_to_string(statis.cur_time - 24*60*60, pe[ct].sdr_time, 1);
            ct++;
        }
        dbi_result_free(result);
    }

    logRecord(LOG_INFO, "%s(%d) uas start cal...", __FUNCTION__, __LINE__ );
    for (ct = 0; ct < mod->emp_record; ct++)
    {
        long long sdr_id = pe[ct].sdr_id;
        long long sdr_num = pe[ct].sdr_num;

        result = dbi_conn_queryf(conn, "select d_ip2 from \"T_Device\" where d_id = \
                (select e_ss_id from \"T_Enterprise\" where e_id = %lld);", sdr_id);
        if (result) {
            while (dbi_result_next_row(result)) {
                memset(dev_ip, '\0', LEN_32);
                memset(dev_port, '\0', LEN_32);
                strcpy(dev_ip, dbi_result_get_string(result, "d_ip2"));
                strcpy(dev_port, "5432");
            }
            dbi_result_free(result);
        }

        if ((pconn = attach_conn(SSDB, dev_ip, dev_port)) == NULL)
        {
            logRecord(LOG_ERR, "%s(%d): failed to get SSdb conn, ssip(%s)-ssport(%s).\n", \
                __FUNCTION__, __LINE__, dev_ip, dev_port );
            continue;
        }

        pe[ct].sdr_online_times = dbi_query_long(pconn->conn, "count", "select count(*) \
                from \"loginrecord_%lld\" where time between '%lld' and '%lld' \
                and type = 1 and number = '%lld';",
                sdr_id, (statis.cur_time-24*60*60), statis.cur_time, sdr_num);

        pe[ct].sdr_offline_times = dbi_query_long(pconn->conn, "count", "select count(*) \
                from \"loginrecord_%lld\" where time between '%lld' and '%lld' \
                and type = 2 and number = '%lld';",
                sdr_id, (statis.cur_time-24*60*60), statis.cur_time, sdr_num);

        /*
        if (pe[ct].sdr_online_times != 0 || pe[ct].sdr_offline_times != 0)
            pe[ct].sdr_active_flag = 1;
        */
        if ( (pe[ct].sdr_online_times > 0) || (pe[ct].sdr_offline_times > 0) )
        {
            pe[ct].sdr_active_flag = 1;
        }
        else
        {
            /* not find yesterday user status, 
            * need look up user last status in loginrecord_e_id, 
            */
            user_status = dbi_query_long( pconn->conn, "type", "select type \
                from \"loginrecord_%lld\" where number='%lld' order by time desc limit 1;", \
                sdr_id, sdr_num );
            if ( user_status == USER_ONLINE )
            {
                pe[ct].sdr_active_flag = USER_STATUS_ACTIVITY;
            }
            else if ( user_status == USER_OFFLINE )
            {
                pe[ct].sdr_active_flag = USER_STATUS_INACTIVITY;
            }
            else
            {
                pe[ct].sdr_active_flag = USER_STATUS_INACTIVITY;
            }
        }

        detach_conn(pconn);
    }
    logRecord(LOG_INFO, "%s(%d) uas end cal...", __FUNCTION__, __LINE__ );


    //log_uas_stats(pe, mod->emp_record);

    return;
}