Esempio n. 1
0
def run_one_experiment(output_folder, exp_time_sec, lookupTrace, updateTrace):
    time1 = time.time()

    if os.path.exists(output_folder):
        print '***** QUITTING!!! Output folder already exists:', output_folder, '*******'
        sys.exit(2)

    #run mongo db
    #os.system('./kill_mongodb_pl.sh')
    #os.system('./run_mongodb_pl.sh')
    #os.system('sleep ' + str(exp_config.mongo_sleep))

    # copy config files to record experiment configuration
    os.system('mkdir -p ' + output_folder)

    #os.system(generate_config_script + ' ' +  str(exp_config.load))
    os.system(
        'cp local-name-server.py name-server.py exp_config.py nameActives ' +
        output_folder)

    generate_ec2_config_file(exp_config.load)

    os.system('date')
    # ./cpPl.sh
    os.system('./cpPl.sh ' + exp_config.config_folder)

    # ./cpWorkload.sh
    os.system('./cpWorkload.sh ' + lookupTrace + ' ' + updateTrace + '&')

    if exp_config.download_jar:
        os.system('./getJarS3.sh')
    # ./rmLog.sh
    os.system('./rmLog.sh ' + exp_config.paxos_log_folder + ' ' +
              exp_config.gns_output_logs + ' 1>/dev/null 2>/dev/null')

    # ./name-server.sh
    #os.system('./name-server.sh')
    run_all_ns(exp_config.gns_output_logs)

    #print 'NS running. sleep sleep ...'
    #exit(2)
    os.system('sleep ' + str(exp_config.ns_sleep))

    # ./local-name-server.sh
    #os.system('./local-name-server.sh')
    run_all_lns(exp_config.gns_output_logs, exp_config.num_ns)

    # this is the excess wait after experiment finishes
    excess_wait = exp_config.extra_wait

    print 'LNS running. Now wait for ', (exp_time_sec +
                                         excess_wait) / 60, 'min ...'

    # sleep for experiment_time
    if exp_time_sec == -1:
        return
    sleep_time = 0
    while sleep_time < exp_time_sec + excess_wait:
        os.system('sleep 10')
        sleep_time += 10
        if sleep_time % 60 == 0:
            print 'Time = ', sleep_time / 60, 'min /', (
                exp_time_sec + excess_wait) / 60, 'min'

    # ./endExperiment.sh output_folder
    print 'Ending experiment ..'
    os.system('./endExperiment.sh ' + output_folder + '  ' +
              exp_config.gns_output_logs)
    #os.system('./kill_mongodb_pl.sh')

    # ./parse_log.py output_folder
    #os.system('logparse/parse_log.py ' + output_folder)
    os.system(log_parse_script + ' ' + output_folder)

    time2 = time.time()

    diff = time2 - time1
    print 'TOTAL EXPERIMENT TIME:', int(diff / 60), 'minutes'
