Commit a7cad9a3 authored by Andreas Schmidt's avatar Andreas Schmidt
Browse files

Refactor: Durations and stamps are automatically generated.

parent 34ae51ac
Loading
Loading
Loading
Loading
+5 −0
Original line number Diff line number Diff line
# X-Lap: A Systems Approach for Cross-Layer Profiling and Latency Analysis for Cyber-Physical Networks

## Conventions

`_T`: Timestamp (us precision)
`_C`: Clockstamp
`_D`: Duration (us precision)

## How to use X-lap?

+5 −5
Original line number Diff line number Diff line
@@ -64,7 +64,7 @@ def trace(df,title,export=False):
def box(df_data,export=False,title=None):
    ax = df_data.plot.box(vert=False,grid=True)
    fig=ax.get_figure()
    ax.set_yticklabels(list(map(lambda x: x.get_text().replace("Time", ""), ax.get_yticklabels())))
    ax.set_yticklabels(list(map(lambda x: x.get_text().replace("_D", ""), ax.get_yticklabels())))
    plt.xlabel("Time [us]")
    fig.set_size_inches(8, 4.5, forward=True)
    if export and title is not None:
@@ -73,17 +73,17 @@ def box(df_data,export=False,title=None):
def describe_table(df):
    stats = df.describe()
    stats.drop(["count"],inplace=True)
    stats.columns = list(map(lambda x: x.replace("Time", ""), stats.columns))
    stats.columns = list(map(lambda x: x.replace("_D", ""), stats.columns))
    table = stats.to_latex(float_format=lambda x: "%.3f" % x)
    print(table)
    return stats

def correlation(df_data,title="Correlation.pdf"):
    columns = list(["SenderTotalTime",
    columns = list(["Sender_D",
                    "SendTime",
                    "SenderIPCTime",
                    "LinkTransmitTime",
                    "ReceiverTotalTime",
                    "Receiver_D",
                    "ReceiverIPCTime",
                    "HandlePacketTime",
                    "FeedbackTime",
@@ -100,6 +100,6 @@ def correlation(df_data,title="Correlation.pdf"):
        fig2 = ax.get_figure()
        ax.set_ylabel("EndToEnd [us]")
        ax.margins(0.1,0.1)
        ax.set_xlabel("{} [us]".format(column.replace("Time", "")))
        ax.set_xlabel("{} [us]".format(column.replace("_D", "")))
        i += 1
    fig.savefig(title)
+1 −1
Original line number Diff line number Diff line
@@ -17,4 +17,4 @@ def extract_durations(config):
    durations_send = [_dn(x) for x in durations if _filter(x, durations, "sender")]
    durations_recv = [_dn(x) for x in durations if _filter(x, durations, "receiver")]

    return ["EndToEndTime", "SenderTotalTime"] + durations_send + ["ReceiverTotalTime"] + durations_recv
    return ["EndToEndTime", "Sender_D"] + durations_send + ["Receiver_D"] + durations_recv
+1 −1
Original line number Diff line number Diff line
@@ -45,7 +45,7 @@ def jitter_causes(df, export=False, file_name=None):
    ax = df_sum.plot.bar(x="Reason",y="Frequency",rot=45,grid=True,legend=False,color="black")
    fig=ax.get_figure()
    plt.ylabel("Frequency")
    ax.set_xticklabels(list(map(lambda x: x.get_text().replace("Time", ""), ax.get_xticklabels())))
    ax.set_xticklabels(list(map(lambda x: x.get_text().replace("_D", ""), ax.get_xticklabels())))
    fig.set_size_inches(8, 3, forward=True)
    if export:
        fig.savefig(file_name)
+1 −1
Original line number Diff line number Diff line
@@ -28,7 +28,7 @@ def main():
            print("{} is not a known analysis task.".format(command))
            continue

        df_data = evaluate(data_files["sender"], data_files["receiver"], stamps=config["stamps"], kind=0)
        df_data = evaluate(data_files["sender"], data_files["receiver"], config=config, kind=0)

        params = { "export": args.export}

Loading