1

I'm using the cpufreq gnome extension. I manually set it to performance and, within a minute or so, it reverts to powersave. Anyone know what's going on behind the scenes?

Output of cat /etc/init.d/cpufrequtils

#!/bin/sh
### BEGIN INIT INFO
# Provides:       cpufrequtils
# Required-Start: $remote_fs loadcpufreq
# Required-Stop:
# Default-Start:  2 3 4 5
# Default-Stop:
# Short-Description: set CPUFreq kernel parameters
# Description: utilities to deal with CPUFreq Linux 
#   kernel support
### END INIT INFO
# 

DESC="CPUFreq Utilities"

PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin CPUFREQ_SET=/usr/bin/cpufreq-set CPUFREQ_INFO=/usr/bin/cpufreq-info CPUFREQ_OPTIONS=""

# use lsb-base . /lib/lsb/init-functions

# Which governor to use. Must be one of the governors listed in:
#   cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_governors
#
# and which limits to set. Both MIN_SPEED and MAX_SPEED must be values
# listed in:
#   cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_frequencies
# a value of 0 for any of the two variables will disabling the use of 
# that limit variable.
#
# WARNING: the correct kernel module must already be loaded or compiled in.
# 
# Set ENABLE to "true" to let the script run at boot time.
# 
# eg:   ENABLE="true"
#   GOVERNOR="ondemand"
#   MAX_SPEED=1000
#   MIN_SPEED=500

ENABLE="true" GOVERNOR="ondemand" MAX_SPEED="0" MIN_SPEED="0"

check_governor_avail() {    info="/sys/devices/system/cpu/cpu0/cpufreq/scaling_available_governors"     if [ -f $info ] && grep -q "\<$GOVERNOR\>" $info ; then         return 0;   fi  return 1; }

[ -x $CPUFREQ_SET ] || exit 0

if [ -f /etc/default/cpufrequtils ] ; then  . /etc/default/cpufrequtils fi

# if not enabled then exit gracefully [ "$ENABLE" = "true" ] || exit 0

if [ -n "$MAX_SPEED" ] && [ $MAX_SPEED != "0" ] ; then  CPUFREQ_OPTIONS="$CPUFREQ_OPTIONS --max $MAX_SPEED" fi

if [ -n "$MIN_SPEED" ] && [ $MIN_SPEED != "0" ] ; then  CPUFREQ_OPTIONS="$CPUFREQ_OPTIONS --min $MIN_SPEED" fi

if [ -n "$GOVERNOR" ] ; then    CPUFREQ_OPTIONS="$CPUFREQ_OPTIONS
--governor $GOVERNOR" fi

CPUS=$(cat /proc/stat|sed -ne 's/^cpu\([[:digit:]]\+\).*/\1/p') RETVAL=0 case "$1" in   start|force-reload|restart|reload)      log_action_begin_msg "$DESC: Setting $GOVERNOR CPUFreq governor"        if check_governor_avail ; then          for cpu in $CPUS ; do
                log_action_cont_msg "CPU${cpu}"
                $CPUFREQ_SET --cpu $cpu $CPUFREQ_OPTIONS 2>&1 > /dev/null || \
                    RETVAL=$?           done            log_action_end_msg $RETVAL ""       else            log_action_cont_msg "disabled, governor not available"          log_action_end_msg $RETVAL      fi      ;;  stop)       ;;  *)      echo "Usage: $0 {start|stop|restart|reload|force-reload}"       exit 1 esac

exit 0

The error appears to be in the 17.10 replacement of indicator-cpu with the cpufreq gnome extension. By avoiding this extension and using the command line, the solution below will work.

1 Answers1

1

In your /etc/init.d/cpufrequtils file change:

GOVERNOR="ondemand"

to:

GOVERNOR="performance"

Leave the rest of the line as is. Save and reboot.


TL;DR - old answer below

As far as Intel speed governors go:

  • ondemand mode was deprecated years ago.
  • performance mode has little improvement over powersave mode.

That said your processor may not even support picking between performance and powersave.

To view available speed governors use this command:

$ cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_governors 
performance powersave

If you do have more than one governor you can check what is currently in use with this command:

$ cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
powersave

To change your processor to performance mode use:

$ echo performance | sudo tee /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor
performance

You will then notice CPU% utilization drop by about 5% but also notice speed will increase from about 1000 MHz to 3000 MHz and temperatures will spike by ~10 degree, depending on your processor:

CPU Performance mode.gif


