int driver (int t_num) { int i, j; /* Actually, WaitTimes are needed... */ while( activate_transaction ){ switch(seq_get()){ case 0: do_neword(t_num); break; case 1: do_payment(t_num); break; case 2: do_ordstat(t_num); break; case 3: do_delivery(t_num); break; case 4: do_slev(t_num); break; default: printf("Error - Unknown sequence.\n"); } } return(0); }
int driver (int t_num) { int i, j; double current_seconds = 0; long current_transactions = 0; double current_tps = 0; struct timeval currentTV; /* Actually, WaitTimes are needed... */ while( activate_transaction ){ // tmc : add rate limiting if (t_num == 0) { gettimeofday(¤tTV, NULL); current_seconds = currentTV.tv_sec + (currentTV.tv_usec/1000000); if (current_seconds > (rate_last_seconds + transaction_interval)) { rate_last_seconds = current_seconds; rate_last_transactions = success[0]; } } // check current rate and tarpit if necessary gettimeofday(¤tTV, NULL); current_seconds = currentTV.tv_sec + (currentTV.tv_usec/1000000); current_transactions = success[0]; current_tps = ((current_transactions - rate_last_transactions) / (current_seconds - rate_last_seconds) * transaction_interval); // if (t_num == 1) // { // printf("thread %d : tps = %f\n",t_num,current_tps); // printf("thread %d : tps = %f : cur_secs = %f : last_secs = %f : cur_txn = %f : last_txn = %f\n",t_num,current_tps,current_seconds,rate_last_seconds,current_transactions,rate_last_transactions); // } while (current_tps > num_neword_per_10_sec) { usleep(100000); gettimeofday(¤tTV, NULL); current_seconds = currentTV.tv_sec + (currentTV.tv_usec/1000000); current_transactions = success[0]; current_tps = ((current_transactions - rate_last_transactions) / (current_seconds - rate_last_seconds) * transaction_interval); } switch(seq_get()){ case 0: do_neword(t_num); break; case 1: do_payment(t_num); break; case 2: do_ordstat(t_num); break; case 3: do_delivery(t_num); break; case 4: do_slev(t_num); break; default: printf("Error - Unknown sequence.\n"); } } return(0); }
int driver (int t_num) { int i, j; #ifdef OUT_PERIOD outputLog("d0|"); #endif /* Actually, WaitTimes are needed... */ while( activate_transaction ){ switch(seq_get()){ case 0: #ifdef OUT_PERIOD outputLog("d1|"); #endif do_neword(t_num); #ifdef OUT_PERIOD outputLog("d1e|"); #endif break; case 1: #ifdef OUT_PERIOD outputLog("d2|"); #endif do_payment(t_num); #ifdef OUT_PERIOD outputLog("d2e|"); #endif break; case 2: #ifdef OUT_PERIOD outputLog("d3|"); #endif do_ordstat(t_num); #ifdef OUT_PERIOD outputLog("d3e|"); #endif break; case 3: #ifdef OUT_PERIOD outputLog("d4|"); #endif do_delivery(t_num); #ifdef OUT_PERIOD outputLog("d4e|"); #endif break; case 4: #ifdef OUT_PERIOD outputLog("d5|"); #endif do_slev(t_num); #ifdef OUT_PERIOD outputLog("d5e|"); #endif break; default: #ifdef OUT_PERIOD outputLog("d6|"); #endif printf("Error - Unknown sequence.\n"); } } return(0); }