Skip to content

Commit b7af5f8

Browse files
authored
Raise Nexus' VM memory limit to 1T (#8160)
fixes #7918. ish. it would be nice to not have a hardcoded limit here at all. while one might think there _shouldn't_ be a real difference in behavior from here up to about 16 TiB VMs, reality confounds. oxidecomputer/propolis#907 is the next issue we'll run into for raising VM size limits further. Angela has instances up to and including 1T a try with notes on #7918. it would be nice to set this as high as 1.5T, since that fits well on a Gimlet with 2T of memory, but trying that is how we found Propolis#907.
1 parent 5c37744 commit b7af5f8

File tree

4 files changed

+32
-17
lines changed

4 files changed

+32
-17
lines changed

Cargo.lock

+10-10
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

+4-4
Original file line numberDiff line numberDiff line change
@@ -606,10 +606,10 @@ progenitor-client = "0.10.0"
606606
# NOTE: if you change the pinned revision of the `bhyve_api` and propolis
607607
# dependencies, you must also update the references in package-manifest.toml to
608608
# match the new revision.
609-
bhyve_api = { git = "https://github.com/oxidecomputer/propolis", rev = "71dd30f454f35c1d33cd8ea0198116f680ac1689" }
610-
propolis_api_types = { git = "https://github.com/oxidecomputer/propolis", rev = "71dd30f454f35c1d33cd8ea0198116f680ac1689" }
611-
propolis-client = { git = "https://github.com/oxidecomputer/propolis", rev = "71dd30f454f35c1d33cd8ea0198116f680ac1689" }
612-
propolis-mock-server = { git = "https://github.com/oxidecomputer/propolis", rev = "71dd30f454f35c1d33cd8ea0198116f680ac1689" }
609+
bhyve_api = { git = "https://github.com/oxidecomputer/propolis", rev = "e3988414bd68ecf806078fb898120e1194451ee9" }
610+
propolis_api_types = { git = "https://github.com/oxidecomputer/propolis", rev = "e3988414bd68ecf806078fb898120e1194451ee9" }
611+
propolis-client = { git = "https://github.com/oxidecomputer/propolis", rev = "e3988414bd68ecf806078fb898120e1194451ee9" }
612+
propolis-mock-server = { git = "https://github.com/oxidecomputer/propolis", rev = "e3988414bd68ecf806078fb898120e1194451ee9" }
613613
# NOTE: see above!
614614
proptest = "1.6.0"
615615
qorb = "0.3.1"

nexus/src/app/mod.rs

+16-1
Original file line numberDiff line numberDiff line change
@@ -127,7 +127,22 @@ pub(crate) const MAX_EPHEMERAL_IPS_PER_INSTANCE: usize = 1;
127127
pub const MAX_VCPU_PER_INSTANCE: u16 = 64;
128128

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

132147
pub const MIN_DISK_SIZE_BYTES: u32 = 1 << 30; // 1 GiB
133148
pub const MAX_DISK_SIZE_BYTES: u64 = 1023 * (1 << 30); // 1023 GiB

package-manifest.toml

+2-2
Original file line numberDiff line numberDiff line change
@@ -622,10 +622,10 @@ service_name = "propolis-server"
622622
only_for_targets.image = "standard"
623623
source.type = "prebuilt"
624624
source.repo = "propolis"
625-
source.commit = "71dd30f454f35c1d33cd8ea0198116f680ac1689"
625+
source.commit = "e3988414bd68ecf806078fb898120e1194451ee9"
626626
# The SHA256 digest is automatically posted to:
627627
# https://buildomat.eng.oxide.computer/public/file/oxidecomputer/propolis/image/<commit>/propolis-server.sha256.txt
628-
source.sha256 = "e1fe40e66b92c84503613f83de2693c8446b3b05c8e5bad914299d2ab7d7fb00"
628+
source.sha256 = "a858fe9db8db262b402a44598e991c6298f92531421029f7728b3fdd45fe621b"
629629
output.type = "zone"
630630

631631
[package.mg-ddm-gz]

0 commit comments

Comments
 (0)