Example #1
0
def output_stats_by_name(all_tuples_filename):

    value_index = 4
    name_index = 0  # 0 = name, 1 = lns, 2 = ns

    # this option removes names for which there is a failed read request

    folder = dirname(all_tuples_filename)

    exclude_failed_reads = True
    if exclude_failed_reads:
        failed_reads_names = select_failed_reads_names(all_tuples_filename)
        write_array(failed_reads_names.keys(), os.path.join(folder, 'failed_reads_names.txt'))
        all_tuples_filename = write_all_tuples_excluding_failed(all_tuples_filename, failed_reads_names)

    outfile1 = os.path.join(folder, 'all_by_name.txt')
    output_tuples1 = group_by(all_tuples_filename, name_index, value_index)
    write_tuple_array(output_tuples1, outfile1, p = True)
    
    outfile2 =os.path.join(folder, 'writes_by_name.txt')
    output_tuples2 = group_by(all_tuples_filename, name_index, value_index, filter = write_filter)
    write_tuple_array(output_tuples2, outfile2, p = True)
    
    outfile3 = os.path.join(folder, 'reads_by_name.txt')
    output_tuples3 = group_by(all_tuples_filename, name_index, value_index, filter = read_filter)
    write_tuple_array(output_tuples3, outfile3, p = True)
    
    filenames = [outfile1, outfile2, outfile3]
    schemes = ['ALL', 'WRITES', 'READS']
    template_file = os.path.join(script_folder, 'template1.gpt')
    
    col_no = 4
    pdf_filename = os.path.join(folder, 'median_by_name.pdf')
    get_cdf_and_plot(filenames, schemes, [col_no]*len(schemes), pdf_filename, folder, template_file)
    
    col_no = 5
    pdf_filename = os.path.join(folder, 'mean_by_name.pdf')
    get_cdf_and_plot(filenames, schemes, [col_no]*len(schemes), pdf_filename, folder, template_file)
    
    # output key stats
    read_median_list = [t[4] for t in output_tuples3]
    read_mean_list = [t[5] for t in output_tuples3]
    write_median_list = [t[4] for t in output_tuples2]
    write_mean_list = [t[5] for t in output_tuples2]

    # delete this.
    #read_median_list2 = []
    #for v in read_median_list:
    #    if v <5000:
    #        read_median_list2.append(v)
    
    kv_tuples = []
    kv_tuples.extend(get_stat_in_tuples(read_median_list, 'read_median_names'))
    kv_tuples.extend(get_stat_in_tuples(read_mean_list, 'read_mean_names')) 
    kv_tuples.extend(get_stat_in_tuples(write_median_list, 'write_median_names'))
    kv_tuples.extend(get_stat_in_tuples(write_mean_list, 'write_mean_names'))
    
    outputfile = os.path.join(folder, 'latency_stats_names.txt')
    write_tuple_array(kv_tuples, outputfile, p = True)
    os.system('cat ' + outputfile)
Example #2
0
def output_active_counts(log_file_dir, output_dir, replication_round):
    active_count_all = get_active_count_all(log_file_dir, output_dir,
                                            replication_round)
    output_file = os.path.join(output_dir, 'active_counts' + \
                               str(replication_round) + '.txt')
    output_tuples = []
    for k in sorted(active_count_all.keys()):
        v = active_count_all[k]

        #print 'Name:', str(k), '\tActives: ',v[0], '\tNumberReplica', v[1]
        output_tuples.append([k, int(v[0]), v[1]])
    write_tuple_array(output_tuples, output_file, p=True)

    # plot CDF
    #filename = os.path.join(output_dir, 'active_counts_cdf' + \
    #                            str(replication_round) + '.txt')
    #get_cdf_and_plot([filename],['ACTIVE-CDF'], col_nos, pdf_filename, output_dir, template_file)

    namecount = len(active_count_all.keys())
    replicacount = get_replica_count(active_count_all)
    avg_replica = 0
    if namecount > 0:
        avg_replica = replicacount * 1.0 / namecount
    output_tuples = []
    output_tuples.append(['Number-names', namecount])
    output_tuples.append(['Number-actives', replicacount])
    output_tuples.append(['Average-actives', avg_replica])
    output_file = os.path.join(output_dir, 'avg_replica_count' + \
                           str(replication_round) + '.txt')
    write_tuple_array(output_tuples, output_file, p=True)
    print 'Number of Names:', namecount
    print 'Number of Active Replicas:', replicacount
    print 'Average Number of Active Replicas:', avg_replica

    # CDF of active replicas
    output_file = os.path.join(
        output_dir, 'active_counts' + str(replication_round) + '.txt')
    os.system('wc -l ' + output_file)
    pdf_filename = os.path.join(
        output_dir, 'replica_cdf' + str(replication_round) + '.pdf')
    template_file = '/home/abhigyan/gnrs/gpt_files/template2.gpt'
    get_cdf_and_plot([output_file], ['Average-replica'], [1], pdf_filename,
                     output_dir, template_file)
