Pacer is an open-source performance & load testing framework built strictly on first-party Microsoft packages. Define scenarios as a pipeline of steps, drive them under realistic load profiles, and get latency percentiles in console, CSV & HTML.
$ dotnet add package Pacer
A focused engine with a clean fluent API โ no plugins, no telemetry, no surprise transitive packages.
Built on Microsoft.Extensions.* and System.CommandLine. No third-party runtime dependencies โ ever.
Load, Soak, Spike, Stress and Ramp out of the box, plus custom stage composition.
Inline setup and a step pipeline per virtual user โ data flows step โ step like a real user journey.
Bounded-memory HDR-style histograms give accurate p50โp99.9, plus live dotnet-counters metrics.
Polished reports out of the box, and a pluggable IReportWriter for your own formats.
Built on TimeProvider, so the engine is fully unit-tested with a fake clock โ no flaky sleeps.
Closed-model concurrency โ you control the number of virtual users, and the profile shapes it over time.
Register a scenario, hand your args to Pacer, and run it.
return await PacerApplication.RunAsync(args, builder =>
{
builder.Services.AddPacer()
.AddScenario(Scenario.Create("checkout")
.WithSetup(async ctx => new CheckoutData("token"))
.AddStep("login", async ctx => StepResult.Ok())
.AddStep("browse", async ctx => StepResult.Ok())
.AddStep("purchase",async ctx => StepResult.Ok())
.WithLoad(LoadProfiles.Ramp(
peak: 200,
rampUp: TimeSpan.FromSeconds(30),
hold: TimeSpan.FromMinutes(1),
rampDown: TimeSpan.FromSeconds(30))));
});
// dotnet run -- run --scenario checkout
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
Scenario: checkout [group: storefront]
Profile: Ramp ยท 200 peak users ยท 2m 00s
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
step ok fail rps p95 ms p99 ms
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
login 12,418 0 207.0 13.95 14.98
browse 12,390 0 206.5 33.28 34.30
purchase 12,144 246 206.4 43.52 44.54
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
checkout 12,144 246 207.4 80.90 87.04
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