From 17fe8d22453c26dbfb9840776fc744e82c8fbd79 Mon Sep 17 00:00:00 2001 From: Christophe Bedard Date: Thu, 6 Jun 2019 09:28:25 +0200 Subject: [PATCH] Extract tracetools_trace from tracetools_analysis --- analysis/__init__.py => README.md | 0 analysis/.gitignore | 5 + analysis/Callback_duration.ipynb | 506 ++++++++++++++++++ package.xml | 15 + setup.cfg | 4 + setup.py | 21 + test/test_tracepoints.py | 22 + trace.py | 25 - .../__init__.py | 0 .../analysis}/__init__.py | 0 .../analysis}/lttng_models.py | 0 .../analysis}/ros_processor.py | 0 .../analysis}/to_pandas.py | 0 .../conversion}/__init__.py | 0 .../conversion}/ctf.py | 0 convert.py => tracetools_analysis/convert.py | 0 process.py => tracetools_analysis/process.py | 0 tracetools_analysis/test/__init__.py | 0 tracetools_analysis/test/utils.py | 41 ++ tracetools_analysis/tracing/__init__.py | 0 tracing/lttng.py | 183 ------- tracing/names.py | 64 --- 22 files changed, 614 insertions(+), 272 deletions(-) rename analysis/__init__.py => README.md (100%) create mode 100644 analysis/.gitignore create mode 100644 analysis/Callback_duration.ipynb create mode 100644 package.xml create mode 100644 setup.cfg create mode 100644 setup.py create mode 100644 test/test_tracepoints.py delete mode 100644 trace.py rename __init__.py => tracetools_analysis/__init__.py (100%) rename {conversion => tracetools_analysis/analysis}/__init__.py (100%) rename {analysis => tracetools_analysis/analysis}/lttng_models.py (100%) rename {analysis => tracetools_analysis/analysis}/ros_processor.py (100%) rename {analysis => tracetools_analysis/analysis}/to_pandas.py (100%) rename {tracing => tracetools_analysis/conversion}/__init__.py (100%) rename {conversion => tracetools_analysis/conversion}/ctf.py (100%) rename convert.py => tracetools_analysis/convert.py (100%) rename process.py => tracetools_analysis/process.py (100%) create mode 100644 tracetools_analysis/test/__init__.py create mode 100644 tracetools_analysis/test/utils.py create mode 100644 tracetools_analysis/tracing/__init__.py delete mode 100644 tracing/lttng.py delete mode 100644 tracing/names.py diff --git a/analysis/__init__.py b/README.md similarity index 100% rename from analysis/__init__.py rename to README.md diff --git a/analysis/.gitignore b/analysis/.gitignore new file mode 100644 index 0000000..4254a9f --- /dev/null +++ b/analysis/.gitignore @@ -0,0 +1,5 @@ +*.svg +*.png +*.pdf +.ipynb_checkpoints + diff --git a/analysis/Callback_duration.ipynb b/analysis/Callback_duration.ipynb new file mode 100644 index 0000000..0b0c60a --- /dev/null +++ b/analysis/Callback_duration.ipynb @@ -0,0 +1,506 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "/home/boc7rng/ros2_ws/src/trace_analysis\n" + ] + } + ], + "source": [ + "cd .." + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "import sys\n", + "import pickle\n", + "import pandas as pd\n", + "import matplotlib.pyplot as plt\n", + "from tracetools_analysis.analysis.ros_processor import *\n", + "from tracetools_analysis.analysis.to_pandas import *" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "def _get_events_from_pickled_file(file):\n", + " p = pickle.Unpickler(file)\n", + " events = []\n", + " while True:\n", + " try:\n", + " events.append(p.load())\n", + " except EOFError as _:\n", + " break # we're done\n", + " return events" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "imported 538 events\n", + " callback_address duration start_timestamp\n", + "0 93936519421304 46536 1558603909545758681\n", + "1 93936519421304 42644 1558603910045393758\n", + "2 93936519421304 40642 1558603910545455527\n", + "3 93936519421304 34351 1558603911045288748\n", + "4 93936519421304 15474 1558603911545113622\n", + "5 93936519421304 14516 1558603912045117407\n", + "6 93936519421304 15022 1558603912545132769\n", + "7 93936519421304 17849 1558603913045117649\n", + "8 93936519421304 33639 1558603913545454326\n", + "9 93936519421304 38705 1558603914045519078\n", + "10 93936519421304 45665 1558603914545563667\n", + "11 93936519421304 16300 1558603915045232751\n", + "12 93936519421304 44290 1558603915545598209\n", + "13 93936519421304 40953 1558603916045634003\n", + "14 93936519421304 40437 1558603916545775210\n", + "15 93936519421304 43514 1558603917045613746\n", + "16 93936519421304 41327 1558603917545655079\n", + "17 93936519421304 43243 1558603918045657305\n", + "18 93936519421304 45381 1558603918545721344\n", + "19 93936519421304 40894 1558603919045631809\n", + "20 93936519421304 16709 1558603919545352510\n", + "21 93936519421304 44631 1558603920045743330\n", + "22 93936519421304 42671 1558603920545693414\n", + "23 93936519421304 18798 1558603921045399520\n", + "24 93936519421304 50378 1558603921545779682\n", + "25 93936519421304 44826 1558603922045805896\n", + "26 93936519421304 46134 1558603922545824280\n", + "27 93936519421304 44522 1558603923045847831\n", + "28 93936519421304 14270 1558603923545505829\n", + "29 93936519421304 13918 1558603924045491763\n", + "30 93936519421304 14463 1558603924545502429\n", + "31 93936519421304 17682 1558603925045543843\n", + "32 93936519421304 26879 1558603925545708575\n", + "33 93936519421304 36173 1558603926045806943\n", + "34 93936519421304 41533 1558603926546234707\n", + "35 93936519421304 25794 1558603927045722181\n", + "36 93936519421304 45037 1558603927545955253\n", + "37 93936519421304 39921 1558603928046166359\n", + "38 93936519421304 41263 1558603928545970799\n", + "39 93936519421304 73371 1558603929046020303\n", + "40 93936519421304 42534 1558603929545989798\n", + "41 93936519421304 45511 1558603930046115729\n", + "42 93936519421304 46377 1558603930546125475\n", + "43 93936519421304 73247 1558603931046047649\n", + "44 93936519421304 41306 1558603931546089400\n", + "45 93936519421304 39673 1558603932046102715\n", + "46 93936519421304 37308 1558603932546129212\n", + "47 93936519421304 41327 1558603933046090242\n", + "48 93936519421304 49285 1558603933546200982\n", + "49 93936519421304 45726 1558603934046331611\n", + "50 93936519421304 39606 1558603934546343976\n", + "51 93936519421304 40593 1558603935046371735\n", + "52 93936519421304 50519 1558603935546249214\n", + "53 93936519421304 45703 1558603936046224927\n", + "54 93936519421304 50288 1558603936546480484\n", + "55 93936519421304 42308 1558603937046393863\n", + "56 93936519421304 42491 1558603937546330509\n", + "57 93936519421304 43766 1558603938046320731\n", + "58 93936519421304 46444 1558603938546360943\n", + "59 93936519421304 29410 1558603939045959016\n", + "60 93936519421304 44811 1558603939546372225\n", + "61 93936519421304 39708 1558603940046562544\n", + "62 93936519421304 40792 1558603940546413237\n", + "63 93936519421304 37603 1558603941046042702\n", + "64 93936519421304 14451 1558603941545987965\n", + "65 93936519421304 14424 1558603942046011217\n", + "66 93936519421304 15951 1558603942546019131\n", + "67 93936519421304 14792 1558603943046109404\n", + "68 93936519421304 37913 1558603943546418653\n", + "69 93936519421304 38945 1558603944046422260\n", + "70 93936519421304 40952 1558603944546439491\n", + "71 93936519421304 13510 1558603945046148320\n", + "72 93936519421304 41646 1558603945546539773\n", + "73 93936519421304 46602 1558603946046632028\n", + "74 93936519421304 41038 1558603946546731148\n", + "75 93936519421304 41533 1558603947046566829\n", + "76 93936519421304 47418 1558603947546626622\n", + "77 93936519421304 43078 1558603948046636479\n", + "78 93936519421304 43149 1558603948546637906\n", + "79 93936519421304 42481 1558603949046776452\n", + "80 93936519421304 41696 1558603949546662572\n", + "81 93936519421304 41706 1558603950046684020\n", + "82 93936519421304 42198 1558603950546700575\n", + "83 93936519421304 14290 1558603951046342966\n", + "84 93936519421304 42322 1558603951546707586\n", + "85 93936519421304 40280 1558603952046689217\n", + "86 93936519421304 41132 1558603952546782491\n", + "87 93936519421304 42066 1558603953046798531\n", + "88 93936519421304 16504 1558603953546422303\n", + "89 93936519421304 14516 1558603954046442355\n", + "90 93936519421304 15630 1558603954546466966\n", + "91 93936519421304 13527 1558603955046470100\n", + "92 93936519421304 14511 1558603955546440759\n", + "93 93936519421304 39238 1558603956046828345\n", + "94 93936519421304 37940 1558603956546838914\n", + "95 93936519421304 16518 1558603957046547999\n", + "96 93936519421304 41208 1558603957546937736\n", + "97 93936519421304 40373 1558603958046863393\n", + "98 93936519421304 38127 1558603958546940643\n", + "99 93936519421304 38474 1558603959047126679\n", + "100 93936519421304 39139 1558603959547102757\n", + "101 93936519421304 40323 1558603960047126635\n", + "102 93936519421304 16657 1558603960546707945\n", + "103 93936519421304 45127 1558603961046972300\n", + "104 93936519421304 44417 1558603961546999678\n", + "105 93936519421304 21051 1558603962046787412\n", + "106 93936519421304 44299 1558603962547207600\n", + "107 93936519421304 37212 1558603963047074876\n", + "108 93936519421304 38362 1558603963547260043\n", + "109 93936519421304 39245 1558603964047095756\n", + "110 93936519421304 56045 1558603964547178016\n", + "111 93936519421304 40006 1558603965047136559\n", + "112 93936519421304 42538 1558603965547151958\n", + "113 93936519421304 44609 1558603966047224174\n", + "114 93936519421304 48076 1558603966547234849\n", + "115 93936519421304 42164 1558603967047241765\n", + "116 93936519421304 41176 1558603967547208465\n", + "117 93936519421304 38144 1558603968047237382\n", + "118 93936519421304 38317 1558603968547285930\n", + "119 93936519421304 15479 1558603969046950867\n", + "120 93936519421304 41306 1558603969547273142\n", + "121 93936530091544 267148 1558603909546131291\n", + "122 93936530091544 97761 1558603910045737303\n", + "123 93936530091544 97809 1558603910545815399\n", + "124 93936530091544 49725 1558603911045613603\n", + "125 93936530091544 37888 1558603911545265209\n", + "126 93936530091544 43729 1558603912045277690\n", + "127 93936530091544 36926 1558603912545282942\n", + "128 93936530091544 40864 1558603913045265744\n", + "129 93936530091544 93892 1558603913545767273\n", + "130 93936530091544 94766 1558603914045872613\n", + "131 93936530091544 101556 1558603914545936238\n", + "132 93936530091544 42827 1558603915045351368\n", + "133 93936530091544 134027 1558603915545967520\n", + "134 93936530091544 122609 1558603916045996843\n", + "135 93936530091544 101338 1558603916546128266\n", + "136 93936530091544 131591 1558603917045975420\n", + "137 93936530091544 129990 1558603917546013749\n", + "138 93936530091544 125478 1558603918046031894\n", + "139 93936530091544 96406 1558603918546151987\n", + "140 93936530091544 103382 1558603919046145092\n", + "141 93936530091544 34949 1558603919545473258\n", + "142 93936530091544 99755 1558603920046133787\n", + "143 93936530091544 123701 1558603920546032014\n", + "144 93936530091544 43341 1558603921045536148\n", + "145 93936530091544 97141 1558603921546228154\n", + "146 93936530091544 101314 1558603922046213861\n", + "147 93936530091544 100021 1558603922546238339\n", + "148 93936530091544 98485 1558603923046252111\n", + "149 93936530091544 36358 1558603923545664217\n", + "150 93936530091544 37462 1558603924045591481\n", + "151 93936530091544 42755 1558603924545662172\n", + "152 93936530091544 43373 1558603925045696142\n", + "153 93936530091544 66858 1558603925546038168\n", + "154 93936530091544 89301 1558603926046114417\n", + "155 93936530091544 104388 1558603926546593680\n", + "156 93936530091544 37373 1558603927045911557\n", + "157 93936530091544 106532 1558603927546392711\n", + "158 93936530091544 99191 1558603928046493304\n", + "159 93936530091544 100249 1558603928546329764\n", + "160 93936530091544 107166 1558603929046390766\n", + "161 93936530091544 98986 1558603929546398370\n", + "162 93936530091544 105290 1558603930046476694\n", + "163 93936530091544 104391 1558603930546491195\n", + "164 93936530091544 106862 1558603931046423935\n", + "165 93936530091544 105452 1558603931546416605\n", + "166 93936530091544 99013 1558603932046433703\n", + "167 93936530091544 97755 1558603932546508764\n", + "168 93936530091544 101510 1558603933046431141\n", + "169 93936530091544 99555 1558603933546599805\n", + "170 93936530091544 97447 1558603934046668635\n", + "171 93936530091544 98156 1558603934546871368\n", + "172 93936530091544 104431 1558603935046685106\n", + "173 93936530091544 102795 1558603935546701962\n", + "174 93936530091544 105646 1558603936046574872\n", + "175 93936530091544 147913 1558603936547116272\n", + "176 93936530091544 97975 1558603937046858038\n", + "177 93936530091544 103066 1558603937546695510\n", + "178 93936530091544 100997 1558603938046688277\n", + "179 93936530091544 101590 1558603938546729109\n", + "180 93936530091544 37705 1558603939046096405\n", + "181 93936530091544 104430 1558603939546742500\n", + "182 93936530091544 98944 1558603940046883130\n", + "183 93936530091544 99031 1558603940546742462\n", + "184 93936530091544 36906 1558603941046247983\n", + "185 93936530091544 36562 1558603941546110263\n", + "186 93936530091544 37467 1558603942046128766\n", + "187 93936530091544 36573 1558603942546200819\n", + "188 93936530091544 37139 1558603943046214573\n", + "189 93936530091544 85759 1558603943546741660\n", + "190 93936530091544 93728 1558603944046743370\n", + "191 93936530091544 96131 1558603944546769949\n", + "192 93936530091544 45694 1558603945046257326\n", + "193 93936530091544 93356 1558603945546899026\n", + "194 93936530091544 101303 1558603946047006070\n", + "195 93936530091544 100325 1558603946547088327\n", + "196 93936530091544 90855 1558603947046926970\n", + "197 93936530091544 104867 1558603947547066806\n", + "198 93936530091544 96389 1558603948046996616\n", + "199 93936530091544 101290 1558603948547002923\n", + "200 93936530091544 101254 1558603949047181160\n", + "201 93936530091544 92851 1558603949547024820\n", + "202 93936530091544 90349 1558603950047043090\n", + "203 93936530091544 97952 1558603950547065751\n", + "204 93936530091544 37623 1558603951046458270\n", + "205 93936530091544 97369 1558603951547064421\n", + "206 93936530091544 102119 1558603952047018825\n", + "207 93936530091544 106770 1558603952547118839\n", + "208 93936530091544 89877 1558603953047329975\n", + "209 93936530091544 40101 1558603953546550638\n", + "210 93936530091544 38863 1558603954046586791\n", + "211 93936530091544 46395 1558603954546637143\n", + "212 93936530091544 42206 1558603955046616386\n", + "213 93936530091544 38081 1558603955546545943\n", + "214 93936530091544 113429 1558603956047384175\n", + "215 93936530091544 100517 1558603956547168577\n", + "216 93936530091544 42406 1558603957046709710\n", + "217 93936530091544 107518 1558603957547326714\n", + "218 93936530091544 100328 1558603958047195769\n", + "219 93936530091544 99632 1558603958547307010\n", + "220 93936530091544 93084 1558603959047486950\n", + "221 93936530091544 97420 1558603959547460243\n", + "222 93936530091544 99150 1558603960047439190\n", + "223 93936530091544 42406 1558603960546836621\n", + "224 93936530091544 105395 1558603961047340642\n", + "225 93936530091544 102526 1558603961547358252\n", + "226 93936530091544 48036 1558603962047014219\n", + "227 93936530091544 97694 1558603962547597928\n", + "228 93936530091544 101910 1558603963047422808\n", + "229 93936530091544 104184 1558603963547603375\n", + "230 93936530091544 111690 1558603964047431055\n", + "231 93936530091544 107106 1558603964547996969\n", + "232 93936530091544 94686 1558603965047483701\n", + "233 93936530091544 99583 1558603965547498718\n", + "234 93936530091544 92317 1558603966047605233\n", + "235 93936530091544 95488 1558603966547610139\n", + "236 93936530091544 99006 1558603967047605713\n", + "237 93936530091544 96187 1558603967547564817\n", + "238 93936530091544 103197 1558603968047723776\n", + "239 93936530091544 107328 1558603968547614374\n", + "240 93936530091544 42354 1558603969047119328\n", + "241 93936530091544 103100 1558603969547648380\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "unhandled event name: ros2:rcl_publisher_init\n", + "unhandled event name: ros2:rcl_service_init\n", + "unhandled event name: ros2:rclcpp_service_callback_added\n", + "unhandled event name: ros2:rcl_service_init\n", + "unhandled event name: ros2:rclcpp_service_callback_added\n", + "unhandled event name: ros2:rcl_service_init\n", + "unhandled event name: ros2:rclcpp_service_callback_added\n", + "unhandled event name: ros2:rcl_service_init\n", + "unhandled event name: ros2:rclcpp_service_callback_added\n", + "unhandled event name: ros2:rcl_service_init\n", + "unhandled event name: ros2:rclcpp_service_callback_added\n", + "unhandled event name: ros2:rcl_service_init\n", + "unhandled event name: ros2:rclcpp_service_callback_added\n", + "unhandled event name: ros2:rcl_publisher_init\n", + "unhandled event name: ros2:rcl_publisher_init\n", + "unhandled event name: ros2:rcl_publisher_init\n", + "unhandled event name: ros2:rcl_service_init\n", + "unhandled event name: ros2:rclcpp_service_callback_added\n", + "unhandled event name: ros2:rcl_service_init\n", + "unhandled event name: ros2:rclcpp_service_callback_added\n", + "unhandled event name: ros2:rcl_service_init\n", + "unhandled event name: ros2:rclcpp_service_callback_added\n", + "unhandled event name: ros2:rcl_service_init\n", + "unhandled event name: ros2:rclcpp_service_callback_added\n", + "unhandled event name: ros2:rcl_service_init\n", + "unhandled event name: ros2:rclcpp_service_callback_added\n", + "unhandled event name: ros2:rcl_service_init\n", + "unhandled event name: ros2:rclcpp_service_callback_added\n", + "unhandled event name: ros2:rcl_publisher_init\n", + "unhandled event name: ros2:rcl_publisher_init\n", + "unhandled event name: ros2:rcl_publisher_init\n", + "unhandled event name: ros2:rcl_service_init\n", + "unhandled event name: ros2:rclcpp_service_callback_added\n", + "unhandled event name: ros2:rcl_service_init\n", + "unhandled event name: ros2:rclcpp_service_callback_added\n", + "unhandled event name: ros2:rcl_service_init\n", + "unhandled event name: ros2:rclcpp_service_callback_added\n", + "unhandled event name: ros2:rcl_service_init\n", + "unhandled event name: ros2:rclcpp_service_callback_added\n", + "unhandled event name: ros2:rcl_service_init\n", + "unhandled event name: ros2:rclcpp_service_callback_added\n", + "unhandled event name: ros2:rcl_service_init\n", + "unhandled event name: ros2:rclcpp_service_callback_added\n", + "unhandled event name: ros2:rcl_publisher_init\n" + ] + } + ], + "source": [ + "pickle_filename = '../../the-pickle-file'\n", + "with open(pickle_filename, 'rb') as f:\n", + " events = _get_events_from_pickled_file(f)\n", + " print(f'imported {len(events)} events')\n", + " processor = ros_process(events)\n", + "\n", + "df = callback_durations_to_df(processor)\n", + "print(df.to_string())" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [], + "source": [ + "# Get a list of callback addresses\n", + "callback_addresses = set(df['callback_address'])\n", + "# Split df\n", + "durations = {}\n", + "for addr in callback_addresses:\n", + " durations[addr] = df.loc[df.loc[:, 'callback_address'] == addr, :]" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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b79dKaXU1q1b1ZlnnqmUUioSiaimpiallFKBQEAtX75crVy5Uiml1COPPKI+85nPqHA4rJRSqrKyUill/B8XXHBBwr68+eabau3atWrevHkx5cuWLVNer1cppdTDDz+svve978Vsv+yyy9QVV1yhfvGLXyillDp06JBau3atUsr4zWbOnKk2b96slDJ+/23btqnTTz9drV69OnoM67ew9h81apQKBoMqFAqpadOmqd27dyu/368WLlwYPZZSSnm9XvVf//VfKi8vL+Fvnej/BtaoDJ+xWlPRDCoC4QgAQfM9Zd1QJKN6moHP1q1bOeGEE8jNzcXlcnH66afz7LPPUlhYGK3T0tIS9Qls2bKFs846C4DZs2ezb98+KisrEZHoCD0YDBIMBqP7PPDAA3z/+9/H4TAei6NHj07brtNOO43i4uIO5du3b+e0004D4Oyzz+Yf//hHdNs///lPpk2bxrx586Jl48aN49hjjwWgoKCAOXPmcPDgQQDmzJnDrFmzOpzD+i3A0MCsfqxatYoZM2Ywbdo0PB4Pn/rUp3juuecACIfD3Hrrrfz85z/vcLyeQocUawYVgZAhJAIZCAu/Fio9zg/+tZkthxrTVzQJh8M4nc6UdeaOL+S2C+elrDN//nxuueUWamtrycnJ4cUXX2TZsmUA3HLLLTz++OMUFRXxxhtvALBo0SKeeeYZTjnlFFatWkVZWRnl5eWMGTOGcDjM0qVL2bVrFzfddBPHH388ALt37+Zvf/sbzz77LKNGjeKee+5h5syZAKxcuZKTTjqJkpISfvnLX8YIhGTtff7557n44ot56qmnOHDgAGAIvp/97Ge8+uqrUdNXPPv27WPdunXRdqXigw8+4Prrr6esrIw//elPuFwuDh48yMSJE6N1SkpK+OCDDwC49957Oe+88xg3blzaY3cVraloBhXBsLH8tSVckhGJKEIRpYXKEGHOnDl861vf4uyzz+bcc89l0aJF0VH6j3/8Yw4cOMDVV1/NvffeC8C3v/1t6uvrWbx4Mb/97W9ZsmRJtL7T6WT9+vWUl5ezatWqqL/F7/eTnZ3NmjVr+NznPsf1118PwLHHHktZWRnvvfceN998M5dcckna9j7yyCPcd999LF26lKamJjweDwC33XYbX/3qV5P6M5qbm7n88su56667YrSwZBx//PFs3ryZ1atX89Of/hSf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\n", + "text/plain": [ + "" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "plt.figure()\n", + "for addr, duration in durations.items():\n", + " ax = duration.plot(x='start_timestamp', y='duration')\n", + " ax.legend([str(addr)])\n", + " ax.set_xlabel('start timestamp')\n", + " ax.set_ylabel('duration (ns)')\n", + " plt.title('Callback durations over time')\n", + " plt.grid()" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXQAAAEICAYAAABPgw/pAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMS4xLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvAOZPmwAAFRpJREFUeJzt3X+Q3Hd93/HnOxbGjs+xJBtfhezkTFHdOGgQ1o1jQofe4do1iMRuahI7niBTJ5omgdKpmFaUmY6bJlORjknINBNQYoLKEM6OA5UHh4Cr+MrAgEECY9kxRsYjwLIixSALn+OUCN79Yz+XrE+32t273du9zz0fMzf7/X72893v+/vWVy/tffeHIjORJC1/PzToAiRJvWGgS1IlDHRJqoSBLkmVMNAlqRIGuiRVwkDXshQRH4yI31iifd0cEZ9ain1Ji2GgS00iYiwiMiJWzY5l5ocz85pB1iV1wkDXihIRZwy6BqlfDHQtCxHxqoj4UkQ8GxF3AmeV8Vsi4jNz5mZEvLwsfzAifj8i/iwingMmI2JLRHw5Ir4bEd+KiNuaNv90uX0mImYi4tVz9xERPxURX4yIE+X2p5rum46I/xYRny21fioiLuhTW6QXMNA19CLiTOB/Ax8C1gJ/AvzrLh7iF4DfBM4FPgM8B7wZWA1sAX4lIq4vc19bbldn5khmfm5OLWuBe4HfBc4H3gPcGxHnz9nfW4ALgTOBd3RRq7RgBrqWgyuBFwG/k5l/l5l3A1/sYvs9mfnZzPxBZv5tZk5n5oGy/hDwEeCfd/hYW4CDmfmhzDyZmR8Bvgr8dNOcP8rMr2Xm88BdwKYuapUWzEDXcvBS4HC+8JvkvtHF9t9qXomIn4yI+yPiryPiBPBvgU4vi7x0nn1/A1jftP5XTct/A4x0Uau0YAa6loMjwPqIiKaxHy23zwE/PDsYEf9onu3nfqXoHwP3ABdn5nnA+4BoMXeup4AfmzP2o8DhNttJfWegazn4HHAS+HcRsSoifha4otz3FeAnImJTRJwF3NbB450LfCcz/zYirqBxzXvWXwM/AF7WYts/A/5JRPxCqeXngcuAj3d9VFKPGegaepn5PeBngVuA48DPAx8t930N+HXg/wAHabzo2c6vAr8eEc8C/4XGde7Zff0NjRdQPxsRz0TElXNq+TbwRmA78G3gPwJvzMynF3GIUk+E/8GFJNXBZ+iSVAkDXZIqYaBLUiUMdEmqxKr2U3rnggsuyLGxsaXcZUvPPfcc55xzzqDLGCh70GAf7MGsYe3D/v37n87Ml7Sb1zbQI+JS4M6moZfReKvX/yrjY8Ah4Ocy8/jpHmtsbIx9+/a12+WSmJ6eZmJiYtBlDJQ9aLAP9mDWsPYhIjr6ZHTbSy6Z+VhmbsrMTcBmGh9l/hiwA9ibmRuAvWVdkjQg3V5Dvwr4emZ+A7gO2F3GdwPXt9xKktR33Qb6jTS+mQ5gNDOPAJTbC3tZmCSpOx1/UrR8J/VTwE9k5tGIeCYzVzfdfzwz18yz3TZgG8Do6Ojmqamp3lS+SDMzM4yMrOwvwbMHDfbBHswa1j5MTk7uz8zxdvO6eZfL64EvZebRsn40ItZl5pGIWAccm2+jzNwF7AIYHx/PYXnBYVhf/FhK9qDBPtiDWcu9D91ccrmJf7jcAo2vH91alrcCe3pVlCSpex0FekT8MHA15Rvuip3A1RFxsNy3s/flSZI61dEll/KVoufPGfs2jXe9SJKGgB/9l6RKLOlH/9WdsR339vXxt288yS3z7OPQzi193a+k/vAZuiRVwkCXpEoY6JJUCQNdkiphoEtSJQx0SaqEgS5JlTDQJakSBrokVcJAl6RKGOiSVAkDXZIqYaBLUiUMdEmqhIEuSZUw0CWpEga6JFXCQJekShjoklQJA12SKtFRoEfE6oi4OyK+GhGPRsSrI2JtRNwXEQfL7Zp+FytJaq3TZ+jvBf48M/8p8ErgUWAHsDczNwB7y7okaUDaBnpE/AjwWuAOgMz8XmY+A1wH7C7TdgPX96tISVJ7kZmnnxCxCdgF/CWNZ+f7gbcDhzNzddO845l5ymWXiNgGbAMYHR3dPDU11bvqF2FmZoaRkZFBl3FaBw6f6Ovjj54NR58/dXzj+vP6ut9hsxzOhX6zBw3D2ofJycn9mTnebl4ngT4OfB54TWY+EBHvBb4LvK2TQG82Pj6e+/bt6+gA+m16epqJiYlBl3FaYzvu7evjb994ktsPrDpl/NDOLX3d77BZDudCv9mDhmHtQ0R0FOidXEN/EngyMx8o63cDlwNHI2Jd2dk64NhCi5UkLV7bQM/MvwK+FRGXlqGraFx+uQfYWsa2Anv6UqEkqSOn/r49v7cBH46IM4EngLfQ+Mfgroi4Ffgm8Kb+lChJ6kRHgZ6ZDwLzXb+5qrflSJIWyk+KSlIlDHRJqoSBLkmVMNAlqRIGuiRVwkCXpEoY6JJUCQNdkiphoEtSJQx0SaqEgS5JlTDQJakSBrokVcJAl6RKGOiSVAkDXZIqYaBLUiUMdEmqhIEuSZUw0CWpEga6JFViVSeTIuIQ8CzwfeBkZo5HxFrgTmAMOAT8XGYe70+ZkqR2unmGPpmZmzJzvKzvAPZm5gZgb1mXJA3IYi65XAfsLsu7gesXX44kaaE6DfQEPhUR+yNiWxkbzcwjAOX2wn4UKEnqTGRm+0kRL83MpyLiQuA+4G3APZm5umnO8cxcM8+224BtAKOjo5unpqZ6VvxizMzMMDIyMugyTuvA4RN9ffzRs+Ho86eOb1x/Xl/3O2yWw7nQb/agYVj7MDk5ub/pcndLHQX6CzaIuA2YAX4ZmMjMIxGxDpjOzEtPt+34+Hju27evq/31y/T0NBMTE4Mu47TGdtzb18ffvvEktx849XXxQzu39HW/w2Y5nAv9Zg8ahrUPEdFRoLe95BIR50TEubPLwDXAw8A9wNYybSuwZ+HlSpIWq5O3LY4CH4uI2fl/nJl/HhFfBO6KiFuBbwJv6l+ZkqR22gZ6Zj4BvHKe8W8DV/WjKElS9/ykqCRVwkCXpEoY6JJUCQNdkiphoEtSJQx0SaqEgS5JlTDQJakSBrokVcJAl6RKGOiSVAkDXZIqYaBLUiUMdEmqhIEuSZUw0CWpEga6JFXCQJekShjoklQJA12SKmGgS1IlDHRJqkTHgR4RZ0TElyPi42X9koh4ICIORsSdEXFm/8qUJLXTzTP0twOPNq2/G/jtzNwAHAdu7WVhkqTudBToEXERsAX4w7IewOuAu8uU3cD1/ShQktSZyMz2kyLuBv47cC7wDuAW4POZ+fJy/8XAJzLzFfNsuw3YBjA6Orp5amqqZ8UvxszMDCMjI4Mu47QOHD7R18cfPRuOPn/q+Mb15/V1v8NmOZwL/WYPGoa1D5OTk/szc7zdvFXtJkTEG4Fjmbk/IiZmh+eZOu+/DJm5C9gFMD4+nhMTE/NNW3LT09MMSy2t3LLj3r4+/vaNJ7n9wKmnwKGbJ/q632GzHM6FfrMHDcu9D20DHXgN8DMR8QbgLOBHgN8BVkfEqsw8CVwEPNW/MiVJ7bS9hp6Z78zMizJzDLgR+IvMvBm4H7ihTNsK7OlblZKkthbzPvT/BPyHiHgcOB+4ozclSZIWopNLLn8vM6eB6bL8BHBF70uSJC2EnxSVpEoY6JJUCQNdkiphoEtSJQx0SaqEgS5JlTDQJakSBrokVcJAl6RKGOiSVAkDXZIqYaBLUiUMdEmqhIEuSZUw0CWpEga6JFXCQJekShjoklQJA12SKmGgS1IlDHRJqkTbQI+IsyLiCxHxlYh4JCL+axm/JCIeiIiDEXFnRJzZ/3IlSa108gz9/wGvy8xXApuAayPiSuDdwG9n5gbgOHBr/8qUJLXTNtCzYaasvqj8JPA64O4yvhu4vi8VSpI6EpnZflLEGcB+4OXA7wH/A/h8Zr683H8x8InMfMU8224DtgGMjo5unpqaWlChBw6fWNB2rYyeDUefbz9v4/rzerrfbvT6mOdq1YNBHvMgzMzMMDIyMugyBsoeNAxrHyYnJ/dn5ni7eas6ebDM/D6wKSJWAx8Dfny+aS223QXsAhgfH8+JiYlOdnmKW3bcu6DtWtm+8SS3H2h/+IdunujpfrvR62Oeq1UPBnnMgzA9Pc1Cz8ta2IOG5d6Hrt7lkpnPANPAlcDqiJhNg4uAp3pbmiSpG528y+Ul5Zk5EXE28C+AR4H7gRvKtK3Ann4VKUlqr5NLLuuA3eU6+g8Bd2XmxyPiL4GpiPgN4MvAHX2sU5LURttAz8yHgFfNM/4EcEU/ipIkdc9PikpSJQx0SaqEgS5JlTDQJakSBrokVcJAl6RKGOiSVAkDXZIqYaBLUiUMdEmqhIEuSZUw0CWpEga6JFXCQJekShjoklQJA12SKmGgS1IlDHRJqoSBLkmVMNAlqRIGuiRVwkCXpEq0DfSIuDgi7o+IRyPikYh4exlfGxH3RcTBcrum/+VKklrp5Bn6SWB7Zv44cCXwaxFxGbAD2JuZG4C9ZV2SNCBtAz0zj2Tml8rys8CjwHrgOmB3mbYbuL5fRUqS2ovM7HxyxBjwaeAVwDczc3XTfccz85TLLhGxDdgGMDo6unlqampBhR44fGJB27UyejYcfb79vI3rz+vpfrvR62Oeq1UPBnnMgzAzM8PIyMigyxgoe9AwrH2YnJzcn5nj7eZ1HOgRMQL8X+A3M/OjEfFMJ4HebHx8PPft29fR/uYa23HvgrZrZfvGk9x+YFXbeYd2bunpfrvR62Oeq1UPBnnMgzA9Pc3ExMSgyxgoe9AwrH2IiI4CvaN3uUTEi4A/BT6cmR8tw0cjYl25fx1wbKHFSpIWr5N3uQRwB/BoZr6n6a57gK1leSuwp/flSZI61f6aA7wG+EXgQEQ8WMb+M7ATuCsibgW+CbypPyVKkjrRNtAz8zNAtLj7qt6WI0laKD8pKkmVMNAlqRIGuiRVopMXRbXC9Pv976ez0t4DL/WSz9AlqRIGuiRVwkCXpEoY6JJUCQNdkiphoEtSJQx0SaqEgS5JlTDQJakSBrokVcJAl6RKGOiSVAkDXZIqYaBLUiUMdEmqhIEuSZUw0CWpEm0DPSI+EBHHIuLhprG1EXFfRBwst2v6W6YkqZ1OnqF/ELh2ztgOYG9mbgD2lnVJ0gC1DfTM/DTwnTnD1wG7y/Ju4Poe1yVJ6lJkZvtJEWPAxzPzFWX9mcxc3XT/8cyc97JLRGwDtgGMjo5unpqaWlChBw6fWNB2rYyeDUefbz9v4/rzerrfbvT6mOfqtAdLaRD9npmZYWRkZMn3O0zsQcOw9mFycnJ/Zo63m7eq34Vk5i5gF8D4+HhOTEws6HFu6fH/RL9940luP9D+8A/dPNHT/Xaj18c8V6c9WEqD6Pf09DQLPS9rYQ8alnsfFvoul6MRsQ6g3B7rXUmSpIVYaKDfA2wty1uBPb0pR5K0UJ28bfEjwOeASyPiyYi4FdgJXB0RB4Gry7okaYDaXkDNzJta3HVVj2uRJC2CnxSVpEoY6JJUCQNdkiphoEtSJQx0SaqEgS5JlTDQJakSBrokVcJAl6RKGOiSVAkDXZIqYaBLUiUMdEmqxHD9dzVa8cb6/L80zWf7xpNMLPlepd7zGbokVcJAl6RKGOiSVAkDXZIqYaBLUiUMdEmqhIEuSZUw0CWpEov6YFFEXAu8FzgD+MPM3NmTqobIID7oIqk/2v193r7xJLf04e/8oZ1bev6Y81nwM/SIOAP4PeD1wGXATRFxWa8KkyR1ZzGXXK4AHs/MJzLze8AUcF1vypIkdSsyc2EbRtwAXJuZv1TWfxH4ycx865x524BtZfVS4LGFl9tTFwBPD7qIAbMHDfbBHswa1j78WGa+pN2kxVxDj3nGTvnXITN3AbsWsZ++iIh9mTk+6DoGyR402Ad7MGu592Exl1yeBC5uWr8IeGpx5UiSFmoxgf5FYENEXBIRZwI3Avf0pixJUrcWfMklM09GxFuBT9J42+IHMvORnlXWf0N3GWgA7EGDfbAHs5Z1Hxb8oqgkabj4SVFJqoSBLkmVWPaBHhGHIuJARDwYEfvK2NqIuC8iDpbbNWU8IuJ3I+LxiHgoIi5vepytZf7BiNjaNL65PP7jZdv53q655CLiAxFxLCIebhrr+3G32scgtOjBbRFxuJwPD0bEG5rue2c5nsci4l82jV9bxh6PiB1N45dExAPlWO8sL/4TES8u64+X+8eW5ohPFREXR8T9EfFoRDwSEW8v4yvtXGjVhxV1PpCZy/oHOARcMGfst4AdZXkH8O6y/AbgEzTeQ38l8EAZXws8UW7XlOU15b4vAK8u23wCeP2gj7nU9VrgcuDhpTzuVvsYoh7cBrxjnrmXAV8BXgxcAnydxov5Z5TllwFnljmXlW3uAm4sy+8DfqUs/yrwvrJ8I3DnAHuwDri8LJ8LfK0c60o7F1r1YWWdD4PacQ//IA9xaqA/Bqxr+oN+rCy/H7hp7jzgJuD9TePvL2PrgK82jb9g3qB/gDFeGGZ9P+5W+xiiHrT6C/xO4J1N658sIfVq4JNz55XwehpYVcb/ft7stmV5VZkXgz4fSj17gKtX4rnQog8r6nxY9pdcaHw69VMRsT8aXzMAMJqZRwDK7YVlfD3wraZtnyxjpxt/cp7xYbUUx91qH8PkreVywgeaLgN024PzgWcy8+Sc8Rc8Vrn/RJk/UOVX/VcBD7CCz4U5fYAVdD7UEOivyczLaXzr469FxGtPM7fV1xV0O77crKTj/n3gHwObgCPA7WW8lz0Yuv5ExAjwp8C/z8zvnm7qPGPVnAvz9GFFnQ/LPtAz86lyewz4GI1vgTwaEesAyu2xMr3V1xWcbvyiecaH1VIcd6t9DIXMPJqZ38/MHwB/QON8gO578DSwOiJWzRl/wWOV+88DvtP7o+lMRLyIRoh9ODM/WoZX3LkwXx9W2vmwrAM9Is6JiHNnl4FrgIdpfAXB7Kv0W2lcT6OMv7m80n8lcKL8qvhJ4JqIWFN+JbuGxvWxI8CzEXFleWX/zU2PNYyW4rhb7WMozAZM8a9onA/QqPvG8o6ES4ANNF7sm/crLLJxQfR+4Iay/dx+zvbgBuAvyvwlV/587gAezcz3NN21os6FVn1YaefDwF+8WMwPjVeiv1J+HgHeVcbPB/YCB8vt2jIeNP5Tjq8DB4Dxpsf6N8Dj5ectTePjNE6CrwP/k+F58esjNH6F/DsazxBuXYrjbrWPIerBh8oxPkTjL9q6pvnvKsfzGE3vVqLxzo+vlfveNef8+kLpzZ8ALy7jZ5X1x8v9LxtgD/4ZjV/vHwIeLD9vWIHnQqs+rKjzwY/+S1IllvUlF0nSPzDQJakSBrokVcJAl6RKGOiSVAkDXZIqYaBLUiX+P1e/rh/H+ayrAAAAAElFTkSuQmCC\n", + "text/plain": [ + "" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "plt.figure()\n", + "for addr, duration in durations.items():\n", + " duration.hist(column='duration')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "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.6.7" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/package.xml b/package.xml new file mode 100644 index 0000000..e9f29b9 --- /dev/null +++ b/package.xml @@ -0,0 +1,15 @@ + + + + tracetools_analysis + 0.1.0 + Tools for analysing trace data + + Ingo Luetkebohle + Ingo Luetkebohle + GPLv3 + + + ament_python + + diff --git a/setup.cfg b/setup.cfg new file mode 100644 index 0000000..721ff12 --- /dev/null +++ b/setup.cfg @@ -0,0 +1,4 @@ +[develop] +script-dir=$base/lib/tracetools_analysis +[install] +install-scripts=$base/lib/tracetools_analysis diff --git a/setup.py b/setup.py new file mode 100644 index 0000000..d4b8330 --- /dev/null +++ b/setup.py @@ -0,0 +1,21 @@ +from setuptools import setup + +package_name = 'tracetools_analysis' + +setup( + name=package_name, + version='0.1.0', + packages=[package_name], + data_files=[ + ('share/' + package_name, ['package.xml']), + ], + install_requires=['setuptools'], + keywords=['ROS'], + description='Tools for analysing trace data', + entry_points={ + 'console_scripts': [ + f'convert = {package_name}.convert:main', + f'process = {package_name}.process:main', + ], + }, +) diff --git a/test/test_tracepoints.py b/test/test_tracepoints.py new file mode 100644 index 0000000..f79ac3e --- /dev/null +++ b/test/test_tracepoints.py @@ -0,0 +1,22 @@ +# Test tracetools tracepoints + +import unittest +from tracetools_analysis.test.utils import * + +class TestTracepoints(unittest.TestCase): + + def test_something(self): + self.assertTrue(True) + + def test_publisher_creation(self): + session_name = 'test-session' + path = '/tmp' + package_name = '' + executable_name = '' + run_and_trace(package_name, executable_name, session_name, path) + event_names = get_trace_event_names(f'{path}/{session_name}') + self.assertTrue('ros2:rcl_publisher_init' in event_names) + + +if __name__ == '__main__': + unittest.main() diff --git a/trace.py b/trace.py deleted file mode 100644 index 002c220..0000000 --- a/trace.py +++ /dev/null @@ -1,25 +0,0 @@ -#!/usr/bin/env python3 -# Entrypoint/script to setup and start an LTTng tracing session -# TODO - -import sys -import time -from tracetools_analysis.tracing.lttng import * - -def main(argv=sys.argv): - if len(argv) != 3: - print("usage: session-name /path") - exit(1) - - session_name = argv[1] - path = argv[2] + '/' + session_name - lttng_setup(session_name, path) - lttng_start(session_name) - print(f'tracing session started: {path}') - - # TODO integrate this with launch + ROS shutdown - input('press enter to stop...') - - print('stopping & destroying tracing session') - lttng_stop(session_name) - lttng_destroy(session_name) diff --git a/__init__.py b/tracetools_analysis/__init__.py similarity index 100% rename from __init__.py rename to tracetools_analysis/__init__.py diff --git a/conversion/__init__.py b/tracetools_analysis/analysis/__init__.py similarity index 100% rename from conversion/__init__.py rename to tracetools_analysis/analysis/__init__.py diff --git a/analysis/lttng_models.py b/tracetools_analysis/analysis/lttng_models.py similarity index 100% rename from analysis/lttng_models.py rename to tracetools_analysis/analysis/lttng_models.py diff --git a/analysis/ros_processor.py b/tracetools_analysis/analysis/ros_processor.py similarity index 100% rename from analysis/ros_processor.py rename to tracetools_analysis/analysis/ros_processor.py diff --git a/analysis/to_pandas.py b/tracetools_analysis/analysis/to_pandas.py similarity index 100% rename from analysis/to_pandas.py rename to tracetools_analysis/analysis/to_pandas.py diff --git a/tracing/__init__.py b/tracetools_analysis/conversion/__init__.py similarity index 100% rename from tracing/__init__.py rename to tracetools_analysis/conversion/__init__.py diff --git a/conversion/ctf.py b/tracetools_analysis/conversion/ctf.py similarity index 100% rename from conversion/ctf.py rename to tracetools_analysis/conversion/ctf.py diff --git a/convert.py b/tracetools_analysis/convert.py similarity index 100% rename from convert.py rename to tracetools_analysis/convert.py diff --git a/process.py b/tracetools_analysis/process.py similarity index 100% rename from process.py rename to tracetools_analysis/process.py diff --git a/tracetools_analysis/test/__init__.py b/tracetools_analysis/test/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/tracetools_analysis/test/utils.py b/tracetools_analysis/test/utils.py new file mode 100644 index 0000000..fc54e91 --- /dev/null +++ b/tracetools_analysis/test/utils.py @@ -0,0 +1,41 @@ +# Utils for tracetools testing + +import subprocess +import babeltrace +from ..trace import * + +def get_trace_event_names(trace_directory): + """ + Get a set of event names in a trace + :param trace_directory (str): the path to the main/top trace directory + :return: event names (set(str)) + """ + tc = babeltrace.TraceCollection() + tc.add_traces_recursive(trace_directory, 'ctf') + + event_names = set() + + for event in tc.events: + event_names.add(event.name) + + return event_names + + +def run_and_trace(package_name, executable_name, session_name, path): + """ + Setup, start tracing, and run a ROS 2 executable + :param package_name (str): the name of the package + :param executable_name (str): the name of the executable to run + :param session_name (str): the name of the session + :param directory (str): the path of the main directory to write trace data to + """ + # Enable all events + lttng_setup(session_name, path) + lttng_start(session_name) + _run(package_name, executable_name) + lttng_stop(session_name) + lttng_destroy(session_name) + + +def _run(package_name, executable_name): + subprocess.check_call(['ros2', 'run', package_name, executable_name]) diff --git a/tracetools_analysis/tracing/__init__.py b/tracetools_analysis/tracing/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/tracing/lttng.py b/tracing/lttng.py deleted file mode 100644 index b790d5b..0000000 --- a/tracing/lttng.py +++ /dev/null @@ -1,183 +0,0 @@ -# LTTng tracing interface - -# Temporary workaround -import sys -sys.path = ['/usr/local/lib/python3.6/site-packages'] + sys.path - -from lttng import * -from .names import DEFAULT_EVENTS_ROS, DEFAULT_EVENTS_KERNEL, DEFAULT_CONTEXT - -def lttng_setup(session_name, directory, ros_events=DEFAULT_EVENTS_ROS, kernel_events=DEFAULT_EVENTS_KERNEL, context_names=DEFAULT_CONTEXT): - """ - Setup LTTng session, with events and context - :param session_name (str): the name of the session - :param directory (str): the path of the main directory to write trace data to - :param ros_events (list(str)): list of ROS events to enable - :param kernel_events (list(str)): list of kernel events to enable - :param context_names (list(str)): list of context elements to enable - """ - ust_enabled = ros_events is not None and len(ros_events) > 0 - kernel_enabled = kernel_events is not None and len(kernel_events) > 0 - print(f'UST tracing {f"enabled ({len(ros_events)} events)" if ust_enabled else "disabled"}') - print(f'kernel tracing {f"enabled ({len(kernel_events)} events)" if kernel_enabled else "disabled"}') - - # Domains - if ust_enabled: - domain_ust = Domain() - domain_ust.type = DOMAIN_UST - domain_ust.buf_type = BUFFER_PER_UID - channel_ust = Channel() - channel_ust.name = 'ros2' - channel_ust.attr.overwrite = 0 - channel_ust.attr.subbuf_size = 2*4096 - channel_ust.attr.num_subbuf = 8 - channel_ust.attr.switch_timer_interval = 0 - channel_ust.attr.read_timer_interval = 200 - channel_ust.attr.output = EVENT_MMAP - events_list_ust = _create_events(ros_events) - if kernel_enabled: - domain_kernel = Domain() - domain_kernel.type = DOMAIN_KERNEL - domain_kernel.buf_type = BUFFER_GLOBAL - channel_kernel = Channel() - channel_kernel.name = 'kchan' - channel_kernel.attr.overwrite = 0 - channel_kernel.attr.subbuf_size = 8*4096 - channel_kernel.attr.num_subbuf = 8 - channel_kernel.attr.switch_timer_interval = 0 - channel_kernel.attr.read_timer_interval = 200 - channel_kernel.attr.output = EVENT_MMAP - events_list_kernel = _create_events(kernel_events) - - # Session - _create_session(session_name, directory) - - # Handles, channels, events - handle_ust = None - if ust_enabled: - handle_ust = _create_handle(session_name, domain_ust) - _enable_channel(handle_ust, channel_ust) - _enable_events(handle_ust, events_list_ust, channel_ust.name) - handle_kernel = None - if kernel_enabled: - handle_kernel = _create_handle(session_name, domain_kernel) - _enable_channel(handle_kernel, channel_kernel) - _enable_events(handle_kernel, events_list_kernel, channel_kernel.name) - - # Context - context_list = _create_context_list(context_names) - enabled_handles = [h for h in [handle_ust, handle_kernel] if h is not None] - _add_context(enabled_handles, context_list) - -def lttng_start(session_name): - """ - Start LTTng session, and check for errors - """ - result = start(session_name) - if result < 0: - raise RuntimeError(f'failed to start tracing: {strerror(result)}') - -def lttng_stop(session_name): - """ - Stop LTTng session, and check for errors - """ - result = stop(session_name) - if result < 0: - raise RuntimeError(f'failed to stop tracing: {strerror(result)}') - -def lttng_destroy(session_name): - """ - Destroy LTTng session, and check for errors - """ - result = destroy(session_name) - if result < 0: - raise RuntimeError(f'failed to destroy tracing session: {strerror(result)}') - -def _create_events(event_names_list): - """ - Create events list from names - """ - events_list = [] - for event_name in event_names_list: - e = Event() - e.name = event_name - e.type = EVENT_TRACEPOINT - e.loglevel_type = EVENT_LOGLEVEL_ALL - events_list.append(e) - return events_list - -def _create_session(session_name, directory): - """ - Create session from name and directory path, and check for errors - """ - result = create(session_name, directory) - LTTNG_ERR_EXIST_SESS = 28 - if result == -LTTNG_ERR_EXIST_SESS: - # Sessions seem to persist, so if it already exists, - # just destroy it and try again - lttng_destroy(session_name) - result = create(session_name, directory) - if result < 0: - raise RuntimeError(f'session creation failed: {strerror(result)}') - -def _create_handle(session_name, domain): - """ - Create a handle for a given session name and a domain, and check for errors - """ - handle = None - handle = Handle(session_name, domain) - if handle is None: - raise RuntimeError('handle creation failed') - return handle - -def _enable_channel(handle, channel): - """ - Enable channel for a handle, and check for errors - """ - result = enable_channel(handle, channel) - if result < 0: - raise RuntimeError(f'channel enabling failed: {strerror(result)}') - -def _enable_events(handle, events_list, channel_name): - """ - Enable events list for a given handle and channel name, and check for errors - """ - for event in events_list: - result = enable_event(handle, event, channel_name) - if result < 0: - raise RuntimeError(f'event enabling failed: {strerror(result)}') - -context_map = { - 'procname': EVENT_CONTEXT_PROCNAME, - 'pid': EVENT_CONTEXT_PID, - 'vpid': EVENT_CONTEXT_VPID, - 'vtid': EVENT_CONTEXT_VTID, -} -def _context_name_to_type(context_name): - """ - Convert from context name to LTTng enum/constant type - """ - return context_map.get(context_name) - -def _create_context_list(context_names_list): - """ - Create context list from names, and check for errors - """ - context_list = [] - for c in context_names_list: - ec = EventContext() - context_type = _context_name_to_type(c) - if context_type is not None: - ec.ctx = context_type - context_list.append(ec) - return context_list - -def _add_context(handles, context_list): - """ - Add context list to given handles, and check for errors - """ - for handle in handles: - for contex in context_list: - result = add_context(handle, contex, None, None) - if result < 0: - raise RuntimeError(f'failed to add context: {strerror(result)}') diff --git a/tracing/names.py b/tracing/names.py deleted file mode 100644 index aec29f6..0000000 --- a/tracing/names.py +++ /dev/null @@ -1,64 +0,0 @@ -# Lists of names (events, context) - -DEFAULT_EVENTS_KERNEL=[ - 'block_rq_complete', - 'block_rq_insert', - 'block_rq_issue', - 'block_bio_frontmerge', - 'irq_softirq_entry', - 'irq_softirq_raise' - 'irq_softirq_exit', - 'irq_handler_entry', - 'irq_handler_exit', - 'lttng_statedump_process_state', - 'lttng_statedump_start', - 'lttng_statedump_end', - 'lttng_statedump_network_interface', - 'lttng_statedump_block_device', - 'net_dev_queue', - 'netif_receive_skb', - 'net_if_receive_skb', - 'power_cpu_frequency', - 'sched_switch', - 'sched_waking', - 'sched_pi_setprio', - 'sched_process_fork', - 'sched_process_exit', - 'sched_process_free', - 'sched_wakeup', - 'sched_migrate', - 'sched_migrate_task', - 'timer_hrtimer_start', - 'timer_hrtimer_cancel', - 'timer_hrtimer_expire_entry', - 'timer_hrtimer_expire_exit', -] - -DEFAULT_EVENTS_ROS=[ - 'ros2:rcl_init', - 'ros2:rcl_node_init', - 'ros2:rcl_publisher_init', - 'ros2:rcl_subscription_init', - 'ros2:rclcpp_subscription_callback_added', - 'ros2:rclcpp_subscription_callback_start', - 'ros2:rclcpp_subscription_callback_end', - 'ros2:rcl_service_init', - 'ros2:rclcpp_service_callback_added', - 'ros2:rclcpp_service_callback_start', - 'ros2:rclcpp_service_callback_end', - 'ros2:rcl_client_init', - 'ros2:rcl_timer_init', - 'ros2:rclcpp_timer_callback_added', - 'ros2:rclcpp_timer_callback_start', - 'ros2:rclcpp_timer_callback_end', - 'ros2:rclcpp_callback_register', -] - -DEFAULT_CONTEXT=[ - 'procname', - 'perf:thread:instructions', - 'perf:thread:cycles', - 'perf:thread:cpu-cycles', - 'vpid', - 'vtid', -]