def output_active_counts(log_file_dir, output_dir, replication_round):
    active_count_all = get_active_count_all(log_file_dir, output_dir, replication_round)
    output_file = os.path.join(output_dir, 'active_counts' + \
                               str(replication_round) + '.txt')
    output_tuples = []
    for k in sorted(active_count_all.keys()):
        v = active_count_all[k]
        
        #print 'Name:', str(k), '\tActives: ',v[0], '\tNumberReplica', v[1]
        output_tuples.append([k, int(v[0]), v[1]])
    write_tuple_array(output_tuples, output_file, p = True)
    
    # plot CDF
    #filename = os.path.join(output_dir, 'active_counts_cdf' + \
    #                            str(replication_round) + '.txt')
    #get_cdf_and_plot([filename],['ACTIVE-CDF'], col_nos, pdf_filename, output_dir, template_file)
    
    namecount = len(active_count_all.keys())
    replicacount = get_replica_count(active_count_all)
    avg_replica = 0
    if namecount > 0:
        avg_replica = replicacount*1.0/namecount
    output_tuples = []    
    output_tuples.append(['Number-names', namecount])
    output_tuples.append(['Number-actives', replicacount])
    output_tuples.append(['Average-actives', avg_replica])
    output_file = os.path.join(output_dir, 'avg_replica_count' + \
                           str(replication_round) + '.txt')
    write_tuple_array(output_tuples, output_file, p = True)
    print 'Number of Names:', namecount
    print 'Number of Active Replicas:', replicacount
    print 'Average Number of Active Replicas:', avg_replica
    
    # CDF of active replicas
    output_file = os.path.join(output_dir, 'active_counts' + str(replication_round) + '.txt')
    os.system('wc -l ' + output_file)
    pdf_filename = os.path.join(output_dir, 'replica_cdf' + str(replication_round) + '.pdf')
    template_file  = '/home/abhigyan/gnrs/gpt_files/template2.gpt'
    get_cdf_and_plot([output_file], ['Average-replica'], [1], pdf_filename, output_dir, template_file)
Example #4
0
def output_stats_by_name(all_tuples_filename):

    value_index = 4
    name_index = 0  # 0 = name, 1 = lns, 2 = ns

    # this option removes names for which there is a failed read request

    folder = dirname(all_tuples_filename)

    exclude_failed_reads = True
    if exclude_failed_reads:
        failed_reads_names = select_failed_reads_names(all_tuples_filename)
        write_array(failed_reads_names.keys(),
                    os.path.join(folder, 'failed_reads_names.txt'))
        all_tuples_filename = write_all_tuples_excluding_failed(
            all_tuples_filename, failed_reads_names)

    outfile1 = os.path.join(folder, 'all_by_name.txt')
    output_tuples1 = group_by(all_tuples_filename, name_index, value_index)
    write_tuple_array(output_tuples1, outfile1, p=True)

    outfile2 = os.path.join(folder, 'writes_by_name.txt')
    output_tuples2 = group_by(all_tuples_filename,
                              name_index,
                              value_index,
                              filter=write_filter)
    write_tuple_array(output_tuples2, outfile2, p=True)

    outfile3 = os.path.join(folder, 'reads_by_name.txt')
    output_tuples3 = group_by(all_tuples_filename,
                              name_index,
                              value_index,
                              filter=read_filter)
    write_tuple_array(output_tuples3, outfile3, p=True)

    filenames = [outfile1, outfile2, outfile3]
    schemes = ['ALL', 'WRITES', 'READS']
    template_file = os.path.join(script_folder, 'template1.gpt')

    col_no = 4
    pdf_filename = os.path.join(folder, 'median_by_name.pdf')
    get_cdf_and_plot(filenames, schemes, [col_no] * len(schemes), pdf_filename,
                     folder, template_file)

    col_no = 5
    pdf_filename = os.path.join(folder, 'mean_by_name.pdf')
    get_cdf_and_plot(filenames, schemes, [col_no] * len(schemes), pdf_filename,
                     folder, template_file)

    # output key stats
    read_median_list = [t[4] for t in output_tuples3]
    read_mean_list = [t[5] for t in output_tuples3]
    write_median_list = [t[4] for t in output_tuples2]
    write_mean_list = [t[5] for t in output_tuples2]

    # delete this.
    #read_median_list2 = []
    #for v in read_median_list:
    #    if v <5000:
    #        read_median_list2.append(v)

    kv_tuples = []
    kv_tuples.extend(get_stat_in_tuples(read_median_list, 'read_median_names'))
    kv_tuples.extend(get_stat_in_tuples(read_mean_list, 'read_mean_names'))
    kv_tuples.extend(
        get_stat_in_tuples(write_median_list, 'write_median_names'))
    kv_tuples.extend(get_stat_in_tuples(write_mean_list, 'write_mean_names'))

    outputfile = os.path.join(folder, 'latency_stats_names.txt')
    write_tuple_array(kv_tuples, outputfile, p=True)
    os.system('cat ' + outputfile)
