[object Object]

← back to Exo

add system_status check to bench

f7122d400dfaa45f6935a8e7c43cf5d1e88d1943 · 2024-12-11 16:13:53 +0000 · Alex Cheema

Files touched

Diff

commit f7122d400dfaa45f6935a8e7c43cf5d1e88d1943
Author: Alex Cheema <alexcheema123@gmail.com>
Date:   Wed Dec 11 16:13:53 2024 +0000

    add system_status check to bench
---
 .github/bench.py | 80 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 80 insertions(+)

diff --git a/.github/bench.py b/.github/bench.py
index dd9e8e99..7971f7a2 100644
--- a/.github/bench.py
+++ b/.github/bench.py
@@ -7,6 +7,85 @@ import boto3
 from typing import Dict, Any
 from datetime import datetime
 import subprocess
+import psutil
+import platform
+from pathlib import Path
+
+
+def check_system_state():
+    print("\n=== System State Check ===", flush=True)
+    
+    # CPU Info
+    print("\nCPU Information:", flush=True)
+    try:
+        cpu_freq = psutil.cpu_freq()
+        print(f"CPU Frequency - Current: {cpu_freq.current:.2f}MHz, Min: {cpu_freq.min:.2f}MHz, Max: {cpu_freq.max:.2f}MHz", flush=True)
+        print(f"CPU Usage per Core: {psutil.cpu_percent(percpu=True)}%", flush=True)
+        
+        # Check if running in low power mode
+        power_mode = subprocess.run(['pmset', '-g'], capture_output=True, text=True)
+        print("Power Settings:", power_mode.stdout, flush=True)
+    except Exception as e:
+        print(f"Error getting CPU info: {e}", flush=True)
+
+    # Memory Info
+    print("\nMemory Information:", flush=True)
+    try:
+        mem = psutil.virtual_memory()
+        print(f"Total: {mem.total/1024/1024/1024:.2f}GB", flush=True)
+        print(f"Available: {mem.available/1024/1024/1024:.2f}GB", flush=True)
+        print(f"Used: {mem.used/1024/1024/1024:.2f}GB ({mem.percent}%)", flush=True)
+        
+        # Check swap
+        swap = psutil.swap_memory()
+        print(f"Swap Used: {swap.used/1024/1024/1024:.2f}GB of {swap.total/1024/1024/1024:.2f}GB", flush=True)
+    except Exception as e:
+        print(f"Error getting memory info: {e}", flush=True)
+
+    # GPU Info
+    print("\nGPU Information:", flush=True)
+    try:
+        # Check MLX GPU settings
+        print("MLX Environment Variables:", flush=True)
+        mlx_vars = {k: v for k, v in os.environ.items() if k.startswith('MLX')}
+        print(json.dumps(mlx_vars, indent=2), flush=True)
+        
+        # Check Metal GPU memory allocation
+        gpu_mem = subprocess.run(['sysctl', 'iogpu'], capture_output=True, text=True)
+        print("GPU Memory Settings:", gpu_mem.stdout, flush=True)
+    except Exception as e:
+        print(f"Error getting GPU info: {e}", flush=True)
+
+    # Process Priority
+    print("\nProcess Priority Information:", flush=True)
+    try:
+        current_process = psutil.Process()
+        print(f"Process Nice Value: {current_process.nice()}", flush=True)
+        print(f"Process IO Nice Value: {current_process.ionice()}", flush=True)
+        print(f"Process CPU Affinity: {current_process.cpu_affinity()}", flush=True)
+    except Exception as e:
+        print(f"Error getting process priority info: {e}", flush=True)
+
+    # System Load
+    print("\nSystem Load:", flush=True)
+    try:
+        print(f"Load Average: {psutil.getloadavg()}", flush=True)
+        
+        # Get top processes by CPU and Memory
+        print("\nTop Processes:", flush=True)
+        processes = []
+        for proc in psutil.process_iter(['pid', 'name', 'cpu_percent', 'memory_percent']):
+            try:
+                processes.append(proc.info)
+            except (psutil.NoSuchProcess, psutil.AccessDenied):
+                pass
+        
+        sorted_by_cpu = sorted(processes, key=lambda x: x['cpu_percent'], reverse=True)[:5]
+        print("Top 5 CPU-consuming processes:", json.dumps(sorted_by_cpu, indent=2), flush=True)
+    except Exception as e:
+        print(f"Error getting system load info: {e}", flush=True)
+
+    print("\n=== End System State Check ===\n", flush=True)
 
 
 def check_gpu_access():
@@ -158,5 +237,6 @@ async def main() -> None:
 
 
 if __name__ == "__main__":
+    check_system_state()
     check_gpu_access()
     asyncio.run(main())
\ No newline at end of file

← c938efb5 t  ·  back to Exo  ·  perf diag cff03fc6 →