Loading notebook.ipynb +3 −3 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 %matplotlib inline ``` %% 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/" } x= 4050 original1 = evaluate(data_files["sender"] + "sender-1000000.csv", data_files["receiver"] + "receiver-1000000.csv", config=config, kind=0).iloc[0:x] 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.name = "2GHz" original3 = evaluate(data_files["sender"] + "sender-3000000.csv", data_files["receiver"] + "receiver-3000000.csv", config=config, kind=0).iloc[0:x] original3.name = "3GHz" data_files = { "sender": "~/Work/Publications/rtn-2018/eval/20180420_base2/", "receiver": "~/Work/Publications/rtn-2018/eval/20180420_base2/" "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] ``` %% Cell type:markdown id: tags: ## Traces %% Cell type:code id: tags: ``` python traces(original1, config) ``` %% 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=200) jitter.trace_jitter(df, config=config, threshold=500) multi_trace_jitter(dfs, config) ``` %% Cell type:markdown id: tags: ## CDFs %% Cell type:code id: tags: ``` python multi_cdf(dfs, config, export=True) ``` %% Cell type:markdown id: tags: ## Correlation %% Cell type:code id: tags: ``` python multi_correlation(dfs, config, export=True) ``` %% 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) ``` xlap.yml +8 −8 Original line number Diff line number Diff line Loading @@ -39,14 +39,14 @@ stamps: Source: sender Thread: app_send Type: time # PrrtSendPacketStart: # Source: sender # Thread: trans_send # Type: none # PrrtSendPacketEnd: # Source: sender # Thread: trans_send # Type: none PrrtSendPacketStart: Source: sender Thread: trans_send Type: none PrrtSendPacketEnd: Source: sender Thread: trans_send Type: none PrrtTransmitStart: Source: sender Loading Loading
notebook.ipynb +3 −3 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 %matplotlib inline ``` %% 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/" } x= 4050 original1 = evaluate(data_files["sender"] + "sender-1000000.csv", data_files["receiver"] + "receiver-1000000.csv", config=config, kind=0).iloc[0:x] 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.name = "2GHz" original3 = evaluate(data_files["sender"] + "sender-3000000.csv", data_files["receiver"] + "receiver-3000000.csv", config=config, kind=0).iloc[0:x] original3.name = "3GHz" data_files = { "sender": "~/Work/Publications/rtn-2018/eval/20180420_base2/", "receiver": "~/Work/Publications/rtn-2018/eval/20180420_base2/" "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] ``` %% Cell type:markdown id: tags: ## Traces %% Cell type:code id: tags: ``` python traces(original1, config) ``` %% 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=200) jitter.trace_jitter(df, config=config, threshold=500) multi_trace_jitter(dfs, config) ``` %% Cell type:markdown id: tags: ## CDFs %% Cell type:code id: tags: ``` python multi_cdf(dfs, config, export=True) ``` %% Cell type:markdown id: tags: ## Correlation %% Cell type:code id: tags: ``` python multi_correlation(dfs, config, export=True) ``` %% 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) ```
xlap.yml +8 −8 Original line number Diff line number Diff line Loading @@ -39,14 +39,14 @@ stamps: Source: sender Thread: app_send Type: time # PrrtSendPacketStart: # Source: sender # Thread: trans_send # Type: none # PrrtSendPacketEnd: # Source: sender # Thread: trans_send # Type: none PrrtSendPacketStart: Source: sender Thread: trans_send Type: none PrrtSendPacketEnd: Source: sender Thread: trans_send Type: none PrrtTransmitStart: Source: sender Loading