{ "cells": [ { "cell_type": "markdown", "metadata": { "collapsed": true }, "source": [ "# Trace Analysis Examples\n", "\n", "## Idle States Residency Analysis" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "This notebook shows the features provided by the idle state analysis module. It will be necessary to collect the following events:\n", "\n", " - `cpu_idle`, to filter out intervals of time in which the CPU is idle\n", " - `sched_switch`, to recognise tasks on kernelshark\n", " \n", "Details on idle states profiling ar given in **Per-CPU/Per-Cluster Idle State Residency Profiling** below." ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "collapsed": false, "run_control": { "marked": false } }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "2017-01-20 11:54:37,100 INFO : root : Using LISA logging configuration:\n", "2017-01-20 11:54:37,100 INFO : root : /home/vagrant/lisa/logging.conf\n" ] } ], "source": [ "import logging\n", "from conf import LisaLogging\n", "LisaLogging.setup()" ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "collapsed": false, "run_control": { "marked": false } }, "outputs": [], "source": [ "%matplotlib inline\n", "\n", "import os\n", "\n", "# Support to access the remote target\n", "from env import TestEnv\n", "\n", "# Support to access cpuidle information from the target\n", "from devlib import *\n", "\n", "# Support to configure and run RTApp based workloads\n", "from wlgen import RTA, Ramp\n", "\n", "# Support for trace events analysis\n", "from trace import Trace\n", "\n", "# DataFrame support\n", "import pandas as pd\n", "from pandas import DataFrame\n", "\n", "# Trappy (plots) support\n", "from trappy import ILinePlot\n", "from trappy.stats.grammar import Parser" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Target Configuration\n", "The target configuration is used to describe and configure your test environment.\n", "You can find more details in **examples/utils/testenv_example.ipynb**.\n", "\n", "Our target is a Juno R0 development board running Linux." ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "collapsed": false, "run_control": { "marked": false } }, "outputs": [], "source": [ "# Setup a target configuration\n", "my_conf = {\n", " \n", " # Target platform and board\n", " \"platform\" : 'linux',\n", " \"board\" : 'juno',\n", " \n", " # Target board IP/MAC address\n", " \"host\" : '192.168.0.1',\n", " \n", " # Login credentials\n", " \"username\" : 'root',\n", " \"password\" : 'juno',\n", " \n", " \"results_dir\" : \"IdleAnalysis\",\n", " \n", " # RTApp calibration values (comment to let LISA do a calibration run)\n", " #\"rtapp-calib\" : {\n", " # \"0\": 318, \"1\": 125, \"2\": 124, \"3\": 318, \"4\": 318, \"5\": 319\n", " #},\n", " \n", " # Tools required by the experiments\n", " \"tools\" : ['rt-app', 'trace-cmd'],\n", " \"modules\" : ['bl', 'cpufreq', 'cpuidle'],\n", " \"exclude_modules\" : ['hwmon'],\n", " \n", " # FTrace events to collect for all the tests configuration which have\n", " # the \"ftrace\" flag enabled\n", " \"ftrace\" : {\n", " \"events\" : [\n", " \"cpu_idle\",\n", " \"sched_switch\"\n", " ],\n", " \"buffsize\" : 10 * 1024,\n", " },\n", "}" ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "collapsed": false, "run_control": { "marked": false }, "scrolled": false }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "2017-01-20 11:54:39,398 INFO : TestEnv : Using base path: /home/vagrant/lisa\n", "2017-01-20 11:54:39,399 INFO : TestEnv : Loading custom (inline) target configuration\n", "2017-01-20 11:54:39,399 INFO : TestEnv : Devlib modules to load: ['bl', 'cpuidle', 'cpufreq']\n", "2017-01-20 11:54:39,400 INFO : TestEnv : Connecting linux target:\n", "2017-01-20 11:54:39,400 INFO : TestEnv : username : root\n", "2017-01-20 11:54:39,401 INFO : TestEnv : host : 192.168.0.1\n", "2017-01-20 11:54:39,401 INFO : TestEnv : password : juno\n", "2017-01-20 11:54:39,401 INFO : TestEnv : Connection settings:\n", "2017-01-20 11:54:39,402 INFO : TestEnv : {'username': 'root', 'host': '192.168.0.1', 'password': 'juno'}\n", "2017-01-20 11:54:46,668 INFO : TestEnv : Initializing target workdir:\n", "2017-01-20 11:54:46,669 INFO : TestEnv : /root/devlib-target\n", "2017-01-20 11:55:02,855 INFO : TestEnv : Topology:\n", "2017-01-20 11:55:02,856 INFO : TestEnv : [[0, 3, 4, 5], [1, 2]]\n", "2017-01-20 11:55:04,096 INFO : TestEnv : Loading default EM:\n", "2017-01-20 11:55:04,096 INFO : TestEnv : /home/vagrant/lisa/libs/utils/platforms/juno.json\n", "2017-01-20 11:55:07,198 INFO : TestEnv : Enabled tracepoints:\n", "2017-01-20 11:55:07,198 INFO : TestEnv : cpu_idle\n", "2017-01-20 11:55:07,199 INFO : TestEnv : sched_switch\n", "2017-01-20 11:55:07,199 WARNING : TestEnv : Using configuration provided RTApp calibration\n", "2017-01-20 11:55:07,200 INFO : TestEnv : Using RT-App calibration values:\n", "2017-01-20 11:55:07,200 INFO : TestEnv : {\"0\": 318, \"1\": 125, \"2\": 124, \"3\": 318, \"4\": 318, \"5\": 319}\n", "2017-01-20 11:55:07,201 INFO : EnergyMeter : HWMON module not enabled\n", "2017-01-20 11:55:07,201 WARNING : EnergyMeter : Energy sampling disabled by configuration\n", "2017-01-20 11:55:07,201 INFO : TestEnv : Set results folder to:\n", "2017-01-20 11:55:07,202 INFO : TestEnv : /home/vagrant/lisa/results/IdleAnalysis\n", "2017-01-20 11:55:07,202 INFO : TestEnv : Experiment results available also in:\n", "2017-01-20 11:55:07,203 INFO : TestEnv : /home/vagrant/lisa/results_latest\n" ] } ], "source": [ "# Initialize a test environment\n", "te = TestEnv(my_conf, wipe=False, force_new=True)\n", "target = te.target" ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "''" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# We're going to run quite a heavy workload to try and create short idle periods.\n", "# Let's set the CPU frequency to max to make sure those idle periods exist\n", "# (otherwise at a lower frequency the workload might overload the CPU\n", "# so it never went idle at all)\n", "te.target.cpufreq.set_all_governors('performance')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Workload configuration and execution\n", "\n", "Detailed information on RTApp can be found in **examples/wlgen/rtapp_example.ipynb**." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "This experiment:\n", "- Runs a periodic RT-App workload, pinned to CPU 1, that ramps down from 80% to 10% over 7.5 seconds\n", "- Uses `perturb_cpus` to ensure 'cpu_idle' events are present in the trace for all CPUs\n", "- Triggers and collects ftrace output" ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "collapsed": false, "scrolled": true }, "outputs": [], "source": [ "cpu = 1\n", "def experiment(te):\n", "\n", " # Create RTApp RAMP task\n", " rtapp = RTA(te.target, 'ramp', calibration=te.calibration())\n", " rtapp.conf(kind='profile',\n", " params={\n", " 'ramp' : Ramp(\n", " start_pct = 80,\n", " end_pct = 10,\n", " delta_pct = 5,\n", " time_s = 0.5,\n", " period_ms = 5,\n", " cpus = [cpu]).get()\n", " })\n", "\n", " # FTrace the execution of this workload\n", " te.ftrace.start()\n", " # Momentarily wake all CPUs to ensure cpu_idle trace events are present from the beginning\n", " te.target.cpuidle.perturb_cpus()\n", " rtapp.run(out_dir=te.res_dir)\n", " te.ftrace.stop()\n", "\n", " # Collect and keep track of the trace\n", " trace_file = os.path.join(te.res_dir, 'trace.dat')\n", " te.ftrace.get_trace(trace_file)\n", "\n", " # Dump platform descriptor\n", " te.platform_dump(te.res_dir)" ] }, { "cell_type": "code", "execution_count": 7, "metadata": { "collapsed": false, "run_control": { "marked": false }, "scrolled": true }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "2017-01-20 11:55:44,654 INFO : Workload : Setup new workload ramp\n", "2017-01-20 11:55:44,655 INFO : Workload : Workload duration defined by longest task\n", "2017-01-20 11:55:44,655 INFO : Workload : Default policy: SCHED_OTHER\n", "2017-01-20 11:55:44,656 INFO : Workload : ------------------------\n", "2017-01-20 11:55:44,656 INFO : Workload : task [ramp], sched: using default policy\n", "2017-01-20 11:55:44,656 INFO : Workload : | calibration CPU: 1\n", "2017-01-20 11:55:44,657 INFO : Workload : | loops count: 1\n", "2017-01-20 11:55:44,657 INFO : Workload : | CPUs affinity: [1]\n", "2017-01-20 11:55:44,658 INFO : Workload : + phase_000001: duration 0.500000 [s] (100 loops)\n", "2017-01-20 11:55:44,658 INFO : Workload : | period 5000 [us], duty_cycle 80 %\n", "2017-01-20 11:55:44,658 INFO : Workload : | run_time 4000 [us], sleep_time 1000 [us]\n", "2017-01-20 11:55:44,659 INFO : Workload : + phase_000002: duration 0.500000 [s] (100 loops)\n", "2017-01-20 11:55:44,659 INFO : Workload : | period 5000 [us], duty_cycle 75 %\n", "2017-01-20 11:55:44,659 INFO : Workload : | run_time 3750 [us], sleep_time 1250 [us]\n", "2017-01-20 11:55:44,660 INFO : Workload : + phase_000003: duration 0.500000 [s] (100 loops)\n", "2017-01-20 11:55:44,660 INFO : Workload : | period 5000 [us], duty_cycle 70 %\n", "2017-01-20 11:55:44,660 INFO : Workload : | run_time 3500 [us], sleep_time 1500 [us]\n", "2017-01-20 11:55:44,661 INFO : Workload : + phase_000004: duration 0.500000 [s] (100 loops)\n", "2017-01-20 11:55:44,661 INFO : Workload : | period 5000 [us], duty_cycle 65 %\n", "2017-01-20 11:55:44,662 INFO : Workload : | run_time 3250 [us], sleep_time 1750 [us]\n", "2017-01-20 11:55:44,662 INFO : Workload : + phase_000005: duration 0.500000 [s] (100 loops)\n", "2017-01-20 11:55:44,662 INFO : Workload : | period 5000 [us], duty_cycle 60 %\n", "2017-01-20 11:55:44,663 INFO : Workload : | run_time 3000 [us], sleep_time 2000 [us]\n", "2017-01-20 11:55:44,663 INFO : Workload : + phase_000006: duration 0.500000 [s] (100 loops)\n", "2017-01-20 11:55:44,664 INFO : Workload : | period 5000 [us], duty_cycle 55 %\n", "2017-01-20 11:55:44,665 INFO : Workload : | run_time 2750 [us], sleep_time 2250 [us]\n", "2017-01-20 11:55:44,665 INFO : Workload : + phase_000007: duration 0.500000 [s] (100 loops)\n", "2017-01-20 11:55:44,666 INFO : Workload : | period 5000 [us], duty_cycle 50 %\n", "2017-01-20 11:55:44,666 INFO : Workload : | run_time 2500 [us], sleep_time 2500 [us]\n", "2017-01-20 11:55:44,667 INFO : Workload : + phase_000008: duration 0.500000 [s] (100 loops)\n", "2017-01-20 11:55:44,667 INFO : Workload : | period 5000 [us], duty_cycle 45 %\n", "2017-01-20 11:55:44,668 INFO : Workload : | run_time 2250 [us], sleep_time 2750 [us]\n", "2017-01-20 11:55:44,669 INFO : Workload : + phase_000009: duration 0.500000 [s] (100 loops)\n", "2017-01-20 11:55:44,669 INFO : Workload : | period 5000 [us], duty_cycle 40 %\n", "2017-01-20 11:55:44,670 INFO : Workload : | run_time 2000 [us], sleep_time 3000 [us]\n", "2017-01-20 11:55:44,670 INFO : Workload : + phase_000010: duration 0.500000 [s] (100 loops)\n", "2017-01-20 11:55:44,671 INFO : Workload : | period 5000 [us], duty_cycle 35 %\n", "2017-01-20 11:55:44,671 INFO : Workload : | run_time 1750 [us], sleep_time 3250 [us]\n", "2017-01-20 11:55:44,672 INFO : Workload : + phase_000011: duration 0.500000 [s] (100 loops)\n", "2017-01-20 11:55:44,672 INFO : Workload : | period 5000 [us], duty_cycle 30 %\n", "2017-01-20 11:55:44,673 INFO : Workload : | run_time 1500 [us], sleep_time 3500 [us]\n", "2017-01-20 11:55:44,673 INFO : Workload : + phase_000012: duration 0.500000 [s] (100 loops)\n", "2017-01-20 11:55:44,674 INFO : Workload : | period 5000 [us], duty_cycle 25 %\n", "2017-01-20 11:55:44,674 INFO : Workload : | run_time 1250 [us], sleep_time 3750 [us]\n", "2017-01-20 11:55:44,675 INFO : Workload : + phase_000013: duration 0.500000 [s] (100 loops)\n", "2017-01-20 11:55:44,675 INFO : Workload : | period 5000 [us], duty_cycle 20 %\n", "2017-01-20 11:55:44,676 INFO : Workload : | run_time 1000 [us], sleep_time 4000 [us]\n", "2017-01-20 11:55:44,676 INFO : Workload : + phase_000014: duration 0.500000 [s] (100 loops)\n", "2017-01-20 11:55:44,677 INFO : Workload : | period 5000 [us], duty_cycle 15 %\n", "2017-01-20 11:55:44,677 INFO : Workload : | run_time 750 [us], sleep_time 4250 [us]\n", "2017-01-20 11:55:44,678 INFO : Workload : + phase_000015: duration 0.500000 [s] (100 loops)\n", "2017-01-20 11:55:44,678 INFO : Workload : | period 5000 [us], duty_cycle 10 %\n", "2017-01-20 11:55:44,679 INFO : Workload : | run_time 500 [us], sleep_time 4500 [us]\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "2017-01-20 11:55:52,296 INFO : Workload : Workload execution START:\n", "2017-01-20 11:55:52,297 INFO : Workload : /root/devlib-target/bin/rt-app /root/devlib-target/ramp_00.json 2>&1\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\n" ] } ], "source": [ "experiment(te)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Parse trace and analyse data" ] }, { "cell_type": "code", "execution_count": 8, "metadata": { "collapsed": false }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "2017-01-20 11:56:11,164 INFO : root : Content of the output folder /home/vagrant/lisa/results/IdleAnalysis\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "/home/vagrant/lisa/results/IdleAnalysis\r\n", "├── cluster_idle_state_residency.png\r\n", "├── cpu_idle_state_residency.png\r\n", "├── output.log\r\n", "├── platform.json\r\n", "├── ramp_00.json\r\n", "├── rt-app-ramp-0.log\r\n", "├── trace.dat\r\n", "├── trace.raw.txt\r\n", "└── trace.txt\r\n", "\r\n", "0 directories, 9 files\r\n" ] } ], "source": [ "# Base folder where tests folder are located\n", "res_dir = te.res_dir\n", "logging.info('Content of the output folder %s', res_dir)\n", "!tree {res_dir}" ] }, { "cell_type": "code", "execution_count": 9, "metadata": { "collapsed": false, "run_control": { "marked": false } }, "outputs": [], "source": [ "trace = Trace(te.platform, res_dir, events=my_conf['ftrace']['events'])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Per-CPU Idle State Residency Profiling" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "It is possible to get the residency in each idle state of a CPU or a cluster with the following commands:" ] }, { "cell_type": "code", "execution_count": 10, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
time
idle_state
00.042726
16.178961
210.367166
\n", "
" ], "text/plain": [ " time\n", "idle_state \n", "0 0.042726\n", "1 6.178961\n", "2 10.367166" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Idle state residency for CPU 3\n", "CPU=3\n", "state_res = trace.data_frame.cpu_idle_state_residency(CPU)\n", "state_res" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "For the translation between the idle value and its description:" ] }, { "cell_type": "code", "execution_count": 11, "metadata": { "collapsed": false, "run_control": { "marked": false } }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
namevalue
0CpuidleState(WFI, ARM WFI)0
1CpuidleState(cpu-sleep-0, cpu-sleep-0)1
2CpuidleState(cluster-sleep-0, cluster-sleep-0)2
\n", "
" ], "text/plain": [ " name value\n", "0 CpuidleState(WFI, ARM WFI) 0\n", "1 CpuidleState(cpu-sleep-0, cpu-sleep-0) 1\n", "2 CpuidleState(cluster-sleep-0, cluster-sleep-0) 2" ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ "DataFrame(data={'value': state_res.index.values,\n", " 'name': [te.target.cpuidle.get_state(i, cpu=CPU) for i in state_res.index.values]})" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The **IdleAnalysis** module provide methods for plotting residency data:" ] }, { "cell_type": "code", "execution_count": 12, "metadata": { "collapsed": true }, "outputs": [], "source": [ "ia = trace.analysis.idle" ] }, { "cell_type": "code", "execution_count": 13, "metadata": { "collapsed": false }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# Actual time spent in each idle state\n", "ia.plotCPUIdleStateResidency([1,2])" ] }, { "cell_type": "code", "execution_count": 14, "metadata": { "collapsed": false, "run_control": { "marked": false } }, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAABT0AAAIBCAYAAACLEhtUAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAAPYQAAD2EBqD+naQAAIABJREFUeJzs3X2YX3V9J/z3INoFmlYJUh+6MVbCMgWsJq7Sh7tqvU2z\neJcWtojZpq1g271FbGvvguyFIYmutOEqt9wttKXA1nUDwcVF2rUKrBS7S9eHNYMV2aGJNOADPpBE\ngRDwgeT+4/x+zC8/zkzmzMzJmfnm9bquuSY5v/PwOWfO28FPvud8EwAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICDYWmSvb2vJUOfvWbgM5gLSzP5/XYw\ntmd67k91jX+94zoAAACAAhw2g23WZ24ak/tm+FmbfjDJ7yT52yTfSPLdJLuSjCe5NcnFSV6bp1+3\nH051Xdb1/tyGg3GM6fhEJn7+g197kmxP8p+T/EJXxU1htvdUV/fkQnB/6u+J6XytG9qX6wwAAADM\n2uGz2La05sRLk3wkyY/2/r4vyRO978uS/Iskr+99tjTJlwa2fU6qhmiS/GWSh1uo72Aco4nvJdk5\n8PfFqUZCvijJLyf5YJI1SZ48+KXt57tJ/jHVz/F7HddSqm8meVbN8iOT/FDvzw+l/l54tPf9i6ka\n513f1wAAAMAhan2qEVozbWYtHdh+ssfbD3ajbFGSr/SO/Y0k56Vq4vUdkeRnkvxhb73hul+Uyc9p\nrhyMY0zHJ3p1/O3Q8pEky5P8XSZG8f32Qa2sHUszP677QvTrce0AAACADszk8fYSvSnJC1KNBvyF\nJFdk/1GMjye5M8mFqZo3Xx3afmSSP8+lg3GM2diXZCzJL2bi2nk/46FtPt6nAAAAwCGgrabnC5Nc\nleTLSb6TanTkf0jykjnY97OSnJvkjiQ7Uj2+/PUkNydZNcN9vqz3/ZtJPnOAdYdHon4iyT/1/jyS\n6r2Wg+8svGNg3ZEkr0vyx0k+leq6fDdVk/ATSf5t6l850OQYfW1cp+n4dpJP9/58/BTrLU1yeZJ7\nkuxO9Wjzvb1l/3yK7U5I8hdJtva2eSLVffapJO9N9RqC4eMcaCKi2d6vM73W/bp+NtVo43+f6ho8\nnuqe+K9JXjmN469MckOSB3rb7kry+VT32SkD693QO97fHGB/xw3VdjDcn8knMhqsZXGS/zfJfanO\n9UtJ/jTJsQPrL03yZ6ly8kRvnT9K9c7eqTw31c/grlSP2T+RKnfXJPnxxmcEAAAALCjrM/Uj6MtT\nNV36jYrdqRoIe1M1xN6YmT/e/qIkXxjY9/d7x3pyYNmfNj6jamTn3lRNjiMabvtfUj0S3z/+N5I8\nOPD1oYF1lw6s92Sq6zJc/98l+WezOEbS3nVKJn+8fdBHe+vsmOTzX0l1rfvXYU+q+6Rf38OZeH/q\noNcPbfdEqubg4HkNT4yzNJPfb8ns7tdkdte6v983JdnW+/tjqd5z2d/+iUmuRVK9M/M/Z/976ttD\nx79rYP2f7S37XqZuLP9hb73xKdaZjjdn6ms36P7eur9W81l/H7+aqjG9N8kjqZqe/XO/N8nRqZq8\nO3vLvpWqid1f539k8n/o+T976w/eW49k/5/Drx7gHAAAAIAFbH0mb0wuSjXabG+qUVavG/jslCR3\nZ6LB1LTpeVSqJszeJLcn+T+SPLP32Q8l+d1UTYqZvEvy1zLRGLk+1aRBTUz3fZsvTPKBJG9I8uyB\n5UelGuHWf6/oZbM4RpvXKTlw0/M5qZqd/eMPe32qc/hOkj/I/udyfKoJkPoNx+HG3Bd7n30s+4+8\ne1bv7+/K05tmSzP5dZvt/Trba92/53b2jvXqgc9eMbDv7al/VLx/rb6X5JJUr2joW5xkdZIrh7a5\np7fN+pr9pVf/13vrvGOSdabrzZm7pufeVD+LLUn+ZW/54UnOStWo3pvk6lRN0f+WZLS3zg8keVuq\na7Q3yVtq9n9yqsb7k0n+PNVo4f71/ueZ+EeR7yZZcYDzAAAAABao9Zm8MXlB77PH8/THjJPkRzIx\nCqtp03NtJpptz5iktl/qrfPNKdap86xUjwP3myvfSdXE+oNUM5H/6OSbJpm7yW5WZGIU2w/M8Bht\nXqdk8qbnM1LV/98z0Yh73dA6h6V6LH1vkt+Y4hg399Z538CyYzNx/j/SoN6lmfy6zfZ+ne217t9v\nX09yTM22Jw0c+6eGPnvdwGf/dpJj13l7b7svpX7U47/ufb4n1cjJ2Xhz5rbp+WDq/0Fiw8A6n89E\n43nQf+x9/t9qPru999m/n6K+y3vrfHiKdQAAAIAFbH0mb0yO9T77wBTbvzeTN0JeM8W+7+999n9N\nse+RVI8mP5npvQtx0DFJNmf/x5IHv+5J8jupGqTDlmb6zZ0D+UZvP6+a4THuT7vX6ROZaAx/feCr\n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\nwgkn5MILL8xZZ53VUpXNzKdr3PT67t69O+9+97vzuc99LnfddVd27tyZdevWZd26dS1WOX0L+dom\nye23354PfOAD+eQnP5mvfvWrec5znpNXvOIVufjii004BgA0oukJUGPjxo155zvf2XUZQAsOlO+J\nEXKbkowelJrqjSdZM6MRe2eccUY++9nPZuPGjTn++ONz3XXXZfXq1dm7d29Wr14996U29NQ5nZHk\nmI6K2JHkpjS+vjt27MjVV1+dl73sZTn99NNzzTXXZGRkpJ0aZ6B/Pl3evdWd2/zaJslVV12Vhx56\nKO94xzty4okn5qGHHspll12WU045Jbfeemte+9rXTrm9399QLvkGmtL0BKixZ8+erksAWjL9fI8m\nWXgjyz760Y/m4x//eDZv3vzUyM5Xv/rVeeCBB3L++efnrLPOymGHzZPXuh+T5AVdF9HM0qVL861v\nfStJsnPnzlxzzTUdV1RvYd691UQlxx577H7LVq1aleOOOy6XXHLJAZuefn9DueQbaGqe/BcvwPyy\nYcOGrksAWlJ6vj/84Q9n0aJFOfPMM/dbfvbZZ+fBBx/Mpz/96Y4qK8++ffu6LqE4ww3PJDnqqKMy\nOjqar3zlKwfcvvR8w6FMvoGmND0BAAryhS98IaOjo08bzXnyyScnSe65554uyoIZe/jhhzM2NpYT\nTzyx61IAgAVE0xMAoCA7d+7M0Ucf/bTl/WU7d+482CXBrLztbW/L448/nosuuqjrUgCABUTTE6DG\njh07ui4BaIl8w8Kxdu3aXH/99Xnf+96Xl7/85QdcX76hXPINNKXpCVDjnHPO6boEoCWl53vx4sW1\nozl37dr11OewEGzYsCHvfe97c8kll+Tcc8+d1jal5xsOZfINNKXpCVBj/fr1XZcAtKT0fL/0pS/N\n+Ph49u7du9/yu+++O0ly0kkndVEWNLJhw4anvi688MJpb1d6vuFQJt9AU5qeADWWL1/edQlAS0rP\n9+mnn57du3fnQx/60H7L3//+9+eFL3xhXvWqV3VUGUzPe97znmzYsCFr167N2rVrG21ber7hUCbf\nQFOHd10AAABzZ9WqVXn961+ft771rXnkkUfykpe8JJs3b85tt92W6667LiMjI12XuOB97GMfy2OP\nPZZHH300SXLPPfc81WR+wxvekCOOOKLL8ha0yy67LOvWrcuqVaty6qmn5lOf+tR+n59yyikdVQYA\n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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# Percentage of time spent in each idle state\n", "ia.plotCPUIdleStateResidency([1,2], pct=True)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## CPU idle state over time" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Take a look at the target's idle states:" ] }, { "cell_type": "code", "execution_count": 15, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "[CpuidleState(WFI, ARM WFI),\n", " CpuidleState(cpu-sleep-0, cpu-sleep-0),\n", " CpuidleState(cluster-sleep-0, cluster-sleep-0)]" ] }, "execution_count": 15, "metadata": {}, "output_type": "execute_result" } ], "source": [ "te.target.cpuidle.get_states()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now use trappy to plot the idle state of a single CPU over time. Higher is deeper: the plot is at -1 when the CPU is active, 0 for WFI, 1 for CPU sleep, etc.\n", "\n", "We should see that as the workload ramps down and the idle periods become longer, the idle states used become deeper." ] }, { "cell_type": "code", "execution_count": 16, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "\n", "\n", "\n", "\n", "\n", "\n", "\n", "
\n", "\n", "\n", "\n", "\n", "\n", " \n", " " ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "p = Parser(trace.ftrace, filters = {'cpu_id': cpu})\n", "idle_df = p.solve('cpu_idle:state')\n", "ILinePlot(idle_df, column=cpu, drawstyle='steps-post').view()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Examine idle period lengths\n", "Let's get a DataFrame showing the length of each idle period on the CPU and the index of the cpuidle state that was entered." ] }, { "cell_type": "code", "execution_count": 17, "metadata": { "collapsed": false, "scrolled": true }, "outputs": [], "source": [ "def get_idle_periods(df):\n", " series = df[cpu]\n", " series = series[series.shift() != series].dropna()\n", " if series.iloc[0] == -1:\n", " series = series.iloc[1:]\n", "\n", " idles = series.iloc[0::2] \n", " wakeups = series.iloc[1::2]\n", " if len(idles) > len(wakeups):\n", " idles = idles.iloc[:-1]\n", " else:\n", " wakeups = wakeups.iloc[:-1]\n", "\n", " lengths = pd.Series((wakeups.index - idles.index), index=idles.index)\n", " return pd.DataFrame({\"length\": lengths, \"state\": idles})" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Make a scatter plot of the length of idle periods against the state that was entered. We should see that for long idle periods, deeper states were entered (i.e. we should see a positive corellation between the X and Y axes)." ] }, { "cell_type": "code", "execution_count": 18, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 18, "metadata": {}, "output_type": "execute_result" }, { "name": "stderr", "output_type": "stream", "text": [ "/usr/lib/pymodules/python2.7/matplotlib/collections.py:548: FutureWarning: elementwise comparison failed; returning scalar instead, but in the future will perform elementwise comparison\n", " if self._edgecolors == 'face':\n" ] }, { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "lengths = get_idle_periods(idle_df)\n", "lengths.plot(kind='scatter', x='length', y='state')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Draw a histogram of the length of idle periods shorter than 100ms in which the CPU entered cpuidle state 2." ] }, { "cell_type": "code", "execution_count": 19, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "array([[]], dtype=object)" ] }, "execution_count": 19, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "df = lengths[(lengths['state'] == 2) & (lengths['length'] < 0.010)]\n", "df.hist(column='length', bins=50)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Per-cluster Idle State Residency" ] }, { "cell_type": "code", "execution_count": 20, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
time
idle_state
01.527443
12.709098
28.609212
\n", "
" ], "text/plain": [ " time\n", "idle_state \n", "0 1.527443\n", "1 2.709098\n", "2 8.609212" ] }, "execution_count": 20, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Idle state residency for CPUs in the big cluster\n", "trace.data_frame.cluster_idle_state_residency('big')" ] }, { "cell_type": "code", "execution_count": 21, "metadata": { "collapsed": false }, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAABTEAAAIBCAYAAACRLvvaAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAAPYQAAD2EBqD+naQAAIABJREFUeJzs3XmcXXddP/5X2lAgGKCyFjDEYoDIos6I+BWEUrQIXx0K\nYku1QlOXoi0qaPv9yZbiniKCtqLmSwAlX1IXIIBFrEqLxIVlBgUhIbKUIi0tAbrQdKPJ74/PuTn3\n3pm5meXOnHNnns/H4z5m7jnnnvM+Z+6L5Z3POZ8EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA2mJjkkPVa0PfupO61sEwbMzs37fl+Dxzc1XKNX5hw3UA\nAAAALXTMAj5zYYbTaDy8wHVL6VuS/HKS9ye5LskdSb6WZG+Sv0/yqiRPy/Trdp+U67K1+n0pLMcx\n5uLK1H//7tfBJJ9P8ldJfqyp4gZY7Heqqe/kKLgqM38n5vLa2rcv1xkAAACYZu0iPrvSmg2PT/K3\nSR5WvT+c5Lbq56Ykj0ryw9W6jUmu7vrs8SkNziR5c5Ibl6C+5TjGfNyZ5Ktd7++XMlLx4Umel+Qv\nk5yZ5K7lL63HHUk+nfJ3vLPhWlaq65McN8PydUnuXf3+lcz8Xbi5+vmZlEZ4099rAAAAYIW4MGUE\n1UKbUxu7Pj/b7eTL3fhan+R/qmNfl+S8lKZcxz2TPDnJ71Xb9df98Mx+TsOyHMeYiyurOt7ft3xN\nkrEkH0g9yu6XlrWypbEx7bjuo+iFce0AAACAIVjI7eQr0fOTPCRltN6PJbkkvaMMb02yJ8n/l9KM\n+VLf59fM8vswLccxFuNwkqkkz0597TzfcHVr4/cUAAAAGEFL1cR8aJI/S/LFJLenjF58U5JHDGHf\nxyX5xSRXJDmQcrvwl5PsTvIjC9znd1c/r0/y4aNs2z9S9Mokn6t+X5PyXMjuZ/5d0bXtmiRPT/JH\nSf495brckdL0uzLJOZn5Fv/5HKNjKa7TXNyQ5EPV748csN3GJK9P8skk30i5lXhftezbBnzu0Um2\nJ9lffea2lO/Zvyf57ZTb/vuPc7SJeRb7fV3ote7U9ZSU0cC/lXINbk35TrwnyffN4finJLk0yReq\nz34tycdTvmff37XdpdXxLjvK/r6jr7blcFVmn9inu5b7JfmDJJ9NOderk7whyQO7tt+Y5E9ScnJb\ntc3vpzzzdpAHpPwNPpZyW/ttKbl7Y5LvnPcZAQAAAI26MINv+R5LaaJ0Gg/fSGkIHEppcJ2Whd9O\n/vAk/9W1729Wx7qra9kb5n1GZeTloZSmxT3n+dm3p9yC3jn+dUmu6Xr9Tde2G7u2uyvluvTX/4Ek\n91jEMZKlu07J7LeTd3tvtc2BWdb/VMq17lyHgynfk059N6Z+/mi3H+773G0pzb7u8+qfKGZjZv++\nJYv7viaLu9ad/T4/yX9X729JeU5k5/O3zXItkvLMyb9K73fqhr7jf6xr+6dUy+7M4Ebx71Xb7R2w\nzVyclcHXrttV1bYvmGFdZx8/ndJoPpTkppQmZufc9yX51pSm7VerZV9PaUp3tvlgZv+Hmx+qtu/+\nbt2U3r/DTx/lHAAAAIAWuTCzNxrXp4wGO5QyCurpXeu+P8knUjeM5tvEvFdKU+VQkn9K8oNJ7lat\nu3eSX0lpOizkWYwvSN3oeFvKJDrzMdfnVT40yV8k+d9J7tu1/F4pI9A6z+V87SKOsZTXKTl6E/P4\nlOZl5/j9fjjlHG5P8rvpPZdHpkwI1Gkg9jfaPlOt+7v0jow7rnr/ikxvgm3M7Ndtsd/XxV7rznfu\nq9Wxntq17nu79v35zHxrduda3Znkd1IeidBxvyRnJPnjvs98svrMhTPsL1X9X662ecks28zVWRle\nE/NQyt9iMskTquVrk5ye0ng+lOT/pjQ5/yHJ5mqbuyc5N+UaHUryMzPs/3EpjfS7kvxpymjezvX+\nttT/yHFHkvGjnAcAAADQEhdm9kbjBdW6WzP9tt4keVDqUVLzbWK+MnXz7NhZaju12ub6AdvM5LiU\n2287zZLbU5pSv5sy0/bDZv9okuFN/jKeepTZ3Rd4jKW8TsnsTcxjU+r/59SNtaf3bXNMym3gh5L8\n7IBj7K62eV3XsgemPv8HzaPejZn9ui32+7rYa935vn05yf1n+Oxju479A33rnt617pxZjj2TF1ef\nuzozj0r88Wr9wZSRjYtxVobbxLwmM/8Dw6u7tvl46kZytz+v1v/DDOv+qVr3WwPqe321zTsHbAMA\nAAC0yIWZvdE4Va37iwGf/+3M3tg4acC+r6rW/eiAfa9JuRX4rsztWYLd7p9kV3pvA+5+fTLJL6c0\nPPttzNybNUdzXbWfJy7wGFdlaa/TlakbvV/uenVGuh1KGVH6EzN89qRq/XUZPOlLp5H2ya5l96zq\n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\ny7ufFXpVktuTPOIoxwIAWNXcTg4AwEL8v773f50yAvOkAZ95akpz8PK+5buGV9bQfDjJliQvT/L9\nSe42j8/+aMqt8pel3PnUef1nkusy/Rp9IslnF1cuAMDKpokJAMBCfLnv/TeTfC3J/QZ85n4pTbx+\n18/xmFenjKZcDqcn+fMkP5tyO/hXq/cPmsNnH5Ry+/kdM7welOnX6NrhlAwAsHJ5JiYAAAtxQnqb\nb2tTmnNfHfCZr6ZM4tPvwXM85vuSvDjluZsfmuNnunWeQ3n3vuUzNV6/muQl1ethKbeG/16SByZ5\n5lGOc6D6/DNmWd8/KdFSzHAOALCiGIkJAMBC/FTf+9OSHJvyHMzZXJlkfZIf6Vv+/Dke83Upk968\nIcm9Z1i/JtMn2eluEF6X0sj8rr5t+p9d2e9/kvxxkn9Mmeyn4/aU2dL7vSelMbo2ydQMr/8+yvEA\nAOhjJCYAAAvxnJRbyP8xyWNSZtb+jyR/1bfdmq7f/zxlZOPOJK9IeQ7kM1NP9HPoKMe8KqXh+Zcp\nz5e8uDpmUmZGPzulafnOWY5/uDr22dWxP57k+1ImJep2n5QJid6WMjP5zSkjSJ+R5O1d23085Tq8\nKKU5eSjJR5NcmtLkfW+SP0zykSR3pozoPCll5vLdRzlXAAAAAGCBtia5K8l3pzTjbkpyY0pz8P59\n216R3tnJk9LI+5uuz/1VysjMQykT4szFtye5JMn+lBnLb0mZHOc1STZ0bffmTJ89fH2S7Sm3wt+c\n0kzckN7ZyY9LGe35H0luqPb/qWr9Pbr2dd+q/q+lXJO7utYdm+SlST6W5GB1vp+q9nti13afT/Lu\nOZ43AAAAANCQl6U0AB/SdCEAALST28kBAFhO51U/9yW5W5KTUybreWuSa5oqCgAAAACgY0vKsyRv\nSpkYZ3+SC+Mf1wEAAAAAAAAAAAAAAGAJrGm6gBF3QvUCAAAAAObv2uo1kCbmwp3w6Ec/+pp9+/Y1\nXQcAAAAAjKoPJDkjR2lkamIu3FiSyZ07d2bz5s1N1wKt8PznPz+XXnpp02VAK8gD1OQBeskE1OQB\naqsxD3v37s2ZZ56ZJONJpgZtaxbIRdq8eXPGxsaaLgNa4c4775QHqMgD1OQBeskE1OQBavIw2DFN\nFwCsHI973OOaLgFaQx6gJg/QSyagJg9Qk4fBNDEBAAAAgFbTxAQAAAAAWk0TExiaM844o+kSoDXk\n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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# Actual time spent in each idle state for CPUs in the big and LITTLE clusters\n", "ia.plotClusterIdleStateResidency(['big', 'LITTLE'])" ] }, { "cell_type": "code", "execution_count": 22, "metadata": { "collapsed": false }, "outputs": [ { "data": { "image/png": "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\nNWvWVPtU9y7c41rvr3sLACCABQDorG3btmX9+vWly7jHZZddVl2Q1aV7XNv9dW8BABoCWICO27x5\nc17/+tfgGPxEAAAgAElEQVSXLgNowWL9PTtycEuSyd1S09y2JjlqWSMZb7755rzxjW/MOeeck+uv\nvz4HHnhgjj/++Bx55JGrX+Yy3HNNRyTZr1AR25N8ICPf35tvvjlvetOb8vnPfz4XXXRRduzYkZNO\nOiknnXRSO3WOqH89Jd+9zTt39HubJOedd17e85735NOf/nSuvvrqPOQhD8mTnvSknHjiiZmamlp0\nf39/Q730NzAqASxAx916662lSwBasvT+nkyyeODTRUcccUQuvPDCbN68OevXr8+ZZ56ZjRs3ZufO\nndm4cWPp8mbtl+SRpYsYzfbt2/POd74zT3jCE/KiF70o73rXuzIxMVG6rHsZ13fvO97xjlx33XV5\n3etel8c97nG57rrr8ra3vS1PfepT89GPfjTPfvazF9zf399QL/0NjEoAC9BxJ598cukSgJbU3t8f\n/vCH8/GPfzxnn332PSNen/WsZ+XKK6/MsccemyOPPDJ77eWZsMu1bt263HDDDUmSHTt25F3velfh\niupy2mmn5eEPf/guyw499NA89rGPzVvf+tZFA9ja+xv2ZPobGJV/8QIA0IoPfvCDWbNmTV784hfv\nsvzoo4/ONddck89+9rOFKqvP3XffXbqE6gyHr0nywAc+MJOTk/n6179eoCIAYFwJYAEAaMXFF1+c\nycnJe41yPeigg5Ikl1xySYmyYNluvPHGzMzM5HGPe1zpUgCAMSKABei47du3ly4BaEnt/b1jx448\n9KEPvdfy/rIdO3bs7pJgRV796lfntttuyxve8IZFt629v2FPpr+BUQlgATruFa94RekSgJbobxgf\nJ5xwQs4666y8/e1vzxOf+MRFt9ffUC/9DYxKAAvQcZs2bSpdAtCS2vt73333nXOU6/XXX3/PehgH\nJ598ct7ylrfkrW99a171qlctaZ/a+xv2ZPobGJUAFqDjpqamSpcAtKT2/v7xH//xbN26NTt37txl\n+Re/+MUkyeMf//gSZcFITj755Htexx9//JL3q72/YU+mv4FRCWABAGjFi170otx88815//vfv8vy\nd7/73XnUox6VpzzlKYUqg6V585vfnJNPPjknnHBCTjjhhNLlAABjau/SBQAAsJitY3n+Qw89NM97\n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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# Percentage of time spent in each idle state for CPUs in the big and LITTLE clusters\n", "ia.plotClusterIdleStateResidency(['big', 'LITTLE'], pct=True)" ] } ], "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.6" }, "toc": { "toc_cell": false, "toc_number_sections": true, "toc_threshold": 6, "toc_window_display": true } }, "nbformat": 4, "nbformat_minor": 0 }