Log In | Get Help   
Home My Page Projects Code Snippets Project Openings BonFIRE VCOC Demonstration Kit
Summary Activity SCM Files Wiki
[bonfiredemokit] View of /ea/submit_rand.py
[bonfiredemokit] / ea / submit_rand.py Repository:
ViewVC logotype

View of /ea/submit_rand.py

Parent Directory Parent Directory | Revision Log Revision Log


Revision 10 - (download) (as text) (annotate)
Fri Aug 31 10:40:38 2012 UTC (11 years, 9 months ago) by agomez
File size: 3862 byte(s)
Corrected minor error in license text
Powerpoint presentation to show how to use the software (also in PDF).
#
# 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 Framework 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))




root@forge.cesga.es
ViewVC Help
Powered by ViewVC 1.0.0  

Powered By FusionForge