HADOOP-16656. Document FairCallQueue configs in core-default.xml. Contributed by Siyao Meng.

Signed-off-by: Wei-Chiu Chuang <weichiu@apache.org>
This commit is contained in:
Siyao Meng 2019-11-12 11:33:29 -08:00 committed by Wei-Chiu Chuang
parent 40150da1e1
commit 3ab98eefa5
2 changed files with 211 additions and 0 deletions

View File

@ -2273,6 +2273,193 @@
because the server side is stuck in TIME_WAIT state.
</description>
</property>
<!-- FairCallQueue properties -->
<!-- See FairCallQueue documentation for a table of all properties -->
<!-- [port_number] is the port used by the IPC server to be configured. -->
<!-- For example, ipc.8020.callqueue.impl will adjust the call queue -->
<!-- implementation for the IPC server running at port 8020. -->
<!-- Typically, [port_number] is configured to be the NameNode RPC port, -->
<!-- i.e. port number in dfs.namenode.rpc-address, or port number in -->
<!-- fs.defaultFS if dfs.namenode.rpc-address is not explicitly configured. -->
<property>
<name>ipc.[port_number].backoff.enable</name>
<value>false</value>
<description>Whether or not to enable client backoff when a queue is full.
</description>
</property>
<property>
<name>ipc.[port_number].callqueue.impl</name>
<value>java.util.concurrent.LinkedBlockingQueue</value>
<description>The fully qualified name of a class to use as the implementation
of a call queue. The default implementation is
java.util.concurrent.LinkedBlockingQueue (FIFO queue).
Use org.apache.hadoop.ipc.FairCallQueue for the Fair Call Queue.
</description>
</property>
<property>
<name>ipc.[port_number].scheduler.impl</name>
<value>org.apache.hadoop.ipc.DefaultRpcScheduler</value>
<description>The fully qualified name of a class to use as the
implementation of the scheduler. The default implementation is
org.apache.hadoop.ipc.DefaultRpcScheduler (no-op scheduler) when not using
FairCallQueue. If using FairCallQueue, defaults to
org.apache.hadoop.ipc.DecayRpcScheduler. Use
org.apache.hadoop.ipc.DecayRpcScheduler in conjunction with the Fair Call
Queue.
</description>
</property>
<property>
<name>ipc.[port_number].scheduler.priority.levels</name>
<value>4</value>
<description>How many priority levels to use within the scheduler and call
queue. This property applies to RpcScheduler and CallQueue.
</description>
</property>
<property>
<name>ipc.[port_number].faircallqueue.multiplexer.weights</name>
<value>8,4,2,1</value>
<description>How much weight to give to each priority queue. This should be
a comma-separated list of length equal to the number of priority levels.
Weights descend by a factor of 2 (e.g., for 4 levels: 8,4,2,1).
This property applies to WeightedRoundRobinMultiplexer.
</description>
</property>
<property>
<name>ipc.[port_number].identity-provider.impl</name>
<value>org.apache.hadoop.ipc.UserIdentityProvider</value>
<description>The identity provider mapping user requests to their identity.
This property applies to DecayRpcScheduler.
</description>
</property>
<property>
<name>ipc.[port_number].cost-provider.impl</name>
<value>org.apache.hadoop.ipc.DefaultCostProvider</value>
<description>The cost provider mapping user requests to their cost. To
enable determination of cost based on processing time, use
org.apache.hadoop.ipc.WeightedTimeCostProvider.
This property applies to DecayRpcScheduler.
</description>
</property>
<property>
<name>ipc.[port_number].decay-scheduler.period-ms</name>
<value>5000</value>
<description>How frequently the decay factor should be applied to the
operation counts of users. Higher values have less overhead, but respond
less quickly to changes in client behavior.
This property applies to DecayRpcScheduler.
</description>
</property>
<property>
<name>ipc.[port_number].decay-scheduler.decay-factor</name>
<value>0.5</value>
<description>When decaying the operation counts of users, the multiplicative
decay factor to apply. Higher values will weight older operations more
strongly, essentially giving the scheduler a longer memory, and penalizing
heavy clients for a longer period of time.
This property applies to DecayRpcScheduler.
</description>
</property>
<property>
<name>ipc.[port_number].decay-scheduler.thresholds</name>
<value>13,25,50</value>
<description>The client load threshold, as an integer percentage, for each
priority queue. Clients producing less load, as a percent of total
operations, than specified at position i will be given priority i. This
should be a comma-separated list of length equal to the number of priority
levels minus 1 (the last is implicitly 100).
Thresholds ascend by a factor of 2 (e.g., for 4 levels: 13,25,50).
This property applies to DecayRpcScheduler.
</description>
</property>
<property>
<name>ipc.[port_number].decay-scheduler.backoff.responsetime.enable</name>
<value>false</value>
<description>Whether or not to enable the backoff by response time feature.
This property applies to DecayRpcScheduler.
</description>
</property>
<property>
<name>ipc.[port_number].decay-scheduler.backoff.responsetime.thresholds</name>
<value>10s,20s,30s,40s</value>
<description>The response time thresholds, as time durations, for each
priority queue. If the average response time for a queue is above this
threshold, backoff will occur in lower priority queues. This should be a
comma-separated list of length equal to the number of priority levels.
Threshold increases by 10s per level (e.g., for 4 levels: 10s,20s,30s,40s)
This property applies to DecayRpcScheduler.
</description>
</property>
<property>
<name>ipc.[port_number].decay-scheduler.metrics.top.user.count</name>
<value>10</value>
<description>The number of top (i.e., heaviest) users to emit metric
information about. This property applies to DecayRpcScheduler.
</description>
</property>
<property>
<name>ipc.[port_number].weighted-cost.lockshared</name>
<value>10</value>
<description>The weight multiplier to apply to the time spent in the
processing phase which holds a shared (read) lock.
This property applies to WeightedTimeCostProvider.
</description>
</property>
<property>
<name>ipc.[port_number].weighted-cost.lockexclusive</name>
<value>100</value>
<description>The weight multiplier to apply to the time spent in the
processing phase which holds an exclusive (write) lock.
This property applies to WeightedTimeCostProvider.
</description>
</property>
<property>
<name>ipc.[port_number].weighted-cost.handler</name>
<value>1</value>
<description>The weight multiplier to apply to the time spent in the
HANDLER phase which do not involve holding a lock.
See org.apache.hadoop.ipc.ProcessingDetails.Timing for more details on
this phase. This property applies to WeightedTimeCostProvider.
</description>
</property>
<property>
<name>ipc.[port_number].weighted-cost.lockfree</name>
<value>1</value>
<description>The weight multiplier to apply to the time spent in the
LOCKFREE phase which do not involve holding a lock.
See org.apache.hadoop.ipc.ProcessingDetails.Timing for more details on
this phase. This property applies to WeightedTimeCostProvider.
</description>
</property>
<property>
<name>ipc.[port_number].weighted-cost.response</name>
<value>1</value>
<description>The weight multiplier to apply to the time spent in the
RESPONSE phase which do not involve holding a lock.
See org.apache.hadoop.ipc.ProcessingDetails.Timing for more details on
this phase. This property applies to WeightedTimeCostProvider.
</description>
</property>
<!-- Proxy Configuration -->
<property>

