diff --git a/README.md b/README.md new file mode 100644 index 0000000..21bd0f2 --- /dev/null +++ b/README.md @@ -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//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.* \ No newline at end of file