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'
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)
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'
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'
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)