Merge "Add nova file_backed_memory and memory_backing_dir support for qemu.conf"
This commit is contained in:
commit
319da5f77e
|
@ -125,6 +125,14 @@ parameters:
|
||||||
type: string
|
type: string
|
||||||
tags:
|
tags:
|
||||||
- role_specific
|
- role_specific
|
||||||
|
QemuMemoryBackingDir:
|
||||||
|
type: string
|
||||||
|
description: >
|
||||||
|
Directory used for memoryBacking source if configured as file.
|
||||||
|
NOTE: big files will be stored here
|
||||||
|
default: ''
|
||||||
|
tags:
|
||||||
|
- role_specific
|
||||||
|
|
||||||
conditions:
|
conditions:
|
||||||
|
|
||||||
|
@ -165,6 +173,11 @@ conditions:
|
||||||
- {get_param: LibvirtVncCACert}
|
- {get_param: LibvirtVncCACert}
|
||||||
- ''
|
- ''
|
||||||
|
|
||||||
|
memory_backing_dir_set:
|
||||||
|
not:
|
||||||
|
equals:
|
||||||
|
- {get_param: QemuMemoryBackingDir}
|
||||||
|
- ''
|
||||||
|
|
||||||
resources:
|
resources:
|
||||||
RoleParametersValue:
|
RoleParametersValue:
|
||||||
|
@ -175,9 +188,11 @@ resources:
|
||||||
map_replace:
|
map_replace:
|
||||||
- map_replace:
|
- map_replace:
|
||||||
- vhostuser_socket_group: VhostuserSocketGroup
|
- vhostuser_socket_group: VhostuserSocketGroup
|
||||||
|
memory_backing_dir: QemuMemoryBackingDir
|
||||||
- values: {get_param: [RoleParameters]}
|
- values: {get_param: [RoleParameters]}
|
||||||
- values:
|
- values:
|
||||||
VhostuserSocketGroup: {get_param: VhostuserSocketGroup}
|
VhostuserSocketGroup: {get_param: VhostuserSocketGroup}
|
||||||
|
QemuMemoryBackingDir: {get_param: QemuMemoryBackingDir}
|
||||||
|
|
||||||
|
|
||||||
ContainersCommon:
|
ContainersCommon:
|
||||||
|
@ -362,6 +377,15 @@ outputs:
|
||||||
- get_param: LibvirtVncCACert
|
- get_param: LibvirtVncCACert
|
||||||
- /etc/pki/libvirt-vnc:/var/lib/kolla/config_files/src-libvirt-vnc-pki:ro
|
- /etc/pki/libvirt-vnc:/var/lib/kolla/config_files/src-libvirt-vnc-pki:ro
|
||||||
- null
|
- null
|
||||||
|
-
|
||||||
|
if:
|
||||||
|
- memory_backing_dir_set
|
||||||
|
-
|
||||||
|
- str_replace:
|
||||||
|
template: "MEMORY_BACKING_DIR:MEMORY_BACKING_DIR"
|
||||||
|
params:
|
||||||
|
MEMORY_BACKING_DIR: {get_attr: [RoleParametersValue, value, memory_backing_dir]}
|
||||||
|
- null
|
||||||
environment:
|
environment:
|
||||||
- KOLLA_CONFIG_STRATEGY=COPY_ALWAYS
|
- KOLLA_CONFIG_STRATEGY=COPY_ALWAYS
|
||||||
step_4:
|
step_4:
|
||||||
|
|
|
@ -189,6 +189,13 @@ parameters:
|
||||||
- allowed_values: [ 256, 512, 1024 ]
|
- allowed_values: [ 256, 512, 1024 ]
|
||||||
tags:
|
tags:
|
||||||
- role_specific
|
- role_specific
|
||||||
|
NovaLibvirtFileBackedMemory:
|
||||||
|
description: >
|
||||||
|
Available capacity in MiB for file-backed memory.
|
||||||
|
default: 0
|
||||||
|
type: number
|
||||||
|
tags:
|
||||||
|
- role_specific
|
||||||
|
|
||||||
conditions:
|
conditions:
|
||||||
enable_live_migration_tunnelled:
|
enable_live_migration_tunnelled:
|
||||||
|
@ -196,6 +203,12 @@ conditions:
|
||||||
- equals: [{get_param: NovaNfsEnabled}, true]
|
- equals: [{get_param: NovaNfsEnabled}, true]
|
||||||
- equals: [{get_param: NovaEnableRbdBackend}, true]
|
- equals: [{get_param: NovaEnableRbdBackend}, true]
|
||||||
|
|
||||||
|
libvirt_file_backed_memory_enabled:
|
||||||
|
not:
|
||||||
|
or:
|
||||||
|
- equals: [{get_param: NovaLibvirtFileBackedMemory}, '']
|
||||||
|
- equals: [{get_param: NovaLibvirtFileBackedMemory}, 0]
|
||||||
|
|
||||||
resources:
|
resources:
|
||||||
NovaBase:
|
NovaBase:
|
||||||
type: ./nova-base.yaml
|
type: ./nova-base.yaml
|
||||||
|
@ -224,6 +237,7 @@ resources:
|
||||||
nova::compute::resume_guests_state_on_host_boot: NovaResumeGuestsStateOnHostBoot
|
nova::compute::resume_guests_state_on_host_boot: NovaResumeGuestsStateOnHostBoot
|
||||||
nova::compute::libvirt::rx_queue_size: NovaLibvirtRxQueueSize
|
nova::compute::libvirt::rx_queue_size: NovaLibvirtRxQueueSize
|
||||||
nova::compute::libvirt::tx_queue_size: NovaLibvirtTxQueueSize
|
nova::compute::libvirt::tx_queue_size: NovaLibvirtTxQueueSize
|
||||||
|
nova::compute::libvirt::file_backed_memory: NovaLibvirtFileBackedMemory
|
||||||
- values: {get_param: [RoleParameters]}
|
- values: {get_param: [RoleParameters]}
|
||||||
- values:
|
- values:
|
||||||
NovaVcpuPinSet: {get_param: NovaVcpuPinSet}
|
NovaVcpuPinSet: {get_param: NovaVcpuPinSet}
|
||||||
|
@ -234,6 +248,7 @@ resources:
|
||||||
NovaResumeGuestsStateOnHostBoot: {get_param: NovaResumeGuestsStateOnHostBoot}
|
NovaResumeGuestsStateOnHostBoot: {get_param: NovaResumeGuestsStateOnHostBoot}
|
||||||
NovaLibvirtRxQueueSize: {get_param: NovaLibvirtRxQueueSize}
|
NovaLibvirtRxQueueSize: {get_param: NovaLibvirtRxQueueSize}
|
||||||
NovaLibvirtTxQueueSize: {get_param: NovaLibvirtTxQueueSize}
|
NovaLibvirtTxQueueSize: {get_param: NovaLibvirtTxQueueSize}
|
||||||
|
NovaLibvirtFileBackedMemory: {get_param: NovaLibvirtFileBackedMemory}
|
||||||
|
|
||||||
outputs:
|
outputs:
|
||||||
role_data:
|
role_data:
|
||||||
|
@ -313,6 +328,12 @@ outputs:
|
||||||
nova::vncproxy::common::vncproxy_host: {get_param: [EndpointMap, NovaVNCProxyPublic, host_nobrackets]}
|
nova::vncproxy::common::vncproxy_host: {get_param: [EndpointMap, NovaVNCProxyPublic, host_nobrackets]}
|
||||||
nova::vncproxy::common::vncproxy_port: {get_param: [EndpointMap, NovaVNCProxyPublic, port]}
|
nova::vncproxy::common::vncproxy_port: {get_param: [EndpointMap, NovaVNCProxyPublic, port]}
|
||||||
nova::compute::verify_glance_signatures: {get_param: [VerifyGlanceSignatures]}
|
nova::compute::verify_glance_signatures: {get_param: [VerifyGlanceSignatures]}
|
||||||
|
# if libvirt_file_backed_memory_enabled we have to set ram_allocation_ratio to 1.0
|
||||||
|
nova::ram_allocation_ratio:
|
||||||
|
if:
|
||||||
|
- libvirt_file_backed_memory_enabled
|
||||||
|
- '1.0'
|
||||||
|
- null
|
||||||
step_config: |
|
step_config: |
|
||||||
# TODO(emilien): figure how to deal with libvirt profile.
|
# TODO(emilien): figure how to deal with libvirt profile.
|
||||||
# We'll probably treat it like we do with Neutron plugins.
|
# We'll probably treat it like we do with Neutron plugins.
|
||||||
|
|
|
@ -130,6 +130,14 @@ parameters:
|
||||||
description: The password for the libvirt service when TLS is enabled
|
description: The password for the libvirt service when TLS is enabled
|
||||||
type: string
|
type: string
|
||||||
hidden: true
|
hidden: true
|
||||||
|
QemuMemoryBackingDir:
|
||||||
|
type: string
|
||||||
|
description: >
|
||||||
|
Directory used for memoryBacking source if configured as file.
|
||||||
|
NOTE: big files will be stored here
|
||||||
|
default: ''
|
||||||
|
tags:
|
||||||
|
- role_specific
|
||||||
|
|
||||||
conditions:
|
conditions:
|
||||||
|
|
||||||
|
@ -173,6 +181,20 @@ resources:
|
||||||
RoleName: {get_param: RoleName}
|
RoleName: {get_param: RoleName}
|
||||||
RoleParameters: {get_param: RoleParameters}
|
RoleParameters: {get_param: RoleParameters}
|
||||||
|
|
||||||
|
# Merging role-specific parameters (RoleParameters) with the default parameters.
|
||||||
|
# RoleParameters will have the precedence over the default parameters.
|
||||||
|
RoleParametersValue:
|
||||||
|
type: OS::Heat::Value
|
||||||
|
properties:
|
||||||
|
type: json
|
||||||
|
value:
|
||||||
|
map_replace:
|
||||||
|
- map_replace:
|
||||||
|
- nova::compute::libvirt::qemu::memory_backing_dir: QemuMemoryBackingDir
|
||||||
|
- values: {get_param: [RoleParameters]}
|
||||||
|
- values:
|
||||||
|
QemuMemoryBackingDir: {get_param: QemuMemoryBackingDir}
|
||||||
|
|
||||||
outputs:
|
outputs:
|
||||||
role_data:
|
role_data:
|
||||||
description: Role data for the Libvirt service.
|
description: Role data for the Libvirt service.
|
||||||
|
@ -182,6 +204,7 @@ outputs:
|
||||||
config_settings:
|
config_settings:
|
||||||
map_merge:
|
map_merge:
|
||||||
- get_attr: [NovaBase, role_data, config_settings]
|
- get_attr: [NovaBase, role_data, config_settings]
|
||||||
|
- get_attr: [RoleParametersValue, value]
|
||||||
# we include ::nova::compute::libvirt::services in nova/libvirt profile
|
# we include ::nova::compute::libvirt::services in nova/libvirt profile
|
||||||
- nova::compute::libvirt::manage_libvirt_services: false
|
- nova::compute::libvirt::manage_libvirt_services: false
|
||||||
# we manage migration in nova common puppet profile
|
# we manage migration in nova common puppet profile
|
||||||
|
|
|
@ -0,0 +1,18 @@
|
||||||
|
---
|
||||||
|
features:
|
||||||
|
- |
|
||||||
|
Add nova file_backed_memory and memory_backing_dir support for qemu.conf
|
||||||
|
|
||||||
|
The libvirt driver now allows utilizing file backed memory for qemu/KVM
|
||||||
|
virtual machines, via a new configuration attribute
|
||||||
|
``[libvirt]/file_backed_memory``, defaulting to 0 (disabled).
|
||||||
|
|
||||||
|
``[libvirt]/file_backed_memory`` specifies the available capacity in MiB
|
||||||
|
for file backed memory, at the directory configured for
|
||||||
|
``memory_backing_dir`` in libvirt's ``qemu.conf``. When enabled, the
|
||||||
|
libvirt driver will report the configured value for the total memory
|
||||||
|
capacity of the node, and will report used memory as the sum of all
|
||||||
|
configured guest memory.
|
||||||
|
|
||||||
|
Running Nova with file_backed_memory requires libvirt version 4.0.0 and
|
||||||
|
qemu version 2.6.0
|
Loading…
Reference in New Issue