Commit graph android_kernel_sony_sdm845/tools/power/cpupower
Message SHA1
sched: Remove stale power aware scheduling remnants and dysfunctional knobs
It's been broken forever (i.e. it's not scheduling in a power
aware fashion), as reported by Suresh and others sending
patches, and nobody cares enough to fix it properly ...
so remove it to make space free for something better.

There's various problems with the code as it stands today, first
and foremost the user interface which is bound to topology
levels and has multiple values per level. This results in a
state explosion which the administrator or distro needs to
master and almost nobody does.

Furthermore large configuration state spaces aren't good, it
means the thing doesn't just work right because it's either
under so many impossibe to meet constraints, or even if
there's an achievable state workloads have to be aware of
it precisely and can never meet it for dynamic workloads.

So pushing this kind of decision to user-space was a bad idea
even with a single knob - it's exponentially worse with knobs
on every node of the topology.

There is a proposal to replace the user interface with a single
3 state knob:

 sched_balance_policy := { performance, power, auto }

where 'auto' would be the preferred default which looks at things
like Battery/AC mode and possible cpufreq state or whatever the hw
exposes to show us power use expectations - but there's been no
progress on it in the past many months.

Aside from that, the actual implementation of the various knobs
is known to be broken. There have been sporadic attempts at
fixing things but these always stop short of reaching a mergable
state.

Therefore this wholesale removal with the hopes of spurring
people who care to come forward once again and work on a
coherent replacement.

Signed-off-by: Peter Zijlstra <a.p.zijlstra@chello.nl>
Cc: Suresh Siddha <suresh.b.siddha@intel.com>
Cc: Arjan van de Ven <arjan@linux.intel.com>
Cc: Vincent Guittot <vincent.guittot@linaro.org>
Cc: Vaidyanathan Srinivasan <svaidy@linux.vnet.ibm.com>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Andrew Morton <akpm@linux-foundation.org>
Link: http://lkml.kernel.org/r/1326104915.2442.53.camel@twins
Signed-off-by: Ingo Molnar <mingo@kernel.org>

Peter Zijlstra   authored and   Ingo Molnar   commited 2012-05-17 13:48:56 +02:00
8e7fbcbc22
cpupower tools: add install target to the debug tools' makefiles
Signed-off-by: Franck Bui-Huu <fbuihuu@gmail.com>
Signed-off-by: Dominik Brodowski <linux@dominikbrodowski.net>

Franck Bui-Huu   authored and   Dominik Brodowski   commited 2012-03-03 14:40:11 +01:00
f16603386b
cpupower tools: allow to build debug tools in a separate directory too
Signed-off-by: Franck Bui-Huu <fbuihuu@gmail.com>
Signed-off-by: Dominik Brodowski <linux@dominikbrodowski.net>

Franck Bui-Huu   authored and   Dominik Brodowski   commited 2012-03-03 14:40:11 +01:00
7490ca1ea5
cpupower: Fix broken mask values
Signed-off-by: Thomas Renninger <trenn@suse.de>
Tested-by: Dave Jones <davej@redhat.com>
Signed-off-by: Dominik Brodowski <linux@dominikbrodowski.net>

Thomas Renninger   authored and   Dominik Brodowski   commited 2012-03-03 14:40:11 +01:00
62d5a67d65
cpupower tool: allow to build in a separate directory
This patch allows cpupower tool to generate its output files in a
seperate directory. This is now possible by passing the 'O=<path>' to
the command line.

This can be usefull for a normal user if the kernel source code is
located in a read only location.

This is patch stole some bits of the perf makefile.

[linux@dominikbrodowski.net: fix commit message]
Signed-off-by: Franck Bui-Huu <fbuihuu@gmail.com>
Signed-off-by: Dominik Brodowski <linux@dominikbrodowski.net>

Franck Bui-Huu   authored and   Dominik Brodowski   commited 2012-03-03 14:40:10 +01:00
68bb2c3a14
cpupower tool: makefile: simplify the recipe used to generate cpupower.pot target
Use the '-p' and '-o' switches to specify the pathname of the output
file to xgettext(1). This avoids to move manually the output file if
xgettext(1) succeeds.

Signed-off-by: Franck Bui-Huu <fbuihuu@gmail.com>
Signed-off-by: Dominik Brodowski <linux@dominikbrodowski.net>

Franck Bui-Huu   authored and   Dominik Brodowski   commited 2012-03-03 14:40:10 +01:00
3827150458
cpupower tool: remove use of undefined variables from the clean target of the top makefile
UTIL_BINS and IDLE_OBJS variables are not defined at all, so
there's no need to remove their content from the 'clean' target.

Signed-off-by: Franck Bui-Huu <fbuihuu@gmail.com>
Signed-off-by: Dominik Brodowski <linux@dominikbrodowski.net>

