Update memory_usage notebook

This commit is contained in:
Christophe Bedard 2019-12-29 11:26:06 -05:00
parent 90cbfbfe40
commit bd37b4aa0f

View file

@ -13,7 +13,7 @@
"# (wait a few seconds, then kill with Ctrl+C)\n", "# (wait a few seconds, then kill with Ctrl+C)\n",
"# AND\n", "# AND\n",
"# Convert trace data:\n", "# Convert trace data:\n",
"# $ ros2 trace-analysis convert ~/.ros/tracing/memory-usage/ust" "# $ ros2 trace-analysis convert ~/.ros/tracing/memory-usage"
] ]
}, },
{ {
@ -22,7 +22,7 @@
"metadata": {}, "metadata": {},
"outputs": [], "outputs": [],
"source": [ "source": [
"converted_file_path = '~/.ros/tracing/memory-usage/ust/converted'" "converted_file_path = '~/.ros/tracing/memory-usage/converted'"
] ]
}, },
{ {
@ -43,7 +43,6 @@
"from bokeh.plotting import figure\n", "from bokeh.plotting import figure\n",
"from bokeh.plotting import output_notebook\n", "from bokeh.plotting import output_notebook\n",
"from bokeh.io import show\n", "from bokeh.io import show\n",
"from bokeh.layouts import row\n",
"from bokeh.models import ColumnDataSource\n", "from bokeh.models import ColumnDataSource\n",
"from bokeh.models import DatetimeTickFormatter\n", "from bokeh.models import DatetimeTickFormatter\n",
"from bokeh.models import NumeralTickFormatter\n", "from bokeh.models import NumeralTickFormatter\n",
@ -52,7 +51,8 @@
"\n", "\n",
"from tracetools_analysis.loading import load_file\n", "from tracetools_analysis.loading import load_file\n",
"from tracetools_analysis.processor import Processor\n", "from tracetools_analysis.processor import Processor\n",
"from tracetools_analysis.processor.memory_usage import MemoryUsageHandler\n", "from tracetools_analysis.processor.memory_usage import KernelMemoryUsageHandler\n",
"from tracetools_analysis.processor.memory_usage import UserspaceMemoryUsageHandler\n",
"from tracetools_analysis.processor.ros2 import Ros2Handler\n", "from tracetools_analysis.processor.ros2 import Ros2Handler\n",
"from tracetools_analysis.utils.memory_usage import MemoryUsageDataModelUtil\n", "from tracetools_analysis.utils.memory_usage import MemoryUsageDataModelUtil\n",
"from tracetools_analysis.utils.ros2 import Ros2DataModelUtil" "from tracetools_analysis.utils.ros2 import Ros2DataModelUtil"
@ -66,9 +66,10 @@
"source": [ "source": [
"# Process\n", "# Process\n",
"events = load_file(converted_file_path)\n", "events = load_file(converted_file_path)\n",
"memory_handler = MemoryUsageHandler()\n", "ust_memory_handler = UserspaceMemoryUsageHandler()\n",
"kernel_memory_handler = KernelMemoryUsageHandler()\n",
"ros2_handler = Ros2Handler()\n", "ros2_handler = Ros2Handler()\n",
"Processor(memory_handler, ros2_handler).process(events)" "Processor(ust_memory_handler, kernel_memory_handler, ros2_handler).process(events)"
] ]
}, },
{ {
@ -77,7 +78,10 @@
"metadata": {}, "metadata": {},
"outputs": [], "outputs": [],
"source": [ "source": [
"memory_data_util = MemoryUsageDataModelUtil(memory_handler.data)\n", "memory_data_util = MemoryUsageDataModelUtil(\n",
" userspace=ust_memory_handler.data,\n",
" kernel=kernel_memory_handler.data,\n",
")\n",
"ros2_data_util = Ros2DataModelUtil(ros2_handler.data)\n", "ros2_data_util = Ros2DataModelUtil(ros2_handler.data)\n",
"\n", "\n",
"output_notebook()\n", "output_notebook()\n",
@ -91,31 +95,42 @@
"outputs": [], "outputs": [],
"source": [ "source": [
"# Plot memory usage\n", "# Plot memory usage\n",
"memory_usage_dfs = memory_data_util.get_absolute_memory_usage_by_tid()\n", "ust_memory_usage_dfs = memory_data_util.get_absolute_userspace_memory_usage_by_tid()\n",
"kernel_memory_usage_dfs = memory_data_util.get_absolute_kernel_memory_usage_by_tid()\n",
"tids = ros2_data_util.get_tids()\n", "tids = ros2_data_util.get_tids()\n",
"\n", "\n",
"colours = viridis(len(tids) + 1)\n", "colours = viridis(len(tids) + 1)\n",
"first_tid = min(tids)\n", "first_tid = min(tids)\n",
"starttime = memory_usage_dfs[first_tid].loc[:, 'timestamp'].iloc[0].strftime('%Y-%m-%d %H:%M')\n", "starttime = ust_memory_usage_dfs[first_tid].loc[:, 'timestamp'].iloc[0].strftime('%Y-%m-%d %H:%M')\n",
"memory = figure(\n", "memory = figure(\n",
" title='Userspace memory usage per thread/node',\n", " title='Memory usage per thread/node',\n",
" x_axis_label=f'time ({starttime})',\n", " x_axis_label=f'time ({starttime})',\n",
" y_axis_label='memory usage',\n", " y_axis_label='memory usage',\n",
" plot_width=psize, plot_height=psize,\n", " plot_width=psize, plot_height=psize,\n",
")\n", ")\n",
"\n", "\n",
"i_colour = 0\n", "i_colour = 0\n",
"for tid, memory_usage_df in memory_usage_dfs.items():\n", "for tid in tids:\n",
" if tid not in tids:\n", " legend = str(tid) + ' ' + str(ros2_data_util.get_node_names_from_tid(tid))\n",
" continue\n", " # Userspace\n",
" memory.line(\n", " memory.line(\n",
" x='timestamp',\n", " x='timestamp',\n",
" y='memory_usage',\n", " y='memory_usage',\n",
" legend=str(tid) + ' ' + str(ros2_data_util.get_node_names_from_tid(tid)),\n", " legend=legend + ' (ust)',\n",
" line_width=2,\n", " line_width=2,\n",
" source=ColumnDataSource(memory_usage_df),\n", " source=ColumnDataSource(ust_memory_usage_dfs[tid]),\n",
" line_color=colours[i_colour],\n", " line_color=colours[i_colour],\n",
" )\n", " )\n",
" # Kernel\n",
" memory.line(\n",
" x='timestamp',\n",
" y='memory_usage',\n",
" legend=legend + ' (kernel)',\n",
" line_width=2,\n",
" source=ColumnDataSource(kernel_memory_usage_dfs[tid]),\n",
" line_color=colours[i_colour],\n",
" line_dash='dotted',\n",
" )\n",
" i_colour += 1\n", " i_colour += 1\n",
"\n", "\n",
"memory.title.align = 'center'\n", "memory.title.align = 'center'\n",