automate/cpuscaling-ignore_ppc.sh

97 lines
3.3 KiB
Bash

#!/usr/bin/env zsh
sudo apt-get install -y cpufrequtils linux-cpupower
# Set ignore bios throttling on the kernel commandline
#sed -i "s|^GRUB_CMDLINE_LINUX_DEFAULT=\"\(.*\)\"|GRUB_CMDLINE_LINUX_DEFAULT=\"\1 processor.ignore_ppc=1\"|" /etc/default/grub
#NEWARG="processor.ignore_ppc=1"
#sed -i -E "s|^(GRUB_CMDLINE_LINUX_DEFAULT=\"[^\"]*)\"|\1 ${NEWARG}\"|" /etc/default/grub
#update_grub
# get max available cpu frequency
frequencies=$(cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_frequencies)
freqs=(${(@s| |)frequencies})
max_freq=${freqs[1]}
# max_freq=2401000
# set max scaling frequency
number_of_cores=2
(( cores = ${number_of_cores} - 1 ))
for x in /sys/devices/system/cpu/cpu[0-${cores}]/cpufreq/;
do
echo "Setting scaling_max_freq of ${max_freq}"
echo -n ${max_freq} > $x/scaling_max_freq
done
# set bios ignore for running kernel
echo 1 > /sys/module/processor/parameters/ignore_ppc
## cpufreq commands
cpufreq-info --freq # 606464
cpufreq-info --hwfreq
cpufreq-info --hwlimits # 800000 2401000
cpufreq-info --driver # acpi-cpufreq
cpufreq-info --policy # 800000 800000 userspace
cpufreq-info --governors # conservative userspace powersave ondemand performance schedutil
cpufreq-info --related-cpus # 0
cpufreq-info --affected-cpus # 0
cpufreq-info --stats # 2401000:0, 2400000:0, 2000000:0, 1600000:0, 1200000:0, 800000:18825306%
cpufreq-info --latency # 10000
# cpufreq-info --proc
# minimum CPU frequency - maximum CPU frequency - governor
# CPU 0 800000 kHz ( 33 %) - 800000 kHz ( 33 %) - userspace
# CPU 1 800000 kHz ( 33 %) - 800000 kHz ( 33 %) - userspace
cpufreq-info --cpu 0
cpufreq-info --cpu 1
# cpufrequtils 008: cpufreq-info (C) Dominik Brodowski 2004-2009
# Report errors and bugs to cpufreq@vger.kernel.org, please.
# analyzing CPU 1:
# driver: acpi-cpufreq
# CPUs which run at the same hardware frequency: 1
# CPUs which need to have their frequency coordinated by software: 1
# maximum transition latency: 10.0 us.
# hardware limits: 800 MHz - 2.40 GHz
# available frequency steps: 2.40 GHz, 2.40 GHz, 2.00 GHz, 1.60 GHz, 1.20 GHz, 800 MHz
# available cpufreq governors: conservative, userspace, powersave, ondemand, performance, schedutil
# current policy: frequency should be within 800 MHz and 800 MHz.
# The governor "userspace" may decide which speed to use
# within this range.
# current CPU frequency is 606 MHz.
# cpufreq stats: 2.40 GHz:0.00%, 2.40 GHz:0.00%, 2.00 GHz:0.00%, 1.60 GHz:0.00%, 1.20 GHz:0.00%, 800 MHz:100.00% (1)
echo ""
echo "If the intel_pstate driver is being used there are only two available governors, powersave and performance."
echo ""
# GOVERNOR="userspace"
GOVERNOR="ondemand"
# GOVERNOR="powersave"
# GOVERNOR="performance"
echo ""
echo "Setting governor to ${GOVERNOR}"
echo ""
echo " To use the ACPI driver you need to pass the 'intel_pstate=disable' on the kernel line and ensure the cpufreq_userspace kernel module is loaded."
echo "set the governor: cpupower frequency-set --governor userspace"
echo "set the frequency: cpupower --cpu all frequency-set --freq 800MHz"
echo ""
modprobe acpi-cpufreq
cpufreq-set \
--cpu 0 \
--governor ${GOVERNOR} \
--min 800 \
--max 2600
cpufreq-set \
--cpu 1 \
--governor ${GOVERNOR} \
--min 800 \
--max 2600