diff options
Diffstat (limited to 'ansible/roles/enable_hugepages_on_boot')
-rwxr-xr-x | ansible/roles/enable_hugepages_on_boot/tasks/main.yml | 59 | ||||
-rw-r--r-- | ansible/roles/enable_hugepages_on_boot/vars/main.yml | 26 |
2 files changed, 85 insertions, 0 deletions
diff --git a/ansible/roles/enable_hugepages_on_boot/tasks/main.yml b/ansible/roles/enable_hugepages_on_boot/tasks/main.yml new file mode 100755 index 000000000..f258bb684 --- /dev/null +++ b/ansible/roles/enable_hugepages_on_boot/tasks/main.yml @@ -0,0 +1,59 @@ +# Copyright (c) 2017 Intel Corporation +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +--- +- name: check if hugepages are set by this role + command: "grep -o '{{ hugepage_param_regex }}' /etc/default/grub" + register: is_mine_huge + ignore_errors: True + +- name: check if hugepages are set by someone else + command: "grep -o 'default_hugepagesz=' /etc/default/grub" + register: is_huge + ignore_errors: True + +- fail: + msg: "Hugepages already set by someone else" + when: is_mine_huge.stdout == "" and is_huge.stdout != "" + +- name: use 16 for auto num_hugepages and 1G size + set_fact: + num_hugepages: 16 + when: num_hugepages|default("auto") == "auto" + +- name: set hugepages in grub + lineinfile: + dest: /etc/default/grub + regexp: '{{ hugepage_param_regex }}' + line: '{{ hugepage_param }}' + state: present + +- name: Update grub + command: "{{ update_grub[ansible_os_family] }}" + +- name: create hugetables mount + file: + path: "{{ hugetable_mount }}" + state: directory + + +- name: mount hugetlbfs + mount: + name: "{{ hugetable_mount }}" + src: nodev + fstype: hugetlbfs + state: present + +- service: + name: procps + enabled: yes diff --git a/ansible/roles/enable_hugepages_on_boot/vars/main.yml b/ansible/roles/enable_hugepages_on_boot/vars/main.yml new file mode 100644 index 000000000..acdf02509 --- /dev/null +++ b/ansible/roles/enable_hugepages_on_boot/vars/main.yml @@ -0,0 +1,26 @@ +# Copyright (c) 2017 Intel Corporation +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +--- +hugepage_param_regex: '^GRUB_CMDLINE_LINUX="\$GRUB_CMDLINE_LINUX.*# added by hugepages role' +hugepage_param: 'GRUB_CMDLINE_LINUX="$GRUB_CMDLINE_LINUX default_hugepagesz={{ huge_pagesize_short[huge_pagesize_mb] }} hugepagesz={{ huge_pagesize_short[huge_pagesize_mb] }} hugepages={{ num_hugepages }}" # added by hugepages role' + +update_grub: + Debian: "update-grub2" + RedHat: "grub2-mkconfig -o /boot/grub2/grub.cfg" + +huge_pagesize_short: + 1024: "1G" + 2: "2M" + +hugetable_mount: /mnt/huge |