conc

A library that dynamically adjusts concurrency of a worker pool based on observed latency. Thereby constantly trying to achieve optimal throughput without incurring latency costs.

MIT License

Stars
10
Committers
2

conc

Status: Alpha. Please file issues for all things high and low (including of naming of types and functions).

A library that dynamically adjusts concurrency of a worker pool based on observed latency changes. Thereby constantly trying to achieve optimal throughput without incurring latency costs.

conc is a concurrency library inspired by Netflix's concurrency-limits library. Please read Performance Under Load to understand more details.

Compared to Netflix's library, which is thread pool-oriented, this library is worker pool-oriented. The benefit is that it more easily can be used both for

  • thread pool scenarios (by submitting work/functions to a shared channel); and
  • worker pool scenarios such as processing things from a worker queue.

There's a simulator that allows you to test out the library. To play around with it:

$ git clone github.com/JensRantil/conc
$ cd conc/simulator
$ go run . -help