TimerConfig

final case class TimerConfig(tickDuration: Duration, ticksPerWheel: Int)

The timer used for scheduling request timeouts and speculative executions.

Value parameters:
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.

Companion:
object
trait Serializable
trait Product
trait Equals
class Object
trait Matchable
class Any

Value members

Inherited methods

def productElementNames: Iterator[String]
Inherited from:
Product
def productIterator: Iterator[Any]
Inherited from:
Product