2 # file: roles/performance_tuning/tasks/main.yaml
4 - name: Inst - Update Package Cache (APT)
9 - ansible_distribution|lower == 'ubuntu'
11 - perf-inst-prerequisites
13 - name: Inst - Machine Prerequisites
15 name: "{{ packages | flatten(levels=1) }}"
18 - perf-inst-prerequisites
20 - name: Distribution - release - machine optimizations
21 include_tasks: '{{ ansible_distribution|lower }}_{{ ansible_distribution_release }}.yaml'
23 - machine-optimizations
25 - name: Configure {{ ansible_machine }} Kernel Parameters
27 path: "/etc/default/grub"
29 regexp: "^GRUB_CMDLINE_LINUX="
30 line: "GRUB_CMDLINE_LINUX=\"{% for key, value in grub.items() %}{% if value %}{{key}}={{value}} {% else %}{{key}} {% endif %}{% endfor %}\""
36 - meta: flush_handlers
39 import_tasks: turbo_boost.yaml
41 cpu_microarchitecture == "skylake" or
42 cpu_microarchitecture == "cascadelake"
46 - name: Adjust nr_hugepages
47 # change the minimum size of the hugepage pool.
48 # 2G VPP, 4GB per VNF/CNF, 2G reserve
50 name: "vm.nr_hugepages"
51 value: "{{ sysctl.vm.nr_hugepages }}"
53 sysctl_file: "/etc/sysctl.d/90-csit.conf"
58 - name: Adjust max_map_count
59 # this file contains the maximum number of memory map areas a process
60 # may have. memory map areas are used as a side-effect of calling
61 # malloc, directly by mmap and mprotect, and also when loading shared
64 # while most applications need less than a thousand maps, certain
65 # programs, particularly malloc debuggers, may consume lots of them,
66 # e.g., up to one or two maps per allocation.
67 # must be greater than or equal to (2 * vm.nr_hugepages).
69 name: "vm.max_map_count"
70 value: "{{ sysctl.vm.nr_hugepages * 4 }}"
72 sysctl_file: "/etc/sysctl.d/90-csit.conf"
77 - name: Adjust hugetlb_shm_group
78 # hugetlb_shm_group contains group id that is allowed to create sysv
79 # shared memory segment using hugetlb page.
81 name: "vm.hugetlb_shm_group"
84 sysctl_file: "/etc/sysctl.d/90-csit.conf"
89 - name: Adjust swappiness
90 # this control is used to define how aggressive the kernel will swap
91 # memory pages. higher values will increase agressiveness, lower values
92 # decrease the amount of swap. a value of 0 instructs the kernel not to
93 # initiate swap until the amount of free and file-backed pages is less
94 # than the high water mark in a zone.
99 sysctl_file: "/etc/sysctl.d/90-csit.conf"
104 - name: Adjust shmmax
105 # shared memory max must be greator or equal to the total size of hugepages.
106 # for 2mb pages, totalhugepagesize = vm.nr_hugepages * 2 * 1024 * 1024
107 # if the existing kernel.shmmax setting (cat /sys/proc/kernel/shmmax)
108 # is greater than the calculated totalhugepagesize then set this parameter
109 # to current shmmax value.
111 name: "kernel.shmmax"
112 value: "{{ sysctl.vm.nr_hugepages * 2 * 1024 * 1024 }}"
114 sysctl_file: "/etc/sysctl.d/90-csit.conf"
119 - name: Adjust watchdog_cpumask
120 # this value can be used to control on which cpus the watchdog may run.
121 # the default cpumask is all possible cores, but if no_hz_full is
122 # enabled in the kernel config, and cores are specified with the
123 # nohz_full= boot argument, those cores are excluded by default.
124 # offline cores can be included in this mask, and if the core is later
125 # brought online, the watchdog will be started based on the mask value.
127 # typically this value would only be touched in the nohz_full case
128 # to re-enable cores that by default were not running the watchdog,
129 # if a kernel lockup was suspected on those cores.
131 name: "kernel.watchdog_cpumask"
132 value: "{{ sysctl.kernel.watchdog_cpumask }}"
134 sysctl_file: "/etc/sysctl.d/90-csit.conf"
139 - name: Adjust randomize_va_space
140 # this option can be used to select the type of process address
141 # space randomization that is used in the system, for architectures
142 # that support this feature.
143 # 0 - turn the process address space randomization off. this is the
144 # default for architectures that do not support this feature anyways,
145 # and kernels that are booted with the "norandmaps" parameter.
147 name: "kernel.randomize_va_space"
150 sysctl_file: "/etc/sysctl.d/90-csit.conf"
155 - name: Copy Cpufrequtils File
157 src: "files/cpufrequtils"
158 dest: "/etc/default/cpufrequtils"
165 - name: Copy Irqbalance File
167 src: "files/irqbalance"
168 dest: "/etc/default/irqbalance"
177 - name: Set Ondemand Service To Disable
184 - name: Load Kernel Modules By Default
192 - load-kernel-modules
194 - meta: flush_handlers