def search_norm_xpercent_latency(arrival_rate, bandwidth, period, percentile, N): if (arrival_rate >= bandwidth): print "Unstable!" return -1 budget = period * bandwidth (x_bd, y_bd) = get_MDDS1_from_BDDS1(arrival_rate, 1.0, budget, period, N) i = 0 while (y_bd[i] < percentile): i = i + 1 x = x_bd[i - 1] + (x_bd[i] - x_bd[i - 1]) * (percentile - y_bd[i - 1]) / ( y_bd[i] - y_bd[i - 1]) print "P=[%f] W=[%f], [%2d-th] percentile latency [%f]" % ( period, bandwidth, int(100 * percentile), x) return x
# For paper 3.5x2.8 for PPT 5x4 figwidth = 3.5 figheight = 2.8 plt.figure(figsize=(figwidth, figheight)) # For paper: Enable plt.subplots_adjust(left=0.18, top=0.95, bottom=0.18) for i in range(0, 4): norm_lambda = arrival_rate * service_durs[i] norm_p = period / service_durs[i] norm_b = budget / service_durs[i] (x_bd, y_bd) = get_MDDS1_from_BDDS1(norm_lambda, 1.0, norm_b, norm_p, N) x_bd = x_bd * service_durs[i] x_bd = x_bd[0:int(x_lim * N)] y_bd = y_bd[0:int(x_lim * N)] plt.plot(x_bd, y_bd, linestyle=lstyles[i], color=colors[i], drawstyle='steps', clip_on=True, linewidth=2.0) #====================== Draw Figure ======================
N = 20 x_lim = 20.0 y_lim = 1.0 xy_lim = (x_lim, y_lim) # For paper 3.5x2.8 for PPT 5x4 figwidth = 3.5 figheight = 2.8 plt.figure(figsize=(figwidth, figheight)) # For paper: Enable plt.subplots_adjust(left=0.18,top=0.95, bottom=0.18) for i in range(0, 4): (x_bd, y_bd) = get_MDDS1_from_BDDS1(arrival_rates[i], 1.0, budget, period, N) x_bd = x_bd[0 : int(x_lim * N)] y_bd = y_bd[0 : int(x_lim * N)] plt.plot(x_bd, y_bd, linestyle=lstyles[i], color=colors[i], drawstyle='steps', clip_on=False, linewidth=2.0) #====================== Draw Figure ====================== #if (True == ISVARBANDWIDTH): # mytitle = "Numerical CDF: P=%.1f, %c=%.1f, %c=%.1f" % (period, u'\u03BB', arrival_rate, u'\u03BC', service_rate) #else: # mytitle = "Numerical CDF: W=%2d%%, %c=%.1f, %c=%.1f" % (int(bandwidth * 100), u'\u03BB', arrival_rate, u'\u03BC', service_rate) plt.xlabel('Normalized Response Time', fontsize = 12) plt.ylabel('Proportion', fontsize = 12)
service_rate = 1.0 period = period_real / service_dur_real budget = period * bandwidth GEN_NEW_DATA = False N = 60 runfile = 'redis_sort' x_lim = 20.0 y_lim = 1.0 xy_lim = (x_lim, y_lim) #================= M/D(DS)/1 Theoretical ================== (x_bd, y_bd) = get_MDDS1_from_BDDS1(arrival_rate, 1.0, budget, period, N) # x_bd = x_bd[0:int(x_lim * N)] y_bd = y_bd[0:int(x_lim * N)] #================= M/D(DS)/1 Theoretical ================== # Normalization service_dur_worst = 10.0 arrival_rate_2 = arrival_rate_real * service_dur_worst period_2 = period_real / service_dur_worst budget_2 = period_2 * bandwidth (x_bd2, y_bd2) = get_MDDS1_from_BDDS1(arrival_rate_2, 1.0, budget_2, period_2, N) x_bd2 = x_bd2[0:int(x_lim * N)] * service_dur_worst / service_dur_real y_bd2 = y_bd2[0:int(x_lim * N)]