X-Git-Url: https://gerrit.fd.io/r/gitweb?a=blobdiff_plain;f=resources%2Ftools%2Ftestbed-setup%2Fansible%2Froles%2Fperformance_tuning%2Ffilter_plugins%2Fmain.py;fp=resources%2Ftools%2Ftestbed-setup%2Fansible%2Froles%2Fperformance_tuning%2Ffilter_plugins%2Fmain.py;h=d76f6fe166fa531269018dade62864fe3cb28504;hb=8fcb84c0495e364daf65745a9b23b0d6f0a1d51e;hp=0000000000000000000000000000000000000000;hpb=8e3a326cba182b4ab9054263625c7e40cdd6f2e3;p=csit.git diff --git a/resources/tools/testbed-setup/ansible/roles/performance_tuning/filter_plugins/main.py b/resources/tools/testbed-setup/ansible/roles/performance_tuning/filter_plugins/main.py new file mode 100644 index 0000000000..d76f6fe166 --- /dev/null +++ b/resources/tools/testbed-setup/ansible/roles/performance_tuning/filter_plugins/main.py @@ -0,0 +1,29 @@ +"""Extra Ansible filters""" + +def irqbalance_banned_cpu_mask( + processor_cores, processor_count, processor_threads_per_core): + """ + Return irqbalance CPU mask. + Args: + processor_cores (int): Physical processor unit. + processor_counts (int): Processors per physical unit. + processor_threads_per_core (int): Threads per physical unit. + Returns: + str: irqbalance_banned_cpus. + """ + mask = int("1" * 128, 2) + + for i in range(processor_count * processor_threads_per_core): + mask &= ~(1 << i * processor_cores) + + import re + return ",".join(re.findall('.{1,8}', str(hex(mask))[2:])) + + +class FilterModule(object): + """Return filter plugin""" + + @staticmethod + def filters(): + """Return filter""" + return {'irqbalance_banned_cpu_mask': irqbalance_banned_cpu_mask}