Add README.md

This commit is contained in:
Mika 2025-12-27 16:53:28 +00:00
parent 4078769951
commit 4102b804ae

100
README.md Normal file
View file

@ -0,0 +1,100 @@
# Timekeeping Analysis
## Überblick
Das Projekt **timekeeping_analysis** untersucht die Auswirkungen von `WF_MIGRATED` auf die Zeitmessung und das Scheduling im Linux-Kernel. Hierfür wird BPF eingesetzt, um präzise Logging-Mechanismen für relevante Kernel-Events zu realisieren. Die erhobenen Daten werden anschließend analysiert und visuell aufbereitet.
Weitere Hintergrundinformationen finden sich im Artikel: [Erster Tick im Blick rq->clock, first_tkread macht WF_MIGRATED messbar](https://donau2space.de/tag-100-1744-erster-tick-im-blick-rq-clock-first_tkread-macht-wf_migrated-messbar/)
### Hinweis
Alle Inhalte wurden per KI generiert.
Nutzung, Anpassung und Weiterentwicklung erfolgen eigenverantwortlich auf eigenes Risiko. Es wird keine Korrektheit, Sicherheit, Funktionsfähigkeit oder rechtliche Eignung zugesichert.
## Inhalt des Repositories
Das Repository besteht aus mehreren Artefakten zur Erfassung, Analyse und Visualisierung von Zeitmessdaten im Zusammenhang mit `WF_MIGRATED`.
### Artefakt-Liste
#### 1. bpf_logging
- **Art:** Python-Skript
- **Ziel:** Linux-Userspace
- **Sprachen:** Python
- **Zweck:** Implementiert BPF-Logging zur Erfassung von `first_tkread` und `rq->clock`.
- **API-Funktionen:**
- `setup_bpf_logging(correlation_id)` Initialisiert das BPF-Logging für eine Korrelations-ID.
- `log_timekeeping_event(event_type, correlation_id)` Protokolliert ein Zeitmess-Event.
- **Datenstruktur:** `log_entry` (JSON)
- Felder: `correlation_id`, `event_type`, `timestamp`
#### 2. data_analysis
- **Art:** Python-Skript
- **Ziel:** Linux-Userspace
- **Sprachen:** Python
- **Zweck:** Analysiert Zeitmessdaten und bestimmt die Zeitdifferenzen zwischen relevanten Kernel-Events (`ttwu` und `first_tkread`).
- **API-Funktionen:**
- `analyze_log_data(log_file)` Analysiert ein Logfile und gibt statistische Ergebnisse zurück.
- **Datenstruktur:** `analysis_result` (JSON)
- Felder: `total_migrated`, `total_non_migrated`, `median_time_diff`
#### 3. trace_visualization
- **Art:** Web-UI
- **Ziel:** Web
- **Sprachen:** HTML, CSS, JavaScript
- **Zweck:** Stellt grafische Auswertungen der gesammelten Trace-Daten dar.
- **API-Endpunkte:**
- `GET /api/get-analysis` Liefert Analyseergebnisse zur Darstellung im Browser.
- **JavaScript-Module:**
- `chart.js` Wird zur Diagrammerstellung verwendet.
## Installation & Nutzung
### Voraussetzungen
- Linux-Umgebung mit BPF-Unterstützung
- Python 3.8 oder höher
- Webbrowser für Visualisierung
### Installation
1. Repository klonen:
```bash
git clone https://github.com/<user>/timekeeping_analysis.git
cd timekeeping_analysis
```
2. Python-Abhängigkeiten installieren:
```bash
pip install -r requirements.txt
```
3. BPF-Skript starten:
```bash
python bpf_logging.py
```
4. Daten analysieren:
```bash
python data_analysis.py logs/output.json
```
5. Weboberfläche öffnen:
```bash
open trace_visualization/index.html
```
## Typische Use-Cases
- Untersuchung von Scheduling-Verhalten bei Task-Migrationen.
- Analyse von Zeitdifferenzen zwischen Kernel-Ereignissen.
- Visualisierung von Zeitmessdaten im Browser.
## Struktur & Erweiterbarkeit
- **bpf_logging.py:** Logging-Komponente für Kernel-Events.
- **data_analysis.py:** Analytikmodul für Logdaten.
- **trace_visualization/**: Weboberfläche für grafische Darstellung.
Das Projekt kann um weitere BPF-Proben, Webmodule oder Metriken erweitert werden.
## Lizenz
Dieses Projekt steht unter der **MIT-Lizenz**.
---
*Dieses Repository wurde automatisiert generiert. Nutzung auf eigene Gefahr.*