daisycloud-core/code/daisy/daisy/tests/common/test_vcpu_pin.py

262 lines
13 KiB
Python

# Copyright 2012 OpenStack Foundation.
# All Rights Reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License"); you may
# not use this file except in compliance with the License. You may obtain
# a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.
from daisy import test
from daisy.common import vcpu_pin
class TestVcpuPin(test.TestCase):
def test_pci_get_cpu_sets(self):
numa_node0 = range(0, 6) + range(12, 18)
numa_node1 = range(6, 12) + range(18, 24)
numa_cpus = {'numa_node0': numa_node0,
'numa_node1': numa_node1}
device_numa_node = {'0000:7f:0f.1': 1}
clc_pci_list = ["7f:0f.1"]
(status, pci_cpusets) = vcpu_pin.pci_get_cpu_sets(numa_cpus,
device_numa_node,
clc_pci_list)
self.assertEqual(status['rc'], 0)
self.assertEqual(set(pci_cpusets['high']), set(numa_node1))
numa_cpus = {}
(status, pci_cpusets) = vcpu_pin.pci_get_cpu_sets(numa_cpus,
device_numa_node,
clc_pci_list)
self.assertEqual(status['rc'], 4)
self.assertEqual(set(pci_cpusets['high']), set([-4]))
numa_cpus = {'numa_node0': '',
'numa_node1': ''}
(status, pci_cpusets) = vcpu_pin.pci_get_cpu_sets(numa_cpus,
device_numa_node,
clc_pci_list)
self.assertEqual(status['rc'], 4)
self.assertEqual(set(pci_cpusets['high']), set([-4]))
numa_cpus = {'numa_node0': numa_node0,
'numa_node1': numa_node1}
device_numa_node = {'0000:7f:0f.1': -1}
(status, pci_cpusets) = vcpu_pin.pci_get_cpu_sets(numa_cpus,
device_numa_node,
clc_pci_list)
self.assertEqual(status['rc'], 1)
self.assertEqual(set(pci_cpusets['high']), set([-1]))
device_numa_node = {'0000:7f:0f.1': 2}
(status, pci_cpusets) = vcpu_pin.pci_get_cpu_sets(numa_cpus,
device_numa_node,
clc_pci_list)
self.assertEqual(status['rc'], 5)
self.assertEqual(set(pci_cpusets['high']), set([-5]))
def test_dvs_get_cpu_sets(self):
numa_node0 = range(0, 6) + range(12, 18)
numa_node1 = range(6, 12) + range(18, 24)
numa_cpus = {'numa_node0': numa_node0,
'numa_node1': numa_node1}
nics_info = [{'name': 'eth0', 'bus': '0000:7f:0f.2'}]
device_numa_node = {'0000:7f:0f.2': 0}
(status, dvs_cpusets) = vcpu_pin.dvs_get_cpu_sets(numa_cpus,
nics_info,
device_numa_node)
self.assertEqual(status['rc'], 0)
expect_dvs_high = numa_node0
self.assertEqual(dvs_cpusets['dvs']['dvsp'], [14, 15])
self.assertEqual(dvs_cpusets['dvs']['dvsv'], [2, 3])
self.assertEqual(dvs_cpusets['dvs']['dvsc'], [1, 13])
self.assertEqual(set(dvs_cpusets['high']),
(set(numa_node0) - set(dvs_cpusets['dvs']['dvsp']) -
set(dvs_cpusets['dvs']['dvsv']) -
set(dvs_cpusets['dvs']['dvsc'])))
numa_cpus = {}
(status, dvs_cpusets) = vcpu_pin.dvs_get_cpu_sets(numa_cpus,
nics_info,
device_numa_node)
self.assertEqual(status['rc'], 4)
self.assertEqual(set(dvs_cpusets['high']), set([-4]))
self.assertEqual(dvs_cpusets['dvs']['dvsc'], [-4])
self.assertEqual(dvs_cpusets['dvs']['dvsp'], [-4])
self.assertEqual(dvs_cpusets['dvs']['dvsv'], [-4])
numa_cpus = {'numa_node0': '',
'numa_node1': ''}
(status, dvs_cpusets) = vcpu_pin.dvs_get_cpu_sets(numa_cpus,
nics_info,
device_numa_node)
self.assertEqual(status['rc'], 4)
self.assertEqual(set(dvs_cpusets['high']), set([-4]))
self.assertEqual(set(dvs_cpusets['dvs']['dvsp']), set([-4]))
self.assertEqual(set(dvs_cpusets['dvs']['dvsv']), set([-4]))
self.assertEqual(set(dvs_cpusets['dvs']['dvsc']), set([-4]))
numa_cpus = {'numa_node0': numa_node0,
'numa_node1': numa_node1}
device_numa_node = {'0000:7f:0f.2': -1}
(status, dvs_cpusets) = vcpu_pin.dvs_get_cpu_sets(numa_cpus,
nics_info,
device_numa_node)
self.assertEqual(status['rc'], 1)
self.assertEqual(set(dvs_cpusets['high']), set([-1]))
self.assertEqual(set(dvs_cpusets['dvs']['dvsp']), set([-1]))
self.assertEqual(set(dvs_cpusets['dvs']['dvsc']), set([-1]))
self.assertEqual(set(dvs_cpusets['dvs']['dvsv']), set([-1]))
device_numa_node = {'0000:7f:0f.2': 0, '0000:7f:0f.3': 1}
nics_info = [{'name': 'eth0', 'bus': '0000:7f:0f.2'},
{'name': 'eth1', 'bus': '0000:7f:0f.3'}]
(status, dvs_cpusets) = vcpu_pin.dvs_get_cpu_sets(numa_cpus,
nics_info,
device_numa_node)
self.assertEqual(status['rc'], 2)
self.assertEqual(set(dvs_cpusets['high']), set([-2]))
self.assertEqual(set(dvs_cpusets['dvs']['dvsp']), set([-2]))
self.assertEqual(set(dvs_cpusets['dvs']['dvsv']), set([-2]))
self.assertEqual(set(dvs_cpusets['dvs']['dvsc']), set([-2]))
nics_info = [{'name': 'eth0', 'bus': '0000:7f:0f.2'}]
device_numa_node = {'0000:7f:0f.3': 0}
(status, dvs_cpusets) = vcpu_pin.dvs_get_cpu_sets(numa_cpus,
nics_info,
device_numa_node)
self.assertEqual(status['rc'], 3)
self.assertEqual(set(dvs_cpusets['high']), set([-3]))
self.assertEqual(set(dvs_cpusets['dvs']['dvsp']), set([-3]))
self.assertEqual(set(dvs_cpusets['dvs']['dvsc']), set([-3]))
self.assertEqual(set(dvs_cpusets['dvs']['dvsv']), set([-3]))
nics_info = [{'name': 'eth0', 'bus': '0000:7f:0f.2'}]
device_numa_node = {'0000:7f:0f.2': 2}
(status, dvs_cpusets) = vcpu_pin.dvs_get_cpu_sets(numa_cpus,
nics_info,
device_numa_node)
self.assertEqual(status['rc'], 5)
self.assertEqual(set(dvs_cpusets['high']), set([-5]))
self.assertEqual(set(dvs_cpusets['dvs']['dvsc']), set([-5]))
self.assertEqual(set(dvs_cpusets['dvs']['dvsp']), set([-5]))
self.assertEqual(set(dvs_cpusets['dvs']['dvsv']), set([-5]))
numa_node0 = range(0, 4)
numa_node1 = range(6, 10)
numa_cpus = {'numa_node0': numa_node0,
'numa_node1': numa_node1}
nics_info = [{'name': 'eth0', 'bus': '0000:7f:0f.2'}]
device_numa_node = {'0000:7f:0f.2': 0}
(status, dvs_cpusets) = vcpu_pin.dvs_get_cpu_sets(numa_cpus,
nics_info,
device_numa_node, 4)
print dvs_cpusets
self.assertEqual(status['rc'], 6)
self.assertEqual(set(dvs_cpusets['high']), set([-6]))
self.assertEqual(set(dvs_cpusets['dvs']['dvsc']), set([-6]))
self.assertEqual(set(dvs_cpusets['dvs']['dvsp']), set([-6]))
self.assertEqual(set(dvs_cpusets['dvs']['dvsv']), set([-6]))
def test_allocate_os_cpus(self):
numa_node0 = range(0, 6) + range(12, 18)
numa_node1 = range(6, 12) + range(18, 24)
# pci_cpusets = {'high': numa_node0 + numa_node1, 'low': []}
# dvs_cpusets = {'high': numa_node0 + numa_node1, 'low': [],
# 'dvs': [20, 21, 22, 23]}
# roles_name = ['COMPUTER']
# os_cpus = vcpu_pin.allocate_os_cpus(roles_name,
# pci_cpusets, dvs_cpusets)
# self.assertEqual(set(os_cpus), set([0, 1]))
dvs_high = list(set(numa_node0) - set([13, 14, 15, 16, 17, 12]))
pci_cpusets = {'high': numa_node0, 'low': numa_node1}
dvs_cpusets = {'high': dvs_high, 'low': numa_node1,
'dvs': {'dvsc': [12, 13], 'dvsp': [14, 15],
'dvsv': [16, 17]}}
roles_name = ['CONTROLLER_LB', 'CONTROLLER_HA']
os_cpus = vcpu_pin.allocate_os_cpus(roles_name,
pci_cpusets, dvs_cpusets)
self.assertEqual(set(os_cpus), set([]))
roles_name = []
os_cpus = vcpu_pin.allocate_os_cpus(roles_name,
pci_cpusets, dvs_cpusets)
self.assertEqual(set(os_cpus), set([]))
roles_name = []
os_cpus = vcpu_pin.allocate_os_cpus(roles_name,
pci_cpusets, dvs_cpusets)
self.assertEqual(set(os_cpus), set([]))
roles_name = ['COMPUTER']
os_cpus = vcpu_pin.allocate_os_cpus(roles_name,
pci_cpusets, dvs_cpusets)
self.assertEqual(set(os_cpus), set([0, 12]))
roles_name = ['COMPUTER', 'CONTROLLER_HA']
os_cpus = vcpu_pin.allocate_os_cpus(roles_name,
pci_cpusets, dvs_cpusets)
self.assertEqual(set(os_cpus), set([0, 12, 18, 6]))
roles_name = ['COMPUTER', 'CONTROLLER_LB']
os_cpus = vcpu_pin.allocate_os_cpus(roles_name,
pci_cpusets, dvs_cpusets)
self.assertEqual(set(os_cpus), set([0, 12, 18, 6]))
roles_name = ['COMPUTER', 'CONTROLLER_LB', 'CONTROLLER_HA']
os_cpus = vcpu_pin.allocate_os_cpus(roles_name,
pci_cpusets, dvs_cpusets)
self.assertEqual(set(os_cpus), set([0, 12, 18, 6]))
pci_cpusets = {}
dvs_high = list(set(numa_node1) - set([18, 19, 20, 21, 22, 23]))
dvs_cpusets = {'high': numa_node1, 'low': numa_node0,
'dvs': {'dvsc': [20, 21], 'dvsp': [22, 23],
'dvsv': [18, 19]}}
roles_name = ['COMPUTER']
os_cpus = vcpu_pin.allocate_os_cpus(roles_name,
pci_cpusets, dvs_cpusets)
self.assertEqual(set(os_cpus), set([0, 18]))
pci_cpusets = {'high': numa_node0, 'low': numa_node1}
dvs_cpusets = {}
roles_name = ['COMPUTER', 'CONTROLLER_LB', 'CONTROLLER_HA']
os_cpus = vcpu_pin.allocate_os_cpus(roles_name,
pci_cpusets, dvs_cpusets)
self.assertEqual(set(os_cpus), set([0, 6, 12, 18]))
pci_cpusets = {'high': [-4], 'low': [-4]}
dvs_cpusets = {'high': numa_node0, 'low': numa_node1,
'dvs': [14, 15, 16, 17]}
roles_name = ['COMPUTER']
os_cpus = vcpu_pin.allocate_os_cpus(roles_name,
pci_cpusets, dvs_cpusets)
self.assertEqual(set(os_cpus), set([]))
pci_cpusets = {'high': numa_node0, 'low': numa_node1}
dvs_cpusets = {'high': [-2], 'low': [-2],
'dvs': [-2]}
roles_name = ['COMPUTER']
os_cpus = vcpu_pin.allocate_os_cpus(roles_name,
pci_cpusets, dvs_cpusets)
self.assertEqual(set(os_cpus), set([]))
pci_cpusets = {'high': [-4], 'low': [-4]}
dvs_cpusets = {'high': [-2], 'low': [-2],
'dvs': [-2]}
roles_name = ['COMPUTER']
os_cpus = vcpu_pin.allocate_os_cpus(roles_name,
pci_cpusets, dvs_cpusets)
self.assertEqual(set(os_cpus), set([]))