doc: Add documentation for cpu_realtime, cpu_realtime_mask
This wasn't documented anywhere but the spec [1]. Fix this. We may want to provide a more in-depth overview of using RT features of OpenStack, but that's a future work item. [1] https://specs.openstack.org/openstack/nova-specs/specs/mitaka/implemented/libvirt-real-time.html Change-Id: Id30bc8447a6b482ad114ec6ebd3d5dab20ca0e3a Closes-Bug: #1715437
This commit is contained in:
@@ -474,11 +474,63 @@ NUMA topology
|
|||||||
greater than the available number of CPUs or memory respectively, an
|
greater than the available number of CPUs or memory respectively, an
|
||||||
exception is raised.
|
exception is raised.
|
||||||
|
|
||||||
|
.. _extra-specs-realtime-policy:
|
||||||
|
|
||||||
|
CPU real-time policy
|
||||||
|
For the libvirt driver, you can state that one or more of your instance
|
||||||
|
virtual CPUs (vCPUs), though not all of them, run with a real-time policy.
|
||||||
|
When used on a correctly configured host, this provides stronger guarantees
|
||||||
|
for worst case scheduler latency for vCPUs and is a requirement for certain
|
||||||
|
applications.
|
||||||
|
|
||||||
|
.. todo::
|
||||||
|
|
||||||
|
Document the required steps to configure hosts and guests. There are a lot
|
||||||
|
of things necessary, from isolating hosts and configuring the
|
||||||
|
``vcpu_pin_set`` nova configuration option on the host, to choosing a
|
||||||
|
correctly configured guest image.
|
||||||
|
|
||||||
|
.. important::
|
||||||
|
|
||||||
|
While most of your instance vCPUs can run with a real-time policy, you must
|
||||||
|
mark at least one vCPU as non-real-time, to be used for both non-real-time
|
||||||
|
guest processes and emulator overhead (housekeeping) processes.
|
||||||
|
|
||||||
|
.. important::
|
||||||
|
|
||||||
|
To use this extra spec, you must enable pinned CPUs. Refer to
|
||||||
|
:ref:`CPU policy <extra-specs-cpu-policy>` for more information.
|
||||||
|
|
||||||
|
.. code:: console
|
||||||
|
|
||||||
|
$ openstack flavor set FLAVOR-NAME \
|
||||||
|
--property hw:cpu_realtime=CPU-REALTIME-POLICY \
|
||||||
|
--property hw:cpu_realtime_mask=CPU-REALTIME-MASK
|
||||||
|
|
||||||
|
Where:
|
||||||
|
|
||||||
|
CPU-REALTIME-POLICY (enum):
|
||||||
|
One of:
|
||||||
|
|
||||||
|
- ``no``: (default) The guest vCPUs will not have a real-time policy
|
||||||
|
- ``yes``: The guest vCPUs will have a real-time policy
|
||||||
|
|
||||||
|
CPU-REALTIME-MASK (coremask):
|
||||||
|
A coremask indicating which vCPUs **will not** have a real-time policy. This
|
||||||
|
should start with a ``^``. For example, a value of ``^0-1`` indicates that
|
||||||
|
all vCPUs *except* vCPUs ``0`` and ``1`` will have a real-time policy.
|
||||||
|
|
||||||
|
.. note::
|
||||||
|
|
||||||
|
The ``hw:cpu_realtime_mask`` option is only valid if ``hw:cpu_realtime``
|
||||||
|
is set to ``yes``.
|
||||||
|
|
||||||
Emulator threads policy
|
Emulator threads policy
|
||||||
For the libvirt driver, you can assign a separate pCPU to an instance that
|
For the libvirt driver, you can assign a separate pCPU to an instance that
|
||||||
will be used for emulator threads, which are emulator processes not directly
|
will be used for emulator threads, which are emulator processes not directly
|
||||||
related to the guest OS. This pCPU will used in addition to the pCPUs used
|
related to the guest OS. This pCPU will used in addition to the pCPUs used
|
||||||
for the guest. This is generally required for use with a real-time OS.
|
for the guest. This is generally required for use with a :ref:`real-time
|
||||||
|
workload <extra-specs-realtime-policy>`.
|
||||||
|
|
||||||
.. important::
|
.. important::
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user