Esempio n. 2
0
def run_one_experiment(output_folder, exp_time_sec, lookupTrace, updateTrace):
    time1 = time.time()

    if os.path.exists(output_folder):
        os.system('rm -rf ' + output_folder)
        # print '***** QUITTING!!! Output folder already exists:', output_folder, '*******'
        # sys.exit(2)
    if output_folder.endswith('/'):
        output_folder = output_folder[:-1]
    # copy config files to record experiment configuration
    print 'Creating local output folder: ' + output_folder
    os.system('mkdir -p ' + output_folder)

    #os.system(generate_config_script + ' ' +  str(exp_config.load))
    # os.system('cp local-name-server.py name-server.py exp_config.py  ' + output_folder)

    # used for workload generation
    generate_multinode_config_file(exp_config.load)

    os.system('date')
    os.system('./killJava.sh ' + exp_config.user + ' ' + exp_config.ssh_key +
              ' ' + exp_config.ns_file + ' ' + exp_config.lns_file)
    os.system('./rmLog.sh ' + exp_config.user + ' ' + exp_config.ssh_key +
              ' ' + exp_config.ns_file + ' ' + exp_config.lns_file + ' ' +
              exp_config.paxos_log_folder + ' ' + exp_config.gns_output_logs)

    # ./cpPl.sh
    os.system('./cpPl.sh ' + exp_config.user + ' ' + exp_config.ssh_key + ' ' +
              exp_config.ns_file + ' ' + exp_config.lns_file + ' ' +
              exp_config.config_folder + ' ' + exp_config.gns_output_logs)  #

    # ./cpWorkload.sh
    os.system('./cpWorkload.sh ' + exp_config.user + ' ' + exp_config.ssh_key +
              ' ' + exp_config.lns_file + ' ' + exp_config.gns_output_logs +
              ' ' + lookupTrace + ' ' + updateTrace)

    #os.system('./cpNameActives.sh ' + name_actives_local  + ' ' + name_actives_remote  + ' ')

    if exp_config.copy_jar:
        remote_jar_folder = os.path.split(exp_config.jar_file_remote)[0]
        print remote_jar_folder
        os.system('./rmcpJar.sh ' + exp_config.user + ' ' +
                  exp_config.ssh_key + ' ' + exp_config.ns_file + ' ' +
                  exp_config.lns_file + ' ' + exp_config.jar_file + ' ' +
                  remote_jar_folder + ' ' + exp_config.jar_file_remote)
    elif exp_config.download_jar:
        # url of jar file is hardcoded
        # location of jar file is hard coded
        os.system('./getJarS3.sh ' + exp_config.user + ' ' +
                  exp_config.ssh_key + ' ' + exp_config.ns_file + ' ' +
                  exp_config.lns_file)

    #run mongo db
    if exp_config.run_db:
        os.system('./kill_mongodb_pl.sh ' + exp_config.user + ' ' +
                  exp_config.ssh_key + ' ' + exp_config.ns_file + ' ' +
                  exp_config.db_folder)
        os.system('./run_mongodb_pl.sh ' + exp_config.user + ' ' +
                  exp_config.ssh_key + ' ' + exp_config.ns_file + ' ' +
                  exp_config.mongo_bin + ' ' + exp_config.db_folder)
        os.system(
            'sleep ' +
            str(exp_config.mongo_sleep))  # ensures mongo is fully running
        print "Waiting for mongod process to start fully ..."
    elif exp_config.restore_db:
        os.system('./kill_mongodb_pl.sh ' + exp_config.user + ' ' +
                  exp_config.ssh_key + ' ' + exp_config.ns_file + ' ' +
                  exp_config.db_folder)
        os.system('./restore_backup.sh ' + exp_config.user + ' ' +
                  exp_config.ssh_key + ' ' + exp_config.ns_file + ' ' +
                  exp_config.db_folder_backup + ' ' + exp_config.db_folder)
        os.system('./run_mongodb_pl.sh ' + exp_config.user + ' ' +
                  exp_config.ssh_key + ' ' + exp_config.ns_file + ' ' +
                  exp_config.mongo_bin + ' ' + exp_config.db_folder)
        os.system(
            'sleep ' +
            str(exp_config.mongo_sleep))  # ensures mongo is fully running

    # ./name-server.sh
    #os.system('./name-server.sh')

    run_all_ns(exp_config.gns_output_logs)
    print 'Name servers running ...'
    try:
        #os.system('sleep ' + str(exp_config.ns_sleep))
        print 'Waiting for NS to load all records for ' + str(
            exp_config.ns_sleep) + 'sec ..'
        sleep_for_time(exp_config.ns_sleep)
    except:
        print 'NS sleep interrupted. Starting LNS ...'

    # ./local-name-server.sh
    run_all_lns(exp_config.gns_output_logs)

    # this is the excess wait after given duration of experiment
    excess_wait = exp_config.extra_wait

    print 'LNS running. Now wait for ', (exp_time_sec +
                                         excess_wait) / 60, 'min ...'

    # sleep for experiment_time
    if exp_time_sec == -1:
        return
    sleep_time = 0
    while sleep_time < exp_time_sec + excess_wait:
        os.system('sleep 60')
        sleep_time += 60
        if sleep_time % 60 == 0:
            print 'Time = ', sleep_time / 60, 'min /', (
                exp_time_sec + excess_wait) / 60, 'min'

    # ./endExperiment.sh output_folder
    print 'Ending experiment ..'
    os.system('./killJava.sh ' + exp_config.user + ' ' + exp_config.ssh_key +
              ' ' + exp_config.ns_file + ' ' + exp_config.lns_file)

    os.system('./getLog.sh ' + exp_config.user + ' ' + exp_config.ssh_key +
              ' ' + exp_config.ns_file + ' ' + exp_config.lns_file + ' ' +
              output_folder + '  ' + exp_config.gns_output_logs)

    # ./parse_log.py output_folder
    #os.system('logparse/parse_log.py ' + output_folder)
    stats_folder = output_folder + '_stats'
    if output_folder.endswith('/'):
        stats_folder = output_folder[:-1] + '_stats'
    parse_log(output_folder, stats_folder, False)

    time2 = time.time()

    diff = time2 - time1
    print 'TOTAL EXPERIMENT TIME:', int(diff / 60), 'minutes'
    sys.exit(2)
Esempio n. 3
0
def run_one_experiment(output_folder, exp_time_sec, lookupTrace, updateTrace):
    time1 = time.time()
    
    if os.path.exists(output_folder):
        print '***** QUITTING!!! Output folder already exists:', output_folder, '*******'
        sys.exit(2)
    if output_folder.endswith('/'):
        output_folder = output_folder[:-1]
    
    #run mongo db
    if exp_config.run_db:
        os.system('./kill_mongodb_pl.sh ' + exp_config.db_folder)
        os.system('./run_mongodb_pl.sh ' + exp_config.db_folder)    
        os.system('sleep ' + str(exp_config.mongo_sleep)) # ensures mongo is fully running 
    
    # copy config files to record experiment configuration
    os.system('mkdir -p ' + output_folder)
    
    #os.system(generate_config_script + ' ' +  str(exp_config.load))
    os.system('cp local-name-server.py name-server.py exp_config.py  ' + output_folder)
    
    #generate_ec2_config_file(exp_config.load)
    
    os.system('date')

    # ./cpPl.sh
    os.system('./cpPl.sh ' + exp_config.config_folder)
    
    # ./cpWorkload.sh
    #os.system('./cpWorkload.sh ' + lookupTrace + ' ' + updateTrace  + ' &')
    
    # ./cpNameActives.sh
    #name_actives_local = exp_config.name_actives_local # should be uncompressed filename
    #name_actives_remote = exp_config.name_actives_remote
    
    #if os.path.exists(name_actives_local): # if uncompressed version exists: compress it
    #    os.system('gzip -f ' + name_actives_local)
    #name_actives_local = exp_config.name_actives_local + '.gz' 
    #if not os.path.exists(name_actives_local):
    #    print 'Name actives does not exist:', name_actives_local
    #    sys.exit(2)
    
    #os.system('./cpNameActives.sh ' + name_actives_local  + ' ' + name_actives_remote  + ' ')
    #downloadNameActives()
    
    

    if exp_config.download_jar:
        os.system('./getJarS3.sh')
    # ./rmLog.sh
    os.system('./killJava.sh')
    os.system('./rmLog.sh ' +  exp_config.paxos_log_folder + ' ' + exp_config.gns_output_logs)# +' 1>/dev/null 2>/dev/null')
    
    # start cpu use monitoring
    os.system('./run_mpstat.sh ' + exp_config.hosts_ns_file + ' ' + exp_config.remote_cpu_folder)

    # ./name-server.sh
    #os.system('./name-server.sh')
    run_all_ns(exp_config.gns_output_logs)
    
    try:
        #os.system('sleep ' + str(exp_config.ns_sleep))
        print 'ns sleep is ... ' + str(exp_config.ns_sleep) + 'sec ..'
        sleep_for_time(exp_config.ns_sleep)
    except:
        print 'NS sleep interrupted. Starting LNS ...'
        sys.exit(2)
    print 'Name servers running ...'
    
    # ./local-name-server.sh
    #os.system('./local-name-server.sh')
    run_all_lns(exp_config.gns_output_logs, exp_config.num_ns)
    
    # this is the excess wait after given duration of experiment
    excess_wait = exp_config.extra_wait
    
    print 'LNS running. Now wait for ', (exp_time_sec + excess_wait)/60, 'min ...'
    
    # sleep for experiment_time
    if exp_time_sec == -1:
        return
    sleep_time = 0
    while sleep_time < exp_time_sec + excess_wait:
        os.system('sleep 10')
        sleep_time += 10
        if sleep_time % 60 == 0: print 'Time = ', sleep_time/60, 'min /', (exp_time_sec + excess_wait)/60, 'min'
    
    print 'Ending script machine still running. Copy data yourself.'
    
    sys.exit(2)
    # ./endExperiment.sh output_folder
    print 'Ending experiment ..'
    os.system('./endExperiment.sh ' + output_folder + '  ' + exp_config.gns_output_logs)

    # stop cpu use monitoring and copy cpu use data
    os.system('./kill_mpstat.sh ' + exp_config.hosts_ns_file + ' ' + exp_config.remote_cpu_folder + ' ' + exp_config.local_cpu_folder)

    #os.system('./kill_mongodb_pl.sh')
    
    # ./parse_log.py output_folder
    os.system('logparse/parse_log.py ' + output_folder)
    os.system(log_parse_script + ' ' + output_folder  + ' ' + output_folder + '_stats local')
    
    time2 = time.time()
    
    diff = time2 - time1
    print 'TOTAL EXPERIMENT TIME:', int(diff/60), 'minutes'
