Add cpu_pinning_analysis/src/cpu_pinning_analysis/cli.py
This commit is contained in:
parent
096a2ee41b
commit
951151121b
1 changed files with 38 additions and 0 deletions
38
cpu_pinning_analysis/src/cpu_pinning_analysis/cli.py
Normal file
38
cpu_pinning_analysis/src/cpu_pinning_analysis/cli.py
Normal 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()
|
||||
Loading…
Reference in a new issue