benchmarking: large-memory glutton workloads (--mem-targetLarge mem bench - #1130
Open
Lucky Abolorunke (Oneimu) wants to merge 3 commits into
Open
benchmarking: large-memory glutton workloads (--mem-targetLarge mem bench#1130Lucky Abolorunke (Oneimu) wants to merge 3 commits into
Lucky Abolorunke (Oneimu) wants to merge 3 commits into
Conversation
Lucky Abolorunke (Oneimu)
force-pushed
the
large-mem-bench
branch
from
August 21, 2026 22:42
511ecd2 to
ea8626a
Compare
Lucky Abolorunke (Oneimu)
marked this pull request as ready for review
August 21, 2026 22:44
| // the initial full dirtying pass, so a caller that waits for readyz after | ||
| // this knows the working set is resident. | ||
| func startMemLoad(ctx context.Context, target int64, interval time.Duration, pattern string) (*memLoad, error) { | ||
| if target <= 0 { |
Collaborator
There was a problem hiding this comment.
nit: if we're doing this sort of check, we should ensure time.Duration is not negative either (ticker will panic on negative)
Collaborator
|
I like the idea of patterns of memory usage and we definitely need a memory benchmark. I wonder about using flags to configure it, which may not be super flexible. What do you think about adding the ability to invoke this behavior via HTTP/proto api? substrate/internal/proto/glutton/glutton.proto Lines 68 to 76 in ecca2ca Advantages:
Disadvantages
|
Collaborator
|
Also we would need to have something that drives suspend/resume/etc. and gathers the latency measurements |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What the PR does, in plain terms
Before this PR, our benchmark actor (
glutton) was a tiny program using only a few megabytes of memory. Every performance number on our dashboard—how long suspend takes, how long resume takes—was measured against actors that are nearly empty. Real agent workloads aren't empty; they hold hundreds of megabytes to gigabytes of memory.This PR teaches
gluttonto act like a large application:--mem-target=1Gi—and it allocates that much memory and actively keeps dirtying/rewriting it the way a busy application would.How it helps the optimization goal
Our benchmarks already break down every suspend/resume lifecycle into granular phases: pause, snapshot, compress, upload, download, and restore. With tiny actors, all of those phases finished too quickly to reveal bottlenecks or measure whether a change actually helped.
With large actors, each phase has a measurable cost, giving us three key advantages: