Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 4 Nov 2013 14:53:03 -0500
From:      John Baldwin <jhb@freebsd.org>
To:        freebsd-acpi@freebsd.org
Cc:        Kevin Oberman <rkoberman@gmail.com>, =?utf-8?q?=E6=9D=8E=E6=A3=AE?= <lisen1001@gmail.com>
Subject:   Re: Xeon E5 cpu work in low status
Message-ID:  <201311041453.03864.jhb@freebsd.org>
In-Reply-To: <CAN6yY1vyvmuN5UPzzoey4j1EEkgeKX0d62uL3MfhnPDdXCMB7g@mail.gmail.com>
References:  <CA%2BTSNq_9gGJrc3z_d-AJcqBKr164v5xYs5YRPJAeW_YED-Nb_w@mail.gmail.com> <CAN6yY1vyvmuN5UPzzoey4j1EEkgeKX0d62uL3MfhnPDdXCMB7g@mail.gmail.com>

next in thread | previous in thread | raw e-mail | index | archive | help
On Monday, November 04, 2013 12:52:53 pm Kevin Oberman wrote:
> On Mon, Nov 4, 2013 at 12:46 AM, =E6=9D=8E=E6=A3=AE <lisen1001@gmail.com>=
 wrote:
>=20
> > hi,all:
> >         the cpu of my machine is :  Intel(R) Xeon(R) CPU E5-2643 0 @
> > 3.30GHz.
> >
> >         after a reboot. The cpu freq is : sysctl dev.cpu.0.freq
> > dev.cpu.0.freq: 1200
> >
> >         i didn't set any power savings config in rc.conf.
> >
> >         How can i fix this?
> >
>=20
> It's not clear what is broken. Is the server busy? Is there some reason to
> expect it to be running at full clock-rate?
>=20
> What is the content of dev.cpu.0.freq_levels?
>=20
> By default, FreeBSD runs powerd and that will, by default, throttle back
> the clock when the system is not busy. I think that this is a bad thing.,
> but it is not a bug. It's by design. I really think, based on my own
> testing, research and a major NSF computer center (SDSC), and work done by
> mav@ which can be found on the FreeBSD wiki (
> https://wiki.freebsd.org/TuningPowerConsumption), those "power management"
> tools are broken by design a they are actually there for thermal control,
> not power management and are, at best, break-even, and in most cases are
> actually a loser in both power savings and system performance. (There are=
 a
> very few edge cases where they can be beneficial, but as a side effect for
> very specific loads under fairly unusual circumstances.)
>=20
> To turn off these (mis)features, add the following to /boot/loader.conf:
> # Disable CPU throttling
> hint.p4tcc.0.disabled=3D1
> hint.acpi_throttle.0.disabled=3D1
>=20
> <rant>
> All real power management is through the use of EST and CPU sleep (CX)
> states. These  can provide a big power win at minimal performance impact.
> Unfortunately CX states and throttling lay very badly together, probably
> because processor designers don't think that TCC and throttling are for
> power management, so are not an issue.
>=20
> For reasons that have always baffled me, rather than disable the
> inappropriate use of thermal management as power management, we disable t=
he
> most effective power management tools by default.
> performance_cx_lowest=3D"HIGH" # Online CPU idle state
> economy_cx_lowest=3D"HIGH" # Offline CPU idle state
>=20
> Even the comments are confusing: what do "Online" and "Offline" mean?
> Offline means running on battery and online means AC power.
>=20
> In any case, it's not clear that there is any issue with your system other
> than that, by default, FreeBSD tries to really, really hard to manage pow=
er
> as badly as humanly possible.
> </rant>

The only thing is that powerd is not enabled by default, so it shouldn't be
set to 1200 out of the box.  I think there have been a few laptops=20
historically that would startup at a lower clock speed (EST) when booted on
battery, but I've never heard of that for servers.

In terms of thermal throttling vs EST: ideally powerd would only ever use E=
ST,
and the throttling would be driven by acpi_thermal.  Most systems don't hav=
e=20
the _TC1/_TC2 methods acpi_thermal needs (I think I've only seen it on olde=
r=20
laptops), so that would effectively disable TCC on modern systems.

This requires tearing cpufreq apart a bit.  It's also not clear what we sho=
uld
display to the user.  The simplest approach would be to only export "absolu=
te"
frequencies in freq_levels and the current "absolute" frequency as "freq".
That would allow powerd to not need any changes.  You could use a different
sysctl node that is "throttling percent" or some such.  If throttling kicked
in on a system with TC1/TC2 then 'freq' wouldn't change when the CPU was=20
throttled, only the "throttling percent".

=2D-=20
John Baldwin



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201311041453.03864.jhb>