Initial commit
This commit is contained in:
83
scripts/optimize/vram-gtt.sh
Normal file
83
scripts/optimize/vram-gtt.sh
Normal file
@@ -0,0 +1,83 @@
|
||||
#!/usr/bin/env bash
|
||||
# BIOS VRAM guidance + GTT verification
|
||||
set -euo pipefail
|
||||
|
||||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||
source "$SCRIPT_DIR/../../lib/common.sh"
|
||||
source "$SCRIPT_DIR/../../lib/detect.sh"
|
||||
source "$SCRIPT_DIR/../../lib/format.sh"
|
||||
|
||||
log_header "VRAM / GTT Memory Optimization"
|
||||
|
||||
vram_total="$(detect_vram_total)"
|
||||
gtt_total="$(detect_gtt_total)"
|
||||
vram_gib=$(echo "scale=1; $vram_total / 1073741824" | bc)
|
||||
gtt_gib=$(echo "scale=1; $gtt_total / 1073741824" | bc)
|
||||
|
||||
log_info "Current memory allocation:"
|
||||
print_kv "VRAM (dedicated)" "${vram_gib} GiB"
|
||||
print_kv "GTT (dynamic)" "${gtt_gib} GiB"
|
||||
print_kv "System RAM (visible)" "$(echo "scale=1; $(detect_system_ram_kb) / 1048576" | bc) GiB"
|
||||
echo ""
|
||||
|
||||
# ── Check if BIOS VRAM change is needed ──────────────────
|
||||
# Optimal: VRAM <= 1 GiB (0.5 GiB ideal), rest dynamically via GTT
|
||||
if (( vram_total > 1073741824 )); then
|
||||
log_warn "VRAM is ${vram_gib} GiB — this permanently locks memory away from the OS."
|
||||
log_info "AMD recommends 512 MB dedicated VRAM for Strix Halo."
|
||||
log_info "The GPU accesses additional memory dynamically via GTT (kernel params)."
|
||||
echo ""
|
||||
|
||||
printf "${BOLD}BIOS Configuration Steps (HP ZBook Ultra G1a):${RESET}\n"
|
||||
echo ""
|
||||
echo " 1. Reboot the laptop"
|
||||
echo " 2. Press F10 repeatedly during boot to enter BIOS Setup"
|
||||
echo " 3. Navigate to: Advanced > Built-in Device Options"
|
||||
echo " (or Advanced > Display > UMA Frame Buffer Size)"
|
||||
echo " 4. Set UMA Frame Buffer Size to: 512 MB (or smallest available)"
|
||||
echo " 5. Save and Exit (F10)"
|
||||
echo ""
|
||||
echo " NOTE: The exact menu path may vary by BIOS version."
|
||||
echo " Look for 'UMA', 'Frame Buffer', 'VRAM', or 'iGPU Memory'."
|
||||
echo ""
|
||||
|
||||
log_info "After BIOS change + reboot with kernel params, expected state:"
|
||||
echo " VRAM: ~512 MiB"
|
||||
echo " GTT: ~$(human_mib "$(recommended_gttsize_mib)") (with kernel params)"
|
||||
echo " System RAM: ~$(echo "scale=1; $(detect_total_physical_ram_kb) / 1048576 - 0.5" | bc) GiB visible"
|
||||
echo ""
|
||||
|
||||
elif (( vram_total <= 1073741824 )); then
|
||||
log_success "VRAM is ${vram_gib} GiB — already optimal!"
|
||||
fi
|
||||
|
||||
# ── Check GTT ────────────────────────────────────────────
|
||||
rec_gttsize="$(recommended_gttsize_mib)"
|
||||
rec_gtt_bytes=$(( rec_gttsize * 1048576 ))
|
||||
|
||||
if (( gtt_total >= rec_gtt_bytes * 3 / 4 )); then
|
||||
log_success "GTT is ${gtt_gib} GiB — good (recommended: ~$(human_mib "$rec_gttsize"))"
|
||||
else
|
||||
log_warn "GTT is ${gtt_gib} GiB — low (recommended: ~$(human_mib "$rec_gttsize"))"
|
||||
log_info "This requires kernel boot parameters. Run: make optimize-kernel"
|
||||
fi
|
||||
|
||||
# ── Optional: amd-debug-tools ────────────────────────────
|
||||
echo ""
|
||||
log_header "Optional: amd-debug-tools (amd-ttm)"
|
||||
log_info "AMD provides 'amd-debug-tools' for runtime GTT/TTM inspection."
|
||||
|
||||
if is_cmd amd-ttm; then
|
||||
log_success "amd-ttm is installed"
|
||||
log_info "Current GTT settings:"
|
||||
amd-ttm 2>/dev/null || true
|
||||
elif is_cmd pipx; then
|
||||
log_info "Install with: pipx install amd-debug-tools"
|
||||
if confirm "Install amd-debug-tools via pipx?"; then
|
||||
pipx install amd-debug-tools
|
||||
log_success "Installed. Run 'amd-ttm' to inspect GTT allocation."
|
||||
fi
|
||||
else
|
||||
log_info "Install pipx first: sudo dnf install pipx"
|
||||
log_info "Then: pipx install amd-debug-tools"
|
||||
fi
|
||||
Reference in New Issue
Block a user