Franck Bui-Huu   authored and   Dominik Brodowski   commited 2012-03-03 14:40:10 +01:00
cf0213fdff
cpupower: Fix linking with --as-needed
Fix linking order to avoid undefined reference errors when
using --as-needed linker flag.

Signed-off-by: Ozan Çağlayan <ozan@pardus.org.tr>
Signed-off-by: Dominik Brodowski <linux@dominikbrodowski.net>

Ozan Çağlayan   authored and   Dominik Brodowski   commited 2012-03-03 14:40:10 +01:00
f2a00bb31c
cpupower: Remove unneeded code and by that fix a memleak
Looks like some not needed debug code slipped in.
Also this code:
tmp = sysfs_get_idlestate_name(cpu, idlestates - 1);
performs a strdup and the mem was not freed again.
-> delete it.

Signed-off-by: Thomas Renninger <trenn@suse.de>
Signed-off-by: Dominik Brodowski <linux@dominikbrodowski.net>

Thomas Renninger   authored and   Dominik Brodowski   commited 2012-03-03 14:40:10 +01:00
e0c6082dae
cpupower: Fix number of idle states
The number of idle states was wrong.
The POLL idle state (on X86) was missed out:
Number of idle states: 4
Available idle states: C1-NHM C3-NHM C6-NHM

While the POLL is not a real idle state, its
statistics should still be shown. It's now also
explained in a detailed manpage.
This should fix a bug of missing the first idle
state on other archs.

Signed-off-by: Thomas Renninger <trenn@suse.de>
Signed-off-by: Dominik Brodowski <linux@dominikbrodowski.net>

Thomas Renninger   authored and   Dominik Brodowski   commited 2012-03-03 14:40:09 +01:00
0b37ee65e5
cpupower: Unify cpupower-frequency-* manpages
cpupower-frequency-* manpages slightly differed from the others.
  - Use uppercase letters in the title
  - Show cpupower Manual in the header
  - Remove Mattia from left down corner of the manpage, he is already
    listed as author
  - Remove --help, prints this message -> not needed

Signed-off-by: Thomas Renninger <trenn@suse.de>
Signed-off-by: Dominik Brodowski <linux@dominikbrodowski.net>

Thomas Renninger   authored and   Dominik Brodowski   commited 2012-03-03 14:40:09 +01:00
e03bd1aa00
cpupower: Add cpupower-idle-info manpage
The last missing manpage for cpupower tools.

More info about other architecture's sleep state specialities would be great.

Signed-off-by: Thomas Renninger <trenn@suse.de>
Signed-off-by: Dominik Brodowski <linux@dominikbrodowski.net>

Thomas Renninger   authored and   Dominik Brodowski   commited 2012-03-03 14:40:09 +01:00
e7d85a9341
cpupower: AMD fam14h/Ontario monitor can also be used by fam12h cpus
The name of the monitor is updated at runtime to the name of the
CPU type.

Signed-off-by: Thomas Renninger <trenn@suse.de>
CC: Andreas Herrmann <herrmann.der.user@googlemail.com>
Signed-off-by: Dominik Brodowski <linux@dominikbrodowski.net>

Thomas Renninger   authored and   Dominik Brodowski   commited 2012-03-03 14:40:08 +01:00
f642089ce0
cpupower: Better interface for accessing AMD pci registers
AMD's BKDG (Bios and Kernel Developers Guide) talks in the CPU spec of their
CPU families about PCI registers defined by "device" (slot) and func(tion).

Assuming that CPU specific configuration PCI devices are always on domain
and bus zero a pci_slot_func_init() func which gets the slot and func of
the desired PCI device passed looks like the most convenient way.

This also obsoletes the PCI device id maintenance.

Signed-off-by: Thomas Renninger <trenn@suse.de>
CC: Andreas Herrmann <herrmann.der.user@googlemail.com>
Signed-off-by: Dominik Brodowski <linux@dominikbrodowski.net>

Thomas Renninger   authored and   Dominik Brodowski   commited 2012-03-03 14:40:08 +01:00
568a89904c
cpupower: use man(1) when calling "cpupower help subcommand"
Instead of printing something non-formatted to stdout, call
man(1) to show the man page for the proper subcommand.

Signed-off-by: Dominik Brodowski <linux@dominikbrodowski.net>

Dominik Brodowski   commited 2011-08-19 17:13:56 +02:00
498ca793d9
cpupower: make NLS truly optional
Loosely based on a patch for cpufrequtils, submittted by
Sergey Dryabzhinsky <sergey.dryabzhinsky@gmail.com> and

signed-off-by: Matt Turner <mattst88@gmail.com>
Signed-off-by: Dominik Brodowski <linux@dominikbrodowski.net>

