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 - Configure {{ ansible_machine }} Kernel Parameters
14 path: "/etc/default/grub"
16 regexp: "^GRUB_CMDLINE_LINUX="
17 line: "{{ grub_cmdline_linux[ansible_machine] | join() }}"
24 - name: Performance Tuning - Turbo Boost
25 import_tasks: turbo_boost.yaml
27 cpu_microarchitecture == "skylake" or
28 cpu_microarchitecture == "cascadelake"
32 - name: Performance Tuning - Adjust nr_hugepages
33 # change the minimum size of the hugepage pool.
34 # 2G VPP, 4GB per VNF/CNF, 2G reserve
36 name: "vm.nr_hugepages"
37 value: "{{ sysctl.vm.nr_hugepages }}"
39 sysctl_file: "/etc/sysctl.d/90-csit.conf"
44 - name: Performance Tuning - Adjust max_map_count
45 # this file contains the maximum number of memory map areas a process
46 # may have. memory map areas are used as a side-effect of calling
47 # malloc, directly by mmap and mprotect, and also when loading shared
50 # while most applications need less than a thousand maps, certain
51 # programs, particularly malloc debuggers, may consume lots of them,
52 # e.g., up to one or two maps per allocation.
53 # must be greater than or equal to (2 * vm.nr_hugepages).
55 name: "vm.max_map_count"
56 value: "{{ sysctl.vm.nr_hugepages * 4 }}"
58 sysctl_file: "/etc/sysctl.d/90-csit.conf"
63 - name: Performance Tuning - Adjust hugetlb_shm_group
64 # hugetlb_shm_group contains group id that is allowed to create sysv
65 # shared memory segment using hugetlb page.
67 name: "vm.hugetlb_shm_group"
70 sysctl_file: "/etc/sysctl.d/90-csit.conf"
75 - name: Performance Tuning - Adjust swappiness
76 # this control is used to define how aggressive the kernel will swap
77 # memory pages. higher values will increase agressiveness, lower values
78 # decrease the amount of swap. a value of 0 instructs the kernel not to
79 # initiate swap until the amount of free and file-backed pages is less
80 # than the high water mark in a zone.
85 sysctl_file: "/etc/sysctl.d/90-csit.conf"
90 - name: Performance Tuning - Adjust shmmax
91 # shared memory max must be greator or equal to the total size of hugepages.
92 # for 2mb pages, totalhugepagesize = vm.nr_hugepages * 2 * 1024 * 1024
93 # if the existing kernel.shmmax setting (cat /sys/proc/kernel/shmmax)
94 # is greater than the calculated totalhugepagesize then set this parameter
95 # to current shmmax value.
98 value: "{{ sysctl.vm.nr_hugepages * 2 * 1024 * 1024 }}"
100 sysctl_file: "/etc/sysctl.d/90-csit.conf"
105 - name: Performance Tuning - Adjust watchdog_cpumask
106 # this value can be used to control on which cpus the watchdog may run.
107 # the default cpumask is all possible cores, but if no_hz_full is
108 # enabled in the kernel config, and cores are specified with the
109 # nohz_full= boot argument, those cores are excluded by default.
110 # offline cores can be included in this mask, and if the core is later
111 # brought online, the watchdog will be started based on the mask value.
113 # typically this value would only be touched in the nohz_full case
114 # to re-enable cores that by default were not running the watchdog,
115 # if a kernel lockup was suspected on those cores.
117 name: "kernel.watchdog_cpumask"
118 value: "{{ sysctl.kernel.watchdog_cpumask }}"
120 sysctl_file: "/etc/sysctl.d/90-csit.conf"
125 - name: Performance Tuning - Adjust randomize_va_space
126 # this option can be used to select the type of process address
127 # space randomization that is used in the system, for architectures
128 # that support this feature.
129 # 0 - turn the process address space randomization off. this is the
130 # default for architectures that do not support this feature anyways,
131 # and kernels that are booted with the "norandmaps" parameter.
133 name: "kernel.randomize_va_space"
136 sysctl_file: "/etc/sysctl.d/90-csit.conf"
141 - name: Performance Tuning - Copy Cpufrequtils File
143 src: "files/cpufrequtils"
144 dest: "/etc/default/cpufrequtils"
151 - name: Performance Tuning - Copy Irqbalance File
153 src: "files/irqbalance"
154 dest: "/etc/default/irqbalance"
161 - name: Performance Tuning - Set Ondemand Service To Disable
168 - name: Performance Tuning - Load Kernel Modules By Default
176 - load-kernel-modules
178 - meta: flush_handlers