#!/bin/bash # Memory Optimization Script for AMD Strix Halo Mining # Analyzes current memory allocation and provides optimization recommendations echo "=== AMD Strix Halo Memory Analysis ===" echo "" # Check current memory usage echo "Current Memory Status:" echo "======================" free -h echo "" # Check GPU memory allocation echo "GPU Memory Allocation:" echo "======================" if [ -f "/sys/class/drm/card1/device/mem_info_vram_total" ]; then GPU_TOTAL=$(sudo cat /sys/class/drm/card1/device/mem_info_vram_total) GPU_USED=$(sudo cat /sys/class/drm/card1/device/mem_info_vram_used) GPU_TOTAL_GB=$((GPU_TOTAL / 1024 / 1024 / 1024)) GPU_USED_GB=$((GPU_USED / 1024 / 1024 / 1024)) GPU_WASTED_GB=$((GPU_TOTAL_GB - GPU_USED_GB)) echo "Total GPU VRAM allocated: ${GPU_TOTAL_GB}GB" echo "GPU VRAM actually used: ${GPU_USED_GB}GB" echo "GPU VRAM wasted: ${GPU_WASTED_GB}GB" echo "" fi # Check current kernel parameters echo "Current Kernel Parameters:" echo "=========================" cat /proc/cmdline | grep -o "amdgpu\.[^ ]*" | head -5 echo "" # Check if huge pages are available echo "Huge Pages Status:" echo "==================" if [ -f "/proc/sys/vm/nr_hugepages" ]; then NR_HUGEPAGES=$(cat /proc/sys/vm/nr_hugepages) HUGEPAGES_FREE=$(cat /proc/sys/vm/free_hugepages) echo "Total huge pages: ${NR_HUGEPAGES}" echo "Free huge pages: ${HUGEPAGES_FREE}" echo "" fi # Recommendations echo "Optimization Recommendations:" echo "============================" echo "1. GPU Memory Reduction:" echo " - Current: 96GB allocated, only 1.6GB used" echo " - Recommendation: Reduce to 4-8GB in BIOS/UEFI" echo " - Potential gain: +5-10% mining performance" echo "" echo "2. Kernel Parameters:" echo " - Current: amdgpu.gttsize=131072 (128GB)" echo " - Recommended: amdgpu.gttsize=32768 (32GB)" echo " - Add to /etc/default/grub: GRUB_CMDLINE_LINUX_DEFAULT=\"... amdgpu.gttsize=32768\"" echo "" echo "3. Huge Pages:" echo " - Current: ${NR_HUGEPAGES} total, ${HUGEPAGES_FREE} free" echo " - Recommendation: Ensure at least 32 huge pages available for mining" echo "" echo "4. Expected Performance Improvement:" echo " - Current best: 14,728.4 H/s" echo " - With memory optimization: ~15,500-16,000 H/s (+5-8%)" echo "" # Check if optimization is possible if [ "$GPU_WASTED_GB" -gt 80 ]; then echo "⚠️ SIGNIFICANT OPTIMIZATION OPPORTUNITY DETECTED" echo " ${GPU_WASTED_GB}GB of GPU memory is wasted!" echo " This could be reallocated to improve CPU mining performance." echo "" fi echo "To apply kernel parameter changes:" echo "1. Edit /etc/default/grub" echo "2. Add amdgpu.gttsize=32768 to GRUB_CMDLINE_LINUX_DEFAULT" echo "3. Run: sudo update-grub" echo "4. Reboot system" echo "" echo "Note: Test mining performance after each change to verify improvements."