timekeeping_analysis/README.md
2025-12-27 16:53:28 +00:00

100 lines
No EOL
3.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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.*