Skip to content

Energy model-based tests, RFC v2#263

Merged
derkling merged 8 commits intoARM-software:masterfrom
bjackman:energy-model-rfc-v2
Feb 23, 2017
Merged

Energy model-based tests, RFC v2#263
derkling merged 8 commits intoARM-software:masterfrom
bjackman:energy-model-rfc-v2

Conversation

@bjackman
Copy link
Contributor

@bjackman bjackman commented Dec 21, 2016

See the commit messages for the first and fourth commits for more detail on what this PR aims to introduce. In short, this aims to allow automatically running tests for any given synthetic workload and platform.

This looks like an enormous PR, and it is... but a lot of the added lines are .ipynb noise or boilerplate in the provided platform descriptions. I've also added pretty verbose docstrings which bumps up the line count a lot.

I've siloed myself a bit on this so please highlight wherever I haven't made the high-level intention clear, It's important that someone can understand what this stuff is trying to do without reading 2k lines of inscrutable bjackman Python 😄 . Hopefully docstrings are a good starting point...

@bjackman bjackman force-pushed the energy-model-rfc-v2 branch from 2963ce0 to 7c24885 Compare December 21, 2016 16:22
@bjackman bjackman force-pushed the energy-model-rfc-v2 branch 2 times, most recently from a4601c0 to 64e7ddf Compare December 22, 2016 18:36
@bjackman
Copy link
Contributor Author

@bjackman
Copy link
Contributor Author

bjackman commented Jan 4, 2017

Today I ran the "generic" tests I've added here and compared the energy estimation from EnergyModel with the energy measured with an ACME cape on Pixel and hwmon on Juno.

The only numerical analysis I did was to compare the estimated and measured energy for the entirety of each workload. There's a strong correlation (>95% coefficient) there.

As for finer grained predictions (i.e. predicting& measuring the variation in energy consumption during the course of the workload), I plotted energy measurements over time (using ACME) and compared visually with plots of energy predictions over time. They look to match nicely but like I say this wasn't very scientific.

Here's the notebook I used: https://github.com/bjackman/lisa/blob/energy-model-rfc-v2-evaluation/ipynb/Energy_Model_Eval.ipynb

Copy link
Contributor

@ionela-voinescu ionela-voinescu left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Awesome job! This is my first set of comments (mostly nit-picky and about how to make the information more clear in the test notebook). I'm still giving some thought to the EnergyModel class and I'll follow up with that later).

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This class also has some references to bl.littles and bl.bigs in _assert_switch that were not replaced. I can't seem to be able to post a comment on those lines :-|.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Will take a look.

}

# Set to true to run a test only on heterogeneous systems
skip_on_smp = False
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I see this set to false in the other classes also. If I haven't missed anything all tests will be run on SMP also and none of the tests will be skipped. I suppose the result of this should be that some of the tests are skipped on SMP as you won't see some of these behaviours that are expected there (behaviours characteristic to big.LITTLE). Therefore, shouldn't some of these have skip_on_smp set to True?

cls.target.write_value(
"/proc/sys/kernel/sched_initial_task_util", 1024, verify=False)

def _do_test_first_cpu(self, experiment, tasks):
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Shouldn't all task start on the big CPU only if the initial task utilisation was set to 1020 (that is if SET_INITIAL_TASK_UTIL)? Otherwise a failure of a task to start on the big CPU might not be a failure. As discussed it would be best if this test was removed or at least constrained.

Copy link
Contributor Author

@bjackman bjackman Jan 20, 2017

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes. This function is just being moved from acceptance.py so I'll leave it here for now. None of the new tests should use it.


Use the sched_switch trace event to find which CPU each task ran
on. Does not reflect idleness - tasks not running are shown as running
on the last CPU they woke ran on.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I suppose you meant: ".. are shown as running on the last CPU they ran on."

cpu_utils[int(cpu)] += util
power = nrg_model.estimate_from_cpu_util(cpu_utils)
columns = power.keys()
return pd.Series([power[c] for c in columns], index=columns)
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can we have this in a meaningful (sorted) order as to be more clear? Also, as discussed, you could get rid of the power column or have it at the end for it to be more clear that it represents the total power.

Copy link
Contributor Author

@bjackman bjackman Jan 20, 2017

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yep. I think I'll remove the "power" column and sort the node columns by depth-first post-order.


msg = 'Estimated {} bogo-Joules to run workload, expected {}'.format(
est_energy, exp_energy)
self.assertLess(est_energy, exp_energy * 1.2, msg=msg)
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The 20% (1.2) value hard-coded here does not look good to me. Can we have it as a class variable as for negative_slack_allowed_pct?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yep, will do.

est_energy, exp_energy)
self.assertLess(est_energy, exp_energy * 1.2, msg=msg)

class OneSmallTask(EnergyModelTest):
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think these specific test cases should be in their own file and to keep generic.py hosting only the EnergyModelTest class.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why? In this case "generic" is supposed to mean "works on any platform".

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I thought generic meant more that it would hold the base EnergyModelTest class, which then can be extended in specific test classes. I find it more clear to have the EnergyModelTest class in its own file but it's just a preference.

