Skip to content

Compute

Advanced compute lets plans request specific CPU behaviour and lets operators bound it with CPU pools, profiles, NUMA, hugepages and hardware pools.

Compute

Not tested on hardware

The panel-side compute inventory, allocation and reconciliation are implemented and mock-tested. The agent's enforcement of pool boundaries on a real host is not tested.

CPU pools

A ComputePool is a named, bounded set of host logical CPUs on one hypervisor.

Field Meaning
cpu_set A validated cpuset (e.g. 0-7,16-23).
mode Default mode hint (SHARED/DEDICATED_THREAD/DEDICATED_CORE).
enabled Schedulable toggle.
allow_shared / allow_dedicated_thread / allow_dedicated_core Which modes the pool serves.
overcommit_ratio Shared-mode budget multiplier.
numa_policy / smt_policy / allocation_strategy Selection defaults.
reserved_for_system Excluded from normal allocation.

cpu_set is validated: negative ids, reversed ranges, duplicates, out-of-range ids and non-numeric characters are rejected. Pools are unique per (hypervisor, name).

Capacity

  • Shared: count(cpu_set) × max(1, overcommit_ratio).
  • Exclusive: the actual free logical CPUs, tracked by allocation units.

A shared allocation can never consume a dedicated pool; a dedicated-only pool refuses shared requests with DEDICATED_CPU_NOT_AVAILABLE.

Edit/delete guard

Narrowing a pool's cpuset or deleting the pool while it has active allocations raises COMPUTE_POOL_IN_USE. The CPUs stay reserved until every allocation is released; the panel never silently remaps a guest.

Profiles, NUMA, hugepages, hardware

  • CPU profiles describe a named compute intent (mode, pinning, NUMA/SMT policy).
  • NUMA and hugepages pages show host topology and reservations.
  • Hardware lists host PCI devices and their allocation state (for passthrough foundations).

Commands

php artisan pterocloud:compute:status <hypervisor_uuid>
php artisan pterocloud:compute:cpus <hypervisor_uuid>
php artisan pterocloud:compute:audit
php artisan pterocloud:hardware:list <hypervisor_uuid>
php artisan pterocloud:hardware:inspect <device_uuid>