René's URL Explorer Experiment


Title: Live scaling for VMs with fixed service offerings on KVM · Issue #12908 · apache/cloudstack · GitHub

Open Graph Title: Live scaling for VMs with fixed service offerings on KVM · Issue #12908 · apache/cloudstack

X Title: Live scaling for VMs with fixed service offerings on KVM · Issue #12908 · apache/cloudstack

Description: Live scaling for VMs with fixed service offerings on KVM This specification introduces a new feature enabling users to live scale VMs created with fixed service offerings on the KVM hypervisor. Table of contents Live scaling for VMs with...

Open Graph Description: Live scaling for VMs with fixed service offerings on KVM This specification introduces a new feature enabling users to live scale VMs created with fixed service offerings on the KVM hypervisor. Tab...

X Description: Live scaling for VMs with fixed service offerings on KVM This specification introduces a new feature enabling users to live scale VMs created with fixed service offerings on the KVM hypervisor. Tab...

Opengraph URL: https://github.com/apache/cloudstack/issues/12908

X: @github

direct link

Domain: github.com


Hey, it has json ld scripts:
{"@context":"https://schema.org","@type":"DiscussionForumPosting","headline":"Live scaling for VMs with fixed service offerings on KVM","articleBody":"# Live scaling for VMs with fixed service offerings on KVM\n\nThis specification introduces a new feature enabling users to live scale VMs created with fixed service offerings on the KVM hypervisor.\n\n## Table of contents\n- [Live scaling for VMs with fixed service offerings on KVM](#live-scaling-for-vms-with-fixed-service-offerings-on-kvm)\n  - [Table of contents](#table-of-contents)\n  - [1. Problem description](#1-problem-description)\n  - [2. Proposed changes](#2-proposed-changes)\n    - [2.1. Apache CloudStack definition of domain XMLs with KVM](#21-apache-cloudstack-definition-of-domain-xmls-with-kvm)\n    - [2.2. New cluster-wide settings to control the memory and vCPUs maximum capacity for live scaling](#22-new-cluster-wide-settings-to-control-the-memory-and-vcpus-maximum-capacity-for-live-scaling)\n    - [2.3. `scaleVirtualMachine` API](#23-scalevirtualmachine-api)\n    - [2.4. New cluster-wide setting to control automatic VM migration on insufficient capacity during live scaling](#24-new-cluster-wide-setting-to-control-automatic-vm-migration-on-insufficient-capacity-during-live-scaling)\n  - [3. Conclusion and Limitations](#3-conclusion-and-limitations)\n\n## \u003csection id=\"1-problem-description\"\u003e1. Problem description\u003c/section\u003e\n\nCurrently, Apache CloudStack supports three types of compute offerings: fixed, custom constrained and custom unconstrained offerings. Fixed offerings have a fixed number of vCPUs, vCPU speed, and RAM memory. Custom constrained offerings accept a fixed vCPU speed, and a range of vCPUs and RAM memory in which users can select a value from. Lastly, custom unconstrained offerings accept an arbitrary amount of vCPUs, vCPU speed and RAM memory.\n\nWhen using KVM as hypervisor, Apache CloudStack supports scaling `Stopped` instances by executing the `scaleVirtualMachine` API. During this process, since the VMs are stopped, their metadata is updated in the database and, thus, when the VMs are later started again, their respective domain XMLs are created with the updated attributes.\n\nFor running VMs, Apache CloudStack only supports live scaling VMs with custom constrained and custom unconstrained compute offerings[^enable-scale-vm-setting]. For VMs with fixed compute offerings, users necessarily need to stop the VMs, change their service offerings through the `scaleVirtualMachine` API and start them again. However, depending on the criticality of the applications running on the VMs, the downtime caused by the scaling process is highly undesirable.\n\n## \u003csection id=\"2-proposed-changes\"\u003e2. Proposed changes\u003c/section\u003e\n\nTo address the described problem, this specification introduces the feature of live scaling VMs with fixed service offerings when using the KVM hypervisor on Apache CloudStack cloud environments. A high-level design of the feature is presented, briefly describing the proposed changes to the generation of guest VM domain XMLs, the `scaleVirtualMachine` API workflows and the global settings controlling the scaling process.\n\n### \u003csection id=\"21-apache-cloudstack-definition-of-domain-xmls-with-kvm\"\u003e2.1. Apache CloudStack definition of domain XMLs with KVM\u003c/section\u003e\n\nDuring the process of deploying virtual machines with KVM, a VM transfer object (`VirtualMachineTO`) is implemented given a `VirtualMachineProfile`, which is an object that stores the attributes of the VM. The implementation of VMs transfer objects is illustrated in the following activity diagram:\n\n\u003cimg width=\"361\" height=\"921\" alt=\"Image\" src=\"https://github.com/user-attachments/assets/f6dce360-5f80-4c6f-ab8c-ab8bc634a2e9\" /\u003e\n\nWhen configuring the memory and vCPU attributes for the VMs, Apache CloudStack implements the following workflow:\n\n\u003cimg width=\"849\" height=\"657\" alt=\"Image\" src=\"https://github.com/user-attachments/assets/aad3adc2-758a-417a-aa73-34e97d8c2827\" /\u003e\n\nRegarding the definition of domain XMLs for guest VMs, the following boilerplate is used by the Apache CloudStack Agent:\n\n```xml\n\u003cdomain type='kvm' id='4'\u003e\n    \u003c!--(...)--\u003e\n    \u003cmaxMemory slots='16' unit='KiB'\u003e1930240\u003c/maxMemory\u003e\n    \u003cmemory unit='KiB'\u003e1048576\u003c/memory\u003e\n    \u003ccurrentMemory unit='KiB'\u003e1048576\u003c/currentMemory\u003e\n    \u003cvcpu placement='static' current='1'\u003e2\u003c/vcpu\u003e\n    \u003c!--(...)--\u003e\n    \u003ccpu mode='custom' match='exact' check='full'\u003e\n        \u003c!--(...)--\u003e\n        \u003cnuma\u003e\n            \u003ccell id='0' cpus='0-1' memory='1048576' unit='KiB'/\u003e\n        \u003c/numa\u003e\n        \u003c!--(...)--\u003e\n    \u003c/cpu\u003e\n\u003c/domain\u003e\n```\n\nRegarding vCPU configuration, the content of the `vcpu` element defines the maximum number of vCPUs that can be allocated for the guest VM. Its `current` property defines the number of vCPUs that are effectively active[^cpu-configuration-libvirt-docs]. As can be analyzed from the above activity diagrams, for custom constrained compute offerings, the content of the `vcpu` element is defined as the offering's maximum number of vCPUs. For custom unconstrained offerings, the element's content is defined as the `vm.serviceoffering.cpu.cores.max` global setting value, defaulting to the host maximum CPU capacity in scenarios that the global setting is equal to zero.\n\nAs for guest VMs memory configuration, the `maxMemory` element defines the maximum memory allocation for the VM. The `memory` element represents the maximum amount of memory available for the VM at boot time. The `currentMemory` represents the actual allocation of memory for the VM[^memory-configuration-libvirt-docs]. Lastly, Libvirt currently requires the specification of NUMA nodes to enable memory hotplug. Each `cell` element represents a NUMA node. The `cpus` attribute define the range of CPUs that are part of the node. The `memory` attribute represents the amount of memory in use by the VM[^numa-configuration-libvirt-docs].\n\nAs can be noticed from the VM configuration workflow, for custom constrained compute offerings, the `maxMemory` element content is defined as the offering's maximum number of memory. For custom unconstrained offerings, the element's content is defined as the `vm.serviceoffering.ram.size.max` global setting value, defaulting to the host maximum memory capacity in scenarios in which the global setting is equal to zero.\n\nHence, to address the live scaling of VMs with fixed offerings, the first validation on the configuration of memory and vCPU for a guest VM, that checks whether the VM is dynamically scalable, will be modified. Currently, it considers a VM to be dynamically scalable if its offering is dynamic (that is, either the amount of vCPUs, vCPU speed or RAM memory is not specified); the VM's `dynamically_scalable` property is `true`; and the global setting `enable.dynamic.scale.vm` is true. \n\nTherefore, the check for dynamic offerings will be removed from the above mentioned validation. As a consequence of that, when the `dynamically_scalable` property of VMs is `true` and the `enable.dynamic.scale.vm` global setting is `true`, then the domain XMLs of guest VMs will always have a range of memory and vCPUs to be scaled up to, even when the VMs are created from fixed compute offerings.\n\nTo define the upper limit of the memory and vCPU live scaling range, the `kvm.cpu.dynamic.scaling.capacity` and `kvm.memory.dynamic.scaling.capacity` global settings will be considered (see [new cluster-wide settings](#22-new-cluster-wide-settings-to-control-the-memory-and-vcpus-maximum-capacity-for-live-scaling)). Therefore, the maximum number of vCPUs will be retrieved from the `kvm.cpu.dynamic.scaling.capacity` setting value and the maximum number of memory will be retrieved from the `kvm.memory.dynamic.scaling.capacity` value. When these settings are equal to zero, the host maximum capacity of CPU and memory will be considered. \n\nThis procedure will also be applied for custom constrained offerings to enable seamless live scaling between all types of compute offerings existing in Apache CloudStack. Thus, at the KVM level, all types of VMs hosted in a given host will be homogeneous regarding the CPU and memory upper limits. At the Apache CloudStack level, on the other hand, the Management Server will be responsible for validating the computing resources ranges defined in the constrained offerings. \n\n### \u003csection id=\"22-new-cluster-wide-settings-to-control-the-memory-and-vcpus-maximum-capacity-for-live-scaling\"\u003e2.2. New cluster-wide settings to control the memory and vCPUs maximum capacity for live scaling\u003c/section\u003e \n\nAs mentioned on the [domain XMLs definition section](#21-apache-cloudstack-definition-of-domain-xmls-with-kvm), the `vm.serviceoffering.cpu.cores.max` and `vm.serviceoffering.ram.size.max` global settings are used to control de maximum amount of vCPUs and memory to which VMs with custom unconstrained offerings can be live scaled to. However, both settings are also currently used to limit the maximum amount of CPU and RAM that can be defined for compute offerings and allocated to VMs.\n\nTo segregate goals and responsibilities, two new cluster-wide settings will be introduced:\n\n| Name   | Type   | Scope  | Description |\n| ------ | ------ | ------ | ----------- |\n| `kvm.memory.dynamic.scaling.capacity` | Integer | Cluster | Defines the maximum memory capacity in MiB for which VMs can be dynamically scaled to with KVM. The `kvm.memory.dynamic.scaling.capacity` setting's value will be used to define the value of the `\u003cmaxMemory /\u003e` element of domain XMLs. If it is set to a value less than or equal to `0`, then the host's memory capacity will be considered. |\n| `kvm.cpu.dynamic.scaling.capacity` | Integer | Cluster | Defines the maximum vCPU capacity for which VMs can be dynamically scaled to with KVM. The `kvm.cpu.dynamic.scaling.capacity` setting's value will be used to define the value of the `\u003cvcpu /\u003e` element of domain XMLs. If it is set to a value less than or equal to  `0`, then the host's CPU cores capacity will be considered. |\n\nTherefore, both settings will be used to exclusively control the maximum live scaling capacity for memory and vCPUs. To maintain compatibility with the current behavior, the values of the `vm.serviceoffering.cpu.cores.max` and `vm.serviceoffering.ram.size.max` global settings will be used to populate the initial values of the new cluster-wide settings.\n\n### \u003csection id=\"23-scalevirtualmachine-api\"\u003e2.3. `scaleVirtualMachine` API\u003c/section\u003e\n\nThe following activity diagram illustrates the current implementation of the VM scaling process:\n\n\u003cimg width=\"951\" height=\"982\" alt=\"Image\" src=\"https://github.com/user-attachments/assets/13c8e18c-9ec3-4f42-b334-d4f9cf3331a1\" /\u003e\n\nAs can be noticed, when upgrading running VMs, after performing some general validations, the Management Server checks if the VM is running on KVM, and if its offering is not dynamic (that is, vCPU, vCPU speed and RAM memory are specified for the offering). If the VM meets these conditions, then an exception is thrown, informing the end user that KVM does not support live scaling VMs with fixed compute offerings.\n\nTherefore, the above-mentioned check for dynamic offerings will be removed from the scaling workflow. This is possible because the domain XMLs of guest VMs will be prepared to support live scaling when the global setting `enable.dynamic.scale.vm` and the VM's `dynamically_scalable` property are set to `true`.\n\nAdditionally, it is relevant to note that the current workflow does not update the VM's CPU quota percentage based on its new CPU frequency. To address this, the current implementation will be extended so that, before building the `ScaleVmCommand`, the new CPU quota percentage is calculated and included in the command payload, along with a flag indicating whether the CPU cap has changed between the old and new service offerings.\n\nAt the Agent side, the following workflow will be executed:\n\n\u003cimg width=\"1059\" height=\"651\" alt=\"Image\" src=\"https://github.com/user-attachments/assets/1b3c67c1-002b-4edc-9d32-a1ec38478a22\" /\u003e\n\nThus, if both the old and the new service offerings have CPU limitation enabled, the domain's CPU quota will be updated on the fly. If the old service offering does not have CPU limitation enabled but the new one does, the domain's CPU quota and period parameters will be set. Conversely, it the old offering has CPU limitation enabled and the new one does not, these parameters will be removed from the domain.  \n\nTo update the CPU scheduling parameters of a domain on the fly, the `virDomainSetSchedulerParameters` Libvirt API will be used. To remove CPU limitation from a domain, the API will be called with the `vcpu_quota` parameter set to `17,592,186,044,415`. Due to a Libvirt regression (see [Libvirt regression description](https://gitlab.com/libvirt/libvirt/-/work_items/324)), it is not possible to set this value to `-1`. However, setting it to `17,592,186,044,415` has the same effect, ensuring that CPU limitations are effectively removed from running domains despite the Libvirt's constraint.\n\n### \u003csection id=\"24-new-cluster-wide-setting-to-control-automatic-vm-migration-on-insufficient-capacity-during-live-scaling\"\u003e2.4. New cluster-wide setting to control automatic VM migration on insufficient capacity during live scaling\u003c/section\u003e \n\nThe current live scaling workflow, regardless of the hypervisor in use (KVM, VMware or XenServer), includes handling for cases where there is insufficient compute capacity to perform the operation. When the Management Server identifies that the VM's current host lacks sufficient capacity to scale the instance, it automatically migrates the VM to a suitable host.\n\nHowever, this behavior may be undesirable in certain cloud production environments. Live scaling operations triggered by end users can lead to multiple unpredictable migrations, potentially impacting other aspects of the infrastructure. To address this, the following cluster-wide setting will be introduced to allow operators to control whether VMs should be automatically migrated in such scenarios:\n\n| Name   | Type   | Scope  | Description |\n| ------ | ------ | ------ | ----------- |\n| `auto.migrate.vm.on.live.scale.insufficient.capacity` | Boolean | Cluster | Defines whether a VM should be automatically migrated to a suitable host when the current host lacks sufficient compute capacity to live scale the instance. Defaults to true. |\n\nThe default value is set to true to preserve the existing behavior.\n\n## \u003csection id=\"3-conclusion-and-limitations\"\u003e3. Conclusion and Limitations\u003c/section\u003e\n\nThis proposal introduces support for live scaling of VMs with fixed service offerings when using the KVM hypervisor in Apache CloudStack environments. As a limitation, it is important to highlight that live scaling will not be supported for existing domains created prior to upgrading to the Apache CloudStack release in which this patch is included. This is because their domain XMLs are not prepared to support live CPU and memory scaling.\n\nTo enable live scaling for such VMs, the following steps are required:\n\n1. Ensure that the `enable.dynamic.scale.vm` global setting is enabled.\n2. Ensure that the VM's template is marked as dynamically scalable.\n3. Ensure that the VM itself is marked as dynamically scalable.\n4. Stop and start the VM so that its domain is recreated with the required structure for live scaling.\n\n[^enable-scale-vm-setting]: The global setting `enable.dynamic.scale.vm` controls whether the live scaling feature is enabled or not.\n\n[^cpu-configuration-libvirt-docs]: More information about the configuration of guest VMs CPU attributes can be found at [the Libvirt documentation](https://libvirt.org/formatdomain.html#cpu-allocation).\n\n[^memory-configuration-libvirt-docs]: More information about the configuration of guest VMs memory attributes can be found at [the Libvirt documentation](https://libvirt.org/formatdomain.html#memory-allocation).\n\n[^numa-configuration-libvirt-docs]: More information about the configuration of guest NUMA topology can be found at [the Libvirt documentation](https://www.libvirt.org/formatdomain.html#cpu-model-and-topology).\n","author":{"url":"https://github.com/bernardodemarco","@type":"Person","name":"bernardodemarco"},"datePublished":"2026-03-27T22:34:55.000Z","interactionStatistic":{"@type":"InteractionCounter","interactionType":"https://schema.org/CommentAction","userInteractionCount":2},"url":"https://github.com/12908/cloudstack/issues/12908"}

route-pattern/_view_fragments/issues/show/:user_id/:repository/:id/issue_layout(.:format)
route-controllervoltron_issues_fragments
route-actionissue_layout
fetch-noncev2:329e127b-497c-9ad9-e270-965b5856b981
current-catalog-service-hash81bb79d38c15960b92d99bca9288a9108c7a47b18f2423d0f6438c5b7bcd2114
request-idB5CA:100AB9:59D8FD:7A2DB7:6A4DA991
html-safe-nonce03f1e80b06ce6f70787d3598f0d99a4bcd393d00daa716ea7653676b82707a04
visitor-payloadeyJyZWZlcnJlciI6IiIsInJlcXVlc3RfaWQiOiJCNUNBOjEwMEFCOTo1OUQ4RkQ6N0EyREI3OjZBNERBOTkxIiwidmlzaXRvcl9pZCI6IjgyOTEyMDU2NTExMTMwMjc5ODUiLCJyZWdpb25fZWRnZSI6ImlhZCIsInJlZ2lvbl9yZW5kZXIiOiJpYWQifQ==
visitor-hmac6f4a5800d321c00ce50f87d756d6663319b24836e38bf23858e5acdb1e48c15d
hovercard-subject-tagissue:4156285750
github-keyboard-shortcutsrepository,issues,copilot
google-site-verificationApib7-x98H0j5cPqHWwSMm6dNU4GmODRoqxLiDzdx9I
octolytics-urlhttps://collector.github.com/github/collect
analytics-location///voltron/issues_fragments/issue_layout
fb:app_id1401488693436528
apple-itunes-appapp-id=1477376905, app-argument=https://github.com/_view_fragments/issues/show/apache/cloudstack/12908/issue_layout
twitter:imagehttps://opengraph.githubassets.com/cc95d992a53e7ae65efe5a484f3218720fcb70b8ca247cb73bb0bd042ca59ad9/apache/cloudstack/issues/12908
twitter:cardsummary_large_image
og:imagehttps://opengraph.githubassets.com/cc95d992a53e7ae65efe5a484f3218720fcb70b8ca247cb73bb0bd042ca59ad9/apache/cloudstack/issues/12908
og:image:altLive scaling for VMs with fixed service offerings on KVM This specification introduces a new feature enabling users to live scale VMs created with fixed service offerings on the KVM hypervisor. Tab...
og:image:width1200
og:image:height600
og:site_nameGitHub
og:typeobject
og:author:usernamebernardodemarco
hostnamegithub.com
expected-hostnamegithub.com
None06b8a6144231bf3a234f1c2e9993861e07ce98a905912b114aa386c2d7e84b33
turbo-cache-controlno-preview
go-importgithub.com/apache/cloudstack git https://github.com/apache/cloudstack.git
octolytics-dimension-user_id47359
octolytics-dimension-user_loginapache
octolytics-dimension-repository_id9759448
octolytics-dimension-repository_nwoapache/cloudstack
octolytics-dimension-repository_publictrue
octolytics-dimension-repository_is_forkfalse
octolytics-dimension-repository_network_root_id9759448
octolytics-dimension-repository_network_root_nwoapache/cloudstack
turbo-body-classeslogged-out env-production page-responsive
disable-turbofalse
browser-stats-urlhttps://api.github.com/_private/browser/stats
browser-errors-urlhttps://api.github.com/_private/browser/errors
release47723578ce6819210724ef064c858fce6d3115a3
ui-targetfull
theme-color#1e2327
color-schemelight dark

