mirror of
https://github.com/qemu/qemu.git
synced 2024-11-24 19:33:39 +08:00
iothread: document -object iothread on man page
Add -object iothread documentation to the man page, including references to the query-iothread QMP command and qom-set syntax for adjusting adaptive polling parameters at run-time. Reported-by: Zhenyu Ye <yezhenyu2@huawei.com> Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com> Message-id: 20191025122236.29815-1-stefanha@redhat.com Message-Id: <20191025122236.29815-1-stefanha@redhat.com> Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
This commit is contained in:
parent
5f2585772f
commit
86d2a49b41
@ -4926,6 +4926,44 @@ access
|
||||
CN=laptop.example.com,O=Example Home,L=London,ST=London,C=GB
|
||||
@end example
|
||||
|
||||
@item -object iothread,id=@var{id},poll-max-ns=@var{poll-max-ns},poll-grow=@var{poll-grow},poll-shrink=@var{poll-shrink}
|
||||
|
||||
Creates a dedicated event loop thread that devices can be assigned to. This is
|
||||
known as an IOThread. By default device emulation happens in vCPU threads or
|
||||
the main event loop thread. This can become a scalability bottleneck.
|
||||
IOThreads allow device emulation and I/O to run on other host CPUs.
|
||||
|
||||
The @option{id} parameter is a unique ID that will be used to reference this
|
||||
IOThread from @option{-device ...,iothread=@var{id}}. Multiple devices can be
|
||||
assigned to an IOThread. Note that not all devices support an
|
||||
@option{iothread} parameter.
|
||||
|
||||
The @code{query-iothreads} QMP command lists IOThreads and reports their thread
|
||||
IDs so that the user can configure host CPU pinning/affinity.
|
||||
|
||||
IOThreads use an adaptive polling algorithm to reduce event loop latency.
|
||||
Instead of entering a blocking system call to monitor file descriptors and then
|
||||
pay the cost of being woken up when an event occurs, the polling algorithm
|
||||
spins waiting for events for a short time. The algorithm's default parameters
|
||||
are suitable for many cases but can be adjusted based on knowledge of the
|
||||
workload and/or host device latency.
|
||||
|
||||
The @option{poll-max-ns} parameter is the maximum number of nanoseconds to busy
|
||||
wait for events. Polling can be disabled by setting this value to 0.
|
||||
|
||||
The @option{poll-grow} parameter is the multiplier used to increase the polling
|
||||
time when the algorithm detects it is missing events due to not polling long
|
||||
enough.
|
||||
|
||||
The @option{poll-shrink} parameter is the divisor used to decrease the polling
|
||||
time when the algorithm detects it is spending too long polling without
|
||||
encountering events.
|
||||
|
||||
The polling parameters can be modified at run-time using the @code{qom-set} command (where @code{iothread1} is the IOThread's @code{id}):
|
||||
|
||||
@example
|
||||
(qemu) qom-set /objects/iothread1 poll-max-ns 100000
|
||||
@end example
|
||||
|
||||
@end table
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user