mirror of
https://github.com/exo-explore/exo.git
synced 2025-10-23 02:57:14 +03:00
95 lines
3.1 KiB
Bash
Executable File
95 lines
3.1 KiB
Bash
Executable File
#!/bin/bash
|
|
set -e
|
|
|
|
# Function to log with timestamp
|
|
log() {
|
|
echo "[$(date '+%Y-%m-%d %H:%M:%S')] $1"
|
|
}
|
|
|
|
log "Applying comprehensive performance optimizations..."
|
|
|
|
# System-wide power management
|
|
log "Configuring power management..."
|
|
sudo pmset -a lessbright 0
|
|
sudo pmset -a disablesleep 1
|
|
sudo pmset -a sleep 0
|
|
sudo pmset -a hibernatemode 0
|
|
sudo pmset -a autopoweroff 0
|
|
sudo pmset -a standby 0
|
|
sudo pmset -a powernap 0
|
|
sudo pmset -a proximitywake 0
|
|
sudo pmset -a tcpkeepalive 1
|
|
sudo pmset -a powermode 2
|
|
sudo pmset -a gpuswitch 2
|
|
sudo pmset -a displaysleep 0
|
|
sudo pmset -a disksleep 0
|
|
|
|
# Memory and kernel optimizations
|
|
log "Configuring memory and kernel settings..."
|
|
sudo sysctl -w kern.memorystatus_purge_on_warning=0
|
|
sudo sysctl -w kern.memorystatus_purge_on_critical=0
|
|
sudo sysctl -w kern.timer.coalescing_enabled=0
|
|
|
|
# Metal and GPU optimizations
|
|
log "Configuring Metal and GPU settings..."
|
|
defaults write com.apple.CoreML MPSEnableGPUValidation -bool false
|
|
defaults write com.apple.CoreML MPSEnableMetalValidation -bool false
|
|
defaults write com.apple.CoreML MPSEnableGPUDebug -bool false
|
|
defaults write com.apple.Metal GPUDebug -bool false
|
|
defaults write com.apple.Metal GPUValidation -bool false
|
|
defaults write com.apple.Metal MetalValidation -bool false
|
|
defaults write com.apple.Metal MetalCaptureEnabled -bool false
|
|
defaults write com.apple.Metal MTLValidationBehavior -string "Disabled"
|
|
defaults write com.apple.Metal EnableMTLDebugLayer -bool false
|
|
defaults write com.apple.Metal MTLDebugLevel -int 0
|
|
defaults write com.apple.Metal PreferIntegratedGPU -bool false
|
|
defaults write com.apple.Metal ForceMaximumPerformance -bool true
|
|
defaults write com.apple.Metal MTLPreferredDeviceGPUFrame -bool true
|
|
|
|
# Create MPS cache directory with proper permissions
|
|
sudo mkdir -p /tmp/mps_cache
|
|
sudo chmod 777 /tmp/mps_cache
|
|
|
|
# Process and resource limits
|
|
log "Configuring process limits..."
|
|
sudo launchctl limit maxfiles 524288 524288
|
|
ulimit -n 524288 || log "Warning: Could not set file descriptor limit"
|
|
ulimit -c 0
|
|
ulimit -l unlimited || log "Warning: Could not set memory lock limit"
|
|
|
|
# Export performance-related environment variables
|
|
cat << 'EOF' > /tmp/performance_env.sh
|
|
# Metal optimizations
|
|
export MTL_DEBUG_LAYER=0
|
|
export METAL_DEVICE_WRAPPER_TYPE=1
|
|
export METAL_DEBUG_ERROR_MODE=0
|
|
export METAL_FORCE_PERFORMANCE_MODE=1
|
|
export METAL_DEVICE_PRIORITY=high
|
|
export METAL_MAX_COMMAND_QUEUES=1024
|
|
export METAL_LOAD_LIMIT=0
|
|
export METAL_VALIDATION_ENABLED=0
|
|
export METAL_ENABLE_VALIDATION_LAYER=0
|
|
export OBJC_DEBUG_MISSING_POOLS=NO
|
|
export MPS_CACHEDIR=/tmp/mps_cache
|
|
|
|
# MLX optimizations
|
|
export MLX_USE_GPU=1
|
|
export MLX_METAL_COMPILE_ASYNC=1
|
|
export MLX_METAL_PREALLOCATE=1
|
|
export MLX_METAL_MEMORY_GUARD=0
|
|
export MLX_METAL_CACHE_KERNELS=1
|
|
export MLX_PLACEMENT_POLICY=metal
|
|
export MLX_METAL_VALIDATION=0
|
|
export MLX_METAL_DEBUG=0
|
|
export MLX_FORCE_P_CORES=1
|
|
export MLX_METAL_MEMORY_BUDGET=0
|
|
export MLX_METAL_PREWARM=1
|
|
|
|
# Python optimizations
|
|
export PYTHONUNBUFFERED=1
|
|
export PYTHONOPTIMIZE=2
|
|
export PYTHONHASHSEED=0
|
|
export PYTHONDONTWRITEBYTECODE=1
|
|
EOF
|
|
|
|
log "Performance optimizations completed. Environment variables written to /tmp/performance_env.sh" |