1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
2 From: Arjan van de Ven <arjan@linux.intel.com>
3 Date: Sat, 19 Mar 2016 21:32:19 -0400
4 Subject: [PATCH] intel_idle: tweak cpuidle cstates
6 Increase target_residency in cpuidle cstate
8 Tune intel_idle to be a bit less agressive;
9 Clear linux is cleaner in hygiene (wakupes) than the average linux,
10 so we can afford changing these in a way that increases
11 performance while keeping power efficiency
13 drivers/idle/intel_idle.c | 44 +++++++++++++++++++--------------------
14 1 file changed, 22 insertions(+), 22 deletions(-)
16 diff --git a/drivers/idle/intel_idle.c b/drivers/idle/intel_idle.c
17 index 3a1617a3e5bf..4f0ac8a9c6ab 100644
18 --- a/drivers/idle/intel_idle.c
19 +++ b/drivers/idle/intel_idle.c
20 @@ -498,7 +498,7 @@ static struct cpuidle_state hsw_cstates[] __initdata = {
22 .flags = MWAIT2flg(0x01) | CPUIDLE_FLAG_ALWAYS_ENABLE,
24 - .target_residency = 20,
25 + .target_residency = 120,
27 .enter_s2idle = intel_idle_s2idle, },
29 @@ -506,7 +506,7 @@ static struct cpuidle_state hsw_cstates[] __initdata = {
31 .flags = MWAIT2flg(0x10) | CPUIDLE_FLAG_TLB_FLUSHED,
33 - .target_residency = 100,
34 + .target_residency = 900,
36 .enter_s2idle = intel_idle_s2idle, },
38 @@ -514,7 +514,7 @@ static struct cpuidle_state hsw_cstates[] __initdata = {
40 .flags = MWAIT2flg(0x20) | CPUIDLE_FLAG_TLB_FLUSHED,
42 - .target_residency = 400,
43 + .target_residency = 1000,
45 .enter_s2idle = intel_idle_s2idle, },
47 @@ -522,7 +522,7 @@ static struct cpuidle_state hsw_cstates[] __initdata = {
49 .flags = MWAIT2flg(0x32) | CPUIDLE_FLAG_TLB_FLUSHED,
51 - .target_residency = 500,
52 + .target_residency = 1500,
54 .enter_s2idle = intel_idle_s2idle, },
56 @@ -530,7 +530,7 @@ static struct cpuidle_state hsw_cstates[] __initdata = {
58 .flags = MWAIT2flg(0x40) | CPUIDLE_FLAG_TLB_FLUSHED,
60 - .target_residency = 900,
61 + .target_residency = 2000,
63 .enter_s2idle = intel_idle_s2idle, },
65 @@ -538,7 +538,7 @@ static struct cpuidle_state hsw_cstates[] __initdata = {
67 .flags = MWAIT2flg(0x50) | CPUIDLE_FLAG_TLB_FLUSHED,
69 - .target_residency = 1800,
70 + .target_residency = 5000,
72 .enter_s2idle = intel_idle_s2idle, },
74 @@ -546,7 +546,7 @@ static struct cpuidle_state hsw_cstates[] __initdata = {
76 .flags = MWAIT2flg(0x60) | CPUIDLE_FLAG_TLB_FLUSHED,
78 - .target_residency = 7700,
79 + .target_residency = 9000,
81 .enter_s2idle = intel_idle_s2idle, },
83 @@ -566,7 +566,7 @@ static struct cpuidle_state bdw_cstates[] __initdata = {
85 .flags = MWAIT2flg(0x01) | CPUIDLE_FLAG_ALWAYS_ENABLE,
87 - .target_residency = 20,
88 + .target_residency = 120,
90 .enter_s2idle = intel_idle_s2idle, },
92 @@ -574,7 +574,7 @@ static struct cpuidle_state bdw_cstates[] __initdata = {
94 .flags = MWAIT2flg(0x10) | CPUIDLE_FLAG_TLB_FLUSHED,
96 - .target_residency = 100,
97 + .target_residency = 1000,
99 .enter_s2idle = intel_idle_s2idle, },
101 @@ -582,7 +582,7 @@ static struct cpuidle_state bdw_cstates[] __initdata = {
102 .desc = "MWAIT 0x20",
103 .flags = MWAIT2flg(0x20) | CPUIDLE_FLAG_TLB_FLUSHED,
105 - .target_residency = 400,
106 + .target_residency = 1000,
107 .enter = &intel_idle,
108 .enter_s2idle = intel_idle_s2idle, },
110 @@ -590,7 +590,7 @@ static struct cpuidle_state bdw_cstates[] __initdata = {
111 .desc = "MWAIT 0x32",
112 .flags = MWAIT2flg(0x32) | CPUIDLE_FLAG_TLB_FLUSHED,
114 - .target_residency = 500,
115 + .target_residency = 2000,
116 .enter = &intel_idle,
117 .enter_s2idle = intel_idle_s2idle, },
119 @@ -598,7 +598,7 @@ static struct cpuidle_state bdw_cstates[] __initdata = {
120 .desc = "MWAIT 0x40",
121 .flags = MWAIT2flg(0x40) | CPUIDLE_FLAG_TLB_FLUSHED,
123 - .target_residency = 900,
124 + .target_residency = 4000,
125 .enter = &intel_idle,
126 .enter_s2idle = intel_idle_s2idle, },
128 @@ -606,7 +606,7 @@ static struct cpuidle_state bdw_cstates[] __initdata = {
129 .desc = "MWAIT 0x50",
130 .flags = MWAIT2flg(0x50) | CPUIDLE_FLAG_TLB_FLUSHED,
132 - .target_residency = 1800,
133 + .target_residency = 7000,
134 .enter = &intel_idle,
135 .enter_s2idle = intel_idle_s2idle, },
137 @@ -614,7 +614,7 @@ static struct cpuidle_state bdw_cstates[] __initdata = {
138 .desc = "MWAIT 0x60",
139 .flags = MWAIT2flg(0x60) | CPUIDLE_FLAG_TLB_FLUSHED,
140 .exit_latency = 2600,
141 - .target_residency = 7700,
142 + .target_residency = 9000,
143 .enter = &intel_idle,
144 .enter_s2idle = intel_idle_s2idle, },
146 @@ -635,7 +635,7 @@ static struct cpuidle_state skl_cstates[] __initdata = {
147 .desc = "MWAIT 0x01",
148 .flags = MWAIT2flg(0x01) | CPUIDLE_FLAG_ALWAYS_ENABLE,
150 - .target_residency = 20,
151 + .target_residency = 120,
152 .enter = &intel_idle,
153 .enter_s2idle = intel_idle_s2idle, },
155 @@ -643,7 +643,7 @@ static struct cpuidle_state skl_cstates[] __initdata = {
156 .desc = "MWAIT 0x10",
157 .flags = MWAIT2flg(0x10) | CPUIDLE_FLAG_TLB_FLUSHED,
159 - .target_residency = 100,
160 + .target_residency = 1000,
161 .enter = &intel_idle,
162 .enter_s2idle = intel_idle_s2idle, },
164 @@ -651,7 +651,7 @@ static struct cpuidle_state skl_cstates[] __initdata = {
165 .desc = "MWAIT 0x20",
166 .flags = MWAIT2flg(0x20) | CPUIDLE_FLAG_TLB_FLUSHED,
168 - .target_residency = 200,
169 + .target_residency = 600,
170 .enter = &intel_idle,
171 .enter_s2idle = intel_idle_s2idle, },
173 @@ -659,7 +659,7 @@ static struct cpuidle_state skl_cstates[] __initdata = {
174 .desc = "MWAIT 0x33",
175 .flags = MWAIT2flg(0x33) | CPUIDLE_FLAG_TLB_FLUSHED,
177 - .target_residency = 800,
178 + .target_residency = 3000,
179 .enter = &intel_idle,
180 .enter_s2idle = intel_idle_s2idle, },
182 @@ -667,7 +667,7 @@ static struct cpuidle_state skl_cstates[] __initdata = {
183 .desc = "MWAIT 0x40",
184 .flags = MWAIT2flg(0x40) | CPUIDLE_FLAG_TLB_FLUSHED,
186 - .target_residency = 800,
187 + .target_residency = 3200,
188 .enter = &intel_idle,
189 .enter_s2idle = intel_idle_s2idle, },
191 @@ -675,7 +675,7 @@ static struct cpuidle_state skl_cstates[] __initdata = {
192 .desc = "MWAIT 0x50",
193 .flags = MWAIT2flg(0x50) | CPUIDLE_FLAG_TLB_FLUSHED,
195 - .target_residency = 5000,
196 + .target_residency = 9000,
197 .enter = &intel_idle,
198 .enter_s2idle = intel_idle_s2idle, },
200 @@ -683,7 +683,7 @@ static struct cpuidle_state skl_cstates[] __initdata = {
201 .desc = "MWAIT 0x60",
202 .flags = MWAIT2flg(0x60) | CPUIDLE_FLAG_TLB_FLUSHED,
204 - .target_residency = 5000,
205 + .target_residency = 9000,
206 .enter = &intel_idle,
207 .enter_s2idle = intel_idle_s2idle, },
209 @@ -704,7 +704,7 @@ static struct cpuidle_state skx_cstates[] __initdata = {
210 .desc = "MWAIT 0x01",
211 .flags = MWAIT2flg(0x01) | CPUIDLE_FLAG_ALWAYS_ENABLE,
213 - .target_residency = 20,
214 + .target_residency = 300,
215 .enter = &intel_idle,
216 .enter_s2idle = intel_idle_s2idle, },
219 https://clearlinux.org