Commit 2756df60 authored by Mauro Carvalho Chehab's avatar Mauro Carvalho Chehab Committed by Paolo Bonzini

docs: virt: convert halt-polling.txt to ReST format

- Fix document title to match ReST format
- Convert the table to be properly recognized
- Some indentation fixes to match ReST syntax.
Signed-off-by: default avatarMauro Carvalho Chehab <mchehab+huawei@kernel.org>
Reviewed-by: default avatarCornelia Huck <cohuck@redhat.com>
Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
parent c09708cc
.. SPDX-License-Identifier: GPL-2.0
===========================
The KVM halt polling system The KVM halt polling system
=========================== ===========================
...@@ -68,7 +71,8 @@ steady state polling interval but will only really do a good job for wakeups ...@@ -68,7 +71,8 @@ steady state polling interval but will only really do a good job for wakeups
which come at an approximately constant rate, otherwise there will be constant which come at an approximately constant rate, otherwise there will be constant
adjustment of the polling interval. adjustment of the polling interval.
[0] total block time: the time between when the halt polling function is [0] total block time:
the time between when the halt polling function is
invoked and a wakeup source received (irrespective of invoked and a wakeup source received (irrespective of
whether the scheduler is invoked within that function). whether the scheduler is invoked within that function).
...@@ -81,31 +85,32 @@ shrunk. These variables are defined in include/linux/kvm_host.h and as module ...@@ -81,31 +85,32 @@ shrunk. These variables are defined in include/linux/kvm_host.h and as module
parameters in virt/kvm/kvm_main.c, or arch/powerpc/kvm/book3s_hv.c in the parameters in virt/kvm/kvm_main.c, or arch/powerpc/kvm/book3s_hv.c in the
powerpc kvm-hv case. powerpc kvm-hv case.
Module Parameter | Description | Default Value +-----------------------+---------------------------+-------------------------+
-------------------------------------------------------------------------------- |Module Parameter | Description | Default Value |
halt_poll_ns | The global max polling | KVM_HALT_POLL_NS_DEFAULT +-----------------------+---------------------------+-------------------------+
| interval which defines | |halt_poll_ns | The global max polling | KVM_HALT_POLL_NS_DEFAULT|
| the ceiling value of the | | | interval which defines | |
| polling interval for | (per arch value) | | the ceiling value of the | |
| each vcpu. | | | polling interval for | (per arch value) |
-------------------------------------------------------------------------------- | | each vcpu. | |
halt_poll_ns_grow | The value by which the | 2 +-----------------------+---------------------------+-------------------------+
| halt polling interval is | |halt_poll_ns_grow | The value by which the | 2 |
| multiplied in the | | | halt polling interval is | |
| grow_halt_poll_ns() | | | multiplied in the | |
| function. | | | grow_halt_poll_ns() | |
-------------------------------------------------------------------------------- | | function. | |
halt_poll_ns_grow_start | The initial value to grow | 10000 +-----------------------+---------------------------+-------------------------+
| to from zero in the | |halt_poll_ns_grow_start| The initial value to grow | 10000 |
| grow_halt_poll_ns() | | | to from zero in the | |
| function. | | | grow_halt_poll_ns() | |
-------------------------------------------------------------------------------- | | function. | |
halt_poll_ns_shrink | The value by which the | 0 +-----------------------+---------------------------+-------------------------+
| halt polling interval is | |halt_poll_ns_shrink | The value by which the | 0 |
| divided in the | | | halt polling interval is | |
| shrink_halt_poll_ns() | | | divided in the | |
| function. | | | shrink_halt_poll_ns() | |
-------------------------------------------------------------------------------- | | function. | |
+-----------------------+---------------------------+-------------------------+
These module parameters can be set from the debugfs files in: These module parameters can be set from the debugfs files in:
...@@ -117,20 +122,19 @@ Note: that these module parameters are system wide values and are not able to ...@@ -117,20 +122,19 @@ Note: that these module parameters are system wide values and are not able to
Further Notes Further Notes
============= =============
- Care should be taken when setting the halt_poll_ns module parameter as a - Care should be taken when setting the halt_poll_ns module parameter as a large value
large value has the potential to drive the cpu usage to 100% on a machine which has the potential to drive the cpu usage to 100% on a machine which would be almost
would be almost entirely idle otherwise. This is because even if a guest has entirely idle otherwise. This is because even if a guest has wakeups during which very
wakeups during which very little work is done and which are quite far apart, if little work is done and which are quite far apart, if the period is shorter than the
the period is shorter than the global max polling interval (halt_poll_ns) then global max polling interval (halt_poll_ns) then the host will always poll for the
the host will always poll for the entire block time and thus cpu utilisation entire block time and thus cpu utilisation will go to 100%.
will go to 100%.
- Halt polling essentially presents a trade off between power usage and latency and
- Halt polling essentially presents a trade off between power usage and latency the module parameters should be used to tune the affinity for this. Idle cpu time is
and the module parameters should be used to tune the affinity for this. Idle essentially converted to host kernel time with the aim of decreasing latency when
cpu time is essentially converted to host kernel time with the aim of decreasing entering the guest.
latency when entering the guest.
- Halt polling will only be conducted by the host when no other tasks are runnable on
- Halt polling will only be conducted by the host when no other tasks are that cpu, otherwise the polling will cease immediately and schedule will be invoked to
runnable on that cpu, otherwise the polling will cease immediately and allow that other task to run. Thus this doesn't allow a guest to denial of service the
schedule will be invoked to allow that other task to run. Thus this doesn't cpu.
allow a guest to denial of service the cpu.
...@@ -9,6 +9,7 @@ KVM ...@@ -9,6 +9,7 @@ KVM
amd-memory-encryption amd-memory-encryption
cpuid cpuid
halt-polling
vcpu-requests vcpu-requests
arm/index arm/index
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment