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