Patrick Bellasi | 8508d73 | 2016-01-21 10:59:55 +0000 | [diff] [blame] | 1 | |
| 2 | *__NOTE__: This is still a work in progress project, suitable for:* |
Brendan Jackman | 894943b | 2017-01-18 11:29:55 +0000 | [diff] [blame] | 3 | *developers, contributors and testers.* |
Brendan Jackman | 5f20ec0 | 2017-01-18 17:32:55 +0000 | [diff] [blame] | 4 | *None of the provided tests have been extensively evaluated as of January 2017.* |
Patrick Bellasi | 8508d73 | 2016-01-21 10:59:55 +0000 | [diff] [blame] | 5 | |
Patrick Bellasi | dc2e075 | 2015-11-13 19:20:01 +0000 | [diff] [blame] | 6 | # Introduction |
| 7 | |
Robin Randhawa | 77c8ecc | 2016-01-21 12:26:29 +0000 | [diff] [blame] | 8 | The LISA project provides a toolkit that supports regression testing and |
Brendan Jackman | 73980cc | 2017-01-18 11:30:33 +0000 | [diff] [blame] | 9 | interactive analysis of Linux kernel behavior. LISA stands for Linux |
Robin Randhawa | 77c8ecc | 2016-01-21 12:26:29 +0000 | [diff] [blame] | 10 | Integrated/Interactive System Analysis. LISA's goal is to help Linux |
| 11 | kernel developers to measure the impact of modifications in core parts |
Brendan Jackman | 73980cc | 2017-01-18 11:30:33 +0000 | [diff] [blame] | 12 | of the kernel. The focus is on the scheduler (e.g. EAS), power management and |
| 13 | thermal frameworks. However LISA is generic and can be used for other purposes |
| 14 | too. |
Patrick Bellasi | dc2e075 | 2015-11-13 19:20:01 +0000 | [diff] [blame] | 15 | |
Brendan Jackman | 73980cc | 2017-01-18 11:30:33 +0000 | [diff] [blame] | 16 | LISA has a "host"/"target" model. LISA itself runs on a *host* machine, and uses |
| 17 | the [devlib](https://github.com/ARM-software/lisa) toolkit to interact with the |
| 18 | *target* via SSH, ADB or telnet. LISA is flexible with regard to the target OS; |
| 19 | its only expectation is a Linux kernel-based system. Android, GNU/Linux and |
| 20 | busybox style systems have all been used. |
| 21 | |
| 22 | LISA provides features to describe workloads (notably using |
| 23 | [rt-app](https://github.com/scheduler-tools/rt-app)) and run them on targets. It |
| 24 | can collect trace files from the target OS (e.g. systrace and ftrace traces), |
| 25 | parse them via the [TRAPpy](https://github.com/ARM-software/trappy) |
| 26 | framework. These traces can then be parsed and analysed in order to examine |
| 27 | detailed target behaviour during the workload's execution. |
| 28 | |
| 29 | Some LISA features may require modifying the target OS. For example, in order to |
| 30 | collect ftrace files the target kernel must have CONFIG_DYNAMIC_FTRACE enabled. |
| 31 | |
| 32 | There are two "entry points" for running LISA: |
| 33 | |
| 34 | * Via the [Jupyter/IPython notebook framework](http://jupyter.org/). This allows |
| 35 | LISA to be used interactively and supports visualisation of trace data. Some |
| 36 | notebooks are provided with example and ready-made LISA use-cases. |
| 37 | |
| 38 | * Via the automated test framework. This framework allows the development of |
| 39 | automated pass/fail regression tests for kernel behaviour. The |
| 40 | [BART](https://github.com/ARM-software/trappy) toolkit provides additional |
| 41 | domain-specific test assertions for this use-case. LISA provides some |
| 42 | ready-made automated tests under the `tests/` directory. |
Patrick Bellasi | f6b6673 | 2015-12-04 18:24:30 +0000 | [diff] [blame] | 43 | |
Brendan Jackman | af0e5a1 | 2017-01-18 11:42:49 +0000 | [diff] [blame] | 44 | # Motivations |
| 45 | |
| 46 | The main goals of LISA are: |
| 47 | |
| 48 | * Support study of existing behaviours (i.e. *"how does PELT work?"*) |
| 49 | * Support analysis of new code being developed (i.e. *"what is the impact on |
| 50 | existing code?"*) |
| 51 | * Get insights on what's not working and possibly chase down why |
| 52 | * Share reproducible experiments by means of a **common language** that: |
| 53 | * is **flexible enough** to reproduce the same experiment on different |
| 54 | targets |
| 55 | * **simplifies** generation and execution of well defined workloads |
| 56 | * **defines** a set of metrics to evaluate kernel behaviours |
| 57 | * **enables** kernel developers to easily post process data to produce |
| 58 | statistics and plots |
| 59 | |
Michele Di Giorgio | 5427673 | 2016-05-12 11:58:19 +0100 | [diff] [blame] | 60 | # Documentation |
Patrick Bellasi | dc2e075 | 2015-11-13 19:20:01 +0000 | [diff] [blame] | 61 | |
Michele Di Giorgio | 5427673 | 2016-05-12 11:58:19 +0100 | [diff] [blame] | 62 | * [Wiki Home page](https://github.com/ARM-software/lisa/wiki) |
| 63 | * [Installation](https://github.com/ARM-software/lisa/wiki/Installation) |
| 64 | * [Quickstart Tutorial](https://github.com/ARM-software/lisa/wiki/Quickstart-tutorial) |
Patrick Bellasi | dc2e075 | 2015-11-13 19:20:01 +0000 | [diff] [blame] | 65 | |
Brendan Jackman | 82bc301 | 2017-01-18 11:47:47 +0000 | [diff] [blame] | 66 | More formal API documentation for LISA is a work in progress, however much of |
| 67 | the API is currently described in the provided tutorial Jupyter notebooks. |
| 68 | |
Brendan Jackman | af0e5a1 | 2017-01-18 11:42:49 +0000 | [diff] [blame] | 69 | # External Links |
| 70 | * Linux Integrated System Analysis (LISA) & Friends |
| 71 | [Slides](http://events.linuxfoundation.org/sites/events/files/slides/ELC16_LISA_20160326.pdf) |
| 72 | and [Video](https://www.youtube.com/watch?v=yXZzzUEngiU) |
| 73 | |
Jilayne Lovejoy | 2f560b7 | 2016-01-25 12:14:38 -0700 | [diff] [blame] | 74 | # License |
| 75 | |
Andy Pickard | 826772f | 2016-01-26 10:06:55 +0000 | [diff] [blame] | 76 | This project is licensed under Apache-2.0. |
| 77 | |
| 78 | This project includes some third-party code under other open source licenses. For more information, see lisa/tools/LICENSE.* |
Patrick Bellasi | d95e98d | 2015-12-04 13:00:46 +0000 | [diff] [blame] | 79 | |
| 80 | # Contributions / Pull Requests |
| 81 | |
Jilayne Lovejoy | 2f560b7 | 2016-01-25 12:14:38 -0700 | [diff] [blame] | 82 | Contributions are accepted under Apache-2.0. Only submit contributions where you have |
Patrick Bellasi | d95e98d | 2015-12-04 13:00:46 +0000 | [diff] [blame] | 83 | authored all of the code. If you do this on work time make sure your employer |
| 84 | is cool with this. |