aboutsummaryrefslogtreecommitdiff
path: root/ipynb/tutorial/00_LisaInANutshell.ipynb
blob: 1907636fc4f9405d2daf5cf5eb3bd4382bc6fa85 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
1221
1222
1223
1224
1225
1226
1227
1228
1229
1230
1231
1232
1233
1234
1235
1236
1237
1238
1239
1240
1241
1242
1243
1244
1245
1246
1247
1248
1249
1250
1251
1252
1253
1254
1255
1256
1257
1258
1259
1260
1261
1262
1263
1264
1265
1266
1267
1268
1269
1270
1271
1272
1273
1274
1275
1276
1277
1278
1279
1280
1281
1282
1283
1284
1285
1286
1287
1288
1289
1290
1291
1292
1293
1294
1295
1296
1297
1298
1299
1300
1301
1302
1303
1304
1305
1306
1307
1308
1309
1310
1311
1312
1313
1314
1315
1316
1317
1318
1319
1320
1321
1322
1323
1324
1325
1326
1327
1328
1329
1330
1331
1332
1333
1334
1335
1336
1337
1338
1339
1340
1341
1342
1343
1344
1345
1346
1347
1348
1349
1350
1351
1352
1353
1354
1355
1356
1357
1358
1359
1360
1361
1362
1363
1364
1365
1366
1367
1368
1369
1370
1371
1372
1373
1374
1375
1376
1377
1378
1379
1380
1381
1382
1383
1384
1385
1386
1387
1388
1389
1390
1391
1392
1393
1394
1395
1396
1397
1398
1399
1400
1401
1402
1403
1404
1405
1406
1407
1408
1409
1410
1411
1412
1413
1414
1415
1416
1417
1418
1419
1420
1421
1422
1423
1424
1425
1426
1427
1428
1429
1430
1431
1432
1433
1434
1435
1436
1437
1438
1439
1440
1441
1442
1443
1444
1445
1446
1447
1448
1449
1450
1451
1452
1453
1454
1455
1456
1457
1458
1459
1460
1461
1462
1463
1464
1465
1466
1467
1468
1469
1470
1471
1472
1473
1474
1475
1476
1477
1478
1479
1480
1481
1482
1483
1484
1485
1486
1487
1488
1489
1490
1491
1492
1493
1494
1495
1496
1497
1498
1499
1500
1501
1502
1503
1504
1505
1506
1507
1508
1509
1510
1511
1512
1513
1514
1515
1516
1517
1518
1519
1520
1521
1522
1523
1524
1525
1526
1527
1528
1529
1530
1531
1532
1533
1534
1535
1536
1537
1538
1539
1540
1541
1542
1543
1544
1545
1546
1547
1548
1549
1550
1551
1552
1553
1554
1555
1556
1557
1558
1559
1560
1561
1562
1563
1564
1565
1566
1567
1568
1569
1570
1571
1572
1573
1574
1575
1576
1577
1578
1579
1580
1581
1582
1583
1584
1585
1586
1587
1588
1589
1590
1591
1592
1593
1594
1595
1596
1597
1598
1599
1600
1601
1602
1603
1604
1605
1606
1607
1608
1609
1610
1611
1612
1613
1614
1615
1616
1617
1618
1619
1620
1621
1622
1623
1624
1625
1626
1627
1628
1629
1630
1631
1632
1633
1634
1635
1636
1637
1638
1639
1640
1641
1642
1643
1644
1645
1646
1647
1648
1649
1650
1651
1652
1653
1654
1655
1656
1657
1658
1659
1660
1661
1662
1663
1664
1665
1666
1667
1668
1669
1670
1671
1672
1673
1674
1675
1676
1677
1678
1679
1680
1681
1682
1683
1684
1685
1686
1687
1688
1689
1690
1691
1692
1693
1694
1695
1696
1697
1698
1699
1700
1701
1702
1703
1704
1705
1706
1707
1708
1709
1710
1711
1712
1713
1714
1715
1716
1717
1718
1719
1720
1721
1722
1723
1724
1725
1726
1727
1728
1729
1730
1731
1732
1733
1734
1735
1736
1737
1738
1739
1740
1741
1742
1743
1744
1745
1746
1747
1748
1749
1750
1751
1752
1753
1754
1755
1756
1757
1758
1759
1760
1761
1762
1763
1764
1765
1766
1767
1768
1769
1770
1771
1772
1773
1774
1775
1776
1777
1778
1779
1780
1781
1782
1783
1784
1785
1786
1787
1788
1789
1790
1791
1792
1793
1794
1795
1796
1797
1798
1799
1800
1801
1802
1803
1804
1805
1806
1807
1808
1809
1810
1811
1812
1813
1814
1815
1816
1817
1818
1819
1820
1821
1822
1823
1824
1825
1826
1827
1828
1829
1830
1831
1832
1833
1834
1835
1836
1837
1838
1839
1840
1841
1842
1843
1844
1845
1846
1847
1848
1849
1850
1851
1852
1853
1854
1855
1856
1857
1858
1859
1860
1861
1862
1863
1864
1865
1866
1867
1868
1869
1870
1871
1872
1873
1874
1875
1876
1877
1878
1879
1880
1881
1882
1883
1884
1885
1886
1887
1888
1889
1890
1891
1892
1893
1894
1895
1896
1897
1898
1899
1900
1901
1902
1903
1904
1905
1906
1907
1908
1909
1910
1911
1912
1913
1914
1915
1916
1917
1918
1919
1920
1921
1922
1923
1924
1925
1926
1927
1928
1929
1930
1931
1932
1933
1934
1935
1936
1937
1938
1939
1940
1941
1942
1943
1944
1945
1946
1947
1948
1949
1950
1951
1952
1953
1954
1955
1956
1957
1958
1959
1960
1961
1962
1963
1964
1965
1966
1967
1968
1969
1970
1971
1972
1973
1974
1975
1976
1977
1978
1979
1980
1981
1982
1983
1984
1985
1986
1987
1988
1989
1990
1991
1992
1993
1994
1995
1996
1997
1998
1999
2000
2001
2002
2003
2004
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
2025
2026
2027
2028
2029
2030
2031
2032
2033
2034
2035
2036
2037
2038
2039
2040
2041
2042
2043
2044
2045
2046
2047
2048
2049
2050
2051
2052
2053
2054
2055
2056
2057
2058
2059
2060
2061
2062
2063
2064
2065
2066
2067
2068
2069
2070
2071
2072
2073
2074
2075
2076
2077
2078
2079
2080
2081
2082
2083
2084
2085
2086
2087
2088
2089
2090
2091
2092
2093
2094
2095
2096
2097
2098
2099
2100
2101
2102
2103
2104
2105
2106
2107
2108
2109
2110
2111
2112
2113
2114
2115
2116
2117
2118
2119
2120
2121
2122
2123
2124
2125
2126
2127
2128
2129
2130
2131
2132
2133
2134
2135
2136
2137
2138
2139
2140
2141
2142
2143
2144
2145
2146
2147
2148
2149
2150
2151
2152
2153
2154
2155
2156
2157
2158
2159
2160
2161
2162
2163
2164
2165
2166
2167
2168
2169
2170
2171
2172
2173
2174
2175
2176
2177
2178
2179
2180
2181
2182
2183
2184
2185
2186
2187
2188
2189
2190
2191
2192
2193
2194
2195
2196
2197
2198
2199
2200
2201
2202
2203
2204
2205
2206
2207
2208
2209
2210
2211
2212
2213
2214
2215
2216
2217
2218
2219
2220
2221
2222
2223
2224
2225
2226
2227
2228
2229
2230
2231
2232
2233
2234
2235
2236
2237
2238
2239
2240
2241
2242
2243
2244
2245
2246
2247
2248
2249
2250
2251
2252
2253
2254
2255
2256
2257
2258
2259
2260
2261
2262
2263
2264
2265
2266
2267
2268
2269
2270
2271
2272
2273
2274
2275
2276
2277
2278
2279
2280
2281
2282
2283
2284
2285
2286
2287
2288
2289
2290
2291
2292
2293
2294
2295
2296
2297
2298
2299
2300
2301
2302
2303
2304
2305
2306
2307
2308
2309
2310
2311
2312
2313
2314
2315
2316
2317
2318
2319
2320
2321
2322
2323
2324
2325
2326
2327
2328
2329
2330
{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {
    "heading_collapsed": true
   },
   "source": [
    "# Linux Interactive System Analysis DEMO"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "heading_collapsed": true
   },
   "source": [
    "## Get LISA and start the Notebook Server"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Official repository on GitHub - ARM Software:<br>\n",
    "https://github.com/ARM-software/lisa\n",
    "\n",
    "___\n",
    "Installation dependencies are listed in the main page of the repository:<br>\n",
    "https://github.com/ARM-software/lisa#required-dependencies\n",
    "\n",
    "___\n",
    "Once cloned, source *init_env* to initialized the **LISA Shell**, which provides a convenient set of shell commands for easy access to many LISA related functions.\n",
    "\n",
    "```shell\n",
    "$ source init_env\n",
    "```\n",
    "\n",
    "___\n",
    "To start the IPython Notebook Server required to use this Notebook, on a LISAShell run:\n",
    "```shell\n",
    "[LISAShell lisa] \\> lisa-ipython start\n",
    "\n",
    "Starting IPython Notebooks...\n",
    "Starting IPython Notebook server...\n",
    "  IP Address :  http://127.0.0.1:8888/\n",
    "  Folder     :  /home/derkling/Code/lisa/ipynb\n",
    "  Logfile    :  /home/derkling/Code/lisa/ipynb/server.log\n",
    "  PYTHONPATH : \n",
    "\t/home/derkling/Code/lisa/libs/bart\n",
    "\t/home/derkling/Code/lisa/libs/trappy\n",
    "\t/home/derkling/Code/lisa/libs/devlib\n",
    "\t/home/derkling/Code/lisa/libs/wlgen\n",
    "\t/home/derkling/Code/lisa/libs/utils\n",
    "\t\n",
    "\n",
    "Notebook server task: [1] 24745\n",
    "\n",
    "\n",
    "```\n",
    "\n",
    "The main folder served by the server is:<br>\n",
    "http://127.0.0.1:8888/\n",
    "\n",
    "While the tutorial notebooks are accessible starting from this link:<br>\n",
    "http://127.0.0.1:8888/notebooks/tutorial/00_LisaInANutshell.ipynb\n",
    "\n",
    "Note that the `lisa-ipython` command allows to specify also interface and port in case you have several network interfaces on your host:\n",
    "\n",
    "```lisa-ipython start [interface [port]]```\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "heading_collapsed": true
   },
   "source": [
    "## What is an IPython Notebook?"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Let's do some example!"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "heading_collapsed": true
   },
   "source": [
    "## Logging configuration and support modules import"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "import logging\n",
    "from conf import LisaLogging\n",
    "LisaLogging.setup()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {
    "code_folding": [],
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "# Execute this cell to enable verbose SSH commands\n",
    "logging.getLogger('ssh').setLevel(logging.DEBUG)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {
    "code_folding": [],
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "# Other python modules required by this notebook\n",
    "import json\n",
    "import os"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<br><br><br><br>\n",
    "Advanced usage: get more confident with IPython notebooks and discover some hidden features<br>\n",
    "[notebooks/tutorial/01_IPythonNotebooksUsage.ipynb](01_IPythonNotebooksUsage.ipynb)\n",
    "<br><br><br><br>"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "code_folding": [
     0
    ],
    "heading_collapsed": true
   },
   "source": [
    "# Remote target connection and control"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {
    "code_folding": [],
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "# Setup a target configuration\n",
    "conf = {\n",
    "    \n",
    "    # Target is localhost\n",
    "    \"platform\"    : 'linux',\n",
    "    # Board descriptions are described through json files in lisa/libs/utils/platforms/\n",
    "    \"board\"       : \"juno\", \n",
    "    \n",
    "    # Login credentials\n",
    "    \"host\"        : \"192.168.0.1\",\n",
    "    \"username\"    : \"root\",\n",
    "    \"password\"    : \"\",\n",
    "\n",
    "    # Binary tools required to run this experiment\n",
    "    # These tools must be present in the tools/ folder for the architecture\n",
    "    \"tools\"   : ['rt-app', 'taskset', 'trace-cmd'],\n",
    "    \n",
    "    # Comment the following line to force rt-app calibration on your target\n",
    "    # \"rtapp-calib\" : {\n",
    "    #    \"0\": 355, \"1\": 138, \"2\": 138, \"3\": 355, \"4\": 354, \"5\": 354\n",
    "    # },\n",
    "    \n",
    "    # FTrace events end buffer configuration\n",
    "    \"ftrace\"  : {\n",
    "        \"events\" : [\n",
    "            \"sched_switch\",\n",
    "            \"sched_wakeup\",\n",
    "            \"sched_wakeup_new\",\n",
    "            \"sched_contrib_scale_f\",\n",
    "            \"sched_load_avg_cpu\",\n",
    "            \"sched_load_avg_task\",\n",
    "            \"sched_tune_config\",\n",
    "            \"sched_tune_tasks_update\",\n",
    "            \"sched_tune_boostgroup_update\",\n",
    "            \"sched_tune_filter\",\n",
    "            \"sched_boost_cpu\",\n",
    "            \"sched_boost_task\",\n",
    "            \"sched_energy_diff\",\n",
    "            \"cpu_frequency\",\n",
    "            \"cpu_capacity\",\n",
    "         ],\n",
    "         \"buffsize\" : 10240\n",
    "    },\n",
    "\n",
    "    # Where results are collected\n",
    "    \"results_dir\" : \"LisaInANutshell\",\n",
    "\n",
    "    # Devlib module required (or not required)\n",
    "    'modules' : [ \"cpufreq\", \"cgroups\", \"cpufreq\" ],\n",
    "    #\"exclude_modules\" : [ \"hwmon\" ],\n",
    "}"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {
    "code_folding": [],
    "collapsed": false,
    "scrolled": false
   },
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "05:28:29  INFO    :         Target - Using base path: /home/derkling/Code/lisa\n",
      "05:28:29  INFO    :         Target - Loading custom (inline) target configuration\n",
      "05:28:29  INFO    :         Target - Devlib modules to load: ['bl', 'cpufreq', 'cgroups', 'hwmon']\n",
      "05:28:29  INFO    :         Target - Connecting linux target:\n",
      "05:28:29  INFO    :         Target -   username : root\n",
      "05:28:29  INFO    :         Target -       host : 192.168.0.1\n",
      "05:28:29  INFO    :         Target -   password : \n",
      "05:28:29  DEBUG   : Logging in root@192.168.0.1\n",
      "05:28:31  DEBUG   : id\n",
      "05:28:31  DEBUG   : if [ -e '/root/devlib-target/bin' ]; then echo 1; else echo 0; fi\n",
      "05:28:31  DEBUG   : ls -1 /root/devlib-target/bin\n",
      "05:28:32  DEBUG   : cat /proc/cpuinfo\n",
      "05:28:32  DEBUG   : sudo -- sh -c 'dmidecode -s system-version'\n",
      "05:28:33  DEBUG   : /root/devlib-target/bin/busybox uname -m\n",
      "05:28:33  DEBUG   : if [ -e '/sys/devices/system/cpu/cpufreq' ]; then echo 1; else echo 0; fi\n",
      "05:28:33  DEBUG   : zcat /proc/config.gz\n",
      "05:28:34  DEBUG   : mount\n",
      "05:28:34  DEBUG   : sudo -- sh -c 'mount -t tmpfs cgroup_root /sys/fs/cgroup'\n",
      "05:28:35  DEBUG   : /root/devlib-target/bin/busybox cat /proc/cgroups\n",
      "05:28:35  DEBUG   : /root/devlib-target/bin/busybox grep cpuset /proc/cgroups\n",
      "05:28:36  DEBUG   : mount\n",
      "05:28:36  DEBUG   : sudo -- sh -c 'mkdir -p /sys/fs/cgroup/devlib_cpuset 2>/dev/null'\n",
      "05:28:36  DEBUG   : sudo -- sh -c 'mount -t cgroup -o cpuset devlib_cpuset /sys/fs/cgroup/devlib_cpuset'\n",
      "05:28:37  DEBUG   : sudo -- sh -c '[ -d /sys/fs/cgroup/devlib_cpuset ] || mkdir -p /sys/fs/cgroup/devlib_cpuset'\n",
      "05:28:37  DEBUG   : /root/devlib-target/bin/busybox grep cpu /proc/cgroups\n",
      "05:28:38  DEBUG   : mount\n",
      "05:28:38  DEBUG   : sudo -- sh -c 'mkdir -p /sys/fs/cgroup/devlib_cpu 2>/dev/null'\n",
      "05:28:39  DEBUG   : sudo -- sh -c 'mount -t cgroup -o cpu devlib_cpu /sys/fs/cgroup/devlib_cpu'\n",
      "05:28:39  DEBUG   : sudo -- sh -c '[ -d /sys/fs/cgroup/devlib_cpu ] || mkdir -p /sys/fs/cgroup/devlib_cpu'\n",
      "05:28:39  DEBUG   : /root/devlib-target/bin/busybox grep cpuacct /proc/cgroups\n",
      "05:28:40  DEBUG   : mount\n",
      "05:28:40  DEBUG   : sudo -- sh -c 'mkdir -p /sys/fs/cgroup/devlib_cpuacct 2>/dev/null'\n",
      "05:28:41  DEBUG   : sudo -- sh -c 'mount -t cgroup -o cpuacct devlib_cpuacct /sys/fs/cgroup/devlib_cpuacct'\n",
      "05:28:41  DEBUG   : sudo -- sh -c '[ -d /sys/fs/cgroup/devlib_cpuacct ] || mkdir -p /sys/fs/cgroup/devlib_cpuacct'\n",
      "05:28:41  DEBUG   : /root/devlib-target/bin/busybox grep schedtune /proc/cgroups\n",
      "05:28:42  DEBUG   : mount\n",
      "05:28:42  DEBUG   : sudo -- sh -c 'mkdir -p /sys/fs/cgroup/devlib_schedtune 2>/dev/null'\n",
      "05:28:43  DEBUG   : sudo -- sh -c 'mount -t cgroup -o schedtune devlib_schedtune /sys/fs/cgroup/devlib_schedtune'\n",
      "05:28:43  DEBUG   : sudo -- sh -c '[ -d /sys/fs/cgroup/devlib_schedtune ] || mkdir -p /sys/fs/cgroup/devlib_schedtune'\n",
      "05:28:44  DEBUG   : /root/devlib-target/bin/busybox grep memory /proc/cgroups\n",
      "05:28:44  DEBUG   : mount\n",
      "05:28:44  DEBUG   : sudo -- sh -c 'mkdir -p /sys/fs/cgroup/devlib_memory 2>/dev/null'\n",
      "05:28:45  DEBUG   : sudo -- sh -c 'mount -t cgroup -o memory devlib_memory /sys/fs/cgroup/devlib_memory'\n",
      "05:28:45  DEBUG   : sudo -- sh -c '[ -d /sys/fs/cgroup/devlib_memory ] || mkdir -p /sys/fs/cgroup/devlib_memory'\n",
      "05:28:46  DEBUG   : /root/devlib-target/bin/busybox grep hugetlb /proc/cgroups\n",
      "05:28:46  DEBUG   : mount\n",
      "05:28:46  DEBUG   : sudo -- sh -c 'mkdir -p /sys/fs/cgroup/devlib_hugetlb 2>/dev/null'\n",
      "05:28:47  DEBUG   : sudo -- sh -c 'mount -t cgroup -o hugetlb devlib_hugetlb /sys/fs/cgroup/devlib_hugetlb'\n",
      "05:28:47  DEBUG   : sudo -- sh -c '[ -d /sys/fs/cgroup/devlib_hugetlb ] || mkdir -p /sys/fs/cgroup/devlib_hugetlb'\n",
      "05:28:48  DEBUG   : if [ -e '/sys/class/hwmon' ]; then echo 1; else echo 0; fi\n",
      "05:28:48  DEBUG   : ls -1 /sys/class/hwmon\n",
      "05:28:49  DEBUG   : if [ -e '/sys/class/hwmon/hwmon0/name' ]; then echo 1; else echo 0; fi\n",
      "05:28:49  DEBUG   : sudo -- sh -c 'cat '\\''/sys/class/hwmon/hwmon0/name'\\'''\n",
      "05:28:50  DEBUG   : ls -1 /sys/class/hwmon/hwmon0/\n",
      "05:28:50  DEBUG   : sudo -- sh -c 'cat '\\''/sys/class/hwmon/hwmon0/curr1_label'\\'''\n",
      "05:28:50  DEBUG   : if [ -e '/sys/class/hwmon/hwmon1/name' ]; then echo 1; else echo 0; fi\n",
      "05:28:51  DEBUG   : sudo -- sh -c 'cat '\\''/sys/class/hwmon/hwmon1/name'\\'''\n",
      "05:28:51  DEBUG   : ls -1 /sys/class/hwmon/hwmon1/\n",
      "05:28:52  DEBUG   : sudo -- sh -c 'cat '\\''/sys/class/hwmon/hwmon1/curr1_label'\\'''\n",
      "05:28:52  DEBUG   : if [ -e '/sys/class/hwmon/hwmon10/name' ]; then echo 1; else echo 0; fi\n",
      "05:28:53  DEBUG   : sudo -- sh -c 'cat '\\''/sys/class/hwmon/hwmon10/name'\\'''\n",
      "05:28:53  DEBUG   : ls -1 /sys/class/hwmon/hwmon10/\n",
      "05:28:53  DEBUG   : sudo -- sh -c 'cat '\\''/sys/class/hwmon/hwmon10/power1_label'\\'''\n",
      "05:28:54  DEBUG   : if [ -e '/sys/class/hwmon/hwmon11/name' ]; then echo 1; else echo 0; fi\n",
      "05:28:54  DEBUG   : sudo -- sh -c 'cat '\\''/sys/class/hwmon/hwmon11/name'\\'''\n",
      "05:28:55  DEBUG   : ls -1 /sys/class/hwmon/hwmon11/\n",
      "05:28:55  DEBUG   : sudo -- sh -c 'cat '\\''/sys/class/hwmon/hwmon11/power1_label'\\'''\n",
      "05:28:55  DEBUG   : if [ -e '/sys/class/hwmon/hwmon12/name' ]; then echo 1; else echo 0; fi\n",
      "05:28:56  DEBUG   : sudo -- sh -c 'cat '\\''/sys/class/hwmon/hwmon12/name'\\'''\n",
      "05:28:56  DEBUG   : ls -1 /sys/class/hwmon/hwmon12/\n",
      "05:28:57  DEBUG   : sudo -- sh -c 'cat '\\''/sys/class/hwmon/hwmon12/energy1_label'\\'''\n",
      "05:28:57  DEBUG   : if [ -e '/sys/class/hwmon/hwmon13/name' ]; then echo 1; else echo 0; fi\n",
      "05:28:57  DEBUG   : sudo -- sh -c 'cat '\\''/sys/class/hwmon/hwmon13/name'\\'''\n",
      "05:28:58  DEBUG   : ls -1 /sys/class/hwmon/hwmon13/\n",
      "05:28:58  DEBUG   : sudo -- sh -c 'cat '\\''/sys/class/hwmon/hwmon13/energy1_label'\\'''\n",
      "05:28:59  DEBUG   : if [ -e '/sys/class/hwmon/hwmon14/name' ]; then echo 1; else echo 0; fi\n",
      "05:28:59  DEBUG   : sudo -- sh -c 'cat '\\''/sys/class/hwmon/hwmon14/name'\\'''\n",
      "05:29:00  DEBUG   : ls -1 /sys/class/hwmon/hwmon14/\n",
      "05:29:00  DEBUG   : sudo -- sh -c 'cat '\\''/sys/class/hwmon/hwmon14/energy1_label'\\'''\n",
      "05:29:00  DEBUG   : if [ -e '/sys/class/hwmon/hwmon15/name' ]; then echo 1; else echo 0; fi\n",
      "05:29:01  DEBUG   : sudo -- sh -c 'cat '\\''/sys/class/hwmon/hwmon15/name'\\'''\n",
      "05:29:01  DEBUG   : ls -1 /sys/class/hwmon/hwmon15/\n",
      "05:29:02  DEBUG   : sudo -- sh -c 'cat '\\''/sys/class/hwmon/hwmon15/energy1_label'\\'''\n",
      "05:29:02  DEBUG   : if [ -e '/sys/class/hwmon/hwmon16/name' ]; then echo 1; else echo 0; fi\n",
      "05:29:03  DEBUG   : sudo -- sh -c 'cat '\\''/sys/class/hwmon/hwmon16/name'\\'''\n",
      "05:29:03  DEBUG   : ls -1 /sys/class/hwmon/hwmon16/\n",
      "05:29:04  DEBUG   : sudo -- sh -c 'cat '\\''/sys/class/hwmon/hwmon16/curr1_label'\\'''\n",
      "05:29:04  DEBUG   : sudo -- sh -c 'cat '\\''/sys/class/hwmon/hwmon16/curr2_label'\\'''\n",
      "05:29:04  DEBUG   : sudo -- sh -c 'cat '\\''/sys/class/hwmon/hwmon16/curr3_label'\\'''\n",
      "05:29:05  DEBUG   : sudo -- sh -c 'cat '\\''/sys/class/hwmon/hwmon16/curr4_label'\\'''\n",
      "05:29:05  DEBUG   : sudo -- sh -c 'cat '\\''/sys/class/hwmon/hwmon16/in0_label'\\'''\n",
      "05:29:06  DEBUG   : sudo -- sh -c 'cat '\\''/sys/class/hwmon/hwmon16/in1_label'\\'''\n",
      "05:29:06  DEBUG   : sudo -- sh -c 'cat '\\''/sys/class/hwmon/hwmon16/in2_label'\\'''\n",
      "05:29:07  DEBUG   : sudo -- sh -c 'cat '\\''/sys/class/hwmon/hwmon16/in3_label'\\'''\n",
      "05:29:08  DEBUG   : sudo -- sh -c 'cat '\\''/sys/class/hwmon/hwmon16/in4_label'\\'''\n",
      "05:29:08  DEBUG   : sudo -- sh -c 'cat '\\''/sys/class/hwmon/hwmon16/in5_label'\\'''\n",
      "05:29:08  DEBUG   : sudo -- sh -c 'cat '\\''/sys/class/hwmon/hwmon16/in6_label'\\'''\n",
      "05:29:09  DEBUG   : sudo -- sh -c 'cat '\\''/sys/class/hwmon/hwmon16/power1_label'\\'''\n",
      "05:29:09  DEBUG   : sudo -- sh -c 'cat '\\''/sys/class/hwmon/hwmon16/power2_label'\\'''\n",
      "05:29:10  DEBUG   : sudo -- sh -c 'cat '\\''/sys/class/hwmon/hwmon16/power3_label'\\'''\n",
      "05:29:10  DEBUG   : sudo -- sh -c 'cat '\\''/sys/class/hwmon/hwmon16/power4_label'\\'''\n",
      "05:29:11  DEBUG   : sudo -- sh -c 'cat '\\''/sys/class/hwmon/hwmon16/temp1_label'\\'''\n",
      "05:29:11  DEBUG   : sudo -- sh -c 'cat '\\''/sys/class/hwmon/hwmon16/temp2_label'\\'''\n",
      "05:29:11  DEBUG   : sudo -- sh -c 'cat '\\''/sys/class/hwmon/hwmon16/temp3_label'\\'''\n",
      "05:29:12  DEBUG   : sudo -- sh -c 'cat '\\''/sys/class/hwmon/hwmon16/temp4_label'\\'''\n",
      "05:29:12  DEBUG   : sudo -- sh -c 'cat '\\''/sys/class/hwmon/hwmon16/temp5_label'\\'''\n",
      "05:29:13  DEBUG   : sudo -- sh -c 'cat '\\''/sys/class/hwmon/hwmon16/temp6_label'\\'''\n",
      "05:29:13  DEBUG   : if [ -e '/sys/class/hwmon/hwmon2/name' ]; then echo 1; else echo 0; fi\n",
      "05:29:13  DEBUG   : sudo -- sh -c 'cat '\\''/sys/class/hwmon/hwmon2/name'\\'''\n",
      "05:29:14  DEBUG   : ls -1 /sys/class/hwmon/hwmon2/\n",
      "05:29:14  DEBUG   : sudo -- sh -c 'cat '\\''/sys/class/hwmon/hwmon2/curr1_label'\\'''\n",
      "05:29:15  DEBUG   : if [ -e '/sys/class/hwmon/hwmon3/name' ]; then echo 1; else echo 0; fi\n",
      "05:29:15  DEBUG   : sudo -- sh -c 'cat '\\''/sys/class/hwmon/hwmon3/name'\\'''\n",
      "05:29:16  DEBUG   : ls -1 /sys/class/hwmon/hwmon3/\n",
      "05:29:16  DEBUG   : sudo -- sh -c 'cat '\\''/sys/class/hwmon/hwmon3/curr1_label'\\'''\n",
      "05:29:16  DEBUG   : if [ -e '/sys/class/hwmon/hwmon4/name' ]; then echo 1; else echo 0; fi\n",
      "05:29:17  DEBUG   : sudo -- sh -c 'cat '\\''/sys/class/hwmon/hwmon4/name'\\'''\n",
      "05:29:17  DEBUG   : ls -1 /sys/class/hwmon/hwmon4/\n",
      "05:29:18  DEBUG   : sudo -- sh -c 'cat '\\''/sys/class/hwmon/hwmon4/in1_label'\\'''\n",
      "05:29:18  DEBUG   : if [ -e '/sys/class/hwmon/hwmon5/name' ]; then echo 1; else echo 0; fi\n",
      "05:29:18  DEBUG   : sudo -- sh -c 'cat '\\''/sys/class/hwmon/hwmon5/name'\\'''\n",
      "05:29:19  DEBUG   : ls -1 /sys/class/hwmon/hwmon5/\n",
      "05:29:19  DEBUG   : sudo -- sh -c 'cat '\\''/sys/class/hwmon/hwmon5/in1_label'\\'''\n",
      "05:29:20  DEBUG   : if [ -e '/sys/class/hwmon/hwmon6/name' ]; then echo 1; else echo 0; fi\n",
      "05:29:20  DEBUG   : sudo -- sh -c 'cat '\\''/sys/class/hwmon/hwmon6/name'\\'''\n",
      "05:29:21  DEBUG   : ls -1 /sys/class/hwmon/hwmon6/\n",
      "05:29:21  DEBUG   : sudo -- sh -c 'cat '\\''/sys/class/hwmon/hwmon6/in1_label'\\'''\n",
      "05:29:21  DEBUG   : if [ -e '/sys/class/hwmon/hwmon7/name' ]; then echo 1; else echo 0; fi\n",
      "05:29:22  DEBUG   : sudo -- sh -c 'cat '\\''/sys/class/hwmon/hwmon7/name'\\'''\n",
      "05:29:22  DEBUG   : ls -1 /sys/class/hwmon/hwmon7/\n",
      "05:29:23  DEBUG   : sudo -- sh -c 'cat '\\''/sys/class/hwmon/hwmon7/in1_label'\\'''\n",
      "05:29:23  DEBUG   : if [ -e '/sys/class/hwmon/hwmon8/name' ]; then echo 1; else echo 0; fi\n",
      "05:29:23  DEBUG   : sudo -- sh -c 'cat '\\''/sys/class/hwmon/hwmon8/name'\\'''\n",
      "05:29:24  DEBUG   : ls -1 /sys/class/hwmon/hwmon8/\n",
      "05:29:24  DEBUG   : sudo -- sh -c 'cat '\\''/sys/class/hwmon/hwmon8/power1_label'\\'''\n",
      "05:29:25  DEBUG   : if [ -e '/sys/class/hwmon/hwmon9/name' ]; then echo 1; else echo 0; fi\n",
      "05:29:25  DEBUG   : sudo -- sh -c 'cat '\\''/sys/class/hwmon/hwmon9/name'\\'''\n",
      "05:29:26  DEBUG   : ls -1 /sys/class/hwmon/hwmon9/\n",
      "05:29:26  DEBUG   : sudo -- sh -c 'cat '\\''/sys/class/hwmon/hwmon9/power1_label'\\'''\n",
      "05:29:27  DEBUG   : sudo -- sh -c 'mount -o remount,rw /'\n",
      "05:29:27  INFO    :         Target - Initializing target workdir:\n",
      "05:29:27  INFO    :         Target -    /root/devlib-target\n",
      "05:29:27  DEBUG   : mkdir -p /root/devlib-target\n",
      "05:29:27  DEBUG   : mkdir -p /root/devlib-target/bin\n",
      "05:29:28  DEBUG   : /usr/bin/scp -r   /home/derkling/Code/lisa/libs/devlib/devlib/bin/arm64/busybox root@192.168.0.1:/root/devlib-target/bin/busybox\n",
      "05:29:28  DEBUG   : chmod a+x /root/devlib-target/bin/busybox\n",
      "05:29:29  DEBUG   : /usr/bin/scp -r   /home/derkling/Code/lisa/libs/devlib/devlib/bin/scripts/shutils root@192.168.0.1:/root/devlib-target/bin/shutils\n",
      "05:29:29  DEBUG   : chmod a+x /root/devlib-target/bin/shutils\n",
      "05:29:29  DEBUG   : /usr/bin/scp -r   /home/derkling/Code/lisa/tools/scripts/cgroup_run_into.sh root@192.168.0.1:/root/devlib-target/bin/cgroup_run_into.sh\n",
      "05:29:30  DEBUG   : chmod a+x /root/devlib-target/bin/cgroup_run_into.sh\n",
      "05:29:30  DEBUG   : /usr/bin/scp -r   /home/derkling/Code/lisa/tools/arm64/perf root@192.168.0.1:/root/devlib-target/bin/perf\n",
      "05:29:34  DEBUG   : chmod a+x /root/devlib-target/bin/perf\n",
      "05:29:35  DEBUG   : /usr/bin/scp -r   /home/derkling/Code/lisa/tools/arm64/taskset root@192.168.0.1:/root/devlib-target/bin/taskset\n",
      "05:29:35  DEBUG   : chmod a+x /root/devlib-target/bin/taskset\n",
      "05:29:36  DEBUG   : /usr/bin/scp -r   /home/derkling/Code/lisa/tools/arm64/rt-app root@192.168.0.1:/root/devlib-target/bin/rt-app\n",
      "05:29:36  DEBUG   : chmod a+x /root/devlib-target/bin/rt-app\n",
      "05:29:36  DEBUG   : /usr/bin/scp -r   /home/derkling/Code/lisa/tools/arm64/trace-cmd root@192.168.0.1:/root/devlib-target/bin/trace-cmd\n",
      "05:29:37  DEBUG   : chmod a+x /root/devlib-target/bin/trace-cmd\n",
      "05:29:37  INFO    :         Target - Topology:\n",
      "05:29:37  INFO    :         Target -    [[0, 3, 4, 5], [1, 2]]\n",
      "05:29:37  DEBUG   : sudo -- sh -c 'cat '\\''/sys/devices/system/cpu/online'\\'''\n",
      "05:29:38  DEBUG   : cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_frequencies\n",
      "05:29:38  DEBUG   : sudo -- sh -c 'cat '\\''/sys/devices/system/cpu/online'\\'''\n",
      "05:29:38  DEBUG   : cat /sys/devices/system/cpu/cpu1/cpufreq/scaling_available_frequencies\n",
      "05:29:39  INFO    :       Platform - Loading default EM:\n",
      "05:29:39  INFO    :       Platform -    /home/derkling/Code/lisa/libs/utils/platforms/juno.json\n",
      "05:29:39  DEBUG   : /usr/bin/scp -r   /home/derkling/Code/lisa/libs/devlib/devlib/bin/arm64/trace-cmd root@192.168.0.1:/root/devlib-target/bin/trace-cmd\n",
      "05:29:39  DEBUG   : chmod a+x /root/devlib-target/bin/trace-cmd\n",
      "05:29:40  DEBUG   : cat /sys/kernel/debug/tracing/available_events\n",
      "05:29:40  INFO    :         FTrace - Enabled tracepoints:\n",
      "05:29:40  INFO    :         FTrace -   sched_switch\n",
      "05:29:40  INFO    :         FTrace -   sched_wakeup\n",
      "05:29:40  INFO    :         FTrace -   sched_wakeup_new\n",
      "05:29:40  INFO    :         FTrace -   sched_contrib_scale_f\n",
      "05:29:40  INFO    :         FTrace -   sched_load_avg_cpu\n",
      "05:29:40  INFO    :         FTrace -   sched_load_avg_task\n",
      "05:29:40  INFO    :         FTrace -   sched_tune_config\n",
      "05:29:40  INFO    :         FTrace -   sched_tune_tasks_update\n",
      "05:29:40  INFO    :         FTrace -   sched_tune_boostgroup_update\n",
      "05:29:40  INFO    :         FTrace -   sched_tune_filter\n",
      "05:29:40  INFO    :         FTrace -   sched_boost_cpu\n",
      "05:29:40  INFO    :         FTrace -   sched_boost_task\n",
      "05:29:40  INFO    :         FTrace -   sched_energy_diff\n",
      "05:29:40  INFO    :         FTrace -   cpu_frequency\n",
      "05:29:40  INFO    :         FTrace -   cpu_capacity\n",
      "05:29:40  INFO    :    EnergyMeter - Scanning for HWMON channels, may take some time...\n",
      "05:29:40  INFO    :    EnergyMeter - Channels selected for energy sampling:\n",
      "05:29:40  INFO    :    EnergyMeter -    a57_energy\n",
      "05:29:40  INFO    :    EnergyMeter -    a53_energy\n",
      "05:29:40  WARNING :         Target - Using configuration provided RTApp calibration\n",
      "05:29:40  INFO    :         Target - Using RT-App calibration values:\n",
      "05:29:40  INFO    :         Target -    {\"0\": 355, \"1\": 138, \"2\": 138, \"3\": 355, \"4\": 354, \"5\": 354}\n",
      "05:29:40  WARNING :        TestEnv - Wipe previous contents of the results folder:\n",
      "05:29:40  WARNING :        TestEnv -    /home/derkling/Code/lisa/results/LisaInANutshell\n",
      "05:29:40  INFO    :        TestEnv - Set results folder to:\n",
      "05:29:40  INFO    :        TestEnv -    /home/derkling/Code/lisa/results/LisaInANutshell\n",
      "05:29:40  INFO    :        TestEnv - Experiment results available also in:\n",
      "05:29:40  INFO    :        TestEnv -    /home/derkling/Code/lisa/results_latest\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "DONE\n"
     ]
    }
   ],
   "source": [
    "# Support to access the remote target\n",
    "from env import TestEnv\n",
    "\n",
    "# Initialize a test environment using:\n",
    "# the provided target configuration (my_target_conf)\n",
    "# the provided test configuration   (my_test_conf)\n",
    "te = TestEnv(conf)\n",
    "target = te.target\n",
    "\n",
    "print \"DONE\""
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Commands execution on remote target"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {
    "code_folding": [],
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "05:29:59  DEBUG   : echo ENERGY_AWARE > /sys/kernel/debug/sched_features\n",
      "05:29:59  DEBUG   : sudo -- sh -c 'cat '\\''/sys/kernel/debug/sched_features'\\'''\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "sched_features:\n",
      "GENTLE_FAIR_SLEEPERS START_DEBIT NO_NEXT_BUDDY LAST_BUDDY CACHE_HOT_BUDDY WAKEUP_PREEMPTION NO_HRTICK NO_DOUBLE_TICK LB_BIAS NONTASK_CAPACITY TTWU_QUEUE RT_PUSH_IPI NO_FORCE_SD_OVERLAP RT_RUNTIME_SHARE NO_LB_MIN ATTACH_AGE_LOAD ENERGY_AWARE NO_UTIL_EST CAP_UTIL_EST\n"
     ]
    }
   ],
   "source": [
    "# Enable Energy-Aware scheduler\n",
    "target.execute(\"echo ENERGY_AWARE > /sys/kernel/debug/sched_features\");\n",
    "\n",
    "# Check which sched_feature are enabled\n",
    "sched_features = target.read_value(\"/sys/kernel/debug/sched_features\");\n",
    "print \"sched_features:\"\n",
    "print sched_features"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {
    "code_folding": [
     0
    ],
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "# It's possible also to run custom script\n",
    "# my_script = target.get_installed()\n",
    "# target.execute(my_script)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Example of frameworks configuration on remote target"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Configure CPUFreq governor to be \"sched-freq\""
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {
    "code_folding": [],
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "05:30:05  DEBUG   : sudo -- sh -c '/root/devlib-target/bin/shutils cpufreq_set_all_governors sched'\n",
      "05:30:06  DEBUG   : sudo -- sh -c '/root/devlib-target/bin/shutils cpufreq_get_all_governors'\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "{'1': 'sched', '0': 'sched', '3': 'sched', '2': 'sched', '5': 'sched', '4': 'sched'}\n"
     ]
    }
   ],
   "source": [
    "target.cpufreq.set_all_governors('sched');\n",
    "\n",
    "# Check which governor is enabled on each CPU\n",
    "enabled_governors =  target.cpufreq.get_all_governors()\n",
    "print enabled_governors"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Create a big/LITTLE partition using CGroups::CPUSet"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {
    "code_folding": [],
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "05:30:09  DEBUG   : sudo -- sh -c '[ -d /sys/fs/cgroup/devlib_cpuset/big ] || mkdir -p /sys/fs/cgroup/devlib_cpuset/big'\n",
      "05:30:09  DEBUG   : sudo -- sh -c 'echo 1-2 > '\\''/sys/fs/cgroup/devlib_cpuset/big/cpuset.cpus'\\'''\n",
      "05:30:10  DEBUG   : sudo -- sh -c 'cat '\\''/sys/fs/cgroup/devlib_cpuset/big/cpuset.cpus'\\'''\n",
      "05:30:10  DEBUG   : sudo -- sh -c 'echo 0 > '\\''/sys/fs/cgroup/devlib_cpuset/big/cpuset.mems'\\'''\n",
      "05:30:10  DEBUG   : sudo -- sh -c 'cat '\\''/sys/fs/cgroup/devlib_cpuset/big/cpuset.mems'\\'''\n",
      "05:30:11  DEBUG   : sudo -- sh -c '[ -d /sys/fs/cgroup/devlib_cpuset/LITTLE ] || mkdir -p /sys/fs/cgroup/devlib_cpuset/LITTLE'\n",
      "05:30:11  DEBUG   : sudo -- sh -c 'echo 0,3-5 > '\\''/sys/fs/cgroup/devlib_cpuset/LITTLE/cpuset.cpus'\\'''\n",
      "05:30:11  DEBUG   : sudo -- sh -c 'cat '\\''/sys/fs/cgroup/devlib_cpuset/LITTLE/cpuset.cpus'\\'''\n",
      "05:30:12  DEBUG   : sudo -- sh -c 'echo 0 > '\\''/sys/fs/cgroup/devlib_cpuset/LITTLE/cpuset.mems'\\'''\n",
      "05:30:12  DEBUG   : sudo -- sh -c 'cat '\\''/sys/fs/cgroup/devlib_cpuset/LITTLE/cpuset.mems'\\'''\n",
      "05:30:12  DEBUG   : /root/devlib-target/bin/busybox find /sys/fs/cgroup/devlib_cpuset -type d\n",
      "05:30:13  DEBUG   : /root/devlib-target/bin/shutils cgroups_get_attributes /sys/fs/cgroup/devlib_cpuset cpuset\n",
      "05:30:13  DEBUG   : /root/devlib-target/bin/shutils cgroups_get_attributes /sys/fs/cgroup/devlib_cpuset/big cpuset\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "cpuset:/               cpus: 0-5\n",
      "cpuset:/big            cpus: 1-2"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "05:30:14  DEBUG   : /root/devlib-target/bin/shutils cgroups_get_attributes /sys/fs/cgroup/devlib_cpuset/LITTLE cpuset\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\n",
      "cpuset:/LITTLE         cpus: 0,3-5\n"
     ]
    }
   ],
   "source": [
    "cpuset = target.cgroups.controller('cpuset')\n",
    "\n",
    "# Configure a big partition\n",
    "cpuset_bigs = cpuset.cgroup('/big')\n",
    "cpuset_bigs.set(cpus=te.target.bl.bigs, mems=0)\n",
    "\n",
    "# Configure a LITTLE partition\n",
    "cpuset_littles = cpuset.cgroup('/LITTLE')\n",
    "cpuset_littles.set(cpus=te.target.bl.littles, mems=0)\n",
    "\n",
    "# Dump the configuraiton of each controller\n",
    "cgroups = cpuset.list_all()\n",
    "for cgname in cgroups:\n",
    "    cgroup = cpuset.cgroup(cgname)\n",
    "    attrs = cgroup.get()\n",
    "    cpus = attrs['cpus']\n",
    "    print '{}:{:<15} cpus: {}'.format(cpuset.kind, cgroup.name, cpus)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<br><br><br><br>\n",
    "Advanced usage: exploring more APIs exposed by TestEnv and Devlib<br>\n",
    "[notebooks/tutorial/02_TestEnvUsage.ipynb](02_TestEnvUsage.ipynb)\n",
    "<br><br><br><br>"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "heading_collapsed": true
   },
   "source": [
    "# Using syntethic workloads"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Generate an RTApp configuration"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {
    "collapsed": false,
    "scrolled": false
   },
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "05:30:22  INFO    :          WlGen - Setup new workload test\n",
      "05:30:22  INFO    :          RTApp - Workload duration defined by longest task\n",
      "05:30:22  INFO    :          RTApp - Default policy: SCHED_OTHER\n",
      "05:30:22  INFO    :          RTApp - ------------------------\n",
      "05:30:22  INFO    :          RTApp - task [task_lrh], sched: using default policy\n",
      "05:30:22  INFO    :          RTApp -  | calibration CPU: 0\n",
      "05:30:22  INFO    :          RTApp -  | loops count: 1\n",
      "05:30:22  INFO    :          RTApp - + phase_000001: duration 3.000000 [s] (93 loops)\n",
      "05:30:22  INFO    :          RTApp - |  period    32000 [us], duty_cycle  10 %\n",
      "05:30:22  INFO    :          RTApp - |  run_time   3200 [us], sleep_time  28800 [us]\n",
      "05:30:22  INFO    :          RTApp - + phase_000002: duration 0.500000 [s] (31 loops)\n",
      "05:30:22  INFO    :          RTApp - |  period    16000 [us], duty_cycle  10 %\n",
      "05:30:22  INFO    :          RTApp - |  run_time   1600 [us], sleep_time  14400 [us]\n",
      "05:30:22  INFO    :          RTApp - + phase_000003: duration 0.500000 [s] (31 loops)\n",
      "05:30:22  INFO    :          RTApp - |  period    16000 [us], duty_cycle  30 %\n",
      "05:30:22  INFO    :          RTApp - |  run_time   4800 [us], sleep_time  11200 [us]\n",
      "05:30:22  INFO    :          RTApp - + phase_000004: duration 0.500000 [s] (31 loops)\n",
      "05:30:22  INFO    :          RTApp - |  period    16000 [us], duty_cycle  50 %\n",
      "05:30:22  INFO    :          RTApp - |  run_time   8000 [us], sleep_time   8000 [us]\n",
      "05:30:22  INFO    :          RTApp - + phase_000005: duration 3.000000 [s] (187 loops)\n",
      "05:30:22  INFO    :          RTApp - |  period    16000 [us], duty_cycle  60 %\n",
      "05:30:22  INFO    :          RTApp - |  run_time   9600 [us], sleep_time   6400 [us]\n",
      "05:30:22  DEBUG   : /usr/bin/scp -r   test_00.json root@192.168.0.1:/root/devlib-target\n"
     ]
    }
   ],
   "source": [
    "# RTApp configurator for generation of PERIODIC tasks\n",
    "from wlgen import RTA, Periodic, Ramp\n",
    "\n",
    "# Light workload\n",
    "light  = Periodic(\n",
    "            duty_cycle_pct = 10,\n",
    "            duration_s     =  3,\n",
    "            period_ms      = 32,\n",
    ")\n",
    "\n",
    "# Ramp workload\n",
    "ramp   = Ramp(\n",
    "            start_pct=10,\n",
    "            end_pct=60,\n",
    "            delta_pct=20,\n",
    "            time_s=0.5,\n",
    "            period_ms=16\n",
    ")\n",
    "\n",
    "# Heavy workload\n",
    "heavy  = Periodic(\n",
    "            duty_cycle_pct=60,\n",
    "            duration_s=3,\n",
    "            period_ms=16\n",
    ")\n",
    "\n",
    "# Composed workload\n",
    "lrh_task = light + ramp + heavy\n",
    "\n",
    "\n",
    "# Create a new RTApp workload generator using the calibration values\n",
    "# reported by the TestEnv module\n",
    "rtapp = RTA(target, 'test', calibration=te.calibration())\n",
    "\n",
    "\n",
    "# Configure this RTApp instance to:\n",
    "rtapp.conf(\n",
    "\n",
    "    # 1. generate a \"profile based\" set of tasks\n",
    "    kind = 'profile',\n",
    "    \n",
    "    # 2. define the \"profile\" of each task\n",
    "    params = {\n",
    "        \n",
    "        # 3. Composed task\n",
    "        'task_lrh': lrh_task.get(),\n",
    "    },\n",
    "    \n",
    "    #loadref='big',\n",
    "    loadref='LITTLE',\n",
    "    run_dir=target.working_directory\n",
    "    \n",
    "    # Alternatively, it is possible to specify a json file for rt-app through:\n",
    "    # kind = 'custom',\n",
    "    # params = '/path/file.json',\n",
    ");"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {
    "code_folding": [
     0
    ],
    "collapsed": false,
    "scrolled": true
   },
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "05:30:24  INFO    : Generated RTApp JSON file:\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "{\n",
      "    \"global\": {\n",
      "        \"calibration\": 355, \n",
      "        \"default_policy\": \"SCHED_OTHER\", \n",
      "        \"duration\": -1, \n",
      "        \"logdir\": \"/root/devlib-target\"\n",
      "    }, \n",
      "    \"tasks\": {\n",
      "        \"task_lrh\": {\n",
      "            \"loop\": 1, \n",
      "            \"phases\": {\n",
      "                \"p000001\": {\n",
      "                    \"loop\": 93, \n",
      "                    \"run\": 3200, \n",
      "                    \"timer\": {\n",
      "                        \"period\": 32000, \n",
      "                        \"ref\": \"task_lrh\"\n",
      "                    }\n",
      "                }, \n",
      "                \"p000002\": {\n",
      "                    \"loop\": 31, \n",
      "                    \"run\": 1600, \n",
      "                    \"timer\": {\n",
      "                        \"period\": 16000, \n",
      "                        \"ref\": \"task_lrh\"\n",
      "                    }\n",
      "                }, \n",
      "                \"p000003\": {\n",
      "                    \"loop\": 31, \n",
      "                    \"run\": 4800, \n",
      "                    \"timer\": {\n",
      "                        \"period\": 16000, \n",
      "                        \"ref\": \"task_lrh\"\n",
      "                    }\n",
      "                }, \n",
      "                \"p000004\": {\n",
      "                    \"loop\": 31, \n",
      "                    \"run\": 8000, \n",
      "                    \"timer\": {\n",
      "                        \"period\": 16000, \n",
      "                        \"ref\": \"task_lrh\"\n",
      "                    }\n",
      "                }, \n",
      "                \"p000005\": {\n",
      "                    \"loop\": 187, \n",
      "                    \"run\": 9600, \n",
      "                    \"timer\": {\n",
      "                        \"period\": 16000, \n",
      "                        \"ref\": \"task_lrh\"\n",
      "                    }\n",
      "                }\n",
      "            }, \n",
      "            \"policy\": \"SCHED_OTHER\"\n",
      "        }\n",
      "    }\n",
      "}\n"
     ]
    }
   ],
   "source": [
    "# Inspect the JSON file used to run the application\n",
    "with open('./test_00.json', 'r') as fh:\n",
    "    rtapp_json = json.load(fh)\n",
    "logging.info('Generated RTApp JSON file:')\n",
    "print json.dumps(rtapp_json, indent=4, sort_keys=True)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<br><br><br><br>\n",
    "Advanced usage: using WlGen to create more complex RTApp configurations or run other banchmarks (e.g. hackbench)<br>\n",
    "[notebooks/tutorial/03_WlGenUsage.ipynb](03_WlGenUsage.ipynb)\n",
    "<br><br><br><br>"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Execution and Energy Sampling"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "def execute(te, wload, res_dir):\n",
    "    \n",
    "    logging.info('# Setup FTrace')\n",
    "    te.ftrace.start()\n",
    "\n",
    "    logging.info('## Start energy sampling')\n",
    "    te.emeter.reset()\n",
    "\n",
    "    logging.info('### Start RTApp execution')\n",
    "    wload.run(out_dir=res_dir)\n",
    "\n",
    "    logging.info('## Read energy consumption: %s/energy.json', res_dir)\n",
    "    nrg_report = te.emeter.report(out_dir=res_dir)\n",
    "\n",
    "    logging.info('# Stop FTrace')\n",
    "    te.ftrace.stop()\n",
    "\n",
    "    trace_file = os.path.join(res_dir, 'trace.dat')\n",
    "    logging.info('# Save FTrace: %s', trace_file)\n",
    "    te.ftrace.get_trace(trace_file)\n",
    "\n",
    "    logging.info('# Save platform description: %s/platform.json', res_dir)\n",
    "    plt, plt_file = te.platform_dump(res_dir)\n",
    "    \n",
    "    logging.info('# Report collected data:')\n",
    "    logging.info('   %s', res_dir)\n",
    "    !tree {res_dir}\n",
    "    \n",
    "    return nrg_report, plt, plt_file, trace_file"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "05:30:27  INFO    : # Setup FTrace\n",
      "05:30:27  DEBUG   : sudo -- sh -c 'echo 10240 > '\\''/sys/kernel/debug/tracing/buffer_size_kb'\\'''\n",
      "05:30:27  DEBUG   : sudo -- sh -c 'cat '\\''/sys/kernel/debug/tracing/buffer_size_kb'\\'''\n",
      "05:30:27  DEBUG   : sudo -- sh -c '/root/devlib-target/bin/trace-cmd reset'\n",
      "05:30:29  DEBUG   : sudo -- sh -c '/root/devlib-target/bin/trace-cmd start -e sched_switch -e sched_wakeup -e sched_wakeup_new -e sched_contrib_scale_f -e sched_load_avg_cpu -e sched_load_avg_task -e sched_tune_config -e sched_tune_tasks_update -e sched_tune_boostgroup_update -e sched_tune_filter -e sched_boost_cpu -e sched_boost_task -e sched_energy_diff -e cpu_frequency -e cpu_capacity'\n",
      "05:30:31  DEBUG   : sudo -- sh -c 'echo TRACE_MARKER_START > '\\''/sys/kernel/debug/tracing/trace_marker'\\'''\n",
      "05:30:31  DEBUG   : sudo -- sh -c '/root/devlib-target/bin/shutils cpufreq_trace_all_frequencies'\n",
      "05:30:32  INFO    : ## Start energy sampling\n",
      "05:30:32  DEBUG   : sudo -- sh -c 'cat '\\''/sys/class/hwmon/hwmon13/energy1_input'\\'''\n",
      "05:30:32  DEBUG   : sudo -- sh -c 'cat '\\''/sys/class/hwmon/hwmon14/energy1_input'\\'''\n",
      "05:30:33  INFO    : ### Start RTApp execution\n",
      "05:30:33  INFO    :          WlGen - Workload execution START:\n",
      "05:30:33  INFO    :          WlGen -    /root/devlib-target/bin/rt-app /root/devlib-target/test_00.json\n",
      "05:30:33  DEBUG   : /root/devlib-target/bin/rt-app /root/devlib-target/test_00.json\n",
      "05:30:40  DEBUG   : /usr/bin/scp -r   root@192.168.0.1:'/root/devlib-target/*task_lrh*.log' /home/derkling/Code/lisa/results/LisaInANutshell\n",
      "05:30:41  DEBUG   : /usr/bin/scp -r   root@192.168.0.1:/root/devlib-target/test_00.json /home/derkling/Code/lisa/results/LisaInANutshell\n",
      "05:30:41  INFO    : ## Read energy consumption: /home/derkling/Code/lisa/results/LisaInANutshell/energy.json\n",
      "05:30:41  DEBUG   : sudo -- sh -c 'cat '\\''/sys/class/hwmon/hwmon13/energy1_input'\\'''\n",
      "05:30:41  DEBUG   : sudo -- sh -c 'cat '\\''/sys/class/hwmon/hwmon14/energy1_input'\\'''\n",
      "05:30:42  INFO    :   EnergyReport - Energy [             a53]: 5.530500\n",
      "05:30:42  INFO    :   EnergyReport - Energy [             a57]: 2.019339\n",
      "05:30:42  WARNING :   EnergyReport - Unable to bind hwmon channel [a57] to a big.LITTLE cluster\n",
      "05:30:42  WARNING :    EnergyMeter - No energy data for big cluster\n",
      "05:30:42  INFO    : # Stop FTrace\n",
      "05:30:42  DEBUG   : sudo -- sh -c '/root/devlib-target/bin/shutils cpufreq_trace_all_frequencies'\n",
      "05:30:42  DEBUG   : sudo -- sh -c 'echo TRACE_MARKER_STOP > '\\''/sys/kernel/debug/tracing/trace_marker'\\'''\n",
      "05:30:42  DEBUG   : sudo -- sh -c '/root/devlib-target/bin/trace-cmd stop'\n",
      "05:30:43  INFO    : # Save FTrace: /home/derkling/Code/lisa/results/LisaInANutshell/trace.dat\n",
      "05:30:43  DEBUG   : sudo -- sh -c '/root/devlib-target/bin/trace-cmd extract -o /root/devlib-target/trace.dat'\n",
      "05:30:45  DEBUG   : /usr/bin/scp -r   root@192.168.0.1:/root/devlib-target/trace.dat /home/derkling/Code/lisa/results/LisaInANutshell/trace.dat\n",
      "05:30:46  INFO    : # Save platform description: /home/derkling/Code/lisa/results/LisaInANutshell/platform.json\n",
      "05:30:46  INFO    : # Report collected data:\n",
      "05:30:46  INFO    :    /home/derkling/Code/lisa/results/LisaInANutshell\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\u001b[01;34m/home/derkling/Code/lisa/results/LisaInANutshell\u001b[00m\r\n",
      "├── energy.json\r\n",
      "├── output.log\r\n",
      "├── platform.json\r\n",
      "├── rt-app-task_lrh-0.log\r\n",
      "├── test_00.json\r\n",
      "└── trace.dat\r\n",
      "\r\n",
      "0 directories, 6 files\r\n"
     ]
    }
   ],
   "source": [
    "nrg_report, plt, plt_file, trace_file = execute(te, rtapp, te.res_dir)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Example of energy collected data"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Energy</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Cluster</th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>LITTLE</th>\n",
       "      <td>5.530500</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>a57</th>\n",
       "      <td>2.019339</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "           Energy\n",
       "Cluster          \n",
       "LITTLE   5.530500\n",
       "a57      2.019339"
      ]
     },
     "execution_count": 16,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "import pandas as pd\n",
    "\n",
    "df = pd.DataFrame(list(nrg_report.channels.iteritems()),\n",
    "                  columns=['Cluster', 'Energy'])\n",
    "df = df.set_index('Cluster')\n",
    "df"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Example of platform description"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {
    "collapsed": false,
    "scrolled": true
   },
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "05:30:46  INFO    : LITTLE cluster max capacity: 447\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "{\n",
      "    \"nrg_model\": {\n",
      "        \"big\": {\n",
      "            \"cluster\": {\n",
      "                \"nrg_max\": 64\n",
      "            }, \n",
      "            \"cpu\": {\n",
      "                \"cap_max\": 1024, \n",
      "                \"nrg_max\": 616\n",
      "            }\n",
      "        }, \n",
      "        \"little\": {\n",
      "            \"cluster\": {\n",
      "                \"nrg_max\": 57\n",
      "            }, \n",
      "            \"cpu\": {\n",
      "                \"cap_max\": 447, \n",
      "                \"nrg_max\": 93\n",
      "            }\n",
      "        }\n",
      "    }, \n",
      "    \"clusters\": {\n",
      "        \"big\": [\n",
      "            1, \n",
      "            2\n",
      "        ], \n",
      "        \"little\": [\n",
      "            0, \n",
      "            3, \n",
      "            4, \n",
      "            5\n",
      "        ]\n",
      "    }, \n",
      "    \"cpus_count\": 6, \n",
      "    \"freqs\": {\n",
      "        \"big\": [\n",
      "            600000, \n",
      "            1000000, \n",
      "            1200000\n",
      "        ], \n",
      "        \"little\": [\n",
      "            450000, \n",
      "            800000, \n",
      "            950000\n",
      "        ]\n",
      "    }, \n",
      "    \"topology\": [\n",
      "        [\n",
      "            0, \n",
      "            3, \n",
      "            4, \n",
      "            5\n",
      "        ], \n",
      "        [\n",
      "            1, \n",
      "            2\n",
      "        ]\n",
      "    ]\n",
      "}\n"
     ]
    }
   ],
   "source": [
    "# Show the collected platform description\n",
    "with open(os.path.join(te.res_dir, 'platform.json'), 'r') as fh:\n",
    "    platform = json.load(fh)\n",
    "print json.dumps(platform, indent=4)\n",
    "logging.info('LITTLE cluster max capacity: %d',\n",
    "             platform['nrg_model']['little']['cpu']['cap_max'])"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<br><br><br><br>\n",
    "Advanced Workload Execution: using the Executor module to automate data collection for multiple tests<br>\n",
    "[notebooks/tutorial/04_ExecutorUsage.ipynb](04_ExecutorUsage.ipynb)\n",
    "<br><br><br><br>"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "heading_collapsed": true
   },
   "source": [
    "# Trace Visualization (the kernelshark way)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Using kernelshark"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "version = 6\r\n"
     ]
    }
   ],
   "source": [
    "# Let's look at the trace using kernelshark...\n",
    "trace_file = te.res_dir + '/trace.dat'\n",
    "!kernelshark {trace_file} 2>/dev/null"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Using the TRAPpy Trace Plotter"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {
    "code_folding": [],
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<style>\n",
       "/*\n",
       "\n",
       " *    Copyright 2015-2016 ARM Limited\n",
       "\n",
       " *\n",
       "\n",
       " * Licensed under the Apache License, Version 2.0 (the \"License\");\n",
       "\n",
       " * you may not use this file except in compliance with the License.\n",
       "\n",
       " * You may obtain a copy of the License at\n",
       "\n",
       " *\n",
       "\n",
       " *     http://www.apache.org/licenses/LICENSE-2.0\n",
       "\n",
       " *\n",
       "\n",
       " * Unless required by applicable law or agreed to in writing, software\n",
       "\n",
       " * distributed under the License is distributed on an \"AS IS\" BASIS,\n",
       "\n",
       " * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n",
       "\n",
       " * See the License for the specific language governing permissions and\n",
       "\n",
       " * limitations under the License.\n",
       "\n",
       " */\n",
       "\n",
       "\n",
       "\n",
       ".d3-tip {\n",
       "\n",
       "  line-height: 1;\n",
       "\n",
       "  padding: 12px;\n",
       "\n",
       "  background: rgba(0, 0, 0, 0.6);\n",
       "\n",
       "  color: #fff;\n",
       "\n",
       "  border-radius: 2px;\n",
       "\n",
       "  position: absolute !important;\n",
       "\n",
       "  z-index: 99999;\n",
       "\n",
       "}\n",
       "\n",
       "\n",
       "\n",
       ".d3-tip:after {\n",
       "\n",
       "  box-sizing: border-box;\n",
       "\n",
       "  pointer-events: none;\n",
       "\n",
       "  display: inline;\n",
       "\n",
       "  font-size: 10px;\n",
       "\n",
       "  width: 100%;\n",
       "\n",
       "  line-height: 1;\n",
       "\n",
       "  color: rgba(0, 0, 0, 0.6);\n",
       "\n",
       "  content: \"\\25BC\";\n",
       "\n",
       "  position: absolute !important;\n",
       "\n",
       "  z-index: 99999;\n",
       "\n",
       "  text-align: center;\n",
       "\n",
       "}\n",
       "\n",
       "\n",
       "\n",
       ".d3-tip.n:after {\n",
       "\n",
       "  margin: -1px 0 0 0;\n",
       "\n",
       "  top: 100%;\n",
       "\n",
       "  left: 0;\n",
       "\n",
       "}\n",
       "\n",
       "\n",
       "\n",
       ".contextRect {\n",
       "\n",
       "  fill: lightgray;\n",
       "\n",
       "  fill-opacity: 0.5;\n",
       "\n",
       "  stroke: black;\n",
       "\n",
       "  stroke-width: 1;\n",
       "\n",
       "  stroke-opacity: 1;\n",
       "\n",
       "  pointer-events: none;\n",
       "\n",
       "  shape-rendering: crispEdges;\n",
       "\n",
       "}\n",
       "\n",
       "\n",
       "\n",
       ".chart {\n",
       "\n",
       "  shape-rendering: crispEdges;\n",
       "\n",
       "}\n",
       "\n",
       "\n",
       "\n",
       ".mini text {\n",
       "\n",
       "  font: 9px sans-serif;\n",
       "\n",
       "}\n",
       "\n",
       "\n",
       "\n",
       ".main text {\n",
       "\n",
       "  font: 12px sans-serif;\n",
       "\n",
       "}\n",
       "\n",
       "\n",
       "\n",
       ".axis line, .axis path {\n",
       "\n",
       "  stroke: black;\n",
       "\n",
       "}\n",
       "\n",
       "\n",
       "\n",
       ".miniItem {\n",
       "\n",
       "  stroke-width: 8;\n",
       "\n",
       "}\n",
       "\n",
       "\n",
       "\n",
       ".brush .extent {\n",
       "\n",
       "\n",
       "\n",
       "  stroke: #000;\n",
       "\n",
       "  fill-opacity: .125;\n",
       "\n",
       "  shape-rendering: crispEdges;\n",
       "\n",
       "}\n",
       "\n",
       "</style>\n",
       "<div id=\"fig_519ab73f1a9c4d0997f53219bbe58335\" class=\"eventplot\">\n",
       "        <script>\n",
       "            var req = require.config( {\n",
       "\n",
       "                paths: {\n",
       "\n",
       "                    \"EventPlot\": '/nbextensions/plotter_scripts/EventPlot/EventPlot',\n",
       "                    \"d3-tip\": '/nbextensions/plotter_scripts/EventPlot/d3.tip.v0.6.3',\n",
       "                    \"d3-plotter\": '/nbextensions/plotter_scripts/EventPlot/d3.min'\n",
       "                },\n",
       "                shim: {\n",
       "                    \"d3-plotter\" : {\n",
       "                        \"exports\" : \"d3\"\n",
       "                    },\n",
       "                    \"d3-tip\": [\"d3-plotter\"],\n",
       "                    \"EventPlot\": {\n",
       "\n",
       "                        \"deps\": [\"d3-tip\", \"d3-plotter\" ],\n",
       "                        \"exports\":  \"EventPlot\"\n",
       "                    }\n",
       "                }\n",
       "            });\n",
       "            req([\"require\", \"EventPlot\"], function() {\n",
       "               EventPlot.generate('fig_519ab73f1a9c4d0997f53219bbe58335', '/nbextensions/');\n",
       "            });\n",
       "        </script>\n",
       "        </div>"
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# Suport for FTrace events parsing and visualization\n",
    "import trappy\n",
    "\n",
    "# NOTE: The interactive trace visualization is available only if you run\n",
    "#       the workload to generate a new trace-file\n",
    "trappy.plotter.plot_trace(trace_file)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "heading_collapsed": true
   },
   "source": [
    "# Example of Trace Analysis"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Generate DataFrames from Trace Events"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "05:30:58  INFO    : Collected events spans a 11.783 [s] time interval\n"
     ]
    }
   ],
   "source": [
    "# Load the LISA::Trace parsing module\n",
    "from trace import Trace\n",
    "\n",
    "# Define which event we are interested into\n",
    "trace = Trace(te.platform, te.res_dir, [\n",
    "            \"sched_switch\",\n",
    "            \"sched_load_avg_cpu\",\n",
    "            \"sched_load_avg_task\",\n",
    "            \"sched_boost_cpu\",\n",
    "            \"sched_boost_task\",\n",
    "            \"cpu_frequency\",\n",
    "            \"cpu_capacity\",\n",
    "    ])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "05:30:58  INFO    : List of events identified in the trace:\n",
      "05:30:58  INFO    :    sched_load_avg_task\n",
      "05:30:58  INFO    :    cpu_frequency\n",
      "05:30:58  INFO    :    cpu_capacity\n",
      "05:30:58  INFO    :    sched_load_avg_cpu\n",
      "05:30:58  INFO    :    sched_boost_cpu\n",
      "05:30:58  INFO    :    sched_boost_task\n",
      "05:30:58  INFO    :    sched_switch\n"
     ]
    }
   ],
   "source": [
    "# Let's have a look at the set of events collected from the trace\n",
    "ftrace = trace.ftrace\n",
    "logging.info(\"List of events identified in the trace:\")\n",
    "for event in ftrace.class_definitions.keys():\n",
    "    logging.info(\"   %s\", event)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "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>comm</th>\n",
       "      <th>cpu</th>\n",
       "      <th>load_avg</th>\n",
       "      <th>load_sum</th>\n",
       "      <th>period_contrib</th>\n",
       "      <th>pid</th>\n",
       "      <th>util_avg</th>\n",
       "      <th>util_est</th>\n",
       "      <th>util_sum</th>\n",
       "      <th>cluster</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",
       "      <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.000135</th>\n",
       "      <td>trace-cmd</td>\n",
       "      <td>0</td>\n",
       "      <td>1377</td>\n",
       "      <td>trace-cmd</td>\n",
       "      <td>0</td>\n",
       "      <td>222</td>\n",
       "      <td>10616291</td>\n",
       "      <td>272</td>\n",
       "      <td>1377</td>\n",
       "      <td>87</td>\n",
       "      <td>87</td>\n",
       "      <td>4176248</td>\n",
       "      <td>LITTLE</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>0.000151</th>\n",
       "      <td>&lt;idle&gt;</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>sudo</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>655</td>\n",
       "      <td>66</td>\n",
       "      <td>1376</td>\n",
       "      <td>0</td>\n",
       "      <td>900</td>\n",
       "      <td>655</td>\n",
       "      <td>big</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>0.000170</th>\n",
       "      <td>trace-cmd</td>\n",
       "      <td>0</td>\n",
       "      <td>1377</td>\n",
       "      <td>trace-cmd</td>\n",
       "      <td>0</td>\n",
       "      <td>222</td>\n",
       "      <td>10616291</td>\n",
       "      <td>272</td>\n",
       "      <td>1377</td>\n",
       "      <td>87</td>\n",
       "      <td>87</td>\n",
       "      <td>4176248</td>\n",
       "      <td>LITTLE</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>0.001500</th>\n",
       "      <td>sudo</td>\n",
       "      <td>1</td>\n",
       "      <td>1376</td>\n",
       "      <td>sudo</td>\n",
       "      <td>1</td>\n",
       "      <td>14</td>\n",
       "      <td>687474</td>\n",
       "      <td>404</td>\n",
       "      <td>1376</td>\n",
       "      <td>14</td>\n",
       "      <td>900</td>\n",
       "      <td>687474</td>\n",
       "      <td>big</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>0.001504</th>\n",
       "      <td>&lt;idle&gt;</td>\n",
       "      <td>2</td>\n",
       "      <td>0</td>\n",
       "      <td>sh</td>\n",
       "      <td>2</td>\n",
       "      <td>0</td>\n",
       "      <td>91</td>\n",
       "      <td>561</td>\n",
       "      <td>1074</td>\n",
       "      <td>0</td>\n",
       "      <td>153</td>\n",
       "      <td>87</td>\n",
       "      <td>big</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "             __comm  __cpu  __pid       comm  cpu  load_avg  load_sum  \\\n",
       "Time                                                                    \n",
       "0.000135  trace-cmd      0   1377  trace-cmd    0       222  10616291   \n",
       "0.000151     <idle>      1      0       sudo    1         0       655   \n",
       "0.000170  trace-cmd      0   1377  trace-cmd    0       222  10616291   \n",
       "0.001500       sudo      1   1376       sudo    1        14    687474   \n",
       "0.001504     <idle>      2      0         sh    2         0        91   \n",
       "\n",
       "          period_contrib   pid  util_avg  util_est  util_sum cluster  \n",
       "Time                                                                  \n",
       "0.000135             272  1377        87        87   4176248  LITTLE  \n",
       "0.000151              66  1376         0       900       655     big  \n",
       "0.000170             272  1377        87        87   4176248  LITTLE  \n",
       "0.001500             404  1376        14       900    687474     big  \n",
       "0.001504             561  1074         0       153        87     big  "
      ]
     },
     "execution_count": 22,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# Trace events are converted into tables, let's have a look at one\n",
    "# of such tables\n",
    "df = trace.data_frame.trace_event('sched_load_avg_task')\n",
    "df.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {
    "code_folding": [
     0
    ],
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "# Simple selection of events based on conditional values\n",
    "#df[df.comm == 'task_lrh'].head()\n",
    "\n",
    "# Simple selection of specific signals\n",
    "#df[df.comm == 'task_lrh'][['util_avg']].head()\n",
    "\n",
    "# Simple statistics reporting\n",
    "#df[df.comm == 'task_lrh'][['util_avg']].describe()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<br><br><br><br>\n",
    "Advanced DataFrame usage: filtering by columns/rows, merging tables, plotting data<br>\n",
    "[notebooks/tutorial/05_TrappyUsage.ipynb](05_TrappyUsage.ipynb)\n",
    "<br><br><br><br>"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Easy plot signals from DataFrams"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<table style=\"border-style: hidden;\">\n",
       "<tr>\n",
       "<td style=\"border-style: hidden;\"><div class=\"ilineplot\" id=\"fig_33a2ba1bb9fb4c9d8d5112c650cf3fe2\">\n",
       "            <script>\n",
       "            var ilp_req = require.config( {\n",
       "\n",
       "                paths: {\n",
       "                    \"dygraph-sync\": '/nbextensions/plotter_scripts/ILinePlot/synchronizer',\n",
       "                    \"dygraph\": '/nbextensions/plotter_scripts/ILinePlot/dygraph-combined',\n",
       "                    \"ILinePlot\": '/nbextensions/plotter_scripts/ILinePlot/ILinePlot',\n",
       "                    \"underscore\": '/nbextensions/plotter_scripts/ILinePlot/underscore-min',\n",
       "                },\n",
       "\n",
       "                shim: {\n",
       "                    \"dygraph-sync\": [\"dygraph\"],\n",
       "                    \"ILinePlot\": {\n",
       "\n",
       "                        \"deps\": [\"dygraph-sync\", \"dygraph\", \"underscore\"],\n",
       "                        \"exports\":  \"ILinePlot\"\n",
       "                    }\n",
       "                }\n",
       "            });\n",
       "                ilp_req([\"require\", \"ILinePlot\"], function() {\n",
       "                ILinePlot.generate('fig_33a2ba1bb9fb4c9d8d5112c650cf3fe2', '/nbextensions/');\n",
       "            });\n",
       "            </script>\n",
       "        </div></td>\n",
       "</tr>\n",
       "<tr>\n",
       "<td style=\"border-style: hidden;\"><div style=\"text-align:center\" id=\"fig_33a2ba1bb9fb4c9d8d5112c650cf3fe2_legend\"></div></td>\n",
       "</tr>\n",
       "</table>"
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# Signals can be easily plot using the ILinePlotter\n",
    "trappy.ILinePlot(\n",
    "    \n",
    "    # FTrace object\n",
    "    ftrace,\n",
    "    \n",
    "    # Signals to be plotted\n",
    "    signals=[\n",
    "      'sched_load_avg_cpu:util_avg',\n",
    "      'sched_load_avg_task:util_avg'\n",
    "    ],\n",
    "    \n",
    "#     # Generate one plot for each value of the specified column\n",
    "#      pivot='cpu',\n",
    "    \n",
    "#     # Generate only plots which satisfy these filters\n",
    "#     filters={\n",
    "#         'comm': ['task_lrh'],\n",
    "#         'cpu' : [0,5]\n",
    "#     },\n",
    "    \n",
    "    # Formatting style\n",
    "    per_line=2,\n",
    "    drawstyle='steps-post',\n",
    "    marker = '+'\n",
    "\n",
    ").view()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "heading_collapsed": true
   },
   "source": [
    "# Example of Behavioral Analysis"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "from bart.sched.SchedMultiAssert import SchedAssert\n",
    "\n",
    "# Create an object to get/assert scheduling pbehaviors\n",
    "sa = SchedAssert(ftrace, te.topology,  execname='task_lrh')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Get tasks behaviors"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Task residency [%] on LITTLE cluster: 99.7034764921\n"
     ]
    }
   ],
   "source": [
    "# Check the residency of a task on the LITTLE cluster\n",
    "print \"Task residency [%] on LITTLE cluster:\",\\\n",
    "sa.getResidency(\n",
    "    \"cluster\",\n",
    "    te.target.bl.littles,\n",
    "    percent=True\n",
    ")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Task initial CPU: 1\n"
     ]
    }
   ],
   "source": [
    "# Check on which CPU the task start its execution\n",
    "print \"Task initial CPU:\",\\\n",
    "sa.getFirstCpu()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Check for expected behaviros"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Task running 99 [%] of its time on LITTLE? True\n"
     ]
    }
   ],
   "source": [
    "import operator\n",
    "\n",
    "# Define the time window where we want focus our assertions\n",
    "start_s = sa.getStartTime()\n",
    "little_residency_window = (start_s, start_s + 10)\n",
    "\n",
    "# Defined the expected task residency \n",
    "EXPECTED_RESIDENCY_PCT=99\n",
    "\n",
    "result = sa.assertResidency(\n",
    "    \"cluster\",\n",
    "    te.target.bl.littles,\n",
    "    EXPECTED_RESIDENCY_PCT,\n",
    "    operator.ge,\n",
    "    window=little_residency_window,\n",
    "    percent=True\n",
    ")\n",
    "print \"Task running {} [%] of its time on LITTLE? {}\"\\\n",
    "      .format(EXPECTED_RESIDENCY_PCT, result)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Task starting on a big CPU? True\n"
     ]
    }
   ],
   "source": [
    "result = sa.assertFirstCpu(te.target.bl.bigs)\n",
    "print \"Task starting on a big CPU? {}\".format(result)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "heading_collapsed": true
   },
   "source": [
    "# Examples of Data analysis"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Which task is the most active switcher?"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "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>next_comm</th>\n",
       "      <th>next_pid</th>\n",
       "      <th>next_prio</th>\n",
       "      <th>prev_comm</th>\n",
       "      <th>prev_pid</th>\n",
       "      <th>prev_prio</th>\n",
       "      <th>prev_state</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",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0.000156</th>\n",
       "      <td>&lt;idle&gt;</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>sudo</td>\n",
       "      <td>1376</td>\n",
       "      <td>120</td>\n",
       "      <td>swapper/1</td>\n",
       "      <td>0</td>\n",
       "      <td>120</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>0.000217</th>\n",
       "      <td>trace-cmd</td>\n",
       "      <td>0</td>\n",
       "      <td>1377</td>\n",
       "      <td>swapper/0</td>\n",
       "      <td>0</td>\n",
       "      <td>120</td>\n",
       "      <td>trace-cmd</td>\n",
       "      <td>1377</td>\n",
       "      <td>120</td>\n",
       "      <td>64</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>0.001509</th>\n",
       "      <td>&lt;idle&gt;</td>\n",
       "      <td>2</td>\n",
       "      <td>0</td>\n",
       "      <td>sh</td>\n",
       "      <td>1074</td>\n",
       "      <td>120</td>\n",
       "      <td>swapper/2</td>\n",
       "      <td>0</td>\n",
       "      <td>120</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>0.001524</th>\n",
       "      <td>sudo</td>\n",
       "      <td>1</td>\n",
       "      <td>1376</td>\n",
       "      <td>swapper/1</td>\n",
       "      <td>0</td>\n",
       "      <td>120</td>\n",
       "      <td>sudo</td>\n",
       "      <td>1376</td>\n",
       "      <td>120</td>\n",
       "      <td>64</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>0.001885</th>\n",
       "      <td>sh</td>\n",
       "      <td>2</td>\n",
       "      <td>1074</td>\n",
       "      <td>swapper/2</td>\n",
       "      <td>0</td>\n",
       "      <td>120</td>\n",
       "      <td>sh</td>\n",
       "      <td>1074</td>\n",
       "      <td>120</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "             __comm  __cpu  __pid  next_comm  next_pid  next_prio  prev_comm  \\\n",
       "Time                                                                           \n",
       "0.000156     <idle>      1      0       sudo      1376        120  swapper/1   \n",
       "0.000217  trace-cmd      0   1377  swapper/0         0        120  trace-cmd   \n",
       "0.001509     <idle>      2      0         sh      1074        120  swapper/2   \n",
       "0.001524       sudo      1   1376  swapper/1         0        120       sudo   \n",
       "0.001885         sh      2   1074  swapper/2         0        120         sh   \n",
       "\n",
       "          prev_pid  prev_prio  prev_state  \n",
       "Time                                       \n",
       "0.000156         0        120           0  \n",
       "0.000217      1377        120          64  \n",
       "0.001509         0        120           0  \n",
       "0.001524      1376        120          64  \n",
       "0.001885      1074        120           1  "
      ]
     },
     "execution_count": 30,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# Focus on sched_switch events\n",
    "df = ftrace.sched_switch.data_frame\n",
    "\n",
    "# # Select only interesting columns\n",
    "# df = df.ix[:,'next_comm':'prev_state']\n",
    "\n",
    "# # Group sched_switch event by task switching into the CPU\n",
    "# df = df.groupby('next_pid').describe(include=['object'])\n",
    "# df = df.unstack()\n",
    "\n",
    "# # Sort sched_switch events by number of time a task switch into the CPU\n",
    "# df = df['next_comm'].sort_values(by=['count'], ascending=False)\n",
    "\n",
    "df.head()\n",
    "\n",
    "# # Get topmost task name and PID\n",
    "# most_switching_pid  = df.index[1]\n",
    "# most_switching_task = df.values[1][2]\n",
    "# task_name = \"{}:{}\".format(most_switching_pid, most_switching_task)\n",
    "\n",
    "# # Print result\n",
    "# logging.info(\"The most swithing task is: [%s]\", task_name)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## What are the relative residency on different OPPs?"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 42,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "05:43:41  INFO    : Residency time per OPP:\n",
      "05:43:41  INFO    : Freq     450000Hz :  61.1%\n",
      "05:43:41  INFO    : Freq     800000Hz :  33.1%\n",
      "05:43:41  INFO    : Freq     950000Hz :   5.8%\n"
     ]
    }
   ],
   "source": [
    "# Focus on cpu_frequency events for CPU0\n",
    "df = ftrace.cpu_frequency.data_frame\n",
    "df = df[df.cpu == 0]\n",
    "\n",
    "# # Compute the residency on each OPP before switching to the next one\n",
    "# df.loc[:,'start'] = df.index\n",
    "# df.loc[:,'delta'] = (df['start'] - df['start'].shift()).fillna(0).shift(-1)\n",
    "\n",
    "# # Group by frequency and sum-up the deltas\n",
    "# freq_residencies = df.groupby('frequency')['delta'].sum()\n",
    "# logging.info(\"Residency time per OPP:\")\n",
    "# df = pd.DataFrame(freq_residencies)\n",
    "\n",
    "df.head()\n",
    "\n",
    "# # Compute the relative residency time\n",
    "# tot = sum(freq_residencies)\n",
    "# #df = df.apply(lambda delta : 100*delta/tot)\n",
    "# for f in freq_residencies.index:\n",
    "#     logging.info(\"Freq %10dHz : %5.1f%%\", f, 100*freq_residencies[f]/tot)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 47,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Populating the interactive namespace from numpy and matplotlib\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "WARNING: pylab import has clobbered these variables: ['axes']\n",
      "`%matplotlib` prevents importing * from pylab and numpy\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7fa24e11d710>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# Plot residency time\n",
    "import matplotlib.pyplot as plt\n",
    "# Enable generation of Notebook emebedded plots\n",
    "%matplotlib inline\n",
    "\n",
    "fig, axes = plt.subplots(1, 1, figsize=(16, 5));\n",
    "df.plot(kind='bar', ax=axes);"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Example of Custom Plotting"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "from perf_analysis import PerfAnalysis\n",
    "\n",
    "# Full analysis function\n",
    "def analysis(t_min=None, t_max=None):\n",
    "    test_dir = te.res_dir\n",
    "    platform_json = '{}/platform.json'.format(test_dir)\n",
    "    trace_file = '{}/trace.dat'.format(test_dir)\n",
    "    \n",
    "    # Load platform description data\n",
    "    with open(platform_json, 'r') as fh:\n",
    "        platform = json.load(fh)\n",
    "\n",
    "    # Load RTApp Performance data\n",
    "    pa = PerfAnalysis(test_dir)\n",
    "    logging.info(\"Loaded performance data for tasks: %s\", pa.tasks())\n",
    "    \n",
    "    # Load Trace data\n",
    "    #events = my_tests_conf['ftrace']['events']\n",
    "    events = [\n",
    "            \"sched_switch\",\n",
    "            \"sched_contrib_scale_f\",\n",
    "            \"sched_load_avg_cpu\",\n",
    "            \"sched_load_avg_task\",\n",
    "            \"cpu_frequency\",\n",
    "            \"cpu_capacity\",\n",
    "    ]\n",
    "    trace = Trace(platform, test_dir, events)\n",
    "    \n",
    "    # Define time ranges for all the temporal plots\n",
    "    trace.setXTimeRange(t_min, t_max)\n",
    "    \n",
    "    # Tasks performances plots\n",
    "    for task in pa.tasks():\n",
    "        pa.plotPerf(task)\n",
    "    \n",
    "    # Tasks plots\n",
    "    trace.analysis.tasks.plotTasks(pa.tasks())\n",
    "\n",
    "    # Cluster and CPUs plots\n",
    "    trace.analysis.frequency.plotClusterFrequencies()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 32,
   "metadata": {
    "collapsed": false,
    "scrolled": false
   },
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "06:30:36  INFO    : Loaded performance data for tasks: ['task_lrh']\n",
      "06:30:37  INFO    :   task         task_lrh found, pid: [1388]\n",
      "06:30:37  INFO    : Collected events spans a 11.783 [s] time interval\n",
      "06:30:37  INFO    : Set plots time range to (0.000000, 11.782671)[s]\n",
      "06:30:37  INFO    : Set plots time range to (0.000000, 11.782671)[s]\n",
      "06:30:37  INFO    : PerfIndex, Task [task_lrh] avg: 0.80, std: 0.12\n",
      "06:30:38  INFO    :   task         task_lrh found, pid: [1388]\n",
      "06:30:38  WARNING : Events [sched_overutilized] not found, plot DISABLED!\n",
      "06:30:38  WARNING : Events [sched_overutilized] not found, plot DISABLED!\n",
      "06:30:38  WARNING : Events [sched_overutilized] not found, plot DISABLED!\n",
      "06:30:38  WARNING : Events [sched_overutilized] not found, plot DISABLED!\n",
      "06:30:38  WARNING : Events [sched_overutilized] not found, plot DISABLED!\n",
      "06:30:39  INFO    : LITTLE cluster average frequency: 0.595 GHz\n",
      "06:30:39  INFO    : big    cluster average frequency: 0.628 GHz\n"
     ]
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAA7YAAALYCAYAAABIc24GAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzs3XmcXFWZ//HvE8MSJCTdgkAgy0gSIApECQRkiz+UyYxK\n8PWTRRSTMUIjgyCZcQTRMVFBGCAKKtBBlgASIKK4QRCibZIfxoxI2CkImpAFwtKdBEQgMc/vj3ur\nc7tS1V29pE+dvp/361Wvrrp1733Oqaquqqfuec41dxcAAAAAALHqF7oBAAAAAAB0B4ktAAAAACBq\nJLYAAAAAgKiR2AIAAAAAokZiCwAAAACIGoktAAAAACBqJLZALzOzm8zsW1Wuu9zM3jCz2dugHVPM\nbGFPbmNmE8xsZTv3zzCz181ss5lVfP8xszlmNqkzbespZraDmT1lZruGiB87M2sys6nt3D/GzP63\nN9vUkY7a3MG2R5nZ0z3Qhm6/7tL/q/d0sx1Vvz8BQK0ws93NbIGZbTCzy7q5rxEdfU9BbeIJAzqQ\nJmKvpZfNaaJZvP2pLuzS00u1637M3Sdn2tPtL6+huPs3JL23vXXM7EBJB7r7zzvaXw99kW+T1Lj7\nW5JukHR+O9tMN7NbuhCr0z8mRKij1/e3JHXrS8c2UPX/ZOlrzt0Xuvt+3W5Ada+7wWZ2g5m9kH55\nK5jZV7obu7Qpqv79CQC6JfMD/mtm9qKZ3Whm7+zCrs6Q9JK77+LuX+7q5zTiRmILdMDdd3b3ge4+\nUNIKJYnmwPQyp4u7tW42q7vb9zgz61/tqh3c3yDp1s6E7sS6WzZK9FP5L/FzJE02s+0qbM4X/y4w\nsz0lTZB0d+CmdNe2+v/r6HX3XUk7SdrP3XeRdLykZdugHTX3/gKgzyr+gD9Q0gckjZP0tWo3znyW\nD5f0VMl+kTMktkAXmdmhZvYHM2sxszVm9v3sF1Iz+66ZrTWz9Wb2qJmNKbOPgWb2OzP7XpUxF6RX\nH0l/3TwxPYrzKzN7ycyazeyXZrZXZpspZvZceoTnL2Z2aoV9X2ZmC81sl048BpvN7Cwze1ZSQekH\niZlNS/u+xsymVLu/1ERJv8/EGGlmvzezdWb2spnN6cZj0WRm3zazRZL+JulmSUdJ+kG6j6skyd1X\nSWqRdHilrrfzmJxvZsvSx/sJMzshXb6/pGskHZ7Gak6X72Bml5vZivTX6mvMbMf0vglmtqrS42lm\nA8zsivQX73WWDMPa0cx+bWZnl7TrUaswvNvM5qZHAdelj/WYzH03mdkP08d1g5kttswRSzP7iJk9\nnW77/fSxqfT4fETSQ+7+dmb7oWb20/Q5eyXdh8ysn5l9Le3bWjObXXxt2pZhYlPM7Hkze9XMzjSz\nQ9J+thT3k64/xcz+X/o/us6SIb//p53n8HNm9mT6GppnZsPS5eVec22G35vZ/unrrMXMHjezj1f7\nWFbxuhsnaY67r0/XL7j7XRX68FEze9iS95/nzewbJfcfaWYPpu183sw+W2YfnXp/AoDucPc1kuZJ\nep+ZHZZ5j1pqZscU1yvzWT5b0mcl/Vf63nps6b7Tz4wGM3sm3ecPMvf1Sz+HXzaz5yR9tGTbQWZ2\nffoZvMrMvpVus336Pnt2ut470s+aqhNz9CwSW6DrNkk6V9K7lHwRPVbSWZJkZv+sJGEa5e6DJJ0o\nqTmzrZvZuyTNl7TQ3b9UTUB3Pzq9emB6xHiukv/j6yUNSy9/l/SDtB3vlHSlpInpEZ7DJS3N7tMS\n10l6n6SPuPuGTj0K0iRJh0gaoySh2UPSLpKGSJoq6YdmNqiaHaXt/SclSXLRtyTNc/fBkvaS9H2p\n849FxmcknS5pZ0lTJC2U9O/pPs7JrPeUpIOqaXeJZZKOTB/vGZJuNbPd3f0pSWdK+kMaqz5d/xJJ\nI9NYI9M+/ndmf7ur8uN5uaT3K3le6yX9l6TNkm5K+ylJMrOD0u1/XaHNv05j7ybpz5J+XHL/yZKm\nS6pL+3dRut9dJd0l6atK/g+ek3SEKv9SfoAyz62ZvUPSryT9Vcmv7XspOWopJc/NZCVHeN+j5Pkq\nfS4PTdt9ipLX+Vcl/R8lw91PMrOjS9ZdlrbzG5J+amaDSxuYJv8XSPqEpF2VvD7mSBVfc9ltt5P0\nSyVfzHaT9EVJPzaz0ZnVyj6WGe297hZLuihN1EdVWKfodUmfSd9/PirpC2nfZGbDJd2j5DHbVdJY\nSY9ktu3S+xMAdJFJyQ+dkv5F0gtKPhu+6e51kv5T0l3p+1JR9rP835R8bl2aDkWer/I/sH5UyQ+E\nByr5jPjndPkZ6X1j0/s/qbafYzdJelvSPko+c4+T9Pn0R9rPSPqmme2npJTEtPX7OnoJiS3QRe7+\nZ3df4u6b3X2FpFmSir8obpQ0UNL+ZtYvPbLyYmbzvSQ1SbrD3f9b3eDuze7+M3d/091fl3Rxph1S\nkugcYGYD3H2tuz+ZuW87SbdLGizp4+7+Zhea8B13X5fWCEpJ37/p7v9w93uVfMHet8p9FRON1zLL\n3pY0wsz2cve33f3BShtX8Vi4pJvc/an0eduULi/3Afhapj1Vc/efFJ9rd79T0rOSxpeLY2am5IN5\nWvoYvi7pO0oStaKyj6clQ6/+TdK57v5C2p/F6QftLyWNNrN90n2cJun2TH9L23yTu//N3TcqScYP\nMrOBxbsl/dTd/+Tu/1Dy5WFset+/Snrc3X+atu97kl7cKsAWg9L2Fx0qaU9JX3b3v7v7W5nn99OS\nrnD35e7+NyXJ5inWdjKPb6WvifuVPF+3ufsr6a/+C5V8ASl6yd2vTNt5p5IE+2Nl2nimktd0wd03\nK3k+xqZfuDpymKR3uvsl7r7J3X+n5MtZtha/0mNZ1N7r7ovpNmdLesLMnjWzieVWdPffu/sT6fXH\nlPyfF/8XTpV0v7vfkT4eze6eTWx77P0JADpgku42sxYl79tNklZJusfd50mSuz8g6U/aciS1M5/l\nWZe4+wZ3Xynpd9ryI+JJkr7r7qvdvUXJd4disr27kmT7vPRz6mVJ31P6OZ2+z35b0s8lTZN0mrsz\nDDoQElugi8xsdDqk8AUzW6/kF7p3SZK7/1bJ0aUfSlprZo2ZRMGUvDnvKKmxB9qxU7r/5Wk7fi9p\nkJlZmhCcrOTL+pq0vdkkc6SkjytJnMomPVUonQX51TQhKHpDyS+q1ViX/h2YWfZfSh6zJenQzn+r\ntHF7j0U77ZXKH2EcqGRYaKeY2WfToUkt6Qf1+5S+LsrYTUnN5EOZ9e9VchStqNLjuauS19BzW3Um\n+YHiTkmnpX0/RVLZSTTS4VSXWDJ8er2So6cqacPazPW/a8vzOUTJF5CsirNiK3k8s8/tUEkrSvpX\ntKeSmvai5yX1V3IEu1K7Sm9nJyBZXbL/FWmMUsMlXZl5Pl5Nl+9VZt1SQ7R1/1eky6XkdVbpsSyq\n+LpLf7D5jruPU/KaulPS3ApHnsenw4hfMrN1SmrXi6/DoZL+UqEPPfr+BAAdcEmT3L3O3Ue4+9lK\nRn6dWHwfTt+Lj0iXF7X3WVNJ9ofX7HeTPUv293zm+nAlBwFeyLTlWiWf30U3Kxkldo+7b/WZjN5D\nYgt03TWSnpQ0Mh3ud6Ey/1Pu/v30C+gYSaMlfbl4l6TrJN0n6R4z26mb7fiPdP+Hpu04Rpk6R3f/\n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\nhUJBkvSjH/1IF110kUaNGiVJOvDAA1WfmTvkjjvu0Jlnnql58+Zp3LhxvdM5AL2uOHUQqkNiCwAA\n+pbit8HuXLpov/3204033qiVK1fq8ccf15o1a/SlL31JVrLPyy+/XGPGjNHgwYNVV1en9evX65VX\nXpEkrVq1Svvss0/FGFdddZVOPvlkjRkzpsvtRN9A3Wffj8t5bKtHYgsAAPqW4kSS3bn0gH333VeT\nJ0/W448/3mb5woULddlll2nu3Llat26dWlpaNGjQoNZT3gwdOlTLli2ruN+5c+fqZz/7ma666qoe\naScA9AUktgAAAD2gUCho5syZrRM9rVy5UnPmzNHhhx/eZr3XXntN/fv316677qq3335b3/zmN7Vh\nw4bW+z//+c/r61//upYtWyZ316OPPqrm5ubW+4cMGaL58+fryiuv1LXXXts7nUNNou6z78eVQsWl\nxrb21ddznlsAANDjBg4cqD/+8Y8aP368dt55Zx1++OE68MADdcUVV0hS63DkiRMnauLEiRo9erRG\njBihAQMGaNiwYa37mTZtmk466SQdd9xxGjRokE4//XS9+eabbfYxdOhQzZ8/X5dccoluuOGGXu4p\nANQe8x4abtMbzMyrbq9Z+aFExeWV7gcAADXLzBTTdxd0rNJzmi6v+alzOvX9tIc1NTUFOaoWKm7I\n2CHiJr9jNcm9d+MWhXqsu/q/339bNAYAAAAA0HXuUmTzNwXFEVsAABANjtj2PRyxBZDV1f/9/NXY\nFtXVbZnSn3pbAAAAAIhWfhPb5uYtU/q3tIRuDQAAANAp+Tuna/76nMfHuqvym9gCAAAAAPqE/NbY\nVrMuAACoKdTY9j3U2ALIosYWAAAAAPqI4nRAqA6JLQAAABAh6j77flwpVFxqbAEAAAAA6FUktgAA\nAD3gO9/5jv71X/+1zbJRo0aVXXbHHXeoX79++stf/tK6/PLLL9eQIUP01FNPqampSf369dPAgQO1\nyy67aL/99tNNN90kSVq+fLn69eunzZs3d7qNpTERtwkTJuQqbsjY4focKm7Y57krSGwBAAB6wDHH\nHKMHH3ywdSKkF154QZs2bdLSpUtbk9AXXnhBzz33nI4++ug2237729/WVVddpQULFmj//feXJO21\n11567bXXtGHDBl166aU6/fTT9fTTT3e7nUx0BKAvIrEFAADoAePGjdPGjRu1dOlSSdLChQv1oQ99\nSKNHj26zbOTIkdpzzz0lJUnm1772Nd1www1asGCBRo4cWXbfkyZNUl1dnZ588sl227BkyRIdfvjh\nqqur05AhQ/TFL35RGzdulKTWZPqggw7SwIEDNXfuXEnSr371K40dO1Z1dXU64ogj9Nhjj7Xub8SI\nEbriiit00EEHafDgwTrllFP01ltvtd7/85//XGPHjtWgQYM0cuRI3XfffZo7d67GjRvXpl0zZ87U\nCSecUPVjierkr940j30OFZca29pUX79lWrG6utCtAQAAfdD222+v8ePH6/e//70kacGCBTrqqKN0\n5JFHasGCBa3Lskdrv/KVr+jOO+/UggULNGLEiLL73bx5s372s59p3bp1OuCAA9ptQ//+/XXllVfq\n1Vdf1R/+8AfNnz9fV199dWtsSXr00Uf12muv6cQTT9TDDz+sqVOn6rrrrlNzc7MaGhp0/PHHtybD\nZqa5c+fqvvvu01//+lc9+uijrUOilyxZosmTJ+uKK67Q+vXrW/swadIk/fWvf21zdPmWW27R5MmT\nO/+gAjnmLv3ud6FbEY98JLYtLckrw11qbg7dGgAA0Ecdc8wxrQnkokWLdPTRR+uoo45qXbZw4UId\nc8wxres/8MADmjhxovbee++t9rVmzRrV1dVpt91207e+9S3deuutGjVqVLvxP/CBD+jQQw9Vv379\nNHz4cJ1xxhmtiXY5s2bNUkNDgw455BCZmT772c9qhx120OLFi1vXOeecc7THHnuorq5OH//4x1uP\nPl9//fWaOnWqjj32WEnSkCFDtO+++2r77bfXSSedpFtvvVWS9MQTT2jFihX62Mc+Vs1DiE7IX71p\n/vqcx8e6q/qHbgAAAEBPshndP/Gjf6NrdahHH320fvjDH6qlpUUvv/yy9tlnH+22226aPHmyWlpa\n9MQTT7Q5Ynv77bfrc5/7nOrr6zV9+vQ2+xoyZIhWrlzZqfjPPPOMpk2bpoceekhvvPGGNm3atNWw\n4KwVK1bo5ptv1ve///3WZRs3btSaNWtab++xxx6t1wcMGKAXXnhBkrRq1Sp99KMfLbvfyZMn69RT\nT9W3v/1t3XLLLTr55JO13XbbdaovANAZJLYAAKBP6WpS2hMOO+wwrV+/Xtddd52OOOIISdIuu+yi\nIUOGaNasWRoyZIiGDx/euv7o0aP1wAMPaMKECRowYIC+8pWvdCv+F77wBR188MG644479M53vlPf\n+973dNddd1Vcf9iwYbrwwgv11a9+tdOxhg4dqmXLlpW977DDDtP222+vBQsWaM6cOZozZ06n94+O\nNTU1BTmqFipuyNh5ixs6dlf03aHIdXXU1QIAgF41YMAAjRs3TjNnzmxzZPbII4/UzJkz2wxDLhoz\nZoweeOABXXbZZbryyiurjvXmm2+2uWzevFmvv/66Bg4cqJ122klPP/20rrnmmjbb7L777nruueda\nb59++um69tprtWTJErm7/va3v+nXv/61Xn/99Ypxi7MqT506VTfeeKN++9vfavPmzVq9erUKhULr\neqeddprOPvtsbb/99vrgBz9Ydb8AoCv6bmLb3ExdLQAA6HXHHHOMXn75ZR155JGty4466ii98sor\nbZJdsy1Dpg888EDdd999mjFjhmbNmiUza3N/OTvvvLN22mmn1ktTU5Muv/xy3Xbbbdpll110xhln\n6JRTTmmzn+nTp2vy5Mmqq6vTT37yEx188MG67rrrdPbZZ6u+vl6jRo3SzTffXDF2tl2HHHKIbrzx\nRp133nkaPHiwPvShD+n5559vXfe0007TE088oc985jOdewBRNeo+idtXY3eFxXQuMzPzbdJesyQB\nBgAANc3MOA9rJP7+979r991318MPP6x99tmn4nqVntN0efcLprexbfb9FLlX/H2po5fXZZfN0rp1\nWy8fPFj68pfP6PmGbWNd/d/vu0dsAQAAEMw111yjQw89tN2kFt2Tv3O65rHPHcddt04aPvyMrS7l\nkt1ORY7sPLZMHgUAAIAeNWLECJmZ7r777tBNAZATDEVOdsxQZAAAIsBQ5L6HochAedUORb7wwlka\nPnzrIccrVszSRRcxFBkAAAAAgCiQ2AIAAAARyl+9aR77HCouNbYAAAAAgG5ylyLLLYOixjbZMTW2\nAABEgBrbvocaW6B7qLFNcMQWAABExazmcx0AQC+jxhYAAETD3bn0wQu6Jn/1pvnrcx4f664isQUA\nAAAARI0a22TH1NgCAADUEGpsgepQY5vgiC0AAAAA1Biz5ILqkNgCAAAAEaLus+/H5Ty21WNWZAAA\nAACoIZddNktSMoz4wgtntS4fPFj68pfjG17cG0hsAQAAgAhNmDAhV3FDxu7tuOvWtUbW8OFbYq9Y\nMavc6ttEyOe5KxiKDAAAAACIGoktAAAAEKH81Zvmsc+h4lJjCwAAAADopsZGqVAI3Yp4cMQWAAAA\n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\n2aTQbc2rW71pyNjU2FYfiS2AMtZJ+rSkV0l6s6R3SjpJkszsPZIOkbS7u28n6f2S+nOf9TQJuEXS\nre7+t2UCuvtb05dvdPdXuvt3lXxnXSJpl3R6XtKFaTu2kfTPkma5+7ZpO5fkt2mJiyS9QdK73P3p\nYe0F6ShJfylpbyWjfTtK2lbSTpJOkPR1M9tumNvMks29lezHxWa2b9rPj0marGQE91rL/TFB0ock\nHS5pO3d/p5Kk+JPppcgPSvqapFdKeq2kt0k6XtJHc5/fX9JDkraXdHbajvdLOl3SqyW9KOk2Sf+V\ntuFqSeflPv+gpLek+3qepCvMbIfC9u9Xcsx8Ke1P5nIlieXeafzz0n3Qrt9blNiPkvRXkr4jaTtJ\n12rjsbGFpB9KWiCpR9J3JR2jjX+caLu/3f3flYyEX5AexxcruZLhqZJtAhCHlySd4u6vl3SgpE+a\n2V6STpP0Y3ffQ8n/Y6cFbCNqprc3mVAOiS2AIbn7He7+a3df7+7LJM1XkixJycnAKyXtZWYT3L3p\n7o/nPr6zkkts/93dzxxlO/rd/Qfu/oK7PyPpi7l2SNJ6SX9uZlu5+0p3vze3bHNJV0qaJOmv3P2F\nETThH919tbv/MX3/kqT/6+4vu/tCSc9I2nOY27zDzPqVJGIXSfoXSSdKarj7f3niMkl/VHKyJSUJ\n2QXuviLXFmljkryZpA9K+ry7P5v+zL4i6bjcuo+6+9fTn+kL6Ta/7+6L023+QNKz7n6Fu7ukqyTt\nm33Y3a/Ofs7ufpWkByQdkNv+Mne/JP3sZZKmmNn2ZjZF0ixJH3f3Ne6+zt2zm3QN1e+h3OruN6Yx\nr5C0Tzr/QEkT3f2f05/V95Qk7Jl2cd+cLv+kpHdI+pmka939hpLtARAJd3/c3Zekr5+RdJ+S/7+O\nVPJHMaX/Ht16C2HUrd40ZGyeY1t9JLYAhmRme1hyCfBjZrZGyQjfqyQprcG9UNLXJa00s0Z22aaS\nROu9SkbnSteNDtKOrdPtL03b8XNJ25mZufuzSpK5j0t6NG1vPsncTcmI3v9Na1JHongX5KfcfX3u\n/XOSXqHh2dfdJ7v7bu5+ZpqUTZf0f9LLYleZ2SpJU5WMDLdri7TxZkivVpLIL8ste1jJSdpgn38i\n9/qFwvvnleubmR1vZotz7XuD0mMiteGPG+7+XPryFZKmSep39zUt4rfr95QW67ayMvf6OUlbWnIz\n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\nxBYAAACIUP3qTevXZ55jWx6JLQAAAAAgaiS2AAAA49DKlSv11re+Vdtuu61OPfXUUW1r6dKl3all\nYAAAHB9JREFUmjBhgtavX9+h1qET6ldvWr8+N5th4krU2AIAAGAUdt11Vz3xxBPabLPNtM022+iw\nww7ThRdeqG222WZY25k/f7623357Pf3005KkuXPn6qGHHtLll18+Fs0GgKAYsQUAAKgQM9OPfvQj\nrV27VnfccYcWLVqkf/iHfyj9eXfX+vXrtWzZMu21114DtovxpW71piFjU2NbfSS2AAAAFbXTTjtp\n1qxZuueee3TbbbfpoIMOUk9Pj2bMmKGf//znG9abOXOmzjjjDL3lLW/RNttso9mzZ+uyyy7Tl770\nJW277ba65ZZbNtn2hAkT1Gg0tMcee6inp0cnn3zyhmXr16/XZz/7Wb3mNa/R6173Ol1//fUDPrtm\nzRqdcMIJ2mmnnTR16lT9/d//vdavX68XX3xR++67ry688EJJ0ssvv6yDDz54WIk5gERvbzKhHBJb\nAACAisme77p8+XItXLhQU6ZM0RFHHKEzzzxTq1at0j/90z/pmGOO0VNPPbXhM1dccYUuuugiPfPM\nM7r00kv14Q9/WJ/73Of09NNP653vfGfLZ8Zef/31WrRoke666y5dddVVuummmyQllzFff/31WrJk\niRYtWqSrr756wIjvnDlztMUWW+ihhx7S4sWLdfPNN+viiy/WFltsoSuuuEJnnnmm7r//fp1zzjly\nd51++uljvMfqqW71piFj8xzb6iOxBQAAqBB319FHH62enh4dcsghmjlzpqZOnarDDz9cs2bNkiQd\neuih2m+//TaMpJqZ5syZo7322ksTJkzQxIkTN2xrMKeddpq23XZbTZs2TW9/+9t15513SpKuuuoq\nnXLKKdp5553V09OjL3zhCxu2tXLlSi1cuFDnn3++ttpqK73mNa/R3/7t3+rKK6+UJL3+9a/XGWec\noaOOOkrnnXeeLr/8ci6DBjDmuHkUAABAC53KxYbILVvENV1zzTV6xzvesWHeSSedpO9+97u67rrr\nNsxbt27dgHWmTZs27LbtuOOOG15vvfXWeuaZZyRJjz322IDt7bLLLhteL1u2TC+99JKmTJmyYd76\n9esHrHP88cfr9NNP1/ve9z697nWvG3a7UE7d6k1Dxg7X51Bx46uxJbEFAABoYbgJ6VjaZZdddNxx\n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\ni0XxUWmZ/BUa+VKE/LJMq0ettfq55ZcP9rnY9+loZPsbqJrse4DjExg7vb3JhHJIbAFELUtYGdHr\njPwfAPr7N07ZskyrPxxkU5nnhue32ypuXeUT2ezfOif2qK5Vq/jDUxXUrd40ZGyeY1t9XIoMACit\nzklnN+SThCxx4B4GAAAMjRFbAECl9fQMHMUsXg6dvxQyP3+oyySHusy3uHywbRfbM9i2i6Oy+W3m\na5Vbfa5sf4vrlm17u+VlttOqnUOt3+5y1uLPudXr4jHRqr2t2tbq+Gl1PA21X8rsj3bbaNXGdv0b\nbH8NdUwM1p5WP5/B2lhsX3asZuULZY69wfrEZc0jU7d605Cxw/U5VFxqbAEA6Kj+/o0jmfkRzVY1\nuNkoZ35Zu0Qr0y65WbVq6G1LG0/Gi/XD2baLJ+z57Ra32WpEPEscshj57ebjtqo5L75vtV+Ky1rt\n06G2U+xftqzYv3zbi+0sbiNTrMnOtls8JoqXbrdKyrLl+Xblt53ve7HtrY6nsv1rVV+eXze/reLy\n/LGZ3wfFfZ3vc6v2FNtb7Hexn/mfe6t6+uL9C9q1qRiz1e9Du/YCwHCQ2AIAKi9L7rI7JOcTwPwN\nr4ojntn7Vify+Zrg4rLss0NtOzvhL9YLF+uNpYHbyfdnKMU68sHqkdutW1wvv1/aXV6eJVPZPh9s\nO8X+ZcuK/SvexK1Yv53fRrG+O3udbbd4TGSfL77PJ2X9/Zu2q93x1OpnUzyeyvavuE6r4yPbVnF5\nJr+9YhsHOxbb3YSt2O9iP/M/91b19K0+06pNxX3d6vehVXtRTv3qTevY51BxqbEFAKDjhroRVZll\nw9lGmVri4dQbD2fd4SS9IzVUe1r9QWC42xluPXbZ9dutV/ZnOFScThxPwzXc/TiS43U4x9NI+jac\nNpX9/cpfWQHUUaMhNZuhWxEPElsAACqkCjfoqkIb0Fn8TMen+tWb1q/PPMe2PC5FBgAAAABEjcQW\nAAAAiFD96k3r1+dmM0xcKb4aWxJbAAAAAEDUSGwBAACACNWt3jRkbGpsq4/EFgAAAAAqprc3mVAO\niS0AAAAQobrVm4aMzXNsq4/H/QAAAAAY97785flavXrgvNtuu0PTp4dpDzqLxBYAAACIUN3qTUcb\ne/Vqafr0EwfM6+v7+JjHHZ1QcamxBQAAAACgq7qW2JrZLDO738weMLPPtVg+08zWmNnidDqjW20D\n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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7f9affccd990>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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\nSGeZepuYsERijWp9WKMK31ijCgAAsGewRjW7pbpGlam/AAAAAIBIoVBFVsqGdRIID/kFn8gv+EJu\nwSfyC6miUAUAAAAARAqFKrISNzSHT+QXfCK/4Au5BZ+yJb8OP/xwvfXWW016bU5Ojj7//PNmjqj5\n3HHHHbrqqqskScXFxcrJyVF5ebm343HVXwAAAABoBh9++GHYIaQsHo9r2LBhWrJkSYP73XjjjXso\nogBnVJGVWCcBn8gv+ER+wRdyCz5len7t2LEj7BC82rlz5x4/JoUqAAAAgKxVUFCgO++8U4cddpg6\ndeqkyy+/XF9++aUk6YUXXlBhYaHy8/N1wgknaO7cudVe95vf/Eb9+vVT+/bttXPnThUUFOj111+X\nJH355ZcaOXKkevTooR49emjUqFHatm1b5et/+9vfqnv37urZs6ceeuihRsW6detW/ehHP1JBQYHy\n8vJ04oknqqysTJL03HPP6bDDDlN+fr4GDRqkTz75pFqs48eP15FHHqm8vDwNGTJEX375pTZv3qyz\nzjpLy5cvV/v27dWhQwetWLFCY8eO1Xe+8x0NGzZMHTt21IQJEzR27FgNGzasWjwPPvigevTooe7d\nu2v8+PFN+wLqQaGKrJQt6yQQDvILPpFf8IXcgk9Rz69JkybplVde0Weffab58+dr3Lhxmj17tq64\n4go98MADWrt2ra6++mqde+652r59e+XrJk+erBdffFGlpaVq0aKFnHNyLrgl6G233aaZM2dqzpw5\nmjNnjmbOnKlx48ZJkl566SWNHz9er732mubPn6/XXnutUXH++Mc/1uzZszVjxgytXbtWv/3tb5WT\nk6P58+froosu0j333KOSkhKdffbZOueccyrP9Drn9Pe//10vv/yyFi5cqP/+97+aMGGC2rZtq5de\nekndu3fXxo0btWHDBnXr1k1SUPhecMEFWr9+vS6++OLK95UsHo9rwYIFeuWVV/TrX/+6skhvDhSq\nAAAAAMLnXPM8Uj6s04gRI9SjRw/l5+frl7/8pZ544gk98MADuvrqq3XMMcfIOadLL71Ue++9t955\n553K11133XXq0aOH9t5771rjTpo0STfffLM6d+6szp07a8yYMXr00UclSU899ZQuv/xyHXrooWrT\npo1uueWWXcZZXl6uhx9+WH/4wx/UrVs35eTk6Nhjj1WrVq305JNPavDgwTrllFPUokUL/fjHP9bW\nrVs1ffr0ytdfd9112m+//ZSfn69zzjlHRUVFkiQzq/N4xx9/vM4991xJUm5ubp37jRkzRq1bt9bh\nhx+u733ve3riiSd2+T4ai0IVWSnT10kgXOQXfCK/4Au5BZ8alV9mzfNogv3337/yea9evbR8+XIt\nWrRI48ePV35+fuVj6dKlWr58eZ2vq2n58uXq3bt3rXElacWKFbWOuSslJSUqKytT3759a21bsWJF\ntTGcc9p///21bNmyyr799tuv8nnr1q21adOmBo/Xs2fPXcZU1+fWXChUAQAAAGS1xYsXV3vevXt3\n9erVS7/85S+1bt26ysemTZv03e9+t3LfuqbDJnTv3l3FxcXVxu3Ro4ckqVu3brWOuSudO3dWbm6u\nFixYUOexFi1aVNk2My1ZsqTyeA2p6z0kT2FuaL+a76Exx2ssClVkpaivk0B6I7/gE/kFX8gt+BTl\n/DIz/fnPf9ayZcu0du1a3XbbbRoyZIiuvPJK3XfffZo5c6bMTJs3b9bUqVN3eSYyYejQoRo3bpxK\nSkpUUlKiW2+9VZdccokk6cILL9SECRP08ccfa8uWLY2a+puTk6PLL79cN9xwg1asWKGdO3dqxowZ\n2rZtmy688EJNnTpVb7zxhrZv367x48crNzdXxx9//C7H7dq1q9asWaMNGzZU+0zq+pxqGjdunLZu\n3ap58+ZpwoQJ1Yr43UWhCgAAACBrOed00UUX6fTTT1ffvn110EEH6aabbtLRRx+tBx54QCNGjFCn\nTp100EEH6ZFHHmnwLGqym266Sf3791e/fv3Ur18/9e/fXzfddJMk6cwzz9TIkSN18skn6+CDD9Yp\np5zSqHF/97vf6YgjjtAxxxyjffbZRzfeeKPKy8t18MEH67HHHtO1116rLl26aOrUqXr++efVsmXL\net9z4niHHHKIhg4dqgMOOECdOnXSihUr6j2jmtznnNPAgQN14IEH6tRTT9VPfvITnXrqqY36bBrD\n1bd4Ngqccxbl+JC+4vG4YrGYcm7M12fXfa4+3fLDDgkZJJFfgA/kF3wht+BTPB7XoEGD6r1wT5j6\n9OmjBx98UCeffHLYoWQ051yd339Ff60qnTOqAAAAAIBIoVBFVuI3xvCJ/IJP5Bd8IbfgE/nVeIcd\ndpjat29f69Gct35JB3VPWgYAAACALLBw4cKwQ6hm3rx5YYcQCZxRRVbiXnHwifyCT+QXfCG34BP5\n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\nSUVORK5CYII=\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7f9aff0a02d0>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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\nJI8FTuXBRe1VwP8Abq+qhfgs3fcBZyd5wRhTkK8G7gMeU1XX7ssB/Z38TUmeCawf1V+StDJZ1EqS\n9ktVfSDJzwG/k2Q1cBlwO91TaL+Drvh7Gd1Th+fyNuB/JvlluinBz2KoMEvyArpi5R3ADN001FcC\nXwD+ue82e7f255NcBXytqj4IvBX4UeDaJK+nKwYPp3v40/cAL6qqr8z38yV5Et1TeN9G95TiQ+me\nWLwb+Lu9vjn776eBv+mfHvwXdHc8j6F7wvBtVfW7VbUrye8Cr0nyRbo1wk8HfmyO822ie/Lzn/fH\nHE13J/gzPPgBUr9LVyR/oO+3je69fhzwf1XVuB+X8+fAK4Ark/wm3TrYI+nW2v7eXH9kqKpbk1wM\n/GGSU+keCHY3cCLwXOBPq2o6yUa6f/7/Qjfl+hS6B1O9b8wxSpJWCItaSdJ+q6o3JLme7mm8v01X\nNH0R+D90xejgXbrh6ba/Sfdk45+hK7TeDfwwXYE7axvwZbqP4Tm2P/f1wPOq6pN9n3fRrbc9lwc+\ns/bQfor0d/bnXk/3UUBfoluz+W4emM4719igm+Z7G91HzJxAV2D9O/CCqvrQ3t6X/VVV703ybOA1\ndB9X9BC6acH/zIOfunwBXVH643Tv37/QFeofHTrfx5N8P93H4rwD2Er3z+o1DPzMVfWFJN9O9/79\nEt3HJO0CbmLPJxaP/Iig/r0/g+7jgdb33++ke4rxnUPHDY73NUk+Rlfc/3S//3a66dizU6D/ke6P\nFT8MPJxuvfVb+mtIkg5CqZrvIwIlSdIkSXIf3Ufi/NpSj0WSpMXi048lSZIkSRPLolaSJEmSNLGc\nfixJkiRJmljeqZUkSZIkTSyLWkmSJEnSxLKolSRJkiRNLItaSZIkSdLEsqiVJEmSJE0si1pJkiRJ\n0sSyqJUkSZIkTSyLWkmSJEnSxLKolSRJkiRNLItaSZIkSdLEsqiVJGk/JZlJ8h3z7HtWkpsaXvu+\nJN/S6vySJE0Ki1pJkvZf9V977qj6QFU9bn9PnOTYJH+W5JNJvpDkY0kuSPLQ/R7tnte4LMmvL9T5\nJElaCha1kiQtM0mOAv4ZOAJ4ZlU9DHge8HBg2dydTXLoUo9BkiSLWkmSDszpST6a5K4klyY5AiDJ\n2iS3z3ZK8pQkH+rvum5K8r/3cpf054DPV9UPVdUnAKpqe1X9bFV9ZLhzkukk5wy01yX5QP86SX43\nyc4kn0/y70mekGQ98H8Dv5jki0n+pu9/XJK/SvLpJLcm+R8D570gyV8meUuSzwMvP+B3T5KkA2RR\nK0nS/gtdYXgG8FjgFOB/7tEpORx4B3Ap8E3AlcCLmGfqMvBc4O1jjGPeadD92J4FnFxVDwd+ALiz\nqjYCbwUurqojq+qsJIcA7wQ+BBwHfAfw6iRnDJzvhcBf9Oe6YowxSpLUhEWtJEn7r4A/rKodVfU5\n4LXAy+bo90zg0Kr6g6r6WlW9A7h+L+c9CvjUAo1xN3Ak8Pgkh1TV1qq6Y2B/Bl4/HTi6qn6jqu6t\nqv8A/hR46UCff6qqvwWoqrsXaIySJO23w5Z6AJIkTbjbB15/gu4O57DjgB1zHJc5+gLcOc95xlZV\nf5fkD4E/Ah6T5O3AL1TVF+fo/hjguCSfG9h2KPAPA+3tCzEuSZIWindqJUk6MI8eev3JOfp8Cjh+\njuPmmzJ8DfDiJPMVvcO+BHzDQPtRgzv7O8RPA1bTTZH+f2Z3DZ3nE8B/VNU3DXw9rKpeMNB/vjFL\nkrQkLGolSdp/AX46yfH9E4tfA7xtjn7/DHwtyc8kOSzJWXRTfefzO8DDgMuTPBqgv8brkzxxjv5b\ngO9N8pAkJwHn0BefSZ6W5BlJvg74MnA38LX+uJ08+GnK1wNfTPKL/bkOTfLEJE8b+HklSVpWLGol\nSdp/RfewpauBjwM3A78xtJ+q+irwvXTF5ueAHwTeBXx1zpN263O/nW497HVJvkB393YXcMvguXu/\n259rJ/Am4M8H9j0M2AjcBcwAnwV+q9/3Z8DqJJ9L8vaqug94AbAGuBX4TH/swwau6Z1aSdKykqo2\n/21Kcinw3cCnq+q0ftuv0z01sejWC62rqtv7fecBP0b31+NXVtXV/fanApcBXw+8p6pe1WTAkiQt\noiTXAZdU1eVLPRZJkiZZyzu1bwLOHNr2uqp6clWtAf4aOB8gyWrgbLq1PmcClwysI3ojcE5VnQyc\nnGT4nJIkLXtJnp3kUf3045cDTwSuWupxSZI06ZoVtVX1AbopVoPbBp+0+I10U6AAzgKurKrdVTVD\nN7XqGUmOBY6sqtmPPXgz3ef6SZI0aU6lW/v6OeBnge+vqp1LOyRJkibfon+kT5LXAj8MfAU4vd98\nHPAvA9220z0lcjcP/uiAHez59EhJkpa9qvoT4E+WehySJK00i17UVtVrgNck2QD8HvCjC3HeJD64\nQpIkSZJWsKra40n8i17UDrgCeE//egdw4sC+E+ju0O7oXw9uH/7w+vu1euiVDm4XXHABF1xwwVIP\nQyuU+VIrZkstmS+1ZL40n/k+vn1RP9InyckDzbOAD/Wv/xZ4aZLDk3wzcDJwfVXdAXyh/3y90E1b\n/uvFHLM0MzOz1EPQCma+1IrZUkvmSy2ZL42r2Z3aJFcCzwGOTnI73ZOOvyvJqXQf2/Nx4KcAqurG\nJJuAG4F7gXPrgduu59J9pM9D6D7SxydFSpIkSZKAhp9Tu9iS1Er5WbS8TE9Ps3bt2qUehlYo86VW\nzJZaMl9qyXxpPknmXFNrUStJkiRJWvbmK2oXdU2tNImmp6eXeghawcyXWjFbasl8qSXzpXFZ1EqS\nJEmSJpbTjyVJkiRJy57TjyVJkiRJK45FrTSC6zrUkvlSK2ZLLZkvtWS+NC6LWkmSJEnSxHJNrSRJ\nkiRp2XNNrSRJkiRpxbGolUZwXYdaMl9qxWypJfOllsyXxmVRK0mSJEmaWK6plSRJkiQte66plSRJ\nkiStOBa10giu61BL5kutmC21ZL7UkvnSuCxqJUmSJEkTyzW1kiRJkqRlb9HX1Ca5NMnOJDcMbPut\nJB9L8uEkb0/y8IF95yW5OclNSc4Y2P7UJDf0+97QarySJEmSpMnTcvrxm4Azh7ZdDTyhqp4MbAPO\nA0iyGjgbWN0fc0mS2Qr8jcA5VXUycHKS4XNKTbmuQy2ZL7VittSS+VJL5kvjalbUVtUHgM8Nbdtc\nVff1zeuAE/rXZwFXVtXuqpoBbgGekeRY4Miqur7v92bgRa3GLEmSJEmaLEv5oKgfA97Tvz4O2D6w\nbztw/Bzbd/TbpUWzdu3apR6CVjDzpVbMlloyX2rJfGlcS1LUJnkN8NWqumIpri9JkiRJWhkOW+wL\nJlkHfBfwHQObdwAnDrRPoLtDu4MHpijPbt8x37nXrVvHqlWrAJiammLNmjX3/6Vndm6+bdvjtgfX\ndSyH8dheWW3zZbtVe3bbchmP7ZXVnt22XMZje5Hbt90G99zD9NatXfvUU7v9W7fC130day+6qGtv\n2AC7d3f7jziC6cc8Bq66irXf8i0P9B8+vrf21FPn3b/P7VtvhTPPXPr3y/Z+t7ds2cKuXbsAmJmZ\nYT5NP9InySrgnVV1Wt8+E3g98Jyq+uxAv9XAFcDpdNOLrwFOqqpKch3wSuB64N3A71fVVXNcy4/0\nURPT09P3/8slLTTzpVbMlloyXwe5jRth/frR++Z6vbdjewuWr324libLfB/p0+xObZIrgecARye5\nHTif7mnHhwOb+4cb/3NVnVtVNybZBNwI3AucO1ChngtcBjwEeM9cBa3Ukv/RVkvmS62YLbVkvtSS\n+dK4mhW1VfWyOTZfupf+FwIXzrH9X4HTFnBokiRJkqQV4pClHoC03M3O75daMF9qxWypJfOllsyX\nxmVRK0mSJEmaWBa10giu61BL5kutmC21ZL7UkvnSuCxqJUmSJEkTy6JWGsF1HWrJfKkVs6WWzJda\nMl8al0WtJEmSJGliWdRKI7iuQy2ZL7VittSS+VJL5kvjsqiVJEmSJE0si1ppBNd1qCXzpVbMlloy\nX2rJfGlcFrWSJEmSpIllUSuN4LoOtWS+1IrZUkvmSy2ZL43LolaSJEmSNLEsaqURXNehlsyXWjFb\nasl8qSXzpXFZ1EqSJEmSJpZFrTSC6zrUkvlSK2ZLLZkvtWS+NC6LWkmSJEnSxGpW1Ca5NMnOJDcM\nbPuBJB9N8rUkTxnqf16Sm5PclOSMge1PTXJDv+8NrcYrzcd1HWrJfKkVs6WWzJdaMl8aV8s7tW8C\nzhzadgPwYuAfBjcmWQ2cDazuj7kkSfrdbwTOqaqTgZOTDJ9TkiRJknSQalbUVtUHgM8NbbupqrbN\n0f0s4Mqq2l1VM8AtwDOSHAscWVXX9/3eDLyo1ZilubiuQy2ZL7VittSS+VJL5kvjWi5rao8Dtg+0\ntwPHz7F9R79dkiRJkqRlU9RKy5brOtSS+VIrZkstmS+1ZL40rsOWegC9HcCJA+0T6O7Q7uhfD27f\nMd9J1q1bx6pVqwCYmppizZo1909fmP2Xw7Zt27Zt2z4Y2rOWy3hsr6z2rOUyHtuL3Ib592/d+sD+\nrVthenr+/a3zNdf1F+Lnt71o7S1btrBr1y4AZmZmmE+qat6dByrJKuCdVXXa0Pb3A79QVf/at1cD\nVwCn000vvgY4qaoqyXXAK4HrgXcDv19VV81xrWr5s0iSJEkCNm6E9etH75vr9d6OXcxxaiIloaoy\nvL3ZndokVwLPAY5OcjtwPnAX8AfA0cC7k3yoqp5fVTcm2QTcCNwLnDtQoZ4LXAY8BHjPXAWtJEmS\nJOngdEirE1fVy6rquKo6vKpOrKpLq+qv+9cPqapHVdXzB/pfWFUnVdXjqup9A9v/tapO6/e9stV4\npfkMT4WRFpL5UitmSy2ZL7VkvjSuZkWtJEmSJEmtWdRKI8wuVpdaMF9qxWypJfOllsyXxmVRK0mS\nJEmaWBa10giu61BL5kutmC21ZL7UkvnSuCxqJUmSJEkTy6JWGsF1HWrJfKkVs6WWzJdaMl8al0Wt\nJEmSJGliWdRKI7iuQy2ZL7VittSS+VJL5kvjsqiVJEmSJE0si1ppBNd1qCXzpVbMlloyX2rJfGlc\nFrWSJEmSpIllUSuN4LoOtWS+1IrZUkvmSy2ZL43LolaSJEmSNLEsaqURXNehlsyXWjFbasl8qSXz\npXFZ1EqSJEmSJpZFrTSC6zrUkvlSK2ZLLZkvtWS+NC6LWkmSJEnSxGpW1Ca5NMnOJDcMbDsqyeYk\n25JcnWRqYN95SW5OclOSMwa2PzXJDf2+N7QarzQf13WoJfOlVsyWWjJfasl8aVwt79S+CThzaNsG\nYHNVnQJc27dJsho4G1jdH3NJkvTHvBE4p6pOBk5OMnxOSZIkSdJBqllRW1UfAD43tPmFwOX968uB\nF/WvzwKurKrdVTUD3AI8I8mxwJFVdX3f780Dx0iLwnUdasl8qRWzpZbMl1oyXxrXYq+pPaaqdvav\ndwLH9K+PA7YP9NsOHD/H9h39dkmSJEmSOGypLlxVlaQW8pzr1q1j1apVAExNTbFmzZr75+TP/sXH\ntu1x22vXrl1W47G9strmy7Zt27ZtT1wb5t+/desD+7duhenpbv8RRzC9YQPs3r334xeyPXj9xbie\n7QVvb9myhV27dgEwMzPDfFK1oHXlg0+erALeWVWn9e2bgLVVdUc/tfj9VfW4JBsAquqivt9VwPnA\nbX2fx/fbXwY8p6p+co5rVcufRZIkSRKwcSOsXz9633C/jRu77/Mdu9D2Nk5NpCRUVYa3H7LI4/hb\n4OX965cDfz2w/aVJDk/yzcDJwPVVdQfwhSTP6B8c9cMDx0iLYvavRlIL5kutmC21ZL7UkvnSuJpN\nP05yJfAc4OgktwO/AlwEbEpyDjADvASgqm5Msgm4EbgXOHfgtuu5wGXAQ4D3VNVVrcYsSZIkSZos\nzYraqnrZPLueO0//C4EL59j+r8BpCzg0aSyz8/qlFsyXWjFbasl8qSXzpXEt9vRjSZIkSZIWjEWt\nNILrOtSS+VIrZkstmS+1ZL40LotaSZIkSdLEsqiVRnBdh1oyX2rFbKkl86WWzJfGZVErSZIkSZpY\n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\n9b6lGLMOXsNTYaSFZL7UitlSS+ZLLZkvjWtJilpJkiRJkhaCRa00wuxidakF86VWzJZaMl9qyXxp\nXBa1kiRpn2PDAAAgAElEQVRJkqSJZVErjeC6DrVkvtSK2VJL5kstmS+Ny6JWkiRJkjSxLGqlEVzX\noZbMl1oxW2rJfKkl86VxWdRKkiRJkiaWRa00gus61JL5UitmSy2ZL7VkvjQui1pJkiRJ0sSyqJVG\ncF2HWjJfasVsqSXzpZbMl8ZlUStJkiRJmlgWtdIIrutQS+ZLrZgttWS+1JL50rgsaiVJkiRJE8ui\nVhrBdR1qyXypFbOllsyXWjJfGpdFrSRJkiRpYlnUSiO4rkMtmS+1YrbUkvlSS+ZL47KolSRJkiRN\nrEUvapOcmuRDA1+fT/LKJEcl2ZxkW5Krk0wNHHNekpuT3JTkjMUesw5urutQS+ZLrZgttWS+1JL5\n0rgWvaitqq1V9a1V9a3AU4EvA+8ANgCbq+oU4Nq+TZLVwNnAauBM4JIk3mGWJEmSJC359OPnArdU\n1e3AC4HL++2XAy/qX58FXFlVu6tqBrgFOH2xB6qDl+s61JL5UitmSy2ZL7VkvjSupS5qXwpc2b8+\npqp29q93Asf0r48Dtg8csx04fnGGJ0mSJElazpasqE1yOPA9wF8M76uqAmovh+9tn7SgXNehlsyX\nWjFbasl8qSXzpXEdtoTXfj7wr1X1mb69M8mjquqOJMcCn+637wBOHDjuhH7bHtatW8eqVasAmJqa\nYs2aNff/SzE7jcG2bdu2bdu2bdu2bdsH0Ib592/d+sD+rVthevqB/Vu3jj5+IdvD118u75/tfW5v\n2bKFXbt2ATAzM8N80t0UXXxJ3ga8t6ou79uvA+6sqouTbACmqmpD/6CoK+jW0R4PXAOcVEMDTzK8\nSVoQ0wO/DKWFZr7UitlSS+brILdxI6xfP3rfcL+NG7vv8x3bW7B87W2cmkhJqKoMb1+SO7VJvoHu\nIVGvGNh8EbApyTnADPASgKq6Mckm4EbgXuBcq1dJkiRJEixRUVtVXwKOHtp2F12hO1f/C4ELF2Fo\n0h78S7RaMl9qxWypJfOllsyXxnXIUg9AkiRJkqT9ZVErjTC7aF1qwXypFbOllsyXWjJfGpdFrSRJ\nkiRpYlnUSiO4rkMtmS+1YrbUkvlSS+ZL47KolSRJkiRNLItaaQTXdagl86VWzJZaMl9qyXxpXBa1\nkiRJkqSJZVErjeC6DrVkvtSK2VJL5kstmS+Ny6JWkiRJkjSxLGqlEVzXoZbMl1oxW2rJfKkl86Vx\nWdRKkiRJkiaWRa00gus61JL5UitmSy2ZL7VkvjQui1pJkiRJ0sRaWUVtsufXOH3tb/85+s+5rmOC\nxm//5d1/epmNx/4rp//9v7uWyXjsv7L6z7vmcULGb/8D7P8TP7Fv/Yf7/cRPdF8jzj+93H5e+y+f\n/vNYWUWtJEmSJOmgcthSD2BBVbXpa/+Duv+c6zomaPz2X9791zY+v/0P3v73/+5aJuOx/8rqv7bx\n+e2/zPtv3Ajr14/u/8d//OB+Gzfu0/nXjjse+x88/ee5W7skd2qTTCX5yyQfS3JjkmckOSrJ5iTb\nklydZGqg/3lJbk5yU5IzlmLMkiRJkqTlZ6mmH78BeE9VPR54EnATsAHYXFWnANf2bZKsBs4GVgNn\nApckcdq0Fo2flaaWzJdaMVtqyXypJfOlcS16cZjk4cCzqupSgKq6t6o+D7wQuLzvdjnwov71WcCV\nVbW7qmaAW4DTF3fUkiRJkqTlaCnueH4z8Jkkb0ryb0n+JMk3AMdU1c6+z07gmP71ccD2geO3A8cv\n3nB1sPOz0tSS+VIrZkstmS+1ZL40rqUoag8DngJcUlVPAb5EP9V4VlUVsLeVxGOuMpYkSZIkrURL\n8fTj7cD2qvo/ffsvgfOAO5I8qqruSHIs8Ol+/w7gxIHjT+i37WHdunWsWrUKgKmpKdasWXP/X3pm\n5+ZPXHvbtq69dWvXPvVU24vcnn29XMZje2W1zZftVu3ZbctlPLZXVnt223IZj+1Fbj/pSV17rv9/\nvfVW1vZPOZ6+9VaYnn5g/623dv1h/uN7a9euPfD/n771Vvj5n1/692u5tE85Zbz3bxm0t2zZwq5d\nuwCYmZlhPqlxH628AJL8A/DjVbUtyQXAQ/tdd1bVxUk2AFNVtaF/UNQVdOtojweuAU6qoYEnGd4k\nLYjpgV/G0kIzX2rFbKkl86WWzJfmk4Sq2uNzfZaqqH0y8KfA4cDHgR8FDgU2AY8GZoCXVNWuvv8v\nAz8G3Au8qqreN8c5LWolSZIkaYVaVkVtCxa1kiRJkrRyzVfU+nmv0gh+VppaMl9qxWypJfOllsyX\nxmVRK0mSJEmaWE4/liRJkiQte04/liRJkiStOBa10giu61BL5kutmC21ZL7UkvnSuCxqJUmSJEkT\nyzW1kiRJkqRlzzW1kiRJkqQVx6JWGsF1HWrJfKkVs6WWzJdaMl8al0WtJEmSJGliuaZWkiRJkrTs\nuaZWkiRJkrTiWNRKI7iuQy2ZL7VittSS+VJL5kvjsqiVJEmSJE0s19RKkiRJkpY919RKkiRJklac\nJSlqk8wk+fckH0pyfb/tqCSbk2xLcnWSqYH+5yW5OclNSc5YijHr4OW6DrVkvtSK2VJL5kstmS+N\na6nu1Bawtqq+tapO77dtADZX1SnAtX2bJKuBs4HVwJnAJUm8w6xFs2XLlqUeglYw86VWzJZaMl9q\nyXxpXEtZHA7PhX4hcHn/+nLgRf3rs4Arq2p3Vc0AtwCnIy2SXbt2LfUQtIKZL7VittSS+VJL5kvj\nWso7tdck+WCSV/Tbjqmqnf3rncAx/evjgO0Dx24Hjl+cYUqSJEmSlrPDlui6/7WqPpXkvwCbk9w0\nuLOqKsneHmXsY461aGZmZpZ6CFrBzJdaMVtqyXypJfOlcS35R/okOR/4T+AVdOts70hyLPD+qnpc\nkg0AVXVR3/8q4Pyqum7oPBa6kiRJkrSCzfWRPote1CZ5KHBoVX0xyTcAVwO/CjwXuLOqLu4L2amq\n2tA/KOoKunW0xwPXACf5obSSJEmSpKWYfnwM8I4ks9d/a1VdneSDwKYk5wAzwEsAqurGJJuAG4F7\ngXMtaCVJkiRJsAymH0uSJEmStL/8vFdJkiRJ0sSyqJUkSZIkTSyLWkmSJEnSxLKolSRJkiRNLIta\nSZIkSdLEsqiVJEmSJE0si1pJkiRJ0sSyqJUkSZIkTSyLWkmSJEnSxLKolSRJkiRNLItaSZIkSdLE\nsqiVJEmSJE0si1pJkiRJ0sSyqJUkSZIkTSyLWkmSJEnSxLKolSRJkiRNLItaSZIkSdLEsqiVJEmS\nJE0si1pJkiRJ0sSyqJUkSZIkTSyLWkmSJEnSxLKolSRJkiRNLItaSZJWqCQzSb5jqcchSVJLFrWS\nJA2YrxBMsjbJ7f3rjyb5Yv91b5KvDLTvG3j91ST3DLQvGTzPHNe4bKj/F5N8aC9jfViS30tyW9/3\nliS/m+QRfZfqvw7k/bggyVsO5BySJLVkUStJ0oONLASr6glVdWRVHQl8APjp2XZVHTKw763AxQP7\nzt2Haw/2P7KqvnWujkkOB64FHg98Z3+9bwM+Czx9rJ+4oSSHLvUYJEkrm0WtJEkHLvu570D8CHAi\n8OKqugmgqj5TVa+tqqv2GER3F/jXB9oPumOc5JeSbE/yhSQ3JfnvSc4EzgPOHrxrnOThSf4sySf7\nY349ySH9vnVJ/r8kv5Pks8D5jX5+SZIAOGypByBJ0gpwQFN8h+xrEfxc4L1V9eV97D/vHegkpwI/\nDTytqu5I8mjgsKq6NcmFwGOr6kcGDrkMuAN4LPCNwLuA24GN/f7TgSuARwKH7+P4JEnaL96plSRp\n+QjwC0k+N/D1pnn6HgV8aj/OP5evAUcAT0jydVX1iaq6deCY+49LcgzwfOBnq+orVfUZ4PeAlw6c\n75NV9UdVdV9V3T3mGCVJGot3aiVJWj4K+K2q+pV96HsncNyCXLTqliSvBi6gK2zfB/xcVc1VND8G\n+DrgU8n9te4hwCcG+sz5ICxJklrwTq0kSZPpGuA7kzx0H/t/CRjs+6jBnVV1ZVU9i65oLeDi2V1D\n57kduAd4RFV9U//18Ko6bfB0+/pDSJJ0oCxqJUna0+FJvn7ga9QTfOeb1jvv+tgkRwxeY6D/vq6p\nfQtdgflXSU5NckiSRyT55STPn6P/FuC7knxTkkcBrx4Yyyn9g6GOoCtY76abkgzd2tlV6W/L9ndv\nrwZ+J8mR/XUfm+TZ+zhuSZIWlEWtJEl7eg/w5YGv89n7R/3sbfvwvgKOB74ycP4vJXlsv+8Xhz6n\n9tNznrjqq3QPi7oJ2Ax8HriObq3tv8xxyFuADwMzwFXA2wbGdgTwm8Bn6NbpHk331GOAv+i/35nk\ng/3rH6F7ANSNwF19n9k7vwf82biSJI0jVf53R5IkSZI0mbxTK0mSJEmaWBa1kiRJkqSJZVErSZIk\nSZpYFrWSJEmSpIl12FIPYKEk8YlXkiRJkrSCVdUeH323YopaAJ/krBYuuOACLrjggqUehlYo86VW\nzJZaMl9qyXxpPv1Hpu/B6cfSCDMzM0s9BK1g5kutmC21ZL7UkvnSuCxqJUmSJEkTy6JWGmHdunVL\nPQStYOZLrZgttWS+1JL50riyUtahJqmV8rNIkiRJkh4syZwPivJOrTTC9PT0Ug9BK5j5UitmSy2Z\nL7VkvjQui1pJkiRJ0sRy+rEkSZIkadlz+rEkSZIkacVpVtQmuTTJziQ3DGw7KsnmJNuSXJ1kamDf\neUluTnJTkjMGtj81yQ39vje0Gq80H9d1qCXzpVbMlloyX2rJfGlcLe/Uvgk4c2jbBmBzVZ0CXNu3\nSbIaOBtY3R9zSZLZ28pvBM6pqpOBk5MMn1OSJEmSdJBquqY2ySrgnVV1Wt++CXhOVe1M8ihguqoe\nl+Q84L6qurjvdxVwAXAb8HdV9fh++0uBtVX1k3NcyzW1kiRJkrRCLZc1tcdU1c7+9U7gmP71ccD2\ngX7bgePn2L6j3y5JkiRJEoct1YWrqpIs6K3VdevWsWrVKgCmpqZYs2YNa9euBR6Ym2/b9rjtwXUd\ny2E8tldW23zZbtWe3bZcxmN7ZbVnty2X8dheWe3ZbctlPLaXrr1lyxZ27doFwMzMDPNZiunHa6vq\njiTHAu/vpx9vAKiqi/p+VwHn000/fv/A9OOX0U1fdvqxFs309PT9/3JJC818qRWzpZbMl1oyX5rP\nfNOPF7uofR1wZ1Vd3BeyU1W1oX9Q1BXA6XTTi68BTurv5l4HvBK4Hng38PtVddUc17KolSRJkqQV\nar6ittn04yRXAs8Bjk5yO/ArwEXApiTnADPASwCq6sYkm4AbgXuBcwcq1HOBy4CHAO+Zq6CVJEmS\nJB2cmt6pXUzeqVUrToFRS+ZLrZgttWS+1JL50nyWy9OPJUmSJElaMN6plSRJkiQte96plSRJkiSt\nOBa10giDn5kmLTTzpVbMlloyX2rJfGlcFrWSJEmSpInlmlpJkiRJ0rLnmlpJkiRJ0opjUSuN4LoO\ntWS+1IrZUkvmSy2ZL43LolaSJEmSNLFcUytJkiRJWvbmW1N72FIMRlqJLr8c7rlndL8jjoCXv7z9\neCRp9veSv3ckLbR9/f+efXXEEd33Azmnv+sOXha10gjT09OsXbt2ZL977oH162Hjxu77fDZuXLix\nafLta76kcU1PT3PPPWvv/70kLSR/d2m2+Bz+f55R/x80X7/Z31Pr13f52rZt7ZznH3VOHZxcUytJ\nkiRJmlgWtdII/iVaLZkvtWK21JL5UkvmS+OyqJUkSZIkTSyLWmkEPytNLZkvtWK21JL5UkvmS+Oy\nqJUkSZIkTSyLWmkE13WoJfOlVsyWWjJfasl8aVwWtZIkSZKkibUkRW2SVyW5IclHkryq33ZUks1J\ntiW5OsnUQP/zktyc5KYkZyzFmHXwcl2HWjJfasVsqSXzpZbMl8a16EVtkicCPw48HXgy8IIkjwU2\nAJur6hTg2r5NktXA2cBq4EzgkiTeYZYkSZIkLcmd2scB11XV3VX1NeDvge8DXghc3ve5HHhR//os\n4Mqq2l1VM8AtwOmLO2QdzFzXoZbMl1oxW2rJfKkl86VxLUVR+xHgWf1044cC3wWcABxTVTv7PjuB\nY/rXxwHbB47fDhy/WIOVJEmSJC1fi17UVtVNwMXA1cB7gS3A14b6FFB7O02zAUpDXNehlsyXWjFb\nasl8qSXzpXEdthQXrapLgUsBkryW7u7rziSPqqo7khwLfLrvvgM4ceDwE/pte1i3bh2rVq0CYGpq\nijVr1tw/fWH2Xw7btlu1t24FWD7jsW3b9sHdnjXt7yfbDdqzlst4bC9Ne+vWaaanH7z/QH7fzJ5v\n1lznH3c8i/l+2F749pYtW9i1axcAMzMzzCfdTdHFleSRVfXpJI8G3gc8E3gNcGdVXZxkAzBVVRv6\nB0VdQbeO9njgGuCkGhp4kuFN0qLauBHWr3/g+6h+ktTavv5ekqRxbdzYfR/+3bKvv2+G+w2fb77z\nj3NOrTxJqKoMb1+SO7XAXyZ5BLAbOLeqPp/kImBTknOAGeAlAFV1Y5JNwI3AvX1/q1dJkiRJEocs\nxUWr6tlV9YSqWlNV7++33VVVz62qU6rqjKraNdD/wqo6qaoeV1XvW4ox6+A1OxVCasF8qRWzpZbM\nl1oyXxrXkhS1kiRJkiQtBItaaYTZxepSC+ZLrZgttWS+1JL50rgsaiVJkiRJE8uiVhrBdR1qyXyp\nFbOllsyXWjJfGpdFrSRJkiRpYlnUSiO4rkMtmS+1YrbUkvlSS+ZL47KolSRJkiRNLItaaQTXdagl\n86VWzJZaMl9qyXxpXBa1kiRJkqSJZVErjeC6DrVkvtSK2VJL5kstmS+Ny6JWkiRJkjSxLGqlEVzX\noZbMl1oxW2rJfKkl86VxWdRKkiRJkiaWRa00gus61JL5UitmSy2ZL7VkvjQui1pJkiRJ0sSyqJVG\ncF2HWjJfasVsqSXzpZbMl8ZlUStJkiRJmlgWtdIIrutQS+ZLrZgttWS+1JL50rgsaiVJkiRJE8ui\nVhrBdR1qyXypFbOllsyXWjJfGteSFLVJzkvy0SQ3JLkiyRFJjkqyOcm2JFcnmRrqf3OSm5KcsRRj\nliRJkiQtP4te1CZZBbwCeEpVnQYcCrwU2ABsrqpTgGv7NklWA2cDq4EzgUuSeIdZi8Z1HWrJfKkV\ns6WWzJdaMl8a11IUh18AdgMPTXIY8FDgk8ALgcv7PpcDL+pfnwVcWVW7q2oGuAU4fVFHLEmSJEla\nlha9qK2qu4DXA5+gK2Z3VdVm4Jiq2tl32wkc078+Dtg+cIrtwPGLNFzJdR1qynypFbOllsyXWjJf\nGtdSTD9+LPBqYBVdwfqNSX5osE9VFVB7Oc3e9kmSJEmSDhKHLcE1nwb8U1XdCZDk7cC3AXckeVRV\n3ZHkWODTff8dwIkDx5/Qb9vDunXrWLVqFQBTU1OsWbPm/jn5s3/xsW173PbatWv3qf/WrQBLP17b\nk9Xe13zZtr0/7W3buvatt8LGjd3+rVu7/aeeatv2gbW3bVte47G97+0nPWktL3/5gf++2bp1munp\nhfn/oSOOgI997IHzzeZr+PzjjudAfj7bS9/esmULu3btAmBmZob5pLspuniSPBl4K/B04G7gMuB6\n4DHAnVV1cZINwFRVbegfFHUF3Tra44FrgJNqaOBJhjdJi2rjRli//oHvo/pJUmv+vpE0l4X43bBx\nY/d9+Dz7eu596TfuOP2dt/IloaoyvP2QxR5IVX0YeDPwQeDf+80bgYuA5yXZBvz3vk1V3QhsAm4E\n3guca/WqxTT7VyOpBfOlVsyWWjJfasl8aVxLMf2Yqnod8LqhzXcBz52n/4XAha3HJUmSJEmaLIt+\np1aaNLPz+qUWzJdaMVtqyXypJfOlcVnUSpIkSZImlkWtNILrOtSS+VIrZkstmS+1ZL40LotaSZIk\nSdLEsqiVRnBdh1oyX2rFbKkl86WWzJfGZVErSZIkSZpYFrXSCK7rUEvmS62YLbVkvtSS+dK4LGol\nSZIkSRPLolYawXUdasl8qRWzpZbMl1oyXxqXRa0kSZIkaWJZ1EojuK5DLZkvtWK21JL5UkvmS+Oy\nqJUkSZIkTSyLWmkE13WoJfOlVsyWWjJfasl8aVwWtZIkSZKkiWVRK43gug61ZL7UitlSS+ZLLZkv\njcuiVpIkSZI0sUYWtUluTfJTQ9v+//buP8ay867v+PsTb2JwKEzdoPVPMVFdhyyttXaIcYMiBmSs\nEGBttSgOAsGiEEcKkEBVlHX/oNCqbhyFQgTKH5sf7hZiR8Y0FSmYeDdkEiTUFpOd/Np41o4yIuvg\ndep0QggVXddf/rhn7PF4Z+7c9X3mzLn7fkmjOc+5z733O9rPzr3fOec597+3K0naXVzXoZbMl1ox\nW2rJfKkl86VJbedI7RlgIcldSS7s9l3esCZJkiRJkrZlO03t31bVrcDngU8k+Y7GNUm7ius61JL5\nUitmSy2ZL7VkvjSpPdudWFXvSPJJ4AHg4nYlSZIkSZK0Pds5UvsraxtVdQy4Cfitc33CJC9Lcnzd\n19eSvCXJxUmOJjmZ5IEkc+vuc3uSh5M8lOSmc31u6Vy4rkMtmS+1YrbUkvlSS+ZLk9r0SG2SVwAF\nfDnJdRtu/sNzfcKqWgau7Z7jBcCjwIeAQ8DR7ojw27rxoST7gFuBfYzW8h5LcnVVPXWuNUiSJEmS\nZsNWR2p/vft6J/DxdeO1fdNwI/BIVX0JOAAc6fYfAW7ptm8G7qmqM1W1AjwCXD+l55fGcl2HWjJf\nasVsqSXzpZbMlya16ZHaqlpY205yvKq+v8Hzvx64p9veW1Wnu+3TwN5u+zLgf6y7zym8+rIkSZIk\nie2tqW0iyYuAHwV+b+NtVVWMTn3ezFa3SVPlug61ZL7UitlSS+ZLLZkvTWrbVz9u4IeAv6iqr3Tj\n00kuqarHklwKPN7tfxS4ct39ruj2PcfBgweZn58HYG5ujv379z/9n2LtNAbHjluNl5cBdk89jh07\nduzYsWPHZxvDdB5veXmRxcVn3z7N90Nne/xpzne8+8dLS0usrq4CsLKywmYyOih6lhuS9Vc4vhX4\nIJBuXFX1lk0fdRuSfBC4v6qOdON3AE9U1Z1JDgFzVbV2oai7Ga2jvRw4BlxVGwpPsnGXNBWLi4tP\n/+fayuHDcNttz3wfN0+C7edLmtTi4iInTy74+0ZN+Ltr2KbxXuTw4dH3jY+z3cfeat5aviat0/dY\nsy8JVZWN+7c6UvsXjE7zTbe93vPqHpO8mNFFot64bvfbgXuTvAFYAV4HUFUnktwLnACeBN5s9ypJ\nkiRJgq0vFPWfWz1pVX0DeMmGfV9l1Oiebf4dwB2t6pG24l+i1ZL5UisLCwucPNl3FZpV/u5SS+ZL\nk9rqc2o/zDNHajeqqjrQrCpJkiRJkrbhBVvcdgOjCzT9KaPPpX0nz/6sWum88MxFFaTpM19qxWyp\nJfOllsyXJrXVmtpLgR8Efrz7+kPgnqr63E4UJkmSJEnSOJseqa2qJ6vq/qr6KUZHbR8BPp7k53es\nOmkXcF2HWjJfasVsqSXzpZbMlya15efUJvkm4IeB1wPzwLuAD7UvS5IkSZKk8TY9Upvkd4A/A64F\n/l1VvbKq/n1VPbpj1Um7gOs61JL5UitmSy2ZL7VkvjSprY7U/gTwDeCtwFuTZ10EuarqW1sWJkmS\nJEnSOFt9Tu1WV0aWzhuu61BL5kut+Dm1asnfXWrJfGlSNq6SJEmSpMGyqZXGcF2HWjJfasVsqSXz\npZbMlyZlUytJkiRJGiybWmkM13WoJfOlVsyWWjJfasl8aVI2tZIkSZKkwbKplcZwXYdaMl9qxWyp\nJfOllsyXJmVTK0mSJEkaLJtaaQzXdagl86VWzJZaMl9qyXxpUja1kiRJkqTBsqmVxnBdh1oyX2rF\nbKkl86WWzJcmZVMrSZIkSRosm1ppDNd1qCXzpVbMlloyX2rJfGlSvTS1SeaS3Jfk80lOJPmeJBcn\nOZrkZJIHksytm397koeTPJTkpj5qliRJkiTtPn0dqX0X8EdV9XLgGuAh4BBwtKquBj7ajUmyD7gV\n2Ae8Bnh3Eo8wa8e4rkMtmS+1YrbUkvlSS+ZLk9rx5jDJtwGvrqr3A1TVk1X1NeAAcKSbdgS4pdu+\nGbinqs5U1QrwCHD9zlYtSZIkSdqN+jji+VLgK0nuSvLJJO9J8mJgb1Wd7uacBvZ225cBp9bd/xRw\n+c6Vq/Od6zrUkvlSK2ZLLZkvtWS+NKk+mto9wHXAu6vqOuAbdKcar6mqAmqLx9jqNkmSJEnSeWJP\nD895CjhVVX/eje8DbgceS3JJVT2W5FLg8e72R4Er193/im7fcxw8eJD5+XkA5ubm2L9//9N/6Vk7\nN9+x40nH69d1bDV/eRmg/3odD2u83Xw5djzpeGRh19TjeLbGa/t2Sz2OJxvDdB5veXmRxcVn3z6N\n90Nr+872+JPW83x+Psf9j5eWllhdXQVgZWWFzWR0UHRnJfkE8LNVdTLJrwIXdTc9UVV3JjkEzFXV\noe5CUXczWkd7OXAMuKo2FJ6kznYAd7MfLzn7fuc7f+P8xcXFp/9zbWf+4cNw223t6nH+rM1fZO3F\nf3fU4/xZmb+4uMjJkwu86U27ox7nz9b8j33sua+Nfdbj/Mnmr71XafH4698Hnfv7pUXWXhufbz3O\nn7X5oaqec0sfR2oBfgH4QJIXAV8Afga4ALg3yRuAFeB1AFV1Ism9wAngSeDNGxtaqaWzvWhL07PQ\ndwGaUQsLC5w82XcVmlW+Nqqthb4L0MD00tRW1aeAV57lphs3mX8HcMf4x52khu3Pdb7ztzP/8OHt\nzT/bXyZb1ON85zvf+c53vvOd32r+2vuerd7TPN96xr1ner7zJ63H+f3P3+xo7wsme2jp/LN+fYc0\nbeZLrZgttWS+1JL50qRsaiVJkiRJg2VTK43huiG1ZL7UitlSS+ZLLZkvTcqmVpIkSZI0WDa10hiu\n6zC8CoUAAAvOSURBVFBL5kutmC21ZL7UkvnSpGxqJUmSJEmDZVMrjeG6DrVkvtSK2VJL5kstmS9N\nyqZWkiRJkjRYNrXSGK7rUEvmS62YLbVkvtSS+dKkbGolSZIkSYNlUyuN4boOtWS+1IrZUkvmSy2Z\nL03KplaSJEmSNFg2tdIYrutQS+ZLrZgttWS+1JL50qRsaiVJkiRJg2VTK43hug61ZL7UitlSS+ZL\nLZkvTcqmVpIkSZI0WDa10hiu61BL5kutmC21ZL7UkvnSpGxqJUmSJEmDZVMrjeG6DrVkvtSK2VJL\n5kstmS9NyqZWkiRJkjRYvTS1SVaSfDrJ8ST/q9t3cZKjSU4meSDJ3Lr5tyd5OMlDSW7qo2adv1zX\noZbMl1oxW2rJfKkl86VJ9XWktoCFqrq2qq7v9h0CjlbV1cBHuzFJ9gG3AvuA1wDvTuIRZkmSJElS\nr6cfZ8P4AHCk2z4C3NJt3wzcU1VnqmoFeAS4HmmHuK5DLZkvtWK21JL5UkvmS5Pq80jtsSQPJnlj\nt29vVZ3utk8De7vty4BT6+57Crh8Z8qUJEmSJO1mfTW131tV1wI/BPxcklevv7GqilHju5mtbpOm\nynUdasl8qRWzpZbMl1oyX5rUnj6etKr+qvv+lSQfYnQ68ekkl1TVY0kuBR7vpj8KXLnu7ld0+57j\n4MGDzM/PAzA3N8f+/fufPn1h7T+HY8etxsvLALunHseOHZ/f4zW7pR7HszVes1vqcTzZGKbzeMvL\niywuPvv2abwfWnO2x5+0nufz8znuf7y0tMTq6ioAKysrbCajg6I7J8lFwAVV9fUkLwYeAH4NuBF4\noqruTHIImKuqQ92Fou5m1PheDhwDrqoNhSfZuEvaUYcPw223PfN93DxJas3fN5LOZhq/Gw4fHn3f\n+DjbfeztzJu0Tn/nzb4kVNXGazP1cqR2L/ChJGvP/4GqeiDJg8C9Sd4ArACvA6iqE0nuBU4ATwJv\ntnuVJEmSJEEPa2qr6otVtb/7+qdV9R+7/V+tqhur6uqquqmqVtfd546quqqqvrOqPrLTNev8tvFU\nGGmazJdaMVtqyXypJfOlSe14UytJkiRJ0rTY1EpjrC1Wl1owX2rFbKkl86WWzJcmZVMrSZIkSRos\n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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7f9afdcd3cd0>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "analysis()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<br><br><br><br>\n",
    "Advanced TraceAnalysis and PerfAnalysis usage: use pre-defined functions to plot trace data and RTApp performance metrics<br>\n",
    "[notebooks/tutorial/06_TraceAnalysis.ipynb](06_TraceAnalysis.ipynb)\n",
    "<br>\n",
    "[notebooks/tutorial/07_PerfAnalysis.ipynb](07_PerfAnalysis.ipynb)\n",
    "<br><br><br><br>"
   ]
  }
 ],
 "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.13"
  },
  "toc": {
   "toc_cell": false,
   "toc_number_sections": true,
   "toc_threshold": 6,
   "toc_window_display": false
  }
 },
 "nbformat": 4,
 "nbformat_minor": 0
}