2 # file: roles/performance_tuning/tasks/main.yaml
4 - name: Performance Tuning - Install Distribution - Release - Machine Prerequisites
6 name: "{{ packages | flatten(levels=1) }}"
10 - install-dependencies
12 - name: Performance Tuning - Distribution - release - machine optimizations
13 include_tasks: '{{ ansible_distribution|lower }}_{{ ansible_distribution_release }}.yaml'
15 - machine-optimizations
17 - name: Performance Tuning - Configure {{ ansible_machine }} Kernel Parameters
19 path: "/etc/default/grub"
21 regexp: "^GRUB_CMDLINE_LINUX="
22 line: "{{ grub_cmdline_linux[ansible_machine] | join() }}"
28 - meta: flush_handlers
30 - name: Performance Tuning - Turbo Boost
31 import_tasks: turbo_boost.yaml
33 cpu_microarchitecture == "skylake" or
34 cpu_microarchitecture == "cascadelake"
38 - name: Performance Tuning - Adjust nr_hugepages
39 # change the minimum size of the hugepage pool.
40 # 2G VPP, 4GB per VNF/CNF, 2G reserve
42 name: "vm.nr_hugepages"
43 value: "{{ sysctl.vm.nr_hugepages }}"
45 sysctl_file: "/etc/sysctl.d/90-csit.conf"
50 - name: Performance Tuning - Adjust max_map_count
51 # this file contains the maximum number of memory map areas a process
52 # may have. memory map areas are used as a side-effect of calling
53 # malloc, directly by mmap and mprotect, and also when loading shared
56 # while most applications need less than a thousand maps, certain
57 # programs, particularly malloc debuggers, may consume lots of them,
58 # e.g., up to one or two maps per allocation.
59 # must be greater than or equal to (2 * vm.nr_hugepages).
61 name: "vm.max_map_count"
62 value: "{{ sysctl.vm.nr_hugepages * 4 }}"
64 sysctl_file: "/etc/sysctl.d/90-csit.conf"
69 - name: Performance Tuning - Adjust hugetlb_shm_group
70 # hugetlb_shm_group contains group id that is allowed to create sysv
71 # shared memory segment using hugetlb page.
73 name: "vm.hugetlb_shm_group"
76 sysctl_file: "/etc/sysctl.d/90-csit.conf"
81 - name: Performance Tuning - Adjust swappiness
82 # this control is used to define how aggressive the kernel will swap
83 # memory pages. higher values will increase agressiveness, lower values
84 # decrease the amount of swap. a value of 0 instructs the kernel not to
85 # initiate swap until the amount of free and file-backed pages is less
86 # than the high water mark in a zone.
91 sysctl_file: "/etc/sysctl.d/90-csit.conf"
96 - name: Performance Tuning - Adjust shmmax
97 # shared memory max must be greator or equal to the total size of hugepages.
98 # for 2mb pages, totalhugepagesize = vm.nr_hugepages * 2 * 1024 * 1024
99 # if the existing kernel.shmmax setting (cat /sys/proc/kernel/shmmax)
100 # is greater than the calculated totalhugepagesize then set this parameter
101 # to current shmmax value.
103 name: "kernel.shmmax"
104 value: "{{ sysctl.vm.nr_hugepages * 2 * 1024 * 1024 }}"
106 sysctl_file: "/etc/sysctl.d/90-csit.conf"
111 - name: Performance Tuning - Adjust watchdog_cpumask
112 # this value can be used to control on which cpus the watchdog may run.
113 # the default cpumask is all possible cores, but if no_hz_full is
114 # enabled in the kernel config, and cores are specified with the
115 # nohz_full= boot argument, those cores are excluded by default.
116 # offline cores can be included in this mask, and if the core is later
117 # brought online, the watchdog will be started based on the mask value.
119 # typically this value would only be touched in the nohz_full case
120 # to re-enable cores that by default were not running the watchdog,
121 # if a kernel lockup was suspected on those cores.
123 name: "kernel.watchdog_cpumask"
124 value: "{{ sysctl.kernel.watchdog_cpumask }}"
126 sysctl_file: "/etc/sysctl.d/90-csit.conf"
131 - name: Performance Tuning - Adjust randomize_va_space
132 # this option can be used to select the type of process address
133 # space randomization that is used in the system, for architectures
134 # that support this feature.
135 # 0 - turn the process address space randomization off. this is the
136 # default for architectures that do not support this feature anyways,
137 # and kernels that are booted with the "norandmaps" parameter.
139 name: "kernel.randomize_va_space"
142 sysctl_file: "/etc/sysctl.d/90-csit.conf"
147 - name: Performance Tuning - Copy Cpufrequtils File
149 src: "files/cpufrequtils"
150 dest: "/etc/default/cpufrequtils"
157 - name: Performance Tuning - Copy Irqbalance File
159 src: "files/irqbalance"
160 dest: "/etc/default/irqbalance"
169 - name: Performance Tuning - Set Ondemand Service To Disable
176 - name: Performance Tuning - Load Kernel Modules By Default
184 - load-kernel-modules
186 - meta: flush_handlers