blob: 2b1489d0a4589bfdb5765d71a654af8a199540d1 [file] [log] [blame]
{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"import logging\n",
"from conf import LisaLogging\n",
"LisaLogging.setup()\n",
"\n",
"# Uncomment the follwing line to enabled devlib debugging statements\n",
"# logging.getLogger('ssh').setLevel(logging.DEBUG)"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Populating the interactive namespace from numpy and matplotlib\n"
]
}
],
"source": [
"# Generate plots inline\n",
"%matplotlib inline\n",
"\n",
"import copy\n",
"import json\n",
"import os\n",
"import time\n",
"\n",
"# Support to access the remote target\n",
"import devlib\n",
"from env import TestEnv\n",
"\n",
"# Support to configure and run RTApp based workloads\n",
"from wlgen import RTA\n",
"\n",
"# Support for performance analysis of RTApp workloads\n",
"from perf_analysis import PerfAnalysis\n",
"\n",
"# Support for trace events analysis\n",
"from trace import Trace\n",
"\n",
"# Suport for FTrace events parsing and visualization\n",
"import trappy"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Test environment setup"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"# Setup a target configuration\n",
"my_target_conf = {\n",
" \n",
" # Define the kind of target platform to use for the experiments\n",
" \"platform\" : 'linux', # Linux system, valid other options are:\n",
" # android - access via ADB\n",
" # linux - access via SSH\n",
" # host - direct access\n",
" \n",
" # Preload settings for a specific target\n",
" \"board\" : 'juno', # load JUNO specific settings, e.g.\n",
" # - HWMON based energy sampling\n",
" # - Juno energy model\n",
" # valid options are:\n",
" # - juno - JUNO Development Board\n",
" # - tc2 - TC2 Development Board\n",
" # - oak - Mediatek MT63xx based target\n",
"\n",
" # Define devlib module to load\n",
" \"modules\" : [\n",
" 'bl', # enable big.LITTLE support\n",
" 'cpufreq', # enable CPUFreq support\n",
" ],\n",
"\n",
" # Account to access the remote target\n",
" \"host\" : '192.168.0.10',\n",
" \"username\" : 'root',\n",
" \"password\" : '',\n",
"\n",
"\n",
" # Comment the following line to force rt-app calibration on your target\n",
" \"rtapp-calib\" : {\n",
" '0': 361, '1': 138, '2': 138, '3': 352, '4': 360, '5': 353\n",
" }\n",
"\n",
"}\n",
"\n",
"# Setup the required Test Environment supports\n",
"my_tests_conf = {\n",
" \n",
" # Binary tools required to run this experiment\n",
" # These tools must be present in the tools/ folder for the architecture\n",
" \"tools\" : ['trace-cmd'],\n",
" \n",
" # FTrace events buffer configuration\n",
" # events listed here MUST be \n",
" \"ftrace\" : {\n",
" \n",
" \n",
"##############################################################################\n",
"# EVENTS SPECIFICATIPON\n",
"##############################################################################\n",
"# Here is where we specify the list of events we are interested into:\n",
"# Events are of two types:\n",
"# 1. FTrace tracepoints that _must_ be supported by the target's kernel in use.\n",
"# These events will be enabled at ftrace start time, thus if the kernel does\n",
"# not support one of them, ftrace starting will fails.\n",
"\n",
" \"events\" : [\n",
" \"sched_switch\",\n",
" \"cpu_frequency\",\n",
" ],\n",
"\n",
"# 2. FTrace events generated via trace_printk, from either kernel or user\n",
"# space. These events are different from the previous because they do not\n",
"# need to be explicitely enabled at ftrace start time.\n",
"# It's up to the user to ensure that the generated events satisfies these\n",
"# formatting requirements:\n",
"# a) the name must be a unique word into the trace\n",
"# b) values must be reported as a sequence of key=value paires\n",
"# For example, a valid custom event string is:\n",
"# my_math_event: kay1=val1 key2=val2 key3=val3\n",
"\n",
" \"custom\" : [\n",
" \"my_math_event\",\n",
" ],\n",
" \n",
"# For each of these events, TRAPpy will generate a Pandas dataframe accessible\n",
"# via a TRAPpy::FTrace object, whith the same name of the event.\n",
"# Thus for example, ftrace.my_math_event will be the object exposing the\n",
"# dataframe with all the event matching the \"my_math_event\" unique word.\n",
" \n",
"##############################################################################\n",
" \n",
" \"buffsize\" : 10240,\n",
" },\n",
"\n",
"}"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {
"collapsed": false,
"scrolled": false
},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"05:26:51 INFO : Target - Using base path: /home/derkling/Code/schedtest\n",
"05:26:51 INFO : %14s - Loading custom (inline) target configuration\n",
"05:26:51 INFO : Target - Connecting linux target with: {'username': 'root', 'host': '192.168.0.10', 'password': ''}\n",
"05:26:55 INFO : Target - Initializing target workdir [/root/devlib-target]\n",
"05:26:58 INFO : Target topology: [[0, 3, 4, 5], [1, 2]]\n",
"05:27:00 INFO : FTrace - Enabled events:\n",
"05:27:00 INFO : FTrace - ['sched_switch', 'cpu_frequency']\n",
"05:27:00 INFO : EnergyMeter - HWMON module not enabled\n",
"05:27:00 WARNING : EnergyMeter - Energy sampling disabled by configuration\n"
]
}
],
"source": [
"# Initialize a test environment using:\n",
"# the provided target configuration (my_target_conf)\n",
"# the provided test configuration (my_test_conf)\n",
"te = TestEnv(target_conf=my_target_conf, test_conf=my_tests_conf)\n",
"target = te.target"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"05:27:00 INFO : Target ABI: arm64, CPus: ['A53', 'A57', 'A57', 'A53', 'A53', 'A53']\n"
]
}
],
"source": [
"logging.info(\"Target ABI: %s, CPus: %s\",\n",
" target.abi,\n",
" target.cpuinfo.cpu_names)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Example of custom event definition"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"05:27:05 INFO : Generating events from user-space (will take ~140[s])...\n"
]
}
],
"source": [
"# Define the format string for the custom events we will inject from user-space\n",
"my_math_event_fmt = \"my_math_event: sin={} cos={}\"\n",
"\n",
"# Start FTrace\n",
"te.ftrace.start()\n",
"\n",
"# Let's generate some interesting \"custom\" events from userspace\n",
"logging.info('Generating events from user-space (will take ~140[s])...')\n",
"for angle in range(360):\n",
" v_sin = int(1e6 * math.sin(math.radians(angle)))\n",
" v_cos = int(1e6 * math.cos(math.radians(angle)))\n",
" my_math_event = my_math_event_fmt.format(v_sin, v_cos)\n",
" # custom events can be generated either from userspace, like in this\n",
" # example, or also from kernelspace (using a trace_printk call)\n",
" target.execute('echo {} > /sys/kernel/debug/tracing/trace_marker'\\\n",
" .format(my_math_event))\n",
"\n",
"# Stop FTrace\n",
"te.ftrace.stop()"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"# Collect the generate trace\n",
"trace_file = '/tmp/trace.dat'\n",
"te.ftrace.get_trace(trace_file)"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"05:29:37 INFO : Collected events spans a 146.767 [s] time interval\n"
]
}
],
"source": [
"# Parse trace\n",
"events_to_parse = my_tests_conf['ftrace']['events'] + my_tests_conf['ftrace']['custom']\n",
"trace = Trace(te.platform, '/tmp', events_to_parse)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Inspection of the generated TRAPpy FTrace object"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"# Get the TRAPpy FTrace object which has been generated from the trace parsing\n",
"ftrace = trace.ftrace"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"05:29:37 INFO : List of events identified in the trace:\n",
"['cpu_frequency', 'sched_switch', 'my_math_event']\n"
]
}
],
"source": [
"# The FTrace object allows to verify which (of the registered) events have been\n",
"# identified into the trace\n",
"logging.info(\"List of events identified in the trace:\\n%s\",\n",
" ftrace.class_definitions.keys())"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"05:29:37 INFO : First 10 events of our 'my_math_event' custom event:\n"
]
},
{
"data": {
"text/html": [
"<div>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>__comm</th>\n",
" <th>__cpu</th>\n",
" <th>__pid</th>\n",
" <th>cos</th>\n",
" <th>sin</th>\n",
" </tr>\n",
" <tr>\n",
" <th>Time</th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0.465916</th>\n",
" <td>sh</td>\n",
" <td>0</td>\n",
" <td>30563</td>\n",
" <td>1000000</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>0.869805</th>\n",
" <td>sh</td>\n",
" <td>0</td>\n",
" <td>30563</td>\n",
" <td>999847</td>\n",
" <td>17452</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1.273996</th>\n",
" <td>sh</td>\n",
" <td>0</td>\n",
" <td>30563</td>\n",
" <td>999390</td>\n",
" <td>34899</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1.677924</th>\n",
" <td>sh</td>\n",
" <td>0</td>\n",
" <td>30563</td>\n",
" <td>998629</td>\n",
" <td>52335</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2.082107</th>\n",
" <td>sh</td>\n",
" <td>0</td>\n",
" <td>30563</td>\n",
" <td>997564</td>\n",
" <td>69756</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2.486149</th>\n",
" <td>sh</td>\n",
" <td>4</td>\n",
" <td>30563</td>\n",
" <td>996194</td>\n",
" <td>87155</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2.890237</th>\n",
" <td>sh</td>\n",
" <td>4</td>\n",
" <td>30563</td>\n",
" <td>994521</td>\n",
" <td>104528</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3.295050</th>\n",
" <td>sh</td>\n",
" <td>4</td>\n",
" <td>30563</td>\n",
" <td>992546</td>\n",
" <td>121869</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3.699198</th>\n",
" <td>sh</td>\n",
" <td>4</td>\n",
" <td>30563</td>\n",
" <td>990268</td>\n",
" <td>139173</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4.103593</th>\n",
" <td>sh</td>\n",
" <td>4</td>\n",
" <td>30563</td>\n",
" <td>987688</td>\n",
" <td>156434</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" __comm __cpu __pid cos sin\n",
"Time \n",
"0.465916 sh 0 30563 1000000 0\n",
"0.869805 sh 0 30563 999847 17452\n",
"1.273996 sh 0 30563 999390 34899\n",
"1.677924 sh 0 30563 998629 52335\n",
"2.082107 sh 0 30563 997564 69756\n",
"2.486149 sh 4 30563 996194 87155\n",
"2.890237 sh 4 30563 994521 104528\n",
"3.295050 sh 4 30563 992546 121869\n",
"3.699198 sh 4 30563 990268 139173\n",
"4.103593 sh 4 30563 987688 156434"
]
},
"execution_count": 11,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Each event identified in the trace is appended to a table (i.e. data_frame)\n",
"# which has the same name of the event\n",
"\n",
"logging.info(\"First 10 events of our 'my_math_event' custom event:\")\n",
"ftrace.my_math_event.data_frame.head(10)"
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"05:29:37 INFO : First 10 events of our 'cpu_frequency' tracepoint:\n"
]
},
{
"data": {
"text/html": [
"<div>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>__comm</th>\n",
" <th>__cpu</th>\n",
" <th>__pid</th>\n",
" <th>cpu</th>\n",
" <th>frequency</th>\n",
" </tr>\n",
" <tr>\n",
" <th>Time</th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0.000000</th>\n",
" <td>kworker/0:2</td>\n",
" <td>0</td>\n",
" <td>30494</td>\n",
" <td>0</td>\n",
" <td>575000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>0.000009</th>\n",
" <td>kworker/0:2</td>\n",
" <td>0</td>\n",
" <td>30494</td>\n",
" <td>3</td>\n",
" <td>575000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>0.000014</th>\n",
" <td>kworker/0:2</td>\n",
" <td>0</td>\n",
" <td>30494</td>\n",
" <td>4</td>\n",
" <td>575000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>0.000019</th>\n",
" <td>kworker/0:2</td>\n",
" <td>0</td>\n",
" <td>30494</td>\n",
" <td>5</td>\n",
" <td>575000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>0.016023</th>\n",
" <td>kworker/0:2</td>\n",
" <td>0</td>\n",
" <td>30494</td>\n",
" <td>0</td>\n",
" <td>450000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>0.016034</th>\n",
" <td>kworker/0:2</td>\n",
" <td>0</td>\n",
" <td>30494</td>\n",
" <td>3</td>\n",
" <td>450000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>0.016042</th>\n",
" <td>kworker/0:2</td>\n",
" <td>0</td>\n",
" <td>30494</td>\n",
" <td>4</td>\n",
" <td>450000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>0.016048</th>\n",
" <td>kworker/0:2</td>\n",
" <td>0</td>\n",
" <td>30494</td>\n",
" <td>5</td>\n",
" <td>450000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>0.017447</th>\n",
" <td>kworker/2:2</td>\n",
" <td>2</td>\n",
" <td>30600</td>\n",
" <td>1</td>\n",
" <td>450000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>0.017458</th>\n",
" <td>kworker/2:2</td>\n",
" <td>2</td>\n",
" <td>30600</td>\n",
" <td>2</td>\n",
" <td>450000</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" __comm __cpu __pid cpu frequency\n",
"Time \n",
"0.000000 kworker/0:2 0 30494 0 575000\n",
"0.000009 kworker/0:2 0 30494 3 575000\n",
"0.000014 kworker/0:2 0 30494 4 575000\n",
"0.000019 kworker/0:2 0 30494 5 575000\n",
"0.016023 kworker/0:2 0 30494 0 450000\n",
"0.016034 kworker/0:2 0 30494 3 450000\n",
"0.016042 kworker/0:2 0 30494 4 450000\n",
"0.016048 kworker/0:2 0 30494 5 450000\n",
"0.017447 kworker/2:2 2 30600 1 450000\n",
"0.017458 kworker/2:2 2 30600 2 450000"
]
},
"execution_count": 12,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"logging.info(\"First 10 events of our 'cpu_frequency' tracepoint:\")\n",
"ftrace.cpu_frequency.data_frame.head(10)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Plotting tracepoint and/or custom events"
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {
"code_folding": [],
"collapsed": false
},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"/home/derkling/.local/lib/python2.7/site-packages/matplotlib/__init__.py:872: UserWarning: axes.color_cycle is deprecated and replaced with axes.prop_cycle; please use the latter.\n",
" warnings.warn(self.msg_depr % (key, alt_key))\n"
]
},
{
"data": {
"image/png": "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\nOyf+u3jxIq5fvw4bG5sqH9vExASlE3ALCwvLnGvNmjVa5zp//jxu3LiBbt26ifs2atRI6zgymUyr\nT0xlOnfujFdeeQXff/89MjMzsW/fPsyaNavC26xfvx7Jycl44403cPz4cXTt2hXff/99hbd53nHW\nRE3GSUREZfXo0QNt2rSBQqFAp06d4Ovri0ePHtXZ+b799lt06tQJjo6O8Pf313qNNHYjR45EVFSU\n1nVVKb82FK6urmIWL/2FgRwiIiID1KVLF8jlcty8eRPOzs5l/slkMnTu3BkAkJiYKN6usLBQq0Ev\nULKq0927d7WuO3PmjNZ2BwcHXL16Vee5SgdFytOyZUvY29uLJV3lmTVrFjZv3oz169ejVatWePPN\nNys9dufOnREQEIADBw5g2rRpWmVitaF3796Ij48vd3uXLl3KvJE8duwYLC0ttRo11/U4iYjqS0LS\n86+eWNNjyGQybN++HWlpaThx4gQuX76MVatWPfd4dImPj8fatWsRFxeH8+fPIzU1FSEhIXVyLkPB\n7irGj4EcIiIiA9S4cWMsWbIES5YswTfffIPr16/j8uXLiImJQXBwMACgXbt2GDFiBObMmYNjx47h\n8uXLmD59OvLz87WO9dprr+Hw4cPYuXMnbt68idDQUCQkJGjts3z5cqxZswbLly/HpUuXcP36dezd\nuxe+vr7VGvenn36K7777Dl988QWuXr2KS5cu4ZtvvkFWVpa4z7hx4wAAX3zxBaZPn17h8W7evIng\n4GCcOnUKaWlpOH36NE6ePIkuXbpUa1yVWbhwIW7cuAFvb2+cOXMGKSkp2LVrF/773/8CABYvXozY\n2FiEhobixo0b2LFjBz777DMEBQXBzMys3sZJRFRf9BnIAf4KNrRs2RJDhgzB1atXxW2ls0yio6Px\nzjvviJdtbW2xadMm9O3bF87Ozli4cGG554mJiYGPjw9cXFzQrFkzLFiwQGslxNJcXV2xdu1aeHh4\nQKFQwN/fH5mZmfD09ETbtm3x7rvvIi8vDwAwYcIEbNiwQev2AwYMwIEDByq877a2tvjhhx/Qp08f\ntG3bFitWrEBqairefPNNODk5Yfr06SgqKgIA5ObmYuLEiXBxcUG7du0wceJEcSGF5cuX4/Tp01i0\naBEUCoX4/gEo+TKiKo+PpqioKLi5uaFdu3YYP348MjIyAABBQUH45JNPtPb18fHBunXrAAD379/H\n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\nh2ao6jz6aI298EJN5bvxf7Nfi/ek8rryWt18Y93ROcuYa/27uf2UU49Kyy93PdWyTRUro9wy3diu\nqy3fze9d7rZSqoxa3vPyWFbq/3Nnsops2KDPffZlSTMzWU26G99yv2+5ZZTznhfHYreP607lzvdn\nVroturnturG8G9tPuarddiutg9exqZYbsXdj3ytVHze5eU3o9Jqb8XWLdZ1lzVLVefTRGut5QcH/\nx9vrYzfKmK9rEa8+Z/bnFfvMSreVUuUDcBc9cmYJvPqqApmMlE4rkE5LklpefDH75r592fck+73A\n7t32axVJpQ6V//zz2df27KmsrJzl7frs2pV9b2qqunpJatm+vbLlh4aynz02lv3MTOZQff7wBz18\nzrQ0OTPVd857FZc/MlLRd7KWTzz8cOFnTkxUVVbea8lkwfdt2bkz++aBA/byLc8+m13+tdeKb1tl\nsreV3Nes8l99VQFJmp4+VH45DWY5ywfSaWnWurLfe+WVbPk1KKh/udvD3r0F27qr47sd9iWn96oV\nGB0tiH3gD3/Ivnnw4KFtZWZbd+IUe7v8l14q/uGTk4XborU95+6rpcooJWdfCqTT0lzramLCXsY6\n1gSGh/PWT02xLbbvSXnrv5TA8HDx96xY5r62e3f2gdO+Nz5e9faTu+9JyjtvVC1nXyqQc95oee65\n7Gfv2lX79m+tz6kpTU9NZcu3YmOdN6TCfcNp27XWf6Xbbm5sSuxntjmO66VUvS/lsL/v668XHDvK\nUua2Yp83Kr3mmbWtT6dSedt6zdtp7jWStS1a59Cc8kueQ2s4dhfU/+DByrafSuVu61Ve89jbaQ57\nW8w5TtvbVpnXMP91993Z5XPWvxsSg8H8+jhdw8yc9yq+1p697WYyh46jZbKveZyO66WOozVw+j1Q\n875URCKRKLhel5R/TVLGcdfpnGibnPSs/gCkQCbjwZHIhzZv3qzz3/lOZSQFpIK/cnjNWnEBSenD\nDpMkpc45R/vuuKPo53R84hMKPvywAqmUAgcOOJff2qpMe3vRsuwy9u4tWp9yy3Iqt2XvXqmM7zR7\n+WLr7vprpL+5TmrPSPsD5deraPnVrp/WVmUyGQUCASkYVGBysuh3tGZL6PjEJxQe+Fel9wYVmJ7O\nLr9vX7aM6emyt5VS66eadZ1bj8D0dFXl2+tp5uLb/r+WluzjQECZ9na17N1b1bZesv4tLdmT+8zf\nYmWWimUqHFZm1aqy61CqXiW3lUBAgVSqpu9d1r4q53hJKrpfWu9Z5Tu+d/CgApOTrm2LZa07h/3T\nXn5yUg+fdVDnPJhdvi33uDBTRrqlReroqG5dT0woMDVV+vvOVcdS63P//uqOBWUei+06ZDIKjI/X\nfFwvKPfAgYLt2f5uU1MKTEzUVH/Hz3TY/ss5r7pxHC11zi25fDqtwL59Fa2LSs+hpdZZ0fNquee/\nme9b8bF1jnUth9cq3c/K+f4lt0WHz7a/Z2+vFvzHfyjT0ZH9EVnBsXv2vpe3j4dCBfWpJr5FP7PU\ncbrMmFdyfeD0WtnXMFXE1cn6c/9N171wiVr27lVgcUbp0UDNx9FyzrnlXm+VtW+4tC5q3e+r+bzA\nli0KtrQUP8+owm0lp45S/vXHnMehmfNSXrmBgDILF7r2nZvJ1q1bdf7559e7GpgHNOTM2Lx5s97x\nzncqc8QRann1VY3fcYcWfuITGkkmFY3FlAmHlTrrLIW2bNHI7t2KLl2q0d/8Rp1ve5sC+/drJJms\n6PMWbNqkjs985lD5kYimu7sVfPrpsss67N3vVvDxxzX63HNafOyxGhkeVrSrS5mWFh245hq1X3NN\nxfWSlK1Pe7tGy7yrGI3FlGlrU6atTS3JpMb+67/0Dz94i16+4Sq13divr16bXS5yQLpz19/rT467\nSKNPP63MkUdWVB/NnHDK/U6Lly1TYHJSex5+WIvOOSfv/9q+/GVFvv3tomUlBoP23aL+jW2SpFBm\nUvf+6KA9/Mou/9//XYve+95DsQyFdPDP/kzhe+459FpHh/2jYO/s5Rcs0OjLL5e/LmYtH43FlFm4\n0D4Z7/vhD7XwL/+y7PJD996rhZ/+tEZ27VJ02TLtefBBTZ9ySvbNgwcVPfJIjT77rBYfd5wygYBG\nX3+9rLoWrX84rNGZnmOt27Zp0XnnzRnTw975TgW3btXIiy8qumKFRp99VplotOp6zLaop0etv/+9\n/T1HXn5ZWrBAkrTwT/9UoUceqWpfsnSecIJaXn1VY488os6zzz4Um5YWTVxxhdq+8Y1Dr7W1adS6\nM5ajVCytskZfe63gvbarr1bku989VH57uzKhkFrGxrRnyxYtWrUqb9sdrfCuZftllyl8xx329jP2\ny18qfeyxxZf/X/9Lvxi6Xf/x7/nHh9Ck9I9bv6b39H6xpnXd8clPasH99x/6Tjn7xvhPfqLDPvSh\n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\njh064ogjdODAAa1cuVKSdO655+rxxx/X6aefrscff1wf+chHJEk9PT36/ve/L0l66qmndOqpp6q9\nvV2SdOqpp+rJJ59Ub2+vfv3rX+vyyy+XJJ133nnatGlTyYYcAJhP8Z5U3o8ja3rfWHe0XlUCjNGb\niuf9OCJXztysqcYlkRsHcNmewJg91Ti5cQC4wdMcOT/96U/1hS98Qd/5zne0f/9+SVIymbSHRUlS\nLBZTMplUMpnUkiVL7NeXLFmiZDJp/4/1XktLi9rb2zU+Pl7wP1ZZe/fu1cKFC9XS0mKXNTLCBUmz\nYhywmYiruYituYitmYiruYitmYgr4H819cj5yle+orGxQ0MAMpmMAoGAPvrRj+rd7363LrjgAgUC\nAd199936h3/4B332s5+tucLW57ixzGyJRELxeNx+LInnPOd5gz7ftm1bQ9Wnluevv/asLr0ypBUr\nVkjK9soJhaZ17w/3K96Tqnv95vv5tm3bGqo+PPfv84FgQr987Qldtv9SKSp1RWOSpMhUREPjw3Wv\nX72fJwaDuusfs+vh7vtPsIdUhUIpWZrteMxzjsduPR8IJnT38F2SpHtOuPvQMM9USJZ61a/en89z\n755bI1VgPs9y5OR69dVXdeONN2rdunW6//77JUkf+MAHJElf/epX9ZGPfERHHHGErrvuOt10002S\npEceeURPP/20Pv3pT9vLHH/88Uqn07r44ov1ve99T4888oh+85vf6OKLL5Yk3XbbbTr55JPV29ur\nT33qU7rtttvU0tKi3//+97rnnnv0xS9+sWgdyZEDoBGs3RCxpyRnaAPgnnWRtfbQhq5ojKENMxKD\nQcV7UhxzAA8MBBPqTcU55mDekCOneXg2tGp0dNR+/Itf/ELLly+XJJ155pkaGBhQKpXS7t279fLL\nL2vlypVavHix2tvbtWPHDmUyGT300EN629veZv/Pgw8+KEl69NFHdfLJJ0uSTjvtNG3btk379+/X\n+Pi4tm3bZs+AddJJJ2lwcFCS9OCDD+rMM8/06qsCAAD4UqVTjQMo30AwMfdCAFAFz87ed9xxh55/\n/nkFAgEdccQRdq+Zo446SmeddZauuOIKBYNBfepTn1IgkJ0l4aKLLtK3v/1te/pxa7ryd7zjHfrm\nN7+pyy67TIcddpidxHjhwoX68z//c/X19SkQCOiCCy5QR0eHJOnjH/+4NmzYoB//+Mc65phj9I53\n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\nsi8rW6sAAAAAAACQeSRyAAAAAAAAHCIrw46dZvv27frjH/+oWCymK664wt62BWc5ePCgVq1ape7u\nbrlcLs2bN09XXnmljhw5oubmZn366aeaOnWqli5dqtLS0lwfLoYpGo3qjjvukN/v1+23305cDXH0\n6FH94Q9/0J49e+RyubRo0SJNmzaN2BqgtbVVr7/+uoqKilRRUaHFixcrHA4TWwdas2aNtm7dqkmT\nJqmxsVGSBvwZ3NraqldffVVutztpTiLyS7q4Pvnkk3r77bfl8Xh05plnavHixcTVgdLF1vLiiy/q\nySef1KOPPqoJEyZIIrZO0V9c//rXv+rll19WUVGR5syZYy8GIq5mK/iKnGg0qkcffVR33XWXli9f\nrs2bN+vjjz/O9WFhBNxut3784x+rqalJ99xzj1566SV9/PHHev755/XVr35VK1eu1Pnnn6/W1tZc\nHypG4C9/+YvOOuss+23iaobHH39cF110kVasWKHf//73Ouuss4itAT799FNt3LhRDQ0NamxsVF9f\nn4LBILF1qCuuuEJ33XVX0mP9xXLv3r164403tGLFCt1xxx165JFHxDjG/JQurrNnz9by5cv1+9//\nXtOmTdPzzz8vibg6TbrYSvEXPf/xj3/o9NNPtx8jts6RLq7vvfee3n77bTU2Nmr58uX67ne/K4m4\nFoKCT+Ts3LlT06ZN0xlnnCGPx6NLL71Ub731Vq4PCyMwefJkzZw5U5Lk8/l01lln6eDBg9qyZYu9\n6ewb3/gG8XWggwcPatu2bZo3b579GHF1vqNHj+r999/XFVdcISmejC0tLSW2BigpKZHH41E4HFZf\nX5+OHz8uv99PbB3qK1/5isaPH5/0WH+x3LJli6qrq+V2uzV16lRNmzZNO3fuHPNjxuDSxXX27Nkq\nKorfHpxzzjk6ePCgJOLqNOliK0lPPPGEbrzxxqTHiK1zpIvryy+/rGuuuUZut1uSdNppp0kiroWg\n4FurQqGQpkyZYr/t9/s5yQ1w4MAB7dq1S+eee666u7s1efJkSfFkT3d3d46PDsNl/eJx9OhR+zHi\n6nwHDhzQxIkTtXr1au3atUuVlZVasGABsTXAhAkTdNVVV2nx4sUqLi7W7NmzNXv2bGJrkP5iGQqF\ndO6559of5/f7FQqFcnKMGJ1XX31Vl156qSTiaoItW7ZoypQpqqioSHqc2DrbJ598oh07duipp57S\nuHHjdOONN6qyspK4FoCCr8iBecLhsJqamrRgwQL5fL5T3u9yuXJwVBgpqxd45syZA5aEElfniUaj\n+s9//qNvfetbuv/++1VcXGyX8Scits6zf/9+/fnPf9bq1av10EMP6dixY3r99ddP+Thiaw5iaZbn\nnntObrdbgUAg14eCDDh+/LhaW1t13XXX5fpQkGF9fX364osvdM899+iGG25QU1NTrg8JY6TgK3L8\nfr8+++wz++1QKCS/35/DI8Jo9PX1afny5brssst08cUXS4q/Unjo0CH7z0mTJuX4KDEc77//vrZs\n2aJt27bp+PHj6unp0QMPPEBcDeD3+zVlyhSdffbZkqSqqio9//zzxNYA//73v/XlL3/ZHqT59a9/\nXR988AGxNUh/sUz9vergwYP8XuUwmzZt0rZt2/TrX//afoy4Otu+fft04MAB/epXv1IsFlMoFNLt\nt9+ue++9l9g63Omnn65LLrlEkjRr1iwVFRXp888/J64FoOArcmbNmqV9+/bp008/VSQS0ebNmzV3\n7txcHxZGaM2aNZo+fbquvPJK+7Gvfe1r2rRpk6T4LyfE11nmz5+vNWvWaNWqVaqpqdEFF1ygW265\nhbgaYPLkyZoyZYo6OzslSe+8846mT59ObA1QXl6uf/3rXzp+/LhisRixNUAsFkuqiuwvlnPnzlVb\nW5sikYgOHDigffv2adasWbk4ZAxBaly3b9+uF154QcuWLZPX67UfJ67OkxjbiooKPfzww1q1apUe\nfPBB+f1+3X///Zo0aRKxdZjUa/biiy/Wu+++K0nq7OxUJBLRxIkTiWsBcMUYX63t27fr8ccfVywW\n0ze/+U3WjzvU+++/r9/85jeqqKiQy+WSy+XSD3/4Q82aNUsrVqzQZ599pjPOOENLly5NOwAO+W/H\njh168cUX7fXjxNX5PvroIz300EOKRCL2qttoNEpsDfDCCy9o06ZNKioq0syZM3XzzTcrHA4TWwda\nuXKlduzYoc8//1yTJk3Sddddp4svvrjfWLa2tuqVV16Rx+Nh5W0eSxfX1tZW+0ZQig88vummmyQR\nVydJF1trsYAk/eIXv1B9fX3S+nFim//SxfWyyy7T6tWr9dFHH8nr9epHP/qRzjvvPEnE1XQkcgAA\nAAAAAByi4FurAAAAAAAAnIJEDgAAAAAAgEOQyAEAAAAAAHAIEjkAAAAAAAAOQSIHAAAAAADAIUjk\nAAAAAAAAOASJHAAAAAAAAIcgkQMAAAAAAOAQ/x9NKV3uHUHuzAAAAABJRU5ErkJggg==\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x7f8fcfa04090>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# It is possible to mix in the same plot tracepoints and custom events\n",
"\n",
"# The LinePlot module requires to specify a list of signals to plot.\n",
"# Each signal is defined as:\n",
"# <event>:<column>\n",
"# where:\n",
"# <event> is one of the events collected from the trace by the FTrace object\n",
"# <column> is one of the column of the previously defined event\n",
"my_signals = [\n",
" 'cpu_frequency:frequency',\n",
" 'my_math_event:sin',\n",
" 'my_math_event:cos'\n",
"]\n",
"\n",
"# These two paramatere are passed to the LinePlot call as long with the\n",
"# TRAPpy FTrace object\n",
"trappy.LinePlot(\n",
" ftrace, # FTrace object\n",
" signals=my_signals, # Signals to be plotted\n",
" drawstyle='steps-post', # Plot style options\n",
" marker = '+'\n",
").view()"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 2",
"language": "python",
"name": "python2"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 2
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython2",
"version": "2.7.9"
}
},
"nbformat": 4,
"nbformat_minor": 0
}