65 lines
1.9 KiB
Bash
65 lines
1.9 KiB
Bash
#!/bin/bash
|
|
# Stress the GPU with a real Vulkan compute workload and monitor clocks
|
|
H=/sys/class/drm/card0/device/hwmon/hwmon1
|
|
SYSFS=/sys/class/drm/card0/device
|
|
|
|
echo "=== PRE-LOAD ==="
|
|
echo "FREQ: $(cat $H/freq1_input) Hz"
|
|
cat $SYSFS/pp_dpm_sclk
|
|
|
|
# Check if pp_table exists or can be created
|
|
echo "=== PP_TABLE CHECK ==="
|
|
ls -la $SYSFS/pp_table 2>/dev/null || echo "pp_table: NOT PRESENT"
|
|
sudo cat $SYSFS/pp_table 2>/dev/null | wc -c || echo "pp_table: NOT READABLE"
|
|
|
|
# Create a Vulkan compute stress with vkcube or glmark if available
|
|
if command -v vkcube &>/dev/null; then
|
|
echo "Starting vkcube..."
|
|
timeout 8 vkcube --c 99999 &>/dev/null &
|
|
STRESS_PID=$!
|
|
elif command -v glmark2-es2 &>/dev/null; then
|
|
echo "Starting glmark2..."
|
|
timeout 8 glmark2-es2 --off-screen &>/dev/null &
|
|
STRESS_PID=$!
|
|
else
|
|
# Fallback: just do heavy memory operations via python
|
|
echo "Starting python GPU mem stress..."
|
|
timeout 8 python3 -c "
|
|
import ctypes, time
|
|
# Just allocate and fill memory rapidly to force GPU activity
|
|
data = bytearray(512*1024*1024)
|
|
for i in range(100):
|
|
data[i*1024:(i+1)*1024] = b'x' * 1024
|
|
time.sleep(6)
|
|
" &>/dev/null &
|
|
STRESS_PID=$!
|
|
fi
|
|
|
|
# Monitor during load
|
|
for i in 1 2 3 4 5 6; do
|
|
sleep 1
|
|
freq=$(cat $H/freq1_input)
|
|
dpm=$(cat $SYSFS/pp_dpm_sclk | grep '\*')
|
|
power=$(cat $H/power1_input)
|
|
temp=$(cat $H/temp1_input)
|
|
echo "t+${i}s: freq=${freq}Hz dpm=${dpm} power=${power}uW temp=${temp}mC"
|
|
done
|
|
|
|
kill $STRESS_PID 2>/dev/null
|
|
wait $STRESS_PID 2>/dev/null
|
|
|
|
echo "=== POST LOAD ==="
|
|
sleep 1
|
|
echo "FREQ: $(cat $H/freq1_input) Hz"
|
|
cat $SYSFS/pp_dpm_sclk
|
|
|
|
# Check if we can write pp_table
|
|
echo "=== PP_TABLE WRITE TEST ==="
|
|
if [ -f "$SYSFS/pp_table" ]; then
|
|
echo "pp_table exists, trying to read..."
|
|
sudo cat $SYSFS/pp_table > /tmp/pp_table_backup.bin 2>/dev/null
|
|
echo "Read $(wc -c < /tmp/pp_table_backup.bin) bytes"
|
|
else
|
|
echo "No pp_table file — cannot modify power table"
|
|
fi
|