diff --git a/tracetools_analysis/analysis/memory_usage.ipynb b/tracetools_analysis/analysis/memory_usage.ipynb index 6d2fb03..34fff64 100644 --- a/tracetools_analysis/analysis/memory_usage.ipynb +++ b/tracetools_analysis/analysis/memory_usage.ipynb @@ -13,7 +13,7 @@ "# (wait a few seconds, then kill with Ctrl+C)\n", "# AND\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": {}, "outputs": [], "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 output_notebook\n", "from bokeh.io import show\n", - "from bokeh.layouts import row\n", "from bokeh.models import ColumnDataSource\n", "from bokeh.models import DatetimeTickFormatter\n", "from bokeh.models import NumeralTickFormatter\n", @@ -52,7 +51,8 @@ "\n", "from tracetools_analysis.loading import load_file\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.utils.memory_usage import MemoryUsageDataModelUtil\n", "from tracetools_analysis.utils.ros2 import Ros2DataModelUtil" @@ -66,9 +66,10 @@ "source": [ "# Process\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", - "Processor(memory_handler, ros2_handler).process(events)" + "Processor(ust_memory_handler, kernel_memory_handler, ros2_handler).process(events)" ] }, { @@ -77,7 +78,10 @@ "metadata": {}, "outputs": [], "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", "\n", "output_notebook()\n", @@ -91,31 +95,42 @@ "outputs": [], "source": [ "# 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", "\n", "colours = viridis(len(tids) + 1)\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", - " title='Userspace memory usage per thread/node',\n", + " title='Memory usage per thread/node',\n", " x_axis_label=f'time ({starttime})',\n", " y_axis_label='memory usage',\n", " plot_width=psize, plot_height=psize,\n", ")\n", "\n", "i_colour = 0\n", - "for tid, memory_usage_df in memory_usage_dfs.items():\n", - " if tid not in tids:\n", - " continue\n", + "for tid in tids:\n", + " legend = str(tid) + ' ' + str(ros2_data_util.get_node_names_from_tid(tid))\n", + " # Userspace\n", " memory.line(\n", " x='timestamp',\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", - " source=ColumnDataSource(memory_usage_df),\n", + " source=ColumnDataSource(ust_memory_usage_dfs[tid]),\n", " line_color=colours[i_colour],\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", "\n", "memory.title.align = 'center'\n",