Esempio n. 4
0
def run_one_experiment(output_folder, exp_time_sec, lookupTrace, updateTrace):
    time1 = time.time()
    
    if os.path.exists(output_folder):
        print '***** QUITTING!!! Output folder already exists:', output_folder, '*******'
        sys.exit(2)
    
    #run mongo db
    #os.system('./kill_mongodb_pl.sh')
    #os.system('./run_mongodb_pl.sh')
    #os.system('sleep ' + str(exp_config.mongo_sleep))
    
    # copy config files to record experiment configuration
    os.system('mkdir -p ' + output_folder)
    
    #os.system(generate_config_script + ' ' +  str(exp_config.load))
    os.system('cp local-name-server.py name-server.py exp_config.py nameActives ' + output_folder)
    
    generate_ec2_config_file(exp_config.load)
    
    os.system('date')
    # ./cpPl.sh
    os.system('./cpPl.sh ' + exp_config.config_folder)
    
    # ./cpWorkload.sh
    os.system('./cpWorkload.sh ' + lookupTrace + ' ' + updateTrace  + '&')
    
    if exp_config.download_jar:
        os.system('./getJarS3.sh')
    # ./rmLog.sh
    os.system('./rmLog.sh ' +  exp_config.paxos_log_folder + ' ' + exp_config.gns_output_logs +' 1>/dev/null 2>/dev/null')
    
    # ./name-server.sh
    #os.system('./name-server.sh')
    run_all_ns(exp_config.gns_output_logs)

    #print 'NS running. sleep sleep ...'
    #exit(2)
    os.system('sleep ' + str(exp_config.ns_sleep))
    
    # ./local-name-server.sh
    #os.system('./local-name-server.sh')
    run_all_lns(exp_config.gns_output_logs, exp_config.num_ns)
    
    # this is the excess wait after experiment finishes
    excess_wait = exp_config.extra_wait
    
    print 'LNS running. Now wait for ', (exp_time_sec + excess_wait)/60, 'min ...'
    
    # sleep for experiment_time
    if exp_time_sec == -1:
        return
    sleep_time = 0
    while sleep_time < exp_time_sec + excess_wait:
        os.system('sleep 10')
        sleep_time += 10
        if sleep_time % 60 == 0: print 'Time = ', sleep_time/60, 'min /', (exp_time_sec + excess_wait)/60, 'min'
    
    # ./endExperiment.sh output_folder
    print 'Ending experiment ..'
    os.system('./endExperiment.sh ' + output_folder + '  ' + exp_config.gns_output_logs)
    #os.system('./kill_mongodb_pl.sh')
    
    # ./parse_log.py output_folder
    #os.system('logparse/parse_log.py ' + output_folder)
    os.system(log_parse_script + ' ' + output_folder)
    
    time2 = time.time()
    
    diff = time2 - time1
    print 'TOTAL EXPERIMENT TIME:', int(diff/60), 'minutes'
