Notinkeys
Posts: 15
Joined: Mon Feb 09, 2015 3:13 pm

Throttling

Thu Aug 09, 2018 1:34 pm

Does the Pi 3 employ throttling for heat or insufficient power? My Pi is incedibly slow and I am trying to figure out why.

jamesh
Raspberry Pi Engineer & Forum Moderator
Raspberry Pi Engineer & Forum Moderator
Posts: 27721
Joined: Sat Jul 30, 2011 7:41 pm

Re: Throttling

Thu Aug 09, 2018 1:43 pm

Principal Software Engineer at Raspberry Pi (Trading) Ltd.
Contrary to popular belief, humorous signatures are allowed.
I've been saying "Mucho" to my Spanish friend a lot more lately. It means a lot to him.

drgeoff
Posts: 11367
Joined: Wed Jan 25, 2012 6:39 pm

Re: Throttling

Thu Aug 09, 2018 1:45 pm

Notinkeys wrote:
Thu Aug 09, 2018 1:34 pm
Does the Pi 3 employ throttling for heat or insufficient power?
Heat, yes. Insufficient power, no.
Quis custodiet ipsos custodes?

jamesh
Raspberry Pi Engineer & Forum Moderator
Raspberry Pi Engineer & Forum Moderator
Posts: 27721
Joined: Sat Jul 30, 2011 7:41 pm

Re: Throttling

Thu Aug 09, 2018 3:21 pm

drgeoff wrote:
Thu Aug 09, 2018 1:45 pm
Notinkeys wrote:
Thu Aug 09, 2018 1:34 pm
Does the Pi 3 employ throttling for heat or insufficient power?
Heat, yes. Insufficient power, no.
The low voltage event will cause some sort of throttling to be done, but cannot remember exactly what - might just prohibit turbo mode or similar . Will find out more details once knowlegable guy is in office.
Principal Software Engineer at Raspberry Pi (Trading) Ltd.
Contrary to popular belief, humorous signatures are allowed.
I've been saying "Mucho" to my Spanish friend a lot more lately. It means a lot to him.

User avatar
Imperf3kt
Posts: 4142
Joined: Tue Jun 20, 2017 12:16 am
Location: Australia
Contact: Twitter

Re: Throttling

Thu Aug 09, 2018 7:45 pm

drgeoff wrote:
Thu Aug 09, 2018 1:45 pm
Notinkeys wrote:
Thu Aug 09, 2018 1:34 pm
Does the Pi 3 employ throttling for heat or insufficient power?
Heat, yes. Insufficient power, no.
In my experience it does.
55:55:44:44:4C
52:4C:52:42:41

Rose tinted glasses are difficult to see through.

Notinkeys
Posts: 15
Joined: Mon Feb 09, 2015 3:13 pm

Re: Throttling

Fri Aug 10, 2018 5:26 pm

Thanks. Is there a way to determine if that is happening? My Pi 3 is horrendously slow. Using Ubuntu Mate.

ejolson
Posts: 6320
Joined: Tue Mar 18, 2014 11:47 am

Re: Throttling

Fri Aug 10, 2018 7:25 pm

Notinkeys wrote:
Fri Aug 10, 2018 5:26 pm
Thanks. Is there a way to determine if that is happening? My Pi 3 is horrendously slow. Using Ubuntu Mate.
The Raspberry Pi uses a nonstandard method involving mailboxes and the GPU to report what the current CPU clock rate is. In Raspbian there is a command vcgencmd that can be used to obtain the current clock speed.

One of the main purposes of benchmarks (aside from advertising faster computers) is to verify a system is performing as expected. I have run the Linpack benchmark on a Pi 3B+ and obtained 6.718 Gflops. If you run the same benchmark and obtain noticeably slower results, that would confirm that your 3B+ is experiencing some sort of throttling. Note that a script which uses vcgencmd to monitor the CPU clock speed is also described in my benchmarking post.

User avatar
jahboater
Posts: 6499
Joined: Wed Feb 04, 2015 6:38 pm
Location: Wonderful West Dorset

Re: Throttling

Fri Aug 10, 2018 7:38 pm

Throttling events are recorded, try ...

Code: Select all

vcgencmd get_throttled
If non-zero, the bits in the hex number returned may interpreted as:

Code: Select all

1010000000000000101  <- 19 bits  rpi 3b+
|||             |||_ under-voltage
|||             ||_ currently throttled
|||             |_ arm frequency capped
|||_ under-voltage has occurred since last reboot
||_ throttling has occurred since last reboot
|_ arm frequency capped has occurred since last reboot
But note the initial 200MHz soft limit throttle is not recorded here.
It is now (by default) set to 60C, but you can increase it with:

Code: Select all

temp_soft_limit=70
This little script is handy for monitoring the important stuff:

Code: Select all

#!/bin/bash
Counter=14
DisplayHeader="Time      Temp    CPU        Throttle        Vcore"
while true ; do
  let Counter++
  if [ ${Counter} -eq 15 ]; then
    echo -e "${DisplayHeader}"
    Counter=0
  fi
  Health=$(perl -e "printf \"%19b\n\", $(vcgencmd get_throttled | cut -f2 -d=)")
  Temp=$(vcgencmd measure_temp | cut -f2 -d=)
  RealClockspeed=$(vcgencmd measure_clock arm | awk -F"=" '{printf ("%0.0f",$2/1000000); }' )
  CoreVoltage=$(vcgencmd measure_volts | cut -f2 -d= | sed 's/000//')
  echo -e "$(date '+%H:%M:%S') ${Temp} $(printf '%4s' ${RealClockspeed})MHz $(printf '%019d' ${Health}) ${CoreVoltage}"
  sleep 60
done

Return to “Advanced users”