feat(pool): no machine-wide width - 128 passes per available account
Jorijn: "there is no need to do a global cap anymore, the cap should be 128 per available account". `--concurrency` no longer defaults to 128: the limits are each OAuth account's 128 (and the local login's), every driver's counted, an API seat's own REVIEW_GATES_API_CONCURRENCY, and free memory. `--concurrency N` still caps the machine when given; a value below 1 is a usage error. The dump's args.concurrency is null then. The board's driver settings read `128 per account`, which every driver's `seats` shows as that driver's width, and the `seats` header says a width is that driver's cap. The Scheduler test runs 300 passes on two accounts: 256 at once, 128 each. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
parent
c28307601b
commit
61ee4602f4
12 changed files with 98 additions and 19 deletions
|
|
@ -294,8 +294,9 @@ inventory unit, against a frozen commit range.)";
|
|||
{"--units", true, "UNITS", "comma-separated unit ids (test only)"},
|
||||
{"--warm", false, "", "test runs only: let one pass per prompt prefix go first, as a full run does"},
|
||||
{"--concurrency", true, "CONCURRENCY",
|
||||
"lens processes in flight at once across all seats (default 128, 2026-10-15; the pool still places each one by seat headroom, launches a pass only when it fits in free "
|
||||
"memory at its environment's measured cost, and gives a pass with the browser a stack of its own)",
|
||||
"a cap on the lens processes in flight on this machine, every driver's counted (default none: each OAuth account takes at most 128 - "
|
||||
"REVIEW_GATES_OAUTH_CONCURRENCY - and an API seat REVIEW_GATES_API_CONCURRENCY; the pool still places each pass by seat headroom, launches it only when it "
|
||||
"fits in free memory at its environment's measured cost, and gives a pass with the browser a stack of its own)",
|
||||
Kind::Int},
|
||||
{"--effort", true, "EFFORT", effort},
|
||||
{"--reads", true, "READS", reads, Kind::Int},
|
||||
|
|
@ -355,7 +356,10 @@ inventory unit, against a frozen commit range.)";
|
|||
if (namesNothing(a.only)) return UsageError(UsageLine(Prog, specs), Prog, std::format("argument --only: names no lens file ({})", Dyn::Repr(*a.only)));
|
||||
if (namesNothing(parsed.Value("units"))) return UsageError(UsageLine(Prog, specs), Prog, std::format("argument --units: names no unit id ({})", Dyn::Repr(*parsed.Value("units"))));
|
||||
a.warm = parsed.Flag("warm");
|
||||
if (const std::optional<std::string> n = parsed.Value("concurrency")) a.concurrency = *Dyn::ParseInt(*n);
|
||||
if (const std::optional<std::string> n = parsed.Value("concurrency")) {
|
||||
a.concurrency = *Dyn::ParseInt(*n);
|
||||
if (*a.concurrency < 1) return UsageError(UsageLine(Prog, specs), Prog, "argument --concurrency: a number from 1 up (leave it out for no cap)");
|
||||
}
|
||||
a.effort = parsed.Value("effort").value_or("");
|
||||
if (a.effort.empty()) a.effort = std::string(Plan::DefaultEffort());
|
||||
a.noReuse = parsed.Flag("no-reuse");
|
||||
|
|
|
|||
Loading…
Reference in a new issue