Merge "Use Fuel 9 hugepages and cpu_pinning implemenation instead of a custom one"

This commit is contained in:
Jenkins 2016-09-17 14:20:09 +00:00 committed by Gerrit Code Review
commit 11188464b1
3 changed files with 24 additions and 94 deletions

View File

@ -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 |>
} }
} }

View File

@ -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']

View File

@ -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"