Message ID | 20171010071109.31207-1-npiggin@gmail.com (mailing list archive) |
---|---|
State | Not Applicable, archived |
Headers | show |
On Tue, 10 Oct 2017 17:11:09 +1000 Nicholas Piggin <npiggin@gmail.com> wrote: > 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. Actually it's even more noticeable when the host is not over subscribed by the looks. 2.5x-3x increase in throughput for just a single guest. Thanks, Nick
On Tue, 10 Oct 2017 17:11:09 +1000 Nicholas Piggin <npiggin@gmail.com> wrote: > 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> What should we do about this one? > --- > drivers/cpuidle/cpuidle-pseries.c | 10 ++++++++-- > 1 file changed, 8 insertions(+), 2 deletions(-) > > diff --git a/drivers/cpuidle/cpuidle-pseries.c b/drivers/cpuidle/cpuidle-pseries.c > index e9b3853d93ea..16be7ad30fe1 100644 > --- a/drivers/cpuidle/cpuidle-pseries.c > +++ b/drivers/cpuidle/cpuidle-pseries.c > @@ -171,11 +171,17 @@ static struct cpuidle_state dedicated_states[] = { > * States for shared partition case. > */ > static struct cpuidle_state shared_states[] = { > + { /* Snooze */ > + .name = "snooze", > + .desc = "snooze", > + .exit_latency = 0, > + .target_residency = 0, > + .enter = &snooze_loop }, > { /* Shared Cede */ > .name = "Shared Cede", > .desc = "Shared Cede", > - .exit_latency = 0, > - .target_residency = 0, > + .exit_latency = 10, > + .target_residency = 100, > .enter = &shared_cede_loop }, > }; >
On Tue, 2017-10-10 at 07:11:09 UTC, Nicholas Piggin wrote: > 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> Applied to powerpc next, thanks. https://git.kernel.org/powerpc/c/f2ac428e0edabbca41b9dfe9473a90 cheers
diff --git a/drivers/cpuidle/cpuidle-pseries.c b/drivers/cpuidle/cpuidle-pseries.c index e9b3853d93ea..16be7ad30fe1 100644 --- a/drivers/cpuidle/cpuidle-pseries.c +++ b/drivers/cpuidle/cpuidle-pseries.c @@ -171,11 +171,17 @@ static struct cpuidle_state dedicated_states[] = { * States for shared partition case. */ static struct cpuidle_state shared_states[] = { + { /* Snooze */ + .name = "snooze", + .desc = "snooze", + .exit_latency = 0, + .target_residency = 0, + .enter = &snooze_loop }, { /* Shared Cede */ .name = "Shared Cede", .desc = "Shared Cede", - .exit_latency = 0, - .target_residency = 0, + .exit_latency = 10, + .target_residency = 100, .enter = &shared_cede_loop }, };
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> --- drivers/cpuidle/cpuidle-pseries.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-)