I have noticed that even when set to powersave mode (as I always use) when Ubuntu first boots it runs in performance mode for 90 seconds before it eventually kicks into powersave mode.

None-the-less after manually setting the governor to performance mode using the appropriate command above. It has stayed in performance mode for 10 minutes now as confirmed by using the appropriate command above and doubly confirmed by conky display above.


I left the governor set on performance for 30 minutes and it worked just fine. It might interest some readers what the conky display looks like when switching off of performance governor back to the default powersave governor:

CPU powersave.gif

CPU% utilization has spiked by 5%, but CPU frequency has dropped by 1500 MHz and temperature has decreased by about 10 degrees. Overall I think powersave mode is the best for most configurations.

  • i definitely have performance as one of the governors. (dual xeon, 32 cores). When I set it to performance, however, it begins to behave normally and then just, for whatever reason, reverts to powersave. This is a new problem in 17.10. – Michael Jarret Apr 01 '18 at 23:22
  • 1
    @MichaelJarret I changed my machine to use performance mode. It is still sticking after 5 minutes. But I used the command line (instructions above) and I'm Ubuntu 16.04, Kernel 4.14.27. – WinEunuuchs2Unix Apr 01 '18 at 23:37
  • Thanks for checking. I've been having difficulty with other extensions too. If nobody can recreate this, I'll probably just remove it for the time being. – Michael Jarret Apr 01 '18 at 23:41
  • @MichaelJarret Try running the commands I added to the answer. Maybe they will work for you? – WinEunuuchs2Unix Apr 01 '18 at 23:44
  • I actually did this before your post with no luck :/. – Michael Jarret Apr 01 '18 at 23:47
  • @MichaelJarret There must be a utility that is constantly checking the governor and resetting it. Can you think of any utilities you've installed that might do this? For myself I don't use such utilities (I'm kind of a command line guy) so can't think of any. – WinEunuuchs2Unix Apr 01 '18 at 23:49
  • The best I could come up with was that the command line cpufreq conflicts with the shell extension. I made sure that only one of the two was running. The command-line cpufreq seems to work just fine if i disable the shell extension. I'm no expert in either, but I first checked to make sure that monitoring my UPS wasn't triggering powersave. (That's an option, but wasn't the problem.) My only remaining guess is that there is something wonky with the way it's saving settings or something. Could be a software bug, perhaps. – Michael Jarret Apr 01 '18 at 23:53
  • @MichaelJarret I did some more research. I don't have these files but what happens if you do cat /etc/default/cpufrequtils or cat /etc/init.d/cpufrequtils? PS I also have a UPS connected via USB for monitoring but it has never caused any problems. – WinEunuuchs2Unix Apr 01 '18 at 23:56
  • /etc/default/cpufrequtils doesn't exist. I'm pasting the output of the other into the question. I don't think that cpufrequtils is the culprit, however. Somehow the shell extension seems to be separate. (This also happened to me with caffeine-indicator in 17.10.) – Michael Jarret Apr 02 '18 at 00:12
  • @MichaelJarret Your question update was corrupted by first clicking the quote symbol " and then clicking the code block symble {}. In any respect /etc/init.d/cpufrequtils is supposed to be pre-16.04 and /etc/cefault/cpufrequtils is supposed to be >= 16.04 as per this Q&A: https://askubuntu.com/questions/410860/how-to-permanently-set-cpu-power-management-to-the-powersave-governor?utm_medium=organic&utm_source=google_rich_qa&utm_campaign=google_rich_qa – WinEunuuchs2Unix Apr 02 '18 at 00:17
  • @MichaelJarret I've revised the answer with a short one on top and a TL;DR original on the bottom. – WinEunuuchs2Unix Apr 02 '18 at 00:45
  • I'm accepting the answer because I think it will fix most people's problems. Unfortunately, I think the issue is that for 17.10, indicator-cpufreq isn't available and there's a different extension, so it isn't correcting mine. This layer actually seems to be the culprit, but I don't have time to dig through their code. Thanks for the help. – Michael Jarret Apr 02 '18 at 00:48
  • @MichaelJarret maybe the secret is sudo apt remove --purge the application and just use the command line like I did above? Thanks for accepting the answer but I don't feel I deserve it. – WinEunuuchs2Unix Apr 02 '18 at 00:50
  • That's actually what I did combined with your solution. You deserve it as much as anyone. I actually don't think there's a possible fix without a bug report or correcting the source code, which is well beyond the scope of ask Ubuntu. I'm going to add a comment about this to the original question so as to not mislead future readers. – Michael Jarret Apr 02 '18 at 00:52