View File

@ -135,6 +135,30 @@ public class TestCommonConfigurationFields extends TestConfigurationFieldsBase {
xmlPropsToSkipCompare.add("fs.azure.saskey.usecontainersaskeyforallaccess");
xmlPropsToSkipCompare.add("fs.azure.user.agent.prefix");
// FairCallQueue configs that includes dynamic ports in its keys
xmlPropsToSkipCompare.add("ipc.[port_number].backoff.enable");
xmlPropsToSkipCompare.add("ipc.[port_number].callqueue.impl");
xmlPropsToSkipCompare.add("ipc.[port_number].scheduler.impl");
xmlPropsToSkipCompare.add("ipc.[port_number].scheduler.priority.levels");
xmlPropsToSkipCompare.add(
"ipc.[port_number].faircallqueue.multiplexer.weights");
xmlPropsToSkipCompare.add("ipc.[port_number].identity-provider.impl");
xmlPropsToSkipCompare.add("ipc.[port_number].cost-provider.impl");
xmlPropsToSkipCompare.add("ipc.[port_number].decay-scheduler.period-ms");
xmlPropsToSkipCompare.add("ipc.[port_number].decay-scheduler.decay-factor");
xmlPropsToSkipCompare.add("ipc.[port_number].decay-scheduler.thresholds");
xmlPropsToSkipCompare.add(
"ipc.[port_number].decay-scheduler.backoff.responsetime.enable");
xmlPropsToSkipCompare.add(
"ipc.[port_number].decay-scheduler.backoff.responsetime.thresholds");
xmlPropsToSkipCompare.add(
"ipc.[port_number].decay-scheduler.metrics.top.user.count");
xmlPropsToSkipCompare.add("ipc.[port_number].weighted-cost.lockshared");
xmlPropsToSkipCompare.add("ipc.[port_number].weighted-cost.lockexclusive");
xmlPropsToSkipCompare.add("ipc.[port_number].weighted-cost.handler");
xmlPropsToSkipCompare.add("ipc.[port_number].weighted-cost.lockfree");
xmlPropsToSkipCompare.add("ipc.[port_number].weighted-cost.response");
// Deprecated properties. These should eventually be removed from the
// class.
configurationPropsToSkipCompare