Merge "Use Fuel 9 hugepages and cpu_pinning implemenation instead of a custom one"
This commit is contained in:
commit
11188464b1
|
@ -13,78 +13,39 @@
|
||||||
# under the License.
|
# under the License.
|
||||||
|
|
||||||
class contrail::compute::hugepages {
|
class contrail::compute::hugepages {
|
||||||
|
# This class is kept here to ensure hugetlbfs mount existence,
|
||||||
|
# even if user has missed nova hugepages configuration in UI/API.
|
||||||
|
$node_hash = hiera_hash('node', {})
|
||||||
|
$nova_huge_pages = pick($node_hash['nova_hugepages_enabled'], false)
|
||||||
|
|
||||||
if $contrail::compute_dpdk_enabled {
|
if $contrail::compute_dpdk_enabled and !$nova_huge_pages and ($::osfamily == 'Debian') {
|
||||||
# NOTE: To use hugepages we have to upgrade qemu packages to version 2.4
|
$qemu_hugepages_value = 'set KVM_HUGEPAGES 1'
|
||||||
# The kernel configuration for hugepages
|
$libvirt_hugetlbfs_mount = 'set hugetlbfs_mount /run/hugepages/kvm'
|
||||||
Kernel_parameter {
|
augeas { 'qemu_hugepages':
|
||||||
provider => 'grub2',
|
context => '/files/etc/default/qemu-kvm',
|
||||||
|
changes => $qemu_hugepages_value,
|
||||||
|
notify => Service[$contrail::libvirt_name],
|
||||||
}
|
}
|
||||||
if $contrail::hugepages_size == 2 {
|
augeas { 'libvirt_hugetlbfs_mount':
|
||||||
$max_map_count=$contrail::hugepages_number * 2
|
context => '/files/etc/libvirt/qemu.conf',
|
||||||
sysctl::value { 'vm.max_map_count':
|
changes => $libvirt_hugetlbfs_mount,
|
||||||
value => "${max_map_count} ",
|
notify => Service[$contrail::libvirt_name],
|
||||||
} ->
|
|
||||||
sysctl::value { 'vm.nr_hugepages':
|
|
||||||
value => "${contrail::hugepages_number} ",
|
|
||||||
}
|
|
||||||
kernel_parameter { 'hugepagesz':
|
|
||||||
ensure => absent,
|
|
||||||
}
|
|
||||||
kernel_parameter { 'hugepages':
|
|
||||||
ensure => absent,
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
elsif $contrail::hugepages_size == 1024 {
|
|
||||||
kernel_parameter { 'hugepagesz':
|
|
||||||
ensure => present,
|
|
||||||
value => "${contrail::hugepages_size}M",
|
|
||||||
} ->
|
|
||||||
kernel_parameter { 'hugepages':
|
|
||||||
ensure => present,
|
|
||||||
value => $contrail::hugepages_size,
|
|
||||||
}
|
|
||||||
|
|
||||||
#This need for vrouter start when 1Gb hugepages not enabled yet
|
|
||||||
exec { 'temporary_add_hugepages':
|
|
||||||
path => ['/sbin', '/usr/bin'],
|
|
||||||
command => 'sysctl -w vm.nr_hugepages=256',
|
|
||||||
onlyif => 'test ! -d /sys/kernel/mm/hugepages/hugepages-1048576kB',
|
|
||||||
}
|
|
||||||
exec { 'reboot_require':
|
|
||||||
path => ['/bin', '/usr/bin'],
|
|
||||||
command => 'touch /tmp/contrail-reboot-require',
|
|
||||||
onlyif => 'test ! -d /sys/kernel/mm/hugepages/hugepages-1048576kB',
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
file { '/hugepages':
|
|
||||||
ensure => 'directory',
|
|
||||||
group => 'kvm',
|
|
||||||
} ->
|
|
||||||
|
|
||||||
mount { '/hugepages':
|
|
||||||
ensure => 'mounted',
|
|
||||||
fstype => 'hugetlbfs',
|
|
||||||
device => 'hugetlbfs',
|
|
||||||
options => 'mode=775,gid=kvm',
|
|
||||||
atboot => true,
|
|
||||||
} ->
|
|
||||||
|
|
||||||
file_line { 'hugepages_mountpoint':
|
|
||||||
path => '/etc/libvirt/qemu.conf',
|
|
||||||
match => '#hugetlbfs_mount',
|
|
||||||
line => 'hugetlbfs_mount = "/hugepages"',
|
|
||||||
} ~>
|
|
||||||
|
|
||||||
service { 'qemu-kvm':
|
service { 'qemu-kvm':
|
||||||
ensure => running,
|
ensure => running,
|
||||||
enable => true,
|
enable => true,
|
||||||
} ~>
|
}
|
||||||
|
|
||||||
service { $contrail::libvirt_name:
|
service { $contrail::libvirt_name:
|
||||||
ensure => running,
|
ensure => running,
|
||||||
enable => true,
|
enable => true,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
kernel_parameter { 'transparent_hugepage':
|
||||||
|
ensure => present,
|
||||||
|
value => 'never',
|
||||||
|
}
|
||||||
|
|
||||||
|
Augeas['qemu_hugepages'] ~> Service<| title == 'qemu-kvm'|>
|
||||||
|
Service<| title == 'qemu-kvm'|> -> Service<| title == $contrail::libvirt_name |>
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -29,7 +29,6 @@ class contrail {
|
||||||
$node_name = hiera('user_node_name')
|
$node_name = hiera('user_node_name')
|
||||||
$nodes = hiera('nodes')
|
$nodes = hiera('nodes')
|
||||||
$region = hiera('region', 'RegionOne')
|
$region = hiera('region', 'RegionOne')
|
||||||
$dpdk_hash = hiera_hash('dpdk', {})
|
|
||||||
$cluster = hiera('cluster')
|
$cluster = hiera('cluster')
|
||||||
$cluster_id = $cluster['id']
|
$cluster_id = $cluster['id']
|
||||||
|
|
||||||
|
@ -108,10 +107,6 @@ class contrail {
|
||||||
$external = $settings['contrail_external']
|
$external = $settings['contrail_external']
|
||||||
$route_target = $settings['contrail_route_target']
|
$route_target = $settings['contrail_route_target']
|
||||||
$gateways = split($settings['contrail_gateways'], ',')
|
$gateways = split($settings['contrail_gateways'], ',')
|
||||||
# Hugepages configuration for DPDK vrouter
|
|
||||||
$hugepages_size = pick($settings['hugepages_size'],2)
|
|
||||||
$hugepages_amount = pick($settings['hugepages_amount'],10)
|
|
||||||
$hugepages_number = floor($::memorysize_mb * $hugepages_amount / '100' / $hugepages_size)
|
|
||||||
|
|
||||||
# DPDK settings
|
# DPDK settings
|
||||||
$global_dpdk_enabled = $settings['contrail_global_dpdk']
|
$global_dpdk_enabled = $settings['contrail_global_dpdk']
|
||||||
|
|
|
@ -61,32 +61,6 @@ attributes:
|
||||||
description: "Enable this option to unlock the DPDK feature.\nNOTE: You still have to assign DPDK-role to compute nodes to enable DPDK on them."
|
description: "Enable this option to unlock the DPDK feature.\nNOTE: You still have to assign DPDK-role to compute nodes to enable DPDK on them."
|
||||||
weight: 70
|
weight: 70
|
||||||
type: "checkbox"
|
type: "checkbox"
|
||||||
hugepages_size:
|
|
||||||
type: 'select'
|
|
||||||
weight: 120
|
|
||||||
value: '2'
|
|
||||||
label: 'Hugepage size'
|
|
||||||
description: 'Choose the size of hugepages that will be used for dpdk feature. Check if 1GB pages are supported on target compute node. # grep pdpe1gb /proc/cpuinfo | uniq'
|
|
||||||
values:
|
|
||||||
- data: '2'
|
|
||||||
label: '2M'
|
|
||||||
- data: '1024'
|
|
||||||
label: "1G"
|
|
||||||
restrictions:
|
|
||||||
- action: hide
|
|
||||||
condition: not (settings:contrail.metadata.enabled == true and settings:contrail.contrail_global_dpdk.value == true)
|
|
||||||
hugepages_amount:
|
|
||||||
value: '60'
|
|
||||||
label: 'Hugepages amount (%)'
|
|
||||||
description: 'The amount of memory allocated on each compute-node for hugepages in percent'
|
|
||||||
weight: 130
|
|
||||||
type: 'text'
|
|
||||||
regex:
|
|
||||||
source: '^[1-9][0-9]?$|^100$'
|
|
||||||
error: "Invalid amount of percent"
|
|
||||||
restrictions:
|
|
||||||
- condition: "not (settings:contrail.metadata.enabled == true and settings:contrail.contrail_global_dpdk.value == true)"
|
|
||||||
action: "hide"
|
|
||||||
vrouter_core_mask:
|
vrouter_core_mask:
|
||||||
value: "0x3"
|
value: "0x3"
|
||||||
label: "CPU pinning"
|
label: "CPU pinning"
|
||||||
|
|
Loading…
Reference in New Issue