예제 #1
0
def updateQoE(srv_ip, qoe, alpha=0.1, window=6):
	## Revision by chenw-2015-0317, read QoE updated to overlay not the previous sample.
	# last_qoe = QoE.objects.filter(srv=srv).order_by('-time')[0]
	# print('Last qoe value for server ', srv, ' is ', last_qoe.qoe)
	# previous_qoe = float(last_qoe.qoe)
	srv_obj = Server.objects.filter(ip=srv_ip)[0]
	srv_name = srv_obj.name
	new_qoe_obj = QoE(qoe=qoe, srv=srv_name)
	new_qoe_obj.save()
	print('New qoe is ', qoe)
	
	## Get the server's previous exp_sqs and update exp_sqs
	# srv_id = int(re.findall(r'\d+', srv)[0])
	# srv_obj = Server.objects.filter(ip=srv)[0]
	previous_exp_sqs= float(srv_obj.exp_sqs)
	exp_sqs = (1 - alpha) * previous_exp_sqs + alpha * qoe

	## Get the server's ave_sqs for server, srv
	latest_qoes = QoE.objects.filter(srv=srv_name).order_by('-id')[:window]
	qoe_num = latest_qoes.count()
	total_qoe = 0.0
	for qoe_obj in latest_qoes:
		total_qoe = total_qoe + float(qoe_obj.qoe)
	ave_sqs = total_qoe / float(qoe_num)

	update_overlay_qoe(srv_name, exp_sqs, ave_sqs)
예제 #2
0
def initializeQoE():
	existingQoE = QoE.objects.all()
	if existingQoE.count() > 0:
		existingQoE.delete()
	srvs = Server.objects.all()
	for s in srvs:
		print("Initialize QoE for server", s.name)
		if s.isLocal:
			q = 5.0
		else:
			q = 4.0
		cur_qoe = QoE(qoe=q, srv=s.name)
		cur_qoe.save()
		s.qoe = q
		s.save()