Reduce host capacity headroom and remove learned usage padding
This commit is contained in:
@@ -6,7 +6,8 @@ import { capacityCalibration } from './calibration.js';
|
||||
|
||||
// Storage and OS headroom are separate from learned instance CPU/memory usage.
|
||||
const INSTANCE_STORAGE_BYTES = 1024 ** 3;
|
||||
const MEMORY_HEADROOM = 512 * 1024 ** 2;
|
||||
const MEMORY_HEADROOM = 500_000_000;
|
||||
const CPU_USABLE_FRACTION = 0.95;
|
||||
export class CapacityError extends Error {}
|
||||
export interface PlacementOptions {
|
||||
hostId?: string; libraryId: string; image: string; bindAddress?: string;
|
||||
@@ -83,7 +84,7 @@ function projectedLoad(host: Host, options: PlacementOptions): number {
|
||||
const memory = Math.max(usedMemory + extraMemory, reservedMemory);
|
||||
const usableMemory = memoryTotal - MEMORY_HEADROOM;
|
||||
const gib = (bytes: number) => `${(bytes / 1024 ** 3).toFixed(2)} GiB`;
|
||||
if (cores > cpuCount * 0.9) throw new Error(`Insufficient CPU capacity: ${cores.toFixed(2)} cores projected, ${(cpuCount * 0.9).toFixed(2)} usable; ${reservations} reservations including this launch.`);
|
||||
if (cores > cpuCount * CPU_USABLE_FRACTION) throw new Error(`Insufficient CPU capacity: ${cores.toFixed(2)} cores projected, ${(cpuCount * CPU_USABLE_FRACTION).toFixed(2)} usable; ${reservations} reservations including this launch.`);
|
||||
if (memory > usableMemory) throw new Error(`Insufficient memory capacity: ${gib(memory)} projected, ${gib(usableMemory)} usable after host headroom. `
|
||||
+ `${gib(usedMemory)} currently used + ${gib(extraMemory)} additional reservations; ${reservations} reservations including this launch (${gib(startup.memoryBytes)} startup allowance).`);
|
||||
// Recovered resources must not remain unavailable until the historical
|
||||
|
||||
Reference in New Issue
Block a user