Example #5
0
def parse_dns_output(log_files_dir, output_dir, filter=None):
    
    output_extended_tuple_file(log_files_dir, output_dir)
    
    # plot cdf across requests
    tuples_file = os.path.join(output_dir, 'all_tuples.txt')
    
    filenames = [tuples_file]*2
    schemes = ['Ultra-DNS', 'LNS-RTT']
    #latency_index = 5
    #ping_latency_index = 6
    
    # latency index = 4, ping to lns = 5 for this experiment.
    col_nos = [6, 7]
    pdf_file = os.path.join(output_dir, 'cdf_latency.pdf')
    template_file = '/home/abhigyan/gnrs/gpt_files/template1.gpt'
    
    get_cdf_and_plot(filenames, schemes, col_nos, pdf_file, output_dir, template_file)
    
    # plot cdf across names
    value_index = 6
    name_index = 1  # 0 = lns-query-id, 1 = name-id, 2 = name, 3 = ultra-dns-latency,
    outfile1 = os.path.join(output_dir, 'reads_by_name.txt')
    output_tuples1 = group_by(tuples_file, name_index, value_index, filter = None)
    write_tuple_array(output_tuples1, outfile1, p = True)

    value_index = 7
    name_index = 1  # 1 = name,
    outfile2 = os.path.join(output_dir, 'pings_by_name.txt')
    output_tuples2 = group_by(tuples_file, name_index, value_index, filter = None)
    write_tuple_array(output_tuples2, outfile2, p = True)
    
    filenames = [outfile1,outfile2]
    schemes = ['Ultra-DNS', 'LNS-RTT']
    col_nos = [5, 5] # Mean value index = 5
    pdf_file = os.path.join(output_dir, 'read_mean_by_name.pdf')
    template_file = '/home/abhigyan/gnrs/gpt_files/template1.gpt'
    get_cdf_and_plot(filenames, schemes, col_nos, pdf_file, output_dir, template_file)
    
    filenames = [outfile1,outfile2]
    schemes = ['Ultra-DNS', 'LNS-RTT']
    col_nos = [4, 4] # Median value index = 4
    pdf_file = os.path.join(output_dir, 'read_median_by_name.pdf')
    template_file = '/home/abhigyan/gnrs/gpt_files/template1.gpt'
    get_cdf_and_plot(filenames, schemes, col_nos, pdf_file, output_dir, template_file)

    latency_stats = []
    from stats import get_stat_in_tuples
    latency_stats.extend(get_stat_in_tuples(all_latencies, 'read'))
    latency_stats.extend(get_stat_in_tuples(all_latencies, 'read'))
    
    read_median_list = [ t[4] for t in output_tuples1]
    read_mean_list = [ t[5] for t in output_tuples1]
    latency_stats.extend(get_stat_in_tuples(read_median_list, 'read_median_names'))
    latency_stats.extend(get_stat_in_tuples(read_mean_list, 'read_mean_names'))
    
    outputfile = os.path.join(output_dir, 'latency_stats.txt')
    write_tuple_array(latency_stats, outputfile, p = True)
    os.system('cat ' + outputfile)
    
    ## output them hostwise
    value_index = 6
    name_index = 5 # 0 = lns-query-id, 1 = name-id, 2 = name, 3 = ultra-dns-latency,  4 = hostname
    outfile1 = os.path.join(output_dir, 'reads_by_host.txt')
    output_tuples1 = group_by(tuples_file, name_index, value_index, filter = None, numeric = False)
    write_tuple_array(output_tuples1, outfile1, p = True)