diff --git a/README.md b/README.md new file mode 100644 index 0000000..cea5b99 --- /dev/null +++ b/README.md @@ -0,0 +1,82 @@ +# no_cpu_switch_analysis + +## Überblick +Dieses Projekt dient der Analyse von "no_cpu_switch"-Spikes durch erweiterte Logging-Techniken mit eBPF und datengestützte Entscheidungsfindung. Ziel ist es, Ursachen von ungewöhnlichen Scheduler-Ereignissen zu identifizieren und diese anhand korrelierter Trace-Daten systematisch zu klassifizieren. + +**Link zum Artikel:** [https://donau2space.de/tag-118-1617-nebel-ueber-passau-und-ich-entlarve-zwei-no_cpu_switch-spikes-als-versteckte-switches/](https://donau2space.de/tag-118-1617-nebel-ueber-passau-und-ich-entlarve-zwei-no_cpu_switch-spikes-als-versteckte-switches/) + +**Git Repository:** [https://git.donau2space.de/Mika/no_cpu_switch_analysis](https://git.donau2space.de/Mika/no_cpu_switch_analysis) + +### 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 + +### trace_agg +- **Art:** Python-Skript +- **Ziel:** Linux Userspace +- **Beschreibung:** Aggregiert Trace-Daten aus Ereignisprotokollen und erzeugt kompaktes JSON für nachfolgende Analyse. +- **Sprache:** Python + +**API-Funktion:** +- `aggregate_trace_data(correlation_id) → json` – Zusammenführung und Aggregation von Trace-Einträgen mit gemeinsamer Korrelations-ID. + +**Datenstruktur:** +- `TraceData` (JSON): enthält Felder *had_sched_switch*, *had_irq*, *had_softirq*, *cpu_ids_seen*. + +--- + +### decision_tree +- **Art:** Python-Skript +- **Ziel:** Linux Userspace +- **Beschreibung:** Führt eine Klassifizierung von Scheduler-Ereignissen basierend auf Kontextmarkern durch und leitet daraus Entscheidungsableitungen ab. +- **Sprache:** Python + +**API-Funktion:** +- `classify_event(context_marker) → string` – Klassifiziert Event auf Basis von Kontextinformationen. + +--- + +### probe_config +- **Art:** Dokumentation +- **Ziel:** Gemischt (Analyseunterstützung) +- **Beschreibung:** Enthält Informationen zu Read-/Write-Probes zur Verfeinerung der Event-Analyse. + +--- + +## Installation & Nutzung +1. **Voraussetzungen:** Python 3.9 oder höher, Linux-Userspace mit eBPF-Unterstützung. +2. Repository klonen und in das Projektverzeichnis wechseln: + ```bash + git clone https://git.donau2space.de/Mika/no_cpu_switch_analysis + cd no_cpu_switch_analysis + ``` +3. Abhängigkeiten installieren: + ```bash + pip install -r requirements.txt + ``` +4. Skripte ausführen: + ```bash + python trace_agg.py + python decision_tree.py + ``` + +## Typische Use-Cases +- Identifikation von Anomalien im Scheduler-Verhalten. +- Klassifizierung von CPU-Switch-Ereignissen anhand von Kontextmerkmalen. +- Aggregation großer Mengen von Trace-Daten für maschinelle Lernverfahren. +- Erweiterbare Basis für fortgeschrittene Performance-Analysen unter Linux. + +## Struktur & Erweiterbarkeit +- **/trace_agg.py** – Aggregationsmodul für Trace-Daten. +- **/decision_tree.py** – Klassifikationslogik. +- **/docs/probe_config.md** – Dokumentation zu Probes und Analyseparametern. + +Erweiterungen können z. B. durch zusätzliche Analyse-Module, überarbeitete Klassifikationsmodelle oder Integration in Monitoring-Pipelines erfolgen. + +## Lizenz +Dieses Projekt steht unter der **MIT-Lizenz**. + +Hinweis: Inhalte wurden automatisch generiert. Nutzung auf eigene Verantwortung. \ No newline at end of file