oxidecomputer / oxidecomputer/omicron

Nexus should intentionally allocate vCPUs->hardware CPUs

Open
#9,618 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

virtualization
Dominant language
Rust
Stars
572
Forks
97
Avg merge
2d 12h
Merged PRs (30d)
96

Description

placeholder, CPU binding probably deserves an RFD. not binding CPUs makes for pretty unfortunate runtime characteristics for VMs that are heavy on VM exits: https://github.com/oxidecomputer/propolis/issues/984 . https://github.com/oxidecomputer/propolis/pull/991 handles this as well as Propolis can autonomously do, but leaves smaller VMs out of the picture

in particular we should be aware that just handing out CPUs from Nexus might want to consider which host CPUs have interrupts for which devices and where those interrupts are processed. then VMs can become very affected by noisy neighbor problems. as an extreme example, today, if you do I/O to a specific U.2, the OS handles those I/O completion interrupts on a specific set of processors (say, 8-15). the guest might be pinned to CPUs 32-40. some other guest might catch the debris if it were pinned to CPUs 8-15.

might not want to pin <4 core VMs, consequences of network traffic might be different, etc. this is all stuff I'd get to in an RFD.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Read the placeholder proposal together with Propolis issue #984 and pull request #991. An RFD should define how Nexus allocates vCPUs to hardware CPUs, including interrupt placement, noisy-neighbor effects, VM size thresholds, and network-traffic consequences; done means the policy and implementation scope are agreed.

Written by the indexing model from the issue text.

Assessment

Tech stack
rust
Domain
infrastructure, operating-systems
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
20/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.