Dominik Brodowski   commited 2011-08-19 17:00:02 +02:00
47c336307a
cpupower: fix Makefile typo
Signed-off-by: Dave Jones <davej@redhat.com>
Signed-off-by: Dominik Brodowski <linux@dominikbrodowski.net>

Dave Jones   authored and   Dominik Brodowski   commited 2011-08-19 16:49:49 +02:00
63b37de128
cpupower: Make monitor command -c/--cpu aware
This allows for example:
cpupower -c 2-4,6 monitor -m Mperf
              |Mperf
PKG |CORE|CPU | C0   | Cx   | Freq
   0|   8|   4|  2.42| 97.58|  1353
   0|  16|   2| 14.38| 85.62|  1928
   0|  24|   6|  1.76| 98.24|  1442
   1|  16|   3| 15.53| 84.47|  1650

CPUs always get resorted for package, core then cpu id if it could get read out
(or however you name these topology levels...).
Still this is a nice way to keep the overview if a test binary is bound to
a specific CPU or if one wants to show all CPUs inside a package or similar.

Still missing: Do not measure not available cores to reduce the overhead
and achieve better results.

Signed-off-by: Thomas Renninger <trenn@suse.de>
Signed-off-by: Dominik Brodowski <linux@dominikbrodowski.net>

Thomas Renninger   authored and   Dominik Brodowski   commited 2011-08-15 20:03:16 +02:00
9ee31f618a
cpupower: Better detect offlined CPUs
Before, checking for offlined CPUs was done dirty and
it was checked whether topology parsing returned -1 values.
But this is a valid case on a Xen (and possibly other) kernels.

Do proper online/offline checking, also take CONFIG_HOTPLUG_CPU
option into account (no /sys/devices/../cpuX/online file).

Signed-off-by: Thomas Renninger <trenn@suse.de>
Signed-off-by: Dominik Brodowski <linux@dominikbrodowski.net>

Thomas Renninger   authored and   Dominik Brodowski   commited 2011-08-15 20:03:10 +02:00
7c74d2bc5a
cpupower: Do not show an empty Idle_Stats monitor if no idle driver is available
By taking error values of:
sysfs_get_idlestate_count(..);
into account.

Signed-off-by: Thomas Renninger <trenn@suse.de>
Signed-off-by: Dominik Brodowski <linux@dominikbrodowski.net>

Thomas Renninger   authored and   Dominik Brodowski   commited 2011-08-15 20:03:05 +02:00
88f984e0e2
cpupower: mperf monitor - Use TSC to calculate max frequency if possible
Which makes the implementation independent from cpufreq drivers.
Therefore this would also work on a Xen kernel where the hypervisor
is doing frequency switching and idle entering.

Signed-off-by: Thomas Renninger <trenn@suse.de>
Signed-off-by: Dominik Brodowski <linux@dominikbrodowski.net>

Thomas Renninger   authored and   Dominik Brodowski   commited 2011-08-15 20:02:59 +02:00
2dfc818b35
cpupower: avoid using symlinks
Reference the source directly, don't create symlinks.

Signed-off-by: WANG Cong <amwang@redhat.com>
Signed-off-by: Dominik Brodowski <linux@dominikbrodowski.net>

Amerigo Wang   authored and   Dominik Brodowski   commited 2011-08-15 20:02:50 +02:00
75f25bd31d
cpupower: Do detect IDA (opportunistic processor performance) via cpuid
IA32-Intel Devel guide Volume 3A - 14.3.2.1
-------------------------------------------
...
Opportunistic processor performance operation can be disabled by setting bit 38 of
IA32_MISC_ENABLES. This mechanism is intended for BIOS only. If
IA32_MISC_ENABLES[38] is set, CPUID.06H:EAX[1] will return 0.

Better detect things via cpuid, this cleans up the code a bit
and the MSR parts were not working correctly anyway.

Signed-off-by: Thomas Renninger <trenn@suse.de>
CC: lenb@kernel.org
CC: linux@dominikbrodowski.net
CC: cpufreq@vger.kernel.org
Signed-off-by: Dominik Brodowski <linux@dominikbrodowski.net>

Thomas Renninger   authored and   Dominik Brodowski   commited 2011-07-29 19:37:27 +02:00
029e9f7366
cpupower: Show Intel turbo ratio support via ./cpupower frequency-info
This adds the last piece missing from turbostat (if called with -v).
It shows on Intel machines supporting Turbo Boost how many cores
have to be active/idle to enter which boost mode (frequency).

Whether the HW really enters these boost modes can be verified via
./cpupower monitor.

Signed-off-by: Thomas Renninger <trenn@suse.de>
CC: lenb@kernel.org
CC: linux@dominikbrodowski.net
CC: cpufreq@vger.kernel.org
Signed-off-by: Dominik Brodowski <linux@dominikbrodowski.net>