" /* TRAPPY_PUBLISH_REMOVE_STOP */\n",
" \n",
" req([\"require\", \"EventPlot\"], function() { /* TRAPPY_PUBLISH_REMOVE_LINE */\n",
" EventPlot.generate('fig_a283b792c9da4efe9e175518453bf49b', '/nbextensions/', {\"lanes\": [{\"id\": 0, \"label\": \"CPU :0\"}, {\"id\": 1, \"label\": \"CPU :1\"}, {\"id\": 2, \"label\": \"CPU :2\"}, {\"id\": 3, \"label\": \"CPU :3\"}, {\"id\": 4, \"label\": \"CPU :4\"}, {\"id\": 5, \"label\": \"CPU :5\"}], \"colorMap\": null, \"keys\": [\"task_wmig0-1981\", \"task_wmig1-1982\", \"rt-app-1980\", \"sshd-1986\", \"sshd-1985\", \"sshd-1983\", \"sshd-1989\", \"bash-1962\", \"bash-2000\", \"sh-1995\", \"sudo-1997\", \"sudo-1962\", \"sudo-1959\", \"bash-1988\", \"sudo-2000\", \"bash-1967\", \"sudo-1992\", \"kworker/u12:0-1963\", \"systemd-journal-192\", \"bash-1991\", \"sshd-1991\", \"bash-1959\", \"kworker/u12:2-1998\", \"sudo-1955\", \"sudo-1964\", \"sshd-1988\", \"sh-1965\", \"kworker/u12:2-1990\", \"kworker/u12:2-1993\", \"kworker/u12:2-1984\", \"bash-1992\", \"kworker/u12:2-2001\", \"bash-1980\", \"kworker/u12:2-1987\", \"bash-1997\", \"shutils-1966\", \"shutils-1969\", \"shutils-1976\", \"shutils-1996\", \"busybox-1968\", \"busybox-1974\", \"sudo-1999\", \"busybox-1978\", \"sudo-1961\", \"sudo-1994\", \"sudo-2002\", \"rt-app-1982\", \"shutils-1971\", \"shutils-1973\", \"shutils-1975\", \"busybox-1972\", \"modprobe-1960\", \"kworker/u12:0-1960\", \"shutils-1970\", \"shutils-1978\", \"busybox-1970\", \"shutils-1972\", \"shutils-1974\", \"sshd-245\", \"shutils-1979\", \"sh-1957\", \"shutils-1968\", \"modprobe-1963\", \"shutils-1977\", \"bash-1854\", \"rs:main Q:Reg-262\", \"jbd2/sda1-8-107\", \"shutils-1967\", \"sshd-1852\", \"kworker/0:2-175\", \"shutils-1995\", \"in:imuxsock-260\", \"kworker/2:1-42\", \"busybox-1979\", \"scp-1985\", \"sh-1964\", \"kworker/4:1-40\", \"sh-1994\", \"shutils-1965\", \"scp-1988\", \"scp-1991\", \"kworker/3:0-21\", \"kworker/5:0-1099\", \"sh-2003\", \"ksoftirqd/3-20\", \"ksoftirqd/0-3\", \"kworker/1:0-821\", \"busybox-1966\", \"usb-storage-101\", \"ksoftirqd/5-28\", \"kschedfreq:0-1659\", \"kworker/u12:2-91\", \"ksoftirqd/4-24\", \"rt-app-1981\", \"kworker/3:1H-109\", \"kworker/u12:0-1400\", \"kschedfreq:1-1678\", \"rcu_preempt-7\", \"kworker/0:1H-110\", \"rcu_sched-8\", \"ksoftirqd/2-16\", \"ksoftirqd/1-12\", \"modprobe-2001\", \"modprobe-1987\", \"modprobe-1998\", \"modprobe-1984\", \"kworker/5:1H-137\"], \"stride\": false, \"showSummary\": true, \"xDomain\": [2.7999998565064743e-05, 9.0314649999982066], \"data\": {\"sudo-1959\": {\"1\": [[0.41662099999848579, 0.41704699999900186], [0.41707099999985076, 0.41814699999849836], [0.41816999999900872, 0.42065999999977066], [0.42067499999939173, 0.42070999999850756], [0.42072299999927054, 0.42190999999911583], [0.42338399999971443, 0.42340499999954773], [0.42417499999828578, 0.42510999999831256]], \"2\": [[0.41094299999895156, 0.41363199999977951]]}, \"busybox-1978\": {\"5\": [[2.0367399999995541, 2.0377249999983178]]}, \"busybox-1979\": {\"2\": [[2.0388689999999769, 2.0390469999983907]]}, \"busybox-1974\": {\"3\": [[2.0300459999998566, 2.0310789999984991]]}, \"rcu_preempt-7\": {\"0\": [[6.8749159999988478, 6.874934999999823], [6.8789829999986978, 6.879001999999673], [6.8829739999982849, 6.8829939999995986], [6.8870289999995293, 6.887046999998347]], \"1\": [[0.41097699999954784, 0.41098799999963376], [1.130909999999858, 1.1309209999999439], [1.1350159999983589, 1.1350289999991219], [2.4470469999996567, 2.4470729999993637], [2.5309079999988171, 2.530918999998903], [2.534985999998753, 2.5349989999995159], [2.5390049999987241, 2.5390199999983452], [2.5429879999992409, 2.5430029999988619], [6.7629249999990861, 6.7629389999983687], [7.0909209999990708, 7.0909349999983533], [7.2029179999990447, 7.2029449999990902], [7.2069189999983791, 7.2069319999991421], [7.2109059999984311, 7.2109189999991941], [7.2151239999984682, 7.2151369999992312], [8.3269209999998566, 8.3269349999991391], [9.0229119999985414, 9.0229249999993044], [9.0269159999988915, 9.026929999999993]], \"2\": [[0.41494799999964016, 0.41497999999955937], [0.41905599999881815, 0.41909399999894958], [0.42291999999906693, 0.42292999999881431], [0.42691299999933108, 0.42692699999861361], [1.1189339999982622, 1.1189629999989847], [1.1229099999982282, 1.1229239999993297], [1.1269059999995079, 1.126920999999129], [2.4509169999982987, 2.4509289999987232], [2.4549859999988257, 2.4549989999995887], [2.4589869999999792, 2.4589989999985846], [2.4629749999985506, 2.4629889999996522], [2.4669839999987744, 2.4669959999991988], [2.4709759999987, 2.4709899999998015], [2.5469919999995909, 2.5470059999988734], [4.735049999999319, 4.7350689999984752], [4.738999999999578, 4.739012999998522], [4.7429899999988265, 4.7430029999995895], [4.7470819999998639, 4.7471109999987675], [4.7510479999982635, 4.7510759999986476], [6.7669859999987239, 6.7670009999983449], [6.7710689999985334, 6.7710819999992964], [6.7750939999987168, 6.7751069999994797], [6.7790059999988443, 6.7790199999999459], [6.783051999998861, 6.7830639999992854], [6.78700199999912, 6.7870159999984025], [6.7910509999983333, 6.7910629999987577], [6.7950039999996079, 6.795018999999229], [6.7990519999984826, 6.7990639999989071], [6.8030499999986205, 6.8030629999993835], [6.8070499999994354, 6.8070619999998598], [6.8510059999989608, 6.8510189999997237], [6.8550879999984318, 6.8551159999988158], [6.8590499999991152, 6.859082999999373], [6.8629879999989498, 6.8630029999985709], [6.8990119999998569, 6.8990319999993517], [6.9029119999995601, 6.9029239999999845], [6.9070929999998043, 6.9071059999987483], [6.9111229999998613, 6.9111359999988053], [7.0950159999993048, 7.0950319999992644], [7.0990619999993214, 7.0990759999986039], [7.1070569999992586, 7.1070729999992182], [7.1149839999998221, 7.1149979999991046], [7.1189859999994951, 7.1189979999999196], [7.1229759999987436, 7.1229899999998452], [7.1269909999991796, 7.1270049999984622], [7.1310649999995803, 7.1310939999984839], [7.1311209999985294, 7.1311459999997169], [7.1389899999994668, 7.1390029999984108], [7.1750449999999546, 7.1750669999983074], [7.1789259999986825, 7.1789389999994455], [8.3309859999990294, 8.3310050000000047], [8.3349149999994552, 8.3349269999998796], [8.3391319999991538, 8.3391469999987748], [8.3431539999983215, 8.3431649999984074], [8.3470749999996769, 8.3470879999986209], [8.3510799999985466, 8.3510929999993095], [8.355121999999028, 8.3551359999983106], [8.3590749999984837, 8.3590859999985696], [8.3630739999989601, 8.363086999999723], [8.3670639999982086, 8.3670759999986331], [9.0309269999997923, 9.0309419999994134]], \"3\": [[6.5311899999996967, 6.5312229999999545], [6.5349739999983285, 6.5350099999996019], [6.5391379999982746, 6.539175999998406], [6.5431319999988773, 6.5431709999993473], [6.547138999998424, 6.5471759999982169], [6.551127999999153, 6.5511659999992844], [6.5551409999989119, 6.5551779999987048], [6.5591289999993023, 6.5591639999984181], [6.7550419999988662, 6.7550669999982347], [6.7590679999993881, 6.7590869999985443], [7.0349969999988389, 7.0350169999983336], [7.0389859999995679, 7.0390039999983856], [7.0429749999984779, 7.0429949999997916], [7.0469839999987016, 7.0470029999996768], [7.0509739999997691, 7.0509929999989254], [7.0549469999987195, 7.0549709999995684], [7.0590529999990395, 7.059092999999848], [7.0630849999997736, 7.0631209999992279], [7.0669189999989612, 7.0669439999983297], [7.0711329999994632, 7.071154999999635], [7.0751109999982873, 7.0751329999984591], [7.4309319999993022, 7.4309529999991355]], \"4\": [[7.4349349999993137, 7.4349579999998241], [7.4392919999991136, 7.4393139999992854], [7.4431649999987712, 7.4431879999992816], [7.4471489999996265, 7.4471709999997984], [7.451136999998198, 7.4511579999998503], [7.4551489999994374, 7.4551699999992707], [7.4591299999992771, 7.4591499999987718], [8.319032999999763, 8.319060999998328], [8.3229679999985819, 8.3230019999991782]], \"5\": [[0.0029849999991711229, 0.0030119999992166413], [0.0069419999999809079, 0.0069799999982933514], [0.010914999998931307, 0.010930999998890911], [0.015142999998715823, 0.015159999999013962], [0.02298999999948137, 0.023010999999314663], [0.026993999999831431, 0.027014999999664724], [0.030987999998615123, 0.03100799999992887], [0.034987999999430031, 0.035006999998586252], [0.24697999999989406, 0.24699799999871175], [0.25111499999911757, 0.25113399999827379], [0.25504599999840138, 0.25506399999903806], [0.43108799999936309, 0.43111099999987346], [0.43516299999828334, 0.43518199999925855], [0.43917799999871932, 0.43919799999821407], [0.44312999999965541, 0.4431509999994887], [0.44715499999983876, 0.44717599999967206], [0.4511289999991277, 0.45115099999929953], [0.45505399999819929, 0.4550729999991745], [1.1110389999994368, 1.1110659999994823], [1.1150779999989027, 1.1151149999986956], [1.1391339999991033, 1.1391599999988102], [1.1430969999983063, 1.1431199999988166], [1.1471369999999297, 1.147157999999763], [1.1511199999986275, 1.1511419999987993], [1.1551249999993161, 1.1551469999994879], [1.1590819999983069, 1.1591009999992821], [2.0190009999987524, 2.0190259999999398], [2.0230159999991884, 2.023046999998769], [2.0269119999993563, 2.0269349999998667], [2.0309169999982259, 2.0309389999983978], [2.0349149999983638, 2.0349379999988741], [2.0389289999984612, 2.0389509999986331], [2.0430369999994582, 2.04305899999963], [2.0471239999988029, 2.0471449999986362], [2.0511769999993703, 2.0511989999995421], [2.0551749999995081, 2.0551959999993414], [2.0592079999987618, 2.0592479999995703], [2.0631609999982174, 2.0631829999983893], [2.0670559999998659, 2.0670749999990221], [6.8670339999989665, 6.867073999999775], [6.870997999998508, 6.871023999998215], [6.8909199999998236, 6.8909389999989799], [6.8949149999989459, 6.8949339999999211], [6.9149479999996402, 6.9149739999993471], [6.9190979999984847, 6.9191339999997581], [6.9230469999984052, 6.9230859999988752], [6.9269939999994676, 6.9270139999989624], [6.9310069999992265, 6.9310279999990598], [6.9350799999992887, 6.9350989999984449], [6.9390079999993759, 6.9390269999985321], [6.9430509999983769, 6.9430689999990136], [6.9470069999988482, 6.9470269999983429], [6.9510429999991175, 6.9510619999982737], [6.9550049999998009, 6.9550249999992957], [6.9590489999991405, 6.9590679999982967], [6.9630429999997432, 6.9630639999995765], [6.9670519999999669, 6.9670709999991232], [7.0109929999998712, 7.011012999999366], [7.0149839999994583, 7.0150029999986145], [7.0189709999995102, 7.018990999999005], [7.0229769999987184, 7.0229959999996936], [7.0269719999996596, 7.026996999999028], [7.0309259999994538, 7.0309409999990748], [7.0791429999990214, 7.0791629999985162], [7.0829249999987951, 7.0829429999994318], [7.0869909999983065, 7.0870099999992817], [7.1829859999998007, 7.1830079999999725], [7.1870819999985542, 7.187101999999868], [7.1910619999998744, 7.1910769999994955], [7.1949839999997494, 7.1950029999989056], [7.1990489999989222, 7.1990669999995589], [7.2191639999982726, 7.2191879999991215], [7.2231899999987945, 7.2232099999982893], [7.2271959999998217, 7.2272359999988112], [7.231101999999737, 7.2311219999992318], [7.2350969999988592, 7.2351179999986925], [7.2391009999992093, 7.2391199999983655], [7.4150689999987662, 7.4151049999982206], [7.4191299999984039, 7.4191469999987021], [7.4229079999986425, 7.4229289999984758], [7.4269599999988714, 7.4269959999983257]]}, \"busybox-1970\": {\"1\": [[2.0234699999982695, 2.0241809999988618]], \"5\": [[2.023219999999128, 2.0233579999985523]]}, \"sudo-1955\": {\"2\": [[0.00070599999889964238, 0.002840999999534688], [0.0033389999989594799, 0.0033609999991313089]]}, \"busybox-1972\": {\"2\": [[2.0267879999992147, 2.0275069999988773]]}, \"shutils-1995\": {\"5\": [[7.4329949999992095, 7.4330169999993814], [7.433045999998285, 7.4330629999985831], [7.4330939999999828, 7.4331099999999424], [7.4331399999991845, 7.4331579999998212], [7.4331869999987248, 7.4332029999986844], [7.433231999999407, 7.4332479999993666], [7.4333949999981996, 7.4341139999996813]]}, \"shutils-1996\": {\"3\": [[7.4316379999982018, 7.4321399999989808]], \"4\": [[7.4322309999988647, 7.4334219999982452]]}, \"kworker/1:0-821\": {\"1\": [[0.21511099999952421, 0.21512799999982235], [0.41092899999966903, 0.41097699999954784], [1.7191309999998339, 1.7191829999992478], [1.7197149999992689, 1.7197519999990618], [1.7203319999989617, 1.7203649999992194], [2.4469689999987168, 2.4470469999996567], [3.215065999998842, 3.2150899999996909], [4.2309439999989991, 4.2310489999999845], [6.2309579999982816, 6.2310879999986355], [8.3189849999998842, 8.3190569999987929]]}, \"bash-1959\": {\"1\": [[0.40864099999998871, 0.40899499999977706]], \"2\": [[0.40909599999940838, 0.41093099999852711]]}, \"sshd-1991\": {\"1\": [[7.2029449999990902, 7.2029539999984991], [7.2029599999987113, 7.2052689999982249]], \"2\": [[7.2015019999998913, 7.2022999999990134]], \"5\": [[7.2023869999993622, 7.2029199999997218]]}, \"busybox-1968\": {\"0\": [[2.0195889999995416, 2.0208689999999478]], \"1\": [[2.0191289999984292, 2.0194549999996525]]}, \"busybox-1966\": {\"0\": [[1.1287209999991319, 1.1287859999993088], [1.1288009999989299, 1.1288589999985561], [1.1288739999999962, 1.1289309999992838], [1.1289469999992434, 1.1290039999985311], [1.1290189999999711, 1.1290749999989202], [1.1290889999982028, 1.1292609999982233], [1.1292739999989863, 1.1292899999989459], [1.1293229999992036, 1.1293619999996736], [1.130048999999417, 1.1300669999982347]]}, \"sh-1994\": {\"2\": [[7.4341849999982514, 7.4343519999983982]]}, \"sh-1995\": {\"4\": [[7.4280169999983627, 7.4282739999998739]], \"5\": [[7.428314999999202, 7.4316119999984949]]}, \"bash-1967\": {\"1\": [[2.0153429999991204, 2.0160439999999653]], \"2\": [[2.0161959999986721, 2.0183059999999386]]}, \"ksoftirqd/2-16\": {\"2\": [[0.42292999999881431, 0.42294599999877391], [8.3431309999996301, 8.3431539999983215]]}, \"sshd-1852\": {\"0\": [[0.0035309999984747265, 0.0035570000000006985], [0.0036039999995409744, 0.0038829999994050013], [0.15552199999910954, 0.15565399999832152], [0.15606899999875168, 0.15618499999982305], [0.20564399999966554, 0.20574899999883201], [0.2061809999995603, 0.20630399999936344], [0.35757399999965855, 0.35768699999971432], [0.35823699999855307, 0.35829899999953341], [0.35832099999970524, 0.35833999999886146], [0.3583569999991596, 0.3583810000000085], [0.35839499999929103, 0.35841299999992771], [0.35842699999921024, 0.35862399999859917], [0.358645999998771, 0.3586669999986043], [0.35868399999890244, 0.35870599999907427], [0.35871599999882164, 0.35873499999979686], [0.35874899999907939, 0.3587969999989582], [0.35881199999857927, 0.35882899999887741], [0.35884199999964039, 0.35885999999845808], [0.3588739999995596, 0.35891999999876134], [0.35893499999838241, 0.35898699999961536], [0.35902999999962049, 0.35904899999877671], [0.35906299999987823, 0.35907999999835738], [0.35909299999912037, 0.35911099999975704], [0.35912499999903957, 0.35914199999933771], [0.35915499999828171, 0.35917199999857985], [0.35918599999968137, 0.35920199999964098], [0.35921599999892351, 0.35923399999956018], [0.35924799999884272, 0.35927599999922677], [0.35928899999998976, 0.3593109999983426], [0.35932399999910558, 0.35934099999940372], [0.35935499999868625, 0.35937199999898439], [0.35938499999974738, 0.35940199999822653], [0.35941499999898952, 0.35943199999928765], [0.35944499999823165, 0.35946199999852979], [0.35947599999963131, 0.359493999998449], [0.35950799999955052, 0.35955199999989418], [0.35958299999947485, 0.35961199999837845], [0.35962599999947997, 0.35964399999829766], [0.35965799999939918, 0.3596849999994447], [0.35971299999982875, 0.35983899999882851], [0.35984999999891443, 0.35987199999908626], [0.35988699999870732, 0.35990399999900546], [0.359917999998288, 0.35993499999858614], [0.35994899999968766, 0.3599659999999858], [0.36000199999944016, 0.36001999999825784], [0.36003299999902083, 0.36005899999872781], [0.36008699999911187, 0.36011799999869254], [0.36013299999831361, 0.36014999999861175], [0.36016299999937473, 0.36017999999967287], [0.36019099999975879, 0.36020799999823794], [0.36022199999933946, 0.36026099999980943], [0.36027499999909196, 0.36029299999972864], [0.36030699999901117, 0.36032299999897077], [0.3603369999982533, 0.36035399999855144], [0.36036699999931443, 0.36038499999995111], [0.36039899999923364, 0.36041599999953178], [0.36042999999881431, 0.36044899999978952], [0.36046299999907205, 0.36047999999937019], [0.36049299999831419, 0.36052199999903678], [0.36053599999831931, 0.36055099999975937], [0.36056399999870337, 0.36072199999944132], [0.4076809999987745, 0.40775199999916367], [0.40872899999885703, 0.40885199999866018], [1.0591189999995549, 1.0593349999999191], [1.0595899999989342, 1.0597849999994651], [1.0598169999993843, 1.0613609999982145], [1.0613939999984723, 1.062657999998919], [1.06267299999854, 1.0626879999999801], [1.0627319999985048, 1.0627489999988029], [1.0627619999995659, 1.0627759999988484], [1.0627879999992729, 1.0628019999985554], [1.0628129999986413, 1.0628269999997428], [1.0628409999990254, 1.0628549999983079], [1.0628669999987324, 1.0628809999998339], [1.0629229999995005, 1.0629549999994197], [1.0629679999983637, 1.0629899999985355], [1.0630029999992985, 1.0630209999999352], [1.0630339999988792, 1.0630519999995158], [1.0630639999999403, 1.0630769999988843], [1.0630899999996473, 1.0631029999985913], [1.0631139999986772, 1.0631279999997787], [1.0631389999998646, 1.0631529999991471], [1.0631649999995716, 1.0631789999988541], [1.0632189999996626, 1.0632329999989452], [1.0632459999997081, 1.0632589999986521], [1.0632709999990766, 1.0632859999986977], [1.0632989999994606, 1.0633119999984046], [1.0633249999991676, 1.0633379999999306], [1.0633499999985361, 1.0633639999996376], [1.0633759999982431, 1.0633899999993446], [1.0634039999986271, 1.0635489999986021], [1.1091899999992165, 1.1092599999992672], [1.1092939999998634, 1.1093239999991056], [1.1095189999996364, 1.1096119999983785], [1.1316319999987172, 1.1318339999997988], [1.7606659999983094, 1.7609469999988505], [1.761317999998937, 1.7614340000000084], [1.7614989999983663, 1.761782999999923], [1.8107739999995829, 1.8110349999988102], [1.8116689999988012, 1.8118089999989024], [1.8120459999990999, 1.8123859999996057], [1.9638409999988653, 1.9641669999982696], [1.9663219999983994, 1.9666419999994105], [2.0139449999987846, 2.0141419999999925], [2.0142639999994572, 2.0143839999982447], [2.0396209999998973, 2.0398229999991599], [2.1911599999984901, 2.1913979999990261], [2.1919169999982842, 2.1921229999989009], [2.2413139999989653, 2.2415489999984857], [2.2424119999996037, 2.2425369999982649], [2.2427669999997306, 2.2431279999982507], [2.3947659999994357, 2.3950359999998909], [2.3967149999989488, 2.3968629999999393], [2.4448929999998654, 2.4450959999994666], [2.4460979999985284, 2.4462359999997716], [6.6834199999993871, 6.6837459999987914], [6.7335379999985889, 6.7338609999987966], [6.7345969999987574, 6.7349039999990055], [7.3618479999986448, 7.3620299999984127], [7.3624919999983831, 7.3628419999986363], [7.3628769999995711, 7.3630619999985356], [7.3631009999990056, 7.3633759999993345], [7.3634929999989254, 7.3635679999988497], [7.3636129999995319, 7.3637169999983598], [7.3637380000000121, 7.3638129999999364], [7.3638339999997697, 7.3639659999989817], [7.3640089999989868, 7.3640849999992497], [7.3641049999987445, 7.3642069999987143], [7.3642279999985476, 7.3643019999999524], [7.3643219999994471, 7.3644559999993362], [7.3644969999986643, 7.3646119999993971], [7.412107999998625, 7.4122819999993226], [7.413219999998546, 7.4133469999997033], [7.4356389999993553, 7.4358399999982794], [8.063533999998981, 8.0638479999997799], [8.0642059999991034, 8.0644169999995938], [8.1136199999982637, 8.1138189999983297], [8.1143339999998716, 8.1144729999996343], [8.2659459999995306, 8.2662049999998999], [8.2663829999983136, 8.2666009999993548], [8.2671169999994163, 8.2672749999983353], [8.2675799999997253, 8.2677349999994476], [8.2680469999995694, 8.2681979999997566], [8.2684319999989384, 8.2684689999987313], [8.268540999999459, 8.268605999999636], [8.2687619999996969, 8.26884599999903], [8.2690119999988383, 8.2690959999999905], [8.2692209999986517, 8.2693019999987882], [8.2694289999999455, 8.2695139999996172], [8.2696839999989606, 8.2697709999993094], [8.2698959999997896, 8.2699769999999262], [8.2700749999985419, 8.2701819999983854], [8.270396999998411, 8.2704799999992247], [8.2705339999993157, 8.2706429999998363], [8.2708349999993516, 8.270965999998225], [8.2711879999988014, 8.271270999999615], [8.2714019999984885, 8.2714819999982865], [8.2715839999982563, 8.2716899999995803], [8.2719159999996918, 8.2719989999986865], [8.2721349999992526, 8.2722149999990506], [8.2723459999997431, 8.2724259999995411], [8.2725779999982478, 8.272687999999107], [8.2728699999988748, 8.2729529999996885], [8.2730889999984356, 8.2731689999982336], [8.2732739999992191, 8.2733819999994012], [8.2735349999984464, 8.2736459999996441], [8.2738289999997505, 8.2739129999990837], [8.2740999999987253, 8.2742179999986547], [8.2743549999995594, 8.2744359999996959], [8.2744939999993221, 8.2746009999991657], [8.2747589999999036, 8.2748689999989438], [8.2750779999987572, 8.2751819999994041], [8.2753199999988283, 8.2754009999989648], [8.2754599999989296, 8.2755669999987731], [8.2756949999984499, 8.2758149999990565], [8.3158219999986613, 8.3159939999986818], [8.316992999998547, 8.317150999999285], [8.33383799999865, 8.3340309999985038], [8.9672949999985576, 8.9674989999984973], [8.9677509999983158, 8.9681419999997161], [8.9683009999989736, 8.9683319999985542], [8.9683599999989383, 8.9683859999986453], [8.9684689999994589, 8.9684959999995044], [8.9685189999981958, 8.9685539999991306], [8.9685759999993024, 8.9686039999996865], [8.9686269999983779, 8.9686519999995653], [8.9686749999982567, 8.9687099999991915], [8.9687329999997019, 8.9687619999986055], [8.9687849999991158, 8.9688099999984843], [8.9688329999989946, 8.9688589999987016], [8.9688799999985349, 8.9689049999997223], [8.9689269999998942, 8.9689849999995204], [8.9690109999992274, 8.9690379999992729], [8.9690599999994447, 8.9690849999988131], [8.969106999998985, 8.969132999998692], [8.9691549999988638, 8.9691809999985708], [8.9692039999990811, 8.9692299999987881], [8.9692519999989599, 8.9692769999983284], [8.9692999999988388, 8.9693259999985457], [8.9693499999993946, 8.9693829999996524], [8.9694049999998242, 8.9694309999995312], [8.969452999999703, 8.9695099999989907], [8.9695339999998396, 8.9695649999994203], [8.9696289999992587, 8.9696529999982886], [8.9697119999982533, 8.9697379999997793], [8.9697609999984707, 8.9697869999999966], [8.9698109999990265, 8.969835999998395], [8.9698589999989053, 8.9698849999986123], [8.9699069999987842, 8.9699329999984911], [8.969954999998663, 8.96998099999837], [8.9700029999985418, 8.9700279999997292], [8.970049999999901, 8.970075999999608], [8.9700969999994413, 8.9701229999991483], [8.9701449999993201, 8.9701729999997042], [8.970194999999876, 8.9702299999989918], [8.9702519999991637, 8.9702779999988707], [8.9702999999990425, 8.9703579999986687], [8.9703819999995176, 8.9706559999995079], [9.017519999999422, 9.0176979999996547], [9.0177539999986038, 9.017796999998609], [9.0180089999994379, 9.0181409999986499]], \"3\": [[0.20608899999933783, 0.20615199999883771], [2.5300999999999476, 2.5302449999999226], [2.5304639999994833, 2.5306469999995898], [6.5307389999998122, 6.5311899999996967], [6.5316899999997986, 6.5318639999986772]], \"4\": [[6.6844249999994645, 6.6847399999987829]], \"5\": [[0.42547999999987951, 0.42565099999956146]]}, \"bash-1962\": {\"1\": [[1.1103279999988445, 1.1110729999982141]], \"2\": [[1.1112389999998413, 1.1160169999984646]]}, \"ksoftirqd/1-12\": {\"1\": [[6.9111629999988509, 6.9111739999989368], [7.2069319999991421, 7.2069529999989754]]}, \"kworker/u12:2-1993\": {\"2\": [[7.42131899999913, 7.4213489999983722]], \"4\": [[7.4214489999994839, 7.423345999999583]]}, \"kworker/u12:2-1990\": {\"2\": [[7.089005999998335, 7.0890399999989313]], \"4\": [[7.089137999999366, 7.0910489999987476]]}, \"sshd-1983\": {\"0\": [[6.8472189999993134, 6.847353999999541], [6.8503389999987121, 6.8630119999997987], [6.8678209999998217, 6.8684069999999338], [6.86842599999909, 6.8684549999998126], [6.8684749999993073, 6.8686609999986104], [6.8689319999994041, 6.8691989999988436], [6.8695169999991776, 6.8710259999988921], [6.8997409999992669, 6.900259999998525]], \"1\": [[6.7536799999998038, 6.7549569999991945], [6.7549739999994927, 6.7553849999985687], [6.7554159999999683, 6.7555869999996503], [6.7556159999985539, 6.7569259999982023], [6.7569659999990108, 6.7584589999987656], [6.7584719999995286, 6.7585039999994478], [6.7585129999988567, 6.7621419999995851], [6.7644809999983408, 6.774716999998418], [6.7764689999985421, 6.7764969999989262], [6.7765479999998206, 6.7995439999995142], [6.8078539999987697, 6.8078939999995782]], \"2\": [[6.753140999999232, 6.7535559999996622], [6.863203999999314, 6.8674989999999525], [6.899279999999635, 6.8994279999988066]], \"3\": [[6.9003579999989597, 6.9012019999991026]], \"5\": [[6.8711879999991652, 6.888915999999881], [6.890146999998251, 6.8902589999997872], [6.8902849999994942, 6.8903009999994538], [6.8903289999998378, 6.8904029999994236], [6.8905639999993582, 6.8907059999983176], [6.8909659999990254, 6.8917929999988701], [6.8920489999982237, 6.8921239999999671], [6.8966209999998682, 6.8967249999986961], [6.8971519999995508, 6.8972339999982069], [6.8972709999998187, 6.8980589999991935], [6.8986609999992652, 6.8987319999996544], [6.8988879999997152, 6.8990419999990991]]}, \"kworker/u12:2-1998\": {\"2\": [[8.3257189999985712, 8.3257489999996324]], \"4\": [[8.325857999998334, 8.3279889999994339]]}, \"kworker/3:1H-109\": {\"3\": [[0.0062359999992622761, 0.0062889999990147771], [0.0085439999984373571, 0.0085569999992003432], [6.2355489999990823, 6.235579999998663], [6.2384099999999307, 6.2384369999999763]]}, \"sshd-1988\": {\"1\": [[7.0546039999990171, 7.054932999999437], [7.0549499999997352, 7.0563729999994393]], \"2\": [[7.0535959999997431, 7.0544759999993403]]}, \"sshd-1989\": {\"0\": [[7.1713719999988825, 7.1716309999992518], [7.1743289999994886, 7.1750789999987319], [7.1871629999986908, 7.1873919999998179], [7.1881109999994806, 7.1883799999995972], [7.18873099999837, 7.1887749999987136], [7.2003609999992477, 7.2005129999997735], [7.2007809999995516, 7.2012929999982589]], \"1\": [[7.0826689999994414, 7.0887769999990269], [7.0911829999986367, 7.1012379999992845], [7.1027169999997568, 7.1027379999995901], [7.10280099999909, 7.1118179999994027], [7.1118249999999534, 7.1259029999982886], [7.187432999999146, 7.1878149999993184], [7.1888009999984206, 7.1901979999984178], [7.1902069999996456, 7.1902429999991], [7.1902529999988474, 7.2000069999994594], [7.2000239999997575, 7.2000389999993786], [7.2000559999996767, 7.2001039999995555]], \"2\": [[7.1333319999994274, 7.133429999999862], [7.1752519999990909, 7.1789259999986825], [7.1789389999994455, 7.1868159999994532]], \"4\": [[7.2013209999986429, 7.2016619999994873], [7.2018999999982043, 7.2019939999991038], [7.2069519999986369, 7.207059999998819], [7.2075019999992946, 7.2075939999995171], [7.2078139999994164, 7.2081249999991996], [7.2085709999992105, 7.2086509999990085], [7.2088749999984429, 7.209153999998307], [7.2093129999993835, 7.2106909999984055]]}, \"modprobe-1998\": {\"4\": [[8.3280339999982971, 8.3280489999997371]]}, \"kschedfreq:0-1659\": {\"0\": [[0.0018399999989924254, 0.0018899999995483086], [0.0031029999991005752, 0.0031359999993583187], [0.0034909999994852114, 0.0035309999984747265], [0.0035570000000006985, 0.0036039999995409744], [0.0049119999985123286, 0.0049509999989822973], [0.0062329999982466688, 0.0062689999995200196], [0.0086379999993368983, 0.0086629999987053452], [0.0087209999983315356, 0.0087429999985033646], [0.415698999999222, 0.41573999999855005], [0.41805299999941781, 0.41809799999828101], [0.41811499999857915, 0.41816699999981211], [0.41893499999969208, 0.41895999999906053], [0.41946299999835901, 0.41949799999929382], [0.4207269999988057, 0.4207589999987249], [0.42315399999824876, 0.42317699999875913], [0.42322199999944132, 0.42324399999961315], [0.4251139999996667, 0.42512499999975262], [0.47337999999945168, 0.4734439999992901], [0.47534699999960139, 0.47542599999906088], [0.47544399999969755, 0.47549499999877298], [0.62720899999840185, 0.62730199999896286], [0.62878699999964738, 0.62881099999867729], [0.62883699999838427, 0.62886099999923317], [1.11109899999974, 1.1111239999991085], [1.1121269999985088, 1.1121479999983421], [1.1145229999983712, 1.1145679999990534], [1.1145859999996901, 1.1146269999990182], [1.115007999998852, 1.1150329999982205], [1.1150489999999991, 1.1150719999986904], [1.1159279999992577, 1.1159499999994296], [1.119035999998232, 1.1190679999999702], [1.1225429999994958, 1.1226329999990412], [1.1237349999992148, 1.1237649999984569], [1.1240419999994629, 1.1240639999996347], [1.1240869999983261, 1.1241139999983716], [1.124761999999464, 1.1247759999987466], [1.1249759999991511, 1.124986999999237], [1.127424999998766, 1.1274389999998675], [1.1307449999985693, 1.1307659999984025], [1.1742309999990539, 1.1742759999997361], [1.1758749999989959, 1.1759479999982432], [1.1759659999988799, 1.1760149999990972], [1.3351559999991878, 1.3352449999983946], [1.33688599999914, 1.3369429999984277], [1.3369529999999941, 1.3369839999995747], [1.7606059999998251, 1.7606659999983094], [1.7623249999996915, 1.762403999999151], [1.7624229999983072, 1.7624739999992016], [1.7991559999991296, 1.7992449999983364], [1.8008809999992081, 1.8009379999984958], [1.8009489999985817, 1.8009789999996428], [1.8107449999988603, 1.8107739999995829], [1.851104999999734, 1.8511669999988953], [1.8527659999999742, 1.8528449999994336], [1.8528629999982513, 1.8529129999988072], [2.0031509999989794, 2.0032379999993282], [2.004875999999058, 2.0049329999983456], [2.004942999999912, 2.0049729999991541], [2.0139149999995425, 2.0139449999987846], [2.0192309999983991, 2.0192649999989953], [2.0210939999997208, 2.0211109999982], [2.0234789999994973, 2.0234959999997955], [2.024463999998261, 2.0244799999982206], [2.0248269999992772, 2.0248399999982212], [2.0258789999988949, 2.0258939999985159], [2.0261009999994712, 2.0261149999987538], [2.0277809999988676, 2.0277969999988272], [2.0281179999983578, 2.0281309999991208], [2.0292399999998452, 2.0292549999994662], [2.0294539999995322, 2.0294669999984762], [2.0348759999997128, 2.0348959999992076], [2.0349149999983638, 2.0349299999998038], [2.0357549999989715, 2.0357739999999467], [2.0359349999998813, 2.0359489999991638], [2.037849999998798, 2.0378659999987576], [2.0379329999996116, 2.0379449999982171], [2.0388739999998506, 2.0388889999994717], [2.0389269999996031, 2.0389389999982086], [2.0550839999996242, 2.0551259999992908], [2.0551389999982348, 2.0551519999989978], [2.0570469999984198, 2.0570909999987634], [2.0571079999990616, 2.0571539999982633], [2.0584519999993063, 2.0584999999991851], [2.0599899999997433, 2.0600139999987732], [2.0600379999996221, 2.0600599999997939], [2.5432339999988471, 2.5432959999998275], [2.5448619999988296, 2.5449249999983294], [2.5449429999989661, 2.5449909999988449], [2.7304629999998724, 2.7305519999990793], [2.7306359999984124, 2.7306559999997262], [2.73205599999892, 2.7320749999998952], [2.7321039999987988, 2.7321299999985058], [2.7334319999990839, 2.7334549999995943], [2.7349079999985406, 2.7349239999985002], [2.7349539999995613, 2.7349709999998595], [2.8310259999998379, 2.8310719999990397], [2.8325139999997191, 2.8325459999996383], [2.8325739999982034, 2.8326129999986733], [2.8349259999995411, 2.8349669999988691], [2.8363919999992504, 2.8364069999988715], [2.8364369999999326, 2.8364549999987503], [2.9303479999998672, 2.9303999999992811], [2.9309529999991355, 2.9309729999986303], [2.9318399999992835, 2.9318699999985256], [2.9318979999989097, 2.9319389999982377], [2.9332439999998314, 2.9332839999988209], [2.9347119999983988, 2.9347269999998389], [2.934756999999081, 2.9347749999997177], [3.0303379999986646, 3.0303909999984171], [3.0309619999989081, 3.0309829999987414], [3.0318299999998999, 3.0318609999994806], [3.0318889999998646, 3.0319299999991927], [3.0332329999982903, 3.0332739999994374], [3.0346999999983382, 3.0347149999997782], [3.0347449999990204, 3.0347649999985151], [3.0631639999992331, 3.06318999999894], [3.0850319999990461, 3.085107999999309], [3.0865259999991395, 3.0865559999983816], [3.0865859999994427, 3.08661999999822], [3.1303809999990335, 3.130405999998402], [3.1309389999987616, 3.1309549999987212], [3.1367239999999583, 3.1367769999997108], [3.1382059999996272, 3.1382229999999254], [3.1382529999991675, 3.1382729999986623], [3.2303389999997307, 3.2303909999991447], [3.2309509999995498, 3.2309709999990446], [3.2318299999988085, 3.2318609999983892], [3.2318889999987732, 3.2319279999992432], [3.2332329999990179, 3.2332729999998264], [3.2346989999987272, 3.2347149999986868], [3.2347439999994094, 3.2347619999982271], [3.3303399999986141, 3.3303949999990436], [3.3309669999998732, 3.330986999999368], [3.3318319999998494, 3.33186299999943], [3.3318899999994755, 3.3319309999988036], [3.3332349999982398, 3.3332759999993868], [3.3347019999982876, 3.3347169999997277], [3.3347469999989698, 3.3347649999996065], [3.4303399999989779, 3.4303919999983918], [3.430951999998797, 3.4309719999982917], [3.4318329999987327, 3.4318629999997938], [3.4318909999983589, 3.4319319999995059], [3.4332369999992807, 3.4332779999986087], [3.43470299999899, 3.434717999998611], [3.4347479999996722, 3.4347659999984899], [3.530347999998412, 3.5303979999989679], [3.5309519999991608, 3.5309729999989941], [3.5318379999989702, 3.5318689999985509], [3.5318969999989349, 3.5319389999986015], [3.5332429999998567, 3.5332839999991847], [3.534708999999566, 3.5347249999995256], [3.5347539999984292, 3.5347729999994044], [3.9673429999984364, 3.9673649999986083], [3.9695699999992939, 3.9695899999987887], [3.9721259999987524, 3.9721939999999449], [3.9722119999987626, 3.9722699999983888], [4.1992109999991953, 4.1993029999994178], [4.2009429999998247, 4.2009999999991123], [4.2010099999988597, 4.2010409999984404], [5.1111689999997907, 5.1112279999997554], [5.1128219999991416, 5.1128999999982625], [5.1129179999988992, 5.1129679999994551], [5.1310429999994085, 5.1311289999994187], [5.1325349999988248, 5.1325559999986581], [5.1325819999983651, 5.132605999999214], [5.2304069999991043, 5.2304689999982656], [5.2309399999994639, 5.2309639999984938], [5.2319819999993342, 5.2320239999990008], [5.232042999999976, 5.2320899999995163], [5.2333889999990788, 5.2334369999989576], [5.2349269999995158, 5.2349499999982072], [5.2349739999990561, 5.234997999999905], [5.3304059999991296, 5.3304689999986294], [5.3309439999993629, 5.3309679999983928], [5.331981999999698, 5.3320279999988998], [5.3320459999995364, 5.3320919999987382], [5.3333919999986392, 5.3334409999988566], [5.3349299999990762, 5.3349529999995866], [5.3349769999986165, 5.3349999999991269], [5.4304099999990285, 5.4304729999985284], [5.430940999998711, 5.43096499999956], [5.4319869999999355, 5.4320289999996021], [5.4320469999984198, 5.4320949999982986], [5.4333929999993416, 5.4334409999992204], [5.4349309999997786, 5.43495399999847], [5.4349779999993189, 5.4350009999998292], [5.5304069999983767, 5.5304679999990185], [5.5309399999987363, 5.5309639999995852], [5.5319829999989452, 5.5320249999986117], [5.5320429999992484, 5.5320899999987887], [5.5333899999986897, 5.5334379999985686], [5.5349269999987882, 5.5349499999992986], [5.534974999998667, 5.5349969999988389], [5.96744999999828, 5.9675029999998515], [5.9700449999982084, 5.9700879999982135], [5.9723319999993691, 5.9723999999987427], [5.9724179999993794, 5.9724759999990056], [6.5310539999991306, 6.5310929999996006], [6.534972999999809, 6.5350019999987126], [6.5391700000000128, 6.5391979999985779], [6.5431639999987965, 6.543190999998842], [6.5471679999991466, 6.5471969999998691], [6.5511659999992844, 6.5511959999985265], [6.5551659999982803, 6.5551939999986644], [6.5591639999984181, 6.5591919999988022], [6.7232139999996434, 6.7232489999987592], [6.7350639999986015, 6.7351369999996678], [6.7366769999989629, 6.7367009999998118], [6.7367249999988417, 6.7367499999982101], [6.7551019999991695, 6.7551179999991291], [6.7643629999984114, 6.7643849999985832], [6.7869279999995342, 6.7869429999991553], [6.8630649999995512, 6.8631029999996827], [6.864702999999281, 6.8647409999994125], [6.8647579999997106, 6.8647969999983616], [6.8669339999996737, 6.8669819999995525], [6.8684069999999338, 6.86842599999909], [6.8684549999998126, 6.8684749999993073], [6.89915899999869, 6.8991779999996652], [6.8997289999988425, 6.8997409999992669], [6.9149429999997665, 6.9149649999999383], [6.9185819999984233, 6.9186249999984284], [6.9189359999982116, 6.9189609999993991], [6.920442999999068, 6.9204859999990731], [6.9205039999997098, 6.9205499999989115], [6.921848999998474, 6.9218969999983528], [6.9235159999989264, 6.9235349999999016], [6.9235909999988507, 6.923611999998684], [7.0550749999983964, 7.0551069999983156], [7.0567299999984243, 7.0567549999996118], [7.0589359999994485, 7.0589839999993274], [7.0590039999988221, 7.0590599999995902], [7.0603549999996176, 7.0603909999990719], [7.0617429999983869, 7.0617909999982658], [7.0631219999995665, 7.0631589999993594], [7.0634699999991426, 7.063492999999653], [7.0635169999986829, 7.0635399999991932], [7.0651359999992565, 7.0651539999998931], [7.0711909999990894, 7.0712109999985842], [7.091099999999642, 7.0911189999987982], [7.1137169999983598, 7.1137329999983194], [7.1590649999998277, 7.159111999999368], [7.1606339999998454, 7.1606789999987086], [7.1606959999990067, 7.1607389999990119], [7.1713219999983266, 7.1713719999988825], [7.1727929999997286, 7.1728139999995619], [7.1728389999989304, 7.1728619999994407], [7.1751299999996263, 7.1751449999992474], [7.1871509999982663, 7.1871629999986908], [7.1874469999984285, 7.1874599999991915], [7.1880989999990561, 7.1881109999994806], [7.1888189999990573, 7.1888319999998203], [7.2003479999984847, 7.2003609999992477], [7.2109229999987292, 7.2109439999985625], [7.2231279999996332, 7.2231719999999768], [7.2249469999987923, 7.2249829999982467], [7.2250009999988833, 7.225044999999227], [7.2263399999992544, 7.2263859999984561], [7.2278929999993125, 7.2279159999998228], [7.2279409999991913, 7.2279639999997016], [7.4257699999998295, 7.425822999999582], [7.4270069999984116, 7.4270389999983308], [7.4274739999982557, 7.4275199999992765], [7.4275389999984327, 7.42758799999865], [7.4288849999993545, 7.428939999999784], [7.4304269999993267, 7.4304539999993722], [7.4304769999998825, 7.430501999999251], [7.43092599999909, 7.430940999998711], [7.4316319999998086, 7.4316459999990911], [7.4321829999989859, 7.4321959999997489], [7.4329929999985325, 7.433006999999634], [7.4347069999985251, 7.4347199999992881], [7.4807669999991049, 7.4808409999986907], [7.482427999999345, 7.4825049999999464], [7.4825229999987641, 7.48257299999932], [7.6391549999989365, 7.6392429999996239], [7.6408799999990151, 7.6409379999986413], [7.6409479999983887, 7.6409779999994498], [8.0634709999994811, 8.063533999998981], [8.0651289999987057, 8.06520399999863], [8.0652219999992667, 8.0652739999986807], [8.1031539999985398, 8.1032409999988886], [8.1048789999986184, 8.1049369999982446], [8.1049479999983305, 8.1049789999997301], [8.1135899999990215, 8.1136199999982637], [8.1551729999991949, 8.1552359999986948], [8.1568329999990965, 8.1569099999996979], [8.1569279999985156, 8.1569779999990715], [8.2669789999999921, 8.2670479999997042], [8.2670989999987796, 8.2671169999994163], [8.2684689999987313, 8.2684879999997065], [8.2685169999986101, 8.268540999999459], [8.3186599999989994, 8.3186899999982415], [8.3189409999995405, 8.3189509999992879], [8.318967999999586, 8.3189909999982774], [8.3213469999991503, 8.3213969999997062], [8.3214129999996658, 8.3215079999990849], [8.32155099999909, 8.3215729999992618], [8.3229229999997187, 8.3229609999998502], [8.3239779999985331, 8.3240149999983259], [8.3263649999989866, 8.3263889999998355], [8.3264119999985269, 8.3264369999997143], [8.3279819999988831, 8.3280009999998583], [8.3301529999989725, 8.3301669999982551], [8.3315499999989697, 8.3315809999985504], [8.3315919999986363, 8.3316029999987222], [8.3765559999992547, 8.376615999999558], [8.3782179999998334, 8.3782649999993737], [8.3782830000000104, 8.3783239999993384], [8.5352049999983137, 8.5352839999995922], [8.5368359999993118, 8.5368599999983417], [8.5368839999991906, 8.536908999998559], [8.9672699999991892, 8.9672949999985576], [8.9695649999994203, 8.9696049999984098], [8.9696529999982886, 8.9696889999995619], [9.0071549999993294, 9.0072419999996782], [9.008879999999408, 9.0089369999986957], [9.0089469999984431, 9.0089779999998427], [9.0174909999986994, 9.017519999999422], [9.0266649999994115, 9.0266879999999219], [9.0288059999984398, 9.0288299999992887], [9.0300189999998111, 9.0300369999986287], [9.0314469999993889, 9.0314649999982066]]}, \"kworker/u12:2-2001\": {\"1\": [[9.0247339999987162, 9.0247609999987617]], \"4\": [[9.0248579999988578, 9.0266709999996237]]}, \"ksoftirqd/0-3\": {\"0\": [[2.0389389999982086, 2.0389629999990575], [6.7351369999996678, 6.7351669999989099], [6.8869949999989331, 6.8870289999995293], [6.8909659999990254, 6.8909859999985201], [7.3630619999985356, 7.3630749999992986], [8.3273389999994833, 8.3274079999991955], [8.3328359999995882, 8.3328889999993407], [8.3389749999987544, 8.3390199999994365], [8.3430449999996199, 8.3434299999989889], [8.3460899999990943, 8.3461319999987609], [8.3461469999983819, 8.3461569999999483]]}, \"ksoftirqd/5-28\": {\"5\": [[0.43915699999888602, 0.43917799999871932], [1.13911299999927, 1.1391339999991033], [2.0511589999987336, 2.0511769999993703], [6.9190409999991971, 6.9190979999984847], [8.290406999998595, 8.2904499999986001], [8.2919069999989006, 8.2919479999982286], [8.2949599999992643, 8.2949959999987186], [8.2967799999987619, 8.2968329999985144], [8.2968469999996159, 8.2968609999988985], [8.3084399999988818, 8.3085389999996551], [8.3152309999986755, 8.3153139999994892]]}, \"kworker/5:1H-137\": {\"5\": [[8.2968329999985144, 8.2968469999996159]]}, \"ksoftirqd/3-20\": {\"3\": [[0.0061139999997976702, 0.0062359999992622761], [0.0062889999990147771, 0.0063279999994847458], [0.0084769999994023237, 0.0085439999984373571], [0.0085569999992003432, 0.0085699999999633292], [1.0156129999995755, 1.0156439999991562], [3.0637019999994664, 3.0637339999993856], [5.1115129999998317, 5.1115609999997105], [6.2353919999986829, 6.2355489999990823], [6.235579999998663, 6.2356139999992592], [6.2382649999999558, 6.2384099999999307], [6.2384369999999763, 6.238469999998415], [7.1593619999985094, 7.1594129999994038], [8.2867969999988418, 8.2868709999984276], [8.2886669999988953, 8.2887359999986074]]}, \"rs:main Q:Reg-262\": {\"3\": [[0.0017779999998310814, 0.0020019999992655357], [7.2104889999991428, 7.2106169999988197], [9.0288219999983994, 9.0289429999993445]], \"4\": [[0.42315599999892584, 0.42323799999940093], [0.42470799999864539, 0.42477599999983795], [6.9002299999992829, 6.900352999999086], [7.0524829999994836, 7.0526199999985693], [7.0661809999983234, 7.0663049999984651], [7.2011409999995522, 7.2012909999994008], [7.4258789999985311, 7.4261229999992793], [8.3303779999987455, 8.330510999998296], [8.3317219999989902, 8.3318099999996775]], \"5\": [[0.4212069999994128, 0.42138399999930698], [1.1219279999986611, 1.1221019999993587], [1.1238669999984268, 1.12400499999967], [1.130950999999186, 1.1310659999999189], [6.8900059999996301, 6.890146999998251], [7.4274779999996099, 7.4276189999982307], [7.4348799999988842, 7.435020999999324], [8.3331619999989925, 8.3332389999995939], [9.0300619999998162, 9.0301459999991494]]}, \"kworker/u12:0-1960\": {\"1\": [[0.41386299999976472, 0.41389299999900686]], \"4\": [[0.41398999999910302, 0.41494299999976647]]}, \"kworker/u12:0-1963\": {\"1\": [[1.1163699999997334, 1.1163979999982985]], \"5\": [[1.1165069999988191, 1.118955999998434]]}, \"kworker/u12:2-1984\": {\"2\": [[6.7623739999999088, 6.7624059999998281]], \"3\": [[6.7624939999986964, 6.764365999999427]]}, \"kworker/u12:2-1987\": {\"2\": [[6.9236179999988963, 6.923650999999154]], \"3\": [[6.9236719999989873, 6.9254779999992024]]}, \"modprobe-1984\": {\"3\": [[6.7644069999987551, 6.7644219999983761]]}, \"modprobe-1987\": {\"3\": [[6.9255189999985305, 6.9255349999984901]]}, \"sh-2003\": {\"4\": [[9.0311589999982971, 9.0313319999986561]], \"5\": [[9.0314259999995556, 9.0314649999982066]]}, \"kschedfreq:1-1678\": {\"1\": [[0.0029479999993782258, 0.002977999998620362], [0.0036989999989600619, 0.003733999999894877], [0.0059649999984685564, 0.0059759999985544709], [0.0061879999993834645, 0.0062029999990045326], [0.21509099999821046, 0.21511099999952421], [0.21680499999820313, 0.21685699999943608], [0.21693899999991118, 0.21696799999881478], [0.35904499999924155, 0.3591069999984029], [0.36075899999923422, 0.36078599999927974], [0.36094999999841093, 0.36096299999917392], [0.40902899999855435, 0.40903899999830173], [0.41092099999877973, 0.41092899999966903], [0.41106499999841617, 0.41107099999862839], [0.41391899999871384, 0.41394299999956274], [0.41496199999892269, 0.41498299999875599], [0.41557099999954517, 0.41561999999976251], [0.41570499999943422, 0.41573499999867636], [0.41704699999900186, 0.41707099999985076], [0.41814699999849836, 0.41816999999900872], [0.42065999999977066, 0.42067499999939173], [0.42070999999850756, 0.42072299999927054], [0.42225299999881827, 0.42226299999856565], [0.42324599999847123, 0.42325799999889568], [0.42690799999945739, 0.4269189999995433], [0.47091399999953865, 0.4709419999999227], [0.47265499999957683, 0.47271199999886448], [0.47273299999869778, 0.4727629999997589], [0.9671809999999823, 0.96720999999888591], [1.1102669999982027, 1.1103279999988445], [1.1111339999988559, 1.1111519999994925], [1.1119689999995899, 1.1119869999984076], [1.1121039999998175, 1.1121189999994385], [1.116359999999986, 1.1163699999997334], [1.1164219999991474, 1.1164299999982177], [1.1189339999982622, 1.1189439999998285], [1.1350059999986115, 1.1350159999983589], [1.1623119999985647, 1.1623469999994995], [1.1639679999989312, 1.1640089999982592], [1.164028999999573, 1.1640559999996185], [1.215143999999782, 1.2151699999994889], [1.7191059999986464, 1.7191309999998339], [1.9670639999985724, 1.9670909999986179], [2.0152799999996205, 2.0153429999991204], [2.0161099999986618, 2.0161309999984951], [2.0169329999989714, 2.0169429999987187], [2.0172249999995984, 2.0172399999992194], [2.0182609999992565, 2.0182679999998072], [2.0183929999984684, 2.0184009999993577], [2.0191189999986818, 2.0191289999984292], [2.0194789999986824, 2.0194879999999102], [2.0209319999994477, 2.0209409999988566], [2.0315919999993639, 2.0316019999991113], [2.0323499999994965, 2.0323579999985668], [2.0327959999995073, 2.0328049999989162], [2.0344529999983934, 2.0344599999989441], [2.0348189999986062, 2.0348299999986921], [2.0348759999997128, 2.034881999999925], [2.0673429999988002, 2.0673529999985476], [2.2151259999991453, 2.2151609999982611], [2.2169079999985115, 2.2169669999984762], [2.2175739999984216, 2.2176259999996546], [2.4460439999984374, 2.4461069999997562], [2.4468779999988328, 2.4469689999987168], [2.4477109999988897, 2.4477329999990616], [2.4479589999991731, 2.4479739999987942], [2.4980739999991783, 2.4980899999991379], [2.4989229999991949, 2.4989369999984774], [2.499653999999282, 2.4996779999983119], [2.4999669999997423, 2.4999909999987722], [2.5012969999988854, 2.5013299999991432], [2.5028629999997065, 2.5028709999987768], [2.5031579999995301, 2.503166999998939], [2.6302759999998671, 2.6303119999993214], [2.6309349999992264, 2.630948999998509], [2.6318909999990865, 2.6319159999984549], [2.6323069999998552, 2.6323329999995622], [2.6336379999993369, 2.6336699999992561], [2.6352249999999913, 2.6352329999990616], [2.6352779999997438, 2.6352869999991526], [3.9671949999992648, 3.9672219999993104], [3.9695019999999204, 3.9695259999989503], [3.9695529999989958, 3.9695759999995062], [3.9709309999998368, 3.9709449999991193], [3.972234999999273, 3.972247999998217], [3.9748159999999189, 3.9748259999996662], [3.9752119999993738, 3.9752209999987826], [4.1303269999989425, 4.1303570000000036], [4.1309209999999439, 4.1309289999990142], [4.1317269999999553, 4.1317419999995764], [4.1321279999992839, 4.132142999998905], [4.1334459999998217, 4.1334639999986393], [4.1350259999999253, 4.1350339999989956], [4.1350779999993392, 4.1350869999987481], [4.2151279999998224, 4.2151639999992767], [4.2168659999988449, 4.2169129999983852], [4.2170819999992091, 4.217105999998239], [4.2303119999996852, 4.2303349999983766], [4.2309329999989131, 4.2309439999989991], [4.2672079999993002, 4.2672419999998965], [4.268778999999995, 4.2687889999997424], [4.2689639999989595, 4.2689749999990454], [4.3303259999993315, 4.3303569999989122], [4.330921999999191, 4.3309319999989384], [4.3319089999986318, 4.3319269999992684], [4.3322149999985413, 4.3322339999995165], [4.3335369999986142, 4.3335599999991246], [4.3351009999987582, 4.3351089999996475], [4.3353989999995974, 4.3354069999986677], [4.4302749999988009, 4.4303119999985938], [4.4309429999993881, 4.4309569999986707], [4.4318709999988641, 4.4318969999985711], [4.4321860000000015, 4.4322119999997085], [4.4335169999994832, 4.433549999999741], [4.4350839999988239, 4.4350919999997132], [4.4353809999993246, 4.4353899999987334], [4.5303269999985787, 4.5303579999999783], [4.5309359999992012, 4.5309489999999641], [4.5319189999991067, 4.5319449999988137], [4.5322349999987637, 4.5322609999984707], [4.5335659999982454, 4.5335979999999836], [4.535132999999405, 4.5351409999984753], [4.5354309999984252, 4.5354399999996531], [4.630286999999953, 4.6303199999983917], [4.6309429999982967, 4.6309569999993982], [4.6318779999983235, 4.6319039999998495], [4.6321939999997994, 4.6322199999995064], [4.6335239999989426, 4.6335559999988618], [4.6350909999982832, 4.6350999999995111], [4.6353889999991225, 4.6353979999985313], [4.7430589999985386, 4.7430899999999383], [4.7447559999982332, 4.7447969999993802], [4.7448859999985871, 4.7449139999989711], [4.7471349999996164, 4.7471599999989849], [4.7511459999986982, 4.7511989999984507], [4.7512139999998908, 4.7512319999987085], [4.7528859999983979, 4.7529149999991205], [4.7530059999990044, 4.7530229999993026], [4.8032489999986865, 4.8032849999999598], [4.8049819999996544, 4.8050359999997454], [4.805116999999882, 4.8051479999994626], [4.9671979999984615, 4.967226999999184], [5.2152039999982662, 5.215238999999201], [5.9671779999989667, 5.9672139999984211], [5.96723799999927, 5.9672729999983858], [5.9697089999990567, 5.96972999999889], [5.9700119999997696, 5.9700339999999414], [5.9709309999998368, 5.9709419999999227], [5.9713399999982357, 5.9713539999993372], [5.9724399999995512, 5.972459999999046], [5.9740209999999934, 5.9740289999990637], [5.9744159999991098, 5.9744249999985186], [6.1303259999986039, 6.1303570000000036], [6.1309159999982512, 6.1309239999991405], [6.1317279999984748, 6.1317429999999149], [6.1321289999996225, 6.1321439999992435], [6.1334469999983412, 6.1334649999989779], [6.1350269999984448, 6.1350349999993341], [6.1350799999981973, 6.1350879999990866], [6.2151269999994838, 6.2151629999989382], [6.2168869999986782, 6.2169339999982185], [6.2171679999992193, 6.2171909999997297], [6.2303089999986696, 6.23033199999918], [6.2309469999981957, 6.2309579999982816], [6.267294999999649, 6.2673299999987648], [6.2688869999983581, 6.2688949999992474], [6.2692779999997583, 6.2692889999998442], [6.3303280000000086, 6.3303579999992508], [6.3309259999987262, 6.3309359999984736], [6.3319289999999455, 6.3319479999991017], [6.3323299999992742, 6.3323499999987689], [6.3336529999996856, 6.3336759999983769], [6.3352359999989858, 6.3352439999998751], [6.335626999998567, 6.3356369999983144], [6.4302819999993517, 6.430315999999948], [6.4309319999993022, 6.4309499999999389], [6.4318959999982326, 6.43192099999942], [6.432305999998789, 6.4323329999988346], [6.4336359999997512, 6.433669000000009], [6.4352229999985866, 6.4352309999994759], [6.4356139999999868, 6.4356229999993957], [6.5303289999992558, 6.5303599999988364], [6.5309689999994589, 6.5309849999994185], [6.5319979999985662, 6.5320349999983591], [6.5320769999998447, 6.5321069999990868], [6.5334059999986493, 6.5334419999999227], [6.534959999999046, 6.5349709999991319], [6.5350179999986722, 6.5350289999987581], [6.7536539999982779, 6.7536799999998038], [6.7549569999991945, 6.7549739999994927], [6.7553849999985687, 6.7554159999999683], [6.7555869999996503, 6.7556159999985539], [6.7569259999982023, 6.7569659999990108], [6.7584589999987656, 6.7584719999995286], [6.7585039999994478, 6.7585129999988567], [6.7624369999994087, 6.7624479999994946], [6.7629169999981968, 6.7629249999990861], [6.7751919999991514, 6.7752049999999144], [6.7764629999983299, 6.7764689999985421], [6.7995559999999386, 6.7995649999993475], [6.8078459999996994, 6.8078539999987697], [6.8086209999983112, 6.8086289999992005], [6.8510799999985466, 6.8511059999982535], [6.8526979999987816, 6.8527389999999286], [6.8527579999990849, 6.8527849999991304], [6.8551359999983106, 6.855160999999498], [6.8591469999992114, 6.8591979999982868], [6.8607439999996132, 6.8607609999999113], [6.8607899999988149, 6.8608009999989008], [6.863058999999339, 6.8630699999994249], [6.8633029999982682, 6.8633139999983541], [6.8916709999994055, 6.891684999998688], [6.8993519999985438, 6.8993679999985034], [6.9029079999982059, 6.9029149999987567], [6.911099999999351, 6.9111629999988509], [6.9128249999994296, 6.9128549999986717], [6.9128799999998591, 6.9129059999995661], [6.9149209999995946, 6.914956999999049], [6.9166409999997995, 6.9166499999992084], [6.9166839999998047, 6.916693999999552], [6.9236839999994118, 6.9236949999994977], [6.9255159999993339, 6.9255229999998846], [6.966919999998936, 6.9669359999988956], [6.9673059999986435, 6.9673279999988154], [6.969649999999092, 6.9696749999984604], [6.9697459999988496, 6.9697799999994459], [6.9699469999995927, 6.9699789999995119], [6.9712859999999637, 6.9713279999996303], [6.9730279999985214, 6.9730559999989055], [6.9731469999987894, 6.9731609999998909], [7.054573999999775, 7.0546039999990171], [7.054932999999437, 7.0549499999997352], [7.0563729999994393, 7.05640399999902], [7.0565759999990405, 7.0566099999996368], [7.0579209999996237, 7.0579429999997956], [7.0590329999995447, 7.0590569999985746], [7.061491999998907, 7.061506999998528], [7.0616989999998623, 7.0617149999998219], [7.089070999998512, 7.0890829999989364], [7.0909130000000005, 7.0909209999990708], [7.1118179999994027, 7.1118249999999534], [7.1271179999985179, 7.127145999998902], [7.1289159999996627, 7.1289569999989908], [7.1290449999996781, 7.1290729999982432], [7.1311389999991661, 7.1311669999995502], [7.1334329999990587, 7.1334889999998268], [7.1335029999991093, 7.1335199999994074], [7.1351799999993091, 7.1351979999999458], [7.1353299999991577, 7.1353419999995822], [7.1392589999995835, 7.1392769999984012], [7.1751179999992019, 7.1751319999984844], [7.1753509999998641, 7.1753609999996115], [7.1855259999992995, 7.185550999998668], [7.1870129999988421, 7.1870339999986754], [7.1873479999994743, 7.1873819999982516], [7.1874099999986356, 7.187432999999146], [7.188732999999047, 7.1887699999988399], [7.1901979999984178, 7.1902069999996456], [7.1902429999991, 7.1902529999988474], [7.2023279999993974, 7.2023379999991448], [7.2029539999984991, 7.2029599999987113], [7.205298999999286, 7.2053079999986949], [7.2077349999999569, 7.2077469999985624], [7.2151149999990594, 7.2151239999984682], [7.2404409999999189, 7.2404649999989488], [7.242086999998719, 7.242127999999866], [7.2422169999990729, 7.2422439999991184], [7.3629449999989447, 7.3629849999997532], [7.3646639999988111, 7.3646809999991092], [7.3649589999986347, 7.3649699999987206], [7.4134959999992134, 7.4135049999986222], [7.4150779999999941, 7.4150989999998274], [7.4
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It would be more clear if these would print a success message when the test is passed as there is no output from it otherwise. The same for test_task_placement.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

