74 lines
No EOL
3.3 KiB
Markdown
74 lines
No EOL
3.3 KiB
Markdown
# 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. |