nvazquez opened a new pull request #3365: KVM: DPDK live migrations URL: https://github.com/apache/cloudstack/pull/3365 ## Description This feature allows administrators to perform live migrations on DPDK enabled VMs between DPDK enabled hosts in the same cluster. A DPDK enabled host must be configured to enable the CloudStack DPDK support. Properties on agent.properties must be populated as: - openvswitch.dpdk.enabled=true - openvswitch.dpdk.ovs.path=<OVS_PATH> - network.bridge.type=openvswitch - libvirt.vif.driver=com.cloud.hypervisor.kvm.resource.OvsVifDriver Each time a CloudStack agent on a KVM host starts a connection to its management server, it sends a comma-separated list of capabilities available on the host, such as: 'hvm', 'snapshot'. The management server persists the information received from the agent on database ('capabilities' column on 'hosts' table) - When the property 'openvswitch.dpdk.enabled' = true, the 'dpdk' capability is included in the list of capabilities sent to the management server. - When the property 'openvswitch.dpdk.enabled' = false, the list of capabilities sent to the management server does not inclide the 'dpdk' capability. Please note that agent restart is required after any property from agent.properties file is changed. Also having the dpdk capability, the hosts will be able and will host VMs without the dpdk configuration. In this case, openvswitch ports without DPDK support are created, just like for system VMs. The management server is enhanced to determinate if a VM is a DPDK enabled VM when: - The VM type is 'User' - The VM details or service offering details contain additional configurations with the name: - 'dpdk-hugepages' - 'dpdk-numa' - The KVM host on which the VM is running contains the 'dpdk' capability. ### API changes The 'findSuitableHostsForMigration' API is enhanced to support DPDK enabled VMs. - When the VM is a DPDK enabled VM then only DPDK enabled hosts must be suitable for migration. Suitable hosts must be only the ones with the 'dpdk' capability as part of its capabilities. The 'migrateVirtualMachine' API method is extended to support DPDK enabled VMs live migrations: - When the VM to live migrate is not a DPDK enabled VM, the logic remains unchanged. - When the VM to live migrate is a DPDK enabled VM, it can be live migrated between two hosts when: - The KVM source host is a DPDK enabled host (the 'dpdk' capability is part of its capabilities) - The KVM destination host is a DPDK enabled host on the same cluster as the source host - If the destination host is not a DPDK enabled host, then the migration must fail with a descriptive message. - Before attempting the live migration, the destination host must be prepared for the migration: - A new DPDK port must be created for each interface of the VM - Before attempting the live migration, the source host must: - Obtain the VM XML domain as a copy of the current XML domain - Replace the XML parts, referencing the new DPDK ports on the destination host for each interface - After the migration is successful, the VM interface DPDK ports on the source host must be removed. - In case of migration failure, the DPDK ports created on the destination hosts are cleaned up. ## Types of changes - [ ] Breaking change (fix or feature that would cause existing functionality to change) - [x] New feature (non-breaking change which adds functionality) - [ ] Bug fix (non-breaking change which fixes an issue) - [ ] Enhancement (improves an existing feature and functionality) - [ ] Cleanup (Code refactoring and cleanup, that may add test cases) ## Screenshots (if appropriate): ## How Has This Been Tested?
---------------------------------------------------------------- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. For queries about this service, please contact Infrastructure at: us...@infra.apache.org With regards, Apache Git Services