2021-02-03 11:16:38 +01:00
|
|
|
{
|
|
|
|
"cells": [
|
|
|
|
{
|
|
|
|
"cell_type": "code",
|
2021-02-05 10:44:43 +01:00
|
|
|
"execution_count": 1,
|
2021-02-03 11:16:38 +01:00
|
|
|
"id": "wound-burns",
|
|
|
|
"metadata": {},
|
|
|
|
"outputs": [],
|
|
|
|
"source": [
|
|
|
|
"from plotnine import *\n",
|
|
|
|
"import plotnine as plotnine\n",
|
|
|
|
"import pandas as pd\n",
|
|
|
|
"import math"
|
|
|
|
]
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"cell_type": "code",
|
2021-02-03 15:06:19 +01:00
|
|
|
"execution_count": 194,
|
|
|
|
"id": "separated-foundation",
|
|
|
|
"metadata": {},
|
|
|
|
"outputs": [],
|
|
|
|
"source": [
|
|
|
|
"df = pd.concat([\n",
|
|
|
|
" pd.read_csv('block_linux_x86_64.csv'),\n",
|
|
|
|
" pd.read_csv('block_bufchan_linux_x86_64.csv'),\n",
|
|
|
|
"])\n",
|
|
|
|
"df['workload'] = [\n",
|
|
|
|
" r['workload'] if r['workload'] != 'chan' else 'chan(cap={})'.format(r['bufsize'])\n",
|
|
|
|
" for _, r in df.iterrows()\n",
|
|
|
|
"]\n",
|
|
|
|
"df['blockprofilerate'] = [('10$^{'+str(int(math.log10(x)))+'}$') if x > 1 else str(x) for x in df['blockprofilerate']]\n",
|
|
|
|
"\n",
|
|
|
|
"compare = df.groupby(['blockprofilerate', 'workload']).median()\n",
|
|
|
|
"# calculate overhead compared to blockprofilerate=0 for same workload\n",
|
|
|
|
"compare['overhead'] = [\n",
|
|
|
|
" (x['ms'] / compare.loc['0'].loc[x['workload']]['ms'] - 1) * 100\n",
|
|
|
|
" for _, x in compare.reset_index().iterrows()\n",
|
|
|
|
"]\n",
|
|
|
|
"compare = compare.reset_index()"
|
|
|
|
]
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"cell_type": "code",
|
|
|
|
"execution_count": 201,
|
2021-02-03 11:16:38 +01:00
|
|
|
"id": "viral-baking",
|
|
|
|
"metadata": {},
|
|
|
|
"outputs": [
|
|
|
|
{
|
|
|
|
"data": {
|
2021-02-03 15:06:19 +01:00
|
|
|
"image/png": "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
|
2021-02-03 11:16:38 +01:00
|
|
|
"text/plain": [
|
2021-02-03 15:06:19 +01:00
|
|
|
"<Figure size 1200x1000 with 3 Axes>"
|
2021-02-03 11:16:38 +01:00
|
|
|
]
|
|
|
|
},
|
|
|
|
"metadata": {},
|
|
|
|
"output_type": "display_data"
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"data": {
|
|
|
|
"text/plain": [
|
2021-02-03 15:06:19 +01:00
|
|
|
"<ggplot: (335455735)>"
|
2021-02-03 11:16:38 +01:00
|
|
|
]
|
|
|
|
},
|
2021-02-03 15:06:19 +01:00
|
|
|
"execution_count": 201,
|
2021-02-03 11:16:38 +01:00
|
|
|
"metadata": {},
|
|
|
|
"output_type": "execute_result"
|
|
|
|
}
|
|
|
|
],
|
|
|
|
"source": [
|
2021-02-03 15:06:19 +01:00
|
|
|
"plotnine.options.figure_size = (12, 10)\n",
|
2021-02-03 11:16:38 +01:00
|
|
|
"\n",
|
|
|
|
"def plot_title(df):\n",
|
|
|
|
" return (\n",
|
|
|
|
" 'median runtime.SetBlockProfileRate() overhead on artificial pathological workloads\\n\\n' +\n",
|
2021-02-03 11:22:16 +01:00
|
|
|
" 'os={} cpu={} go={} goroutines={} stackdepth={} ops={}'.format(\n",
|
|
|
|
" # TODO(fg) don't hard code environment\n",
|
|
|
|
" 'linux (docker for mac)',\n",
|
2021-02-03 11:16:38 +01:00
|
|
|
" 'i7-9750H',\n",
|
2021-02-03 11:22:16 +01:00
|
|
|
" '1.15.7',\n",
|
2021-02-03 11:16:38 +01:00
|
|
|
" val_range(df, 'goroutines'),\n",
|
|
|
|
" val_range(df, 'depth'),\n",
|
2021-02-03 15:06:19 +01:00
|
|
|
"# val_range(df, 'bufsize'),\n",
|
2021-02-03 11:16:38 +01:00
|
|
|
" val_range(df, 'ops'),\n",
|
|
|
|
" )\n",
|
|
|
|
" )\n",
|
|
|
|
"\n",
|
|
|
|
"def val_range(df, col):\n",
|
|
|
|
" min = int(df[col].min())\n",
|
|
|
|
" max = int(df[col].max())\n",
|
|
|
|
" return '{}-{}'.format(min, max) if min != max else min\n",
|
|
|
|
"\n",
|
|
|
|
"(\n",
|
|
|
|
"ggplot(df)\n",
|
|
|
|
"+ aes(x='blockprofilerate',y='ms',ymin=0)\n",
|
|
|
|
"+ ggtitle(plot_title(compare))\n",
|
|
|
|
"+ ylab('time (ms)')\n",
|
|
|
|
"+ xlab('blockprofilerate (ns)')\n",
|
|
|
|
"+ geom_label(\n",
|
|
|
|
" aes(label='overhead',color='overhead'),\n",
|
|
|
|
" data=compare,\n",
|
|
|
|
" y=0,\n",
|
|
|
|
" size=9,\n",
|
|
|
|
" format_string='{:.1f}%'\n",
|
|
|
|
")\n",
|
2021-02-03 11:22:16 +01:00
|
|
|
"+ scale_color_gradient(low=\"green\",high=\"red\",name='overhead (%)')\n",
|
2021-02-03 11:16:38 +01:00
|
|
|
"+ geom_boxplot(outlier_shape='')\n",
|
2021-02-03 15:06:19 +01:00
|
|
|
"+ facet_wrap('workload', scales='free', ncol=2)\n",
|
|
|
|
"+ theme(subplots_adjust={'wspace': 0.05, 'hspace': 0.2})\n",
|
2021-02-03 11:16:38 +01:00
|
|
|
"+ geom_point(color='blue',shape='o',alpha=0.3, size=1)\n",
|
|
|
|
")"
|
|
|
|
]
|
2021-02-03 15:06:19 +01:00
|
|
|
},
|
|
|
|
{
|
|
|
|
"cell_type": "code",
|
|
|
|
"execution_count": null,
|
|
|
|
"id": "orange-degree",
|
|
|
|
"metadata": {},
|
|
|
|
"outputs": [],
|
|
|
|
"source": []
|
2021-02-03 11:16:38 +01:00
|
|
|
}
|
|
|
|
],
|
|
|
|
"metadata": {
|
|
|
|
"kernelspec": {
|
|
|
|
"display_name": "Python 3",
|
|
|
|
"language": "python",
|
|
|
|
"name": "python3"
|
|
|
|
},
|
|
|
|
"language_info": {
|
|
|
|
"codemirror_mode": {
|
|
|
|
"name": "ipython",
|
|
|
|
"version": 3
|
|
|
|
},
|
|
|
|
"file_extension": ".py",
|
|
|
|
"mimetype": "text/x-python",
|
|
|
|
"name": "python",
|
|
|
|
"nbconvert_exporter": "python",
|
|
|
|
"pygments_lexer": "ipython3",
|
|
|
|
"version": "3.9.1"
|
|
|
|
}
|
|
|
|
},
|
|
|
|
"nbformat": 4,
|
|
|
|
"nbformat_minor": 5
|
|
|
|
}
|