Schwartz
Active member
- Registriert
- 15 Aug. 2015
- Beiträge
- 766
Ich komme soweit klar mit PHC, nur gibt es da ein bestimmtes Script welches das finden der sicheren VCores vereinfachen soll. Dieses Script läuft nun nicht korrekt; es läuft nach Fehlern einfach weiter durch und senkt weiter die VCore bis das Gerät zum Absturz kommt. Der Thread dazu ist uralt und ich frage lieber mal hier. Das Script ist dort zu finden: https://bitbucket.org/stqn/shell-tools/raw/master/mprime-phc-setup
Funktioniert hier if (( $? == 0 )) nicht? Es werden Fehler angegeben und die mp_log Datei wird auch beschrieben. Nehme ich an, da nach einem Crash das Script die Logs aufgreifen kann. Aber es checkt einfach nicht, dass es abbrechen soll und die nächsthöhere VCore prüfen.
Relevanter Ausschnitt:
Funktioniert hier if (( $? == 0 )) nicht? Es werden Fehler angegeben und die mp_log Datei wird auch beschrieben. Nehme ich an, da nach einem Crash das Script die Logs aufgreifen kann. Aber es checkt einfach nicht, dass es abbrechen soll und die nächsthöhere VCore prüfen.
Relevanter Ausschnitt:
# Pass 1: lowering vid quickly until there is an error
if (( cur_vid*vid_delta < ${vid[f]}*vid_delta && pass2 == 0 )); then
#echo "forcing cur vid to max"
cur_vid=${vid[f]}
fi
cur_vid=$((cur_vid+vid_delta))
for (( ; cur_vid*vid_delta < vid_limit*vid_delta && pass2 == 0; cur_vid+=vid_delta )); do
count=$short_test_length
echo "Trying vid $cur_vid for $count seconds"
save_state
set_vid $f $cur_vid
# It looks like changing the VID also resets the frequency, so set frequency here
set_sys_val scaling_setspeed ${freq[f]}
launch_mprime
if ((debug)); then
sleep 1
debug_info
fi
for (( ; count>0; count-- )); do
sleep 1
echo -n "."
grep FATAL $mp_log &>/dev/null
if (( $? == 0 )); then
kill_mprime
echo ""
echo "Hardware failure detected."
((cur_vid-=vid_delta))
break 2
fi
cur_freq=$(cat $cpuf/scaling_cur_freq)
if (( (cur_freq < ${freq[f]} * (100 - wrong_freq_tolerance) / 100)
|| (cur_freq > ${freq[f]} * (100 + wrong_freq_tolerance) / 100) )); then
echo ""
echo "ERROR: Wrong frequency! (${cur_freq} instead of ${freq[f]})"
debug_info
exit 1
fi
done
echo ""
kill_mprime
done
# Pass 2: stress testing for a longer time and going up in case of an error.
for (( ; cur_vid*vid_delta <= vid_limit && cur_vid*vid_delta > (${vid[f]}+safety_vid_delta*vid_delta)*vid_delta; cur_vid-=vid_delta )); do
count=$long_test_length
echo "Trying vid $cur_vid for $count seconds"
save_state
set_vid $f $cur_vid
set_sys_val scaling_setspeed ${freq[f]}
launch_mprime
if ((debug)); then
debug_info
fi
for (( ; count>0; count-- )); do
sleep 1
echo -n "."
grep FATAL $mp_log &>/dev/null
if (( $? == 0 )); then
echo ""
echo "Hardware failure detected."
break
fi
done
kill_mprime
if (( count == 0 )); then
break
fi
done