Skip to content
Snippets Groups Projects
README.md 1.95 KiB
Newer Older
# INTsight

## Usage

See [INTspect][https://gitlab.cs.fau.de/i4/intspect].

## Sysfs Interface

When injected into a kernel, INTsight provides a `debugfs` interface accessible
from user space, usually mounted in `/sys/kernel/debug/intsight`. INTspect uses
this interface to communicate a given benchmark configuration to the kernel,
trigger its execution, and finally retrieve the generated data.

The following table documents the virtual files created. When INTspect executes
a benchmark, it creates a complete copy of this folder. The following
description therefore also documents the structure of the result folders
produced by INTspect.

| File Name | Type | Description |
|-----------|------|-------------|
| `init` | Write-only | Initialize INTsight, creates the other files listed here |
| `bottom_handler` | "softirq", "tasklet", or "workqueue" | Bottom half mechanism to be benchmarked |
| `reps` | Integer | Number of measurement runs to perform |
| `delay_ms` | Integer | Delay between measurement runs in milliseconds |
| `delay_type` | "udelay" or "usleep_range" | Respectively use active / passive waiting between measurement runs |
| `checkpoint_capacity` | Integer | Maximum number of checkpoints recorded per measurement run |
| `prepare_trigger` | Write-only | Prepare benchmark using the current parameters |
| `do_trigger` | Write-only | Execute the benchmark, blocks the writing thread for at least `reps` x `delay_ms` milliseconds |
| `postprocess_trigger` | Write-only | Expose the results, creating the `csv_results` folder |
| `csv_results/name` | Read-only CSV | One line per measurement run, each line contains the checkpoint names in the encountered order for this run |
| `csv_results/*` | Read-only CSVs | The recorded timestamps matching the checkpoint names in `csv_results/name` |
| `vmalloc_checkpoint_matrix` | Read-only Boolean | Determine whether the checkpoint buffer was small enough to be allocated using `kmalloc()`, or whether `vmalloc()` was required |