All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 0/2] x86/idle: add halt poll support
@ 2017-06-22 11:22 ` root
  0 siblings, 0 replies; 104+ messages in thread
From: root @ 2017-06-22 11:22 UTC (permalink / raw)
  To: tglx, mingo, hpa, pbonzini
  Cc: x86, corbet, tony.luck, bp, peterz, mchehab, akpm, krzk,
	jpoimboe, luto, borntraeger, thgarnie, rgerst, minipli,
	douly.fnst, nicstange, fweisbec, dvlasenk, bristot,
	yamada.masahiro, mika.westerberg, yu.c.chen, aaron.lu, rostedt,
	me, len.brown, prarit, hidehiro.kawai.ez, fengtiantian, pmladek,
	jeyu, Larry.Finger, zijun_hu, luisbg, johannes.berg,
	niklas.soderlund+renesas, zlpnobody, adobriyan, fgao, ebiederm,
	subashab, arnd, matt, mgorman, linux-kernel, linux-doc,
	linux-edac, kvm, Yang Zhang

From: Yang Zhang <yang.zhang.wz@gmail.com>

Some latency-intensive workload will see obviously performance
drop when running inside VM. The main reason is that the overhead
is amplified when running inside VM. The most cost i have seen is
inside idle path.
This patch introduces a new mechanism to poll for a while before
entering idle state. If schedule is needed during poll, then we 
don't need to goes through the heavy overhead path.

Here is the data i get when running benchmark contextswitch
(https://github.com/tsuna/contextswitch)
before patch:
2000000 process context switches in 4822613801ns (2411.3ns/ctxsw)
after patch:
2000000 process context switches in 3584098241ns (1792.0ns/ctxsw)


Yang Zhang (2):
  x86/idle: add halt poll for halt idle
  x86/idle: use dynamic halt poll

 Documentation/sysctl/kernel.txt          | 24 ++++++++++
 arch/x86/include/asm/processor.h         |  6 +++
 arch/x86/kernel/apic/apic.c              |  6 +++
 arch/x86/kernel/apic/vector.c            |  1 +
 arch/x86/kernel/cpu/mcheck/mce_amd.c     |  2 +
 arch/x86/kernel/cpu/mcheck/therm_throt.c |  2 +
 arch/x86/kernel/cpu/mcheck/threshold.c   |  2 +
 arch/x86/kernel/irq.c                    |  5 ++
 arch/x86/kernel/irq_work.c               |  2 +
 arch/x86/kernel/process.c                | 80 ++++++++++++++++++++++++++++++++
 arch/x86/kernel/smp.c                    |  6 +++
 include/linux/kernel.h                   |  5 ++
 kernel/sched/idle.c                      |  3 ++
 kernel/sysctl.c                          | 23 +++++++++
 14 files changed, 167 insertions(+)

-- 
1.8.3.1

^ permalink raw reply	[flat|nested] 104+ messages in thread

end of thread, other threads:[~2017-08-17  7:29 UTC | newest]

Thread overview: 104+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-06-22 11:22 [PATCH 0/2] x86/idle: add halt poll support root
2017-06-22 11:22 ` root
2017-06-22 11:22 ` [PATCH 1/2] x86/idle: add halt poll for halt idle root
2017-06-22 11:22   ` root
2017-06-22 11:22   ` [1/2] " Yang Zhang
2017-06-22 14:23   ` [PATCH 1/2] " Thomas Gleixner
2017-06-22 14:23     ` Thomas Gleixner
2017-06-22 14:23     ` [1/2] " Thomas Gleixner
2017-06-23  4:05     ` [PATCH 1/2] " Yang Zhang
2017-06-23  4:05       ` Yang Zhang
2017-06-23  4:05       ` [1/2] " Yang Zhang
2017-08-16  4:04   ` [PATCH 1/2] " Michael S. Tsirkin
2017-08-16  4:04     ` Michael S. Tsirkin
2017-08-16  4:04     ` [1/2] " Michael S. Tsirkin
2017-08-17  7:29     ` [PATCH 1/2] " Yang Zhang
2017-08-17  7:29       ` Yang Zhang
2017-08-17  7:29       ` [1/2] " Yang Zhang
2017-06-22 11:22 ` [PATCH 2/2] x86/idle: use dynamic halt poll root
2017-06-22 11:22   ` root
2017-06-22 11:22   ` [2/2] " Yang Zhang
2017-06-22 11:51   ` [PATCH 2/2] " Paolo Bonzini
2017-06-22 11:51     ` Paolo Bonzini
2017-06-22 11:51     ` [2/2] " Paolo Bonzini
2017-06-23  3:58     ` [PATCH 2/2] " Yang Zhang
2017-06-23  3:58       ` Yang Zhang
2017-06-23  3:58       ` [2/2] " Yang Zhang
2017-06-27 11:22       ` [PATCH 2/2] " Yang Zhang
2017-06-27 11:22         ` Yang Zhang
2017-06-27 11:22         ` [2/2] " Yang Zhang
2017-06-27 12:07         ` [PATCH 2/2] " Paolo Bonzini
2017-06-27 12:07           ` Paolo Bonzini
2017-06-27 12:07           ` [2/2] " Paolo Bonzini
2017-06-27 12:23           ` [PATCH 2/2] " Wanpeng Li
2017-06-27 12:23             ` Wanpeng Li
2017-06-27 12:23             ` [2/2] " Wanpeng Li
2017-06-27 12:28             ` [PATCH 2/2] " Paolo Bonzini
2017-06-27 12:28               ` Paolo Bonzini
2017-06-27 12:28               ` [2/2] " Paolo Bonzini
2017-06-27 13:40               ` [PATCH 2/2] " Radim Krčmář
2017-06-27 13:40                 ` Radim Krčmář
2017-06-27 13:40                 ` [2/2] " Radim Krčmář
2017-06-27 13:56                 ` [PATCH 2/2] " Paolo Bonzini
2017-06-27 13:56                   ` Paolo Bonzini
2017-06-27 13:56                   ` [2/2] " Paolo Bonzini
2017-06-27 14:22                   ` [PATCH 2/2] " Radim Krčmář
2017-06-27 14:22                     ` Radim Krčmář
2017-06-27 14:22                     ` [2/2] " Radim Krčmář
2017-06-27 14:26                     ` [PATCH 2/2] " Paolo Bonzini
2017-06-27 14:26                       ` Paolo Bonzini
2017-06-27 14:26                       ` [2/2] " Paolo Bonzini
2017-07-03  9:28                     ` [PATCH 2/2] " Yang Zhang
2017-07-03  9:28                       ` Yang Zhang
2017-07-03  9:28                       ` [2/2] " Yang Zhang
2017-07-03 10:06                       ` [PATCH 2/2] " Thomas Gleixner
2017-07-03 10:06                         ` Thomas Gleixner
2017-07-03 10:06                         ` [2/2] " Thomas Gleixner
2017-07-04  2:19                         ` [PATCH 2/2] " Yang Zhang
2017-07-04  2:19                           ` Yang Zhang
2017-07-04  2:19                           ` [2/2] " Yang Zhang
2017-07-04 14:13                       ` [PATCH 2/2] " Radim Krčmář
2017-07-04 14:13                         ` Radim Krčmář
2017-07-04 14:13                         ` [2/2] " Radim Krčmář
2017-07-04 14:50                         ` [PATCH 2/2] " Thomas Gleixner
2017-07-04 14:50                           ` Thomas Gleixner
2017-07-04 14:50                           ` [2/2] " Thomas Gleixner
2017-07-13 11:49                         ` [PATCH 2/2] " Yang Zhang
2017-07-13 11:49                           ` Yang Zhang
2017-07-13 11:49                           ` [2/2] " Yang Zhang
2017-07-14  9:37                           ` [PATCH 2/2] " Alexander Graf
2017-07-14  9:37                             ` Alexander Graf
2017-07-14  9:37                             ` [2/2] " Alexander Graf
2017-07-17  9:26                             ` [PATCH 2/2] " Yang Zhang
2017-07-17  9:26                               ` Yang Zhang
2017-07-17  9:26                               ` [2/2] " Yang Zhang
2017-07-17  9:54                               ` [PATCH 2/2] " Alexander Graf
2017-07-17  9:54                                 ` Alexander Graf
2017-07-17  9:54                                 ` [2/2] " Alexander Graf
2017-07-17 12:50                                 ` [PATCH 2/2] " Yang Zhang
2017-07-17 12:50                                   ` Yang Zhang
2017-07-17 12:50                                   ` [2/2] " Yang Zhang
2017-07-04 22:28                       ` [PATCH 2/2] " Wanpeng Li
2017-07-04 22:28                         ` Wanpeng Li
2017-07-04 22:28                         ` [2/2] " Wanpeng Li
2017-06-22 14:32   ` [PATCH 2/2] " Thomas Gleixner
2017-06-22 14:32     ` Thomas Gleixner
2017-06-22 14:32     ` [2/2] " Thomas Gleixner
2017-06-23  4:04     ` [PATCH 2/2] " Yang Zhang
2017-06-23  4:04       ` Yang Zhang
2017-06-23  4:04       ` [2/2] " Yang Zhang
2017-06-22 22:46   ` [PATCH 2/2] " kbuild test robot
2017-06-22 22:46     ` kbuild test robot
2017-06-22 22:46     ` [2/2] " kbuild test robot
2017-06-22 11:32 ` [PATCH 0/2] x86/idle: add halt poll support Yang Zhang
2017-06-22 11:32   ` Yang Zhang
2017-06-22 11:50 ` Wanpeng Li
2017-06-22 11:50   ` Wanpeng Li
2017-06-23  4:08   ` Yang Zhang
2017-06-23  4:08     ` Yang Zhang
2017-06-23  4:35     ` Wanpeng Li
2017-06-23  4:35       ` Wanpeng Li
2017-06-23  6:49       ` Yang Zhang
2017-06-23  6:49         ` Yang Zhang
2017-06-27 14:00         ` Radim Krčmář
2017-06-27 14:00           ` Radim Krčmář

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.