Skip to content

Raise Nexus' VM memory limit to 1T #8160

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 7 commits into from
May 15, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
20 changes: 10 additions & 10 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

8 changes: 4 additions & 4 deletions Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -606,10 +606,10 @@ progenitor-client = "0.10.0"
# NOTE: if you change the pinned revision of the `bhyve_api` and propolis
# dependencies, you must also update the references in package-manifest.toml to
# match the new revision.
bhyve_api = { git = "https://github.com/oxidecomputer/propolis", rev = "71dd30f454f35c1d33cd8ea0198116f680ac1689" }
propolis_api_types = { git = "https://github.com/oxidecomputer/propolis", rev = "71dd30f454f35c1d33cd8ea0198116f680ac1689" }
propolis-client = { git = "https://github.com/oxidecomputer/propolis", rev = "71dd30f454f35c1d33cd8ea0198116f680ac1689" }
propolis-mock-server = { git = "https://github.com/oxidecomputer/propolis", rev = "71dd30f454f35c1d33cd8ea0198116f680ac1689" }
bhyve_api = { git = "https://github.com/oxidecomputer/propolis", rev = "e3988414bd68ecf806078fb898120e1194451ee9" }
propolis_api_types = { git = "https://github.com/oxidecomputer/propolis", rev = "e3988414bd68ecf806078fb898120e1194451ee9" }
propolis-client = { git = "https://github.com/oxidecomputer/propolis", rev = "e3988414bd68ecf806078fb898120e1194451ee9" }
propolis-mock-server = { git = "https://github.com/oxidecomputer/propolis", rev = "e3988414bd68ecf806078fb898120e1194451ee9" }
# NOTE: see above!
proptest = "1.6.0"
qorb = "0.3.1"
Expand Down
17 changes: 16 additions & 1 deletion nexus/src/app/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -127,7 +127,22 @@ pub(crate) const MAX_EPHEMERAL_IPS_PER_INSTANCE: usize = 1;
pub const MAX_VCPU_PER_INSTANCE: u16 = 64;

pub const MIN_MEMORY_BYTES_PER_INSTANCE: u32 = 1 << 30; // 1 GiB
pub const MAX_MEMORY_BYTES_PER_INSTANCE: u64 = 256 * (1 << 30); // 256 GiB
// This is larger than total memory (let alone reservoir) on some sleds; it is
// not to guard against overallocation, but to keep instance memory sizes in
// ranges that we've tested. It is bounded only by the intersection of
// large-memory hardware configurations and tested instance sizes.
//
// Propolis has a similar limit in MAX_PHYSMEM. There, we would like to remove
// the limit entirely. Here, we may want to make the max size operator
// configurable as it may have implications on migratability for racks with
// mixed sled configurations.
//
// Before raising or removing this limit, testing has been valuable. See:
// * illumos bug #17403
// * Propolis issue #903
// There are known issues setting this above 1028 GiB. See:
// * Propolis issue #907
pub const MAX_MEMORY_BYTES_PER_INSTANCE: u64 = 1024 * (1 << 30); // 1 TiB

pub const MIN_DISK_SIZE_BYTES: u32 = 1 << 30; // 1 GiB
pub const MAX_DISK_SIZE_BYTES: u64 = 1023 * (1 << 30); // 1023 GiB
Expand Down
4 changes: 2 additions & 2 deletions package-manifest.toml
Original file line number Diff line number Diff line change
Expand Up @@ -622,10 +622,10 @@ service_name = "propolis-server"
only_for_targets.image = "standard"
source.type = "prebuilt"
source.repo = "propolis"
source.commit = "71dd30f454f35c1d33cd8ea0198116f680ac1689"
source.commit = "e3988414bd68ecf806078fb898120e1194451ee9"
# The SHA256 digest is automatically posted to:
# https://buildomat.eng.oxide.computer/public/file/oxidecomputer/propolis/image/<commit>/propolis-server.sha256.txt
source.sha256 = "e1fe40e66b92c84503613f83de2693c8446b3b05c8e5bad914299d2ab7d7fb00"
source.sha256 = "a858fe9db8db262b402a44598e991c6298f92531421029f7728b3fdd45fe621b"
output.type = "zone"

[package.mg-ddm-gz]
Expand Down
Loading