void ycsb_query::init(uint64_t thd_id, workload * h_wl, Query_thd * query_thd) { _query_thd = query_thd; requests = (ycsb_request *) mem_allocator.alloc(sizeof(ycsb_request) * g_req_per_query, thd_id); part_to_access = (uint64_t *) mem_allocator.alloc(sizeof(uint64_t) * g_part_per_txn, thd_id); zeta_2_theta = zeta(2, g_zipf_theta); assert(the_n != 0); assert(denom != 0); gen_requests(thd_id, h_wl); }
void ycsb_query::init(uint64_t thd_id, workload * h_wl) { // mrand = (myrand *) mem_allocator.alloc(sizeof(myrand), thd_id); // mrand->init(thd_id); // cout << g_req_per_query << endl; requests = (ycsb_request *) mem_allocator.alloc(sizeof(ycsb_request) * g_req_per_query, thd_id); part_to_access = (uint64_t *) mem_allocator.alloc(sizeof(uint64_t) * g_part_per_txn, thd_id); zeta_2_theta = zeta(2, g_zipf_theta); if (the_n == 0) { //uint64_t table_size = g_synth_table_size / g_part_cnt; uint64_t table_size = g_synth_table_size / g_virtual_part_cnt; the_n = table_size - 1; denom = zeta(the_n, g_zipf_theta); } gen_requests(thd_id, h_wl); }
int request_vcores_datacenter(provider *pv, int ndatacenter, event *ev){ int pattern=1; int res, size; float hv = 0.0; long f1 = 0; long f2 = 0; long ptotal = 0; long pmin = 0; application *app = NULL; app_frontend *app_fe; size = ev->sizel1 + ev->sizel2 + ev->sizel3; int *assigned_vcores = malloc(sizeof(int)*size); init_application(pv, &app, ev); switch(pv->datacenters[ndatacenter].allocation_policy){ case FF: res = request_vcores_network_ff(pv,ndatacenter,size,assigned_vcores, app->str.maxbw); break; case RR: res = request_vcores_network_rr(pv,ndatacenter,size,assigned_vcores, app->str.maxbw); break; default: panic("No policy selected"); } if(res == 1){ switch(pv->datacenters[ndatacenter].optimization_alg){ case NONE: allocate_vcores_network(pv, ndatacenter, size, assigned_vcores, app->id, app->str.maxbw); break; case NSGA2: case SPEA2: case HYPE: case SHV: hv = optimize(pv->datacenters[ndatacenter].optimization_alg, alpha, mu, lambda, dim, tournament, ngen, mtype, cotype, pmut, pmuttopo, pco, pcotopo, size, assigned_vcores, pv, ndatacenter, app); allocate_vcores_network(pv, ndatacenter, size, assigned_vcores, app->id, app->str.maxbw); break; default: panic("datacenter: no optimization algorithm"); } f1 = eval_cores_f1(assigned_vcores, size, pv->datacenters[ndatacenter].nw, app->str.bw); f2 = eval_cores_f2(assigned_vcores, size, pv->datacenters[ndatacenter].nw); ptotal = on_servers_total(pv->datacenters[ndatacenter].nw, assigned_vcores, size); pmin = eval_pmin_constrained(size, app->str.maxbw); f1_metric(pv, ndatacenter, f1); f2_metric(pv, ndatacenter, f2); ptotal_metric(pv, ndatacenter, ptotal); pmin_metric(pv, ndatacenter, pmin); hv_metric(pv, ndatacenter, hv); //write_opt(f1,f2,ptotal); change_assigned_cores(app, assigned_vcores); //printApplication(app); app_fe = add_app_lb(pv, app); change_app_fe(app, app_fe); allocate_application(pv, ndatacenter, app); if(ev->requests){ gen_requests(pv, app->id, app->type, app->etime, app_fe, app->rtime, pattern, app->maxreq, app->req_chunk,0,0); } num_applications_metric(pv, ndatacenter); } else{ free(assigned_vcores); rem_application(app); } return(res); }