Skip to content

Commit

Permalink
Add hugepages support
Browse files Browse the repository at this point in the history
Launch the test VM off a hugepages-enabled flavor, if requested so.
Also configure edpm node templates to use the matching configuration.

Signed-off-by: Bohdan Dobrelia <[email protected]>
  • Loading branch information
bogdando committed Dec 5, 2024
1 parent bc5be70 commit d7f69c3
Show file tree
Hide file tree
Showing 7 changed files with 24 additions and 1 deletion.
5 changes: 4 additions & 1 deletion docs_dev/assemblies/development_environment.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -145,8 +145,9 @@ To use Wallaby content instead, run the following:
[,bash]
----
cd ~/install_yamls/devsetup
make standalone
EDPM_CONFIGURE_HUGEPAGES=false make standalone <1>
----
<1> To configure the host for a simplistic hugepages setup, set `EDPM_CONFIGURE_HUGEPAGES=true`.

To deploy using TLS everywhere enabled, instead run:

Expand Down Expand Up @@ -231,12 +232,14 @@ Create a test VM instance with a test volume attachement:
cd ~/data-plane-adoption
export CINDER_VOLUME_BACKEND_CONFIGURED=true <1>
export CINDER_BACKUP_BACKEND_CONFIGURED=true
export EDPM_CONFIGURE_HUGEPAGES=false <2>
export OPENSTACK_COMMAND="ssh -i ~/install_yamls/out/edpm/ansibleee-ssh-key-id_rsa [email protected] OS_CLOUD=standalone openstack"
OS_CLOUD_IP=192.168.122.100 OS_CLOUD_NAME=standalone \
bash tests/roles/development_environment/files/pre_launch.bash
----
<1> Use `CINDER_*_BACKEND_CONFIGURED=false`, if Cinder Volume or Backup services' storage backends have been not configured for the source cloud,
or won't be configured for the target cloud. That might be a valid case for some developement setups, but not for a production scenarios.
<2> To configure a flavor with hugepages set `EDPM_CONFIGURE_HUGEPAGES=true`. You will need to reboot the standalone host firstly, to apply kernel args.

This also creates a test Cinder volume, a backup from it, and a snapshot of it.

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -409,12 +409,18 @@ endif::[]
# Do not attempt OVS major upgrades here
edpm_ovs_packages:
- openvswitch3.3
edpm_default_mounts: <4>
- path: /dev/hugepages<size>
opts: pagesize=<size>
fstype: hugetlbfs
group: hugetlbfs
EOF
----
+
<1> If TLS Everywhere is enabled, change `spec:tlsEnabled` to `true`.
<2> If your deployment has a custom DNS Domain, modify the `spec:nodes:[NODE NAME]:hostName` to use fqdn for the node.
<3> Replace `<bridge_mappings>` with the value of the bridge mappings in your configuration, for example, `"datacentre:br-ctlplane"`.
<4> If you need to configure hugepages, adjust `<size>`. To configure multi-sized hugepages, create more items in the list. Note that the mount points must match the source cloud configuration.

. Ensure that you use the same `ovn-controller` settings in the `OpenStackDataPlaneNodeSet` CR that you used in the {compute_service} nodes before adoption. This configuration is stored in the `external_ids` column in the `Open_vSwitch` table in the Open vSwitch database:
+
Expand Down
8 changes: 8 additions & 0 deletions tests/roles/dataplane_adoption/defaults/main.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -266,6 +266,14 @@ dataplane_cr: |
edpm_ovs_packages:
- openvswitch3.3
{% if use_hugepages|bool +%}
edpm_default_mounts:
- path: /dev/hugepages2M
opts: pagesize=2M
fstype: hugetlbfs
group: hugetlbfs
{%+ endif +%}
# ovn-controller settings
edpm_ovn_bridge_mappings: ["datacentre:{{ neutron_physical_bridge_name }}"]
edpm_ovn_bridge: br-int
Expand Down
1 change: 1 addition & 0 deletions tests/roles/development_environment/defaults/main.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ edpm_privatekey_path: ~/install_yamls/out/edpm/ansibleee-ssh-key-id_rsa
run_pre_adoption_validation: true
os_cloud_name: standalone
source_osp_ssh_user: root
use_hugepages: false
# Supported storage backends for Cinder of the source cloud
# must match those configured for the target cloud
supported_volume_backends: []
Expand Down
3 changes: 3 additions & 0 deletions tests/roles/development_environment/files/pre_launch.bash
Original file line number Diff line number Diff line change
Expand Up @@ -72,6 +72,9 @@ ${BASH_ALIASES[openstack]} image show cirros || \
# Create flavor
${BASH_ALIASES[openstack]} flavor show m1.small || \
${BASH_ALIASES[openstack]} flavor create --ram 512 --vcpus 1 --disk 1 --ephemeral 1 m1.small
if [ "${EDPM_CONFIGURE_HUGEPAGES:-false}" = "true" ] ; then
${BASH_ALIASES[openstack]} flavor set m1.small --property hw:mem_page_size=2MB
fi

# Create networks
${BASH_ALIASES[openstack]} network show private || ${BASH_ALIASES[openstack]} network create private --share
Expand Down
1 change: 1 addition & 0 deletions tests/roles/development_environment/tasks/main.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
cmd: |
{{ shell_header }}
export OPENSTACK_COMMAND="{{ openstack_command }}"
export EDPM_CONFIGURE_HUGEPAGES={{ use_hugepages | string | lower }}
export CINDER_VOLUME_BACKEND_CONFIGURED={{ cinder_volume_backend_configured | string | lower }}
export CINDER_BACKUP_BACKEND_CONFIGURED={{ cinder_backup_backend_configured | string | lower }}
{{ lookup('ansible.builtin.file', prelaunch_test_instance_script) }}
Expand Down
1 change: 1 addition & 0 deletions tests/vars.sample.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -71,6 +71,7 @@ supported_backup_backends: #CUSTOMIZE_THIS

# Whether the adopted node will host compute services
compute_adoption: true
use_hugepages: false

# Where perform or not telemetry installation during adoption
telemetry_adoption: true
Expand Down

0 comments on commit d7f69c3

Please sign in to comment.