no_cpu_switch_analysis/README.md
2026-01-14 15:28:07 +00:00

82 lines
No EOL
3.3 KiB
Markdown
Raw Permalink Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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