98 lines
3.0 KiB
Bash
98 lines
3.0 KiB
Bash
#!/usr/bin/env bash
|
|
# Post-optimization verification checklist
|
|
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 "Optimization Verification"
|
|
|
|
score=0
|
|
total=0
|
|
|
|
check() {
|
|
local pass="$1" label="$2" detail="$3"
|
|
total=$(( total + 1 ))
|
|
if [[ "$pass" == "1" ]]; then
|
|
score=$(( score + 1 ))
|
|
print_status pass "$label" "$detail"
|
|
else
|
|
print_status fail "$label" "$detail"
|
|
fi
|
|
}
|
|
|
|
# Kernel version
|
|
kernel="$(detect_kernel_version)"
|
|
kernel_major=$(echo "$kernel" | cut -d. -f1)
|
|
kernel_minor=$(echo "$kernel" | cut -d. -f2)
|
|
kernel_ok=0
|
|
(( kernel_major > 6 || (kernel_major == 6 && kernel_minor >= 18) )) && kernel_ok=1
|
|
check "$kernel_ok" "Kernel >= 6.18.4" "$kernel"
|
|
|
|
# Firmware
|
|
fw_ok=1
|
|
detect_firmware_bad && fw_ok=0
|
|
check "$fw_ok" "Firmware (not 20251125)" "$(detect_firmware_version)"
|
|
|
|
# Kernel params
|
|
iommu_val="$(detect_kernel_param 'iommu')"
|
|
iommu_ok=0
|
|
[[ "$iommu_val" == "pt" ]] && iommu_ok=1
|
|
check "$iommu_ok" "iommu=pt" "${iommu_val:-not set}"
|
|
|
|
gttsize="$(detect_gttsize_param)"
|
|
rec_gttsize="$(recommended_gttsize_mib)"
|
|
gtt_ok=0
|
|
[[ -n "$gttsize" ]] && (( gttsize >= rec_gttsize )) && gtt_ok=1
|
|
check "$gtt_ok" "amdgpu.gttsize" "${gttsize:-not set} (recommended: $rec_gttsize)"
|
|
|
|
pages="$(detect_pages_limit_param)"
|
|
rec_pages="$(recommended_pages_limit)"
|
|
pages_ok=0
|
|
[[ -n "$pages" ]] && (( pages >= rec_pages )) && pages_ok=1
|
|
check "$pages_ok" "ttm.pages_limit" "${pages:-not set} (recommended: $rec_pages)"
|
|
|
|
# Tuned profile
|
|
tuned="$(detect_tuned_profile)"
|
|
tuned_ok=0
|
|
[[ "$tuned" == "accelerator-performance" ]] && tuned_ok=1
|
|
check "$tuned_ok" "Tuned profile" "$tuned"
|
|
|
|
# VRAM (should be <= 1 GiB)
|
|
vram="$(detect_vram_total)"
|
|
vram_gib=$(echo "scale=1; $vram / 1073741824" | bc)
|
|
vram_ok=0
|
|
(( vram <= 1073741824 )) && vram_ok=1
|
|
check "$vram_ok" "VRAM <= 1 GiB" "${vram_gib} GiB"
|
|
|
|
# GTT (should be close to recommended)
|
|
gtt="$(detect_gtt_total)"
|
|
gtt_gib=$(echo "scale=1; $gtt / 1073741824" | bc)
|
|
rec_gtt_bytes=$(( rec_gttsize * 1048576 ))
|
|
gtt_mem_ok=0
|
|
(( gtt >= rec_gtt_bytes * 3 / 4 )) && gtt_mem_ok=1
|
|
check "$gtt_mem_ok" "GTT >= $(human_mib "$rec_gttsize")" "${gtt_gib} GiB"
|
|
|
|
# GPU monitor installed
|
|
monitor_ok=0
|
|
is_cmd amdgpu_top && monitor_ok=1
|
|
check "$monitor_ok" "amdgpu_top installed" "$(is_cmd amdgpu_top && echo 'yes' || echo 'no — run make monitor-install')"
|
|
|
|
# Summary
|
|
echo ""
|
|
print_divider
|
|
printf "\n ${BOLD}Score: %d / %d${RESET}\n" "$score" "$total"
|
|
|
|
if (( score == total )); then
|
|
printf " ${GREEN}Fully optimized!${RESET} Run 'make benchmark' to measure performance.\n"
|
|
elif (( score >= total * 3 / 4 )); then
|
|
printf " ${YELLOW}Nearly there${RESET} — check the failed items above.\n"
|
|
elif (( score >= total / 2 )); then
|
|
printf " ${YELLOW}Partially optimized${RESET} — run 'make optimize' for the remaining items.\n"
|
|
else
|
|
printf " ${RED}Significant optimizations pending${RESET} — run 'make optimize'\n"
|
|
fi
|
|
echo ""
|