Beispiel #1
0
    def configure_ovs_dpdk(self):
        """Configure DPDK specific bits in Open vSwitch.

        :returns: Whether something changed
        :rtype: bool
        """
        something_changed = False
        dpdk_context = os_context.OVSDPDKDeviceContext(
            bridges_key=self.bridges_key)
        opvs = ch_ovsdb.SimpleOVSDB('ovs-vsctl').open_vswitch
        other_config_fmt = 'other_config:{}'
        for row in opvs:
            for k, v in (
                ('dpdk-lcore-mask', dpdk_context.cpu_mask()),
                ('dpdk-socket-mem', dpdk_context.socket_memory()),
                ('dpdk-init', 'true'),
                ('dpdk-extra', dpdk_context.pci_whitelist()),
            ):
                if row.get(other_config_fmt.format(k)) != v:
                    something_changed = True
                    if v:
                        opvs.set('.', other_config_fmt.format(k), v)
                    else:
                        opvs.remove('.', 'other_config', k)
        return something_changed
Beispiel #2
0
    def ovs_dpdk_cpu_overlap_check(self):
        """Check for overlap between dpdk-lcore-mask and pmd-cpu-mask.

        :returns: True if an overlap is detected
        :rtype: bool
        """
        overlap_detected = False
        dpdk_context = os_context.OVSDPDKDeviceContext(
            bridges_key=self.bridges_key)
        if (int(dpdk_context.pmd_cpu_mask(), 16)
                & int(dpdk_context.cpu_mask(), 16)):
            overlap_detected = True
        return overlap_detected