131 lines
4.5 KiB
Bash
Executable File
131 lines
4.5 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
ryzen_info () {
|
|
while read -a Line; do
|
|
if [ "${Line[0]} ${Line[1]} ${Line[2]}" == '| STAPM LIMIT' ]; then
|
|
StapmLimit=${Line[4]}
|
|
fi
|
|
if [ "${Line[0]} ${Line[1]} ${Line[2]}" == '| STAPM VALUE' ]; then
|
|
StapmValue=${Line[4]}
|
|
fi
|
|
if [ "${Line[0]} ${Line[1]} ${Line[2]} ${Line[3]}" == '| PPT LIMIT FAST' ]; then
|
|
FastLimit=${Line[5]}
|
|
fi
|
|
if [ "${Line[0]} ${Line[1]} ${Line[2]} ${Line[3]}" == '| PPT VALUE FAST' ]; then
|
|
FastValue=${Line[5]}
|
|
fi
|
|
if [ "${Line[0]} ${Line[1]} ${Line[2]} ${Line[3]}" == '| PPT LIMIT SLOW' ]; then
|
|
SlowLimit=${Line[5]}
|
|
fi
|
|
if [ "${Line[0]} ${Line[1]} ${Line[2]} ${Line[3]}" == '| PPT VALUE SLOW' ]; then
|
|
SlowValue=${Line[5]}
|
|
fi
|
|
if [ "${Line[0]} ${Line[1]} ${Line[2]} ${Line[3]}" == '| EDC LIMIT VDD' ]; then
|
|
VrmMaxCurrent=${Line[5]}
|
|
fi
|
|
if [ "${Line[0]} ${Line[1]} ${Line[2]} ${Line[3]}" == '| EDC VALUE VDD' ]; then
|
|
VrmMaxValue=${Line[5]}
|
|
fi
|
|
if [ "${Line[0]} ${Line[1]} ${Line[2]} ${Line[3]}" == '| THM LIMIT CORE' ]; then
|
|
TctlTempLimit=${Line[5]}
|
|
fi
|
|
if [ "${Line[0]} ${Line[1]} ${Line[2]} ${Line[3]}" == '| THM VALUE CORE' ]; then
|
|
TctlTempValue=${Line[5]}
|
|
|
|
break
|
|
fi
|
|
|
|
done <<< "$(sudo ryzenadj -i)"
|
|
}
|
|
|
|
print_pretty () {
|
|
printf 'Stapm limit %s/%s W\n' $StapmValue $StapmLimit
|
|
printf 'Slow limit %s/%s W\n' $SlowValue $SlowLimit
|
|
printf 'Fast limit %s/%s W\n' $FastValue $FastLimit
|
|
printf 'Vrm Max Current %s/%s A\n' $VrmMaxValue $VrmMaxCurrent
|
|
printf 'TctlTempLimit %s/%s C°\n' $TctlTempValue $TctlTempLimit
|
|
}
|
|
|
|
write_log_header () {
|
|
printf '%s\n' "$(date '+%d.%m %H:%M:%S') | Stapm Value | Slow Value | Fast Value | Vrm Max Value | Tctl Temp Value" > log.txt
|
|
}
|
|
|
|
write_to_log () {
|
|
printf '%s\n' "$(date '+%d.%m %H:%M:%S') | $StapmValue | $SlowValue | $FastValue | $VrmMaxValue | $TctlTempValue" >> log.txt
|
|
}
|
|
|
|
killed_calculations () {
|
|
printf '\n%s\n%s\n' "LOGGING FINISHED" "CALCULATED INFO" >> log.txt
|
|
|
|
stapmValues=$(awk '{ print $4 }' log.txt | sed 1d)
|
|
stapmMinimal=$(printf '%s\n' "$stapmValues" | sort -n | head -1)
|
|
stapmAverage=$(printf '%s\n' $stapmValues | awk '{ total += $0; count++ } END { print total/count }')
|
|
stapmMaximum=$(printf '%s\n' $stapmValues | sort -n | tail -1)
|
|
|
|
slowValues=$(awk '{ print $6 }' log.txt | sed 1d)
|
|
slowMinimal=$(printf '%s\n' $slowValues | sort -n | head -1)
|
|
slowAverage=$(printf '%s\n' $slowValues | awk '{ total += $0; count++ } END { print total/count }')
|
|
slowMaximum=$(printf '%s\n' $slowValues | sort -n | tail -1)
|
|
|
|
fastValues=$(awk '{ print $8 }' log.txt | sed 1d)
|
|
fastMinimal=$(printf '%s\n' $fastValues | sort -n | head -1)
|
|
fastAverage=$(printf '%s\n' $fastValues | awk '{ total += $0; count++ } END { print total/count }')
|
|
fastMaximum=$(printf '%s\n' $fastValues | sort -n | tail -1)
|
|
|
|
vrmValues=$(awk '{ print $10 }' log.txt | sed 1d)
|
|
vrmMinimal=$(printf '%s\n' $vrmValues | sort -n | head -1)
|
|
vrmAverage=$(printf '%s\n' $vrmValues | awk '{ total += $0; count++ } END { print total/count }')
|
|
vrmMaximum=$(printf '%s\n' $vrmValues | sort -n | tail -1)
|
|
|
|
tctlValues=$(awk '{ print $12 }' log.txt | sed 1d)
|
|
tctlMinimal=$(printf '%s\n' $tctlValues | sort -n | head -1)
|
|
tctlAverage=$(printf '%s\n' $tctlValues | awk '{ total += $0; count++ } END { print total/count }')
|
|
tctlMaximum=$(printf '%s\n' $tctlValues | sort -n | tail -1)
|
|
|
|
printf '%s\n' "Minimal | $stapmMinimal | $slowMinimal | $fastMinimal | $vrmMinimal | $tctlMinimal)" >> log.txt
|
|
printf '%s\n' "Average | $stapmAverage | $slowAverage | $fastAverage | $vrmAverage | $tctlAverage)" >> log.txt
|
|
printf '%s\n' "Maximum | $stapmMaximum | $slowMaximum | $fastMaximum | $vrmMaximum | $tctlMaximum)" >> log.txt
|
|
|
|
exit
|
|
}
|
|
|
|
log () {
|
|
[ ! -f "log.txt" ] && write_log_header
|
|
|
|
line_count=$(< log.txt | wc -l)
|
|
|
|
[ "$line_count" == "0" ] && write_log_header
|
|
|
|
trap killed_calculations SIGINT
|
|
trap killed_calculations SIGTERM
|
|
|
|
while true; do
|
|
ryzen_info
|
|
write_to_log
|
|
sleep 5
|
|
done
|
|
}
|
|
|
|
if [ -z "$@" ];then
|
|
ryzen_info
|
|
print_pretty
|
|
exit
|
|
fi
|
|
|
|
if [ "$@" == "-l" ]; then
|
|
log
|
|
fi
|
|
|
|
if [ "$@" == "-c" ]; then
|
|
while true
|
|
do
|
|
ryzen_info
|
|
print_pretty
|
|
sleep 5
|
|
printf '%s\n'
|
|
done
|
|
fi
|
|
|
|
printf '%s\n' "That option doesnt exist"
|
|
exit 1
|