#! /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 }