def test_mem_speed_equal_conf_speed(self): util.testcase_append_suggestions( self._testMethodName, "Configure speed should be equal to memory speed") for i in self.mem.dimms: if i.memory_speed != "Unknown": self.assertEqual(i.memory_speed, i.memory_config_speed)
def test_hugepage_valid_on_CPU_NUMA(self): util.testcase_append_suggestions(self._testMethodName, "Create hugepage in this NUMA node") cpu_ids = self.sw.get_cpu_list_by_mask(self.cpu.cpu_core_total_num) cpu = self.cpu.get_single_CPU_conf_by_id(cpu_ids[0]) node = cpu.numa_node path = "/sys/devices/system/node/node" + str(node) + "/hugepages/hugepages-1048576kB/nr_hugepages" nr = int(util.get_cat_command_output(path)) self.assertGreater(nr, 0)
def test_mem_dimm_larger_4GB(self): util.testcase_append_suggestions( self._testMethodName, "It's recommaned to have more than 4GB each dimm slot") for i in self.mem.dimms: if i.memory_size != "No Module Installed": dimm_size = int(i.memory_size[:-2]) self.assertGreaterEqual(dimm_size, 4096)
def test_worker_not_CPU0(self): util.testcase_append_suggestions( self._testMethodName, "Do not assign CPU0 to DPDK worker thread") cpu_ids = self.sw.get_cpu_list_by_mask(self.cpu.cpu_core_total_num) worker_cpu0 = False if 0 in cpu_ids: worker_cpu0 = True self.assertEqual(worker_cpu0, False)
def test_THP_disabled(self): #Actually this feature is not always good to be disabled #It depends on the total memory the system has and other environment parameters #This testcase will be updated after DPDKick has more dynamic detection features util.testcase_append_suggestions( self._testMethodName, "echo never > /sys/kernel/mm/transparent_hugepage/enabled") self.assertEqual(self.hugepage_mem.transparent_hp_enabled, False)
def test_mem_dimm_identical_size(self): util.testcase_append_suggestions( self._testMethodName, "Memory size of each DIMM should be identical") for i in self.mem.dimms: dimm_size = int(self.mem.dimms[0].memory_size[:-2]) if i.memory_size != "No Module Installed": dimm_size_t = int(i.memory_size[:-2]) self.assertGreaterEqual(dimm_size, dimm_size_t)
def test_maskedcpu_excluded_irqaffinity(self): util.testcase_append_suggestions(self._testMethodName, "Add \'irqaffinity\' parameter corresponding to CPU mask to grub") masked_cpus = self.sw.get_cpu_list_by_mask(self.cpu.cpu_core_total_num) excluded = True for i in masked_cpus: if i in self.kernel.irqaffinity : excluded = False break self.assertEqual(excluded, True)
def test_masked_cpu_numa_node(self): util.testcase_append_suggestions( self._testMethodName, "Masked CPU(s) should on the same NUMA node") cpu_ids = self.sw.get_cpu_list_by_mask(self.cpu.cpu_core_total_num) prev_cpu_node = 0 cnt = 0 for cpu_id in cpu_ids: cpu = self.cpu.get_single_CPU_conf_by_id(cpu_id) if cnt == 0: prev_cpu_node = cpu.numa_node cnt = cnt + 1 self.assertEqual(prev_cpu_node, cpu.numa_node)
def test_NIC_LnkCap_speed_8GT(self): util.testcase_append_suggestions( self._testMethodName, "Install NIC in a Width x8 Gen3 PCIe slot") detected = [] result = True for i in range(self.nics.nic_total_num): nic = self.nics.nics_conf[i] if nic.LnkCap != "8GT/s": detected.append(nic.pci_address) result = False if result == False: util.format_print_detected_dev_list(detected) self.assertEqual(result, True)
def test_NIC_devcap_devctl_maxpayload(self): util.testcase_append_suggestions( self._testMethodName, "Set the maxpayload to identical number") detected = [] result = True for i in range(self.nics.nic_total_num): nic = self.nics.nics_conf[i] if nic.pcie_devcap_maxpayloadsize != nic.pcie_devctl_maxpayloadsize: detected.append(nic.pci_address) result = False if result == False: util.format_print_detected_dev_list(detected) self.assertEqual(result, True)
def test_maskedcpu_included_rcu_nocbs(self): util.testcase_append_suggestions(self._testMethodName, "Add \'rcu_nocbs\' parameter corresponding to CPU mask to grub") masked_cpus = self.sw.get_cpu_list_by_mask(self.cpu.cpu_core_total_num) included = True for i in masked_cpus: if i in self.kernel.rcu_nocbs: continue else: included = False break self.assertEqual(included, True)
def test_CPU_sg_is_perf(self): util.testcase_append_suggestions( self._testMethodName, "Set \'performance\' to /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor or use cpupower tool" ) ret = True if self.cpu.scaling_governor == None: #Fail this testcase self.assertEqual(True, False) for l in self.cpu.scaling_governor: if l != 'performance': ret = False break self.assertEqual(ret, True)
def test_mem_channel_identical_size(self): util.testcase_append_suggestions( self._testMethodName, "Memory size of each channel should be identical") for i in range(self.mem.memory_channels_num): channel_size = 0 for j in range(self.mem.memory_DIMM_per_channel): if self.mem.dimms[i * self.mem.memory_DIMM_per_channel + j].memory_size != "No Module Installed": channel_size += int(self.mem.dimms[j].memory_size[:-2]) if i == 0: first_channel_size = channel_size else: self.assertEqual(first_channel_size, channel_size)
def test_NIC_PCIe_target_link_speed(self): util.testcase_append_suggestions( self._testMethodName, "Configure target link speed equal to PCIe speed") detected = [] result = True for i in range(self.nics.nic_total_num): nic = self.nics.nics_conf[i] if nic.pcie_targetlinkspeed == None: continue if nic.pcie_targetlinkspeed != nic.LnkCap: detected.append(nic.pci_address) result = False if result == False: util.format_print_detected_dev_list(detected) self.assertEqual(result, True)
def test_mem_channel_identical_locations(self): util.testcase_append_suggestions( self._testMethodName, "Install memory at identical slot location(s) each channel") for i in range(self.mem.memory_channels_num): locations = [] for j in range(self.mem.memory_DIMM_per_channel): if self.mem.dimms[i * self.mem.memory_DIMM_per_channel + j].memory_size != "No Module Installed": locations.append(1) else: locations.append(0) if i == 0: first_channel_locations = locations else: self.assertEqual(first_channel_locations, locations)
def test_CPU_NIC_same_NUMA(self): util.testcase_append_suggestions( self._testMethodName, "Set CPU mask or PCI whitelist to use CPU cores and NICs which are on the same NUMA node" ) cpu_ids = self.sw.get_cpu_list_by_mask(self.cpu.cpu_core_total_num) numa_node_list = [] for cpu_id in cpu_ids: cpu = self.cpu.get_single_CPU_conf_by_id(cpu_id) numa_node = cpu.numa_node numa_node_list.append(numa_node) for nic in self.nics.nics_conf: numa_node = nic.NUMA_node numa_node_list.append(numa_node) prev_numa_node = numa_node_list[0] for node in numa_node_list: self.assertEqual(prev_numa_node, node) prev_numa_node = node
def test_CPU_DCU_enabled(self): util.testcase_append_suggestions(self._testMethodName, "ENABLE this feature in BIOS") output = util.str_cmd_output('rdmsr 0x1A4') v = int(output, 16) self.assertEqual((v & (1 << 2)), 0)
def test_mem_speed_ddr4(self): util.testcase_append_suggestions(self._testMethodName, "Recommanded to use DDR4 memory") for i in self.mem.dimms: if i.memory_speed != "Unknown": self.assertGreaterEqual(i.memory_speed, 2133)
def test_DCA_enabled(self): util.testcase_append_suggestions(self._testMethodName, "ENABLE this feature in BIOS") self.assertEqual(self.cpu.b_direct_cache_access_enabled, True)
def test_hugepage_size_1G(self): util.testcase_append_suggestions(self._testMethodName, "Set Hugepage Size to 1G") self.assertEqual(self.hugepage_mem.hugepage_mem_size , '1048576 kB')
def test_hyper_thread_disabled(self): util.testcase_append_suggestions(self._testMethodName, "DISABLE this feature in BIOS") self.assertEqual(self.cpu.b_hyperthread_enabled, False)
def test_CPU_C6state_disabled(self): util.testcase_append_suggestions( self._testMethodName, "Add \'intel_idle.max_cstate=0\' to grub") self.assertEqual(self.cpu.b_c6state_disabled, True)
def test_intel_pstate_disabled(self): util.testcase_append_suggestions(self._testMethodName, "DISABLE this feature in BIOS") self.assertEqual(self.cpu.b_pstate_disabled, True)