Hi Ingo,

On 11/13/17 11:08 PM, Ingo Molnar wrote:


* Quan Xu <[email protected]><mailto:[email protected]> wrote:



From: Quan Xu <[email protected]><mailto:[email protected]>

To reduce the cost of poll, we introduce three sysctl to control the
poll time when running as a virtual machine with paravirt.

Signed-off-by: Yang Zhang 
<[email protected]><mailto:[email protected]>
Signed-off-by: Quan Xu <[email protected]><mailto:[email protected]>
---
 Documentation/sysctl/kernel.txt |   35 +++++++++++++++++++++++++++++++++++
 arch/x86/kernel/paravirt.c      |    4 ++++
 include/linux/kernel.h          |    6 ++++++
 kernel/sysctl.c                 |   34 ++++++++++++++++++++++++++++++++++
 4 files changed, 79 insertions(+), 0 deletions(-)

diff --git a/Documentation/sysctl/kernel.txt b/Documentation/sysctl/kernel.txt
index 694968c..30c25fb 100644
--- a/Documentation/sysctl/kernel.txt
+++ b/Documentation/sysctl/kernel.txt
@@ -714,6 +714,41 @@ kernel tries to allocate a number starting from this one.

 ==============================================================

+paravirt_poll_grow: (X86 only)
+
+Multiplied value to increase the poll time. This is expected to take
+effect only when running as a virtual machine with CONFIG_PARAVIRT
+enabled. This can't bring any benifit on bare mental even with
+CONFIG_PARAVIRT enabled.
+
+By default this value is 2. Possible values to set are in range {2..16}.
+
+==============================================================
+
+paravirt_poll_shrink: (X86 only)
+
+Divided value to reduce the poll time. This is expected to take effect
+only when running as a virtual machine with CONFIG_PARAVIRT enabled.
+This can't bring any benifit on bare mental even with CONFIG_PARAVIRT
+enabled.
+
+By default this value is 2. Possible values to set are in range {2..16}.
+
+==============================================================
+
+paravirt_poll_threshold_ns: (X86 only)
+
+Controls the maximum poll time before entering real idle path. This is
+expected to take effect only when running as a virtual machine with
+CONFIG_PARAVIRT enabled. This can't bring any benifit on bare mental
+even with CONFIG_PARAVIRT enabled.
+
+By default, this value is 0 means not to poll. Possible values to set
+are in range {0..500000}. Change the value to non-zero if running
+latency-bound workloads in a virtual machine.



I absolutely hate it how this hybrid idle loop polling mechanism is not
self-tuning!

Please make it all work fine by default, and automatically so, instead of adding
three random parameters...

And if it cannot be done automatically then we should rather not do it at all.


One of the main benefit of this patchset is the customers who use the VM can 
tune the mechanism by themself. I remember Andi also has the concern about two 
much random parameters. In addition, there is a "Adaptive halt-polling" which 
are merged to upstream more than two years ago in kvm which is self-tuning, 
https://lkml.org/lkml/2015/9/3/615

Regards,
Wanpeng Li
_______________________________________________
Virtualization mailing list
[email protected]
https://lists.linuxfoundation.org/mailman/listinfo/virtualization

Reply via email to