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; }
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; }
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; }
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; }
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); }
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; }