-
-
Save MestreLion/88b9d3cd176236475e7d6ddc95f5e24b to your computer and use it in GitHub Desktop.
Raspberry Pi CPU temperature and throttling test script
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/bash | |
# Raspberry Pi stress CPU temperature measurement script. | |
# | |
# Download this script (e.g. with wget) and give it execute permissions (chmod +x). | |
# Then run it with ./pi-cpu-stress.sh [run_name] | |
# Variables. | |
test_run=${1:-1} | |
test_results_file="${HOME}/cpu_temp_${test_run}.log" | |
stress_length="10m" | |
# Verify stress-ng is installed. | |
if ! [ -x "$(command -v stress-ng)" ]; then | |
printf "Error: stress-ng not installed.\n" | |
printf "To install: sudo apt install -y stress-ng\n" >&2 | |
exit 1 | |
fi | |
printf "Logging temperature and throttling data to: $test_results_file\n" | |
# Start logging temperature data in the background. | |
while /bin/true; do | |
# Print the date (e.g. "Wed 13 Nov 18:24:45 GMT 2019") and a tab. | |
date | tr '\n' '\t' >> $test_results_file; | |
# Print the temperature (e.g. "39.0") and a tab. | |
vcgencmd measure_temp | tr -d "temp=" | tr -d "'C" | tr '\n' '\t' >> $test_results_file; | |
# Print the throttle status (e.g. "0x0") and a tab. | |
vcgencmd get_throttled | tr -d "throttled=" | tr '\n' '\t' >> $test_results_file; | |
# Print the current CPU frequency. | |
vcgencmd measure_clock arm | sed 's/^.*=//' >> $test_results_file; | |
sleep 5; | |
done & | |
# Store the logging pid. | |
PROC_ID=$! | |
# Stop the logging loop if script is interrupted or when it ends. | |
trap "kill $PROC_ID" EXIT | |
# After 5 minutes, run stress. | |
printf "Waiting 5 minutes for stable idle temperature...\n" | |
sleep 300 | |
printf "Beginning $stress_length stress test...\n" | |
stress-ng -c 4 --timeout $stress_length | |
# Keep logging for 5 more minutes. | |
printf "Waiting 5 minutes to return to idle temperature...\n" | |
sleep 300 | |
printf "Test complete.\n" |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment