aboutsummaryrefslogtreecommitdiffstats
path: root/tools
diff options
context:
space:
mode:
Diffstat (limited to 'tools')
-rw-r--r--tools/power/cpupower/man/cpupower-info.12
-rw-r--r--tools/power/cpupower/man/cpupower-set.131
-rw-r--r--tools/power/cpupower/utils/cpupower-info.c35
-rw-r--r--tools/power/cpupower/utils/cpupower-set.c43
4 files changed, 5 insertions, 106 deletions
diff --git a/tools/power/cpupower/man/cpupower-info.1 b/tools/power/cpupower/man/cpupower-info.1
index 58e21196f17f..340bcd0be7de 100644
--- a/tools/power/cpupower/man/cpupower-info.1
+++ b/tools/power/cpupower/man/cpupower-info.1
@@ -3,7 +3,7 @@
3cpupower\-info \- Shows processor power related kernel or hardware configurations 3cpupower\-info \- Shows processor power related kernel or hardware configurations
4.SH SYNOPSIS 4.SH SYNOPSIS
5.ft B 5.ft B
6.B cpupower info [ \-b ] [ \-s ] [ \-m ] 6.B cpupower info [ \-b ]
7 7
8.SH DESCRIPTION 8.SH DESCRIPTION
9\fBcpupower info \fP shows kernel configurations or processor hardware 9\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 9dbd536518ab..2bcc696f4496 100644
--- a/tools/power/cpupower/man/cpupower-set.1
+++ b/tools/power/cpupower/man/cpupower-set.1
@@ -3,7 +3,7 @@
3cpupower\-set \- Set processor power related kernel or hardware configurations 3cpupower\-set \- Set processor power related kernel or hardware configurations
4.SH SYNOPSIS 4.SH SYNOPSIS
5.ft B 5.ft B
6.B cpupower set [ \-b VAL ] [ \-s VAL ] [ \-m VAL ] 6.B cpupower set [ \-b VAL ]
7 7
8 8
9.SH DESCRIPTION 9.SH DESCRIPTION
@@ -55,35 +55,6 @@ Use \fBcpupower -c all info -b\fP to verify.
55 55
56This options needs the msr kernel driver (CONFIG_X86_MSR) loaded. 56This options needs the msr kernel driver (CONFIG_X86_MSR) loaded.
57.RE 57.RE
58.PP
59\-\-sched\-mc, \-m [ VAL ]
60.RE
61\-\-sched\-smt, \-s [ VAL ]
62.RS 4
63\-\-sched\-mc utilizes cores in one processor package/socket first before
64processes are scheduled to other processor packages/sockets.
65
66\-\-sched\-smt utilizes thread siblings of one processor core first before
67processes are scheduled to other cores.
68
69The impact on power consumption and performance (positiv or negativ) heavily
70depends on processor support for deep sleep states, frequency scaling and
71frequency boost modes and their dependencies between other thread siblings
72and processor cores.
73
74Taken over from kernel documentation:
75
76Adjust the kernel's multi-core scheduler support.
77
78Possible values are:
79.RS 2
800 - No power saving load balance (default value)
81
821 - Fill one thread/core/package first for long running threads
83
842 - Also bias task wakeups to semi-idle cpu package for power
85savings
86.RE
87 58
88.SH "SEE ALSO" 59.SH "SEE ALSO"
89cpupower-info(1), cpupower-monitor(1), powertop(1) 60cpupower-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 0ac25772bf63..136d979e9586 100644
--- a/tools/power/cpupower/utils/cpupower-info.c
+++ b/tools/power/cpupower/utils/cpupower-info.c
@@ -18,8 +18,6 @@
18 18
19static struct option set_opts[] = { 19static struct option set_opts[] = {
20 { .name = "perf-bias", .has_arg = optional_argument, .flag = NULL, .val = 'b'}, 20 { .name = "perf-bias", .has_arg = optional_argument, .flag = NULL, .val = 'b'},
21 { .name = "sched-mc", .has_arg = optional_argument, .flag = NULL, .val = 'm'},
22 { .name = "sched-smt", .has_arg = optional_argument, .flag = NULL, .val = 's'},
23 { }, 21 { },
24}; 22};
25 23
@@ -37,8 +35,6 @@ int cmd_info(int argc, char **argv)
37 35
38 union { 36 union {
39 struct { 37 struct {
40 int sched_mc:1;
41 int sched_smt:1;
42 int perf_bias:1; 38 int perf_bias:1;
43 }; 39 };
44 int params; 40 int params;
@@ -49,23 +45,13 @@ int cmd_info(int argc, char **argv)
49 textdomain(PACKAGE); 45 textdomain(PACKAGE);
50 46
51 /* parameter parsing */ 47 /* parameter parsing */
52 while ((ret = getopt_long(argc, argv, "msb", set_opts, NULL)) != -1) { 48 while ((ret = getopt_long(argc, argv, "b", set_opts, NULL)) != -1) {
53 switch (ret) { 49 switch (ret) {
54 case 'b': 50 case 'b':
55 if (params.perf_bias) 51 if (params.perf_bias)
56 print_wrong_arg_exit(); 52 print_wrong_arg_exit();
57 params.perf_bias = 1; 53 params.perf_bias = 1;
58 break; 54 break;
59 case 'm':
60 if (params.sched_mc)
61 print_wrong_arg_exit();
62 params.sched_mc = 1;
63 break;
64 case 's':
65 if (params.sched_smt)
66 print_wrong_arg_exit();
67 params.sched_smt = 1;
68 break;
69 default: 55 default:
70 print_wrong_arg_exit(); 56 print_wrong_arg_exit();
71 } 57 }
@@ -78,25 +64,6 @@ int cmd_info(int argc, char **argv)
78 if (bitmask_isallclear(cpus_chosen)) 64 if (bitmask_isallclear(cpus_chosen))
79 bitmask_setbit(cpus_chosen, 0); 65 bitmask_setbit(cpus_chosen, 0);
80 66
81 if (params.sched_mc) {
82 ret = sysfs_get_sched("mc");
83 printf(_("System's multi core scheduler setting: "));
84 if (ret < 0)
85 /* if sysfs file is missing it's: errno == ENOENT */
86 printf(_("not supported\n"));
87 else
88 printf("%d\n", ret);
89 }
90 if (params.sched_smt) {
91 ret = sysfs_get_sched("smt");
92 printf(_("System's thread sibling scheduler setting: "));
93 if (ret < 0)
94 /* if sysfs file is missing it's: errno == ENOENT */
95 printf(_("not supported\n"));
96 else
97 printf("%d\n", ret);
98 }
99
100 /* Add more per cpu options here */ 67 /* Add more per cpu options here */
101 if (!params.perf_bias) 68 if (!params.perf_bias)
102 return ret; 69 return ret;
diff --git a/tools/power/cpupower/utils/cpupower-set.c b/tools/power/cpupower/utils/cpupower-set.c
index bcf1d2f0b791..573c75f8e3f5 100644
--- a/tools/power/cpupower/utils/cpupower-set.c
+++ b/tools/power/cpupower/utils/cpupower-set.c
@@ -19,8 +19,6 @@
19 19
20static struct option set_opts[] = { 20static struct option set_opts[] = {
21 { .name = "perf-bias", .has_arg = required_argument, .flag = NULL, .val = 'b'}, 21 { .name = "perf-bias", .has_arg = required_argument, .flag = NULL, .val = 'b'},
22 { .name = "sched-mc", .has_arg = required_argument, .flag = NULL, .val = 'm'},
23 { .name = "sched-smt", .has_arg = required_argument, .flag = NULL, .val = 's'},
24 { }, 22 { },
25}; 23};
26 24
@@ -38,13 +36,11 @@ int cmd_set(int argc, char **argv)
38 36
39 union { 37 union {
40 struct { 38 struct {
41 int sched_mc:1;
42 int sched_smt:1;
43 int perf_bias:1; 39 int perf_bias:1;
44 }; 40 };
45 int params; 41 int params;
46 } params; 42 } params;
47 int sched_mc = 0, sched_smt = 0, perf_bias = 0; 43 int perf_bias = 0;
48 int ret = 0; 44 int ret = 0;
49 45
50 setlocale(LC_ALL, ""); 46 setlocale(LC_ALL, "");
@@ -52,7 +48,7 @@ int cmd_set(int argc, char **argv)
52 48
53 params.params = 0; 49 params.params = 0;
54 /* parameter parsing */ 50 /* parameter parsing */
55 while ((ret = getopt_long(argc, argv, "m:s:b:", 51 while ((ret = getopt_long(argc, argv, "b:",
56 set_opts, NULL)) != -1) { 52 set_opts, NULL)) != -1) {
57 switch (ret) { 53 switch (ret) {
58 case 'b': 54 case 'b':
@@ -66,28 +62,6 @@ int cmd_set(int argc, char **argv)
66 } 62 }
67 params.perf_bias = 1; 63 params.perf_bias = 1;
68 break; 64 break;
69 case 'm':
70 if (params.sched_mc)
71 print_wrong_arg_exit();
72 sched_mc = atoi(optarg);
73 if (sched_mc < 0 || sched_mc > 2) {
74 printf(_("--sched-mc param out "
75 "of range [0-%d]\n"), 2);
76 print_wrong_arg_exit();
77 }
78 params.sched_mc = 1;
79 break;
80 case 's':
81 if (params.sched_smt)
82 print_wrong_arg_exit();
83 sched_smt = atoi(optarg);
84 if (sched_smt < 0 || sched_smt > 2) {
85 printf(_("--sched-smt param out "
86 "of range [0-%d]\n"), 2);
87 print_wrong_arg_exit();
88 }
89 params.sched_smt = 1;
90 break;
91 default: 65 default:
92 print_wrong_arg_exit(); 66 print_wrong_arg_exit();
93 } 67 }
@@ -96,19 +70,6 @@ int cmd_set(int argc, char **argv)
96 if (!params.params) 70 if (!params.params)
97 print_wrong_arg_exit(); 71 print_wrong_arg_exit();
98 72
99 if (params.sched_mc) {
100 ret = sysfs_set_sched("mc", sched_mc);
101 if (ret)
102 fprintf(stderr, _("Error setting sched-mc %s\n"),
103 (ret == -ENODEV) ? "not supported" : "");
104 }
105 if (params.sched_smt) {
106 ret = sysfs_set_sched("smt", sched_smt);
107 if (ret)
108 fprintf(stderr, _("Error setting sched-smt %s\n"),
109 (ret == -ENODEV) ? "not supported" : "");
110 }
111
112 /* Default is: set all CPUs */ 73 /* Default is: set all CPUs */
113 if (bitmask_isallclear(cpus_chosen)) 74 if (bitmask_isallclear(cpus_chosen))
114 bitmask_setall(cpus_chosen); 75 bitmask_setall(cpus_chosen);