Skip to content

Commit 4d98dff

Browse files
committed
fix: stabilize memory admission baseline
1 parent 38a01d5 commit 4d98dff

1 file changed

Lines changed: 9 additions & 1 deletion

File tree

‎src/build/prepare/plan.cpp‎

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -909,7 +909,15 @@ static void step13_graph_and_schedule(PrepareState& state, BuildContext& ctx) {
909909
: (decision.ninjaJobs > 0 ? decision.ninjaJobs
910910
: mcpp::platform::capacity::recommended_jobs(
911911
mcpp::platform::capacity::host_capacity()));
912-
ctx.plan.memoryBaselineBytes = mcpp::platform::capacity::host_capacity().availableBytes;
912+
// Keep the value stable across incremental invocations. The raw
913+
// available-memory reading is intentionally noisy; embedding it in
914+
// build.ninja would change the command line on every build and make
915+
// Ninja rebuild every detached module object. A GiB bucket still
916+
// gives admission control a conservative build-start baseline while
917+
// avoiding that false invalidation.
918+
constexpr unsigned long long gib = 1024ULL * 1024ULL * 1024ULL;
919+
const auto available = mcpp::platform::capacity::host_capacity().availableBytes;
920+
ctx.plan.memoryBaselineBytes = (available / gib) * gib;
913921
mcpp::log::verbose("build", std::format("schedule: {} — {}",
914922
ctx.plan.scheduleTag, decision.reason));
915923

0 commit comments

Comments
 (0)