From b647502a376abe2120ad4b59aaa96ffb3e468067 Mon Sep 17 00:00:00 2001 From: Mika Date: Thu, 8 Jan 2026 14:34:04 +0000 Subject: [PATCH] Add README.md --- README.md | 74 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 74 insertions(+) create mode 100644 README.md diff --git a/README.md b/README.md new file mode 100644 index 0000000..4c53e01 --- /dev/null +++ b/README.md @@ -0,0 +1,74 @@ +# P95/P99 Timing Analysis + +## Überblick +Das Experiment **p95_p99_timing_analysis** untersucht die Auswirkungen von CPU-Pinning auf Latenzen in virtuellen Maschinen. Ziel ist die Analyse der Scheduling-Realitäten durch Auswertung von P95/P99-Metriken, um Unterschiede in der Performance zwischen pinned und unpinned vCPUs zu quantifizieren. + +[Artikel und Kontext](https://donau2space.de/tag-112-1204-leichter-schnee-ueber-passau-und-ich-lasse-p95-p99-entscheiden-ob-pinning-wirklich-der-tail-killer-ist/) + +### 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 enthält drei Hauptkomponenten, implementiert in Python, für Linux-Umgebungen: + +### 1. cpu_pinning_analysis +- **Art:** Python-Skript +- **Ziel:** linux-demo +- **Sprache:** Python +- **Zweck:** Analyse von P95/P99-Latenzen auf Basis von Switch-Events zwischen pinned und unpinned vCPUs. +- **API-Funktionen:** + - `analyze_latencies(pinned_data, unpinned_data)` → liefert `latency_metrics` +- **Datenstruktur:** `latency_metrics` (JSON) mit Feldern `P95`, `P99`, `histogram` + +### 2. ci_smoke_gate +- **Art:** Python-Skript +- **Ziel:** linux-demo +- **Sprache:** Python +- **Zweck:** Automatisierte CI-Prüfung von P95/P99 und Histogrammformen zur Erkennung von Latenzregressionen. +- **API-Funktionen:** + - `run_ci_tests(test_config)` → liefert `test_results` +- **Datenstruktur:** `test_results` (JSON) mit Feldern `pinned`, `unpinned`, `regressions` + +### 3. ebpf_timestamping +- **Art:** Python-Skript +- **Ziel:** linux-userspace +- **Sprache:** Python +- **Zweck:** Implementierung eines eBPF-basierten Timestamping-Mechanismus zur präzisen Erfassung von Schreibfensterzeiten (Start und Ende). +- **API-Funktionen:** + - `measure_window_times(write_operations)` → liefert `timing_results` +- **Datenstruktur:** `timing_results` (JSON) mit Feldern `start_time`, `end_time` + +## Installation & Nutzung +Voraussetzungen: +- Linux-System mit Python ≥ 3.8 +- eBPF-Unterstützung im Kernel (für `ebpf_timestamping`) + +Installation: +1. Repository klonen. +2. Abhängigkeiten installieren: `pip install -r requirements.txt` +3. Skripte ausführbar machen: `chmod +x *.py` + +Beispielhafte Nutzung: +- Latenz-Analyse ausführen: `python cpu_pinning_analysis.py` +- CI-Schnellprüfung: `python ci_smoke_gate.py` +- eBPF-Timestamping durchführen: `python ebpf_timestamping.py` + +## Typische Use-Cases +- Vergleich von Latenzprofilen bei CPU-Pinning vs. ohne Pinning +- Automatisierte Performance-Regressionstests in CI/CD-Pipelines +- Untersuchung von Tail-Latencies auf verschiedenen VM-Setups +- Präzise Erfassung von Schreibfenster-Timings im Userspace + +## Struktur & mögliche Erweiterungen +Die drei unabhängigen Python-Module können einzeln oder kombiniert eingesetzt werden. Eine Integration in CI-Workflows ist vorgesehen. Erweiterungen können beinhalten: +- Erweiterte Visualisierung der Latenz-Histogramme +- REST-API zur Echtzeit-Auswertung der Messwerte +- Unterstützung weiterer Virtualisierungsplattformen + +## Lizenz +Veröffentlicht unter der **MIT-Lizenz**. + +--- +Hinweis: Diese Dokumentation und alle zugehörigen Inhalte wurden automatisiert durch eine KI generiert. Nutzung auf eigenes Risiko. \ No newline at end of file