True, will add this.

},
"outputs": [],
"source": [
"utils = t.get_task_utils_df(experiment)"
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

While I understand why you decided not to print the data frames for this call and the ones below, I for one would like to have more information in these test notebooks as it gives me more confidence in the test. If you have some calls to some functions that do not return anything it might make people think that something is wrong and maybe the test is not doing what it's suppose to be doing. I think an option would be to print the traces and plots first and maybe have a debug section after that where the data frames are printed and the process is explained in a few sentences.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The functions do return something, it's just assigned to a variable, I wouldn't expect to see any output from running that code. But you're right that this is unclear.

How about if we print the docstring for the function before calling it, then you basically get a detailed description of what's going on.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sorry! I did not make myself clear. I did not mean to say that the calls don't return anything but that you can't see anything being printed as a result of them being run. I suppose printing the docstrings could work but what I meant to say is that it would be nice to have a section where you can see more details on the test being run. Details on the workload, the data frames obtained, something that could represent the basis of a debugging process.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't intend for this to be for debugging the tests, after all they are absolutely flawless in every single way. Rather it's intended as a starting point for looking at what element of the kernel behaviour was judged to be faulty (since when you have a failure from a lisa-test run it's pretty much "computer says no").

Basically the only thing I mean for this to show is a plot of the workload task residency and a plot of the energy estimations, so you can see which part of the workload run was judged to be mis-scheduled. I don't imagine users diving python in order to do that, but rather just taking a look and seeing "oh yeah this 5% task ran on a big CPU at t=3.5" then going back to the kernel to figure out why that happened.

