Skip to content

Instantly share code, notes, and snippets.

@Leo-Yan
Created September 26, 2021 14:09
Show Gist options
  • Save Leo-Yan/d2fdd0f77b6ee973cd6d649bb1e39e56 to your computer and use it in GitHub Desktop.
Save Leo-Yan/d2fdd0f77b6ee973cd6d649bb1e39e56 to your computer and use it in GitHub Desktop.
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Typical LISA experiment"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"This notebook shows a typical LISA-use case:\n",
"\n",
"* Connecting to a target\n",
"* Configuring an rt-app workload\n",
"* Collecting a trace while executing a workload\n",
"* Displaying the trace\n",
"* Analysing the trace\n",
"\n",
"It can serve as a template for different kind of experiments, - you could only change the workload to execute & the trace events to collect"
]
},
{
"cell_type": "code",
"execution_count": 48,
"metadata": {},
"outputs": [],
"source": [
"import logging\n",
"from lisa.utils import setup_logging\n",
"setup_logging(filepath='logging.conf', level=logging.DEBUG)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Target configuration"
]
},
{
"cell_type": "code",
"execution_count": 49,
"metadata": {},
"outputs": [],
"source": [
"from lisa.target import Target, TargetConf"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Create a target config file target_config.yml:\n",
"\n",
"```\n",
"# LISA Target configuration required by devlib to connect to a target.\n",
"#\n",
"# See the doc for available keys:\n",
"# https://lisa-linux-integrated-system-analysis.readthedocs.io/en/master/target.html#lisa.target.TargetConf\n",
"#\n",
"\n",
"target-conf:\n",
" kind : linux\n",
"\n",
" # Board\n",
" # Optional board name used for better prettier logs\n",
" name: qemu\n",
"\n",
" # Target IP or domain name\n",
" host: 192.168.3.103\n",
" port: 2222\n",
"\n",
" # Login username (has to be sudo enabled)\n",
" username: root\n",
" password: \"root\"\n",
"\n",
"platform-info:\n",
" conf:\n",
" rtapp:\n",
" # Calibration mapping of CPU numbers to calibration value for rtapp\n",
" calib: {0: 152, 1: 61}\n",
"\n",
"```"
]
},
{
"cell_type": "code",
"execution_count": 113,
"metadata": {},
"outputs": [],
"source": [
"#target = Target(\n",
"# kind='linux',\n",
"# name='qemu',\n",
"# host='192.168.3.103',\n",
"# port='2222',\n",
"# username='root',\n",
"# password='root',\n",
"#)\n",
"\n",
"target = Target.from_default_conf()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Setting up an rt-app workload"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"rt-app is very convenient for scheduler experiments, and the majority of the tests within LISA rely on it. Here we're going to create a somewhat useless workload just to show off the API.\n",
"\n",
"Relevant documentation:\n",
"\n",
"* **rt-app**: https://github.com/scheduler-tools/rt-app\n",
"* **rt-app LISA class**: https://lisa-linux-integrated-system-analysis.readthedocs.io/en/master/workloads.html#lisa.wlgen.rta.RTA\n",
"* **RTAPhase class**: https://lisa-linux-integrated-system-analysis.readthedocs.io/en/master/workloads.html#lisa.wlgen.rta.RTAPhase\n",
"* **PeriodicWload class**: https://lisa-linux-integrated-system-analysis.readthedocs.io/en/master/workloads.html#lisa.wlgen.rta.PeriodicWload"
]
},
{
"cell_type": "code",
"execution_count": 114,
"metadata": {},
"outputs": [],
"source": [
"from lisa.wlgen.rta import RTA, RTAPhase, PeriodicWload, DutyCycleSweepPhase"
]
},
{
"cell_type": "code",
"execution_count": 115,
"metadata": {},
"outputs": [],
"source": [
"rtapp_profile = {\n",
" **{\n",
" f'task1': RTAPhase(\n",
" prop_wload=PeriodicWload(\n",
" duty_cycle_pct=5,\n",
" period=16e-3,\n",
" duration=1,\n",
" )\n",
" )\n",
" }\n",
"}"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"rt-app needs some calibration information (20% duty cycle isn't the same amount of work on all platforms!). It can be manually specified like so:"
]
},
{
"cell_type": "code",
"execution_count": 116,
"metadata": {},
"outputs": [],
"source": [
"def provide_calibration(calibration):\n",
" target.plat_info[\"rtapp\"].add_src(\"user\", {\"calib\" : calibration})"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"However, it is automatically collected when first creating an rt-app workload if it is not specified, so you can forego the above step and let the calibration happen on-demand:"
]
},
{
"cell_type": "code",
"execution_count": 117,
"metadata": {},
"outputs": [],
"source": [
"wload = RTA.from_profile(target, rtapp_profile, name='experiment_workload')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Prepare Ftrace tracepoints"
]
},
{
"cell_type": "code",
"execution_count": 118,
"metadata": {},
"outputs": [],
"source": [
"import os\n",
"from lisa.trace import FtraceCollector"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We need to specify the trace events we want to record. We could list what's available like so:"
]
},
{
"cell_type": "code",
"execution_count": 119,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"['sched:sched_pelt_cfs', 'sched:sched_pelt_rt', 'sched:sched_pelt_dl', 'sched:sched_pelt_irq', 'sched:sched_pelt_se', 'sched:sched_overutilized', 'sched:sched_update_nr_running', 'sched:sched_util_est_se', 'sched:sched_util_est_cfs', 'sched:sched_cpu_capacity', 'task:task_rename', 'task:task_newtask', 'sched:sched_wake_idle_without_ipi', 'sched:sched_swap_numa', 'sched:sched_stick_numa', 'sched:sched_move_numa', 'sched:sched_pi_setprio', 'sched:sched_stat_runtime', 'sched:sched_stat_blocked', 'sched:sched_stat_iowait', 'sched:sched_stat_sleep', 'sched:sched_stat_wait', 'sched:sched_process_exec', 'sched:sched_process_fork', 'sched:sched_process_wait', 'sched:sched_wait_task', 'sched:sched_process_exit', 'sched:sched_process_free', 'sched:sched_migrate_task', 'sched:sched_switch', 'sched:sched_wakeup_new', 'sched:sched_wakeup', 'sched:sched_waking', 'sched:sched_kthread_work_execute_end', 'sched:sched_kthread_work_execute_start', 'sched:sched_kthread_work_queue_work', 'sched:sched_kthread_stop_ret', 'sched:sched_kthread_stop']\n"
]
}
],
"source": [
"available_events = target.execute(\"cat /sys/kernel/debug/tracing/available_events\").splitlines()\n",
"\n",
"# That's gonna be a pretty big list, let's focus on the scheduler events\n",
"sched_events = [\n",
" event\n",
" for event in available_events\n",
" if (\n",
" event.startswith(\"sched:\") or\n",
" event.startswith(\"task:\")\n",
" )\n",
"]\n",
"print(sched_events)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Let's just collect the base events required to plot task scheduling:"
]
},
{
"cell_type": "code",
"execution_count": 120,
"metadata": {},
"outputs": [],
"source": [
"events = [\n",
" 'sched_switch',\n",
" 'sched_wakeup',\n",
" 'sched_wakeup_new',\n",
" 'task_rename',\n",
" 'sched_update_nr_running',\n",
" 'sched_pelt_cfs',\n",
" 'sched_pelt_se',\n",
" 'cpu_frequency',\n",
" 'sched_overutilized',\n",
" 'sched_migrate_task',\n",
" 'sched_pelt_cfs',\n",
" 'sched_pelt_se',\n",
"]"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"And now we can actually record traces while running our workload:"
]
},
{
"cell_type": "code",
"execution_count": 121,
"metadata": {},
"outputs": [],
"source": [
"trace_path = os.path.join(wload.res_dir, \"trace.dat\")\n",
"ftrace_coll = FtraceCollector(target, events=events, buffer_size=10240, output_path=trace_path)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Running the workload"
]
},
{
"cell_type": "code",
"execution_count": 122,
"metadata": {},
"outputs": [],
"source": [
"with wload, ftrace_coll:\n",
" wload.run()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Loading up the trace"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We have a Trace class that lets us easily access trace events. It can also do some post-processing to provide different kinds of analysis."
]
},
{
"cell_type": "code",
"execution_count": 123,
"metadata": {},
"outputs": [],
"source": [
"from lisa.trace import Trace"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"You can pass the platform info directly from the **Target**:"
]
},
{
"cell_type": "code",
"execution_count": 124,
"metadata": {},
"outputs": [],
"source": [
"trace = Trace(trace_path, target.plat_info, events=events)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Looking at the trace"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Kernelshark can be opened from the notebook:"
]
},
{
"cell_type": "code",
"execution_count": 125,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<os._wrap_close at 0x7fb3f8ca0e20>"
]
},
"execution_count": 125,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"trace.show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Analysing the trace"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Relevant documentation: https://lisa-linux-integrated-system-analysis.readthedocs.io/en/master/trace_analysis.html"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Using the trace analysis"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### Example dataframes\n",
"\n",
"LISA ships a number of namespaced trace analysis methods. They can all be called on a trace with `trace.ana.<analysis name>.<method name>()`.\n",
"They fall mostly into two categories:\n",
" * Method starting with `df_`: returns a pandas DataFrame\n",
" * Method starting with `plot_`: returns a holoviews element ready to be displayed"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The `trace.ana` object can be used to set default values to analysis methods. Simply calling it with keyword arguments will set default values, which can later be overridden when the method is called if necessary. \n",
"\n",
"This avoids repetition of fixed parameters such as `ŧask`, `tasks`, `cpu` etc. Just be careful as some methods might take more parameters than you expect: some task-related methods also accept a `cpu` parameter to restrict to a given CPU, so it might be a good idea to have a proxy object for all CPU-related calls and another one for task-related calls."
]
},
{
"cell_type": "code",
"execution_count": 128,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<img src='data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAA1AAAAEGCAYAAABrU3TyAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/Il7ecAAAACXBIWXMAAAsTAAALEwEAmpwYAAAg5UlEQVR4nO3deVTVdf7H8ddVwEQIRLRQEMUlBQUsyX2t3DVTM83MpjGd0TmWjSm/OmbT4tiUNseyKHX0lEauiZZQZpk2M2bYoLnviGgk7uICyOf3R8c7kgufHO4SPB/neA73frfXve8D+vL7vV8cxhgjAAAAAECJKng6AAAAAAD8VlCgAAAAAMASBQoAAAAALFGgAAAAAMASBQoAAAAALFGgAAAAAMASBQoAUKL58+erS5cu113esWNHzZo1y42Jbt758+fVu3dvBQUF6cEHH3TpserUqaMvvvjCpcf4pblz56pt27ZuPSYAlCcUKABwsw8//FDNmzdXQECAwsLC1L17d33zzTeSpBdeeEG+vr4KCAhQcHCwWrdurX//+9/OZY888shV+3M4HNqzZ49LMw8ZMkSff/65S4/hLosXL1ZOTo6OHTumRYsWXbX8eu+zq7ljjkeOHFGfPn1Us2ZNORwOHThwoMRtPvzwQ0VGRqpKlSrq27evjh8/7tKMAODtKFAA4EbTpk3TU089pWeffVY5OTk6ePCgRo0apZSUFOc6Dz30kM6ePaujR4+qbdu26tevn0rjd54XFhb+z/soCzIzM9WwYUP5+Ph4OorbVahQQd26ddOSJUus1t+6datGjhypDz74QDk5OfL399eoUaNcnBIAvBsFCgDc5NSpU3r++ec1Y8YM9evXT1WqVJGvr6969+6t11577ar1fX19NWzYMP344486duzYTR2zTp06evXVVxUbG6sqVaqosLBQ69evV+vWrRUcHKy4uDitWbPGuf7cuXMVFRWlwMBA1a1bV/Pnz3c+f+VlYatWrVKjRo0UFBSkP/3pT1cVvH/84x9q3Lixqlatqq5duyozM9O5zOFwKCkpSQ0aNFBwcLBGjx5dbPuZM2eqcePGCgwMVHR0tL7//nu99tpr6t+/f7FjjBkzRk8++eQ1X/f27dvVsWNHBQcHKyYmRsuXL5ckTZo0SS+++KIWLFiggIAAzZ49u9h2aWlpmjx5snN5XFycJGnOnDnOTFFRUXr33Xed2+Tm5qpXr14KDg5WSEiI2rVrp6Kiomtmqlu3rpKTk69a1r59e0lSXFycAgICtGDBAp04cUK9evVS9erVVbVqVfXq1UuHDh1ybnO9Wf3SM888o7Zt2+rUqVO67bbbNGrUKCUkJFxz3V+aP3++evfurfbt2ysgIEAvvfSSli5dqjNnzlhtDwBlkgEAuEVqaqqpWLGiKSgouO46kyZNMkOGDDHGGHPhwgUzbtw4ExERcdWyK0kyu3fvvub+IiMjTVxcnDl48KA5d+6cOXTokAkJCTGffvqpuXTpkvn8889NSEiI+emnn8zZs2dNYGCg2bFjhzHGmMOHD5stW7YYY4yZM2eOadOmjTHGmKNHj5qAgACzaNEik5+fb6ZNm2YqVqxoZs6caYwxZtmyZaZevXpm27ZtpqCgwLz00kumVatWxfL27NnTnDhxwmRmZprQ0FCTmppqjDFm4cKFpmbNmmbDhg2mqKjI7N692xw4cMAcPnzY+Pv7mxMnThhjjCkoKDDVq1c36enpV73m/Px8U69ePfPKK6+YixcvmtWrV5uAgADn67re+3itGVz2ySefmD179piioiKzZs0aU7lyZbNx40ZjjDGJiYlm5MiRJj8/3+Tn55u1a9eaoqIi5/u/atUqs3HjRhMREWFWrFhx3eP+co65ublm8eLFJi8vz5w+fdoMGDDA3H///cYYYzWrS5cumeHDh5suXbqYvLy8YscqKCgwksz+/fuvm8cYY/r06WOmTJlS7LkqVapc830HgPKCM1AA4CbHjh1TaGhoiZeOLVy4UMHBwYqIiNDGjRv18ccf/0/HHTNmjCIiIlS5cmXNmzdPPXr0UI8ePVShQgXdd999at68uVauXCnp50u8tmzZovPnzyssLEwxMTFX7W/lypWKiYnRgAED5Ovrq6eeekq33367c3lSUpL+7//+T40bN5aPj4+effZZZWRkFDsLlZiYqODgYNWuXVudOnVSRkaGJGnWrFkaP368EhIS5HA4VL9+fUVGRiosLEzt27d3fmYpLS1NoaGhuuuuu67Kt379ep09e1aJiYny8/NT586d1atXr2ue+bHVs2dP1atXTw6HQx06dFCXLl20bt06ST+fKTxy5IgyMzPl6+urdu3ayeFwOLddt26d+vTpo/fff1+9evWyPma1atXUv39/+fv7KzAwUM8995y+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' style='max-width:100%; margin: auto; display: block; '/>"
],
"text/plain": [
":Bars [cpu] (runtime)"
]
},
"execution_count": 128,
"metadata": {
"application/vnd.holoviews_exec.v0+json": {}
},
"output_type": "execute_result"
}
],
"source": [
"trace.ana.tasks.plot_task_total_residency(\"task1-0\")"
]
},
{
"cell_type": "code",
"execution_count": 129,
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"[2021-09-26 21:17:34,871][py.warnings] WARNING /home/leoy/Work2/Develop/tools/lisa/.lisa-venv-3.8/lib/python3.8/site-packages/holoviews/plotting/mpl/annotation.py:119: UserWarning: Setting the 'color' property will override the edgecolor or facecolor properties.\n",
" return [axis.axvspan(*positions, **opts)]\n",
"\n",
"[2021-09-26 21:17:34,945][py.warnings] WARNING /home/leoy/Work2/Develop/tools/lisa/.lisa-venv-3.8/lib/python3.8/site-packages/holoviews/plotting/mpl/annotation.py:119: UserWarning: Setting the 'color' property will override the edgecolor or facecolor properties.\n",
" return [axis.axvspan(*positions, **opts)]\n",
"\n",
"[2021-09-26 21:17:34,957][py.warnings] WARNING /home/leoy/Work2/Develop/tools/lisa/.lisa-venv-3.8/lib/python3.8/site-packages/holoviews/plotting/mpl/annotation.py:119: UserWarning: Setting the 'color' property will override the edgecolor or facecolor properties.\n",
" return [axis.axvspan(*positions, **opts)]\n",
"\n",
"[2021-09-26 21:17:35,001][py.warnings] WARNING /home/leoy/Work2/Develop/tools/lisa/.lisa-venv-3.8/lib/python3.8/site-packages/holoviews/plotting/mpl/annotation.py:119: UserWarning: Setting the 'color' property will override the edgecolor or facecolor properties.\n",
" return [axis.axvspan(*positions, **opts)]\n",
"\n",
"[2021-09-26 21:17:35,022][py.warnings] WARNING /home/leoy/Work2/Develop/tools/lisa/.lisa-venv-3.8/lib/python3.8/site-packages/holoviews/plotting/mpl/annotation.py:119: UserWarning: Setting the 'color' property will override the edgecolor or facecolor properties.\n",
" return [axis.axvspan(*positions, **opts)]\n",
"\n",
"[2021-09-26 21:17:35,035][py.warnings] WARNING /home/leoy/Work2/Develop/tools/lisa/.lisa-venv-3.8/lib/python3.8/site-packages/holoviews/plotting/mpl/annotation.py:119: UserWarning: Setting the 'color' property will override the edgecolor or facecolor properties.\n",
" return [axis.axvspan(*positions, **opts)]\n",
"\n",
"[2021-09-26 21:17:35,044][py.warnings] WARNING /home/leoy/Work2/Develop/tools/lisa/.lisa-venv-3.8/lib/python3.8/site-packages/holoviews/plotting/mpl/annotation.py:119: UserWarning: Setting the 'color' property will override the edgecolor or facecolor properties.\n",
" return [axis.axvspan(*positions, **opts)]\n",
"\n",
"[2021-09-26 21:17:35,065][py.warnings] WARNING /home/leoy/Work2/Develop/tools/lisa/.lisa-venv-3.8/lib/python3.8/site-packages/holoviews/plotting/mpl/annotation.py:119: UserWarning: Setting the 'color' property will override the edgecolor or facecolor properties.\n",
" return [axis.axvspan(*positions, **opts)]\n",
"\n",
"[2021-09-26 21:17:35,076][py.warnings] WARNING /home/leoy/Work2/Develop/tools/lisa/.lisa-venv-3.8/lib/python3.8/site-packages/holoviews/plotting/mpl/annotation.py:119: UserWarning: Setting the 'color' property will override the edgecolor or facecolor properties.\n",
" return [axis.axvspan(*positions, **opts)]\n",
"\n",
"[2021-09-26 21:17:35,092][py.warnings] WARNING /home/leoy/Work2/Develop/tools/lisa/.lisa-venv-3.8/lib/python3.8/site-packages/holoviews/plotting/mpl/annotation.py:119: UserWarning: Setting the 'color' property will override the edgecolor or facecolor properties.\n",
" return [axis.axvspan(*positions, **opts)]\n",
"\n",
"[2021-09-26 21:17:35,102][py.warnings] WARNING /home/leoy/Work2/Develop/tools/lisa/.lisa-venv-3.8/lib/python3.8/site-packages/holoviews/plotting/mpl/annotation.py:119: UserWarning: Setting the 'color' property will override the edgecolor or facecolor properties.\n",
" return [axis.axvspan(*positions, **opts)]\n",
"\n",
"[2021-09-26 21:17:35,113][py.warnings] WARNING /home/leoy/Work2/Develop/tools/lisa/.lisa-venv-3.8/lib/python3.8/site-packages/holoviews/plotting/mpl/annotation.py:119: UserWarning: Setting the 'color' property will override the edgecolor or facecolor properties.\n",
" return [axis.axvspan(*positions, **opts)]\n",
"\n",
"[2021-09-26 21:17:35,127][py.warnings] WARNING /home/leoy/Work2/Develop/tools/lisa/.lisa-venv-3.8/lib/python3.8/site-packages/holoviews/plotting/mpl/annotation.py:119: UserWarning: Setting the 'color' property will override the edgecolor or facecolor properties.\n",
" return [axis.axvspan(*positions, **opts)]\n",
"\n",
"[2021-09-26 21:17:35,138][py.warnings] WARNING /home/leoy/Work2/Develop/tools/lisa/.lisa-venv-3.8/lib/python3.8/site-packages/holoviews/plotting/mpl/annotation.py:119: UserWarning: Setting the 'color' property will override the edgecolor or facecolor properties.\n",
" return [axis.axvspan(*positions, **opts)]\n",
"\n",
"[2021-09-26 21:17:35,149][py.warnings] WARNING /home/leoy/Work2/Develop/tools/lisa/.lisa-venv-3.8/lib/python3.8/site-packages/holoviews/plotting/mpl/annotation.py:119: UserWarning: Setting the 'color' property will override the edgecolor or facecolor properties.\n",
" return [axis.axvspan(*positions, **opts)]\n",
"\n",
"[2021-09-26 21:17:35,162][py.warnings] WARNING /home/leoy/Work2/Develop/tools/lisa/.lisa-venv-3.8/lib/python3.8/site-packages/holoviews/plotting/mpl/annotation.py:119: UserWarning: Setting the 'color' property will override the edgecolor or facecolor properties.\n",
" return [axis.axvspan(*positions, **opts)]\n",
"\n",
"[2021-09-26 21:17:35,175][py.warnings] WARNING /home/leoy/Work2/Develop/tools/lisa/.lisa-venv-3.8/lib/python3.8/site-packages/holoviews/plotting/mpl/annotation.py:119: UserWarning: Setting the 'color' property will override the edgecolor or facecolor properties.\n",
" return [axis.axvspan(*positions, **opts)]\n",
"\n",
"[2021-09-26 21:17:35,186][py.warnings] WARNING /home/leoy/Work2/Develop/tools/lisa/.lisa-venv-3.8/lib/python3.8/site-packages/holoviews/plotting/mpl/annotation.py:119: UserWarning: Setting the 'color' property will override the edgecolor or facecolor properties.\n",
" return [axis.axvspan(*positions, **opts)]\n",
"\n",
"[2021-09-26 21:17:35,203][py.warnings] WARNING /home/leoy/Work2/Develop/tools/lisa/.lisa-venv-3.8/lib/python3.8/site-packages/holoviews/plotting/mpl/annotation.py:119: UserWarning: Setting the 'color' property will override the edgecolor or facecolor properties.\n",
" return [axis.axvspan(*positions, **opts)]\n",
"\n",
"[2021-09-26 21:17:35,213][py.warnings] WARNING /home/leoy/Work2/Develop/tools/lisa/.lisa-venv-3.8/lib/python3.8/site-packages/holoviews/plotting/mpl/annotation.py:119: UserWarning: Setting the 'color' property will override the edgecolor or facecolor properties.\n",
" return [axis.axvspan(*positions, **opts)]\n",
"\n",
"[2021-09-26 21:17:35,229][py.warnings] WARNING /home/leoy/Work2/Develop/tools/lisa/.lisa-venv-3.8/lib/python3.8/site-packages/holoviews/plotting/mpl/annotation.py:119: UserWarning: Setting the 'color' property will override the edgecolor or facecolor properties.\n",
" return [axis.axvspan(*positions, **opts)]\n",
"\n",
"[2021-09-26 21:17:35,238][py.warnings] WARNING /home/leoy/Work2/Develop/tools/lisa/.lisa-venv-3.8/lib/python3.8/site-packages/holoviews/plotting/mpl/annotation.py:119: UserWarning: Setting the 'color' property will override the edgecolor or facecolor properties.\n",
" return [axis.axvspan(*positions, **opts)]\n",
"\n"
]
},
{
"data": {
"text/html": [
"<img src='data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAA2IAAAEGCAYAAAAHVSb3AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/Il7ecAAAACXBIWXMAAAsTAAALEwEAmpwYAAA5DklEQVR4nO3deXwU9f3H8ffSEAzkIAQIOSAcoVwGkERCfyIIiJwFhQhGLbGkolQFtSqtF2A9aFXEVn5aWsSoFETaH9EKiMZaBUFuPKiIGJQcphISQjgSQub3R7rrJtnd7Ca7szlez8fDh8ns7MxnZsd13vkeYzEMwxAAAAAAwDSt/F0AAAAAALQ0BDEAAAAAMBlBDAAAAABMRhADAAAAAJMRxAAAAADAZAQxAAAAADAZQQwATLRo0SLdeOONftu/xWLRV1995fC14OBgff3116bV8u233yo4OFgXLlzw+b5cHXd9/d///Z+6du2q4OBg7du3z6vbtvfSSy9p+PDhbq170003KTAwUN27d/dZPY3BTTfdpAcffNDn+ykrK1NwcLBat25tyv4AtCwEMQD4r+7du+vdd9/1aw1XXHGF/vKXv/hl36WlperZs6dp++vWrZtKS0v1ox/9yLR9etM999yj5557TqWlpbrkkktqve6L8OeO++67T0ePHrX9vm7dOv3P//yP2rZtqyuuuKLW+hcuXNCDDz6o6OhohYSE6JJLLlFxcbHt9a+//lqTJ09WSEiIOnbsqPvuu8/22nPPPaekpCS1adNGN910k8u63n//fcXGxjbw6Or2z3/+U6NGjVJYWJhbgdQwDC1YsEARERGKiIjQggULZH3Eaps2bVRaWqobbrjBx1UDaIkIYgDQhFRUVPi7BPzXN998owEDBvi7jDp16NBBd955p3796187fH3hwoX66KOPtH37dpWUlOiVV17RRRddJEkqLy/X2LFjNXr0aH333XfKycmp1qIbHR2tBx98ULNnzzblWNzRrl07zZ49W08++aRb669YsUIbNmzQgQMH9Mknn+jNN9/Un/70Jx9XCQAEMQCoU1lZme68805FR0crOjpad955p8rKyiRJRUVFmjx5sjp16qTw8HBNnjxZOTk5tvdmZ2dr5MiRCgkJ0dixY3X8+HGn+3nggQf04Ycf6vbbb1dwcLBuv/12SVUtK8uXL1fv3r3Vu3dvSdL8+fPVtWtXhYaGKjExUR9++KFtOxcuXNDjjz+uXr16KSQkRImJiTp27Fit/W3dulVdu3bV+++/b9uPtQXnpptu0m233aZJkyYpJCREycnJOnLkiO29W7ZsUZ8+fRQWFqZf/vKXGjlypNOWvJ07dyopKUmhoaGKjIzU3XffLUk6evSoLBaLLVxmZ2drxIgRCgkJ0ZVXXqnbbrvNdtNvXTcjI0PdunVTx44d9dhjj1Xbx09+8hO1b99eUVFRuv3221VeXu6wno0bN6p///4KCQlRTEyMnnrqKYfrVVZW6tFHH1VcXJw6d+6sWbNm6eTJk7buahcuXNCgQYPUq1evWu8dMWKEJGnQoEEKDg7Wa6+9Vue18tJLL6lnz54KCQlRjx49tHr1aod13XvvvRo+fLhOnjzp8PWarrzySs2YMUPR0dG1XisqKtKyZcv05z//WXFxcbJYLLr44ottQeyll15SdHS07r77brVr104XXXSRBg4caHv/tGnTdPXVVysiIsJlDadPn9aECROUl5en4OBgBQcHKy8vz+XnZhiG7rrrLnXu3FmhoaFKSEjQZ599Vmvbp06d0qhRozRv3jwZhqGhQ4fqZz/7mdutuxkZGfrVr36l2NhYxcTE6Fe/+pVeeuklt94LAA1BEAOAOjz22GPasWOH9u/frwMHDmjnzp169NFHJVXdrP/85z/XN998o2+//VZBQUG2ACVJ119/vRITE3X8+HE99NBDysjIcLmfyy+/3Nbd7bnnnrO9tmHDBn388cc6ePCgJOnSSy/V/v37deLECV1//fW69tprde7cOUnS0qVLtWbNGm3cuFElJSV68cUX1bZt22r72rx5s1JTU/W3v/3NYXc1SVq7dq0WLlyooqIixcfH64EHHpAkHT9+XCkpKXriiSdUWFioPn366KOPPnJ6XPPnz9f8+fNVUlKiI0eOaMaMGQ7Xu/766zV06FAVFhZq0aJFeuWVV2qts3XrVh06dEhZWVl65JFH9O9//1uS9KMf/UjPPPOMjh8/ru3btysrK0v/+7//63A/6enp+tOf/qRTp07ps88+0+jRox2u99JLL+mll17SP//5T3399dcqLS3V7bffbuuuJkkHDhyoFlCtPvjgA9vrpaWlmjlzpstr5fTp05o3b542bdqkU6dO6aOPPtLgwYOrbbOyslI333yzPvnkE23ZskVhYWEO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TRRS85w899xz6tOnj37605/q7NmzklTtGA3D0Llz51x2pZw1a5aWLl2q3Nxc5eXl6emnn65zKn4A8AaCGADYmThxooKCgmz/LFq0SA8++KCSkpI0cOBAJSQkaMiQIbaHu9555506e/asOnbsqGHDhmn8+PHVtvfXv/5VH3/8sTp06KDFixdr1qxZLvc/f/58rV+/XuHh4Zo3b57DdcaNG6fx48frxz/+seLi4nTRRRdV68Z39913a8aMGbrqqqsUGhqq9PR0202qVbdu3ZSVlaUlS5Z4/Nyyjh076vXXX9d9992niIgIHTx40PYsKUc2b96sAQMGKDg4WPPnz9fatWttXeLsrV69Wtu3b1dERIQefPBBzZw50+k2a3rqqaf017/+VSEhIbr55ps1c+ZMp+u+8sor6t69u0JDQ/XCCy84nZ1w9uzZ+tnPfqYRI0aoR48euuiii/THP/7RrXqkqod3p6WlqX379lq3bp3La6WyslJLly5VdHS0OnTooH/9618Ow2RaWpoefvhhjR49utqzwlx55ZVXFBQUpLlz5+rDDz9UUFBQtda2NWvW6JtvvlFERIQmTZqk3/72txozZowkqU+fPnr11Vd16623Kjw8XJmZmXrjjTds3SMfffRRBQUFacmSJXr11VcVFBRUbbxWcHCwbUbPvn37KjU1VT179lT79u2Vl5fn8nMrKSnRzTffrPDwcMXFxSkiIkL33ntvtWOzWCxasWKFYmNjNXXqVJ07d04ffPCBgoKCNHHiRNukKFdddZXT83PLLbfopz/9qRISEnTxxRdr0qRJuuWWW9w6twDQEBaD0agAgAaorKxUbGysVq9erVGjRnltuzNnzlTfvn2rtRzBtZtvvllr1qxRZGSkR61mcKysrEyRkZE6f/687rvvPi1cuNDfJQFoRghiAACPvf3220pOTlZQUJCefPJJLV++XF9//bXDli537dq1Sx06dFCPHj20ZcsWXX311dq+fbsuueQSL1YOAEDj4F5HdwAA7Gzfvl3XX3+9ysvL1b9/f23YsKFBIUySvvvuO02bNk2FhYWKjY3V888/TwgDADRbtIgBAAAAgMmYrAMAAAAATNYsuyaOv/JKbV67VgoMlEJDvbfhkhLJxRS4Tnm7jrpqcba/+tbfEDVrKSuTHM2CZl+b2Z+bo/3541w1RGBg1Xlt08a92n1xTVo1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a9QtYlalpaWaPn26li1bptDQUD3//PN65plndOzYMT3zzDO2FgNnKioqtHfvXs2dO1f79u1Tu3bttGTJEpOqR0tl1nU7ZMgQffPNNzpw4IDuuOMOXX311T46IrQEDb1urcrLy/XGG2/o2muv9XHFgHnXLd+38KaGXrdFRUXKzMxUdna28vLydPr0ab366qsmVQ9vaPRB7Pz585o+fbpuuOEGTZs2TZKUkZFh+/naa6+1DWZ0JjY2VrGxsUpOTpZU1SzraGB4TEyMjh07Zvs9JydHMTEx3joUtCBmXrehoaEKDg6WJE2cOFHnz5/X8ePHvXk4aCG8cd1abdq0SUOGDFFkZKTD1/m+hbeYed3yfQtv8cZ1++6776pHjx7q1KmTWrdurWnTpjlsRbP/vq2oqNDJkycVERHh5SNCfTTqIGYYhtLT09WvXz/dfffdtuXR0dH617/+JUl677331Lt3b5fb6dKli7p27apDhw5Jqur/3b9//1rrTZkyRS+//LIMw9COHTsUFhZGNxl4zOzr9rvvvrP19d65c6cqKyv5goXHvHXdWq1Zs8Zl9y6+b+ENZl+3fN/CG7x13Xbr1k07duzQmTNnZBiGsrKy1K9fv1rrTZkyRRkZGZKk9evXa/To0bJYLF48ItSbnyYJccuHH35oSDISEhKMQYMGGYMGDTLeeust48MPPzSGDBliDBw40Bg6dKixe/duwzAMIz8/34iJiTFCQkKMsLAwIyYmxjh58qRhGIaxb98+IzEx0UhISDCmTp1qnDhxwjAMw3j++eeN559/3jAMw6isrDR++ctfGj179jQuvvhiY9euXf45cDRpZl+3f/zjH43+/fsbAwcONJKTk41t27b558DRpHnzui0tLTU6dOhgFBcXV9sH37fwNrOvW75v4Q3evG4ffvhho0+fPsaAAQOMG2+80Th37pxhGIbx0EMPGZmZmYZhGMbZs2eNlJQUo1evXsall15qHDlyxD8HjloshsG0KQAAAABgpkbdNREAAAAAmiOCGAAAAACYjCAGAAAAACYjiAEAAACAyQhiAAAAAGAyghgAoEUoLCzU4MGDNXjwYHXp0kUxMTEaPHiwgoOD9ctf/tLf5QEAWhimrwcAtDiLFi1ScHCw7rnnHn+XAgBooWgRAwC0aO+//74mT54sqSqgpaWl6fLLL1dcXJz+/ve/67777lNCQoLGjx+v8+fPS5L27NmjkSNHKjExUePGjVN+fr4/DwEA0AQRxAAAsHPkyBG99957euONN3TjjTdq1KhR+vTTTxUUFKS33npL58+f1x133KH169drz549mj17th544AF/lw0AaGIC/F0AAACNyYQJE9S6dWslJCTowoULGj9+vCQpISFBR48e1aFDh/TZZ59p7NixkqQLFy4oKirKnyUDAJogghgAAHbatGkjSWrVqpVat24ti8Vi+72iokKGYWjAgAHavn27P8sEADRxdE0EAMADffr00ffff28LYufPn9fnn3/u56oAAE0NQQwAAA8EBgZq/fr1WrBggQYNGqTBgwfro48+8ndZAIAmhunrAQAAAMBktIgBAAAAgMkIYgAAAABgMoIYAAAAAJiMIAYAAAAAJiOIAQAAAIDJCGIAAAAAYDKCGAAAAACY7P8B8FKt4ep+GMUAAAAASUVORK5CYII=' style='max-width:100%; margin: auto; display: block; '/>"
],
"text/plain": [
":Overlay\n",
" .Curve.Util :Curve [Time] (util)\n",
" .Marker.Util :Scatter [Time] (util)\n",
" .Curve.Load :Curve [Time] (load)\n",
" .Marker.Load :Scatter [Time] (load)\n",
" .VSpan.Overutilized.I :VSpan [x,y]\n",
" .VSpan.Overutilized.II :VSpan [x,y]\n",
" .VSpan.Overutilized.III :VSpan [x,y]\n",
" .VSpan.Overutilized.IV :VSpan [x,y]\n",
" .VSpan.Overutilized.V :VSpan [x,y]\n",
" .VSpan.Overutilized.VI :VSpan [x,y]\n",
" .VSpan.Overutilized.VII :VSpan [x,y]\n",
" .VSpan.Overutilized.VIII :VSpan [x,y]\n",
" .VSpan.Overutilized.IX :VSpan [x,y]\n",
" .VSpan.Overutilized.X :VSpan [x,y]\n",
" .VSpan.Overutilized.XI :VSpan [x,y]\n",
" .VSpan.Overutilized.XII :VSpan [x,y]\n",
" .VSpan.Overutilized.XIII :VSpan [x,y]\n",
" .VSpan.Overutilized.XIV :VSpan [x,y]\n",
" .VSpan.Overutilized.XV :VSpan [x,y]\n",
" .VSpan.Overutilized.XVI :VSpan [x,y]\n",
" .VSpan.Overutilized.XVII :VSpan [x,y]\n",
" .VSpan.Overutilized.XVIII :VSpan [x,y]\n",
" .VSpan.Overutilized.XIX :VSpan [x,y]\n",
" .VSpan.Overutilized.XX :VSpan [x,y]\n",
" .VSpan.Overutilized.XXI :VSpan [x,y]\n",
" .VSpan.Overutilized.XXII :VSpan [x,y]"
]
},
"execution_count": 129,
"metadata": {
"application/vnd.holoviews_exec.v0+json": {}
},
"output_type": "execute_result"
}
],
"source": [
"trace.ana.load_tracking.plot_task_signals(\"task1-0\")"
]
},
{
"cell_type": "code",
"execution_count": 130,
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"[2021-09-26 21:18:21,894][py.warnings] WARNING /home/leoy/Work2/Develop/tools/lisa/.lisa-venv-3.8/lib/python3.8/site-packages/holoviews/plotting/mpl/annotation.py:119: UserWarning: Setting the 'color' property will override the edgecolor or facecolor properties.\n",
" return [axis.axvspan(*positions, **opts)]\n",
"\n",
"[2021-09-26 21:18:21,903][py.warnings] WARNING /home/leoy/Work2/Develop/tools/lisa/.lisa-venv-3.8/lib/python3.8/site-packages/holoviews/plotting/mpl/annotation.py:119: UserWarning: Setting the 'color' property will override the edgecolor or facecolor properties.\n",
" return [axis.axvspan(*positions, **opts)]\n",
"\n",
"[2021-09-26 21:18:21,912][py.warnings] WARNING /home/leoy/Work2/Develop/tools/lisa/.lisa-venv-3.8/lib/python3.8/site-packages/holoviews/plotting/mpl/annotation.py:119: UserWarning: Setting the 'color' property will override the edgecolor or facecolor properties.\n",
" return [axis.axvspan(*positions, **opts)]\n",
"\n",
"[2021-09-26 21:18:21,923][py.warnings] WARNING /home/leoy/Work2/Develop/tools/lisa/.lisa-venv-3.8/lib/python3.8/site-packages/holoviews/plotting/mpl/annotation.py:119: UserWarning: Setting the 'color' property will override the edgecolor or facecolor properties.\n",
" return [axis.axvspan(*positions, **opts)]\n",
"\n",
"[2021-09-26 21:18:21,937][py.warnings] WARNING /home/leoy/Work2/Develop/tools/lisa/.lisa-venv-3.8/lib/python3.8/site-packages/holoviews/plotting/mpl/annotation.py:119: UserWarning: Setting the 'color' property will override the edgecolor or facecolor properties.\n",
" return [axis.axvspan(*positions, **opts)]\n",
"\n",
"[2021-09-26 21:18:21,951][py.warnings] WARNING /home/leoy/Work2/Develop/tools/lisa/.lisa-venv-3.8/lib/python3.8/site-packages/holoviews/plotting/mpl/annotation.py:119: UserWarning: Setting the 'color' property will override the edgecolor or facecolor properties.\n",
" return [axis.axvspan(*positions, **opts)]\n",
"\n",
"[2021-09-26 21:18:21,965][py.warnings] WARNING /home/leoy/Work2/Develop/tools/lisa/.lisa-venv-3.8/lib/python3.8/site-packages/holoviews/plotting/mpl/annotation.py:119: UserWarning: Setting the 'color' property will override the edgecolor or facecolor properties.\n",
" return [axis.axvspan(*positions, **opts)]\n",
"\n",
"[2021-09-26 21:18:21,984][py.warnings] WARNING /home/leoy/Work2/Develop/tools/lisa/.lisa-venv-3.8/lib/python3.8/site-packages/holoviews/plotting/mpl/annotation.py:119: UserWarning: Setting the 'color' property will override the edgecolor or facecolor properties.\n",
" return [axis.axvspan(*positions, **opts)]\n",
"\n",
"[2021-09-26 21:18:21,996][py.warnings] WARNING /home/leoy/Work2/Develop/tools/lisa/.lisa-venv-3.8/lib/python3.8/site-packages/holoviews/plotting/mpl/annotation.py:119: UserWarning: Setting the 'color' property will override the edgecolor or facecolor properties.\n",
" return [axis.axvspan(*positions, **opts)]\n",
"\n",
"[2021-09-26 21:18:22,007][py.warnings] WARNING /home/leoy/Work2/Develop/tools/lisa/.lisa-venv-3.8/lib/python3.8/site-packages/holoviews/plotting/mpl/annotation.py:119: UserWarning: Setting the 'color' property will override the edgecolor or facecolor properties.\n",
" return [axis.axvspan(*positions, **opts)]\n",
"\n",
"[2021-09-26 21:18:22,019][py.warnings] WARNING /home/leoy/Work2/Develop/tools/lisa/.lisa-venv-3.8/lib/python3.8/site-packages/holoviews/plotting/mpl/annotation.py:119: UserWarning: Setting the 'color' property will override the edgecolor or facecolor properties.\n",
" return [axis.axvspan(*positions, **opts)]\n",
"\n",
"[2021-09-26 21:18:22,036][py.warnings] WARNING /home/leoy/Work2/Develop/tools/lisa/.lisa-venv-3.8/lib/python3.8/site-packages/holoviews/plotting/mpl/annotation.py:119: UserWarning: Setting the 'color' property will override the edgecolor or facecolor properties.\n",
" return [axis.axvspan(*positions, **opts)]\n",
"\n",
"[2021-09-26 21:18:22,046][py.warnings] WARNING /home/leoy/Work2/Develop/tools/lisa/.lisa-venv-3.8/lib/python3.8/site-packages/holoviews/plotting/mpl/annotation.py:119: UserWarning: Setting the 'color' property will override the edgecolor or facecolor properties.\n",
" return [axis.axvspan(*positions, **opts)]\n",
"\n",
"[2021-09-26 21:18:22,069][py.warnings] WARNING /home/leoy/Work2/Develop/tools/lisa/.lisa-venv-3.8/lib/python3.8/site-packages/holoviews/plotting/mpl/annotation.py:119: UserWarning: Setting the 'color' property will override the edgecolor or facecolor properties.\n",
" return [axis.axvspan(*positions, **opts)]\n",
"\n",
"[2021-09-26 21:18:22,084][py.warnings] WARNING /home/leoy/Work2/Develop/tools/lisa/.lisa-venv-3.8/lib/python3.8/site-packages/holoviews/plotting/mpl/annotation.py:119: UserWarning: Setting the 'color' property will override the edgecolor or facecolor properties.\n",
" return [axis.axvspan(*positions, **opts)]\n",
"\n",
"[2021-09-26 21:18:22,091][py.warnings] WARNING /home/leoy/Work2/Develop/tools/lisa/.lisa-venv-3.8/lib/python3.8/site-packages/holoviews/plotting/mpl/annotation.py:119: UserWarning: Setting the 'color' property will override the edgecolor or facecolor properties.\n",
" return [axis.axvspan(*positions, **opts)]\n",
"\n",
"[2021-09-26 21:18:22,101][py.warnings] WARNING /home/leoy/Work2/Develop/tools/lisa/.lisa-venv-3.8/lib/python3.8/site-packages/holoviews/plotting/mpl/annotation.py:119: UserWarning: Setting the 'color' property will override the edgecolor or facecolor properties.\n",
" return [axis.axvspan(*positions, **opts)]\n",
"\n",
"[2021-09-26 21:18:22,120][py.warnings] WARNING /home/leoy/Work2/Develop/tools/lisa/.lisa-venv-3.8/lib/python3.8/site-packages/holoviews/plotting/mpl/annotation.py:119: UserWarning: Setting the 'color' property will override the edgecolor or facecolor properties.\n",
" return [axis.axvspan(*positions, **opts)]\n",
"\n",
"[2021-09-26 21:18:22,132][py.warnings] WARNING /home/leoy/Work2/Develop/tools/lisa/.lisa-venv-3.8/lib/python3.8/site-packages/holoviews/plotting/mpl/annotation.py:119: UserWarning: Setting the 'color' property will override the edgecolor or facecolor properties.\n",
" return [axis.axvspan(*positions, **opts)]\n",
"\n",
"[2021-09-26 21:18:22,146][py.warnings] WARNING /home/leoy/Work2/Develop/tools/lisa/.lisa-venv-3.8/lib/python3.8/site-packages/holoviews/plotting/mpl/annotation.py:119: UserWarning: Setting the 'color' property will override the edgecolor or facecolor properties.\n",
" return [axis.axvspan(*positions, **opts)]\n",
"\n",
"[2021-09-26 21:18:22,152][py.warnings] WARNING /home/leoy/Work2/Develop/tools/lisa/.lisa-venv-3.8/lib/python3.8/site-packages/holoviews/plotting/mpl/annotation.py:119: UserWarning: Setting the 'color' property will override the edgecolor or facecolor properties.\n",
" return [axis.axvspan(*positions, **opts)]\n",
"\n",
"[2021-09-26 21:18:22,162][py.warnings] WARNING /home/leoy/Work2/Develop/tools/lisa/.lisa-venv-3.8/lib/python3.8/site-packages/holoviews/plotting/mpl/annotation.py:119: UserWarning: Setting the 'color' property will override the edgecolor or facecolor properties.\n",
" return [axis.axvspan(*positions, **opts)]\n",
"\n"
]
},
{
"data": {
"text/html": [
"<img src='data:image/png;base64,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LVtUWlrKmzjKqapxec78+fMvegkY75e4FKvHJO+VcERVjcvmzZtr8+bNOn36tIwxWrt2rcLCwsq1i4uL07x58yRJixcvVp8+fWSz2arwiOASLrpJiKU2btxoJJn27dubqKgoExUVZVasWGE2btxoOnbsaDp06GBuuOEGk5ycbIwxJjs72wQGBhovLy/j7e1tAgMDzfHjx40xxmzbts106tTJtG/f3gwZMsQcOXLEGGPMG2+8Yd544w1jjDGlpaVm4sSJpnXr1iYyMtJ8/fXXrjlwVGtWj8u///3vJjw83HTo0MF06dLFfPnll645cFRrVTku8/LyjK+vrzl27FiZPni/xOWwekzyXglHVOW4nDJlimnXrp2JiIgwd955p8nPzzfGGPPEE0+YxMREY4wxZ86cMfHx8aZNmzamc+fOZu/eva45cFQpmzHccgUAAAAArHRNXJoIAAAAANUJQQwAAAAALEYQAwAAAACLEcQAAAAAwGIEMQAAAACwGEEMAFDj5ebmKjo6WtHR0WratKkCAwMVHR0tT09PTZw40dXlAQCuQdy+HgBwTXnqqafk6emphx9+2NWlAACuYcyIAQCuWevXr9egQYMknQ1oCQkJ6tmzp1q0aKElS5bokUceUfv27TVgwAAVFRVJklJSUnTTTTepU6dO6t+/v7Kzs115CACAqxRBDACAn+3du1fr1q3TsmXLdOedd6p379769ttvVbduXa1YsUJFRUW67777tHjxYqWkpGjs2LF6/PHHXV02AOAq5ObqAgAAqC5uu+02ubu7q3379iopKdGAAQMkSe3bt1d6erp2796tHTt2qG/fvpKkkpISBQQEuLJkAMBViiAGAMDPateuLUmqVauW3N3dZbPZ7MvFxcUyxigiIkKbNm1yZZkAgBqASxMBAHBQu3btdPjwYXsQKyoq0s6dO11cFQDgakQQAwDAQR4eHlq8eLEeffRRRUVFKTo6Wv/5z39cXRYA4CrE7esBAAAAwGLMiAEAAACAxQhiAAAAAGAxghgAAAAAWIwgBgAAAAAWI4gBAAAAgMUIYgAAAABgMYIYAAAAAFjs/wFJ9Hx+D1QB7wAAAABJRU5ErkJggg==' style='max-width:100%; margin: auto; display: block; '/>"
],
"text/plain": [
":Overlay\n",
" .Scatter.Task_running_in_domain_left_square_bracket_0_right_square_bracket :Scatter [Time] (__cpu)\n",
" .VSpan.Overutilized.I :VSpan [x,y]\n",
" .VSpan.Overutilized.II :VSpan [x,y]\n",
" .VSpan.Overutilized.III :VSpan [x,y]\n",
" .VSpan.Overutilized.IV :VSpan [x,y]\n",
" .VSpan.Overutilized.V :VSpan [x,y]\n",
" .VSpan.Overutilized.VI :VSpan [x,y]\n",
" .VSpan.Overutilized.VII :VSpan [x,y]\n",
" .VSpan.Overutilized.VIII :VSpan [x,y]\n",
" .VSpan.Overutilized.IX :VSpan [x,y]\n",
" .VSpan.Overutilized.X :VSpan [x,y]\n",
" .VSpan.Overutilized.XI :VSpan [x,y]\n",
" .VSpan.Overutilized.XII :VSpan [x,y]\n",
" .VSpan.Overutilized.XIII :VSpan [x,y]\n",
" .VSpan.Overutilized.XIV :VSpan [x,y]\n",
" .VSpan.Overutilized.XV :VSpan [x,y]\n",
" .VSpan.Overutilized.XVI :VSpan [x,y]\n",
" .VSpan.Overutilized.XVII :VSpan [x,y]\n",
" .VSpan.Overutilized.XVIII :VSpan [x,y]\n",
" .VSpan.Overutilized.XIX :VSpan [x,y]\n",
" .VSpan.Overutilized.XX :VSpan [x,y]\n",
" .VSpan.Overutilized.XXI :VSpan [x,y]\n",
" .VSpan.Overutilized.XXII :VSpan [x,y]"
]
},
"execution_count": 130,
"metadata": {
"application/vnd.holoviews_exec.v0+json": {}
},
"output_type": "execute_result"
}
],
"source": [
"trace.ana.tasks.plot_task_residency(\"task1-0\")"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Analyze the overulized signal "
]
},
{
"cell_type": "code",
"execution_count": 131,
"metadata": {},
"outputs": [],
"source": [
"df_overutilized = trace.df_event(\"sched_overutilized\")\n",
"df_overutilized[\"overutilized\"] = df_overutilized[\"overutilized\"].astype(int)"
]
},
{
"cell_type": "code",
"execution_count": 132,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>__comm</th>\n",
" <th>__pid</th>\n",
" <th>__cpu</th>\n",
" <th>prio</th>\n",
" <th>comm</th>\n",
" <th>orig_cpu</th>\n",
" <th>pid</th>\n",
" <th>dest_cpu</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",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>2815.985447</th>\n",
" <td>&lt;...&gt;</td>\n",
" <td>1647</td>\n",
" <td>0</td>\n",
" <td>120</td>\n",
" <td>sh</td>\n",
" <td>0</td>\n",
" <td>1646</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2816.073521</th>\n",
" <td>sh</td>\n",
" <td>1649</td>\n",
" <td>0</td>\n",
" <td>120</td>\n",
" <td>tcf-agent</td>\n",
" <td>0</td>\n",
" <td>298</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2816.088744</th>\n",
" <td>sh</td>\n",
" <td>1649</td>\n",
" <td>0</td>\n",
" <td>120</td>\n",
" <td>rcu_preempt</td>\n",
" <td>0</td>\n",
" <td>12</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2816.193702</th>\n",
" <td>migration/0</td>\n",
" <td>13</td>\n",
" <td>0</td>\n",
" <td>120</td>\n",
" <td>shutils</td>\n",
" <td>0</td>\n",
" <td>1651</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2816.200682</th>\n",
" <td>shutils</td>\n",
" <td>1651</td>\n",
" <td>1</td>\n",
" <td>120</td>\n",
" <td>rcu_preempt</td>\n",
" <td>1</td>\n",
" <td>12</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2816.226236</th>\n",
" <td>shutils</td>\n",
" <td>1651</td>\n",
" <td>1</td>\n",
" <td>120</td>\n",
" <td>tcf-agent</td>\n",
" <td>1</td>\n",
" <td>298</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2816.276827</th>\n",
" <td>busybox</td>\n",
" <td>1652</td>\n",
" <td>0</td>\n",
" <td>120</td>\n",
" <td>rcu_preempt</td>\n",
" <td>0</td>\n",
" <td>12</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2816.292783</th>\n",
" <td>shutils</td>\n",
" <td>1651</td>\n",
" <td>1</td>\n",
" <td>120</td>\n",
" <td>rcu_preempt</td>\n",
" <td>1</td>\n",
" <td>12</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2816.392885</th>\n",
" <td>shutils</td>\n",
" <td>1654</td>\n",
" <td>0</td>\n",
" <td>120</td>\n",
" <td>rcu_preempt</td>\n",
" <td>0</td>\n",
" <td>12</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2816.409002</th>\n",
" <td>migration/0</td>\n",
" <td>13</td>\n",
" <td>0</td>\n",
" <td>120</td>\n",
" <td>shutils</td>\n",
" <td>0</td>\n",
" <td>1654</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2816.412868</th>\n",
" <td>shutils</td>\n",
" <td>1654</td>\n",
" <td>1</td>\n",
" <td>120</td>\n",
" <td>rcu_preempt</td>\n",
" <td>1</td>\n",
" <td>12</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2816.488477</th>\n",
" <td>shutils</td>\n",
" <td>1654</td>\n",
" <td>1</td>\n",
" <td>120</td>\n",
" <td>shutils</td>\n",
" <td>0</td>\n",
" <td>1656</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2816.529613</th>\n",
" <td>migration/0</td>\n",
" <td>13</td>\n",
" <td>0</td>\n",
" <td>120</td>\n",
" <td>shutils</td>\n",
" <td>0</td>\n",
" <td>1658</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2816.535032</th>\n",
" <td>true</td>\n",
" <td>1655</td>\n",
" <td>0</td>\n",
" <td>120</td>\n",
" <td>shutils</td>\n",
" <td>1</td>\n",
" <td>1654</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2816.549223</th>\n",
" <td>migration/0</td>\n",
" <td>13</td>\n",
" <td>0</td>\n",
" <td>120</td>\n",
" <td>shutils</td>\n",
" <td>0</td>\n",
" <td>1654</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2816.559439</th>\n",
" <td>shutils</td>\n",
" <td>1654</td>\n",
" <td>1</td>\n",
" <td>120</td>\n",
" <td>sh</td>\n",
" <td>1</td>\n",
" <td>1653</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2816.560245</th>\n",
" <td>kworker/1:2</td>\n",
" <td>60</td>\n",
" <td>1</td>\n",
" <td>120</td>\n",
" <td>sh</td>\n",
" <td>0</td>\n",
" <td>1653</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2816.780786</th>\n",
" <td>rt-app</td>\n",
" <td>1660</td>\n",
" <td>0</td>\n",
" <td>120</td>\n",
" <td>rcu_preempt</td>\n",
" <td>0</td>\n",
" <td>12</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2816.783112</th>\n",
" <td>rt-app</td>\n",
" <td>1660</td>\n",
" <td>0</td>\n",
" <td>120</td>\n",
" <td>tcf-agent</td>\n",
" <td>0</td>\n",
" <td>298</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2816.801315</th>\n",
" <td>migration/0</td>\n",
" <td>13</td>\n",
" <td>0</td>\n",
" <td>120</td>\n",
" <td>rt-app</td>\n",
" <td>0</td>\n",
" <td>1660</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2816.812723</th>\n",
" <td>&lt;idle&gt;</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>120</td>\n",
" <td>rcu_preempt</td>\n",
" <td>1</td>\n",
" <td>12</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2816.822108</th>\n",
" <td>task1-0</td>\n",
" <td>1661</td>\n",
" <td>0</td>\n",
" <td>120</td>\n",
" <td>sshd</td>\n",
" <td>0</td>\n",
" <td>1431</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2816.828642</th>\n",
" <td>task1-0</td>\n",
" <td>1661</td>\n",
" <td>0</td>\n",
" <td>120</td>\n",
" <td>rcu_preempt</td>\n",
" <td>0</td>\n",
" <td>12</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2816.849032</th>\n",
" <td>migration/0</td>\n",
" <td>13</td>\n",
" <td>0</td>\n",
" <td>120</td>\n",
" <td>task1-0</td>\n",
" <td>0</td>\n",
" <td>1661</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2816.884239</th>\n",
" <td>task1-0</td>\n",
" <td>1661</td>\n",
" <td>1</td>\n",
" <td>120</td>\n",
" <td>tcf-agent</td>\n",
" <td>1</td>\n",
" <td>298</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2817.817659</th>\n",
" <td>task1-0</td>\n",
" <td>1661</td>\n",
" <td>1</td>\n",
" <td>120</td>\n",
" <td>sshd</td>\n",
" <td>1</td>\n",
" <td>1431</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2817.820753</th>\n",
" <td>task1-0</td>\n",
" <td>1661</td>\n",
" <td>1</td>\n",
" <td>120</td>\n",
" <td>rt-app</td>\n",
" <td>1</td>\n",
" <td>1660</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2817.821785</th>\n",
" <td>migration/0</td>\n",
" <td>13</td>\n",
" <td>0</td>\n",
" <td>120</td>\n",
" <td>rt-app</td>\n",
" <td>0</td>\n",
" <td>1660</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2817.824791</th>\n",
" <td>sh</td>\n",
" <td>1659</td>\n",
" <td>1</td>\n",
" <td>120</td>\n",
" <td>rcu_preempt</td>\n",
" <td>1</td>\n",
" <td>12</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2817.929133</th>\n",
" <td>shutils</td>\n",
" <td>1663</td>\n",
" <td>0</td>\n",
" <td>120</td>\n",
" <td>rcu_preempt</td>\n",
" <td>0</td>\n",
" <td>12</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2817.945138</th>\n",
" <td>migration/0</td>\n",
" <td>13</td>\n",
" <td>0</td>\n",
" <td>120</td>\n",
" <td>shutils</td>\n",
" <td>0</td>\n",
" <td>1663</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2817.952723</th>\n",
" <td>shutils</td>\n",
" <td>1663</td>\n",
" <td>1</td>\n",
" <td>120</td>\n",
" <td>rcu_preempt</td>\n",
" <td>1</td>\n",
" <td>12</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2818.036874</th>\n",
" <td>busybox</td>\n",
" <td>1664</td>\n",
" <td>0</td>\n",
" <td>120</td>\n",
" <td>rcu_preempt</td>\n",
" <td>0</td>\n",
" <td>12</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2818.052812</th>\n",
" <td>&lt;idle&gt;</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>120</td>\n",
" <td>rcu_preempt</td>\n",
" <td>1</td>\n",
" <td>12</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2818.065440</th>\n",
" <td>shutils</td>\n",
" <td>1663</td>\n",
" <td>1</td>\n",
" <td>120</td>\n",
" <td>sh</td>\n",
" <td>1</td>\n",
" <td>1662</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2818.069277</th>\n",
" <td>migration/0</td>\n",
" <td>13</td>\n",
" <td>0</td>\n",
" <td>120</td>\n",
" <td>sh</td>\n",
" <td>0</td>\n",
" <td>1662</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2818.157453</th>\n",
" <td>sh</td>\n",
" <td>1665</td>\n",
" <td>1</td>\n",
" <td>120</td>\n",
" <td>kcompactd0</td>\n",
" <td>0</td>\n",
" <td>28</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2818.172685</th>\n",
" <td>sh</td>\n",
" <td>1666</td>\n",
" <td>0</td>\n",
" <td>120</td>\n",
" <td>rcu_preempt</td>\n",
" <td>0</td>\n",
" <td>12</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2818.184789</th>\n",
" <td>sshd</td>\n",
" <td>1431</td>\n",
" <td>0</td>\n",
" <td>120</td>\n",
" <td>rcu_preempt</td>\n",
" <td>1</td>\n",
" <td>12</td>\n",
" <td>0</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" __comm __pid __cpu prio comm orig_cpu pid \\\n",
"Time \n",
"2815.985447 <...> 1647 0 120 sh 0 1646 \n",
"2816.073521 sh 1649 0 120 tcf-agent 0 298 \n",
"2816.088744 sh 1649 0 120 rcu_preempt 0 12 \n",
"2816.193702 migration/0 13 0 120 shutils 0 1651 \n",
"2816.200682 shutils 1651 1 120 rcu_preempt 1 12 \n",
"2816.226236 shutils 1651 1 120 tcf-agent 1 298 \n",
"2816.276827 busybox 1652 0 120 rcu_preempt 0 12 \n",
"2816.292783 shutils 1651 1 120 rcu_preempt 1 12 \n",
"2816.392885 shutils 1654 0 120 rcu_preempt 0 12 \n",
"2816.409002 migration/0 13 0 120 shutils 0 1654 \n",
"2816.412868 shutils 1654 1 120 rcu_preempt 1 12 \n",
"2816.488477 shutils 1654 1 120 shutils 0 1656 \n",
"2816.529613 migration/0 13 0 120 shutils 0 1658 \n",
"2816.535032 true 1655 0 120 shutils 1 1654 \n",
"2816.549223 migration/0 13 0 120 shutils 0 1654 \n",
"2816.559439 shutils 1654 1 120 sh 1 1653 \n",
"2816.560245 kworker/1:2 60 1 120 sh 0 1653 \n",
"2816.780786 rt-app 1660 0 120 rcu_preempt 0 12 \n",
"2816.783112 rt-app 1660 0 120 tcf-agent 0 298 \n",
"2816.801315 migration/0 13 0 120 rt-app 0 1660 \n",
"2816.812723 <idle> 0 0 120 rcu_preempt 1 12 \n",
"2816.822108 task1-0 1661 0 120 sshd 0 1431 \n",
"2816.828642 task1-0 1661 0 120 rcu_preempt 0 12 \n",
"2816.849032 migration/0 13 0 120 task1-0 0 1661 \n",
"2816.884239 task1-0 1661 1 120 tcf-agent 1 298 \n",
"2817.817659 task1-0 1661 1 120 sshd 1 1431 \n",
"2817.820753 task1-0 1661 1 120 rt-app 1 1660 \n",
"2817.821785 migration/0 13 0 120 rt-app 0 1660 \n",
"2817.824791 sh 1659 1 120 rcu_preempt 1 12 \n",
"2817.929133 shutils 1663 0 120 rcu_preempt 0 12 \n",
"2817.945138 migration/0 13 0 120 shutils 0 1663 \n",
"2817.952723 shutils 1663 1 120 rcu_preempt 1 12 \n",
"2818.036874 busybox 1664 0 120 rcu_preempt 0 12 \n",
"2818.052812 <idle> 0 0 120 rcu_preempt 1 12 \n",
"2818.065440 shutils 1663 1 120 sh 1 1662 \n",
"2818.069277 migration/0 13 0 120 sh 0 1662 \n",
"2818.157453 sh 1665 1 120 kcompactd0 0 28 \n",
"2818.172685 sh 1666 0 120 rcu_preempt 0 12 \n",
"2818.184789 sshd 1431 0 120 rcu_preempt 1 12 \n",
"\n",
" dest_cpu \n",
"Time \n",
"2815.985447 1 \n",
"2816.073521 1 \n",
"2816.088744 1 \n",
"2816.193702 1 \n",
"2816.200682 0 \n",
"2816.226236 0 \n",
"2816.276827 1 \n",
"2816.292783 0 \n",
"2816.392885 1 \n",
"2816.409002 1 \n",
"2816.412868 0 \n",
"2816.488477 1 \n",
"2816.529613 1 \n",
"2816.535032 0 \n",
"2816.549223 1 \n",
"2816.559439 0 \n",
"2816.560245 1 \n",
"2816.780786 1 \n",
"2816.783112 1 \n",
"2816.801315 1 \n",
"2816.812723 0 \n",
"2816.822108 1 \n",
"2816.828642 1 \n",
"2816.849032 1 \n",
"2816.884239 0 \n",
"2817.817659 0 \n",
"2817.820753 0 \n",
"2817.821785 1 \n",
"2817.824791 0 \n",
"2817.929133 1 \n",
"2817.945138 1 \n",
"2817.952723 0 \n",
"2818.036874 1 \n",
"2818.052812 0 \n",
"2818.065440 0 \n",
"2818.069277 1 \n",
"2818.157453 1 \n",
"2818.172685 1 \n",
"2818.184789 0 "
]
},
"execution_count": 132,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df_migrate_task = trace.df_event(\"sched_migrate_task\")\n",
"df_migrate_task"
]
},
{
"cell_type": "code",
"execution_count": 133,
"metadata": {},
"outputs": [],
"source": [
"import matplotlib.pyplot as plt\n",
"import matplotlib.gridspec as gridspec\n",
"\n",
"def analysis_tipping_point(pid):\n",
" colors=['c', 'b', 'r']\n",
" \n",
" gs = gridspec.GridSpec(1,1)\n",
" fig = plt.figure(figsize=(16,5))\n",
" fig.subplots_adjust(top=0.92)\n",
" plt.suptitle(\"Tipping point analysis\", fontsize=14, fontweight='bold')\n",
" \n",
" axes = plt.subplot(gs[0,0])\n",
" \n",
" df = df_migrate_task[df_migrate_task.pid == pid][['dest_cpu']]\n",
" axes.scatter(df.index, df['dest_cpu'], color=colors[1])\n",
" \n",
" tipping_point = df_overutilized[['overutilized']]\n",
" tipping_point.plot(ax=axes, drawstyle='steps-post', color=colors[2], linewidth=3, ylim=(0,8))\n",
" \n",
" axes.grid(True)"
]
},
{
"cell_type": "code",
"execution_count": 134,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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HjL3Pr+LL744Z5xxRo455pgkyWtf+9o5x1166aVjq3FP2IMJAAAwgje84Q059thjc+yxx+Yv/uIv8qpXvSpvectbdjz/mte8Juedd16S5PWvf32e+tSn5slPfnJe/erBNz5ef/31Ofroo/OiF70oxx57bG688casXr16x+svvPDCnHvuufnc5z6XD33oQ3nlK1+Z4447Ltddd13OPffcXHjhhT9W01FHHZXbb789b33rW3PcccfluOOOy9q1a7Nu3bokyWWXXZaTTjopxx9/fM4888xs27YtSfLRj340T3jCE3L88cfngx/8YLdtJGACAACTpWp80y5s2rQp73znO3PFFVfk8ssvz9ve9racddZZef/7379jzPvf//6cddZZueyyy3LNNdfkC1/4QjZv3pxNmzblU5/6VJLkmmuuyUtf+tJcddVVOfLII+dc1tOf/vQ897nPzetf//ps3rw5j33sY+fdJL/1W7+VzZs354tf/GIOP/zw/N7v/V5uv/32vO51r8snPvGJXHnllZmamsob3vCG3HfffXnJS16SD3/4w9m0aVNuueWWBf4Cds0hsgAAAPP4zGc+k+c973k5+OCDkyS/+qu/mk9/+tO59dZbc/PNN+e2227LIx7xiBxxxBF54xvfmMsuuyxPecpTkiTbtm3LNddck5/6qZ/KkUcemRNPPHFsdb7sZS/LKaeckl/+5V/OJZdckquvvjrPeMYzkiTf//73c9JJJ+VrX/ta1q5dm8c97nFJknPOOSfnn39+l+ULmAAAAHvozDPPzIUXXphbbrklZ511VpLB+ZV/+Id/mN/8zd/8kbHXX3/9joC63ewrtS70K0F29q53vSs33HBD3vzmN++o45nPfGbe+973/si4zZs379VydschsgAAwGRpbXzTLpx88sm5+OKLc++99+aee+7JRRddlJNPPjlnnXVWNmzYkAsvvDBnnnlmkuSXfumX8o53vGPH+Y433XRTbr311jnnu2bNmmzZsiUPPPBALrrooh2PH3LIIbn77rtH3iSbNm3KeeedlwsuuGDHhYNOPPHEfPazn821116bJLnnnnvyjW98I094whNy/fXX57rrrkuSHwuge8MeTAAAgHkcf/zxOffcc/O0pz0tSfLiF794xyGwd999dw477LA8+tGPTpI861nPypYtW3LSSSclSVavXp0LLrgg++2334/N98/+7M9yxhln5JGPfGSmpqZ2hNKzzz47L3nJS/KmN71pzov77OzNb35zvvOd7+y4uM/U1FTe/va3513velde8IIX5P7770+SvO51r8vjH//4nH/++Tn99NNz0EEH5eSTT15QmN2dartJ6Xtqamqqbf9elkkxMzOT6enppS4DFkzvMqn0LpNI3zKpVkLvbtmyJU984hOXuox9zlzbvao2tdam5hrvEFkAAAC6EDABAADoQsAEAACgCwETAACYCOO4fgy7tifbW8AEAACWvQMOOCB33HGHkLlIWmu54447csABByzodb6mBAAAWPYOP/zwbN26NbfddttSl7LPOOCAA3L44Ycv6DUCJgAAsOztv//+Wbt27VKXwTwcIgsAAEAXAiYAAABdCJgAAAB0IWACAADQhYAJAABAFwImAAAAXQiYAAAAdDFvwKyqo6tq86zprqp6+SLUBgAAwARZNd+A1trXkxyXJFW1X5Kbklw03rIAAACYNAs9RPbUJNe11m4YRzEAAABMrmqtjT646h1JrmytvXmO59YnWZ8ka9asOWHDhg3dilwM27Zty+rVq5e6DFgwvcuk0rtMIn3LpNK79LRu3bpNrbWpuZ4bOWBW1UOT3JzkSa21f9zd2KmpqbZx48YFF7qUZmZmMj09vdRlwILpXSaV3mUS6Vsmld6lp6raZcBcyCGyz8lg7+VuwyUAAAD7poUEzBckee+4CgEAAGCyjRQwq+rgJM9M8sHxlgMAAMCkmvdrSpKktXZPkkPHXAsAAAATbKFfUwIAAABzEjABAADoQsAEAACgCwETAACALgRMAAAAuhAwAQAA6ELABAAAoAsBEwAAgC4ETAAAALoQMAEAAOhCwAQAAKALARMAAIAuBEwAAAC6EDABAADoQsAEAACgCwETAACALgRMAAAAuhAwAQAA6ELABAAAoAsBEwAAgC4ETAAAALoQMAEAAOhCwAQAAKALARMAAIAuBEwAAAC6EDABAADoYqSAWVUPr6oLq+prVbWlqk4ad2EAAABMllUjjntjko+21p5fVQ9NctAYawIAAGACzRswq+phSf5VknOTpLX2/STfH29ZAAAATJpRDpFdm+S2JO+sqi9V1dur6uAx1wUAAMCEqdba7gdUTSW5PMkzWmtXVNUbk9zVWvujncatT7I+SdasWXPChg0bxlTyeGzbti2rV69e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\n",
"text/plain": [
"<Figure size 1152x360 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"analysis_tipping_point(1661)"
]
},
{
"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.8.10"
}
},
"nbformat": 4,
"nbformat_minor": 4
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment