aboutsummaryrefslogtreecommitdiffstats
path: root/fdio.infra.ansible/roles/performance_tuning/filter_plugins/main.py
blob: d76f6fe166fa531269018dade62864fe3cb28504 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
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}