Nonetheless I'll add some more english to explain what is going on here.

"collapsed": true
},
"source": [
"# Run Generic Automated EAS tests\n",
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It would be good to have more information about what the tests report and how the evaluation is done. As you say below "These tests make estimation of the energy efficiency of task placements.. " + "by.. ". It would also be nice to make clear the distinction between the estimated observed power consumption (estimated based on the energy model provided and the observed task placement decisions made) and the expected power consumption (estimated based on the energy model provided and the expected optimal task placements). This can be done either here at the beginning or further in the notebook where the estimated and expected data frames are obtained.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

True. I will try to clarify in the notebook.

@bjackman
Copy link
Contributor Author

OK, thanks for the review. I've responded to the comments to remind myself what changes I need to make, and I'll come back once I have time to make the code changes.

@bjackman bjackman force-pushed the energy-model-rfc-v2 branch from 2f4417c to 8224f68 Compare January 20, 2017 17:57
@bjackman
Copy link
Contributor Author

bjackman commented Jan 20, 2017

OK I've pushed a new version where I've tried to address your comments:

  • Fixing the minor stuff
  • I added some more text to the notebook to explain what's going on. Also some of the calls that you commented on actually weren't necessary so I removed them. Hopefully it's a bit more easy to understand (assuming people actually read my walls of text 😬)
  • Fixed the order of the columns in power DataFrames (For juno you get [(1), (2), (1, 2), (0), (3), (4), (5), (0, 3, 4, 5)] i.e. big CPUs followed by big cluster, then LITTLE CPUs followed by LITTLE cluster).
  • Fixed the remaining bl references in acceptance.py.

Copy link
Contributor

@ionela-voinescu ionela-voinescu left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thank you very much for changes! The details in the notebook make a world of difference. They will be read!

"name": "stdout",
"output_type": "stream",
"text": [
"Maximum estimated system energy: 1725\n",
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

These are no longer printed (based on a commit merged a short while ago).

"source": [
"This plot shows how the power estimation for the observed scheduling pattern varies from the estimated power for an ideal schedule.\n",
"\n",
"Where the plot for the observed energy is higher than the observed energy, the system was wasting energy (e.g. a low-intensity task was unnecessarily placed on a high-power CPU). Where the observed plot is *lower* than the ideal plot, this means the system was *too* (e.g. a high-intensity task was placed on a low-power CPU that could not accomadate its compute requirements)."
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

.. is higher than the ideal energy plot..
Although a reword of it might work: "Where the values for the observed energy are higher than the ideal energy values..". The same for the following sentence. It's strange to say "where the plot is higher". Maybe a better wording would be "where the plot line is higher.. ".

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Good spot. Good point about "plot" vs "values" will reword this.

" print \"test_task_placement failed:\"\n",
" print e\n",
"else:\n",
" print \"test_task_placement passed\""
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Awesome! :D

"import logging\n",
"from conf import LisaLogging\n",
"LisaLogging.setup()\n",
"logging.getLogger().setLevel(logging.WARNING)\n",
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Isn't this the same as saying: LisaLogging.setup(level=logging.WARNING)?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yep, will change.


class EnergyModelWakeMigration(EnergyModelTest):
"""
Test EAS for tasks alternating beetween 10% and 50%
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

"Test EAS for tasks alternating beetween 10% and 50% over 4 seconds". It would be good to specify the duration of the entire workload as for the time axis of the plot to be better understood. The same for the other classes. Some of them include this information but some of them do not.

@bjackman bjackman force-pushed the energy-model-rfc-v2 branch from 8224f68 to c88784f Compare January 23, 2017 13:58
@bjackman
Copy link
Contributor Author

Updated

@bjackman bjackman force-pushed the energy-model-rfc-v2 branch 5 times, most recently from 6d03c7c to 869c3f8 Compare January 30, 2017 17:49
@bjackman bjackman force-pushed the energy-model-rfc-v2 branch from 869c3f8 to d329e36 Compare February 1, 2017 19:09
@bjackman bjackman added this to the 17.02 milestone Feb 13, 2017
@bjackman bjackman force-pushed the energy-model-rfc-v2 branch from d329e36 to f966f72 Compare February 16, 2017 16:30
Copy link
Contributor

@credp credp left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This looks really nice :) I'm just using it now.

One comment as we just mentioned.

It would be pretty nice if when we get a fail like:
AssertionError: Estimated 984.663979795 bogo-Joules to run workload, expected 741.998222222
there was some indication what the 'best' task placement would have looked like - because an interested engineer is likely to load up the trace file and have a look to see what the placement was. It should be sufficient to just return the first one, as an example.

Copy link
Contributor

@derkling derkling left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ok, I can finally confirm that going thought the review of this code can brings great health benefits to everybody life! ❤️

Following are some comments on possible updates and small improvements, mostly on the documentation side, and few small little things on the code side.

Here is also a branch with some patches related to comments:
https://github.com/derkling/lisa/tree/energy-model-rfc-v2-review

Overall: great work! 👍 It's pretty ready for merge for me too! ;-)

platform = Platform(model='MT8173')
self.__modules = ['bl', 'cpufreq']


Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

nit-pick: we should add a comment for consistency

possible PATCH in the branch for that!

(1200000, ActiveState(capacity=1024, power=670))
])

cpu_idle_states = OrderedDict([('WFI', 15), ('cpu-sleep', 0), ('cluster-sleep', 0)])
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

let's format one per line for consistency.

from collections import OrderedDict

cluster_active_states = OrderedDict([
(208000, ActiveState(capacity=178, power=16)),
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Perhaps we can make a better usage of spaces to have more aligned data... will send a possible reformatting patch.

possible PATCH in the branch for this and other minor comments on EM formatting.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sure. I'm a little bit awkward about doing this because for some reason my PEP8 religion forbids it but TBH it is clearer so let's apply it here.


- A CPU topology, representing the physical (cache/interconnect) topology of
the CPUs. Each node stores the energy usage of that node's hardware when
it is in each active or idle state. They also store a compute capacity eat
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

s/eat/at/

Just like EnergyModelNode except that ``active_states`` and ``idle_states``
aren't required.
"""
def __init__(self, active_states=None, idle_states=None, *args, **kwargs):
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code it's already complex by its own... I would rather prefer to avoid args/kwargs when not really required.
Seems that here it's just to "write less code", but since this is just a subclass of EnergyModelNote, why not having:

def __init__(self, active_states=None, idle_states=None,
             cpu=None, children=None, name=None):

it requires one less jump when reading the code

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sure, it seems clearer.

single-phase periodic RT-App tasks is an example of a
suitable workload for this model.
:returns: List of ``util_distrib`` s representing distribution of work
under optimal task placments see
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

s/placments/placements/

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

mm.. now I'm thinking about....

🎈 CI FOR SPELLING 🎈

for task, cpu in placement.items():
util[cpu] += capacities[task]
util = tuple(util)

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Small optimisations but here we can easily do:

candidates = {}
excluded = []
for cpus in product(self.cpus, repeat=len(tasks)):
    ...
    util = tuple(util)
    if (any([u > 1024 for u in util]) or
        util in excluded):
        continue
    if not candidates:
        ...
        if not overutilized:
            ....
        else:
            excluded.append(util

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nice, thanks!

tasks = capacities.keys()

num_candidates = len(self.cpus) ** len(tasks)
self._log.info(
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This clobbers the awesome test output... should we better use debug?
Same for the DONE log at the end...

('WFI', 5),
('cpu-sleep-0', 5),
('cluster-sleep-0', 1),
])
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thinking now, looking at the tests, could be useful to have a minimal sanity check on the proposed energy model data.
For example, energy in active states should always be monotonically decreasing... frequencies monotonically increasing... and than have some assert on top of these conditions.

Copy link
Contributor Author

@bjackman bjackman Feb 23, 2017

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sounds good.

I did also implement a method to print various observations about the energy model but didn't include it here. It's more for warnings: "this EM is technically valid but doesn't make sense" rather than "this is a totally invalid EM" though.

[0, 1, 0, 0]])

def test_single_big(self):
placements = em.get_optimal_placements({'task0': 350})
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

As a really general comment, all the following tests are quite dependant on the hardcoded values of the EM described before, which is fine until someone does not want to slightly change the EM definition to add yet another test.

Would not be more robust to express the tests in terms of EM data?

Thus, for example this 350 should be replaced by the max capacity defined by cluster_big's active states?

But I don't really care if you want to keep the test as it is now... perhaps just add a bold warning in the comment at the beginning to info the malicious user that he can hurt himself by changing only the EM parameters without updating the following tests.

Copy link
Contributor Author

@bjackman bjackman Feb 23, 2017

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yeah, this was a deliberate decision at the beginning of writing it, because I thought if I expressed it in terms of the data I'd probably make the exact same mistakes as I'd made in the code under test. So I wanted to work them out by hand then check them with my model.

However I agree that as the code grew it started to look like less of a smart idea! I'm going to keep it as it is for now, but add a comment. Probably if we need to extend these tests it will be faster to add new ones in terms of the data rather than go back and re-factor the hard coded stuff. Anyway, the risk of breaking things isn't such a sword of Damocles, the beauty of unit tests is that you can tell straight away :D

Brendan Jackman added 4 commits February 23, 2017 17:00
This class provides a model of systems with:

 - CPU capacity at different frequencies.
 - Power usage at different frequency.
 - Power usage in different idle states.

The model is aware of topologically shared resources (clusters),
topological dependencies for idle states (power domains) and frequency
domains.

The intended use case for this model is for testing energy-aware
scheduling in a platform-agnostic way.

Also provided in this commit are:

 - Some very simple tests for EnergyModel
 - Examples of EnergyModel for Juno r0, HiKey and Pixel devices
 - Changes to TestEnv to allow the provided EnergyModels to be automatically
   loaded

This new interface provides scope for a lot of refactoring (for example the
`nrg_model` data could be removed), but that is left for a later date.
 - Add a flag `skip_on_smp` that means that the test is not applicable on symmetric
   systems. Use the `is_heterogeneous` property of EnergyModel to determine this
   case.
 - Replace reference to `bl` devlib module with use of the `biggest_cpus` and
   `littlest_cpus` properties of EnergyModel
This is useful for analysing traces to diagnose failures
Only the "early starter" tasks can be expected to start on a big CPU.
Brendan Jackman added 3 commits February 23, 2017 17:00
These tests take an EnergyModel describing the platform, and a workload. The
workload is examined to find estimated "optimal" task placements, and
estimations of those task placements' energy efficiency. The workloads are run
on the target, and a trace is collected. This trace is processed to find the
task placement that was actually observed. Using the same metrics that were used
to decide on "optimal" behaviour, the observed behaviour is evaluated for energy
efficiency. If this energy efficiency is significantly worse than the estimated
"optimal" value then a failure is raised.

Excellent energy efficiency can be achieved by packing all tasks onto the least
capable CPU at the lowest clock frequency, but that's not likely to be
desirable. Energy efficiency is not the only criterion for good scheduler
behaviour, so another test is provided using RT-App's "slack" measurement to
assert that required throughput was provided to the workload.

Overall, this aims to allow the same tests to be run on any platform once it has
been described by an EnergyModel.

By making assertions about the estimated *efficiency* of the behaviour, rather
than the behaviour itself, the tests are made more flexible: a given workload
may be serviceable by two entirely different scheduling strategies where one is
only slightly more efficient than the other. In this case, the tests will
automatically allow either strategy to pass. The downside to this approach is
that when a test fails, it is not always obvious what scheduler behaviour was
expected or how the observed behaviour differed from this. It may be possible to
later add more user-visible representation of this information to aid failure
diagnoses.
This notebook is pretty sparse, it just provides the bare minimum to run the
test and do the most basic analysis.
@bjackman bjackman force-pushed the energy-model-rfc-v2 branch from f966f72 to b9ff4ef Compare February 23, 2017 17:01
The new test_energy_model.py uses traces, which results in matplotlib being
imported. So add it to the minimal set of pip requirements for Travis.
@derkling derkling merged commit 4792a36 into ARM-software:master Feb 23, 2017
@bjackman bjackman deleted the energy-model-rfc-v2 branch February 24, 2017 13:46
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants