Skip to content
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

Utilize memory hotplug to add VM memory by qmemman #7956

Closed
marmarek opened this issue Dec 26, 2022 · 2 comments
Closed

Utilize memory hotplug to add VM memory by qmemman #7956

marmarek opened this issue Dec 26, 2022 · 2 comments
Labels
C: core C: kernel P: default Priority: default. Default priority for new issues, to be replaced given sufficient information. r4.2-host-stable release notes This issue should be mentioned in the release notes. T: enhancement Type: enhancement. A new feature that does not yet exist or improvement of existing functionality.
Milestone

Comments

@marmarek
Copy link
Member

(...)

Which brings an idea that perhaps we should change how we start VMs:

  • alternative to consider: start with maxmem==memory (400M) and use memory hotplug when more memory is needed

This would require changes to libvirt config (easy) and qmemman (possibly less easy). The current approach is used because memory hotplug used to be unstable, but I think that isn't the case anymore for a long time already.

Originally posted by @marmarek in #7023 (comment)

marmarek added a commit to marmarek/qubes-linux-kernel that referenced this issue Dec 26, 2022
qmemman will rely on it soon (if available).

QubesOS/qubes-issues#7956
@marmarek marmarek added T: enhancement Type: enhancement. A new feature that does not yet exist or improvement of existing functionality. P: default Priority: default. Default priority for new issues, to be replaced given sufficient information. labels Dec 26, 2022
@marmarek marmarek added this to the Release 4.2 milestone Dec 26, 2022
@marmarek marmarek added the release notes This issue should be mentioned in the release notes. label Dec 26, 2022
marmarek added a commit to marmarek/qubes-core-admin-client that referenced this issue Dec 26, 2022
marmarek added a commit to marmarek/qubes-core-admin that referenced this issue Dec 26, 2022
If VM supports memory hotplug, start it with maxmem=memory and then use
memory hotplug to (potentially) increase its memory. Qmemman almost had
all the needed parts - especially mem_set function already adjusts
maxmem too. The missing part was letting it know actual maxmem - do that
via xenstore (as qmemman uses xenstore heavily already).

The use of memory hotplug can be enabled (or disabled) explicitly via
'memory-hotplug' feature, or detected based on
'memory-hotplug-supported' file in dom0-provided kernel dir, or
'supported-feature.memory-hotplug' for VM-provided kernel.

Fixes QubesOS/qubes-issues#7956
marmarek added a commit to marmarek/qubes-core-admin that referenced this issue Dec 27, 2022
If VM supports memory hotplug, start it with maxmem=memory and then use
memory hotplug to (potentially) increase its memory. Qmemman almost had
all the needed parts - especially mem_set function already adjusts
maxmem too. The missing part was letting it know actual maxmem - do that
via xenstore (as qmemman uses xenstore heavily already).

The use of memory hotplug can be enabled (or disabled) explicitly via
'memory-hotplug' feature, or detected based on
'memory-hotplug-supported' file in dom0-provided kernel dir, or
'supported-feature.memory-hotplug' for VM-provided kernel.

Fixes QubesOS/qubes-issues#7956
marmarek added a commit to marmarek/qubes-core-admin that referenced this issue Dec 27, 2022
If VM supports memory hotplug, start it with maxmem=memory and then use
memory hotplug to (potentially) increase its memory. Qmemman almost had
all the needed parts - especially mem_set function already adjusts
maxmem too. The missing part was letting it know actual maxmem - do that
via xenstore (as qmemman uses xenstore heavily already).

The use of memory hotplug can be enabled (or disabled) explicitly via
'memory-hotplug' feature, or detected based on
'memory-hotplug-supported' file in dom0-provided kernel dir, or
'supported-feature.memory-hotplug' for VM-provided kernel.

Fixes QubesOS/qubes-issues#7956
marmarek added a commit to marmarek/qubes-core-admin that referenced this issue Dec 27, 2022
If VM supports memory hotplug, start it with maxmem=memory and then use
memory hotplug to (potentially) increase its memory. Qmemman almost had
all the needed parts - especially mem_set function already adjusts
maxmem too. The missing part was letting it know actual maxmem - do that
via xenstore (as qmemman uses xenstore heavily already).

The use of memory hotplug can be enabled (or disabled) explicitly via
'memory-hotplug' feature, or detected based on
'memory-hotplug-supported' file in dom0-provided kernel dir, or
'supported-feature.memory-hotplug' for VM-provided kernel.

Fixes QubesOS/qubes-issues#7956
marmarek added a commit to QubesOS/qubes-linux-kernel that referenced this issue Dec 27, 2022
qmemman will rely on it soon (if available).

QubesOS/qubes-issues#7956

(cherry picked from commit 5482f86)
marmarek added a commit to marmarek/qubes-core-admin that referenced this issue Dec 28, 2022
If VM supports memory hotplug, start it with maxmem=memory and then use
memory hotplug to (potentially) increase its memory. Qmemman almost had
all the needed parts - especially mem_set function already adjusts
maxmem too. The missing part was letting it know actual maxmem - do that
via xenstore (as qmemman uses xenstore heavily already).

The use of memory hotplug can be enabled (or disabled) explicitly via
'memory-hotplug' feature, or detected based on
'memory-hotplug-supported' file in dom0-provided kernel dir, or
'supported-feature.memory-hotplug' for VM-provided kernel.

Fixes QubesOS/qubes-issues#7956
marmarek added a commit to marmarek/qubes-core-admin that referenced this issue Dec 28, 2022
If VM supports memory hotplug, start it with maxmem=memory and then use
memory hotplug to (potentially) increase its memory. Qmemman almost had
all the needed parts - especially mem_set function already adjusts
maxmem too. The missing part was letting it know actual maxmem - do that
via xenstore (as qmemman uses xenstore heavily already).

The use of memory hotplug can be enabled (or disabled) explicitly via
'memory-hotplug' feature, or detected based on
'memory-hotplug-supported' file in dom0-provided kernel dir, or
'supported-feature.memory-hotplug' for VM-provided kernel.

Fixes QubesOS/qubes-issues#7956
marmarek added a commit to marmarek/qubes-core-libvirt that referenced this issue Aug 6, 2023
The '<maxMemory>' domain XML element is about maximum memory to be hot
plugged. Make libxl support this for calculating shadow memory amount,
which is used by Xen for internal accounting of domain memory (among
other things). If shadow memory is calculated based on initial memory,
then the domain can hotplug up to about twice that memory, but not more
(it silently doesn't get more).

QubesOS/qubes-issues#7956
marmarek added a commit to marmarek/qubes-core-admin that referenced this issue Aug 7, 2023
If VM supports memory hotplug, start it with maxmem=memory and then use
memory hotplug to (potentially) increase its memory. The hotplug maxmem
needs to be communicated to libvirt->libxl via <maxMemory> element, so
Xen will reserve appropriate amount of memory for internal accounting
(this currently is a patch in qubes package, not available upstream
yet). Qmemman almost had all the needed parts - especially mem_set
function already adjusts maxmem too. The missing part was letting it
know actual maxmem - do that via xenstore (as qmemman uses xenstore
heavily already).

The use of memory hotplug can be enabled (or disabled) explicitly via
'memory-hotplug' feature, or detected based on
'memory-hotplug-supported' file in dom0-provided kernel dir, or
'supported-feature.memory-hotplug' for VM-provided kernel.

Fixes QubesOS/qubes-issues#7956
@andrewdavidwong andrewdavidwong removed this from the Release 4.2 milestone Aug 13, 2023
marmarek added a commit to QubesOS/qubes-linux-kernel that referenced this issue Oct 10, 2023
@andrewdavidwong andrewdavidwong added this to the Release 4.2 milestone Oct 12, 2023
marmarek added a commit to QubesOS/qubes-linux-kernel that referenced this issue Oct 14, 2023
marmarek added a commit to marmarek/qubes-core-agent-linux that referenced this issue Apr 20, 2024
marmarek added a commit to marmarek/qubes-core-admin that referenced this issue Apr 20, 2024
1. Fix handling HVM to match the intention described in the comment.
2. Fix distinguishing dom0-provided and vm-provided kernels - the actual
   "kernel" property value depends on the virt_mode

QubesOS/qubes-issues#7956
marmarek added a commit to marmarek/qubes-core-agent-linux that referenced this issue Apr 20, 2024
marmarek added a commit to marmarek/qubes-core-agent-linux that referenced this issue Apr 22, 2024
marmarek added a commit to marmarek/qubes-core-admin that referenced this issue Apr 24, 2024
1. Fix handling HVM to match the intention described in the comment.
2. Fix distinguishing dom0-provided and vm-provided kernels - the actual
   "kernel" property value depends on the virt_mode

QubesOS/qubes-issues#7956
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
C: core C: kernel P: default Priority: default. Default priority for new issues, to be replaced given sufficient information. r4.2-host-stable release notes This issue should be mentioned in the release notes. T: enhancement Type: enhancement. A new feature that does not yet exist or improvement of existing functionality.
Projects
None yet
Development

No branches or pull requests

4 participants