Add cpu_pinning_analysis/src/cpu_pinning_analysis/cli.py

This commit is contained in:
Mika 2026-01-08 14:34:02 +00:00
parent 096a2ee41b
commit 951151121b

View file

@ -0,0 +1,38 @@
import argparse
import json
from pathlib import Path
from cpu_pinning_analysis import core
def _load_json(path: Path):
if not path.exists() or not path.is_file():
raise FileNotFoundError(f"Datei nicht gefunden: {path}")
with path.open("r", encoding="utf-8") as f:
try:
data = json.load(f)
except json.JSONDecodeError as e:
raise ValueError(f"Ungültige JSON-Datei: {path}: {e}")
if not isinstance(data, dict):
raise ValueError(f"JSON-Struktur erwartet ein Objekt: {path}")
return data
def main():
parser = argparse.ArgumentParser(description="Analyse von Latenzen für pinned vs. unpinned vCPUs.")
parser.add_argument("--pinned", required=True, help="Pfad zur JSON-Datei der pinned CPU-Messwerte.")
parser.add_argument("--unpinned", required=True, help="Pfad zur JSON-Datei der unpinned CPU-Messwerte.")
args = parser.parse_args()
pinned_path = Path(args.pinned)
unpinned_path = Path(args.unpinned)
pinned_data = _load_json(pinned_path)
unpinned_data = _load_json(unpinned_path)
result = core.analyze_latencies(pinned_data, unpinned_data)
print(json.dumps(result, indent=2, ensure_ascii=False))
if __name__ == "__main__":
main()