Alex Cheema 4 tháng trước cách đây
mục cha
commit
7c0c5ef7fc
2 tập tin đã thay đổi với 72 bổ sung2 xóa
  1. 61 2
      .github/bootstrap.sh
  2. 11 0
      .github/workflows/bench_job.yml

+ 61 - 2
.github/bootstrap.sh

@@ -166,6 +166,18 @@ log "Configuring runner with labels: $CUSTOM_LABELS"
     --labels "${CUSTOM_LABELS}" \
     --work "_work"
 
+# Set optimal performance settings
+log "Configuring system for optimal performance..."
+sudo pmset -a gpuswitch 2  # Force discrete GPU if available
+sudo pmset -a lowpowermode 0  # Disable low power mode
+sudo pmset -a hibernatemode 0  # Disable hibernation
+sudo pmset -a standby 0  # Disable standby
+sudo pmset -a autopoweroff 0  # Disable auto power off
+
+# Set Metal performance mode
+defaults write com.apple.MetalPerformanceShadersGraph MTLGPUFamilyMac2 -bool true
+defaults write com.apple.MetalPerformanceShadersGraph MTLCaptureEnabled -bool false
+
 # Create and load launch daemon
 log "Creating LaunchDaemon service..."
 sudo tee /Library/LaunchDaemons/com.github.runner.plist > /dev/null << EOF
@@ -199,32 +211,79 @@ sudo tee /Library/LaunchDaemons/com.github.runner.plist > /dev/null << EOF
         <false/>
         <key>MaterializeDataless</key>
         <true/>
-        <key>HardResourceLimits</key>
+        
+        <!-- CPU Priority and Scheduling -->
+        <key>CPUUsageLimit</key>
+        <integer>0</integer>
+        <key>SchedulingPolicy</key>
+        <string>RR</string>
+        <key>ThreadPriority</key>
+        <integer>1</integer>
+        
+        <!-- Memory Management -->
+        <key>SoftResourceLimits</key>
         <dict>
             <key>NumberOfFiles</key>
             <integer>524288</integer>
             <key>MemoryLock</key>
             <integer>-1</integer>
+            <key>NumberOfProcesses</key>
+            <integer>2048</integer>
+            <key>CPU</key>
+            <integer>-1</integer>
         </dict>
-        <key>SoftResourceLimits</key>
+        <key>HardResourceLimits</key>
         <dict>
             <key>NumberOfFiles</key>
             <integer>524288</integer>
             <key>MemoryLock</key>
             <integer>-1</integer>
+            <key>NumberOfProcesses</key>
+            <integer>2048</integer>
+            <key>CPU</key>
+            <integer>-1</integer>
         </dict>
+        
+        <!-- QoS Settings -->
+        <key>QOSClass</key>
+        <string>User-Interactive</string>
+        
+        <!-- Environment Variables -->
         <key>EnvironmentVariables</key>
         <dict>
             <key>PATH</key>
             <string>/usr/local/bin:/opt/homebrew/bin:/usr/bin:/bin:/usr/sbin:/sbin</string>
+            <!-- MLX Settings -->
             <key>MLX_USE_GPU</key>
             <string>1</string>
+            <key>MLX_METAL_COMPILE_ASYNC</key>
+            <string>1</string>
+            <key>MLX_METAL_PREALLOCATE</key>
+            <string>1</string>
+            <key>MLX_METAL_MEMORY_GUARD</key>
+            <string>0</string>
+            <key>MLX_METAL_CACHE_KERNELS</key>
+            <string>1</string>
+            <key>MLX_PLACEMENT_POLICY</key>
+            <string>metal</string>
+            <!-- Metal Settings -->
             <key>OBJC_DEBUG_MISSING_POOLS</key>
             <string>NO</string>
             <key>METAL_DEBUG_ERROR_MODE</key>
             <string>0</string>
             <key>METAL_DEVICE_WRAPPER_TYPE</key>
             <string>1</string>
+            <key>METAL_CAPTURE_ENABLED</key>
+            <string>0</string>
+            <key>METAL_DEBUG_LAYER_ENABLED</key>
+            <string>0</string>
+            <key>METAL_LOAD_LIMIT</key>
+            <string>0</string>
+            <key>METAL_MAX_COMMAND_QUEUES</key>
+            <string>1024</string>
+            <!-- Process Priority -->
+            <key>PYTHON_CPU_AFFINITY</key>
+            <string>-1</string>  <!-- Use all cores -->
         </dict>
     </dict>
 </plist>

+ 11 - 0
.github/workflows/bench_job.yml

@@ -194,3 +194,14 @@ jobs:
               sleep 5
             done
           fi
+
+      # Add system state check
+      - name: Check System State
+        run: |
+          sudo pmset -g
+          sudo powermetrics -n 1 -i 1000 --show-process-energy
+          system_profiler SPDisplaysDataType
+          sysctl iogpu
+          ps -eo pid,ppid,user,%cpu,%mem,nice,state,command | grep -i python
+          sudo launchctl list | grep github
+          env | grep -E "MLX|METAL"