# # BonFIRE Virtual Clusters on Federated Clouds Demonstration Kit # # Copyright (c) Fundacion Centro Tecnologico de Supercomputacion de Galicia 2012 # # License GPL Version 3 # # The research leading to these results has received funding from # the European Community's Seventh Frameqork Programme (FP7/2007-2013) # under agreement number 257386 # # This software is provided with ABSOLUTELY NO WARRANTY # ''' Created on 03/01/2012 @author: R. Valin ''' import matplotlib.pyplot as plt import time #import os import random from exp.ea import experiment_type as expt from exp.ea import ea_bonfire as ea """############################################ #Generacion aleatoria de experimentos # ##############################################""" #Lectura de datos del histograma de envio # dire='/home/cesga/bonfire/workspace/Bonfire/exp/dis' print (dire + '/submit_time.csv') file1 = open(dire + '/submit_time_norm.csv', 'r') #Leemos ficheros estadisticas sub_prob = file1.readlines() file1.close() #Crea una lista con los valores que lee del fichero submit_prob = [] for a in sub_prob: submit_prob.append(float(a.split(',')[1])) #print(submit_prob) #Semilla para random si no pones nada en seed coge el tiempo del sistema random.seed() print len(sub_prob) #Prueba de que la lectura de datos es correcta #b=0 #for a in submit_prob: # b=b+a #print ('Prob total', b) #Asignacion del numero de trabajos cada media hora jobs = 0 i = 0 #Inicializa prob prob = 0 #Trabajos totales que quieres enviar total_jobs = 100 envio = [0 for x in range(len(submit_prob))] for a in range(total_jobs): #Probabilidad de envio en una hora dada prob_envio = random.random() #Con este algoritmo determinamos la hora (o el bin del histograma) while (prob < prob_envio and prob_envio > prob + submit_prob[i + 1]): i = i + 1 #print (i) prob = prob + submit_prob[i] #Vector de trabajos a enviar por hora if (i <= len(submit_prob)): envio[i] = envio[i] + 1 else: print('Me paso de indice') #print prob_envio, prob, prob+submit_prob[i+1] #Inicializamos variables para la siguiente iteracion i = 0 prob = submit_prob[0] #plt.bar(range(1,49), envio, 1) #plt.show() file2=open('sub.csv', 'w') for sub in envio: file2.write(str(sub)+'\n') file2.close() """################################################################ # Envio de experimentos # ###################################################################""" #Descripcion del trabajo en Json #exp={'description': 'Experiment description', # 'duration': 120, # 'name': 'My Experiment', # 'resources': [{'compute': {'name': 'JSON-COMPUTE-TEST', # 'description': 'A description of the compute.', # 'instanceType': 'small', # 'locations': ['fr-inria'], # 'resources':[{'storage': '@BonFIRE Debian Squeeze v3'},{'network':'@BonFIRE WAN'}]}}]} #Indicamos la lista de sites a la que queremos enviar, la duracion de los experimentos # y nos devuelve una lista con stings en json con la definicion del experimento #locations=['be-ibbt','fr-inria','uk-hplabs','uk-uedin'] #duration = 120 #locations = ['uk-uedin'] #exp, info_instance, info_storage, info_location = expt.json_exp(locations, duration) # #multi = 10 # #for i in exp: # print i # m=str(i) # for j in range(10): # save(locations) # location=info_location[m] # instance=info_instance[m] # store=info_storage[m] # ea.ea_bf(i,instance,store,location) #time.sleep(float(130))