Class WriteLoadConstraintSettings

java.lang.Object
org.elasticsearch.cluster.routing.allocation.WriteLoadConstraintSettings

public class WriteLoadConstraintSettings extends Object
Settings definitions for the write load allocation decider and associated infrastructure
  • Field Details

    • WRITE_LOAD_DECIDER_ENABLED_SETTING

      public static final Setting<WriteLoadConstraintSettings.WriteLoadDeciderStatus> WRITE_LOAD_DECIDER_ENABLED_SETTING
    • WRITE_LOAD_DECIDER_SHARD_WRITE_LOAD_TYPE_SETTING

      public static final Setting<WriteLoadConstraintSettings.WriteLoadDeciderShardWriteLoadType> WRITE_LOAD_DECIDER_SHARD_WRITE_LOAD_TYPE_SETTING
    • WRITE_LOAD_DECIDER_ALLOCATION_UTILIZATION_THRESHOLD_SETTING

      public static final Setting<RatioValue> WRITE_LOAD_DECIDER_ALLOCATION_UTILIZATION_THRESHOLD_SETTING
      The threshold over which we consider write thread pool utilization hot-spotting in a balancing movement, when a node is being considered as a destination for a shard
    • WRITE_LOAD_DECIDER_QUEUE_LATENCY_THRESHOLD_SETTING

      public static final Setting<TimeValue> WRITE_LOAD_DECIDER_QUEUE_LATENCY_THRESHOLD_SETTING
      When the decider is WriteLoadConstraintSettings.WriteLoadDeciderStatus.ENABLED, the write-load monitor will call RerouteService.reroute(String, Priority, ActionListener) when we see tasks being delayed by this amount of time and the utilization is above a certain threshold (but no more often than WRITE_LOAD_DECIDER_REROUTE_INTERVAL_SETTING)
    • WRITE_LOAD_DECIDER_HOTSPOT_UTILIZATION_THRESHOLD_SETTING

      public static final Setting<RatioValue> WRITE_LOAD_DECIDER_HOTSPOT_UTILIZATION_THRESHOLD_SETTING
      The threshold over which we consider write thread pool utilization hotspotting in a canRemain check, when a shard is being considered for moving off of a node
    • WRITE_LOAD_DECIDER_HOTSPOT_MAX_SHARD_WRITE_LOAD_PROPORTION_THRESHOLD_SETTING

      public static final Setting<RatioValue> WRITE_LOAD_DECIDER_HOTSPOT_MAX_SHARD_WRITE_LOAD_PROPORTION_THRESHOLD_SETTING
      The threshold over which we consider a single shard as carrying enough of the load, such that trying to correct a hotspot by relocating shards is not taken: the hot-spot is created by a single shard. This is phrased as a ratio. The production values should always be in (0.50, 1.0]. 0.0 turns this off
    • WRITE_LOAD_DECIDER_REROUTE_INTERVAL_SETTING

      public static final Setting<TimeValue> WRITE_LOAD_DECIDER_REROUTE_INTERVAL_SETTING
      The minimum amount of time between successive calls to reroute to address write load hot-spots
    • WRITE_LOAD_DECIDER_MINIMUM_LOGGING_INTERVAL

      public static final Setting<TimeValue> WRITE_LOAD_DECIDER_MINIMUM_LOGGING_INTERVAL
      The minimum amount of time between logging messages about write load decider interventions
  • Constructor Details

    • WriteLoadConstraintSettings

      public WriteLoadConstraintSettings(ClusterSettings clusterSettings)
  • Method Details

    • getWriteLoadConstraintEnabled

      public WriteLoadConstraintSettings.WriteLoadDeciderStatus getWriteLoadConstraintEnabled()
    • getMinimumRerouteInterval

      public TimeValue getMinimumRerouteInterval()
    • getQueueLatencyThreshold

      public TimeValue getQueueLatencyThreshold()
      Returns:
      The queue latency threshold as a time duration for use in checking whether a node is hotspotting and a shard should be moved off of it
    • getHotspotUtilizationThreshold

      public double getHotspotUtilizationThreshold()
      Returns:
      The utilization threshold as a ratio - i.e. in [0, 1], for use in checking whether a node is hotspotting and a shard should be moved off of it
    • getHotspotUtilizationThresholdString

      public String getHotspotUtilizationThresholdString()
    • getHotspotMaxShardWriteLoadProportionThreshold

      public double getHotspotMaxShardWriteLoadProportionThreshold()
      Returns:
      The utilization threshold for a single shard as a proportion in [0, 1] for use in checking whether a hotspot is too focused on a single shard for correction with shard movement
    • getAllocationUtilizationThreshold

      public double getAllocationUtilizationThreshold()
      Returns:
      The utilization threshold as a ratio - i.e. in [0, 1], for use in checking whether a node can accept a shard in a canAllocation call during allocation balancing