Links:

Skip to contenthttps://github.com/apache/cloudstack/issues/12908#start-of-content
https://github.com/
Sign in https://github.com/login?return_to=https%3A%2F%2Fgithub.com%2Fapache%2Fcloudstack%2Fissues%2F12908
GitHub CopilotWrite better code with AIhttps://github.com/features/copilot
GitHub Copilot appDirect agents from issue to mergehttps://github.com/features/ai/github-app
MCP RegistryNewIntegrate external toolshttps://github.com/mcp
ActionsAutomate any workflowhttps://github.com/features/actions
CodespacesInstant dev environmentshttps://github.com/features/codespaces
IssuesPlan and track workhttps://github.com/features/issues
Code ReviewManage code changeshttps://github.com/features/code-review
GitHub Advanced SecurityFind and fix vulnerabilitieshttps://github.com/security/advanced-security
Code securitySecure your code as you buildhttps://github.com/security/advanced-security/code-security
Secret protectionStop leaks before they starthttps://github.com/security/advanced-security/secret-protection
Why GitHubhttps://github.com/why-github
Documentationhttps://docs.github.com
Bloghttps://github.blog
Changeloghttps://github.blog/changelog
Marketplacehttps://github.com/marketplace
View all featureshttps://github.com/features
Enterpriseshttps://github.com/enterprise
Small and medium teamshttps://github.com/team
Startupshttps://github.com/enterprise/startups
Nonprofitshttps://github.com/solutions/industry/nonprofits
App Modernizationhttps://github.com/solutions/use-case/app-modernization
DevSecOpshttps://github.com/solutions/use-case/devsecops
DevOpshttps://github.com/solutions/use-case/devops
CI/CDhttps://github.com/solutions/use-case/ci-cd
View all use caseshttps://github.com/solutions/use-case
Healthcarehttps://github.com/solutions/industry/healthcare
Financial serviceshttps://github.com/solutions/industry/financial-services
Manufacturinghttps://github.com/solutions/industry/manufacturing
Governmenthttps://github.com/solutions/industry/government
View all industrieshttps://github.com/solutions/industry
View all solutionshttps://github.com/solutions
AIhttps://github.com/resources/articles?topic=ai
Software Developmenthttps://github.com/resources/articles?topic=software-development
DevOpshttps://github.com/resources/articles?topic=devops
Securityhttps://github.com/resources/articles?topic=security
View all topicshttps://github.com/resources/articles
Customer storieshttps://github.com/customer-stories
Events & webinarshttps://github.com/resources/events
Ebooks & reportshttps://github.com/resources/whitepapers
Business insightshttps://github.com/solutions/executive-insights
GitHub Skillshttps://skills.github.com
Documentationhttps://docs.github.com
Customer supporthttps://support.github.com
Community forumhttps://github.com/orgs/community/discussions
Trust centerhttps://github.com/trust-center
Partnershttps://github.com/partners
View all resourceshttps://github.com/resources
GitHub SponsorsFund open source developershttps://github.com/sponsors
Security Labhttps://securitylab.github.com
Maintainer Communityhttps://maintainers.github.com
Acceleratorhttps://github.com/accelerator
GitHub Starshttps://stars.github.com
Archive Programhttps://archiveprogram.github.com
Topicshttps://github.com/topics
Trendinghttps://github.com/trending
Collectionshttps://github.com/collections
Enterprise platformAI-powered developer platformhttps://github.com/enterprise
GitHub Advanced SecurityEnterprise-grade security featureshttps://github.com/security/advanced-security
Copilot for BusinessEnterprise-grade AI featureshttps://github.com/features/copilot/copilot-business
Premium SupportEnterprise-grade 24/7 supporthttps://github.com/premium-support
Pricinghttps://github.com/pricing
Search syntax tipshttps://docs.github.com/search-github/github-code-search/understanding-github-code-search-syntax
documentationhttps://docs.github.com/search-github/github-code-search/understanding-github-code-search-syntax
Sign in https://github.com/login?return_to=https%3A%2F%2Fgithub.com%2Fapache%2Fcloudstack%2Fissues%2F12908
Sign up https://github.com/signup?ref_cta=Sign+up&ref_loc=header+logged+out&ref_page=%2F%3Cuser-name%3E%2F%3Crepo-name%3E%2Fvoltron%2Fissues_fragments%2Fissue_layout&source=header-repo&source_repo=apache%2Fcloudstack
Reloadhttps://github.com/apache/cloudstack/issues/12908
Reloadhttps://github.com/apache/cloudstack/issues/12908
Reloadhttps://github.com/apache/cloudstack/issues/12908
Please reload this pagehttps://github.com/apache/cloudstack/issues/12908
apache https://github.com/apache
cloudstackhttps://github.com/apache/cloudstack
Notifications https://github.com/login?return_to=%2Fapache%2Fcloudstack
Fork 1.3k https://github.com/login?return_to=%2Fapache%2Fcloudstack
Star 3k https://github.com/login?return_to=%2Fapache%2Fcloudstack
Code https://github.com/apache/cloudstack
Issues 536 https://github.com/apache/cloudstack/issues
Pull requests 268 https://github.com/apache/cloudstack/pulls
Discussions https://github.com/apache/cloudstack/discussions
Actions https://github.com/apache/cloudstack/actions
Projects https://github.com/apache/cloudstack/projects
Wiki https://github.com/apache/cloudstack/wiki
Security and quality 0 https://github.com/apache/cloudstack/security
Insights https://github.com/apache/cloudstack/pulse
Code https://github.com/apache/cloudstack
Issues https://github.com/apache/cloudstack/issues
Pull requests https://github.com/apache/cloudstack/pulls
Discussions https://github.com/apache/cloudstack/discussions
Actions https://github.com/apache/cloudstack/actions
Projects https://github.com/apache/cloudstack/projects
Wiki https://github.com/apache/cloudstack/wiki
Security and quality https://github.com/apache/cloudstack/security
Insights https://github.com/apache/cloudstack/pulse
#12975https://github.com/apache/cloudstack/pull/12975
Live scaling for VMs with fixed service offerings on KVMhttps://github.com/apache/cloudstack/issues/12908#top
#12975https://github.com/apache/cloudstack/pull/12975
https://github.com/bernardodemarco
type:new-featurehttps://github.com/apache/cloudstack/issues?q=state%3Aopen%20label%3A%22type%3Anew-feature%22
4.23.0https://github.com/apache/cloudstack/milestone/42
https://github.com/bernardodemarco
bernardodemarcohttps://github.com/bernardodemarco
on Mar 27, 2026https://github.com/apache/cloudstack/issues/12908#issue-4156285750
Live scaling for VMs with fixed service offerings on KVMhttps://github.com/apache/cloudstack/issues/12908#live-scaling-for-vms-with-fixed-service-offerings-on-kvm
Table of contentshttps://github.com/apache/cloudstack/issues/12908#table-of-contents
1. Problem descriptionhttps://github.com/apache/cloudstack/issues/12908#1-problem-description
2. Proposed changeshttps://github.com/apache/cloudstack/issues/12908#2-proposed-changes
2.1. Apache CloudStack definition of domain XMLs with KVMhttps://github.com/apache/cloudstack/issues/12908#21-apache-cloudstack-definition-of-domain-xmls-with-kvm
2.2. New cluster-wide settings to control the memory and vCPUs maximum capacity for live scalinghttps://github.com/apache/cloudstack/issues/12908#22-new-cluster-wide-settings-to-control-the-memory-and-vcpus-maximum-capacity-for-live-scaling
2.3. scaleVirtualMachine APIhttps://github.com/apache/cloudstack/issues/12908#23-scalevirtualmachine-api
2.4. New cluster-wide setting to control automatic VM migration on insufficient capacity during live scalinghttps://github.com/apache/cloudstack/issues/12908#24-new-cluster-wide-setting-to-control-automatic-vm-migration-on-insufficient-capacity-during-live-scaling
3. Conclusion and Limitationshttps://github.com/apache/cloudstack/issues/12908#3-conclusion-and-limitations
1https://github.com/apache/cloudstack/issues/12908#user-content-fn-enable-scale-vm-setting-ca5ecd024d81eae18fe45852523cc588
https://private-user-images.githubusercontent.com/115510880/570715999-f6dce360-5f80-4c6f-ab8c-ab8bc634a2e9.png?jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3ODM0NzQ4NzgsIm5iZiI6MTc4MzQ3NDU3OCwicGF0aCI6Ii8xMTU1MTA4ODAvNTcwNzE1OTk5LWY2ZGNlMzYwLTVmODAtNGM2Zi1hYjhjLWFiOGJjNjM0YTJlOS5wbmc_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjYwNzA4JTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI2MDcwOFQwMTM2MThaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT01OWIzNzYxZDc5MmMyNzYxOTk2NjcxMDNmOTNmNWIwNDk1YzMyZTZlMWRkMjA2ZGU0ZjFmYjZkZTJiZGE3NGViJlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCZyZXNwb25zZS1jb250ZW50LXR5cGU9aW1hZ2UlMkZwbmcifQ.0XyrFt0bBxomQXClFVhyy7BDwm9Mc9oW9UCmGNUaUE8
https://private-user-images.githubusercontent.com/115510880/570716067-aad3adc2-758a-417a-aa73-34e97d8c2827.png?jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3ODM0NzQ4NzgsIm5iZiI6MTc4MzQ3NDU3OCwicGF0aCI6Ii8xMTU1MTA4ODAvNTcwNzE2MDY3LWFhZDNhZGMyLTc1OGEtNDE3YS1hYTczLTM0ZTk3ZDhjMjgyNy5wbmc_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjYwNzA4JTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI2MDcwOFQwMTM2MThaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT1mZThhZjY2OGFmYzg3Zjk2ZDdiNWRjNWZhZDcwYTVkNmViYjFmZWJlMDU1MmI4ODkxMDY1OWFmM2QyZWNhYjY5JlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCZyZXNwb25zZS1jb250ZW50LXR5cGU9aW1hZ2UlMkZwbmcifQ.ZTMx-NjDG0D6ifaa74ungCF_IDzvXobx053ceS4IGik
2https://github.com/apache/cloudstack/issues/12908#user-content-fn-cpu-configuration-libvirt-docs-ca5ecd024d81eae18fe45852523cc588
3https://github.com/apache/cloudstack/issues/12908#user-content-fn-memory-configuration-libvirt-docs-ca5ecd024d81eae18fe45852523cc588
4https://github.com/apache/cloudstack/issues/12908#user-content-fn-numa-configuration-libvirt-docs-ca5ecd024d81eae18fe45852523cc588
new cluster-wide settingshttps://github.com/apache/cloudstack/issues/12908#22-new-cluster-wide-settings-to-control-the-memory-and-vcpus-maximum-capacity-for-live-scaling
domain XMLs definition sectionhttps://github.com/apache/cloudstack/issues/12908#21-apache-cloudstack-definition-of-domain-xmls-with-kvm
https://private-user-images.githubusercontent.com/115510880/570715885-13c8e18c-9ec3-4f42-b334-d4f9cf3331a1.png?jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3ODM0NzQ4NzgsIm5iZiI6MTc4MzQ3NDU3OCwicGF0aCI6Ii8xMTU1MTA4ODAvNTcwNzE1ODg1LTEzYzhlMThjLTllYzMtNGY0Mi1iMzM0LWQ0ZjljZjMzMzFhMS5wbmc_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjYwNzA4JTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI2MDcwOFQwMTM2MThaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT1hNzY0Y2Q2NjhjOTgyMDViMDQyZGRiMTM1NmU4MDYwYmMzMTkxY2E2MmZlNDcwOTY2NWFiMzBjNDliN2RkMTM3JlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCZyZXNwb25zZS1jb250ZW50LXR5cGU9aW1hZ2UlMkZwbmcifQ.JyeeBsNJjTgYYq1sG9vG4XhejdCLmfKB-D4DY1Gc_bQ
https://private-user-images.githubusercontent.com/115510880/570715793-1b3c67c1-002b-4edc-9d32-a1ec38478a22.png?jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3ODM0NzQ4NzgsIm5iZiI6MTc4MzQ3NDU3OCwicGF0aCI6Ii8xMTU1MTA4ODAvNTcwNzE1NzkzLTFiM2M2N2MxLTAwMmItNGVkYy05ZDMyLWExZWMzODQ3OGEyMi5wbmc_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjYwNzA4JTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI2MDcwOFQwMTM2MThaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT01MGYzNjNmNDM0MmIxYzdkNThlN2QwNjZkMzBmOWQxYTU2NjNkNDA5ZjJmZjY4MTVmMDA1YWZiNTc0ZDgzYjI0JlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCZyZXNwb25zZS1jb250ZW50LXR5cGU9aW1hZ2UlMkZwbmcifQ.Pv6fyM7HLE6NypRHmUwWE5vzBcC4IRba1IhNQwYihiY
Libvirt regression descriptionhttps://gitlab.com/libvirt/libvirt/-/work_items/324
https://github.com/apache/cloudstack/issues/12908#user-content-fnref-enable-scale-vm-setting-ca5ecd024d81eae18fe45852523cc588
the Libvirt documentationhttps://libvirt.org/formatdomain.html#cpu-allocation
https://github.com/apache/cloudstack/issues/12908#user-content-fnref-cpu-configuration-libvirt-docs-ca5ecd024d81eae18fe45852523cc588
the Libvirt documentationhttps://libvirt.org/formatdomain.html#memory-allocation
https://github.com/apache/cloudstack/issues/12908#user-content-fnref-memory-configuration-libvirt-docs-ca5ecd024d81eae18fe45852523cc588
the Libvirt documentationhttps://www.libvirt.org/formatdomain.html#cpu-model-and-topology
https://github.com/apache/cloudstack/issues/12908#user-content-fnref-numa-configuration-libvirt-docs-ca5ecd024d81eae18fe45852523cc588
bernardodemarcohttps://github.com/bernardodemarco
type:new-featurehttps://github.com/apache/cloudstack/issues?q=state%3Aopen%20label%3A%22type%3Anew-feature%22
Apache CloudStack BugFest - Issueshttps://github.com/orgs/apache/projects/362
4.23.0https://github.com/apache/cloudstack/milestone/42
https://github.com
Termshttps://docs.github.com/site-policy/github-terms/github-terms-of-service
Privacyhttps://docs.github.com/site-policy/privacy-policies/github-privacy-statement
Securityhttps://github.com/security
Statushttps://www.githubstatus.com/
Communityhttps://github.community/
Docshttps://docs.github.com/
Contacthttps://support.github.com?tags=dotcom-footer

Viewport: width=device-width


URLs of crawlers that visited me.