final case class TimerConfig(tickDuration: Duration = TimerConfig.Default.tickDuration, ticksPerWheel: Int = TimerConfig.Default.ticksPerWheel) extends Product with Serializable
The timer used for scheduling request timeouts and speculative executions.
- tickDuration
The timer tick duration. This is how frequent the timer should wake up to check for timed-out tasks or speculative executions. Lower resolution (i.e. longer durations) will leave more CPU cycles for running I/O operations at the cost of precision of exactly when a request timeout will expire or a speculative execution will run. Higher resolution (i.e. shorter durations) will result in more precise request timeouts and speculative execution scheduling, but at the cost of CPU cycles taken from I/O operations, which could lead to lower overall I/O throughput. The default value is 100 milliseconds, which is a comfortable value for most use cases. However if you are using more agressive timeouts or speculative execution delays, then you should lower the timer tick duration as well, so that its value is always equal to or lesser than the timeout duration and/or speculative execution delay you intend to use. Note for Windows users: avoid setting this to aggressive values, that is, anything under 100 milliseconds; doing so is known to cause extreme CPU usage. Also, the tick duration must be a multiple of 10 under Windows; if that is not the case, it will be automatically rounded down to the nearest multiple of 10 (e.g. 99 milliseconds will be rounded down to 90 milliseconds).
- ticksPerWheel
Number of ticks in a Timer wheel. The underlying implementation uses Netty's HashedWheelTimer, which uses hashes to arrange the timeouts. This effectively controls the size of the timer wheel.
- Alphabetic
- By Inheritance
- TimerConfig
- Serializable
- Product
- Equals
- AnyRef
- Any
- Hide All
- Show All
- Public
- Protected
Instance Constructors
- new TimerConfig(tickDuration: Duration = TimerConfig.Default.tickDuration, ticksPerWheel: Int = TimerConfig.Default.ticksPerWheel)
- tickDuration
The timer tick duration. This is how frequent the timer should wake up to check for timed-out tasks or speculative executions. Lower resolution (i.e. longer durations) will leave more CPU cycles for running I/O operations at the cost of precision of exactly when a request timeout will expire or a speculative execution will run. Higher resolution (i.e. shorter durations) will result in more precise request timeouts and speculative execution scheduling, but at the cost of CPU cycles taken from I/O operations, which could lead to lower overall I/O throughput. The default value is 100 milliseconds, which is a comfortable value for most use cases. However if you are using more agressive timeouts or speculative execution delays, then you should lower the timer tick duration as well, so that its value is always equal to or lesser than the timeout duration and/or speculative execution delay you intend to use. Note for Windows users: avoid setting this to aggressive values, that is, anything under 100 milliseconds; doing so is known to cause extreme CPU usage. Also, the tick duration must be a multiple of 10 under Windows; if that is not the case, it will be automatically rounded down to the nearest multiple of 10 (e.g. 99 milliseconds will be rounded down to 90 milliseconds).
- ticksPerWheel
Number of ticks in a Timer wheel. The underlying implementation uses Netty's HashedWheelTimer, which uses hashes to arrange the timeouts. This effectively controls the size of the timer wheel.
Value Members
- final def !=(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
- final def ##: Int
- Definition Classes
- AnyRef → Any
- final def ==(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
- final def asInstanceOf[T0]: T0
- Definition Classes
- Any
- def clone(): AnyRef
- Attributes
- protected[lang]
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.CloneNotSupportedException]) @HotSpotIntrinsicCandidate() @native()
- final def eq(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
- final def getClass(): Class[_ <: AnyRef]
- Definition Classes
- AnyRef → Any
- Annotations
- @HotSpotIntrinsicCandidate() @native()
- final def isInstanceOf[T0]: Boolean
- Definition Classes
- Any
- final def ne(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
- final def notify(): Unit
- Definition Classes
- AnyRef
- Annotations
- @HotSpotIntrinsicCandidate() @native()
- final def notifyAll(): Unit
- Definition Classes
- AnyRef
- Annotations
- @HotSpotIntrinsicCandidate() @native()
- def productElementNames: Iterator[String]
- Definition Classes
- Product
- final def synchronized[T0](arg0: => T0): T0
- Definition Classes
- AnyRef
- val tickDuration: Duration
- val ticksPerWheel: Int
- final def wait(arg0: Long, arg1: Int): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException])
- final def wait(arg0: Long): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException]) @native()
- final def wait(): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException])