Why a pool borrowed slots

What you are seeing

On a Capacity budget under Auto, a member pool's Borrowed column is greater than zero. Float free is lower than when the budget was quiet.

That is expected. Auto lent float under the origin concurrency limit. The Lending column normally stays at zero. A nonzero value means a temporary loan is still draining.

How borrow works

Each pool keeps a reserved pin. Slots above that pin come from float (origin concurrency limit minus the sum of reserved pins).

Reserved slots stay local. Auto never lets total active across members exceed the origin concurrency limit. Shift size and cooldown limit how fast float moves (defaults: 1 slot, 3000 ms).

Common causes

Situation Likely reading
Batch job spike with float free Batch borrowed float
Sum of reserved equals the concurrency limit No float. Pools stay at their pins
Pool Max is low Climb stops at that member's Max even if float remains
Balancing temporarily paused Pools hold at their reserved pins. Borrowed drains on its own

What to check

  1. Open Capacity → {budget}. Confirm Balancing is Auto.
  2. Compare reserved pins, float free, and sum active in the header.
  3. On the member table, compare active, effective limit, borrowed, and queue.
  4. If callers are waiting below their pin, that is a bug or an RPM gate. Check the access-log Capacity and RPM detail.
  5. If a pool cannot climb, raise the origin concurrency limit or lower reserved pins to create float.

Borrowed admits count like normal admits for billing. There is no separate borrow fee.

Related