forked from pool/cpupower
- Update cpupower and turbostat to latest git kernel HEAD version
this currently is 3.19-rc6, but it is expected that there are no changes anymore and the version gets named 3.19 already. The patches are already included mainline and get removed from osc: cpupower_disable_by_latency.patch add_idle_manpages_in_Makefile.patch cpupower-always_try_to_load_msr_driver_as_root.patch cpupower-return_zero_on_success.patch cpupower-remove_mc_scheduler_bits.patch OBS-URL: https://build.opensuse.org/package/show/hardware/cpupower?expand=0&rev=46
This commit is contained in:
parent
ac13e1df99
commit
b04de73421
@ -1,13 +0,0 @@
|
||||
Index: cpupower-3.13/Makefile
|
||||
===================================================================
|
||||
--- cpupower-3.13.orig/Makefile
|
||||
+++ cpupower-3.13/Makefile
|
||||
@@ -274,6 +274,8 @@ install-man:
|
||||
$(INSTALL_DATA) -D man/cpupower.1 $(DESTDIR)${mandir}/man1/cpupower.1
|
||||
$(INSTALL_DATA) -D man/cpupower-frequency-set.1 $(DESTDIR)${mandir}/man1/cpupower-frequency-set.1
|
||||
$(INSTALL_DATA) -D man/cpupower-frequency-info.1 $(DESTDIR)${mandir}/man1/cpupower-frequency-info.1
|
||||
+ $(INSTALL_DATA) -D man/cpupower-idle-set.1 $(DESTDIR)${mandir}/man1/cpupower-idle-set.1
|
||||
+ $(INSTALL_DATA) -D man/cpupower-idle-info.1 $(DESTDIR)${mandir}/man1/cpupower-idle-info.1
|
||||
$(INSTALL_DATA) -D man/cpupower-set.1 $(DESTDIR)${mandir}/man1/cpupower-set.1
|
||||
$(INSTALL_DATA) -D man/cpupower-info.1 $(DESTDIR)${mandir}/man1/cpupower-info.1
|
||||
$(INSTALL_DATA) -D man/cpupower-monitor.1 $(DESTDIR)${mandir}/man1/cpupower-monitor.1
|
@ -1,3 +0,0 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:e57739b412027a105539f8294b0972597858862722cae315152f4c22e014dc88
|
||||
size 70424
|
3
cpupower-3.19.tar.bz2
Normal file
3
cpupower-3.19.tar.bz2
Normal file
@ -0,0 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:fc866551e33bca8b6c2398335d93ed3e0db7487566b873197bf68a104c14ef81
|
||||
size 70536
|
@ -1,43 +0,0 @@
|
||||
cpupower: If root, try to load msr driver on x86 if /dev/cpu/0/msr is not avail
|
||||
|
||||
Signed-off-by: Thomas Renninger <trenn@suse.de>
|
||||
|
||||
diff --git a/utils/cpupower.c b/utils/cpupower.c
|
||||
index 7efc570..7cdcf88 100644
|
||||
--- a/utils/cpupower.c
|
||||
+++ b/utils/cpupower.c
|
||||
@@ -12,6 +12,9 @@
|
||||
#include <string.h>
|
||||
#include <unistd.h>
|
||||
#include <errno.h>
|
||||
+#include <sys/types.h>
|
||||
+#include <sys/stat.h>
|
||||
+#include <sys/utsname.h>
|
||||
|
||||
#include "builtin.h"
|
||||
#include "helpers/helpers.h"
|
||||
@@ -169,6 +172,8 @@ int main(int argc, const char *argv[])
|
||||
{
|
||||
const char *cmd;
|
||||
unsigned int i, ret;
|
||||
+ struct stat statbuf;
|
||||
+ struct utsname uts;
|
||||
|
||||
cpus_chosen = bitmask_alloc(sysconf(_SC_NPROCESSORS_CONF));
|
||||
|
||||
@@ -195,6 +200,15 @@ int main(int argc, const char *argv[])
|
||||
|
||||
get_cpu_info(0, &cpupower_cpu_info);
|
||||
run_as_root = !getuid();
|
||||
+ if (run_as_root) {
|
||||
+ ret = uname(&uts);
|
||||
+ if (!ret && !strcmp(uts.machine, "x86_64") &&
|
||||
+ stat("/dev/cpu/0/msr", &statbuf) != 0) {
|
||||
+ if (system("modprobe msr") == -1)
|
||||
+ fprintf(stderr, _("MSR access not available.\n"));
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
|
||||
for (i = 0; i < ARRAY_SIZE(commands); i++) {
|
||||
struct cmd_struct *p = commands + i;
|
@ -1,234 +0,0 @@
|
||||
cpupower: Remove mc and smt power aware scheduler info/settings
|
||||
|
||||
These kernel interfaces got removed by:
|
||||
commit 8e7fbcbc22c12414bcc9dfdd683637f58fb32759
|
||||
Author: Peter Zijlstra <peterz@infradead.org>
|
||||
Date: Mon Jan 9 11:28:35 2012 +0100
|
||||
|
||||
sched: Remove stale power aware scheduling remnants and dysfunctional knobs
|
||||
|
||||
No need to further keep them as userspace configurations.
|
||||
|
||||
Signed-off-by: Thomas Renninger <trenn@suse.de>
|
||||
|
||||
diff --git a/tools/power/cpupower/man/cpupower-info.1 b/tools/power/cpupower/man/cpupower-info.1
|
||||
index 58e2119..340bcd0 100644
|
||||
--- a/tools/power/cpupower/man/cpupower-info.1
|
||||
+++ b/tools/power/cpupower/man/cpupower-info.1
|
||||
@@ -3,7 +3,7 @@
|
||||
cpupower\-info \- Shows processor power related kernel or hardware configurations
|
||||
.SH SYNOPSIS
|
||||
.ft B
|
||||
-.B cpupower info [ \-b ] [ \-s ] [ \-m ]
|
||||
+.B cpupower info [ \-b ]
|
||||
|
||||
.SH DESCRIPTION
|
||||
\fBcpupower info \fP shows kernel configurations or processor hardware
|
||||
diff --git a/tools/power/cpupower/man/cpupower-set.1 b/tools/power/cpupower/man/cpupower-set.1
|
||||
index 9dbd536..2bcc696 100644
|
||||
--- a/tools/power/cpupower/man/cpupower-set.1
|
||||
+++ b/tools/power/cpupower/man/cpupower-set.1
|
||||
@@ -3,7 +3,7 @@
|
||||
cpupower\-set \- Set processor power related kernel or hardware configurations
|
||||
.SH SYNOPSIS
|
||||
.ft B
|
||||
-.B cpupower set [ \-b VAL ] [ \-s VAL ] [ \-m VAL ]
|
||||
+.B cpupower set [ \-b VAL ]
|
||||
|
||||
|
||||
.SH DESCRIPTION
|
||||
@@ -55,35 +55,6 @@ Use \fBcpupower -c all info -b\fP to verify.
|
||||
|
||||
This options needs the msr kernel driver (CONFIG_X86_MSR) loaded.
|
||||
.RE
|
||||
-.PP
|
||||
-\-\-sched\-mc, \-m [ VAL ]
|
||||
-.RE
|
||||
-\-\-sched\-smt, \-s [ VAL ]
|
||||
-.RS 4
|
||||
-\-\-sched\-mc utilizes cores in one processor package/socket first before
|
||||
-processes are scheduled to other processor packages/sockets.
|
||||
-
|
||||
-\-\-sched\-smt utilizes thread siblings of one processor core first before
|
||||
-processes are scheduled to other cores.
|
||||
-
|
||||
-The impact on power consumption and performance (positiv or negativ) heavily
|
||||
-depends on processor support for deep sleep states, frequency scaling and
|
||||
-frequency boost modes and their dependencies between other thread siblings
|
||||
-and processor cores.
|
||||
-
|
||||
-Taken over from kernel documentation:
|
||||
-
|
||||
-Adjust the kernel's multi-core scheduler support.
|
||||
-
|
||||
-Possible values are:
|
||||
-.RS 2
|
||||
-0 - No power saving load balance (default value)
|
||||
-
|
||||
-1 - Fill one thread/core/package first for long running threads
|
||||
-
|
||||
-2 - Also bias task wakeups to semi-idle cpu package for power
|
||||
-savings
|
||||
-.RE
|
||||
|
||||
.SH "SEE ALSO"
|
||||
cpupower-info(1), cpupower-monitor(1), powertop(1)
|
||||
diff --git a/tools/power/cpupower/utils/cpupower-info.c b/tools/power/cpupower/utils/cpupower-info.c
|
||||
index 0ac2577..136d979 100644
|
||||
--- a/tools/power/cpupower/utils/cpupower-info.c
|
||||
+++ b/tools/power/cpupower/utils/cpupower-info.c
|
||||
@@ -18,8 +18,6 @@
|
||||
|
||||
static struct option set_opts[] = {
|
||||
{ .name = "perf-bias", .has_arg = optional_argument, .flag = NULL, .val = 'b'},
|
||||
- { .name = "sched-mc", .has_arg = optional_argument, .flag = NULL, .val = 'm'},
|
||||
- { .name = "sched-smt", .has_arg = optional_argument, .flag = NULL, .val = 's'},
|
||||
{ },
|
||||
};
|
||||
|
||||
@@ -37,8 +35,6 @@ int cmd_info(int argc, char **argv)
|
||||
|
||||
union {
|
||||
struct {
|
||||
- int sched_mc:1;
|
||||
- int sched_smt:1;
|
||||
int perf_bias:1;
|
||||
};
|
||||
int params;
|
||||
@@ -49,23 +45,13 @@ int cmd_info(int argc, char **argv)
|
||||
textdomain(PACKAGE);
|
||||
|
||||
/* parameter parsing */
|
||||
- while ((ret = getopt_long(argc, argv, "msb", set_opts, NULL)) != -1) {
|
||||
+ while ((ret = getopt_long(argc, argv, "b", set_opts, NULL)) != -1) {
|
||||
switch (ret) {
|
||||
case 'b':
|
||||
if (params.perf_bias)
|
||||
print_wrong_arg_exit();
|
||||
params.perf_bias = 1;
|
||||
break;
|
||||
- case 'm':
|
||||
- if (params.sched_mc)
|
||||
- print_wrong_arg_exit();
|
||||
- params.sched_mc = 1;
|
||||
- break;
|
||||
- case 's':
|
||||
- if (params.sched_smt)
|
||||
- print_wrong_arg_exit();
|
||||
- params.sched_smt = 1;
|
||||
- break;
|
||||
default:
|
||||
print_wrong_arg_exit();
|
||||
}
|
||||
@@ -78,25 +64,6 @@ int cmd_info(int argc, char **argv)
|
||||
if (bitmask_isallclear(cpus_chosen))
|
||||
bitmask_setbit(cpus_chosen, 0);
|
||||
|
||||
- if (params.sched_mc) {
|
||||
- ret = sysfs_get_sched("mc");
|
||||
- printf(_("System's multi core scheduler setting: "));
|
||||
- if (ret < 0)
|
||||
- /* if sysfs file is missing it's: errno == ENOENT */
|
||||
- printf(_("not supported\n"));
|
||||
- else
|
||||
- printf("%d\n", ret);
|
||||
- }
|
||||
- if (params.sched_smt) {
|
||||
- ret = sysfs_get_sched("smt");
|
||||
- printf(_("System's thread sibling scheduler setting: "));
|
||||
- if (ret < 0)
|
||||
- /* if sysfs file is missing it's: errno == ENOENT */
|
||||
- printf(_("not supported\n"));
|
||||
- else
|
||||
- printf("%d\n", ret);
|
||||
- }
|
||||
-
|
||||
/* Add more per cpu options here */
|
||||
if (!params.perf_bias)
|
||||
return ret;
|
||||
diff --git a/tools/power/cpupower/utils/cpupower-set.c b/tools/power/cpupower/utils/cpupower-set.c
|
||||
index bcf1d2f..573c75f 100644
|
||||
--- a/tools/power/cpupower/utils/cpupower-set.c
|
||||
+++ b/tools/power/cpupower/utils/cpupower-set.c
|
||||
@@ -19,8 +19,6 @@
|
||||
|
||||
static struct option set_opts[] = {
|
||||
{ .name = "perf-bias", .has_arg = required_argument, .flag = NULL, .val = 'b'},
|
||||
- { .name = "sched-mc", .has_arg = required_argument, .flag = NULL, .val = 'm'},
|
||||
- { .name = "sched-smt", .has_arg = required_argument, .flag = NULL, .val = 's'},
|
||||
{ },
|
||||
};
|
||||
|
||||
@@ -38,13 +36,11 @@ int cmd_set(int argc, char **argv)
|
||||
|
||||
union {
|
||||
struct {
|
||||
- int sched_mc:1;
|
||||
- int sched_smt:1;
|
||||
int perf_bias:1;
|
||||
};
|
||||
int params;
|
||||
} params;
|
||||
- int sched_mc = 0, sched_smt = 0, perf_bias = 0;
|
||||
+ int perf_bias = 0;
|
||||
int ret = 0;
|
||||
|
||||
setlocale(LC_ALL, "");
|
||||
@@ -52,7 +48,7 @@ int cmd_set(int argc, char **argv)
|
||||
|
||||
params.params = 0;
|
||||
/* parameter parsing */
|
||||
- while ((ret = getopt_long(argc, argv, "m:s:b:",
|
||||
+ while ((ret = getopt_long(argc, argv, "b:",
|
||||
set_opts, NULL)) != -1) {
|
||||
switch (ret) {
|
||||
case 'b':
|
||||
@@ -66,28 +62,6 @@ int cmd_set(int argc, char **argv)
|
||||
}
|
||||
params.perf_bias = 1;
|
||||
break;
|
||||
- case 'm':
|
||||
- if (params.sched_mc)
|
||||
- print_wrong_arg_exit();
|
||||
- sched_mc = atoi(optarg);
|
||||
- if (sched_mc < 0 || sched_mc > 2) {
|
||||
- printf(_("--sched-mc param out "
|
||||
- "of range [0-%d]\n"), 2);
|
||||
- print_wrong_arg_exit();
|
||||
- }
|
||||
- params.sched_mc = 1;
|
||||
- break;
|
||||
- case 's':
|
||||
- if (params.sched_smt)
|
||||
- print_wrong_arg_exit();
|
||||
- sched_smt = atoi(optarg);
|
||||
- if (sched_smt < 0 || sched_smt > 2) {
|
||||
- printf(_("--sched-smt param out "
|
||||
- "of range [0-%d]\n"), 2);
|
||||
- print_wrong_arg_exit();
|
||||
- }
|
||||
- params.sched_smt = 1;
|
||||
- break;
|
||||
default:
|
||||
print_wrong_arg_exit();
|
||||
}
|
||||
@@ -96,19 +70,6 @@ int cmd_set(int argc, char **argv)
|
||||
if (!params.params)
|
||||
print_wrong_arg_exit();
|
||||
|
||||
- if (params.sched_mc) {
|
||||
- ret = sysfs_set_sched("mc", sched_mc);
|
||||
- if (ret)
|
||||
- fprintf(stderr, _("Error setting sched-mc %s\n"),
|
||||
- (ret == -ENODEV) ? "not supported" : "");
|
||||
- }
|
||||
- if (params.sched_smt) {
|
||||
- ret = sysfs_set_sched("smt", sched_smt);
|
||||
- if (ret)
|
||||
- fprintf(stderr, _("Error setting sched-smt %s\n"),
|
||||
- (ret == -ENODEV) ? "not supported" : "");
|
||||
- }
|
||||
-
|
||||
/* Default is: set all CPUs */
|
||||
if (bitmask_isallclear(cpus_chosen))
|
||||
bitmask_setall(cpus_chosen);
|
@ -1,23 +0,0 @@
|
||||
cpupower: cpupower info -b should return 0 on success, not the perf bias value
|
||||
|
||||
Signed-off-by: Thomas Renninger <trenn@suse.de>
|
||||
|
||||
diff --git a/utils/cpupower-info.c b/utils/cpupower-info.c
|
||||
index 3f68632..3e27975 100644
|
||||
--- a/utils/cpupower-info.c
|
||||
+++ b/utils/cpupower-info.c
|
||||
@@ -125,11 +125,11 @@ int cmd_info(int argc, char **argv)
|
||||
if (params.perf_bias) {
|
||||
ret = msr_intel_get_perf_bias(cpu);
|
||||
if (ret < 0) {
|
||||
- printf(_("Could not read perf-bias value\n"));
|
||||
- break;
|
||||
+ printf(_("Could not read perf-bias value[%d]\n"), ret);
|
||||
+ exit(EXIT_FAILURE);
|
||||
} else
|
||||
printf(_("perf-bias: %d\n"), ret);
|
||||
}
|
||||
}
|
||||
- return ret;
|
||||
+ return 0;
|
||||
}
|
@ -1,3 +1,16 @@
|
||||
-------------------------------------------------------------------
|
||||
Wed Jan 28 17:11:07 UTC 2015 - trenn@suse.de
|
||||
|
||||
- Update cpupower and turbostat to latest git kernel HEAD version
|
||||
this currently is 3.19-rc6, but it is expected that there are no
|
||||
changes anymore and the version gets named 3.19 already.
|
||||
The patches are already included mainline and get removed from osc:
|
||||
cpupower_disable_by_latency.patch
|
||||
add_idle_manpages_in_Makefile.patch
|
||||
cpupower-always_try_to_load_msr_driver_as_root.patch
|
||||
cpupower-return_zero_on_success.patch
|
||||
cpupower-remove_mc_scheduler_bits.patch
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Wed Aug 13 13:06:27 UTC 2014 - trenn@suse.de
|
||||
|
||||
|
@ -1,7 +1,7 @@
|
||||
#
|
||||
# spec file for package cpupower
|
||||
#
|
||||
# Copyright (c) 2014 SUSE LINUX Products GmbH, Nuernberg, Germany.
|
||||
# Copyright (c) 2015 SUSE LINUX Products GmbH, Nuernberg, Germany.
|
||||
# Author: Thomas Renninger <trenn@suse.de>
|
||||
#
|
||||
# All modifications and additions to the file contributed by third parties
|
||||
@ -17,25 +17,19 @@
|
||||
#
|
||||
|
||||
|
||||
|
||||
Name: cpupower
|
||||
Url: http://www.kernel.org/pub/linux/utils/kernel/cpufreq/cpufrequtils.html
|
||||
# Use this as version when things are in mainline kernel
|
||||
%define version %(rpm -q --qf '%{VERSION}' kernel-source)
|
||||
Version: 3.13
|
||||
Version: 3.19
|
||||
Release: 0
|
||||
%define tsversion 3.17
|
||||
%define tsversion 3.19
|
||||
Summary: Tools to determine and set CPU Power related Settings
|
||||
License: GPL-2.0
|
||||
Group: System/Base
|
||||
Source: %{name}-%{version}.tar.bz2
|
||||
Source1: turbostat-%{tsversion}.tar.bz2
|
||||
Source2: cpupower_export_tarball_from_git.sh
|
||||
Patch1: cpupower_disable_by_latency.patch
|
||||
Patch2: add_idle_manpages_in_Makefile.patch
|
||||
Patch3: cpupower-always_try_to_load_msr_driver_as_root.patch
|
||||
Patch4: cpupower-return_zero_on_success.patch
|
||||
Patch5: cpupower-remove_mc_scheduler_bits.patch
|
||||
Patch20: turbostat_fix_man_perm.patch
|
||||
Patch21: make_header_file_passable_from_outside.patch
|
||||
BuildRoot: %{_tmppath}/%{name}-%{version}-build
|
||||
@ -82,11 +76,6 @@ powersave module.
|
||||
|
||||
%prep
|
||||
%setup -D -b 1
|
||||
%patch1 -p1
|
||||
%patch2 -p1
|
||||
%patch3 -p1
|
||||
%patch4 -p1
|
||||
%patch5 -p4
|
||||
cd ../turbostat-%{tsversion}
|
||||
%patch20 -p1
|
||||
%patch21 -p1
|
||||
|
@ -1,143 +0,0 @@
|
||||
cpupower: Introduce idle state disable-by-latency and enable-all
|
||||
|
||||
Signed-off-by: Thomas Renninger <trenn@suse.de>
|
||||
|
||||
diff --git a/man/cpupower-idle-set.1 b/man/cpupower-idle-set.1
|
||||
index 6b16072..1de0bd9 100644
|
||||
--- a/man/cpupower-idle-set.1
|
||||
+++ b/man/cpupower-idle-set.1
|
||||
@@ -13,11 +13,15 @@ sleep states. This can be handy for power vs performance tuning.
|
||||
.SH "OPTIONS"
|
||||
.LP
|
||||
.TP
|
||||
-\fB\-d\fR \fB\-\-disable\fR
|
||||
+\fB\-d\fR \fB\-\-disable\fR <STATE_NO>
|
||||
Disable a specific processor sleep state.
|
||||
.TP
|
||||
-\fB\-e\fR \fB\-\-enable\fR
|
||||
+\fB\-e\fR \fB\-\-enable\fR <STATE_NO>
|
||||
Enable a specific processor sleep state.
|
||||
+\fB\-D\fR \fB\-\-disable-by-latency\fR <LATENCY>
|
||||
+Disable all idle states with a equal or higher latency than <LATENCY>
|
||||
+\fB\-E\fR \fB\-\-enable-all\fR
|
||||
+Enable all idle states if not enabled already.
|
||||
|
||||
.SH "REMARKS"
|
||||
.LP
|
||||
diff --git a/utils/cpuidle-set.c b/utils/cpuidle-set.c
|
||||
index c78141c..d45d8d7 100644
|
||||
--- a/utils/cpuidle-set.c
|
||||
+++ b/utils/cpuidle-set.c
|
||||
@@ -13,8 +13,14 @@
|
||||
#include "helpers/sysfs.h"
|
||||
|
||||
static struct option info_opts[] = {
|
||||
- { .name = "disable", .has_arg = required_argument, .flag = NULL, .val = 'd'},
|
||||
- { .name = "enable", .has_arg = required_argument, .flag = NULL, .val = 'e'},
|
||||
+ { .name = "disable",
|
||||
+ .has_arg = required_argument, .flag = NULL, .val = 'd'},
|
||||
+ { .name = "enable",
|
||||
+ .has_arg = required_argument, .flag = NULL, .val = 'e'},
|
||||
+ { .name = "disable-by-latency",
|
||||
+ .has_arg = required_argument, .flag = NULL, .val = 'D'},
|
||||
+ { .name = "enable-all",
|
||||
+ .has_arg = no_argument, .flag = NULL, .val = 'E'},
|
||||
{ },
|
||||
};
|
||||
|
||||
@@ -23,11 +29,13 @@ int cmd_idle_set(int argc, char **argv)
|
||||
{
|
||||
extern char *optarg;
|
||||
extern int optind, opterr, optopt;
|
||||
- int ret = 0, cont = 1, param = 0, idlestate = 0;
|
||||
- unsigned int cpu = 0;
|
||||
+ int ret = 0, cont = 1, param = 0, disabled;
|
||||
+ unsigned long long latency = 0, state_latency;
|
||||
+ unsigned int cpu = 0, idlestate = 0, idlestates = 0;
|
||||
+ char *endptr;
|
||||
|
||||
do {
|
||||
- ret = getopt_long(argc, argv, "d:e:", info_opts, NULL);
|
||||
+ ret = getopt_long(argc, argv, "d:e:ED:", info_opts, NULL);
|
||||
if (ret == -1)
|
||||
break;
|
||||
switch (ret) {
|
||||
@@ -53,6 +61,27 @@ int cmd_idle_set(int argc, char **argv)
|
||||
param = ret;
|
||||
idlestate = atoi(optarg);
|
||||
break;
|
||||
+ case 'D':
|
||||
+ if (param) {
|
||||
+ param = -1;
|
||||
+ cont = 0;
|
||||
+ break;
|
||||
+ }
|
||||
+ param = ret;
|
||||
+ latency = strtoull(optarg, &endptr, 10);
|
||||
+ if (*endptr != '\0') {
|
||||
+ printf(_("Bad latency value: %s\n"), optarg);
|
||||
+ exit(EXIT_FAILURE);
|
||||
+ }
|
||||
+ break;
|
||||
+ case 'E':
|
||||
+ if (param) {
|
||||
+ param = -1;
|
||||
+ cont = 0;
|
||||
+ break;
|
||||
+ }
|
||||
+ param = ret;
|
||||
+ break;
|
||||
case -1:
|
||||
cont = 0;
|
||||
break;
|
||||
@@ -79,8 +108,14 @@ int cmd_idle_set(int argc, char **argv)
|
||||
if (!bitmask_isbitset(cpus_chosen, cpu))
|
||||
continue;
|
||||
|
||||
- switch (param) {
|
||||
+ if (sysfs_is_cpu_online(cpu) != 1)
|
||||
+ continue;
|
||||
+
|
||||
+ idlestates = sysfs_get_idlestate_count(cpu);
|
||||
+ if (idlestates <= 0)
|
||||
+ continue;
|
||||
|
||||
+ switch (param) {
|
||||
case 'd':
|
||||
ret = sysfs_idlestate_disable(cpu, idlestate, 1);
|
||||
if (ret == 0)
|
||||
@@ -107,6 +142,34 @@ int cmd_idle_set(int argc, char **argv)
|
||||
printf(_("Idlestate %u not enabled on CPU %u\n"),
|
||||
idlestate, cpu);
|
||||
break;
|
||||
+ case 'D':
|
||||
+ for (idlestate = 0; idlestate < idlestates; idlestate++) {
|
||||
+ disabled = sysfs_is_idlestate_disabled
|
||||
+ (cpu, idlestate);
|
||||
+ state_latency = sysfs_get_idlestate_latency
|
||||
+ (cpu, idlestate);
|
||||
+ printf("CPU: %u - idlestate %u - state_latency: %llu - latency: %llu\n",
|
||||
+ cpu, idlestate, state_latency, latency);
|
||||
+ if (disabled == 1 || latency > state_latency)
|
||||
+ continue;
|
||||
+ ret = sysfs_idlestate_disable
|
||||
+ (cpu, idlestate, 1);
|
||||
+ if (ret == 0)
|
||||
+ printf(_("Idlestate %u disabled on CPU %u\n"), idlestate, cpu);
|
||||
+ }
|
||||
+ break;
|
||||
+ case 'E':
|
||||
+ for (idlestate = 0; idlestate < idlestates; idlestate++) {
|
||||
+ disabled = sysfs_is_idlestate_disabled
|
||||
+ (cpu, idlestate);
|
||||
+ if (disabled == 1) {
|
||||
+ ret = sysfs_idlestate_disable
|
||||
+ (cpu, idlestate, 0);
|
||||
+ if (ret == 0)
|
||||
+ printf(_("Idlestate %u enabled on CPU %u\n"), idlestate, cpu);
|
||||
+ }
|
||||
+ }
|
||||
+ break;
|
||||
default:
|
||||
/* Not reachable with proper args checking */
|
||||
printf(_("Invalid or unknown argument\n"));
|
@ -1,3 +0,0 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:4f59526debcd30d97130f6b8d247908110a82bff60eb776e513ac998b70304da
|
||||
size 21640
|
3
turbostat-3.19.tar.bz2
Normal file
3
turbostat-3.19.tar.bz2
Normal file
@ -0,0 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:13609c4d8776f9c7dbea10a5cfe46471762b4631a67722d8f1aabcff8658f163
|
||||
size 17070
|
Loading…
Reference in New Issue
Block a user