Issue 1806. Change A, group fix/build-cpu-yields with mesh-sdk and mesh-catalog.
A unit whose declared process yields gets Slice=meshyield.slice, Nice=19 and the lowest best-effort IO level; the engine writes one /etc/systemd/system/meshyield.slice (CPUWeight=idle, IOWeight=1, CPUQuota = share × processors) beside the units it owns, rewritten when missing or different. The share is mesh-host's own config build-cpu-share (1-100, default 50, runtime: true; ADR 0554 §1). Nothing yields until change B's composer sends yields, so A is inert on the machines except a new engine build. IO controls bind only under bfq/io.cost (NVMe with scheduler none ignores them; said in the comments).
The operator's values (ADR 0554 §2): 50% on every machine; ace 75% through its node layer right after B.
Tests and vet clean. Try try-1793022907908697761 passed.
Issue 1806. Change A, group fix/build-cpu-yields with mesh-sdk and mesh-catalog.
A unit whose declared process yields gets Slice=meshyield.slice, Nice=19 and the lowest best-effort IO level; the engine writes one /etc/systemd/system/meshyield.slice (CPUWeight=idle, IOWeight=1, CPUQuota = share × processors) beside the units it owns, rewritten when missing or different. The share is mesh-host's own config `build-cpu-share` (1-100, default 50, runtime: true; ADR 0554 §1). Nothing yields until change B's composer sends `yields`, so A is inert on the machines except a new engine build. IO controls bind only under bfq/io.cost (NVMe with scheduler none ignores them; said in the comments).
The operator's values (ADR 0554 §2): 50% on every machine; ace 75% through its node layer right after B.
Tests and vet clean. Try try-1793022907908697761 passed.
Reviewed-by: review-buildcpu@shanks at a78239b2aa05524c96ea55e3921683ad6c8df524
A build seat's runtime took 1650% of shanks' 24 processors and slowed the
operator's desktop. The unit of a process declared with yields now carries
CPUWeight=idle, IOWeight=1, Nice=19, the lowest best-effort IO level, and
CPUQuota for its share of the processors this machine has.
Review round 1: one quota per unit let three build modules take three shares.
The engine now writes meshyield.slice, top-level so its idle weight binds
against the operator's session, with the node's share as its CPUQuota; each
yielding unit joins it at nice 19. Comments say the IO controls bind only under
bfq or io.cost, not under the none scheduler NVMe disks use.
The share belongs to the part that enforces it: build-cpu-share, default 50,
set per node through the node's settings layer and read by the composer for
the build seats' runtimes. Pin mesh-sdk at fix/build-cpu-yields' head.
Deliverynovox/mesh-host@a78239b2aa05 — merged since 2026-10-26T14:22:57Z
Source — source.main moved to novox/mesh-host@ff9386dccc. Whether it reached the machines is mesh-delivery-view's, derived from source.main, the wants and the haves.
2026-10-26 14:22 (new) → proposed (announced): novox/mesh-host#148's head announced
2026-10-26 14:22 proposed → ready (accepted): a verdict names this commit and the trunk's head as its trunk commit, the gate passed or warned, and the repository's own check did not fail; or the check gates no merge (check-gates-merge false)
2026-10-26 14:22 ready → merged (merged): on the trunk its modules follow: merged there
The commit's note under refs/notes/mesh-plan keeps every transition of this change up to its merge: git log --notes=mesh-plan.
<!-- mesh-delivery:view -->
**Delivery** `novox/mesh-host@a78239b2aa05` — **merged** since 2026-10-26T14:22:57Z
**Source** — source.main moved to novox/mesh-host@ff9386dcccc2. Whether it reached the machines is `mesh-delivery-view`'s, derived from `source.main`, the wants and the haves.
**Group** `fix/build-cpu-yields`: novox/mesh-catalog@2aecbe80553c, novox/mesh-host@a78239b2aa05, novox/mesh-sdk@17b7cc480d6d
**Transitions**
- 2026-10-26 14:22 (new) → proposed (announced): novox/mesh-host#148's head announced
- 2026-10-26 14:22 proposed → ready (accepted): a verdict names this commit and the trunk's head as its trunk commit, the gate passed or warned, and the repository's own check did not fail; or the check gates no merge (check-gates-merge false)
- 2026-10-26 14:22 ready → merged (merged): on the trunk its modules follow: merged there
The commit's note under `refs/notes/mesh-plan` keeps every transition of this change up to its merge: `git log --notes=mesh-plan`.
mesh-delivery: the operator's Approve of this pull request's merge into main is ended: a head it covers moved on: the heads it covers are no longer the group's heads. Nothing is merged on it. The operator is asked again once the checks pass at the new head.
mesh-delivery: the operator's Approve of this pull request's merge into main is ended: a head it covers moved on: the heads it covers are no longer the group's heads. Nothing is merged on it. The operator is asked again once the checks pass at the new head.
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Issue 1806. Change A, group fix/build-cpu-yields with mesh-sdk and mesh-catalog.
A unit whose declared process yields gets Slice=meshyield.slice, Nice=19 and the lowest best-effort IO level; the engine writes one /etc/systemd/system/meshyield.slice (CPUWeight=idle, IOWeight=1, CPUQuota = share × processors) beside the units it owns, rewritten when missing or different. The share is mesh-host's own config
build-cpu-share(1-100, default 50, runtime: true; ADR 0554 §1). Nothing yields until change B's composer sendsyields, so A is inert on the machines except a new engine build. IO controls bind only under bfq/io.cost (NVMe with scheduler none ignores them; said in the comments).The operator's values (ADR 0554 §2): 50% on every machine; ace 75% through its node layer right after B.
Tests and vet clean. Try try-1793022907908697761 passed.
Reviewed-by: review-buildcpu@shanks at
a78239b2aaDelivery
novox/mesh-host@a78239b2aa05— merged since 2026-10-26T14:22:57ZSource — source.main moved to novox/mesh-host@ff9386dccc. Whether it reached the machines is
mesh-delivery-view's, derived fromsource.main, the wants and the haves.Group
fix/build-cpu-yields: novox/mesh-catalog@2aecbe8055, novox/mesh-host@a78239b2aa, novox/mesh-sdk@17b7cc480dTransitions
The commit's note under
refs/notes/mesh-plankeeps every transition of this change up to its merge:git log --notes=mesh-plan.mesh-delivery: the operator's Approve of this pull request's merge into main is ended: a head it covers moved on: the heads it covers are no longer the group's heads. Nothing is merged on it. The operator is asked again once the checks pass at the new head.