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

~= update notebook

parent da4fca55
......@@ -34,7 +34,9 @@
"from xlap.analyse.latency import analyse\n",
"import matplotlib.pyplot as plt\n",
"import pandas as pd\n",
"%matplotlib inline"
"import copy\n",
"%matplotlib inline\n",
"colors = [\"#E69F00\", \"#009E73\", \"#56B4E9\", \"#CC79A7\", \"#D55E00\"]"
]
},
{
......@@ -52,29 +54,16 @@
"source": [
"config = parse_config()\n",
"data_files = {\n",
" \"sender\": \"~/Work/Publications/rtn-2018/eval/20180420_base1/\",\n",
" \"receiver\": \"~/Work/Publications/rtn-2018/eval/20180420_base1/\"\n",
" \"sender\": \"rtn2018/20180417_testbed/\",\n",
" \"receiver\": \"rtn2018/20180417_testbed/\"\n",
"}\n",
"x= 4050\n",
"original1 = evaluate(data_files[\"sender\"] + \"sender-1000000.csv\", data_files[\"receiver\"] + \"receiver-1000000.csv\", config=config, kind=0).iloc[0:x]\n",
"original1 = evaluate(data_files[\"sender\"] + \"sender-1000000.csv\", data_files[\"receiver\"] + \"receiver-1000000.csv\", config=config, kind=0)\n",
"original1.name = \"1GHz\"\n",
"original2 = evaluate(data_files[\"sender\"] + \"sender-2000000.csv\", data_files[\"receiver\"] + \"receiver-2000000.csv\", config=config, kind=0).iloc[0:x]\n",
"original2 = evaluate(data_files[\"sender\"] + \"sender-2000000.csv\", data_files[\"receiver\"] + \"receiver-2000000.csv\", config=config, kind=0)\n",
"original2.name = \"2GHz\"\n",
"original3 = evaluate(data_files[\"sender\"] + \"sender-3000000.csv\", data_files[\"receiver\"] + \"receiver-3000000.csv\", config=config, kind=0).iloc[0:x]\n",
"original3 = evaluate(data_files[\"sender\"] + \"sender-3000000.csv\", data_files[\"receiver\"] + \"receiver-3000000.csv\", config=config, kind=0)\n",
"original3.name = \"3GHz\"\n",
"\n",
"data_files = {\n",
" \"sender\": \"~/Work/Publications/rtn-2018/eval/20180420_changed/\",\n",
" \"receiver\": \"~/Work/Publications/rtn-2018/eval/20180420_changed/\"\n",
"}\n",
"original4 = evaluate(data_files[\"sender\"] + \"sender-1000000.csv\", data_files[\"receiver\"] + \"receiver-1000000.csv\", config=config, kind=0).iloc[0:x]\n",
"original4.name = \"1GHz [2]\"\n",
"original5 = evaluate(data_files[\"sender\"] + \"sender-2000000.csv\", data_files[\"receiver\"] + \"receiver-2000000.csv\", config=config, kind=0).iloc[0:x]\n",
"original5.name = \"2GHz [2]\"\n",
"original6 = evaluate(data_files[\"sender\"] + \"sender-3000000.csv\", data_files[\"receiver\"] + \"receiver-3000000.csv\", config=config, kind=0).iloc[0:x]\n",
"original6.name = \"3GHz [2]\"\n",
"\n",
"dfs = [original1, original4, original2, original5, original3, original6]"
"dfs = [original1, original2, original3]"
]
},
{
......@@ -90,7 +79,7 @@
"metadata": {},
"outputs": [],
"source": [
"traces(original1, config)"
"traces(original1, config, global_xaxis=True)"
]
},
{
......@@ -109,7 +98,7 @@
"def multi_trace_jitter(dfs, config):\n",
" for df in dfs:\n",
" print(\"############################ {} ############################\".format(df.name))\n",
" jitter.trace_jitter(df, config=config, threshold=500)\n",
" jitter.trace_jitter(df, config=config, threshold=200)\n",
" \n",
"multi_trace_jitter(dfs, config)"
]
......@@ -127,7 +116,15 @@
"metadata": {},
"outputs": [],
"source": [
"multi_cdf(dfs, config, export=True)"
"cfg = copy.deepcopy(config)\n",
"d = cfg[\"durations\"]\n",
"\n",
"l=(\"Decoding\",\"ReceiverIPC\",\"HandlePacket\", \"Feedback\", \"SenderIPC\",\"SenderEnqueued\",\"Enqueue\")\n",
"for e in l:\n",
" if e in l:\n",
" del d[e]\n",
"\n",
"multi_cdf(dfs, cfg, colors=colors)"
]
},
{
......@@ -143,14 +140,12 @@
"metadata": {},
"outputs": [],
"source": [
"multi_correlation(dfs, config, export=True)"
"multi_correlation(dfs, config, colors=colors, figsize=(3.0,2.0), cols=4)"
]
},
{
"cell_type": "markdown",
"metadata": {
"collapsed": true
},
"metadata": {},
"source": [
"## Latency Criticality"
]
......@@ -265,7 +260,7 @@
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.6.3"
"version": "3.6.8"
},
"widgets": {
"state": {
......
%% 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)
```
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment