High CPU temperature and high fans level

Ian Smith smithi at nimnet.asn.au
Wed Jul 20 13:20:35 UTC 2016


On Wed, 20 Jul 2016 12:46:32 +0200, David Demelier wrote:
 > Le 18/07/2016 15:41, Ian Smith a écrit :
 > > In freebsd-questions Digest, Vol 632, Issue 8, Message: 21
 > > On Sun, 17 Jul 2016 11:59:32 +0200 David Demelier
 > > <demelier.david at gmail.com> wrote:
 > >   > 2016-07-17 0:25 GMT+02:00 Polytropon <freebsd at edvax.de>:
 > >   > > On Sun, 17 Jul 2016 00:06:07 +0200, David Demelier wrote:
 > >   > >> Hello,
 > >   > >>
 > >   > >> I was trying FreeBSD 10.3 on my laptop (hp probook 4510s) and was surprised
 > >   > >> to see high CPU temperature and fans running high.
 > >   > >>
 > >   > >> No apps running, I get a temperature of 57C in dev.cpu.x.temperature and
 > >   > >> fans run high (not able to get rpms).
 > >   > >>
 > >   > >> On a 4.6.3 Linux distro I get an average of 48C and fans are quite low.
 > >   > >>
 > >   > >> Both tests were kept in tty. No Xorg running just a boot and user login in
 > >   > >> console.
 > >   > >>
 > >   > >> Do you have any clue?
 > >   > >
 > >   > > Did you enable powerd? It can slow down the CPU when the system
 > >   > > is idle, and increase the CPU speed when needed. This should have
 > >   > > an effect on CPU temperature and fan speed.
 > > 
 > >   > Yes, I had powerd enabled, I tried -a adaptive, -a hiadaptive as
 > >   > suggested by Erich but it seems that only -a min has some little
 > >   > effect. I could get a temperature of 52C. I've tested back on Linux
 > >   > and I got an average much lower (41C).
 > > 
 > > We really need to see what speed the CPU is running at when idle.
 > > 
 > > I think the fans running high - presumably from the sound and airflow? -
 > > rules out the sort of sensor errors Arthur reported (ie below ambient :)
 > > and I assume the box actually feels warmer .. 57C suggests a busy CPU or
 > > two .. but then it is summer there; what background ambient temp. range?
 > 
 > We have air-conditioning at work so ambient temperature is normal, somewhat
 > between 24-28.

Ok, just checking.  So the temperatures are indeed obviously excessive.

 > >   > By the way the other sensors in hw.acpi.tz* are also much higher than
 > >   > Linux (using lm_sensors). The highest value is my tz5 which is at 78C

Isn't that tz2?  tz5 is only 55C in your listing (and not active), but 
tz2 is indeed 78C and working the fan moderately hard.

 > >   > almost 5 seconds after boot while the maximum tz value in Linux
 > >   > sensors is 55.
 > >   >
 > >   > I have no idea what's wrong. :(

 > >   % sysctl hw.acpi
 > >   % sysctl debug.acpi
 > >   % sysctl dev.est	# assuming intel? if not, maybe dev.hwpstate?
 > >   % sysctl dev.cpu	# best while idle, maybe plus when busier

 > Thanks for your answer, here I posted the output of the sysctl variables you
 > asked for:
 > 
 > http://markand.fr/files/result.txt

Thanks, that's a useful format.  Well, a couple of things ..

 > I've ran them on a FreeBSD memstick, I needed to install a Linux distro until
 > I can find a solution because this drains my battery a lot.

But did you start powerd after the memstick boot?  From the CPU speed, 
assuming it was generally idle, I suspect not?

The big surprise is that CPU frequency (at least when you asked) is at 
maximum (except for Turboboost mode) and that it's only using C1 state 
when halted.  C2 and C3 states provide a huge win for power consumption 
- and so proportionally less heat.  Alexander takes it to the limit at:
https://wiki.freebsd.org/TuningPowerConsumption

hw.acpi.cpu.cx_lowest: C1	# the 'master setting' for cx_lowest

# ==> sysctl dev.cpu
dev.cpu.1.cx_usage: 100.00% 0.00% 0.00% last 14427us
dev.cpu.1.cx_lowest: C1
dev.cpu.1.cx_supported: C1/1/1 C2/2/1 C3/3/162
[..]
dev.cpu.0.cx_usage: 100.00% 0.00% 0.00% last 13756us
dev.cpu.0.cx_lowest: C1
dev.cpu.0.cx_supported: C1/1/1 C2/2/1 C3/3/162
dev.cpu.0.freq_levels: 2101/35000 2100/35000 1600/23888 1200/15000
dev.cpu.0.freq: 2100

Also noted that it's running on battery (which is good for this purpose)
hw.acpi.acline: 0
hw.acpi.battery.info_expire: 5
hw.acpi.battery.units: 1
hw.acpi.battery.state: 1
hw.acpi.battery.time: 91	# can likely be doubled of better
hw.acpi.battery.life: 79

 > The average temperature was 50C, a bit less than the installed version on
 > hard drive where I have seen higher values. This is interesting. I will
 > double check if something else makes the CPU more busy.

Well you need to duplicate basic conditions when booted from memstick; 
after boot, as root you should be able to:

 # service powerd onestart
 # sysctl hw.acpi.cpu.cx_lowest=Cmax

and then observe dev.cpu.0.freq and dev.cpu.0.cx_usage ..

Though whenever you plug it in, or unplug it, you'll have to set the 
sysctl again, unless you update the settings in /etc/rc.conf (possible?)

Which should a) have it drop back to 1200 MHz and b) allow it to use C2 
and probably C3 .. you might check dmesg for any mention of 'C2' or 'C3' 
as certain combinations of chosen timecounter can limit C3 or even C2 
use, and will say so (usually to do with use of the TSC as timecounter)

On 9.3 one still had to explicily set these:
!grep cx /etc/defaults/rc.conf
performance_cx_lowest="HIGH"    # Online CPU idle state
economy_cx_lowest="HIGH"        # Offline CPU idle state
!grep cx /etc/rc.conf
performance_cx_lowest=C3
economy_cx_lowest=C3

But on head sources from a couple of months ago:
!grep cx /usr/head/src/etc/defaults/rc.conf
performance_cx_lowest="C2"      # Online CPU idle state
economy_cx_lowest="Cmax"        # Offline CPU idle state

So you might want to check what is there for 10.3?  Setting both 'Cmax' 
(or at least to C2) should be safe, the head defaults above are likely 
more conservative for a few boxes that aren't happy with C3 and higher.

If that works, with powerd running CPU at 1200 MHz, it should save lots 
of power and run plenty cooler.  Good luck!

Warner Losh has suggested disabling Turbo mode on these if having heat
problems, by adding (in your case) '-M 2100' to powerd_flags, but that 
might be something for later.  Meanwhile go for C2 and C3+ if possible.

As for fans, tz2 and tz0 are the only ones with 'active' cooling, though 
tz2 is the only one also with passive cooling, so is most probably the 
CPU/s - see acpi_thermal(4).

This one doesn't turn on passive cooling (ie slowing the CPU) until only 
3C below critical shutdown temperature, which seems a bit close to me.  

At that moment it was above 45C and below 62C, so running at level 3.

hw.acpi.thermal.tz2._TSP: 300
hw.acpi.thermal.tz2._TC2: 2
hw.acpi.thermal.tz2._TC1: 1
hw.acpi.thermal.tz2._ACx: 84.0C 74.0C 62.0C 45.0C 38.0C 30.0C -1 -1 -1 -1
hw.acpi.thermal.tz2._CRT: 108.0C
hw.acpi.thermal.tz2._HOT: -1
hw.acpi.thermal.tz2._PSV: 105.0C
hw.acpi.thermal.tz2.thermal_flags: 0
hw.acpi.thermal.tz2.passive_cooling: 1
hw.acpi.thermal.tz2.active: 3
hw.acpi.thermal.tz2.temperature: 53.0C

This fan is also active at level 3 (0-based, so above 72C, with 3 higher 
speeds to go).  It can be hard to tell what TZ matches what 'device'.

hw.acpi.thermal.tz0._TSP: -1
hw.acpi.thermal.tz0._TC2: -1
hw.acpi.thermal.tz0._TC1: -1
hw.acpi.thermal.tz0._ACx: 105.0C 96.0C 87.0C 72.0C 64.0C 57.0C 30.0C -1 -1 -1
hw.acpi.thermal.tz0._CRT: 108.0C
hw.acpi.thermal.tz0._HOT: -1
hw.acpi.thermal.tz0._PSV: -1
hw.acpi.thermal.tz0.thermal_flags: 0
hw.acpi.thermal.tz0.passive_cooling: 0
hw.acpi.thermal.tz0.active: 3
hw.acpi.thermal.tz0.temperature: 78.0C

That one seems pretty high.  I'd suspect the GPU(/s?) but you're not 
running X, so hmmm .. definitely not CPU though.

cheers, Ian


More information about the freebsd-questions mailing list