David Christensen wrote:
> Feeding the raw data into LibreOffice Calc was problematic
> -- header line field names do not have a one-to-one with
> data line field values. I reworked the header line as
> follows:
>
> time, governor, processes, CPU_temperature, system_load,
> CPU_fan_speed, core1_freq, core2_freq, core3_freq,
> core4_freq
OK, changed.
> The system *must* be otherwise idle before and during the
> test. The data indicates it was not.
I didn't use the computer and there was no download or
anything explicit run by me in the background, so I don't know
what more to do in that regard?
> The "CPU_fan_speed" was 0 throughout. Your data collection
> code for that field value is broken.
That's what's reported by sensors(1), I don't know how else
one would retrieve that information?
> There is supposed to be a cool-down delay at the start of
> each governor sub-run. My WAG was 3 minutes. Your test did 2
> minutes (off by 1 error).
Weird, if you mean this part of the pseudocode
loop 3 times
sleep 60 seconds
print statistics
endloop
then that's this part of the zsh code
repeat 3 {
sleep 60
cpu-stats
}
so I don't know what that isn't 3 minutes ... ?
> After each loading cycle, the load processes must be killed.
OK.
> Incremental load period -- the output variables must have
> reached their steady-state values when each incremental load
> period ends (10 loops * 6 seconds). Adjust and/or
> code accordingly.
Again I don't understand why that isn't what
repeat 10 {
sleep 6
cpu-stats
}
does?
> Have you isolated and identified the primary noise
> source(s)? Have you quantified them (e.g.
> sound measurement)?
No?
> Can you get that data into your test script?
I don't know?
Anyway here is the new script with a URL to the output:
#! /bin/zsh
#
# this file:
# https://dataswamp.org/~incal/conf/.zsh/cpu
#
# example output:
# https://dataswamp.org/~incal/ebchw/cpu.txt
cpu-stats-print () {
local time=$1
local gov=$2
local pro=$3
local temp=$4
local load=$5
local fan=$6
shift 6
local freq=($@)
echo -n "${time}, ${gov}, ${pro}, ${temp}, ${load}, ${fan}"
for f in $freq; do
echo -n ", $f"
done
echo
}
cpu-stats () {
local time=$(date +%s)
local gov=$(cpufreq-info -p | awk '{print $3}')
local pro=$(ps -ea | wc -l) # 'jobs -l' DNC
local temp=$(sensors -j | jq -a '.["k10temp-pci-00c3"].Tdie.temp1_input')
local load=$(awk '{print $1}' /proc/loadavg)
local fan=$(sensors | awk '/cpu_fan/{print $2}') # always 0
local freq=("${(@f)$(awk '/cpu MHz/{print $4}' /proc/cpuinfo)}")
cpu-stats-print $time $gov $pro $temp $load $fan $freq
}
test-cpu () {
echo -n "time, governor, processes, CPU_temperature, system_load,
CPU_fan_speed"
local cores=$(getconf _NPROCESSORS_ONLN)
for c in {1..$cores}; do
echo -n ", core${c}_freq"
done
echo
local ori=$(cpufreq-info -p | awk '{print $3}')
local pids
local g
local p
for g in $(cpufreq-info -g); do
pids=()
sudo cpufreq-set -g $g
repeat 3 {
sleep 60
cpu-stats
}
repeat $cores {
perl -e '1 while 1' &
pids+=($!)
repeat 10 {
sleep 6
cpu-stats
}
}
for p in $pids; do
kill $p
done
done
sudo cpufreq-set -g $ori
}
--
underground experts united
https://dataswamp.org/~incal