gubernator-io / gubernator

High Performance Rate Limiting MicroService and Library - Developed at Mailgun
Apache License 2.0
71 stars 6 forks source link

Benchmarking Cache and WorkerPool implementations #7

Closed thrawn01 closed 1 month ago

thrawn01 commented 3 months ago

Purpose

Trying to diagnose some performance issues we notice in production during high request volume. The theory is that we are running into mutex contention. As a result we wrote WorkerPool to partition the internal cache to reduce contention. However, we never benchmarked contention. This PR is intended to add benchmarking and compare different implementations of WorkerPool.

Implementation

I created a golang application to graph the results of the benchmark. https://github.com/gubernator-io/gubernator-graphs

See benchmark_plot.html in the graphs repo for the latest results.

Status

I think I need to run these benchmarks on a machine with more than 10 Cores (My Laptop). I'll work on doing that this ~weekend or next week~ sometime in the future.

thrawn01 commented 2 months ago

Benchmark running on a 32 core machine. Otter Performance Benchmark on 32 core machine

thrawn01 commented 1 month ago

The result of this work has been rolled into #15