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