Loading notebook.ipynb +20 −23 Original line number Diff line number Diff line %% Cell type:markdown id: tags: # X-Lap in Action %% Cell type:markdown id: tags: ## Imports %% Cell type:code id: tags: ``` python import logging logger = logging.getLogger() logger.setLevel(logging.DEBUG) from ipywidgets import interact, interactive, fixed, interact_manual import ipywidgets as widgets from xlap.parse import evaluate, evaluate_side, parse_config import xlap.analyse.jitter as jitter from xlap.analyse.cdf import multi_cdf from xlap.analyse.regress import linear as linear_regression from xlap.analyse.trace import traces from xlap.analyse.correlation import correlation, multi_correlation from xlap.analyse.latency import analyse import matplotlib.pyplot as plt import pandas as pd import copy %matplotlib inline colors = ["#E69F00", "#009E73", "#56B4E9", "#CC79A7", "#D55E00"] ``` %% Cell type:markdown id: tags: ## Data Retrieval %% Cell type:code id: tags: ``` python config = parse_config() data_files = { "sender": "~/Work/Publications/rtn-2018/eval/20180420_base1/", "receiver": "~/Work/Publications/rtn-2018/eval/20180420_base1/" "sender": "rtn2018/20180417_testbed/", "receiver": "rtn2018/20180417_testbed/" } x= 4050 original1 = evaluate(data_files["sender"] + "sender-1000000.csv", data_files["receiver"] + "receiver-1000000.csv", config=config, kind=0).iloc[0:x] original1 = evaluate(data_files["sender"] + "sender-1000000.csv", data_files["receiver"] + "receiver-1000000.csv", config=config, kind=0) original1.name = "1GHz" original2 = evaluate(data_files["sender"] + "sender-2000000.csv", data_files["receiver"] + "receiver-2000000.csv", config=config, kind=0).iloc[0:x] original2 = evaluate(data_files["sender"] + "sender-2000000.csv", data_files["receiver"] + "receiver-2000000.csv", config=config, kind=0) original2.name = "2GHz" original3 = evaluate(data_files["sender"] + "sender-3000000.csv", data_files["receiver"] + "receiver-3000000.csv", config=config, kind=0).iloc[0:x] original3 = evaluate(data_files["sender"] + "sender-3000000.csv", data_files["receiver"] + "receiver-3000000.csv", config=config, kind=0) original3.name = "3GHz" data_files = { "sender": "~/Work/Publications/rtn-2018/eval/20180420_changed/", "receiver": "~/Work/Publications/rtn-2018/eval/20180420_changed/" } original4 = evaluate(data_files["sender"] + "sender-1000000.csv", data_files["receiver"] + "receiver-1000000.csv", config=config, kind=0).iloc[0:x] original4.name = "1GHz [2]" original5 = evaluate(data_files["sender"] + "sender-2000000.csv", data_files["receiver"] + "receiver-2000000.csv", config=config, kind=0).iloc[0:x] original5.name = "2GHz [2]" original6 = evaluate(data_files["sender"] + "sender-3000000.csv", data_files["receiver"] + "receiver-3000000.csv", config=config, kind=0).iloc[0:x] original6.name = "3GHz [2]" dfs = [original1, original4, original2, original5, original3, original6] dfs = [original1, original2, original3] ``` %% Cell type:markdown id: tags: ## Traces %% Cell type:code id: tags: ``` python traces(original1, config) traces(original1, config, global_xaxis=True) ``` %% Cell type:markdown id: tags: ## Jitter Analysis %% Cell type:code id: tags: ``` python def multi_trace_jitter(dfs, config): for df in dfs: print("############################ {} ############################".format(df.name)) jitter.trace_jitter(df, config=config, threshold=500) jitter.trace_jitter(df, config=config, threshold=200) multi_trace_jitter(dfs, config) ``` %% Cell type:markdown id: tags: ## CDFs %% Cell type:code id: tags: ``` python multi_cdf(dfs, config, export=True) cfg = copy.deepcopy(config) d = cfg["durations"] l=("Decoding","ReceiverIPC","HandlePacket", "Feedback", "SenderIPC","SenderEnqueued","Enqueue") for e in l: if e in l: del d[e] multi_cdf(dfs, cfg, colors=colors) ``` %% Cell type:markdown id: tags: ## Correlation %% Cell type:code id: tags: ``` python multi_correlation(dfs, config, export=True) multi_correlation(dfs, config, colors=colors, figsize=(3.0,2.0), cols=4) ``` %% Cell type:markdown id: tags: ## Latency Criticality %% Cell type:code id: tags: ``` python d = analyse(original1, config) ``` %% Cell type:markdown id: tags: ### Correlations %% Cell type:code id: tags: ``` python d.corr.sort_values(ascending=False) ``` %% Cell type:markdown id: tags: ### Control Flow Graph %% Cell type:code id: tags: ``` python d.cfg ``` %% Cell type:markdown id: tags: # Kolmogorov %% Cell type:code id: tags: ``` python from scipy import stats from xlap.analyse.util import extract_durations import numpy as np def timing_behaviour(df1, df2, config, confidence=0.9): durations = [x + "_D" for x in extract_durations(config)] norm = lambda x: x / np.max(x) for duration in durations: rvs1 = norm(df1[duration]) rvs2 = norm(df2[duration]) stat, pvalue = stats.ks_2samp(rvs1, rvs2) result = "CANNOT REJECT" if pvalue < 1 - confidence: result = "REJECT" print(duration.ljust(20), "{:.6f}".format(pvalue), result, sep="\t\t") timing_behaviour(original1, original2, config) ``` %% Cell type:code id: tags: ``` python timing_behaviour(original1, original3, config) ``` %% Cell type:code id: tags: ``` python timing_behaviour(original2, original3, config) ``` Loading
notebook.ipynb +20 −23 Original line number Diff line number Diff line %% Cell type:markdown id: tags: # X-Lap in Action %% Cell type:markdown id: tags: ## Imports %% Cell type:code id: tags: ``` python import logging logger = logging.getLogger() logger.setLevel(logging.DEBUG) from ipywidgets import interact, interactive, fixed, interact_manual import ipywidgets as widgets from xlap.parse import evaluate, evaluate_side, parse_config import xlap.analyse.jitter as jitter from xlap.analyse.cdf import multi_cdf from xlap.analyse.regress import linear as linear_regression from xlap.analyse.trace import traces from xlap.analyse.correlation import correlation, multi_correlation from xlap.analyse.latency import analyse import matplotlib.pyplot as plt import pandas as pd import copy %matplotlib inline colors = ["#E69F00", "#009E73", "#56B4E9", "#CC79A7", "#D55E00"] ``` %% Cell type:markdown id: tags: ## Data Retrieval %% Cell type:code id: tags: ``` python config = parse_config() data_files = { "sender": "~/Work/Publications/rtn-2018/eval/20180420_base1/", "receiver": "~/Work/Publications/rtn-2018/eval/20180420_base1/" "sender": "rtn2018/20180417_testbed/", "receiver": "rtn2018/20180417_testbed/" } x= 4050 original1 = evaluate(data_files["sender"] + "sender-1000000.csv", data_files["receiver"] + "receiver-1000000.csv", config=config, kind=0).iloc[0:x] original1 = evaluate(data_files["sender"] + "sender-1000000.csv", data_files["receiver"] + "receiver-1000000.csv", config=config, kind=0) original1.name = "1GHz" original2 = evaluate(data_files["sender"] + "sender-2000000.csv", data_files["receiver"] + "receiver-2000000.csv", config=config, kind=0).iloc[0:x] original2 = evaluate(data_files["sender"] + "sender-2000000.csv", data_files["receiver"] + "receiver-2000000.csv", config=config, kind=0) original2.name = "2GHz" original3 = evaluate(data_files["sender"] + "sender-3000000.csv", data_files["receiver"] + "receiver-3000000.csv", config=config, kind=0).iloc[0:x] original3 = evaluate(data_files["sender"] + "sender-3000000.csv", data_files["receiver"] + "receiver-3000000.csv", config=config, kind=0) original3.name = "3GHz" data_files = { "sender": "~/Work/Publications/rtn-2018/eval/20180420_changed/", "receiver": "~/Work/Publications/rtn-2018/eval/20180420_changed/" } original4 = evaluate(data_files["sender"] + "sender-1000000.csv", data_files["receiver"] + "receiver-1000000.csv", config=config, kind=0).iloc[0:x] original4.name = "1GHz [2]" original5 = evaluate(data_files["sender"] + "sender-2000000.csv", data_files["receiver"] + "receiver-2000000.csv", config=config, kind=0).iloc[0:x] original5.name = "2GHz [2]" original6 = evaluate(data_files["sender"] + "sender-3000000.csv", data_files["receiver"] + "receiver-3000000.csv", config=config, kind=0).iloc[0:x] original6.name = "3GHz [2]" dfs = [original1, original4, original2, original5, original3, original6] dfs = [original1, original2, original3] ``` %% Cell type:markdown id: tags: ## Traces %% Cell type:code id: tags: ``` python traces(original1, config) traces(original1, config, global_xaxis=True) ``` %% Cell type:markdown id: tags: ## Jitter Analysis %% Cell type:code id: tags: ``` python def multi_trace_jitter(dfs, config): for df in dfs: print("############################ {} ############################".format(df.name)) jitter.trace_jitter(df, config=config, threshold=500) jitter.trace_jitter(df, config=config, threshold=200) multi_trace_jitter(dfs, config) ``` %% Cell type:markdown id: tags: ## CDFs %% Cell type:code id: tags: ``` python multi_cdf(dfs, config, export=True) cfg = copy.deepcopy(config) d = cfg["durations"] l=("Decoding","ReceiverIPC","HandlePacket", "Feedback", "SenderIPC","SenderEnqueued","Enqueue") for e in l: if e in l: del d[e] multi_cdf(dfs, cfg, colors=colors) ``` %% Cell type:markdown id: tags: ## Correlation %% Cell type:code id: tags: ``` python multi_correlation(dfs, config, export=True) multi_correlation(dfs, config, colors=colors, figsize=(3.0,2.0), cols=4) ``` %% Cell type:markdown id: tags: ## Latency Criticality %% Cell type:code id: tags: ``` python d = analyse(original1, config) ``` %% Cell type:markdown id: tags: ### Correlations %% Cell type:code id: tags: ``` python d.corr.sort_values(ascending=False) ``` %% Cell type:markdown id: tags: ### Control Flow Graph %% Cell type:code id: tags: ``` python d.cfg ``` %% Cell type:markdown id: tags: # Kolmogorov %% Cell type:code id: tags: ``` python from scipy import stats from xlap.analyse.util import extract_durations import numpy as np def timing_behaviour(df1, df2, config, confidence=0.9): durations = [x + "_D" for x in extract_durations(config)] norm = lambda x: x / np.max(x) for duration in durations: rvs1 = norm(df1[duration]) rvs2 = norm(df2[duration]) stat, pvalue = stats.ks_2samp(rvs1, rvs2) result = "CANNOT REJECT" if pvalue < 1 - confidence: result = "REJECT" print(duration.ljust(20), "{:.6f}".format(pvalue), result, sep="\t\t") timing_behaviour(original1, original2, config) ``` %% Cell type:code id: tags: ``` python timing_behaviour(original1, original3, config) ``` %% Cell type:code id: tags: ``` python timing_behaviour(original2, original3, config) ```