Thomas Renninger   authored and   Dominik Brodowski   commited 2011-07-29 19:37:25 +02:00
8fb2e440b2
cpupowerutils: increase MAX_LINE_LEN
larger sysfs data (>255 bytes) was truncated and thus used improperly

[linux@dominikbrodowski.net: adapted to cpupowerutils]
Signed-off-by: Roman Vasiyarov <rvasiyarov@gmail.com>
Signed-off-by: Dominik Brodowski <linux@dominikbrodowski.net>

Roman Vasiyarov   authored and   Dominik Brodowski   commited 2011-07-29 18:35:40 +02:00
76b659a31d
cpupower: Rename package from cpupowerutils to cpupower
Signed-off-by: Thomas Renninger <trenn@suse.de>
Signed-off-by: Dominik Brodowski <linux@dominikbrodowski.net>

Thomas Renninger   authored and   Dominik Brodowski   commited 2011-07-29 18:35:40 +02:00
ee3db6fcaf
cpupowerutils: Rename: libcpufreq->libcpupower
[linux@dominikbrodowski.net: fix .gitignore]
Signed-off-by: Thomas Renninger <trenn@suse.de>
Signed-off-by: Dominik Brodowski <linux@dominikbrodowski.net>

Thomas Renninger   authored and   Dominik Brodowski   commited 2011-07-29 18:35:40 +02:00
4c22337f86
cpupowerutils: use kernel version-derived version string
As cpupowerutils is intended to be included into the kernel sources,
use the kernel versioning instead of a custom version.

The script utils/version-gen.sh is largely based on the script already
found in tools/perf/util/PERF-VERSION-GEN .

Signed-off-by: Dominik Brodowski <linux@dominikbrodowski.net>

Dominik Brodowski   commited 2011-07-29 18:35:39 +02:00
af594f0ceb
cpupowerutils: utils - ConfigStyle bugfixes
Signed-off-by: Dominik Brodowski <linux@dominikbrodowski.net>

Dominik Brodowski   commited 2011-07-29 18:35:39 +02:00
a1ce5ba2b7
cpupowerutils: helpers - ConfigStyle bugfixes
Signed-off-by: Dominik Brodowski <linux@dominikbrodowski.net>

Dominik Brodowski   commited 2011-07-29 18:35:39 +02:00
2cd005cac6
cpupowerutils: idle_monitor - ConfigStyle bugfixes
Signed-off-by: Dominik Brodowski <linux@dominikbrodowski.net>

Dominik Brodowski   commited 2011-07-29 18:35:38 +02:00
b510b54127
cpupowerutils: lib - ConfigStyle bugfixes
Signed-off-by: Dominik Brodowski <linux@dominikbrodowski.net>

Dominik Brodowski   commited 2011-07-29 18:35:38 +02:00
6c2b818551
cpupowerutils: bench - ConfigStyle bugfixes
Signed-off-by: Dominik Brodowski <linux@dominikbrodowski.net>

Dominik Brodowski   commited 2011-07-29 18:35:38 +02:00
02af3cb5aa
cpupowerutils: do not update po files on each and every compile
Signed-off-by: Dominik Brodowski <linux@dominikbrodowski.net>

Dominik Brodowski   commited 2011-07-29 18:35:37 +02:00
f5ac0641d1
cpupowerutils: remove ccdv, use kernel quiet/verbose mechanism
Use the quiet/verbose mechanism found in kernel tools, without
relying on the special tool "ccdv"

Signed-off-by: Dominik Brodowski <linux@dominikbrodowski.net>

Dominik Brodowski   commited 2011-07-29 18:35:37 +02:00
7443af9c9b
cpupowerutils: use COPYING, CREDITS from top-level directory
Signed-off-by: Dominik Brodowski <linux@dominikbrodowski.net>

Dominik Brodowski   commited 2011-07-29 18:35:36 +02:00
c5db37fa0a
cpupowerutils - cpufrequtils extended with quite some features
CPU power consumption vs performance tuning is no longer
limited to CPU frequency switching anymore: deep sleep states,
traditional dynamic frequency scaling and hidden turbo/boost
frequencies are tied close together and depend on each other.
The first two exist on different architectures like PPC, Itanium and
ARM, the latter (so far) only on X86. On X86 the APU (CPU+GPU) will
only run most efficiently if CPU and GPU has proper power management
in place.

Users and Developers want to have *one* tool to get an overview what
their system supports and to monitor and debug CPU power management
in detail. The tool should compile and work on as many architectures
as possible.

Once this tool stabilizes a bit, it is intended to replace the
Intel-specific tools in tools/power/x86

Signed-off-by: Dominik Brodowski <linux@dominikbrodowski.net>

Dominik Brodowski   commited 2011-07-29 18:35:36 +02:00
7fe2f6399a