Merge "Config Ref: Improve Compute scheduler description"

This commit is contained in:
Jenkins 2014-09-02 09:17:24 +00:00 committed by Gerrit Code Review
commit 526c73ef5b
2 changed files with 159 additions and 64 deletions

View File

@ -163,7 +163,7 @@
>nova-scheduler</systemitem> service to enable host
aggregates filtering, as well as the other filters that
are typically
enabled:<programlisting language="ini">scheduler_default_filters=AggregateInstanceExtraSpecsFilter,AvailabilityZoneFilter,RamFilter,ComputeFilter</programlisting></para>
enabled:<programlisting language="ini">scheduler_default_filters=AggregateInstanceExtraSpecsFilter,RetryFilter,AvailabilityZoneFilter,RamFilter,ComputeFilter,ComputeCapabilitiesFilter,ImagePropertiesFilter,ServerGroupAntiAffinityFilter,ServerGroupAffinityFilter</programlisting></para>
</simplesect>
<simplesect>
<title>Example: Specify compute hosts with SSDs</title>

View File

@ -23,10 +23,10 @@
options in the <filename>/etc/nova/nova.conf</filename>
file:</para>
<programlisting language="ini">scheduler_driver=nova.scheduler.multi.MultiScheduler
scheduler_driver_task_period=60
compute_scheduler_driver=nova.scheduler.filter_scheduler.FilterScheduler
scheduler_available_filters=nova.scheduler.filters.all_filters
scheduler_default_filters=RetryFilter,AvailabilityZoneFilter,RamFilter,ComputeFilter,ComputeCapabilitiesFilter,ImagePropertiesFilter,ServerGroupAntiAffinityFilter,ServerGroupAffinityFilter</programlisting>
scheduler_driver_task_period = 60
scheduler_driver = nova.scheduler.filter_scheduler.FilterScheduler
scheduler_available_filters = nova.scheduler.filters.all_filters
scheduler_default_filters = RetryFilter, AvailabilityZoneFilter, RamFilter, ComputeFilter, ComputeCapabilitiesFilter, ImagePropertiesFilter, ServerGroupAntiAffinityFilter, ServerGroupAffinityFilter</programlisting>
<para>By default, the <parameter>scheduler_driver</parameter> is
configured as a filter scheduler, as described in the next
section. In the default configuration, this scheduler
@ -56,9 +56,20 @@ scheduler_default_filters=RetryFilter,AvailabilityZoneFilter,RamFilter,ComputeFi
<listitem>
<para>Satisfy any architecture, hypervisor type, or
virtual machine mode properties specified on the
instance's image properties.
instance's image properties
(<literal>ImagePropertiesFilter</literal>).</para>
</listitem>
<listitem>
<para>
Are on a different host than other instances of a group
(if requested)
(<literal>ServerGroupAntiAffinityFilter</literal>).</para>
</listitem>
<listitem>
<para>
Are in a set of group hosts (if requested)
(<literal>ServerGroupAffinityFilter</literal>).</para>
</listitem>
</itemizedlist>
<para>The scheduler caches its list of available hosts; use the
<option>scheduler_driver_task_period</option> option to
@ -129,26 +140,44 @@ scheduler_default_filters=RetryFilter,AvailabilityZoneFilter,RamFilter,ComputeFi
use both the built-in filters and your custom filter, your
<filename>nova.conf</filename> file would
contain:</para>
<programlisting language="ini">scheduler_available_filters=nova.scheduler.filters.all_filters
scheduler_available_filters=myfilter.MyFilter</programlisting>
<programlisting language="ini">scheduler_available_filters = nova.scheduler.filters.all_filters
scheduler_available_filters = myfilter.MyFilter</programlisting>
<para>The <literal>scheduler_default_filters</literal>
configuration option in <filename>nova.conf</filename>
defines the list of filters that are applied by the
<systemitem class="service"
>nova-scheduler</systemitem> service. The default
filters are:</para>
<programlisting language="ini">scheduler_default_filters=RetryFilter,AvailabilityZoneFilter,RamFilter,ComputeFilter,ComputeCapabilitiesFilter,ImagePropertiesFilter,ServerGroupAntiAffinityFilter,ServerGroupAffinityFilter</programlisting>
<programlisting language="ini">scheduler_default_filters = RetryFilter, AvailabilityZoneFilter, RamFilter, ComputeFilter, ComputeCapabilitiesFilter, ImagePropertiesFilter, ServerGroupAntiAffinityFilter, ServerGroupAffinityFilter</programlisting>
<para>The following sections describe the available
filters.</para>
<section xml:id="aggregatecorefilter">
<section xml:id="aggregate-corefilter">
<title>AggregateCoreFilter</title>
<para>Implements blueprint per-aggregate-resource-ratio.
AggregateCoreFilter supports per-aggregate
<literal>cpu_allocation_ratio</literal>. If the
per-aggregate value is not found, the value falls back
to the global setting.</para>
<para>
Filters host by CPU core numbers with a per-aggregate
<literal>cpu_allocation_ratio</literal> value. If the
per-aggregate value is not found, the value falls back
to the global setting. If the host is in more than one
aggregate and more than one value is found, the minimum
value will be used. For information about how to use
this filter, see <xref linkend="host-aggregates"/>. See
also <xref linkend="corefilter"/>.
</para>
</section>
<section xml:id="aggregateimagepropertiesisolationfilter">
<section xml:id="aggregate-diskfilter">
<title>AggregateDiskFilter</title>
<para>
Filters host by disk allocation with a per-aggregate
<literal>disk_allocation_ratio</literal> value. If the
per-aggregate value is not found, the value falls back to
the global setting. If the host is in more than one
aggregate and more than one value is found, the minimum
value will be used. For information about how to use this
filter, see <xref linkend="host-aggregates"/>. See also
<xref linkend="diskfilter"/>.
</para>
</section>
<section xml:id="aggregate-imagepropertiesisolationfilter">
<title>AggregateImagePropertiesIsolation</title>
<para>Matches properties defined in an image's metadata
against those of aggregates to determine host
@ -192,26 +221,38 @@ scheduler_available_filters=myfilter.MyFilter</programlisting>
filter by using the following options in the
<filename>nova.conf</filename> file:</para>
<programlisting language="ini"># Considers only keys matching the given namespace (string).
aggregate_image_properties_isolation_namespace=&lt;None>
aggregate_image_properties_isolation_namespace = &lt;None>
# Separator used between the namespace and keys (string).
aggregate_image_properties_isolation_separator=.</programlisting>
aggregate_image_properties_isolation_separator = .</programlisting>
</section>
<section xml:id="aggregateinstanceextraspecsfilter">
<section xml:id="aggregate-instanceextraspecsfilter">
<title>AggregateInstanceExtraSpecsFilter</title>
<para>Matches properties defined in extra specs for an
instance type against admin-defined properties on a
host aggregate. Works with specifications that are
scoped with
<literal>aggregate_instance_extra_specs</literal>.
For backward compatibility, also works with non-scoped
specifications; this action is highly discouraged
because it conflicts with <link
linkend="computecapabilitiesfilter">
ComputeCapabilitiesFilter</link> filter when you
enable both filters. For information about how to use
this filter, see the <link linkend="host-aggregates"
>host aggregates</link> section.</para>
instance type against admin-defined properties on a host
aggregate. Works with specifications that are scoped with
<literal>aggregate_instance_extra_specs</literal>. For
backward compatibility, also works with non-scoped
specifications; this action is highly discouraged because
it conflicts with <link
linkend="computecapabilitiesfilter">
ComputeCapabilitiesFilter</link> filter when you enable
both filters. For information about how to use this
filter, see the <link linkend="host-aggregates">host
aggregates</link> section.</para>
</section>
<section xml:id="aggregate-ioopsfilter">
<title>AggregateIoOpsFilter</title>
<para>
Filters host by disk allocation with a per-aggregate
<literal>max_io_ops_per_host</literal> value. If the
per-aggregate value is not found, the value falls back to
the global setting. If the host is in more than one
aggregate and more than one value is found, the minimum
value will be used. For information about how to use this
filter, see <xref linkend="host-aggregates"/>. See
also <xref linkend="ioopsfilter"/>.
</para>
</section>
<section xml:id="aggregate-multi-tenancy-isolation">
<title>AggregateMultiTenancyIsolation</title>
@ -225,14 +266,43 @@ aggregate_image_properties_isolation_separator=.</programlisting>
with the metadata key, the host can create instances
from all tenants.</para>
</section>
<section xml:id="aggregate-numinstances-filter">
<title>AggregateNumInstancesFilter</title>
<para>
Filters host by number of instances with a per-aggregate
<literal>max_instances_per_host</literal> value. If the
per-aggregate value is not found, the value falls back to
the global setting. If the host is in more than one
aggregate and thus more than one value is found, the
minimum value will be used. For information about how to
use this filter, see <xref
linkend="host-aggregates"/>. See also <xref
linkend="numinstancesfilter"/>.
</para>
</section>
<section xml:id="aggregate-ram-filter">
<title>AggregateRamFilter</title>
<para>Implements blueprint
<literal>per-aggregate-resource-ratio</literal>.
Supports per-aggregate
<literal>ram_allocation_ratio</literal>. If
per-aggregate value is not found, it falls back to the
default setting.</para>
<title>AggregateRamFilter</title>
<para>
Filters host by RAM allocation of instances with a per-aggregate
<literal>ram_allocation_ratio</literal> value. If the
per-aggregate value is not found, the value falls back to
the global setting. If the host is in more than one
aggregate and thus more than one value is found, the
minimum value will be used. For information about how to
use this filter, see <xref
linkend="host-aggregates"/>. See also <xref
linkend="ramfilter"/>.
</para>
</section>
<section xml:id="aggregate-typeaffinityfilter">
<title>AggregateTypeAffinityFilter</title>
<para>
Filters host by per-aggregate
<literal>instance_type</literal> value. For information
about how to use this filter, see <xref
linkend="host-aggregates"/>. See also <xref
linkend="typeaffinityfilter"/>.
</para>
</section>
<section xml:id="allhostsfilter">
<title>AllHostsFilter</title>
@ -258,7 +328,7 @@ aggregate_image_properties_isolation_separator=.</programlisting>
compatibility, also treats the extra specs key as the
key to be matched if no namespace is present; this
action is highly discouraged because it conflicts with
<link linkend="aggregateinstanceextraspecsfilter">
<link linkend="aggregate-instanceextraspecsfilter">
AggregateInstanceExtraSpecsFilter</link> filter
when you enable both filters.</para>
</section>
@ -278,15 +348,15 @@ aggregate_image_properties_isolation_separator=.</programlisting>
<para>You can configure this filter to enable a fixed
amount of vCPU overcommitment by using the
<option>cpu_allocation_ratio</option>
Configuration option in
configuration option in
<filename>nova.conf</filename>. The default setting
is:</para>
<programlisting language="ini">cpu_allocation_ratio=16.0</programlisting>
<programlisting language="ini">cpu_allocation_ratio = 16.0</programlisting>
<para>With this setting, if 8 vCPUs are on a node, the
scheduler allows instances up to 128 vCPU to be run on
that node.</para>
<para>To disallow vCPU overcommitment set:</para>
<programlisting language="ini">cpu_allocation_ratio=1.0</programlisting>
<programlisting language="ini">cpu_allocation_ratio = 1.0</programlisting>
<note>
<para>The Compute API always returns the actual
number of CPU cores available on a compute node
@ -327,10 +397,10 @@ aggregate_image_properties_isolation_separator=.</programlisting>
<para>You can configure this filter to enable a fixed
amount of disk overcommitment by using the
<literal>disk_allocation_ratio</literal>
Configuration option in
configuration option in
<filename>nova.conf</filename>. The default setting
is:</para>
<programlisting language="ini">disk_allocation_ratio=1.0</programlisting>
<programlisting language="ini">disk_allocation_ratio = 1.0</programlisting>
<para>Adjusting this value to greater than 1.0 enables
scheduling instances while over committing disk
resources on the node. This might be desirable if you
@ -432,8 +502,8 @@ aggregate_image_properties_isolation_separator=.</programlisting>
using the <literal>isolated_hosts</literal> and
<literal>isolated_images</literal> configuration
options. For example:</para>
<programlisting language="ini">isolated_hosts=server1,server2
isolated_images=342b492c-128f-4a42-8d3a-c5088cf27d13,ebd267a6-ca86-4d6c-9a0e-bd132d6b7d09</programlisting>
<programlisting language="ini">isolated_hosts = server1, server2
isolated_images = 342b492c-128f-4a42-8d3a-c5088cf27d13, ebd267a6-ca86-4d6c-9a0e-bd132d6b7d09</programlisting>
</section>
<section xml:id="ioopsfilter">
<title>IoOpsFilter</title>
@ -483,19 +553,19 @@ isolated_images=342b492c-128f-4a42-8d3a-c5088cf27d13,ebd267a6-ca86-4d6c-9a0e-bd1
</listitem>
</itemizedlist>The filter supports the following variables:<itemizedlist>
<listitem>
<para>$free_ram_mb</para>
<para><code>$free_ram_mb</code></para>
</listitem>
<listitem>
<para>$free_disk_mb</para>
<para><code>$free_disk_mb</code></para>
</listitem>
<listitem>
<para>$total_usable_ram_mb</para>
<para><code>$total_usable_ram_mb</code></para>
</listitem>
<listitem>
<para>$vcpus_total</para>
<para><code>$vcpus_total</code></para>
</listitem>
<listitem>
<para>$vcpus_used</para>
<para><code>$vcpus_used</code></para>
</listitem>
</itemizedlist>Using the <command>nova</command>
command-line tool, use the <literal>--hint</literal>
@ -506,6 +576,14 @@ isolated_images=342b492c-128f-4a42-8d3a-c5088cf27d13,ebd267a6-ca86-4d6c-9a0e-bd1
<literal>os:scheduler_hints</literal> key:</para>
<programlisting language="json"><xi:include href="../../common/samples/server-scheduler-hints2.json" parse="text"/></programlisting>
</section>
<section xml:id="metricsfilter">
<title>MetricsFilter</title>
<para>Filters hosts based on metrics
<literal>weight_setting</literal>. Only hosts with the
available metrics are passed so that the metrics weigher
will not fail due to these hosts.
</para>
</section>
<section xml:id="numinstancesfilter">
<title>NumInstancesFilter</title>
<para>
@ -535,7 +613,7 @@ isolated_images=342b492c-128f-4a42-8d3a-c5088cf27d13,ebd267a6-ca86-4d6c-9a0e-bd1
configuration option in
<filename>nova.conf</filename>. The default setting
is:</para>
<programlisting language="ini">ram_allocation_ratio=1.5</programlisting>
<programlisting language="ini">ram_allocation_ratio = 1.5</programlisting>
<para>This setting enables 1.5&nbsp;GB instances to run on
any compute node with 1&nbsp;GB of free RAM.</para>
</section>
@ -634,6 +712,23 @@ isolated_images=342b492c-128f-4a42-8d3a-c5088cf27d13,ebd267a6-ca86-4d6c-9a0e-bd1
<literal>os:scheduler_hints</literal> key:</para>
<programlisting language="json"><xi:include href="../../common/samples/server-scheduler-hints4.json" parse="text"/></programlisting>
</section>
<section xml:id="trustedfilter">
<title>TrustedFilter</title>
<para>
Filters hosts based on their trust. Only passes hosts that
meet the trust requirements specified in the instance
properties.
</para>
</section>
<section xml:id="typeaffinityfilter">
<title>TypeAffinityFilter</title>
<para>
Dynamically limits hosts to one instance type. An instance
can only be launched on a host, if no instance with
different instances types are running on it, or if the
host has no running instances at all.
</para>
</section>
</section>
<section xml:id="weights">
<title>Weights</title>
@ -759,14 +854,14 @@ isolated_images=342b492c-128f-4a42-8d3a-c5088cf27d13,ebd267a6-ca86-4d6c-9a0e-bd1
</table>
<para>For example:</para>
<programlisting language="ini">[DEFAULT]
scheduler_host_subset_size=1
scheduler_weight_classes=nova.scheduler.weights.all_weighers
ram_weight_multiplier=1.0
scheduler_host_subset_size = 1
scheduler_weight_classes = nova.scheduler.weights.all_weighers
ram_weight_multiplier = 1.0
[metrics]
weight_multiplier=1.0
weight_setting=name1=1.0, name2=-1.0
required=false
weight_of_unavailable=-10000.0</programlisting>
weight_multiplier = 1.0
weight_setting = name1=1.0, name2=-1.0
required = false
weight_of_unavailable = -10000.0</programlisting>
<table rules="all" xml:id="table_cell-weighting-options">
<caption>Cell weighting options</caption>
<col width="10%" title="Section"/>
@ -825,11 +920,11 @@ weight_of_unavailable=-10000.0</programlisting>
</table>
<para>For example:</para>
<programlisting language="ini">[cells]
scheduler_weight_classes=nova.cells.weights.all_weighers
mute_weight_multiplier=-10.0
mute_weight_value=1000.0
ram_weight_multiplier=1.0
offset_weight_multiplier=1.0</programlisting>
scheduler_weight_classes = nova.cells.weights.all_weighers
mute_weight_multiplier = -10.0
mute_weight_value = 1000.0
ram_weight_multiplier = 1.0
offset_weight_multiplier = 1.0</programlisting>
</section>
<section xml:id="chance-scheduler">
<title>Chance scheduler</title>