diff --git a/netutils_linux_hardware/net.py b/netutils_linux_hardware/net.py index bbb1f9b..3fbdc60 100644 --- a/netutils_linux_hardware/net.py +++ b/netutils_linux_hardware/net.py @@ -1,11 +1,8 @@ # coding=utf-8 -import os -from six import iteritems, print_ from netutils_linux_hardware.grade import Grade -from netutils_linux_hardware.interrupts import IRQQueueCounter -from netutils_linux_hardware.parser import Parser, YAMLLike +from netutils_linux_hardware.net_read import ReaderNet from netutils_linux_hardware.rate_math import extract from netutils_linux_hardware.subsystem import Subsystem @@ -17,15 +14,16 @@ def parse(self): return ReaderNet(self.datadir, self.path).netdevs def rate(self): - return self.map(self.__netdev, 'net') + return self.map(self.rate_device, 'net') - def __netdev(self, netdev): + def rate_device(self, netdev): netdevinfo = extract(self.data, ['net', netdev]) - queues = sum( - len(extract(netdevinfo, ['queues', x])) for x in ('rx', 'rxtx')) + queues = sum(len(extract(netdevinfo, ['queues', x])) for x in ('rx', 'rxtx')) + queues_ethtool = self.rate_queue_ethtool(netdevinfo) buffers = netdevinfo.get('buffers') or {} return self.folding.fold({ 'queues': Grade.int(queues, 2, 8), + 'queues_ethtool': Grade.int(queues_ethtool, 2, 8), 'driver': { 'mlx5_core': 10, # 7500 mbit/s 'mlx4_en': 9, # 6500 mbit/s @@ -43,123 +41,21 @@ def __netdev(self, netdev): }, self.folding.DEVICE) }, self.folding.DEVICE) - -class ReductorMirror(Parser): - @staticmethod - def parse(text): - lines = dict((line.split(' ', 1)) for line in text.strip().split('\n')) - for netdev, conf in iteritems(lines): - output = dict() - output['conf'] = dict() - output['conf']['vlan'], output['conf']['ip'] = conf.split() - output['conf']['vlan'] = output['conf']['vlan'] != '-' - if output['conf']['ip'] == '-': - output['conf']['ip'] = '' - lines[netdev] = output - return lines - - -class NetdevParser(Parser): - @staticmethod - def parse(netdev_keys): - """ - :param netdev_keys: list of device names - :return: dict[device_name] = {'vlan': bool; 'ip': ''} - """ - netdevs = dict() - for key in netdev_keys: - if key.count('.') == 1: - dev, _ = key.split('.') - elif key.count('.') == 0: - dev = key - else: - print_('QinQ not supported yet. Device: {0}'.format(key)) - raise NotImplementedError - netdevs[dev] = dict() - netdevs[dev]['conf'] = { - 'vlan': key.count('.') == 1, - 'ip': '', - } - return netdevs - - -class BridgeOutput(NetdevParser): - @staticmethod - def parse(text): - """ # 0 - id, 1 - dev, 2 - _, 3 - state, 4 - _, 5 - details, 6 - _, 7 - mtu, 8 - _, 9 - master - :param text: # 3: eth1 state DOWN : mtu 1500 master br1 state disabled - :return: analyzed netdevs - """ - __dev__ = 1 - netdevs_keys = [line.split()[__dev__] for line in text.strip().split('\n')] - return NetdevParser.parse(netdevs_keys) - - -class EthtoolFiles(NetdevParser): - def parse_file(self, filepath, **kwargs): - return self.parse(os.listdir(filepath)) - - -class EthtoolBuffers(Parser): - @staticmethod - def parse(text): - buffers = [int(line.split()[1]) - for line in text.strip().split('\n') - if line.startswith('RX:')] - if buffers and len(buffers) == 2: - return { - 'max': buffers[0], - 'cur': buffers[1], - } - - -class ReaderNet(object): - netdevs = None - - def __init__(self, datadir, path): - self.datadir = datadir - self.path = path - self.net_dev_list() - - def net_dev_mirror_info(self): - return ReductorMirror().parse_file_safe(self.path('mirror_info.conf')) - - def net_dev_list_bridge(self): - return BridgeOutput().parse_file_safe(self.path('bridge_link')) - - def net_dev_list_ethtool(self): - return EthtoolFiles().parse_file(self.path('ethtool/i')) - - def net_dev_list_buffers(self): - for netdev in self.netdevs: - buffers_path = os.path.join(self.datadir, 'ethtool/g', netdev) - self.netdevs[netdev]['buffers'] = EthtoolBuffers().parse_file_safe(buffers_path) - - def net_dev_list_drivers(self): - keys_required = ( - 'driver', - 'version', - ) - for netdev in self.netdevs: - driverfile = os.path.join(self.datadir, 'ethtool/i', netdev) - driverdata = YAMLLike().parse_file_safe(driverfile) - if driverdata: - driverdata = dict((key, v) for key, v in iteritems(driverdata) if key in keys_required) - else: - driverdata = dict() - self.netdevs[netdev]['driver'] = driverdata - - def net_dev_list(self): - """ - Priority: - 1. mirror_info.conf (collected only in case of reductor (master conf)) - 2. bridges output (collected only in case of reductor (manual conf)) - 3. ethtool information (non reductor case) - """ - self.netdevs = self.net_dev_mirror_info() or self.net_dev_list_bridge() or self.net_dev_list_ethtool() - if not self.netdevs: - return - self.net_dev_list_buffers() - self.net_dev_list_drivers() - interrupts = self.path('interrupts') - IRQQueueCounter().parse_file_safe(interrupts, netdevs=self.netdevs) + def rate_queue_ethtool(self, netdevinfo): + # TODO: numa belonging + # import json + # print(json.dumps(netdevinfo, indent=2)) + # exit(0) + queues_ethtool = netdevinfo['queues_ethtool'] + queues_type = 'rx' + if not queues_ethtool: + return 1 + if len(queues_ethtool.keys()) == 1: + queues_type = list(queues_ethtool.keys())[0] + cpu_count = len(self.data.get('cpu').get('layout')) + # print(json.dumps(queues_ethtool, indent=2)) + # print(json.dumps(self.data.get('cpu').get('layout'), indent=4)) + queues_count = 0 + if queues_type == 'combined' or queues_type == 'rx': + queues_count = queues_ethtool.get(queues_type).get('cur') + return int(queues_count / cpu_count * 10) diff --git a/netutils_linux_hardware/net_read.py b/netutils_linux_hardware/net_read.py new file mode 100644 index 0000000..b3f4128 --- /dev/null +++ b/netutils_linux_hardware/net_read.py @@ -0,0 +1,154 @@ +# coding=utf-8 +import os + +from six import iteritems, print_ + +from netutils_linux_hardware.interrupts import IRQQueueCounter +from netutils_linux_hardware.parser import Parser, YAMLLike + + +class ReaderNet(object): + """ Reading data about network from multiple sources and merging them for every network device """ + netdevs = None + + def __init__(self, datadir, path): + self.datadir = datadir + self.path = path + self.net_dev_list() + + def max_cur_parse(self, ethtool_key, parser, output_key): + for netdev in self.netdevs: + file_path = os.path.join(self.datadir, 'ethtool/{0}'.format(ethtool_key), netdev) + self.netdevs[netdev][output_key] = parser().parse_file_safe(file_path) + + def net_dev_list_queues(self): + self.max_cur_parse('l', EthtoolQueues, 'queues_ethtool') + IRQQueueCounter().parse_file_safe(self.path('interrupts'), netdevs=self.netdevs) + + def net_dev_list_buffers(self): + self.max_cur_parse('g', EthtoolBuffers, 'buffers') + + def net_dev_list_drivers(self): + keys_required = ( + 'driver', + 'version', + ) + for netdev in self.netdevs: + driver_file = os.path.join(self.datadir, 'ethtool/i', netdev) + driver_data = YAMLLike().parse_file_safe(driver_file) or dict() + if driver_data: + driver_data = dict((key, v) for key, v in iteritems(driver_data) if key in keys_required) + self.netdevs[netdev]['driver'] = driver_data + + def net_dev_list_numa(self): + for netdev in self.netdevs: + numa_file = os.path.join(self.datadir, 'sys/class/net/', netdev, 'device/numa_node') + self.netdevs[netdev]['numa_node'] = int(open(numa_file).read()) if os.path.exists(numa_file) else -1 + + def net_dev_list(self): + """ + Priority: + 1. mirror_info.conf (collected only in case of reductor (master conf)) + 2. bridges output (collected only in case of reductor (manual conf)) + 3. ethtool information (non reductor case) + """ + self.netdevs = ReductorMirror().parse_file_safe(self.path('mirror_info.conf')) + if not self.netdevs: + self.netdevs = BridgeOutput().parse_file_safe(self.path('bridge_link')) + if not self.netdevs: + self.netdevs = EthtoolFiles().parse_file(self.path('ethtool/i')) + if self.netdevs: + self.net_dev_list_buffers() + self.net_dev_list_drivers() + self.net_dev_list_queues() + self.net_dev_list_numa() + + +class NetdevClassificator(Parser): + @staticmethod + def parse(netdev_keys): + """ + :param netdev_keys: list of device names + :return: dict[device_name] = {'vlan': bool; 'ip': ''} + """ + netdevs = dict() + for key in netdev_keys: + if key.count('.') == 1: + dev, _ = key.split('.') + elif key.count('.') == 0: + dev = key + else: + print_('QinQ not supported yet. Device: {0}'.format(key)) + raise NotImplementedError + netdevs[dev] = dict() + netdevs[dev]['conf'] = { + 'vlan': key.count('.') == 1, + 'ip': '', + } + return netdevs + + +class ReductorMirror(Parser): + @staticmethod + def parse(text): + lines = dict((line.split(' ', 1)) for line in text.strip().split('\n')) + for netdev, conf in iteritems(lines): + output = dict() + output['conf'] = dict() + output['conf']['vlan'], output['conf']['ip'] = conf.split() + output['conf']['vlan'] = output['conf']['vlan'] != '-' + if output['conf']['ip'] == '-': + output['conf']['ip'] = '' + lines[netdev] = output + return lines + + +class BridgeOutput(NetdevClassificator): + @staticmethod + def parse(text): + """ # 0 - id, 1 - dev, 2 - _, 3 - state, 4 - _, 5 - details, 6 - _, 7 - mtu, 8 - _, 9 - master + :param text: # 3: eth1 state DOWN : mtu 1500 master br1 state disabled + :return: analyzed netdevs + """ + __dev__ = 1 + netdevs_keys = [line.split()[__dev__] for line in text.strip().split('\n')] + return NetdevClassificator.parse(netdevs_keys) + + +class EthtoolFiles(NetdevClassificator): + def parse_file(self, filepath, **kwargs): + return self.parse(os.listdir(filepath)) + + +class EthtoolBuffers(Parser): + @staticmethod + def parse(text): + buffers = [int(line.split()[1]) + for line in text.strip().split('\n') + if line.startswith('RX:')] + if buffers and len(buffers) == 2: + return { + 'max': buffers[0], + 'cur': buffers[1], + } + + +class EthtoolQueues(Parser): + @staticmethod + def parse(text): + __queues = [int(line.split()[1]) for line in text.split('\n') if line.split()[1].isdigit()] + if len(__queues) != 8: + return + queues = { + 'rx': { + 'max': __queues[0], + 'cur': __queues[4], + }, + 'combined': { + 'max': __queues[3], + 'cur': __queues[7], + }, + } + if queues['rx']['max'] == 0 and queues['combined']['max'] != 0: + del queues['rx'] + return queues diff --git a/netutils_linux_hardware/server.py b/netutils_linux_hardware/server.py index dbd28de..5fefff1 100644 --- a/netutils_linux_hardware/server.py +++ b/netutils_linux_hardware/server.py @@ -54,11 +54,10 @@ def collect(self): def read(self): """ Parser of raw saved data info dictionary """ - info = dict() - for key, subsystem in self.subsystems.items(): - if key != 'system' and getattr(self.args, key): - info[key] = subsystem(datadir=self.directory).parse() - if not self.args.cpu and self.args.system: + info = self.__read() + # system requires cpu because virtualization data is in lscpu output + # net requires cpu because queue count rate depends on NUMA's core count + if self.args.rate and not self.args.cpu and (self.args.system or self.args.net): info['cpu'] = CPU(datadir=self.directory).parse() return info @@ -79,6 +78,13 @@ def archive(self): os.chdir(os.path.join(self.directory, '..')) os.system('tar cfz {0} {1} 2>/dev/null'.format(self.tarball, self.directory)) + def __read(self): + return dict( + (key, subsystem(datadir=self.directory).parse()) + for key, subsystem in self.subsystems.items() + if key != 'system' and getattr(self.args, key) + ) + def __parse_args(self): default_directory = '/tmp/netutils_server_info/' self.parser.add_argument('--directory', type=str, help="Specify a data directory or a tarball", diff --git a/tests/server-info-show b/tests/server-info-show index 5f00d0a..290683b 100755 --- a/tests/server-info-show +++ b/tests/server-info-show @@ -12,13 +12,13 @@ run_test() { echo -n "# $name " server-info --show --directory="$1" > $TMPDIR/output if [ "${REWRITE:-0}" = '1' ]; then - server-info --show --directory="$1" > "$testdata/$name/expected_output" + server-info --show --directory="$1" > "$testdata/$name/expected_output.yml" fi - cmp -s $1/expected_output $TMPDIR/output || rc=$? + cmp -s $1/expected_output.yml $TMPDIR/output || rc=$? if [ "$rc" = '0' ]; then echo OK else - diff -U 5 "$testdata/$name/expected_output" "$TMPDIR/output" + diff -U 5 "$testdata/$name/expected_output.yml" "$TMPDIR/output" echo FAIL fi return "$rc" @@ -28,12 +28,11 @@ run_test() { retval=0 # shellcheck disable=SC2044 for test in $(find "$testdata" -mindepth 1 -maxdepth 1 -type d); do - if [ -f "$test/expected_output" ]; then - if ! run_test "$test"; then - retval=1 - break - fi - fi + [ -f "$test/expected_output.yml" ] || continue + run_test "$test" && continue + [ "${REWRITE:-0}" = '1' ] && continue + retval=1 + break done rm -rf $TMPDIR exit "$retval" diff --git a/tests/server-info-show.tests/1xE3-1271.I217_and_X710.L2_mixed.masterconf/expected_output b/tests/server-info-show.tests/1xE3-1271.I217_and_X710.L2_mixed.masterconf/expected_output.yml similarity index 96% rename from tests/server-info-show.tests/1xE3-1271.I217_and_X710.L2_mixed.masterconf/expected_output rename to tests/server-info-show.tests/1xE3-1271.I217_and_X710.L2_mixed.masterconf/expected_output.yml index 7a1c323..0328b7f 100644 --- a/tests/server-info-show.tests/1xE3-1271.I217_and_X710.L2_mixed.masterconf/expected_output +++ b/tests/server-info-show.tests/1xE3-1271.I217_and_X710.L2_mixed.masterconf/expected_output.yml @@ -50,6 +50,7 @@ net: driver: driver: i40e version: 1.5.10-k + numa_node: -1 queues: own: [] rx: [] @@ -61,3 +62,4 @@ net: - i40e-eth0-TxRx-1 - i40e-eth0-TxRx-2 - i40e-eth0-TxRx-3 + queues_ethtool: null diff --git a/tests/server-info-show.tests/1xE31240.2x82576.L2.manual/expected_output b/tests/server-info-show.tests/1xE31240.2x82576.L2.manual/expected_output.yml similarity index 94% rename from tests/server-info-show.tests/1xE31240.2x82576.L2.manual/expected_output rename to tests/server-info-show.tests/1xE31240.2x82576.L2.manual/expected_output.yml index a7d702b..49b374a 100644 --- a/tests/server-info-show.tests/1xE31240.2x82576.L2.manual/expected_output +++ b/tests/server-info-show.tests/1xE31240.2x82576.L2.manual/expected_output.yml @@ -45,6 +45,7 @@ net: driver: driver: igb version: 5.3.0-k + numa_node: -1 queues: own: - eth0 @@ -61,6 +62,7 @@ net: shared: [] tx: [] unknown: [] + queues_ethtool: null eth1: buffers: cur: 2048 @@ -71,6 +73,7 @@ net: driver: driver: igb version: 5.3.0-k + numa_node: -1 queues: own: - eth1 @@ -87,3 +90,4 @@ net: shared: [] tx: [] unknown: [] + queues_ethtool: null diff --git a/tests/server-info-show.tests/1xE5200.82571EB_and_AR8121.L2.manual/expected_output b/tests/server-info-show.tests/1xE5200.82571EB_and_AR8121.L2.manual/expected_output.yml similarity index 92% rename from tests/server-info-show.tests/1xE5200.82571EB_and_AR8121.L2.manual/expected_output rename to tests/server-info-show.tests/1xE5200.82571EB_and_AR8121.L2.manual/expected_output.yml index f6f22fb..8ff7e8a 100644 --- a/tests/server-info-show.tests/1xE5200.82571EB_and_AR8121.L2.manual/expected_output +++ b/tests/server-info-show.tests/1xE5200.82571EB_and_AR8121.L2.manual/expected_output.yml @@ -38,6 +38,7 @@ net: driver: driver: e1000e version: 3.2.6-k + numa_node: -1 queues: own: - eth1 @@ -46,6 +47,7 @@ net: shared: [] tx: [] unknown: [] + queues_ethtool: null eth2: buffers: null conf: @@ -54,6 +56,7 @@ net: driver: driver: ATL1E version: 1.0.0.7-NAPI + numa_node: -1 queues: own: - eth2 @@ -62,3 +65,4 @@ net: shared: [] tx: [] unknown: [] + queues_ethtool: null diff --git a/tests/server-info-show.tests/1xi3.I211_I219V.L2_manual/expected_output b/tests/server-info-show.tests/1xi3.I211_I219V.L2_manual/expected_output.yml similarity index 91% rename from tests/server-info-show.tests/1xi3.I211_I219V.L2_manual/expected_output rename to tests/server-info-show.tests/1xi3.I211_I219V.L2_manual/expected_output.yml index 1f32e8f..ce27866 100644 --- a/tests/server-info-show.tests/1xi3.I211_I219V.L2_manual/expected_output +++ b/tests/server-info-show.tests/1xi3.I211_I219V.L2_manual/expected_output.yml @@ -52,6 +52,7 @@ net: driver: driver: bridge version: 2.3 + numa_node: -1 queues: own: [] rx: [] @@ -59,6 +60,7 @@ net: shared: [] tx: [] unknown: [] + queues_ethtool: null eth0: buffers: cur: 256 @@ -69,6 +71,7 @@ net: driver: driver: igb version: 5.3.0-k + numa_node: -1 queues: own: - eth0 @@ -81,6 +84,7 @@ net: - eth0-tx-0 - eth0-tx-1 unknown: [] + queues_ethtool: null eth1: buffers: cur: 4096 @@ -91,6 +95,7 @@ net: driver: driver: e1000e version: 3.2.6-k + numa_node: -1 queues: own: - eth1 @@ -99,6 +104,7 @@ net: shared: [] tx: [] unknown: [] + queues_ethtool: null wlan0: buffers: cur: 0 @@ -109,6 +115,7 @@ net: driver: driver: iwlwifi version: 2.6.32-642.el6.x86_64 + numa_node: -1 queues: own: [] rx: [] @@ -116,3 +123,4 @@ net: shared: [] tx: [] unknown: [] + queues_ethtool: null diff --git a/tests/server-info-show.tests/1xi3.single_i350.l2_mixed.manual/expected_output b/tests/server-info-show.tests/1xi3.single_i350.l2_mixed.manual/expected_output.yml similarity index 95% rename from tests/server-info-show.tests/1xi3.single_i350.l2_mixed.manual/expected_output rename to tests/server-info-show.tests/1xi3.single_i350.l2_mixed.manual/expected_output.yml index e1c5bc5..f0d035f 100644 --- a/tests/server-info-show.tests/1xi3.single_i350.l2_mixed.manual/expected_output +++ b/tests/server-info-show.tests/1xi3.single_i350.l2_mixed.manual/expected_output.yml @@ -42,6 +42,7 @@ net: driver: driver: igb version: 5.3.5.4 + numa_node: -1 queues: own: - eth6 @@ -54,3 +55,4 @@ net: shared: [] tx: [] unknown: [] + queues_ethtool: null diff --git a/tests/server-info-show.tests/1xi5.single_i350.l2_vlan_master/cpuinfo b/tests/server-info-show.tests/1xi5.single_i350.l2_vlan_master/cpuinfo new file mode 100644 index 0000000..acf83df --- /dev/null +++ b/tests/server-info-show.tests/1xi5.single_i350.l2_vlan_master/cpuinfo @@ -0,0 +1,104 @@ +processor : 0 +vendor_id : GenuineIntel +cpu family : 6 +model : 60 +model name : Intel(R) Core(TM) i5-4440 CPU @ 3.10GHz +stepping : 3 +microcode : 18 +cpu MHz : 3092.746 +cache size : 6144 KB +physical id : 0 +siblings : 4 +core id : 0 +cpu cores : 4 +apicid : 0 +initial apicid : 0 +fpu : yes +fpu_exception : yes +cpuid level : 13 +wp : yes +flags : fpu vme de pse tsc msr pae mce cx8 apic mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall pdpe1gb rdtscp lm constant_tsc arch_perfmon pebs bts rep_good xtopology nonstop_tsc aperfmperf pni pclmulqdq dtes64 monitor ds_cpl vmx est tm2 ssse3 fma cx16 xtpr pdcm pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand lahf_lm abm ida arat epb xsaveopt pln pts dtherm tpr_shadow vnmi flexpriority ept vpid fsgsbase bmi1 avx2 smep bmi2 erms invpcid +bogomips : 6185.49 +clflush size : 64 +cache_alignment : 64 +address sizes : 39 bits physical, 48 bits virtual +power management: + +processor : 1 +vendor_id : GenuineIntel +cpu family : 6 +model : 60 +model name : Intel(R) Core(TM) i5-4440 CPU @ 3.10GHz +stepping : 3 +microcode : 18 +cpu MHz : 3092.746 +cache size : 6144 KB +physical id : 0 +siblings : 4 +core id : 1 +cpu cores : 4 +apicid : 2 +initial apicid : 2 +fpu : yes +fpu_exception : yes +cpuid level : 13 +wp : yes +flags : fpu vme de pse tsc msr pae mce cx8 apic mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall pdpe1gb rdtscp lm constant_tsc arch_perfmon pebs bts rep_good xtopology nonstop_tsc aperfmperf pni pclmulqdq dtes64 monitor ds_cpl vmx est tm2 ssse3 fma cx16 xtpr pdcm pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand lahf_lm abm ida arat epb xsaveopt pln pts dtherm tpr_shadow vnmi flexpriority ept vpid fsgsbase bmi1 avx2 smep bmi2 erms invpcid +bogomips : 6185.49 +clflush size : 64 +cache_alignment : 64 +address sizes : 39 bits physical, 48 bits virtual +power management: + +processor : 2 +vendor_id : GenuineIntel +cpu family : 6 +model : 60 +model name : Intel(R) Core(TM) i5-4440 CPU @ 3.10GHz +stepping : 3 +microcode : 18 +cpu MHz : 3092.746 +cache size : 6144 KB +physical id : 0 +siblings : 4 +core id : 2 +cpu cores : 4 +apicid : 4 +initial apicid : 4 +fpu : yes +fpu_exception : yes +cpuid level : 13 +wp : yes +flags : fpu vme de pse tsc msr pae mce cx8 apic mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall pdpe1gb rdtscp lm constant_tsc arch_perfmon pebs bts rep_good xtopology nonstop_tsc aperfmperf pni pclmulqdq dtes64 monitor ds_cpl vmx est tm2 ssse3 fma cx16 xtpr pdcm pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand lahf_lm abm ida arat epb xsaveopt pln pts dtherm tpr_shadow vnmi flexpriority ept vpid fsgsbase bmi1 avx2 smep bmi2 erms invpcid +bogomips : 6185.49 +clflush size : 64 +cache_alignment : 64 +address sizes : 39 bits physical, 48 bits virtual +power management: + +processor : 3 +vendor_id : GenuineIntel +cpu family : 6 +model : 60 +model name : Intel(R) Core(TM) i5-4440 CPU @ 3.10GHz +stepping : 3 +microcode : 18 +cpu MHz : 3092.746 +cache size : 6144 KB +physical id : 0 +siblings : 4 +core id : 3 +cpu cores : 4 +apicid : 6 +initial apicid : 6 +fpu : yes +fpu_exception : yes +cpuid level : 13 +wp : yes +flags : fpu vme de pse tsc msr pae mce cx8 apic mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall pdpe1gb rdtscp lm constant_tsc arch_perfmon pebs bts rep_good xtopology nonstop_tsc aperfmperf pni pclmulqdq dtes64 monitor ds_cpl vmx est tm2 ssse3 fma cx16 xtpr pdcm pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand lahf_lm abm ida arat epb xsaveopt pln pts dtherm tpr_shadow vnmi flexpriority ept vpid fsgsbase bmi1 avx2 smep bmi2 erms invpcid +bogomips : 6185.49 +clflush size : 64 +cache_alignment : 64 +address sizes : 39 bits physical, 48 bits virtual +power management: + diff --git a/tests/server-info-show.tests/1xi5.single_i350.l2_vlan_master/disks_types b/tests/server-info-show.tests/1xi5.single_i350.l2_vlan_master/disks_types new file mode 100644 index 0000000..4a3e1e1 --- /dev/null +++ b/tests/server-info-show.tests/1xi5.single_i350.l2_vlan_master/disks_types @@ -0,0 +1,2 @@ +/sys/block/sda/queue/rotational:1 +/sys/block/sdb/queue/rotational:1 diff --git a/tests/server-info-show.tests/1xi5.single_i350.l2_vlan_master/dmidecode b/tests/server-info-show.tests/1xi5.single_i350.l2_vlan_master/dmidecode new file mode 100644 index 0000000..e69de29 diff --git a/tests/server-info-show.tests/1xi5.single_i350.l2_vlan_master/ethtool/c/eth0 b/tests/server-info-show.tests/1xi5.single_i350.l2_vlan_master/ethtool/c/eth0 new file mode 100644 index 0000000..408299c --- /dev/null +++ b/tests/server-info-show.tests/1xi5.single_i350.l2_vlan_master/ethtool/c/eth0 @@ -0,0 +1,27 @@ +Coalesce parameters for eth0: +Adaptive RX: off TX: off +stats-block-usecs: 0 +sample-interval: 0 +pkt-rate-low: 0 +pkt-rate-high: 0 + +rx-usecs: 3 +rx-frames: 0 +rx-usecs-irq: 0 +rx-frames-irq: 0 + +tx-usecs: 3 +tx-frames: 0 +tx-usecs-irq: 0 +tx-frames-irq: 0 + +rx-usecs-low: 0 +rx-frame-low: 0 +tx-usecs-low: 0 +tx-frame-low: 0 + +rx-usecs-high: 0 +rx-frame-high: 0 +tx-usecs-high: 0 +tx-frame-high: 0 + diff --git a/tests/server-info-show.tests/1xi5.single_i350.l2_vlan_master/ethtool/c/eth1 b/tests/server-info-show.tests/1xi5.single_i350.l2_vlan_master/ethtool/c/eth1 new file mode 100644 index 0000000..44fe2c8 --- /dev/null +++ b/tests/server-info-show.tests/1xi5.single_i350.l2_vlan_master/ethtool/c/eth1 @@ -0,0 +1,27 @@ +Coalesce parameters for eth1: +Adaptive RX: off TX: off +stats-block-usecs: 0 +sample-interval: 0 +pkt-rate-low: 0 +pkt-rate-high: 0 + +rx-usecs: 3 +rx-frames: 0 +rx-usecs-irq: 0 +rx-frames-irq: 0 + +tx-usecs: 3 +tx-frames: 0 +tx-usecs-irq: 0 +tx-frames-irq: 0 + +rx-usecs-low: 0 +rx-frame-low: 0 +tx-usecs-low: 0 +tx-frame-low: 0 + +rx-usecs-high: 0 +rx-frame-high: 0 +tx-usecs-high: 0 +tx-frame-high: 0 + diff --git a/tests/server-info-show.tests/1xi5.single_i350.l2_vlan_master/ethtool/g/eth0 b/tests/server-info-show.tests/1xi5.single_i350.l2_vlan_master/ethtool/g/eth0 new file mode 100644 index 0000000..8756110 --- /dev/null +++ b/tests/server-info-show.tests/1xi5.single_i350.l2_vlan_master/ethtool/g/eth0 @@ -0,0 +1,12 @@ +Ring parameters for eth0: +Pre-set maximums: +RX: 4096 +RX Mini: 0 +RX Jumbo: 0 +TX: 4096 +Current hardware settings: +RX: 256 +RX Mini: 0 +RX Jumbo: 0 +TX: 256 + diff --git a/tests/server-info-show.tests/1xi5.single_i350.l2_vlan_master/ethtool/g/eth1 b/tests/server-info-show.tests/1xi5.single_i350.l2_vlan_master/ethtool/g/eth1 new file mode 100644 index 0000000..922e225 --- /dev/null +++ b/tests/server-info-show.tests/1xi5.single_i350.l2_vlan_master/ethtool/g/eth1 @@ -0,0 +1,12 @@ +Ring parameters for eth1: +Pre-set maximums: +RX: 4096 +RX Mini: 0 +RX Jumbo: 0 +TX: 4096 +Current hardware settings: +RX: 2048 +RX Mini: 0 +RX Jumbo: 0 +TX: 256 + diff --git a/tests/server-info-show.tests/1xi5.single_i350.l2_vlan_master/ethtool/i/br0 b/tests/server-info-show.tests/1xi5.single_i350.l2_vlan_master/ethtool/i/br0 new file mode 100644 index 0000000..693c489 --- /dev/null +++ b/tests/server-info-show.tests/1xi5.single_i350.l2_vlan_master/ethtool/i/br0 @@ -0,0 +1,9 @@ +driver: bridge +version: 2.3 +firmware-version: N/A +bus-info: N/A +supports-statistics: no +supports-test: no +supports-eeprom-access: no +supports-register-dump: no +supports-priv-flags: no diff --git a/tests/server-info-show.tests/1xi5.single_i350.l2_vlan_master/ethtool/i/br1 b/tests/server-info-show.tests/1xi5.single_i350.l2_vlan_master/ethtool/i/br1 new file mode 100644 index 0000000..693c489 --- /dev/null +++ b/tests/server-info-show.tests/1xi5.single_i350.l2_vlan_master/ethtool/i/br1 @@ -0,0 +1,9 @@ +driver: bridge +version: 2.3 +firmware-version: N/A +bus-info: N/A +supports-statistics: no +supports-test: no +supports-eeprom-access: no +supports-register-dump: no +supports-priv-flags: no diff --git a/tests/server-info-show.tests/1xi5.single_i350.l2_vlan_master/ethtool/i/br2 b/tests/server-info-show.tests/1xi5.single_i350.l2_vlan_master/ethtool/i/br2 new file mode 100644 index 0000000..693c489 --- /dev/null +++ b/tests/server-info-show.tests/1xi5.single_i350.l2_vlan_master/ethtool/i/br2 @@ -0,0 +1,9 @@ +driver: bridge +version: 2.3 +firmware-version: N/A +bus-info: N/A +supports-statistics: no +supports-test: no +supports-eeprom-access: no +supports-register-dump: no +supports-priv-flags: no diff --git a/tests/server-info-show.tests/1xi5.single_i350.l2_vlan_master/ethtool/i/br3 b/tests/server-info-show.tests/1xi5.single_i350.l2_vlan_master/ethtool/i/br3 new file mode 100644 index 0000000..693c489 --- /dev/null +++ b/tests/server-info-show.tests/1xi5.single_i350.l2_vlan_master/ethtool/i/br3 @@ -0,0 +1,9 @@ +driver: bridge +version: 2.3 +firmware-version: N/A +bus-info: N/A +supports-statistics: no +supports-test: no +supports-eeprom-access: no +supports-register-dump: no +supports-priv-flags: no diff --git a/tests/server-info-show.tests/1xi5.single_i350.l2_vlan_master/ethtool/i/eth0 b/tests/server-info-show.tests/1xi5.single_i350.l2_vlan_master/ethtool/i/eth0 new file mode 100644 index 0000000..2798045 --- /dev/null +++ b/tests/server-info-show.tests/1xi5.single_i350.l2_vlan_master/ethtool/i/eth0 @@ -0,0 +1,9 @@ +driver: igb +version: 5.3.0-k +firmware-version: 1.63, 0x80000f04 +bus-info: 0000:01:00.0 +supports-statistics: yes +supports-test: yes +supports-eeprom-access: yes +supports-register-dump: yes +supports-priv-flags: no diff --git a/tests/server-info-show.tests/1xi5.single_i350.l2_vlan_master/ethtool/i/eth1 b/tests/server-info-show.tests/1xi5.single_i350.l2_vlan_master/ethtool/i/eth1 new file mode 100644 index 0000000..4cad6c8 --- /dev/null +++ b/tests/server-info-show.tests/1xi5.single_i350.l2_vlan_master/ethtool/i/eth1 @@ -0,0 +1,9 @@ +driver: igb +version: 5.3.0-k +firmware-version: 1.63, 0x80000f04 +bus-info: 0000:01:00.1 +supports-statistics: yes +supports-test: yes +supports-eeprom-access: yes +supports-register-dump: yes +supports-priv-flags: no diff --git a/tests/server-info-show.tests/1xi5.single_i350.l2_vlan_master/ethtool/i/eth1.1 b/tests/server-info-show.tests/1xi5.single_i350.l2_vlan_master/ethtool/i/eth1.1 new file mode 100644 index 0000000..b13ca24 --- /dev/null +++ b/tests/server-info-show.tests/1xi5.single_i350.l2_vlan_master/ethtool/i/eth1.1 @@ -0,0 +1,9 @@ +driver: 802.1Q VLAN Support +version: 1.8 +firmware-version: N/A +bus-info: +supports-statistics: no +supports-test: no +supports-eeprom-access: no +supports-register-dump: no +supports-priv-flags: no diff --git a/tests/server-info-show.tests/1xi5.single_i350.l2_vlan_master/ethtool/i/eth2 b/tests/server-info-show.tests/1xi5.single_i350.l2_vlan_master/ethtool/i/eth2 new file mode 100644 index 0000000..b4c01b3 --- /dev/null +++ b/tests/server-info-show.tests/1xi5.single_i350.l2_vlan_master/ethtool/i/eth2 @@ -0,0 +1,9 @@ +driver: r8169 +version: 2.3LK-NAPI +firmware-version: rtl8168g-2_0.0.1 02/06/13 +bus-info: 0000:03:00.0 +supports-statistics: yes +supports-test: no +supports-eeprom-access: no +supports-register-dump: yes +supports-priv-flags: no diff --git a/tests/server-info-show.tests/1xi5.single_i350.l2_vlan_master/ethtool/l/eth0 b/tests/server-info-show.tests/1xi5.single_i350.l2_vlan_master/ethtool/l/eth0 new file mode 100644 index 0000000..b4414a5 --- /dev/null +++ b/tests/server-info-show.tests/1xi5.single_i350.l2_vlan_master/ethtool/l/eth0 @@ -0,0 +1,12 @@ +Channel parameters for eth0: +Pre-set maximums: +RX: 0 +TX: 0 +Other: 1 +Combined: 8 +Current hardware settings: +RX: 0 +TX: 0 +Other: 1 +Combined: 4 + diff --git a/tests/server-info-show.tests/1xi5.single_i350.l2_vlan_master/ethtool/l/eth1 b/tests/server-info-show.tests/1xi5.single_i350.l2_vlan_master/ethtool/l/eth1 new file mode 100644 index 0000000..b968d76 --- /dev/null +++ b/tests/server-info-show.tests/1xi5.single_i350.l2_vlan_master/ethtool/l/eth1 @@ -0,0 +1,12 @@ +Channel parameters for eth1: +Pre-set maximums: +RX: 0 +TX: 0 +Other: 1 +Combined: 8 +Current hardware settings: +RX: 0 +TX: 0 +Other: 1 +Combined: 4 + diff --git a/tests/server-info-show.tests/1xi5.single_i350.l2_vlan_master/expected_output.yml b/tests/server-info-show.tests/1xi5.single_i350.l2_vlan_master/expected_output.yml new file mode 100644 index 0000000..02057f0 --- /dev/null +++ b/tests/server-info-show.tests/1xi5.single_i350.l2_vlan_master/expected_output.yml @@ -0,0 +1,77 @@ +cpu: + info: + Architecture: x86_64 + BogoMIPS: 6185 + Byte Order: Little Endian + CPU MHz: 3092 + CPU family: 6 + CPU op-mode(s): 32-bit, 64-bit + CPU(s): 4 + Core(s) per socket: 4 + L1d cache: 32K + L1i cache: 32K + L2 cache: 256K + L3 cache: 6144K + Model: 60 + Model name: Intel(R) Core(TM) i5-4440 CPU @ 3.10GHz + NUMA node(s): 1 + NUMA node0 CPU(s): 0-3 + On-line CPU(s) list: 0-3 + Socket(s): 1 + Stepping: 3 + Thread(s) per core: 1 + Vendor ID: GenuineIntel + Virtualization: VT-x + layout: + '0': '0' + '1': '0' + '2': '0' + '3': '0' +disk: + sda: + model: ST1000DM003-1ER1 + size: 1000204886016 + type: HDD + sdb: + model: Transcend 8GB + size: 7813988352 + type: HDD +memory: + devices: null + size: + MemFree: 19920140 + MemTotal: 24475424 + SwapFree: 12304380 + SwapTotal: 12304380 +net: + eth1: + buffers: + cur: 2048 + max: 4096 + conf: + ip: '' + vlan: true + driver: + driver: igb + version: 5.3.0-k + numa_node: -1 + queues: + own: + - eth1 + rx: + - eth1-rx-0 + - eth1-rx-1 + - eth1-rx-2 + - eth1-rx-3 + rxtx: [] + shared: [] + tx: + - eth1-tx-0 + - eth1-tx-1 + - eth1-tx-2 + - eth1-tx-3 + unknown: [] + queues_ethtool: + combined: + cur: 4 + max: 8 diff --git a/tests/server-info-show.tests/1xi5.single_i350.l2_vlan_master/interrupts b/tests/server-info-show.tests/1xi5.single_i350.l2_vlan_master/interrupts new file mode 100644 index 0000000..a18923d --- /dev/null +++ b/tests/server-info-show.tests/1xi5.single_i350.l2_vlan_master/interrupts @@ -0,0 +1,53 @@ + CPU0 CPU1 CPU2 CPU3 + 0: 133 0 0 0 IR-IO-APIC-edge timer + 1: 2 0 0 0 IR-IO-APIC-edge i8042 + 5: 0 0 0 0 IR-IO-APIC-edge parport0 + 8: 1 0 0 0 IR-IO-APIC-edge rtc0 + 9: 3 0 0 0 IR-IO-APIC-fasteoi acpi + 12: 4 0 0 0 IR-IO-APIC-edge i8042 + 20: 26 0 0 0 IR-IO-APIC-fasteoi ehci_hcd:usb1 + 23: 26 0 0 0 IR-IO-APIC-fasteoi ehci_hcd:usb2 + 24: 0 0 0 0 DMAR_MSI-edge dmar0 + 25: 0 0 0 0 DMAR_MSI-edge dmar1 + 26: 615 0 0 0 IR-HPET_MSI-edge hpet2 + 27: 0 0 0 0 IR-HPET_MSI-edge hpet3 + 28: 0 0 0 0 IR-HPET_MSI-edge hpet4 + 29: 0 0 0 0 IR-HPET_MSI-edge hpet5 + 31: 195 0 0 0 IR-PCI-MSI-edge i915 + 32: 4981 0 0 0 IR-PCI-MSI-edge xhci_hcd + 33: 1241566 0 0 0 IR-PCI-MSI-edge ahci + 34: 7 0 0 0 IR-PCI-MSI-edge eth0 + 35: 1443295 130361 0 0 IR-PCI-MSI-edge eth0-rx-0 + 36: 1283120 188385 0 0 IR-PCI-MSI-edge eth0-rx-1 + 37: 1402578 190656 0 0 IR-PCI-MSI-edge eth0-rx-2 + 38: 1280942 317089 0 0 IR-PCI-MSI-edge eth0-rx-3 + 39: 1196121 180071 0 0 IR-PCI-MSI-edge eth0-tx-0 + 40: 1159228 84251 0 0 IR-PCI-MSI-edge eth0-tx-1 + 41: 1341122 467302 0 0 IR-PCI-MSI-edge eth0-tx-2 + 42: 2745426 708694 0 0 IR-PCI-MSI-edge eth0-tx-3 + 43: 7 0 0 0 IR-PCI-MSI-edge eth1 + 44: 32093625 2934871 0 0 IR-PCI-MSI-edge eth1-rx-0 + 45: 26392704 2469228 0 0 IR-PCI-MSI-edge eth1-rx-1 + 46: 28700797 2835047 0 0 IR-PCI-MSI-edge eth1-rx-2 + 47: 27155764 2539648 0 0 IR-PCI-MSI-edge eth1-rx-3 + 48: 168397 8933 0 0 IR-PCI-MSI-edge eth1-tx-0 + 49: 168155 8866 0 0 IR-PCI-MSI-edge eth1-tx-1 + 50: 168155 8866 0 0 IR-PCI-MSI-edge eth1-tx-2 + 51: 168155 8866 0 0 IR-PCI-MSI-edge eth1-tx-3 + 52: 52 0 0 0 IR-PCI-MSI-edge snd_hda_intel + 53: 363 0 0 0 IR-PCI-MSI-edge snd_hda_intel + 54: 0 0 0 0 IR-PCI-MSI-edge eth2 +NMI: 213 52 155 45 Non-maskable interrupts +LOC: 44371570 8167779 13024247 5507404 Local timer interrupts +SPU: 0 0 0 0 Spurious interrupts +PMI: 213 52 155 45 Performance monitoring interrupts +IWI: 0 0 0 0 IRQ work interrupts +RES: 72784 103362 73930 146083 Rescheduling interrupts +CAL: 103 281 250 263 Function call interrupts +TLB: 76302 273363 204099 106388 TLB shootdowns +TRM: 0 0 0 0 Thermal event interrupts +THR: 0 0 0 0 Threshold APIC interrupts +MCE: 0 0 0 0 Machine check exceptions +MCP: 617 617 617 617 Machine check polls +ERR: 0 +MIS: 0 diff --git a/tests/server-info-show.tests/1xi5.single_i350.l2_vlan_master/lsblk_models b/tests/server-info-show.tests/1xi5.single_i350.l2_vlan_master/lsblk_models new file mode 100644 index 0000000..7b074eb --- /dev/null +++ b/tests/server-info-show.tests/1xi5.single_i350.l2_vlan_master/lsblk_models @@ -0,0 +1,3 @@ +NAME MODEL +sda ST1000DM003-1ER1 +sdb Transcend 8GB diff --git a/tests/server-info-show.tests/1xi5.single_i350.l2_vlan_master/lsblk_sizes b/tests/server-info-show.tests/1xi5.single_i350.l2_vlan_master/lsblk_sizes new file mode 100644 index 0000000..13205df --- /dev/null +++ b/tests/server-info-show.tests/1xi5.single_i350.l2_vlan_master/lsblk_sizes @@ -0,0 +1,12 @@ +1000204886016 sda + 10485760000 / sda1 + 12599689216 [SWAP] sda2 + 679526531072 /mnt/var sda3 + 1024 sda4 + 104857600000 /mnt/db sda5 + 15728640000 /app sda6 + 104857600000 /mnt/log sda7 + 4194304000 /mnt/etc sda8 + 67947724800 /mnt/backup sda9 + 7813988352 sdb + 2347761664 sdb1 diff --git a/tests/server-info-show.tests/1xi5.single_i350.l2_vlan_master/lscpu_info b/tests/server-info-show.tests/1xi5.single_i350.l2_vlan_master/lscpu_info new file mode 100644 index 0000000..5d48e13 --- /dev/null +++ b/tests/server-info-show.tests/1xi5.single_i350.l2_vlan_master/lscpu_info @@ -0,0 +1,22 @@ +Architecture: x86_64 +CPU op-mode(s): 32-bit, 64-bit +Byte Order: Little Endian +CPU(s): 4 +On-line CPU(s) list: 0-3 +Thread(s) per core: 1 +Core(s) per socket: 4 +Socket(s): 1 +NUMA node(s): 1 +Vendor ID: GenuineIntel +CPU family: 6 +Model: 60 +Model name: Intel(R) Core(TM) i5-4440 CPU @ 3.10GHz +Stepping: 3 +CPU MHz: 3092.746 +BogoMIPS: 6185.49 +Virtualization: VT-x +L1d cache: 32K +L1i cache: 32K +L2 cache: 256K +L3 cache: 6144K +NUMA node0 CPU(s): 0-3 diff --git a/tests/server-info-show.tests/1xi5.single_i350.l2_vlan_master/lscpu_layout b/tests/server-info-show.tests/1xi5.single_i350.l2_vlan_master/lscpu_layout new file mode 100644 index 0000000..be93814 --- /dev/null +++ b/tests/server-info-show.tests/1xi5.single_i350.l2_vlan_master/lscpu_layout @@ -0,0 +1,4 @@ +0 0 +1 0 +2 0 +3 0 diff --git a/tests/server-info-show.tests/1xi5.single_i350.l2_vlan_master/lspci b/tests/server-info-show.tests/1xi5.single_i350.l2_vlan_master/lspci new file mode 100644 index 0000000..d85b800 --- /dev/null +++ b/tests/server-info-show.tests/1xi5.single_i350.l2_vlan_master/lspci @@ -0,0 +1,17 @@ +00:00.0 Host bridge: Intel Corporation 4th Gen Core Processor DRAM Controller (rev 06) +00:01.0 PCI bridge: Intel Corporation Xeon E3-1200 v3/4th Gen Core Processor PCI Express x16 Controller (rev 06) +00:02.0 VGA compatible controller: Intel Corporation Xeon E3-1200 v3/4th Gen Core Processor Integrated Graphics Controller (rev 06) +00:03.0 Audio device: Intel Corporation Xeon E3-1200 v3/4th Gen Core Processor HD Audio Controller (rev 06) +00:14.0 USB controller: Intel Corporation 8 Series/C220 Series Chipset Family USB xHCI (rev 05) +00:16.0 Communication controller: Intel Corporation 8 Series/C220 Series Chipset Family MEI Controller #1 (rev 04) +00:1a.0 USB controller: Intel Corporation 8 Series/C220 Series Chipset Family USB EHCI #2 (rev 05) +00:1b.0 Audio device: Intel Corporation 8 Series/C220 Series Chipset High Definition Audio Controller (rev 05) +00:1c.0 PCI bridge: Intel Corporation 8 Series/C220 Series Chipset Family PCI Express Root Port #1 (rev d5) +00:1c.2 PCI bridge: Intel Corporation 8 Series/C220 Series Chipset Family PCI Express Root Port #3 (rev d5) +00:1d.0 USB controller: Intel Corporation 8 Series/C220 Series Chipset Family USB EHCI #1 (rev 05) +00:1f.0 ISA bridge: Intel Corporation B85 Express LPC Controller (rev 05) +00:1f.2 SATA controller: Intel Corporation 8 Series/C220 Series Chipset Family 6-port SATA Controller 1 [AHCI mode] (rev 05) +00:1f.3 SMBus: Intel Corporation 8 Series/C220 Series Chipset Family SMBus Controller (rev 05) +01:00.0 Ethernet controller: Intel Corporation I350 Gigabit Network Connection (rev 01) +01:00.1 Ethernet controller: Intel Corporation I350 Gigabit Network Connection (rev 01) +03:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller (rev 0c) diff --git a/tests/server-info-show.tests/1xi5.single_i350.l2_vlan_master/meminfo b/tests/server-info-show.tests/1xi5.single_i350.l2_vlan_master/meminfo new file mode 100644 index 0000000..10deeb8 --- /dev/null +++ b/tests/server-info-show.tests/1xi5.single_i350.l2_vlan_master/meminfo @@ -0,0 +1,43 @@ +MemTotal: 24475424 kB +MemFree: 19920140 kB +Buffers: 571816 kB +Cached: 3204360 kB +SwapCached: 0 kB +Active: 1543052 kB +Inactive: 2319892 kB +Active(anon): 86760 kB +Inactive(anon): 4008 kB +Active(file): 1456292 kB +Inactive(file): 2315884 kB +Unevictable: 0 kB +Mlocked: 0 kB +SwapTotal: 12304380 kB +SwapFree: 12304380 kB +Dirty: 296 kB +Writeback: 0 kB +AnonPages: 86600 kB +Mapped: 21124 kB +Shmem: 4024 kB +Slab: 435820 kB +SReclaimable: 282808 kB +SUnreclaim: 153012 kB +KernelStack: 2848 kB +PageTables: 5172 kB +NFS_Unstable: 0 kB +Bounce: 0 kB +WritebackTmp: 0 kB +CommitLimit: 24542092 kB +Committed_AS: 231936 kB +VmallocTotal: 34359738367 kB +VmallocUsed: 433048 kB +VmallocChunk: 34359206880 kB +HardwareCorrupted: 0 kB +AnonHugePages: 8192 kB +HugePages_Total: 0 +HugePages_Free: 0 +HugePages_Rsvd: 0 +HugePages_Surp: 0 +Hugepagesize: 2048 kB +DirectMap4k: 6144 kB +DirectMap2M: 1990656 kB +DirectMap1G: 23068672 kB diff --git a/tests/server-info-show.tests/1xi5.single_i350.l2_vlan_master/mirror_info.conf b/tests/server-info-show.tests/1xi5.single_i350.l2_vlan_master/mirror_info.conf new file mode 100644 index 0000000..4a6758a --- /dev/null +++ b/tests/server-info-show.tests/1xi5.single_i350.l2_vlan_master/mirror_info.conf @@ -0,0 +1 @@ +eth1 1 - diff --git a/tests/server-info-show.tests/1xi5.single_i350.l2_vlan_master/network-scripts/ifcfg-br0 b/tests/server-info-show.tests/1xi5.single_i350.l2_vlan_master/network-scripts/ifcfg-br0 new file mode 100644 index 0000000..e69de29 diff --git a/tests/server-info-show.tests/1xi5.single_i350.l2_vlan_master/network-scripts/ifcfg-br1 b/tests/server-info-show.tests/1xi5.single_i350.l2_vlan_master/network-scripts/ifcfg-br1 new file mode 100644 index 0000000..e69de29 diff --git a/tests/server-info-show.tests/1xi5.single_i350.l2_vlan_master/network-scripts/ifcfg-br2 b/tests/server-info-show.tests/1xi5.single_i350.l2_vlan_master/network-scripts/ifcfg-br2 new file mode 100644 index 0000000..e69de29 diff --git a/tests/server-info-show.tests/1xi5.single_i350.l2_vlan_master/network-scripts/ifcfg-br3 b/tests/server-info-show.tests/1xi5.single_i350.l2_vlan_master/network-scripts/ifcfg-br3 new file mode 100644 index 0000000..e69de29 diff --git a/tests/server-info-show.tests/1xi5.single_i350.l2_vlan_master/network-scripts/ifcfg-eth0 b/tests/server-info-show.tests/1xi5.single_i350.l2_vlan_master/network-scripts/ifcfg-eth0 new file mode 100644 index 0000000..e69de29 diff --git a/tests/server-info-show.tests/1xi5.single_i350.l2_vlan_master/network-scripts/ifcfg-eth1 b/tests/server-info-show.tests/1xi5.single_i350.l2_vlan_master/network-scripts/ifcfg-eth1 new file mode 100644 index 0000000..e69de29 diff --git a/tests/server-info-show.tests/1xi5.single_i350.l2_vlan_master/network-scripts/ifcfg-eth1.1 b/tests/server-info-show.tests/1xi5.single_i350.l2_vlan_master/network-scripts/ifcfg-eth1.1 new file mode 100644 index 0000000..e69de29 diff --git a/tests/server-info-show.tests/1xi5.single_i350.l2_vlan_master/network-scripts/ifcfg-eth2 b/tests/server-info-show.tests/1xi5.single_i350.l2_vlan_master/network-scripts/ifcfg-eth2 new file mode 100644 index 0000000..e69de29 diff --git a/tests/server-info-show.tests/1xi5.single_i350.l2_vlan_master/scsi b/tests/server-info-show.tests/1xi5.single_i350.l2_vlan_master/scsi new file mode 100644 index 0000000..2161e0f --- /dev/null +++ b/tests/server-info-show.tests/1xi5.single_i350.l2_vlan_master/scsi @@ -0,0 +1,7 @@ +Attached devices: +Host: scsi5 Channel: 00 Id: 00 Lun: 00 + Vendor: ATA Model: ST1000DM003-1ER1 Rev: CC45 + Type: Direct-Access ANSI SCSI revision: 05 +Host: scsi6 Channel: 00 Id: 00 Lun: 00 + Vendor: JetFlash Model: Transcend 8GB Rev: 8.07 + Type: Direct-Access ANSI SCSI revision: 04 diff --git a/tests/server-info-show.tests/1xi5.single_i350.l2_vlan_master/sys/class/net/eth0/device/numa_node b/tests/server-info-show.tests/1xi5.single_i350.l2_vlan_master/sys/class/net/eth0/device/numa_node new file mode 100644 index 0000000..3a2e3f4 --- /dev/null +++ b/tests/server-info-show.tests/1xi5.single_i350.l2_vlan_master/sys/class/net/eth0/device/numa_node @@ -0,0 +1 @@ +-1 diff --git a/tests/server-info-show.tests/1xi5.single_i350.l2_vlan_master/sys/class/net/eth1/device/numa_node b/tests/server-info-show.tests/1xi5.single_i350.l2_vlan_master/sys/class/net/eth1/device/numa_node new file mode 100644 index 0000000..3a2e3f4 --- /dev/null +++ b/tests/server-info-show.tests/1xi5.single_i350.l2_vlan_master/sys/class/net/eth1/device/numa_node @@ -0,0 +1 @@ +-1 diff --git a/tests/server-info-show.tests/1xi5.single_i350.l2_vlan_master/sys/class/net/eth2/device/numa_node b/tests/server-info-show.tests/1xi5.single_i350.l2_vlan_master/sys/class/net/eth2/device/numa_node new file mode 100644 index 0000000..3a2e3f4 --- /dev/null +++ b/tests/server-info-show.tests/1xi5.single_i350.l2_vlan_master/sys/class/net/eth2/device/numa_node @@ -0,0 +1 @@ +-1 diff --git a/tests/server-info-show.tests/1xi7-4770K.1x82541PI.L2.manual/expected_output b/tests/server-info-show.tests/1xi7-4770K.1x82541PI.L2.manual/expected_output.yml similarity index 95% rename from tests/server-info-show.tests/1xi7-4770K.1x82541PI.L2.manual/expected_output rename to tests/server-info-show.tests/1xi7-4770K.1x82541PI.L2.manual/expected_output.yml index d3e07a5..ac4372a 100644 --- a/tests/server-info-show.tests/1xi7-4770K.1x82541PI.L2.manual/expected_output +++ b/tests/server-info-show.tests/1xi7-4770K.1x82541PI.L2.manual/expected_output.yml @@ -46,6 +46,7 @@ net: driver: driver: e1000e version: 3.2.6-k + numa_node: -1 queues: own: - eth0 @@ -54,3 +55,4 @@ net: shared: [] tx: [] unknown: [] + queues_ethtool: null diff --git a/tests/server-info-show.tests/2xE2690.1mellanox_1emulex.L2.masterconf/expected_output b/tests/server-info-show.tests/2xE2690.1mellanox_1emulex.L2.masterconf/expected_output.yml similarity index 95% rename from tests/server-info-show.tests/2xE2690.1mellanox_1emulex.L2.masterconf/expected_output rename to tests/server-info-show.tests/2xE2690.1mellanox_1emulex.L2.masterconf/expected_output.yml index afb9bc8..0f6c998 100644 --- a/tests/server-info-show.tests/2xE2690.1mellanox_1emulex.L2.masterconf/expected_output +++ b/tests/server-info-show.tests/2xE2690.1mellanox_1emulex.L2.masterconf/expected_output.yml @@ -97,6 +97,7 @@ net: driver: driver: tg3 version: 3.137 + numa_node: -1 queues: own: [] rx: @@ -109,6 +110,7 @@ net: tx: - eth1-tx-0 unknown: [] + queues_ethtool: null eth6: buffers: cur: 8192 @@ -119,6 +121,7 @@ net: driver: driver: mlx4_en version: 2.2-1 (Feb 2014) + numa_node: -1 queues: own: [] rx: [] @@ -134,6 +137,7 @@ net: shared: [] tx: [] unknown: [] + queues_ethtool: null eth7: buffers: cur: 8192 @@ -144,6 +148,7 @@ net: driver: driver: mlx4_en version: 2.2-1 (Feb 2014) + numa_node: -1 queues: own: [] rx: [] @@ -159,3 +164,4 @@ net: shared: [] tx: [] unknown: [] + queues_ethtool: null diff --git a/tests/server-info-show.tests/2xE5-2640.i350_and_82599ES.l2_mixed.masterconf/expected_output b/tests/server-info-show.tests/2xE5-2640.i350_and_82599ES.l2_mixed.masterconf/expected_output.yml similarity index 96% rename from tests/server-info-show.tests/2xE5-2640.i350_and_82599ES.l2_mixed.masterconf/expected_output rename to tests/server-info-show.tests/2xE5-2640.i350_and_82599ES.l2_mixed.masterconf/expected_output.yml index 734ab42..69c7a4f 100644 --- a/tests/server-info-show.tests/2xE5-2640.i350_and_82599ES.l2_mixed.masterconf/expected_output +++ b/tests/server-info-show.tests/2xE5-2640.i350_and_82599ES.l2_mixed.masterconf/expected_output.yml @@ -82,6 +82,7 @@ net: driver: driver: igb version: 5.2.15-k + numa_node: -1 queues: own: - eth1 @@ -98,6 +99,7 @@ net: shared: [] tx: [] unknown: [] + queues_ethtool: null eth2: buffers: cur: 4096 @@ -108,6 +110,7 @@ net: driver: driver: ixgbe version: 4.0.1-k + numa_node: -1 queues: own: - eth2 @@ -148,6 +151,7 @@ net: shared: [] tx: [] unknown: [] + queues_ethtool: null eth3: buffers: cur: 4096 @@ -158,6 +162,7 @@ net: driver: driver: ixgbe version: 4.0.1-k + numa_node: -1 queues: own: - eth3 @@ -198,6 +203,7 @@ net: shared: [] tx: [] unknown: [] + queues_ethtool: null eth4: buffers: cur: 4096 @@ -208,6 +214,7 @@ net: driver: driver: ixgbe version: 4.0.1-k + numa_node: -1 queues: own: - eth4 @@ -248,6 +255,7 @@ net: shared: [] tx: [] unknown: [] + queues_ethtool: null eth5: buffers: cur: 4096 @@ -258,6 +266,7 @@ net: driver: driver: ixgbe version: 4.0.1-k + numa_node: -1 queues: own: - eth5 @@ -298,3 +307,4 @@ net: shared: [] tx: [] unknown: [] + queues_ethtool: null diff --git a/tests/server-info-show.tests/2xE5530.82576_and_82574L.l2_mixed.manual/expected_output b/tests/server-info-show.tests/2xE5530.82576_and_82574L.l2_mixed.manual/expected_output.yml similarity index 94% rename from tests/server-info-show.tests/2xE5530.82576_and_82574L.l2_mixed.manual/expected_output rename to tests/server-info-show.tests/2xE5530.82576_and_82574L.l2_mixed.manual/expected_output.yml index a73b748..ecce152 100644 --- a/tests/server-info-show.tests/2xE5530.82576_and_82574L.l2_mixed.manual/expected_output +++ b/tests/server-info-show.tests/2xE5530.82576_and_82574L.l2_mixed.manual/expected_output.yml @@ -53,6 +53,7 @@ net: driver: driver: e1000e version: 3.2.5-k + numa_node: -1 queues: own: - eth1 @@ -63,6 +64,7 @@ net: tx: - eth1-tx-0 unknown: [] + queues_ethtool: null eth3: buffers: cur: 2048 @@ -73,6 +75,7 @@ net: driver: driver: igb version: 5.2.15-k + numa_node: -1 queues: own: - eth3 @@ -89,3 +92,4 @@ net: shared: [] tx: [] unknown: [] + queues_ethtool: null diff --git a/tests/server-info-show.tests/2xL5520.1x82576.L2_mixed.manual/expected_output b/tests/server-info-show.tests/2xL5520.1x82576.L2_mixed.manual/expected_output.yml similarity index 96% rename from tests/server-info-show.tests/2xL5520.1x82576.L2_mixed.manual/expected_output rename to tests/server-info-show.tests/2xL5520.1x82576.L2_mixed.manual/expected_output.yml index 6a2355f..1ccd0c0 100644 --- a/tests/server-info-show.tests/2xL5520.1x82576.L2_mixed.manual/expected_output +++ b/tests/server-info-show.tests/2xL5520.1x82576.L2_mixed.manual/expected_output.yml @@ -54,6 +54,7 @@ net: driver: driver: igb version: 5.3.0-k + numa_node: -1 queues: own: - em2 @@ -70,3 +71,4 @@ net: shared: [] tx: [] unknown: [] + queues_ethtool: null diff --git a/tests/server-info-show.tests/2xX5650.BCM5709_and_MT27520.L2.manual/expected_output b/tests/server-info-show.tests/2xX5650.BCM5709_and_MT27520.L2.manual/expected_output.yml similarity index 94% rename from tests/server-info-show.tests/2xX5650.BCM5709_and_MT27520.L2.manual/expected_output rename to tests/server-info-show.tests/2xX5650.BCM5709_and_MT27520.L2.manual/expected_output.yml index b5777cb..7f5a93a 100644 --- a/tests/server-info-show.tests/2xX5650.BCM5709_and_MT27520.L2.manual/expected_output +++ b/tests/server-info-show.tests/2xX5650.BCM5709_and_MT27520.L2.manual/expected_output.yml @@ -50,6 +50,7 @@ net: driver: driver: bnx2 version: 2.2.5 + numa_node: -1 queues: own: [] rx: [] @@ -65,6 +66,7 @@ net: shared: [] tx: [] unknown: [] + queues_ethtool: null eth2: buffers: cur: 8192 @@ -75,6 +77,7 @@ net: driver: driver: mlx4_en version: 2.2-1 (Feb 2014) + numa_node: -1 queues: own: [] rx: [] @@ -90,3 +93,4 @@ net: shared: [] tx: [] unknown: [] + queues_ethtool: null diff --git a/tests/server-info-show.tests/kvm.l3.masterconf/expected_output b/tests/server-info-show.tests/kvm.l3.masterconf/expected_output.yml similarity index 95% rename from tests/server-info-show.tests/kvm.l3.masterconf/expected_output rename to tests/server-info-show.tests/kvm.l3.masterconf/expected_output.yml index 73579d7..bbd3f3a 100644 --- a/tests/server-info-show.tests/kvm.l3.masterconf/expected_output +++ b/tests/server-info-show.tests/kvm.l3.masterconf/expected_output.yml @@ -40,6 +40,7 @@ net: driver: driver: e1000 version: 7.3.21-k8-NAPI + numa_node: -1 queues: own: [] rx: [] @@ -48,3 +49,4 @@ net: - uhci_hcd:usb1, eth0, eth1 tx: [] unknown: [] + queues_ethtool: null diff --git a/utils/server-info-collect b/utils/server-info-collect index 82bd5f0..34ee515 100755 --- a/utils/server-info-collect +++ b/utils/server-info-collect @@ -6,7 +6,7 @@ SYSCONFIG=/etc/sysconfig/network-scripts/ TMPDIR="$1" prepare() { - mkdir -p $TMPDIR/ethtool/{g,i,c} $TMPDIR/network-scripts/ + mkdir -p $TMPDIR/ethtool/{g,i,c,l} $TMPDIR/network-scripts/ } server_info() { @@ -51,7 +51,7 @@ network_info() { for netdev in $(grep : /proc/net/dev | awk '{print $1}' | tr -d :); do ethtool -i "$netdev" &>/dev/null || continue - for action in i g c; do + for action in i g c l; do if ! ethtool -"$action" "$netdev" &>"$TMPDIR/ethtool/$action/$netdev"; then rm -f "$TMPDIR/ethtool/$action/$netdev" fi @@ -59,6 +59,11 @@ network_info() { [ -f "$SYSCONFIG/ifcfg-$netdev" ] || continue # avoiding collection of identification/privacy info grep ETHTOOL "$SYSCONFIG/ifcfg-$netdev" > "$TMPDIR/network-scripts/ifcfg-$netdev" || true + numa_node="/sys/class/net/$netdev/device/numa_node" + if [ -f "$numa_node" ]; then + mkdir -p "$TMPDIR${numa_node%/*}" + cat "$numa_node" > "${TMPDIR}${numa_node}" + fi done }