59 lines
2.3 KiB
Bash
59 lines
2.3 KiB
Bash
#!/bin/bash
|
|
# =============================================================
|
|
# BC-250 GPU Activity Monitor
|
|
# Since rocm-smi GPU utilization is broken (always 0%),
|
|
# we use alternative metrics to verify GPU compute usage.
|
|
# =============================================================
|
|
|
|
echo "=== BC-250 GPU Activity Monitor ==="
|
|
echo "NOTE: GPU % utilization is broken on this hardware."
|
|
echo "Using alternative metrics instead."
|
|
echo ""
|
|
|
|
while true; do
|
|
TIMESTAMP=$(date '+%H:%M:%S')
|
|
|
|
# 1. GPU Clock — high clock = GPU active
|
|
SCLK=$(cat /sys/class/drm/card0/device/pp_dpm_sclk 2>/dev/null | grep '\*' | awk '{print $2}')
|
|
|
|
# 2. GPU power draw (if available)
|
|
POWER=$(cat /sys/class/drm/card0/device/hwmon/hwmon*/power1_average 2>/dev/null)
|
|
if [ -n "$POWER" ]; then
|
|
POWER_W=$(echo "scale=1; $POWER / 1000000" | bc 2>/dev/null || echo "N/A")
|
|
else
|
|
POWER_W="N/A"
|
|
fi
|
|
|
|
# 3. GPU VRAM usage (shared memory allocated by GPU)
|
|
VRAM_USED=$(cat /sys/class/drm/card0/device/mem_info_vram_used 2>/dev/null)
|
|
VRAM_TOTAL=$(cat /sys/class/drm/card0/device/mem_info_vram_total 2>/dev/null)
|
|
if [ -n "$VRAM_USED" ] && [ -n "$VRAM_TOTAL" ]; then
|
|
VRAM_MB=$(echo "scale=0; $VRAM_USED / 1048576" | bc 2>/dev/null || echo "N/A")
|
|
VRAM_TOTAL_MB=$(echo "scale=0; $VRAM_TOTAL / 1048576" | bc 2>/dev/null || echo "N/A")
|
|
else
|
|
VRAM_MB="N/A"
|
|
VRAM_TOTAL_MB="N/A"
|
|
fi
|
|
|
|
# 4. GPU temperature
|
|
TEMP=$(cat /sys/class/drm/card0/device/hwmon/hwmon*/temp1_input 2>/dev/null)
|
|
if [ -n "$TEMP" ]; then
|
|
TEMP_C=$(echo "scale=0; $TEMP / 1000" | bc 2>/dev/null || echo "N/A")
|
|
else
|
|
TEMP_C="N/A"
|
|
fi
|
|
|
|
# 5. HIP processes using GPU
|
|
HIP_PROCS=$(ls /proc/*/maps 2>/dev/null | xargs grep -l "libamdhip64\|libhsa-runtime" 2>/dev/null | wc -l)
|
|
|
|
# 6. Kernel GPU activity (interrupts)
|
|
GPU_IRQ=$(cat /proc/interrupts 2>/dev/null | grep amdgpu | awk '{sum=0; for(i=2;i<=NF-2;i++) sum+=$i; print sum}' | head -1)
|
|
|
|
# 7. System RAM (since BC-250 shares system RAM as VRAM)
|
|
RAM_INFO=$(free -m | grep Mem | awk '{printf "%dMB / %dMB (%.0f%%)", $3, $2, $3/$2*100}')
|
|
|
|
echo "[$TIMESTAMP] Clock: ${SCLK:-N/A} | Power: ${POWER_W}W | Temp: ${TEMP_C}°C | VRAM: ${VRAM_MB}/${VRAM_TOTAL_MB}MB | HIP Procs: $HIP_PROCS | RAM: $RAM_INFO"
|
|
|
|
sleep 2
|
|
done
|