Esempio n. 5
0
def run_one_experiment(output_folder, exp_time_sec, lookupTrace, updateTrace):
    time1 = time.time()
    
    if os.path.exists(output_folder):
        os.system('rm -rf ' + output_folder)
        # print '***** QUITTING!!! Output folder already exists:', output_folder, '*******'
        # sys.exit(2)
    if output_folder.endswith('/'):
        output_folder = output_folder[:-1]
    # copy config files to record experiment configuration
    print 'Creating local output folder: ' + output_folder
    os.system('mkdir -p ' + output_folder)
    
    #os.system(generate_config_script + ' ' +  str(exp_config.load))
    # os.system('cp local-name-server.py name-server.py exp_config.py  ' + output_folder)

    # used for workload generation
    generate_multinode_config_file(exp_config.load)

    os.system('date')
    os.system('./killJava.sh ' + exp_config.user + ' ' + exp_config.ssh_key + ' ' + exp_config.ns_file  + ' ' + exp_config.lns_file)
    os.system('./rmLog.sh ' + exp_config.user + ' ' + exp_config.ssh_key + ' ' + exp_config.ns_file  + ' ' + exp_config.lns_file + ' ' +  exp_config.paxos_log_folder + ' ' + exp_config.gns_output_logs)


    # ./cpPl.sh
    os.system('./cpPl.sh ' + exp_config.user + ' ' + exp_config.ssh_key + ' ' + exp_config.ns_file  + ' ' + exp_config.lns_file + ' ' + exp_config.config_folder + ' ' + exp_config.gns_output_logs) #

    # ./cpWorkload.sh
    os.system('./cpWorkload.sh '+ exp_config.user + ' ' + exp_config.ssh_key + ' ' +  exp_config.lns_file + ' ' + exp_config.gns_output_logs + ' ' + lookupTrace + ' ' + updateTrace)

    #os.system('./cpNameActives.sh ' + name_actives_local  + ' ' + name_actives_remote  + ' ')

    if exp_config.copy_jar:
        remote_jar_folder = os.path.split(exp_config.jar_file_remote)[0]
        print remote_jar_folder
        os.system('./rmcpJar.sh ' + exp_config.user + ' ' + exp_config.ssh_key + ' ' + exp_config.ns_file  + ' ' + exp_config.lns_file + ' ' + exp_config.jar_file  + ' ' + remote_jar_folder  + ' ' + exp_config.jar_file_remote)
    elif exp_config.download_jar:
        # url of jar file is hardcoded
        # location of jar file is hard coded
        os.system('./getJarS3.sh ' + exp_config.user + ' ' + exp_config.ssh_key + ' ' + exp_config.ns_file  + ' ' + exp_config.lns_file)

    #run mongo db
    if exp_config.run_db:
        os.system('./kill_mongodb_pl.sh ' + exp_config.user + ' ' + exp_config.ssh_key + ' ' + exp_config.ns_file  + ' ' + exp_config.db_folder)
        os.system('./run_mongodb_pl.sh ' + exp_config.user + ' ' + exp_config.ssh_key + ' ' + exp_config.ns_file  + ' ' + exp_config.mongo_bin + ' ' + exp_config.db_folder)
        os.system('sleep ' + str(exp_config.mongo_sleep))  # ensures mongo is fully running
        print "Waiting for mongod process to start fully ..."
    elif exp_config.restore_db:
        os.system('./kill_mongodb_pl.sh ' + exp_config.user + ' ' + exp_config.ssh_key + ' ' + exp_config.ns_file  + ' ' + exp_config.db_folder)
        os.system('./restore_backup.sh '  + exp_config.user + ' ' + exp_config.ssh_key + ' ' + exp_config.ns_file + ' ' + exp_config.db_folder_backup + ' ' + exp_config.db_folder)
        os.system('./run_mongodb_pl.sh ' + exp_config.user + ' ' + exp_config.ssh_key + ' ' + exp_config.ns_file  + ' ' + exp_config.mongo_bin + ' ' + exp_config.db_folder)
        os.system('sleep ' + str(exp_config.mongo_sleep)) # ensures mongo is fully running

    # ./name-server.sh
    #os.system('./name-server.sh')

    run_all_ns(exp_config.gns_output_logs)
    print 'Name servers running ...'
    try:
        #os.system('sleep ' + str(exp_config.ns_sleep))
        print 'Waiting for NS to load all records for ' + str(exp_config.ns_sleep) + 'sec ..'
        sleep_for_time(exp_config.ns_sleep)
    except:
        print 'NS sleep interrupted. Starting LNS ...'

    # ./local-name-server.sh
    run_all_lns(exp_config.gns_output_logs)

    # this is the excess wait after given duration of experiment
    excess_wait = exp_config.extra_wait
    
    print 'LNS running. Now wait for ', (exp_time_sec + excess_wait)/60, 'min ...'
    
    # sleep for experiment_time
    if exp_time_sec == -1:
        return
    sleep_time = 0
    while sleep_time < exp_time_sec + excess_wait:
        os.system('sleep 60')
        sleep_time += 60
        if sleep_time % 60 == 0: print 'Time = ', sleep_time/60, 'min /', (exp_time_sec + excess_wait)/60, 'min'

    # ./endExperiment.sh output_folder
    print 'Ending experiment ..'
    os.system('./killJava.sh ' + exp_config.user + ' ' + exp_config.ssh_key + ' ' + exp_config.ns_file  + ' ' + exp_config.lns_file)

    os.system('./getLog.sh ' + exp_config.user + ' ' + exp_config.ssh_key + ' ' + exp_config.ns_file  + ' ' + exp_config.lns_file + ' ' + output_folder + '  ' + exp_config.gns_output_logs)

    # ./parse_log.py output_folder
    #os.system('logparse/parse_log.py ' + output_folder)
    stats_folder = output_folder + '_stats'
    if output_folder.endswith('/'):
        stats_folder = output_folder[:-1] + '_stats'
    parse_log(output_folder, stats_folder, False)

    time2 = time.time()
    
    diff = time2 - time1
    print 'TOTAL EXPERIMENT TIME:', int(diff/60), 'minutes'
    sys.exit(2)