浏览代码

powerpc/pseries/cpuidle: add polling idle for shared processor guests

For shared processor guests (e.g., KVM), add an idle polling mode rather
than immediately returning to the hypervisor when the guest CPU goes
idle.

Test setup is a 2 socket POWER9 with 4 guests running, each with vCPUs
equal to 1/2 of real of CPUs. Saturated each guest with tbench. Using
polling idle gives about 1.4x throughput.

Kernel compile speed was not changed significantly.

Signed-off-by: Nicholas Piggin <npiggin@gmail.com>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
Nicholas Piggin 8 年之前
父节点
当前提交
f2ac428e0e
共有 1 个文件被更改,包括 8 次插入2 次删除
  1. 8 2
      drivers/cpuidle/cpuidle-pseries.c

+ 8 - 2
drivers/cpuidle/cpuidle-pseries.c

@@ -174,11 +174,17 @@ static struct cpuidle_state dedicated_states[] = {
  * States for shared partition case.
  * States for shared partition case.
  */
  */
 static struct cpuidle_state shared_states[] = {
 static struct cpuidle_state shared_states[] = {
+	{ /* Snooze */
+		.name = "snooze",
+		.desc = "snooze",
+		.exit_latency = 0,
+		.target_residency = 0,
+		.enter = &snooze_loop },
 	{ /* Shared Cede */
 	{ /* Shared Cede */
 		.name = "Shared Cede",
 		.name = "Shared Cede",
 		.desc = "Shared Cede",
 		.desc = "Shared Cede",
-		.exit_latency = 0,
-		.target_residency = 0,
+		.exit_latency = 10,
+		.target_residency = 100,
 		.enter = &shared_cede_loop },
 		.enter = &shared_cede_loop },
 };
 };