Skip to content

Implement UNIX-style load averages - #474

Open
tavianator wants to merge 1 commit into
mainfrom
load-ewma
Open

Implement UNIX-style load averages#474
tavianator wants to merge 1 commit into
mainfrom
load-ewma

Conversation

@tavianator

Copy link
Copy Markdown
Contributor

The existing Scheduler#load uses a 1-second time window, which is good
for fast reactivity for things like Idler, but less good if you want
it as a metric for health/autoscaling. Additionally, it performed the
1s time window normalization directly, which has the downside that how
often you called #load could change how quickly the load values would
update.

Introduce a 1-minute, 5-minute, and 15-minute time window exponentially-
weighted moving load average, similar to traditional UNIX getloadavg(3).
To avoid expensive math on every fiber switch, we update these averages
at most once a second. This same 1 second buffer is now used by #load
which becomes fully read-only.

Types of Changes

  • New feature.

Contribution

The existing `Scheduler#load` uses a 1-second time window, which is good
for fast reactivity for things like `Idler`, but less good if you want
it as a metric for health/autoscaling.  Additionally, it performed the
1s time window normalization directly, which has the downside that how
often you called `#load` could change how quickly the load values would
update.

Introduce a 1-minute, 5-minute, and 15-minute time window exponentially-
weighted moving load average, similar to traditional UNIX getloadavg(3).
To avoid expensive math on every fiber switch, we update these averages
at most once a second.  This same 1 second buffer is now used by `#load`
which becomes fully read-only.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant