~openstack-charmers-next/charms/wily/lxd/trunk

« back to all changes in this revision

Viewing changes to hooks/charmhelpers/core/hugepage.py

  • Committer: James Page
  • Date: 2016-02-25 16:35:49 UTC
  • mfrom: (50.1.1 trunk)
  • Revision ID: james.page@ubuntu.com-20160225163549-9owa4y2x6hbj3ysa
Resync helpers

Show diffs side-by-side

added added

removed removed

Lines of Context:
25
25
    fstab_mount,
26
26
    mkdir,
27
27
)
 
28
from charmhelpers.core.strutils import bytes_from_string
 
29
from subprocess import check_output
28
30
 
29
31
 
30
32
def hugepage_support(user, group='hugetlb', nr_hugepages=256,
31
33
                     max_map_count=65536, mnt_point='/run/hugepages/kvm',
32
 
                     pagesize='2MB', mount=True):
 
34
                     pagesize='2MB', mount=True, set_shmmax=False):
33
35
    """Enable hugepages on system.
34
36
 
35
37
    Args:
44
46
    group_info = add_group(group)
45
47
    gid = group_info.gr_gid
46
48
    add_user_to_group(user, group)
 
49
    if max_map_count < 2 * nr_hugepages:
 
50
        max_map_count = 2 * nr_hugepages
47
51
    sysctl_settings = {
48
52
        'vm.nr_hugepages': nr_hugepages,
49
53
        'vm.max_map_count': max_map_count,
50
54
        'vm.hugetlb_shm_group': gid,
51
55
    }
 
56
    if set_shmmax:
 
57
        shmmax_current = int(check_output(['sysctl', '-n', 'kernel.shmmax']))
 
58
        shmmax_minsize = bytes_from_string(pagesize) * nr_hugepages
 
59
        if shmmax_minsize > shmmax_current:
 
60
            sysctl_settings['kernel.shmmax'] = shmmax_minsize
52
61
    sysctl.create(yaml.dump(sysctl_settings), '/etc/sysctl.d/10-hugepage.conf')
53
62
    mkdir(mnt_point, owner='root', group='root', perms=0o755, force=False)
54
63
    lfstab = fstab.Fstab()