[libvirt] [PATCH 2/2] nodeinfo: Fix CPU core counting

Peter Krempa pkrempa at redhat.com
Mon Jun 25 14:43:22 UTC 2012


Parsing of the processor information from /sys/ didn't take into account
that cores on different physical processors may have different core
ID's. This resulted in reporting more cores than actually were present.

This patch changes the process of counting cores. So that cores are
counted separately per physical ID.

This patch also adds test data that were used to debug this problem.
---
 src/nodeinfo.c                                     |  106 ++++--
 .../linux-nodeinfo-sysfs-test-4-cpu-x86-output.txt |    1 +
 .../linux-nodeinfo-sysfs-test-4-x86.cpuinfo        |  400 ++++++++++++++++++++
 .../cpu/cpu0/topology/core_id                      |    1 +
 .../cpu/cpu0/topology/physical_package_id          |    1 +
 .../cpu/cpu0/topology/thread_siblings              |    1 +
 .../cpu/cpu1/topology/core_id                      |    1 +
 .../cpu/cpu1/topology/physical_package_id          |    1 +
 .../cpu/cpu1/topology/thread_siblings              |    1 +
 .../cpu/cpu10/topology/core_id                     |    1 +
 .../cpu/cpu10/topology/physical_package_id         |    1 +
 .../cpu/cpu10/topology/thread_siblings             |    1 +
 .../cpu/cpu11/topology/core_id                     |    1 +
 .../cpu/cpu11/topology/physical_package_id         |    1 +
 .../cpu/cpu11/topology/thread_siblings             |    1 +
 .../cpu/cpu12/topology/core_id                     |    1 +
 .../cpu/cpu12/topology/physical_package_id         |    1 +
 .../cpu/cpu12/topology/thread_siblings             |    1 +
 .../cpu/cpu13/topology/core_id                     |    1 +
 .../cpu/cpu13/topology/physical_package_id         |    1 +
 .../cpu/cpu13/topology/thread_siblings             |    1 +
 .../cpu/cpu14/topology/core_id                     |    1 +
 .../cpu/cpu14/topology/physical_package_id         |    1 +
 .../cpu/cpu14/topology/thread_siblings             |    1 +
 .../cpu/cpu15/topology/core_id                     |    1 +
 .../cpu/cpu15/topology/physical_package_id         |    1 +
 .../cpu/cpu15/topology/thread_siblings             |    1 +
 .../cpu/cpu2/topology/core_id                      |    1 +
 .../cpu/cpu2/topology/physical_package_id          |    1 +
 .../cpu/cpu2/topology/thread_siblings              |    1 +
 .../cpu/cpu3/topology/core_id                      |    1 +
 .../cpu/cpu3/topology/physical_package_id          |    1 +
 .../cpu/cpu3/topology/thread_siblings              |    1 +
 .../cpu/cpu4/topology/core_id                      |    1 +
 .../cpu/cpu4/topology/physical_package_id          |    1 +
 .../cpu/cpu4/topology/thread_siblings              |    1 +
 .../cpu/cpu5/topology/core_id                      |    1 +
 .../cpu/cpu5/topology/physical_package_id          |    1 +
 .../cpu/cpu5/topology/thread_siblings              |    1 +
 .../cpu/cpu6/topology/core_id                      |    1 +
 .../cpu/cpu6/topology/physical_package_id          |    1 +
 .../cpu/cpu6/topology/thread_siblings              |    1 +
 .../cpu/cpu7/topology/core_id                      |    1 +
 .../cpu/cpu7/topology/physical_package_id          |    1 +
 .../cpu/cpu7/topology/thread_siblings              |    1 +
 .../cpu/cpu8/topology/core_id                      |    1 +
 .../cpu/cpu8/topology/physical_package_id          |    1 +
 .../cpu/cpu8/topology/thread_siblings              |    1 +
 .../cpu/cpu9/topology/core_id                      |    1 +
 .../cpu/cpu9/topology/physical_package_id          |    1 +
 .../cpu/cpu9/topology/thread_siblings              |    1 +
 .../linux-nodeinfo-sysfs-test-4/node/node0/meminfo |   29 ++
 .../linux-nodeinfo-sysfs-test-4/node/node1/meminfo |   29 ++
 .../linux-nodeinfo-sysfs-test-4/node/possible      |  Bin 0 -> 5 bytes
 tests/nodeinfotest.c                               |    1 +
 55 files changed, 578 insertions(+), 36 deletions(-)
 create mode 100644 tests/nodeinfodata/linux-nodeinfo-sysfs-test-4-cpu-x86-output.txt
 create mode 100644 tests/nodeinfodata/linux-nodeinfo-sysfs-test-4-x86.cpuinfo
 create mode 100644 tests/nodeinfodata/linux-nodeinfo-sysfs-test-4/cpu/cpu0/topology/core_id
 create mode 100644 tests/nodeinfodata/linux-nodeinfo-sysfs-test-4/cpu/cpu0/topology/physical_package_id
 create mode 100644 tests/nodeinfodata/linux-nodeinfo-sysfs-test-4/cpu/cpu0/topology/thread_siblings
 create mode 100644 tests/nodeinfodata/linux-nodeinfo-sysfs-test-4/cpu/cpu1/topology/core_id
 create mode 100644 tests/nodeinfodata/linux-nodeinfo-sysfs-test-4/cpu/cpu1/topology/physical_package_id
 create mode 100644 tests/nodeinfodata/linux-nodeinfo-sysfs-test-4/cpu/cpu1/topology/thread_siblings
 create mode 100644 tests/nodeinfodata/linux-nodeinfo-sysfs-test-4/cpu/cpu10/topology/core_id
 create mode 100644 tests/nodeinfodata/linux-nodeinfo-sysfs-test-4/cpu/cpu10/topology/physical_package_id
 create mode 100644 tests/nodeinfodata/linux-nodeinfo-sysfs-test-4/cpu/cpu10/topology/thread_siblings
 create mode 100644 tests/nodeinfodata/linux-nodeinfo-sysfs-test-4/cpu/cpu11/topology/core_id
 create mode 100644 tests/nodeinfodata/linux-nodeinfo-sysfs-test-4/cpu/cpu11/topology/physical_package_id
 create mode 100644 tests/nodeinfodata/linux-nodeinfo-sysfs-test-4/cpu/cpu11/topology/thread_siblings
 create mode 100644 tests/nodeinfodata/linux-nodeinfo-sysfs-test-4/cpu/cpu12/topology/core_id
 create mode 100644 tests/nodeinfodata/linux-nodeinfo-sysfs-test-4/cpu/cpu12/topology/physical_package_id
 create mode 100644 tests/nodeinfodata/linux-nodeinfo-sysfs-test-4/cpu/cpu12/topology/thread_siblings
 create mode 100644 tests/nodeinfodata/linux-nodeinfo-sysfs-test-4/cpu/cpu13/topology/core_id
 create mode 100644 tests/nodeinfodata/linux-nodeinfo-sysfs-test-4/cpu/cpu13/topology/physical_package_id
 create mode 100644 tests/nodeinfodata/linux-nodeinfo-sysfs-test-4/cpu/cpu13/topology/thread_siblings
 create mode 100644 tests/nodeinfodata/linux-nodeinfo-sysfs-test-4/cpu/cpu14/topology/core_id
 create mode 100644 tests/nodeinfodata/linux-nodeinfo-sysfs-test-4/cpu/cpu14/topology/physical_package_id
 create mode 100644 tests/nodeinfodata/linux-nodeinfo-sysfs-test-4/cpu/cpu14/topology/thread_siblings
 create mode 100644 tests/nodeinfodata/linux-nodeinfo-sysfs-test-4/cpu/cpu15/topology/core_id
 create mode 100644 tests/nodeinfodata/linux-nodeinfo-sysfs-test-4/cpu/cpu15/topology/physical_package_id
 create mode 100644 tests/nodeinfodata/linux-nodeinfo-sysfs-test-4/cpu/cpu15/topology/thread_siblings
 create mode 100644 tests/nodeinfodata/linux-nodeinfo-sysfs-test-4/cpu/cpu2/topology/core_id
 create mode 100644 tests/nodeinfodata/linux-nodeinfo-sysfs-test-4/cpu/cpu2/topology/physical_package_id
 create mode 100644 tests/nodeinfodata/linux-nodeinfo-sysfs-test-4/cpu/cpu2/topology/thread_siblings
 create mode 100644 tests/nodeinfodata/linux-nodeinfo-sysfs-test-4/cpu/cpu3/topology/core_id
 create mode 100644 tests/nodeinfodata/linux-nodeinfo-sysfs-test-4/cpu/cpu3/topology/physical_package_id
 create mode 100644 tests/nodeinfodata/linux-nodeinfo-sysfs-test-4/cpu/cpu3/topology/thread_siblings
 create mode 100644 tests/nodeinfodata/linux-nodeinfo-sysfs-test-4/cpu/cpu4/topology/core_id
 create mode 100644 tests/nodeinfodata/linux-nodeinfo-sysfs-test-4/cpu/cpu4/topology/physical_package_id
 create mode 100644 tests/nodeinfodata/linux-nodeinfo-sysfs-test-4/cpu/cpu4/topology/thread_siblings
 create mode 100644 tests/nodeinfodata/linux-nodeinfo-sysfs-test-4/cpu/cpu5/topology/core_id
 create mode 100644 tests/nodeinfodata/linux-nodeinfo-sysfs-test-4/cpu/cpu5/topology/physical_package_id
 create mode 100644 tests/nodeinfodata/linux-nodeinfo-sysfs-test-4/cpu/cpu5/topology/thread_siblings
 create mode 100644 tests/nodeinfodata/linux-nodeinfo-sysfs-test-4/cpu/cpu6/topology/core_id
 create mode 100644 tests/nodeinfodata/linux-nodeinfo-sysfs-test-4/cpu/cpu6/topology/physical_package_id
 create mode 100644 tests/nodeinfodata/linux-nodeinfo-sysfs-test-4/cpu/cpu6/topology/thread_siblings
 create mode 100644 tests/nodeinfodata/linux-nodeinfo-sysfs-test-4/cpu/cpu7/topology/core_id
 create mode 100644 tests/nodeinfodata/linux-nodeinfo-sysfs-test-4/cpu/cpu7/topology/physical_package_id
 create mode 100644 tests/nodeinfodata/linux-nodeinfo-sysfs-test-4/cpu/cpu7/topology/thread_siblings
 create mode 100644 tests/nodeinfodata/linux-nodeinfo-sysfs-test-4/cpu/cpu8/topology/core_id
 create mode 100644 tests/nodeinfodata/linux-nodeinfo-sysfs-test-4/cpu/cpu8/topology/physical_package_id
 create mode 100644 tests/nodeinfodata/linux-nodeinfo-sysfs-test-4/cpu/cpu8/topology/thread_siblings
 create mode 100644 tests/nodeinfodata/linux-nodeinfo-sysfs-test-4/cpu/cpu9/topology/core_id
 create mode 100644 tests/nodeinfodata/linux-nodeinfo-sysfs-test-4/cpu/cpu9/topology/physical_package_id
 create mode 100644 tests/nodeinfodata/linux-nodeinfo-sysfs-test-4/cpu/cpu9/topology/thread_siblings
 create mode 100644 tests/nodeinfodata/linux-nodeinfo-sysfs-test-4/node/node0/meminfo
 create mode 100644 tests/nodeinfodata/linux-nodeinfo-sysfs-test-4/node/node1/meminfo
 create mode 100644 tests/nodeinfodata/linux-nodeinfo-sysfs-test-4/node/possible

diff --git a/src/nodeinfo.c b/src/nodeinfo.c
index 97482d9..e8ad6ca 100644
--- a/src/nodeinfo.c
+++ b/src/nodeinfo.c
@@ -232,16 +232,19 @@ int linuxNodeInfoCPUPopulate(FILE *cpuinfo,
     struct dirent *cpudirent = NULL;
     unsigned int cpu;
     unsigned long core, sock, cur_threads;
-    cpu_set_t core_mask;
+    cpu_set_t *core_masks;
+    int max_socket = 0;
     cpu_set_t socket_mask;
     int online;
     int ret = -1;
     char *sysfs_cpudir = NULL;
     unsigned int cpu_cores = 0;
+    int i;

     nodeinfo->cpus = 0;
     nodeinfo->mhz = 0;
     nodeinfo->cores = 0;
+    nodeinfo->sockets = 0;

     /* Start with parsing /proc/cpuinfo; although it tends to have
      * fewer details.  Hyperthreads are ignored at this stage.  */
@@ -288,6 +291,7 @@ int linuxNodeInfoCPUPopulate(FILE *cpuinfo,
                 (*p == '\0' || c_isspace(*p)))
                 cpu_cores = ui;
          }
+
 # elif defined(__powerpc__) || \
       defined(__powerpc64__)
         char *buf = line;
@@ -332,54 +336,78 @@ int linuxNodeInfoCPUPopulate(FILE *cpuinfo,
         goto cleanup;
     }

-    CPU_ZERO(&core_mask);
+    /* at first, count number of physical ID's */
     CPU_ZERO(&socket_mask);
-
     while ((cpudirent = readdir(cpudir))) {
+        if (errno) {
+            virReportSystemError(errno, _("problem reading %s"), sysfs_cpudir);
+            goto cleanup;
+        }
+
         if (sscanf(cpudirent->d_name, "cpu%u", &cpu) != 1)
             continue;

-        online = virNodeGetCpuValue(sysfs_cpudir, cpu, "online", true);
-        if (online < 0) {
-            closedir(cpudir);
+        /* Parse socket */
+        sock = virNodeParseSocket(sysfs_cpudir, cpu);
+        CPU_SET(sock, &socket_mask);
+
+        if (sock > max_socket)
+            max_socket = sock;
+    }
+
+    nodeinfo->sockets = CPU_COUNT(&socket_mask);
+
+    if (VIR_ALLOC_N(core_masks, max_socket + 1) < 0) {
+        virReportOOMError();
+        goto cleanup;
+    }
+
+    /* enumerate all threads/cores */
+    rewinddir(cpudir);
+    while ((cpudirent = readdir(cpudir))) {
+        if (errno) {
+            virReportSystemError(errno, _("problem reading %s"), sysfs_cpudir);
             goto cleanup;
         }
-        if (!online)
+
+        if (sscanf(cpudirent->d_name, "cpu%u", &cpu) != 1)
             continue;
-        nodeinfo->cpus++;

-        /* Parse core */
-        core = virNodeGetCpuValue(sysfs_cpudir, cpu, "topology/core_id", false);
-        if (!CPU_ISSET(core, &core_mask)) {
-            CPU_SET(core, &core_mask);
-            nodeinfo->cores++;
-        }
+        if ((online = virNodeGetCpuValue(sysfs_cpudir, cpu, "online", true)) < 0)
+            goto cleanup;
+
+        if (!online)
+            continue;

         /* Parse socket */
         sock = virNodeParseSocket(sysfs_cpudir, cpu);
         if (!CPU_ISSET(sock, &socket_mask)) {
-            CPU_SET(sock, &socket_mask);
-            nodeinfo->sockets++;
+            nodeReportError(VIR_ERR_INTERNAL_ERROR, "%s",
+                            _("processor socket topology has changed"));
+            goto cleanup;
         }

-        cur_threads = virNodeCountThreadSiblings(sysfs_cpudir, cpu);
-        if (cur_threads == 0) {
-            closedir(cpudir);
+        /* Parse core */
+        core = virNodeGetCpuValue(sysfs_cpudir, cpu, "topology/core_id",
+                                  false);
+        CPU_SET(core, &core_masks[sock]);
+        nodeinfo->cpus++;
+
+        if (!(cur_threads = virNodeCountThreadSiblings(sysfs_cpudir, cpu)))
             goto cleanup;
-        }
+
         if (cur_threads > nodeinfo->threads)
             nodeinfo->threads = cur_threads;
     }
-    if (errno) {
-        virReportSystemError(errno,
-                             _("problem reading %s"), sysfs_cpudir);
-        closedir(cpudir);
-        goto cleanup;
-    }
-    if (closedir(cpudir) < 0) {
-        virReportSystemError(errno,
-                             _("problem closing %s"), sysfs_cpudir);
-        goto cleanup;
+
+    /* finalize the counts */
+    for (i = 0; i < nodeinfo->sockets; i++) {
+        if (!CPU_ISSET(i, &socket_mask))
+            continue;
+
+        core = CPU_COUNT(&core_masks[i]);
+        if (core > nodeinfo->cores)
+            nodeinfo->cores = core;
     }

     if ((nodeinfo->nodes = virNodeParseNode(sysfs_dir)) <= 0)
@@ -387,18 +415,17 @@ int linuxNodeInfoCPUPopulate(FILE *cpuinfo,

     /* There should always be at least one cpu, socket, node, and thread. */
     if (nodeinfo->cpus == 0) {
-        nodeReportError(VIR_ERR_INTERNAL_ERROR,
-                        "%s", _("no CPUs found"));
+        nodeReportError(VIR_ERR_INTERNAL_ERROR, "%s", _("no CPUs found"));
         goto cleanup;
     }
+
     if (nodeinfo->sockets == 0) {
-        nodeReportError(VIR_ERR_INTERNAL_ERROR,
-                        "%s", _("no sockets found"));
+        nodeReportError(VIR_ERR_INTERNAL_ERROR, "%s", _("no sockets found"));
         goto cleanup;
     }
+
     if (nodeinfo->threads == 0) {
-        nodeReportError(VIR_ERR_INTERNAL_ERROR,
-                        "%s", _("no threads found"));
+        nodeReportError(VIR_ERR_INTERNAL_ERROR, "%s", _("no threads found"));
         goto cleanup;
     }

@@ -425,6 +452,13 @@ int linuxNodeInfoCPUPopulate(FILE *cpuinfo,
     ret = 0;

 cleanup:
+    VIR_FREE(core_masks);
+    /* don't shadow a more serious error */
+    if (cpudir && closedir(cpudir) < 0 && !ret) {
+        virReportSystemError(errno, _("problem closing %s"), sysfs_cpudir);
+        ret = -1;
+    }
+
     VIR_FREE(sysfs_cpudir);
     return ret;
 }
diff --git a/tests/nodeinfodata/linux-nodeinfo-sysfs-test-4-cpu-x86-output.txt b/tests/nodeinfodata/linux-nodeinfo-sysfs-test-4-cpu-x86-output.txt
new file mode 100644
index 0000000..0c8f956
--- /dev/null
+++ b/tests/nodeinfodata/linux-nodeinfo-sysfs-test-4-cpu-x86-output.txt
@@ -0,0 +1 @@
+CPUs: 16/16, MHz: 1064, Nodes: 2, Sockets: 1, Cores: 8, Threads: 1
diff --git a/tests/nodeinfodata/linux-nodeinfo-sysfs-test-4-x86.cpuinfo b/tests/nodeinfodata/linux-nodeinfo-sysfs-test-4-x86.cpuinfo
new file mode 100644
index 0000000..b3c33b3
--- /dev/null
+++ b/tests/nodeinfodata/linux-nodeinfo-sysfs-test-4-x86.cpuinfo
@@ -0,0 +1,400 @@
+processor	: 0
+vendor_id	: GenuineIntel
+cpu family	: 6
+model		: 47
+model name	: Intel(R) Xeon(R) CPU E7- 8837  @ 2.67GHz
+stepping	: 2
+cpu MHz		: 1064.000
+cache size	: 24576 KB
+physical id	: 0
+siblings	: 8
+core id		: 1
+cpu cores	: 8
+apicid		: 2
+initial apicid	: 2
+fpu		: yes
+fpu_exception	: yes
+cpuid level	: 11
+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 nx pdpe1gb rdtscp lm constant_tsc arch_perfmon pebs bts rep_good xtopology nonstop_tsc aperfmperf pni pclmulqdq dtes64 monitor ds_cpl vmx smx est tm2 ssse3 cx16 xtpr pdcm dca sse4_1 sse4_2 x2apic popcnt aes lahf_lm ida arat epb dts tpr_shadow vnmi flexpriority ept vpid
+bogomips	: 5320.10
+clflush size	: 64
+cache_alignment	: 64
+address sizes	: 44 bits physical, 48 bits virtual
+power management:
+
+processor	: 1
+vendor_id	: GenuineIntel
+cpu family	: 6
+model		: 47
+model name	: Intel(R) Xeon(R) CPU E7- 8837  @ 2.67GHz
+stepping	: 2
+cpu MHz		: 1064.000
+cache size	: 24576 KB
+physical id	: 0
+siblings	: 8
+core id		: 2
+cpu cores	: 8
+apicid		: 4
+initial apicid	: 4
+fpu		: yes
+fpu_exception	: yes
+cpuid level	: 11
+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 nx pdpe1gb rdtscp lm constant_tsc arch_perfmon pebs bts rep_good xtopology nonstop_tsc aperfmperf pni pclmulqdq dtes64 monitor ds_cpl vmx smx est tm2 ssse3 cx16 xtpr pdcm dca sse4_1 sse4_2 x2apic popcnt aes lahf_lm ida arat epb dts tpr_shadow vnmi flexpriority ept vpid
+bogomips	: 5320.10
+clflush size	: 64
+cache_alignment	: 64
+address sizes	: 44 bits physical, 48 bits virtual
+power management:
+
+processor	: 2
+vendor_id	: GenuineIntel
+cpu family	: 6
+model		: 47
+model name	: Intel(R) Xeon(R) CPU E7- 8837  @ 2.67GHz
+stepping	: 2
+cpu MHz		: 1064.000
+cache size	: 24576 KB
+physical id	: 0
+siblings	: 8
+core id		: 8
+cpu cores	: 8
+apicid		: 16
+initial apicid	: 16
+fpu		: yes
+fpu_exception	: yes
+cpuid level	: 11
+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 nx pdpe1gb rdtscp lm constant_tsc arch_perfmon pebs bts rep_good xtopology nonstop_tsc aperfmperf pni pclmulqdq dtes64 monitor ds_cpl vmx smx est tm2 ssse3 cx16 xtpr pdcm dca sse4_1 sse4_2 x2apic popcnt aes lahf_lm ida arat epb dts tpr_shadow vnmi flexpriority ept vpid
+bogomips	: 5320.10
+clflush size	: 64
+cache_alignment	: 64
+address sizes	: 44 bits physical, 48 bits virtual
+power management:
+
+processor	: 3
+vendor_id	: GenuineIntel
+cpu family	: 6
+model		: 47
+model name	: Intel(R) Xeon(R) CPU E7- 8837  @ 2.67GHz
+stepping	: 2
+cpu MHz		: 1064.000
+cache size	: 24576 KB
+physical id	: 0
+siblings	: 8
+core id		: 9
+cpu cores	: 8
+apicid		: 18
+initial apicid	: 18
+fpu		: yes
+fpu_exception	: yes
+cpuid level	: 11
+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 nx pdpe1gb rdtscp lm constant_tsc arch_perfmon pebs bts rep_good xtopology nonstop_tsc aperfmperf pni pclmulqdq dtes64 monitor ds_cpl vmx smx est tm2 ssse3 cx16 xtpr pdcm dca sse4_1 sse4_2 x2apic popcnt aes lahf_lm ida arat epb dts tpr_shadow vnmi flexpriority ept vpid
+bogomips	: 5320.10
+clflush size	: 64
+cache_alignment	: 64
+address sizes	: 44 bits physical, 48 bits virtual
+power management:
+
+processor	: 4
+vendor_id	: GenuineIntel
+cpu family	: 6
+model		: 47
+model name	: Intel(R) Xeon(R) CPU E7- 8837  @ 2.67GHz
+stepping	: 2
+cpu MHz		: 1064.000
+cache size	: 24576 KB
+physical id	: 0
+siblings	: 8
+core id		: 16
+cpu cores	: 8
+apicid		: 32
+initial apicid	: 32
+fpu		: yes
+fpu_exception	: yes
+cpuid level	: 11
+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 nx pdpe1gb rdtscp lm constant_tsc arch_perfmon pebs bts rep_good xtopology nonstop_tsc aperfmperf pni pclmulqdq dtes64 monitor ds_cpl vmx smx est tm2 ssse3 cx16 xtpr pdcm dca sse4_1 sse4_2 x2apic popcnt aes lahf_lm ida arat epb dts tpr_shadow vnmi flexpriority ept vpid
+bogomips	: 5320.10
+clflush size	: 64
+cache_alignment	: 64
+address sizes	: 44 bits physical, 48 bits virtual
+power management:
+
+processor	: 5
+vendor_id	: GenuineIntel
+cpu family	: 6
+model		: 47
+model name	: Intel(R) Xeon(R) CPU E7- 8837  @ 2.67GHz
+stepping	: 2
+cpu MHz		: 1064.000
+cache size	: 24576 KB
+physical id	: 0
+siblings	: 8
+core id		: 17
+cpu cores	: 8
+apicid		: 34
+initial apicid	: 34
+fpu		: yes
+fpu_exception	: yes
+cpuid level	: 11
+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 nx pdpe1gb rdtscp lm constant_tsc arch_perfmon pebs bts rep_good xtopology nonstop_tsc aperfmperf pni pclmulqdq dtes64 monitor ds_cpl vmx smx est tm2 ssse3 cx16 xtpr pdcm dca sse4_1 sse4_2 x2apic popcnt aes lahf_lm ida arat epb dts tpr_shadow vnmi flexpriority ept vpid
+bogomips	: 5320.10
+clflush size	: 64
+cache_alignment	: 64
+address sizes	: 44 bits physical, 48 bits virtual
+power management:
+
+processor	: 6
+vendor_id	: GenuineIntel
+cpu family	: 6
+model		: 47
+model name	: Intel(R) Xeon(R) CPU E7- 8837  @ 2.67GHz
+stepping	: 2
+cpu MHz		: 1064.000
+cache size	: 24576 KB
+physical id	: 0
+siblings	: 8
+core id		: 18
+cpu cores	: 8
+apicid		: 36
+initial apicid	: 36
+fpu		: yes
+fpu_exception	: yes
+cpuid level	: 11
+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 nx pdpe1gb rdtscp lm constant_tsc arch_perfmon pebs bts rep_good xtopology nonstop_tsc aperfmperf pni pclmulqdq dtes64 monitor ds_cpl vmx smx est tm2 ssse3 cx16 xtpr pdcm dca sse4_1 sse4_2 x2apic popcnt aes lahf_lm ida arat epb dts tpr_shadow vnmi flexpriority ept vpid
+bogomips	: 5320.10
+clflush size	: 64
+cache_alignment	: 64
+address sizes	: 44 bits physical, 48 bits virtual
+power management:
+
+processor	: 7
+vendor_id	: GenuineIntel
+cpu family	: 6
+model		: 47
+model name	: Intel(R) Xeon(R) CPU E7- 8837  @ 2.67GHz
+stepping	: 2
+cpu MHz		: 1064.000
+cache size	: 24576 KB
+physical id	: 0
+siblings	: 8
+core id		: 24
+cpu cores	: 8
+apicid		: 48
+initial apicid	: 48
+fpu		: yes
+fpu_exception	: yes
+cpuid level	: 11
+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 nx pdpe1gb rdtscp lm constant_tsc arch_perfmon pebs bts rep_good xtopology nonstop_tsc aperfmperf pni pclmulqdq dtes64 monitor ds_cpl vmx smx est tm2 ssse3 cx16 xtpr pdcm dca sse4_1 sse4_2 x2apic popcnt aes lahf_lm ida arat epb dts tpr_shadow vnmi flexpriority ept vpid
+bogomips	: 5320.10
+clflush size	: 64
+cache_alignment	: 64
+address sizes	: 44 bits physical, 48 bits virtual
+power management:
+
+processor	: 8
+vendor_id	: GenuineIntel
+cpu family	: 6
+model		: 47
+model name	: Intel(R) Xeon(R) CPU E7- 8837  @ 2.67GHz
+stepping	: 2
+cpu MHz		: 1064.000
+cache size	: 24576 KB
+physical id	: 1
+siblings	: 8
+core id		: 0
+cpu cores	: 8
+apicid		: 64
+initial apicid	: 64
+fpu		: yes
+fpu_exception	: yes
+cpuid level	: 11
+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 nx pdpe1gb rdtscp lm constant_tsc arch_perfmon pebs bts rep_good xtopology nonstop_tsc aperfmperf pni pclmulqdq dtes64 monitor ds_cpl vmx smx est tm2 ssse3 cx16 xtpr pdcm dca sse4_1 sse4_2 x2apic popcnt aes lahf_lm ida arat epb dts tpr_shadow vnmi flexpriority ept vpid
+bogomips	: 5319.83
+clflush size	: 64
+cache_alignment	: 64
+address sizes	: 44 bits physical, 48 bits virtual
+power management:
+
+processor	: 9
+vendor_id	: GenuineIntel
+cpu family	: 6
+model		: 47
+model name	: Intel(R) Xeon(R) CPU E7- 8837  @ 2.67GHz
+stepping	: 2
+cpu MHz		: 1064.000
+cache size	: 24576 KB
+physical id	: 1
+siblings	: 8
+core id		: 2
+cpu cores	: 8
+apicid		: 68
+initial apicid	: 68
+fpu		: yes
+fpu_exception	: yes
+cpuid level	: 11
+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 nx pdpe1gb rdtscp lm constant_tsc arch_perfmon pebs bts rep_good xtopology nonstop_tsc aperfmperf pni pclmulqdq dtes64 monitor ds_cpl vmx smx est tm2 ssse3 cx16 xtpr pdcm dca sse4_1 sse4_2 x2apic popcnt aes lahf_lm ida arat epb dts tpr_shadow vnmi flexpriority ept vpid
+bogomips	: 5319.83
+clflush size	: 64
+cache_alignment	: 64
+address sizes	: 44 bits physical, 48 bits virtual
+power management:
+
+processor	: 10
+vendor_id	: GenuineIntel
+cpu family	: 6
+model		: 47
+model name	: Intel(R) Xeon(R) CPU E7- 8837  @ 2.67GHz
+stepping	: 2
+cpu MHz		: 1064.000
+cache size	: 24576 KB
+physical id	: 1
+siblings	: 8
+core id		: 8
+cpu cores	: 8
+apicid		: 80
+initial apicid	: 80
+fpu		: yes
+fpu_exception	: yes
+cpuid level	: 11
+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 nx pdpe1gb rdtscp lm constant_tsc arch_perfmon pebs bts rep_good xtopology nonstop_tsc aperfmperf pni pclmulqdq dtes64 monitor ds_cpl vmx smx est tm2 ssse3 cx16 xtpr pdcm dca sse4_1 sse4_2 x2apic popcnt aes lahf_lm ida arat epb dts tpr_shadow vnmi flexpriority ept vpid
+bogomips	: 5319.83
+clflush size	: 64
+cache_alignment	: 64
+address sizes	: 44 bits physical, 48 bits virtual
+power management:
+
+processor	: 11
+vendor_id	: GenuineIntel
+cpu family	: 6
+model		: 47
+model name	: Intel(R) Xeon(R) CPU E7- 8837  @ 2.67GHz
+stepping	: 2
+cpu MHz		: 1064.000
+cache size	: 24576 KB
+physical id	: 1
+siblings	: 8
+core id		: 9
+cpu cores	: 8
+apicid		: 82
+initial apicid	: 82
+fpu		: yes
+fpu_exception	: yes
+cpuid level	: 11
+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 nx pdpe1gb rdtscp lm constant_tsc arch_perfmon pebs bts rep_good xtopology nonstop_tsc aperfmperf pni pclmulqdq dtes64 monitor ds_cpl vmx smx est tm2 ssse3 cx16 xtpr pdcm dca sse4_1 sse4_2 x2apic popcnt aes lahf_lm ida arat epb dts tpr_shadow vnmi flexpriority ept vpid
+bogomips	: 5319.83
+clflush size	: 64
+cache_alignment	: 64
+address sizes	: 44 bits physical, 48 bits virtual
+power management:
+
+processor	: 12
+vendor_id	: GenuineIntel
+cpu family	: 6
+model		: 47
+model name	: Intel(R) Xeon(R) CPU E7- 8837  @ 2.67GHz
+stepping	: 2
+cpu MHz		: 1064.000
+cache size	: 24576 KB
+physical id	: 1
+siblings	: 8
+core id		: 16
+cpu cores	: 8
+apicid		: 96
+initial apicid	: 96
+fpu		: yes
+fpu_exception	: yes
+cpuid level	: 11
+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 nx pdpe1gb rdtscp lm constant_tsc arch_perfmon pebs bts rep_good xtopology nonstop_tsc aperfmperf pni pclmulqdq dtes64 monitor ds_cpl vmx smx est tm2 ssse3 cx16 xtpr pdcm dca sse4_1 sse4_2 x2apic popcnt aes lahf_lm ida arat epb dts tpr_shadow vnmi flexpriority ept vpid
+bogomips	: 5319.83
+clflush size	: 64
+cache_alignment	: 64
+address sizes	: 44 bits physical, 48 bits virtual
+power management:
+
+processor	: 13
+vendor_id	: GenuineIntel
+cpu family	: 6
+model		: 47
+model name	: Intel(R) Xeon(R) CPU E7- 8837  @ 2.67GHz
+stepping	: 2
+cpu MHz		: 1064.000
+cache size	: 24576 KB
+physical id	: 1
+siblings	: 8
+core id		: 17
+cpu cores	: 8
+apicid		: 98
+initial apicid	: 98
+fpu		: yes
+fpu_exception	: yes
+cpuid level	: 11
+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 nx pdpe1gb rdtscp lm constant_tsc arch_perfmon pebs bts rep_good xtopology nonstop_tsc aperfmperf pni pclmulqdq dtes64 monitor ds_cpl vmx smx est tm2 ssse3 cx16 xtpr pdcm dca sse4_1 sse4_2 x2apic popcnt aes lahf_lm ida arat epb dts tpr_shadow vnmi flexpriority ept vpid
+bogomips	: 5319.83
+clflush size	: 64
+cache_alignment	: 64
+address sizes	: 44 bits physical, 48 bits virtual
+power management:
+
+processor	: 14
+vendor_id	: GenuineIntel
+cpu family	: 6
+model		: 47
+model name	: Intel(R) Xeon(R) CPU E7- 8837  @ 2.67GHz
+stepping	: 2
+cpu MHz		: 1064.000
+cache size	: 24576 KB
+physical id	: 1
+siblings	: 8
+core id		: 18
+cpu cores	: 8
+apicid		: 100
+initial apicid	: 100
+fpu		: yes
+fpu_exception	: yes
+cpuid level	: 11
+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 nx pdpe1gb rdtscp lm constant_tsc arch_perfmon pebs bts rep_good xtopology nonstop_tsc aperfmperf pni pclmulqdq dtes64 monitor ds_cpl vmx smx est tm2 ssse3 cx16 xtpr pdcm dca sse4_1 sse4_2 x2apic popcnt aes lahf_lm ida arat epb dts tpr_shadow vnmi flexpriority ept vpid
+bogomips	: 5319.83
+clflush size	: 64
+cache_alignment	: 64
+address sizes	: 44 bits physical, 48 bits virtual
+power management:
+
+processor	: 15
+vendor_id	: GenuineIntel
+cpu family	: 6
+model		: 47
+model name	: Intel(R) Xeon(R) CPU E7- 8837  @ 2.67GHz
+stepping	: 2
+cpu MHz		: 1064.000
+cache size	: 24576 KB
+physical id	: 1
+siblings	: 8
+core id		: 25
+cpu cores	: 8
+apicid		: 114
+initial apicid	: 114
+fpu		: yes
+fpu_exception	: yes
+cpuid level	: 11
+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 nx pdpe1gb rdtscp lm constant_tsc arch_perfmon pebs bts rep_good xtopology nonstop_tsc aperfmperf pni pclmulqdq dtes64 monitor ds_cpl vmx smx est tm2 ssse3 cx16 xtpr pdcm dca sse4_1 sse4_2 x2apic popcnt aes lahf_lm ida arat epb dts tpr_shadow vnmi flexpriority ept vpid
+bogomips	: 5319.83
+clflush size	: 64
+cache_alignment	: 64
+address sizes	: 44 bits physical, 48 bits virtual
+power management:
+
diff --git a/tests/nodeinfodata/linux-nodeinfo-sysfs-test-4/cpu/cpu0/topology/core_id b/tests/nodeinfodata/linux-nodeinfo-sysfs-test-4/cpu/cpu0/topology/core_id
new file mode 100644
index 0000000..d00491f
--- /dev/null
+++ b/tests/nodeinfodata/linux-nodeinfo-sysfs-test-4/cpu/cpu0/topology/core_id
@@ -0,0 +1 @@
+1
diff --git a/tests/nodeinfodata/linux-nodeinfo-sysfs-test-4/cpu/cpu0/topology/physical_package_id b/tests/nodeinfodata/linux-nodeinfo-sysfs-test-4/cpu/cpu0/topology/physical_package_id
new file mode 100644
index 0000000..573541a
--- /dev/null
+++ b/tests/nodeinfodata/linux-nodeinfo-sysfs-test-4/cpu/cpu0/topology/physical_package_id
@@ -0,0 +1 @@
+0
diff --git a/tests/nodeinfodata/linux-nodeinfo-sysfs-test-4/cpu/cpu0/topology/thread_siblings b/tests/nodeinfodata/linux-nodeinfo-sysfs-test-4/cpu/cpu0/topology/thread_siblings
new file mode 100644
index 0000000..6350475
--- /dev/null
+++ b/tests/nodeinfodata/linux-nodeinfo-sysfs-test-4/cpu/cpu0/topology/thread_siblings
@@ -0,0 +1 @@
+0001
diff --git a/tests/nodeinfodata/linux-nodeinfo-sysfs-test-4/cpu/cpu1/topology/core_id b/tests/nodeinfodata/linux-nodeinfo-sysfs-test-4/cpu/cpu1/topology/core_id
new file mode 100644
index 0000000..0cfbf08
--- /dev/null
+++ b/tests/nodeinfodata/linux-nodeinfo-sysfs-test-4/cpu/cpu1/topology/core_id
@@ -0,0 +1 @@
+2
diff --git a/tests/nodeinfodata/linux-nodeinfo-sysfs-test-4/cpu/cpu1/topology/physical_package_id b/tests/nodeinfodata/linux-nodeinfo-sysfs-test-4/cpu/cpu1/topology/physical_package_id
new file mode 100644
index 0000000..573541a
--- /dev/null
+++ b/tests/nodeinfodata/linux-nodeinfo-sysfs-test-4/cpu/cpu1/topology/physical_package_id
@@ -0,0 +1 @@
+0
diff --git a/tests/nodeinfodata/linux-nodeinfo-sysfs-test-4/cpu/cpu1/topology/thread_siblings b/tests/nodeinfodata/linux-nodeinfo-sysfs-test-4/cpu/cpu1/topology/thread_siblings
new file mode 100644
index 0000000..5fca1fd
--- /dev/null
+++ b/tests/nodeinfodata/linux-nodeinfo-sysfs-test-4/cpu/cpu1/topology/thread_siblings
@@ -0,0 +1 @@
+0002
diff --git a/tests/nodeinfodata/linux-nodeinfo-sysfs-test-4/cpu/cpu10/topology/core_id b/tests/nodeinfodata/linux-nodeinfo-sysfs-test-4/cpu/cpu10/topology/core_id
new file mode 100644
index 0000000..45a4fb7
--- /dev/null
+++ b/tests/nodeinfodata/linux-nodeinfo-sysfs-test-4/cpu/cpu10/topology/core_id
@@ -0,0 +1 @@
+8
diff --git a/tests/nodeinfodata/linux-nodeinfo-sysfs-test-4/cpu/cpu10/topology/physical_package_id b/tests/nodeinfodata/linux-nodeinfo-sysfs-test-4/cpu/cpu10/topology/physical_package_id
new file mode 100644
index 0000000..d00491f
--- /dev/null
+++ b/tests/nodeinfodata/linux-nodeinfo-sysfs-test-4/cpu/cpu10/topology/physical_package_id
@@ -0,0 +1 @@
+1
diff --git a/tests/nodeinfodata/linux-nodeinfo-sysfs-test-4/cpu/cpu10/topology/thread_siblings b/tests/nodeinfodata/linux-nodeinfo-sysfs-test-4/cpu/cpu10/topology/thread_siblings
new file mode 100644
index 0000000..cde5dce
--- /dev/null
+++ b/tests/nodeinfodata/linux-nodeinfo-sysfs-test-4/cpu/cpu10/topology/thread_siblings
@@ -0,0 +1 @@
+0400
diff --git a/tests/nodeinfodata/linux-nodeinfo-sysfs-test-4/cpu/cpu11/topology/core_id b/tests/nodeinfodata/linux-nodeinfo-sysfs-test-4/cpu/cpu11/topology/core_id
new file mode 100644
index 0000000..ec63514
--- /dev/null
+++ b/tests/nodeinfodata/linux-nodeinfo-sysfs-test-4/cpu/cpu11/topology/core_id
@@ -0,0 +1 @@
+9
diff --git a/tests/nodeinfodata/linux-nodeinfo-sysfs-test-4/cpu/cpu11/topology/physical_package_id b/tests/nodeinfodata/linux-nodeinfo-sysfs-test-4/cpu/cpu11/topology/physical_package_id
new file mode 100644
index 0000000..d00491f
--- /dev/null
+++ b/tests/nodeinfodata/linux-nodeinfo-sysfs-test-4/cpu/cpu11/topology/physical_package_id
@@ -0,0 +1 @@
+1
diff --git a/tests/nodeinfodata/linux-nodeinfo-sysfs-test-4/cpu/cpu11/topology/thread_siblings b/tests/nodeinfodata/linux-nodeinfo-sysfs-test-4/cpu/cpu11/topology/thread_siblings
new file mode 100644
index 0000000..54c3371
--- /dev/null
+++ b/tests/nodeinfodata/linux-nodeinfo-sysfs-test-4/cpu/cpu11/topology/thread_siblings
@@ -0,0 +1 @@
+0800
diff --git a/tests/nodeinfodata/linux-nodeinfo-sysfs-test-4/cpu/cpu12/topology/core_id b/tests/nodeinfodata/linux-nodeinfo-sysfs-test-4/cpu/cpu12/topology/core_id
new file mode 100644
index 0000000..b6a7d89
--- /dev/null
+++ b/tests/nodeinfodata/linux-nodeinfo-sysfs-test-4/cpu/cpu12/topology/core_id
@@ -0,0 +1 @@
+16
diff --git a/tests/nodeinfodata/linux-nodeinfo-sysfs-test-4/cpu/cpu12/topology/physical_package_id b/tests/nodeinfodata/linux-nodeinfo-sysfs-test-4/cpu/cpu12/topology/physical_package_id
new file mode 100644
index 0000000..d00491f
--- /dev/null
+++ b/tests/nodeinfodata/linux-nodeinfo-sysfs-test-4/cpu/cpu12/topology/physical_package_id
@@ -0,0 +1 @@
+1
diff --git a/tests/nodeinfodata/linux-nodeinfo-sysfs-test-4/cpu/cpu12/topology/thread_siblings b/tests/nodeinfodata/linux-nodeinfo-sysfs-test-4/cpu/cpu12/topology/thread_siblings
new file mode 100644
index 0000000..83b33d2
--- /dev/null
+++ b/tests/nodeinfodata/linux-nodeinfo-sysfs-test-4/cpu/cpu12/topology/thread_siblings
@@ -0,0 +1 @@
+1000
diff --git a/tests/nodeinfodata/linux-nodeinfo-sysfs-test-4/cpu/cpu13/topology/core_id b/tests/nodeinfodata/linux-nodeinfo-sysfs-test-4/cpu/cpu13/topology/core_id
new file mode 100644
index 0000000..98d9bcb
--- /dev/null
+++ b/tests/nodeinfodata/linux-nodeinfo-sysfs-test-4/cpu/cpu13/topology/core_id
@@ -0,0 +1 @@
+17
diff --git a/tests/nodeinfodata/linux-nodeinfo-sysfs-test-4/cpu/cpu13/topology/physical_package_id b/tests/nodeinfodata/linux-nodeinfo-sysfs-test-4/cpu/cpu13/topology/physical_package_id
new file mode 100644
index 0000000..d00491f
--- /dev/null
+++ b/tests/nodeinfodata/linux-nodeinfo-sysfs-test-4/cpu/cpu13/topology/physical_package_id
@@ -0,0 +1 @@
+1
diff --git a/tests/nodeinfodata/linux-nodeinfo-sysfs-test-4/cpu/cpu13/topology/thread_siblings b/tests/nodeinfodata/linux-nodeinfo-sysfs-test-4/cpu/cpu13/topology/thread_siblings
new file mode 100644
index 0000000..8bd1af1
--- /dev/null
+++ b/tests/nodeinfodata/linux-nodeinfo-sysfs-test-4/cpu/cpu13/topology/thread_siblings
@@ -0,0 +1 @@
+2000
diff --git a/tests/nodeinfodata/linux-nodeinfo-sysfs-test-4/cpu/cpu14/topology/core_id b/tests/nodeinfodata/linux-nodeinfo-sysfs-test-4/cpu/cpu14/topology/core_id
new file mode 100644
index 0000000..3c03207
--- /dev/null
+++ b/tests/nodeinfodata/linux-nodeinfo-sysfs-test-4/cpu/cpu14/topology/core_id
@@ -0,0 +1 @@
+18
diff --git a/tests/nodeinfodata/linux-nodeinfo-sysfs-test-4/cpu/cpu14/topology/physical_package_id b/tests/nodeinfodata/linux-nodeinfo-sysfs-test-4/cpu/cpu14/topology/physical_package_id
new file mode 100644
index 0000000..d00491f
--- /dev/null
+++ b/tests/nodeinfodata/linux-nodeinfo-sysfs-test-4/cpu/cpu14/topology/physical_package_id
@@ -0,0 +1 @@
+1
diff --git a/tests/nodeinfodata/linux-nodeinfo-sysfs-test-4/cpu/cpu14/topology/thread_siblings b/tests/nodeinfodata/linux-nodeinfo-sysfs-test-4/cpu/cpu14/topology/thread_siblings
new file mode 100644
index 0000000..26a4dd3
--- /dev/null
+++ b/tests/nodeinfodata/linux-nodeinfo-sysfs-test-4/cpu/cpu14/topology/thread_siblings
@@ -0,0 +1 @@
+4000
diff --git a/tests/nodeinfodata/linux-nodeinfo-sysfs-test-4/cpu/cpu15/topology/core_id b/tests/nodeinfodata/linux-nodeinfo-sysfs-test-4/cpu/cpu15/topology/core_id
new file mode 100644
index 0000000..7273c0f
--- /dev/null
+++ b/tests/nodeinfodata/linux-nodeinfo-sysfs-test-4/cpu/cpu15/topology/core_id
@@ -0,0 +1 @@
+25
diff --git a/tests/nodeinfodata/linux-nodeinfo-sysfs-test-4/cpu/cpu15/topology/physical_package_id b/tests/nodeinfodata/linux-nodeinfo-sysfs-test-4/cpu/cpu15/topology/physical_package_id
new file mode 100644
index 0000000..d00491f
--- /dev/null
+++ b/tests/nodeinfodata/linux-nodeinfo-sysfs-test-4/cpu/cpu15/topology/physical_package_id
@@ -0,0 +1 @@
+1
diff --git a/tests/nodeinfodata/linux-nodeinfo-sysfs-test-4/cpu/cpu15/topology/thread_siblings b/tests/nodeinfodata/linux-nodeinfo-sysfs-test-4/cpu/cpu15/topology/thread_siblings
new file mode 100644
index 0000000..e002b36
--- /dev/null
+++ b/tests/nodeinfodata/linux-nodeinfo-sysfs-test-4/cpu/cpu15/topology/thread_siblings
@@ -0,0 +1 @@
+8000
diff --git a/tests/nodeinfodata/linux-nodeinfo-sysfs-test-4/cpu/cpu2/topology/core_id b/tests/nodeinfodata/linux-nodeinfo-sysfs-test-4/cpu/cpu2/topology/core_id
new file mode 100644
index 0000000..45a4fb7
--- /dev/null
+++ b/tests/nodeinfodata/linux-nodeinfo-sysfs-test-4/cpu/cpu2/topology/core_id
@@ -0,0 +1 @@
+8
diff --git a/tests/nodeinfodata/linux-nodeinfo-sysfs-test-4/cpu/cpu2/topology/physical_package_id b/tests/nodeinfodata/linux-nodeinfo-sysfs-test-4/cpu/cpu2/topology/physical_package_id
new file mode 100644
index 0000000..573541a
--- /dev/null
+++ b/tests/nodeinfodata/linux-nodeinfo-sysfs-test-4/cpu/cpu2/topology/physical_package_id
@@ -0,0 +1 @@
+0
diff --git a/tests/nodeinfodata/linux-nodeinfo-sysfs-test-4/cpu/cpu2/topology/thread_siblings b/tests/nodeinfodata/linux-nodeinfo-sysfs-test-4/cpu/cpu2/topology/thread_siblings
new file mode 100644
index 0000000..e224381
--- /dev/null
+++ b/tests/nodeinfodata/linux-nodeinfo-sysfs-test-4/cpu/cpu2/topology/thread_siblings
@@ -0,0 +1 @@
+0004
diff --git a/tests/nodeinfodata/linux-nodeinfo-sysfs-test-4/cpu/cpu3/topology/core_id b/tests/nodeinfodata/linux-nodeinfo-sysfs-test-4/cpu/cpu3/topology/core_id
new file mode 100644
index 0000000..ec63514
--- /dev/null
+++ b/tests/nodeinfodata/linux-nodeinfo-sysfs-test-4/cpu/cpu3/topology/core_id
@@ -0,0 +1 @@
+9
diff --git a/tests/nodeinfodata/linux-nodeinfo-sysfs-test-4/cpu/cpu3/topology/physical_package_id b/tests/nodeinfodata/linux-nodeinfo-sysfs-test-4/cpu/cpu3/topology/physical_package_id
new file mode 100644
index 0000000..573541a
--- /dev/null
+++ b/tests/nodeinfodata/linux-nodeinfo-sysfs-test-4/cpu/cpu3/topology/physical_package_id
@@ -0,0 +1 @@
+0
diff --git a/tests/nodeinfodata/linux-nodeinfo-sysfs-test-4/cpu/cpu3/topology/thread_siblings b/tests/nodeinfodata/linux-nodeinfo-sysfs-test-4/cpu/cpu3/topology/thread_siblings
new file mode 100644
index 0000000..be15c71
--- /dev/null
+++ b/tests/nodeinfodata/linux-nodeinfo-sysfs-test-4/cpu/cpu3/topology/thread_siblings
@@ -0,0 +1 @@
+0008
diff --git a/tests/nodeinfodata/linux-nodeinfo-sysfs-test-4/cpu/cpu4/topology/core_id b/tests/nodeinfodata/linux-nodeinfo-sysfs-test-4/cpu/cpu4/topology/core_id
new file mode 100644
index 0000000..b6a7d89
--- /dev/null
+++ b/tests/nodeinfodata/linux-nodeinfo-sysfs-test-4/cpu/cpu4/topology/core_id
@@ -0,0 +1 @@
+16
diff --git a/tests/nodeinfodata/linux-nodeinfo-sysfs-test-4/cpu/cpu4/topology/physical_package_id b/tests/nodeinfodata/linux-nodeinfo-sysfs-test-4/cpu/cpu4/topology/physical_package_id
new file mode 100644
index 0000000..573541a
--- /dev/null
+++ b/tests/nodeinfodata/linux-nodeinfo-sysfs-test-4/cpu/cpu4/topology/physical_package_id
@@ -0,0 +1 @@
+0
diff --git a/tests/nodeinfodata/linux-nodeinfo-sysfs-test-4/cpu/cpu4/topology/thread_siblings b/tests/nodeinfodata/linux-nodeinfo-sysfs-test-4/cpu/cpu4/topology/thread_siblings
new file mode 100644
index 0000000..66375d5
--- /dev/null
+++ b/tests/nodeinfodata/linux-nodeinfo-sysfs-test-4/cpu/cpu4/topology/thread_siblings
@@ -0,0 +1 @@
+0010
diff --git a/tests/nodeinfodata/linux-nodeinfo-sysfs-test-4/cpu/cpu5/topology/core_id b/tests/nodeinfodata/linux-nodeinfo-sysfs-test-4/cpu/cpu5/topology/core_id
new file mode 100644
index 0000000..98d9bcb
--- /dev/null
+++ b/tests/nodeinfodata/linux-nodeinfo-sysfs-test-4/cpu/cpu5/topology/core_id
@@ -0,0 +1 @@
+17
diff --git a/tests/nodeinfodata/linux-nodeinfo-sysfs-test-4/cpu/cpu5/topology/physical_package_id b/tests/nodeinfodata/linux-nodeinfo-sysfs-test-4/cpu/cpu5/topology/physical_package_id
new file mode 100644
index 0000000..573541a
--- /dev/null
+++ b/tests/nodeinfodata/linux-nodeinfo-sysfs-test-4/cpu/cpu5/topology/physical_package_id
@@ -0,0 +1 @@
+0
diff --git a/tests/nodeinfodata/linux-nodeinfo-sysfs-test-4/cpu/cpu5/topology/thread_siblings b/tests/nodeinfodata/linux-nodeinfo-sysfs-test-4/cpu/cpu5/topology/thread_siblings
new file mode 100644
index 0000000..0bfe020
--- /dev/null
+++ b/tests/nodeinfodata/linux-nodeinfo-sysfs-test-4/cpu/cpu5/topology/thread_siblings
@@ -0,0 +1 @@
+0020
diff --git a/tests/nodeinfodata/linux-nodeinfo-sysfs-test-4/cpu/cpu6/topology/core_id b/tests/nodeinfodata/linux-nodeinfo-sysfs-test-4/cpu/cpu6/topology/core_id
new file mode 100644
index 0000000..3c03207
--- /dev/null
+++ b/tests/nodeinfodata/linux-nodeinfo-sysfs-test-4/cpu/cpu6/topology/core_id
@@ -0,0 +1 @@
+18
diff --git a/tests/nodeinfodata/linux-nodeinfo-sysfs-test-4/cpu/cpu6/topology/physical_package_id b/tests/nodeinfodata/linux-nodeinfo-sysfs-test-4/cpu/cpu6/topology/physical_package_id
new file mode 100644
index 0000000..573541a
--- /dev/null
+++ b/tests/nodeinfodata/linux-nodeinfo-sysfs-test-4/cpu/cpu6/topology/physical_package_id
@@ -0,0 +1 @@
+0
diff --git a/tests/nodeinfodata/linux-nodeinfo-sysfs-test-4/cpu/cpu6/topology/thread_siblings b/tests/nodeinfodata/linux-nodeinfo-sysfs-test-4/cpu/cpu6/topology/thread_siblings
new file mode 100644
index 0000000..b5fda7b
--- /dev/null
+++ b/tests/nodeinfodata/linux-nodeinfo-sysfs-test-4/cpu/cpu6/topology/thread_siblings
@@ -0,0 +1 @@
+0040
diff --git a/tests/nodeinfodata/linux-nodeinfo-sysfs-test-4/cpu/cpu7/topology/core_id b/tests/nodeinfodata/linux-nodeinfo-sysfs-test-4/cpu/cpu7/topology/core_id
new file mode 100644
index 0000000..a45fd52
--- /dev/null
+++ b/tests/nodeinfodata/linux-nodeinfo-sysfs-test-4/cpu/cpu7/topology/core_id
@@ -0,0 +1 @@
+24
diff --git a/tests/nodeinfodata/linux-nodeinfo-sysfs-test-4/cpu/cpu7/topology/physical_package_id b/tests/nodeinfodata/linux-nodeinfo-sysfs-test-4/cpu/cpu7/topology/physical_package_id
new file mode 100644
index 0000000..573541a
--- /dev/null
+++ b/tests/nodeinfodata/linux-nodeinfo-sysfs-test-4/cpu/cpu7/topology/physical_package_id
@@ -0,0 +1 @@
+0
diff --git a/tests/nodeinfodata/linux-nodeinfo-sysfs-test-4/cpu/cpu7/topology/thread_siblings b/tests/nodeinfodata/linux-nodeinfo-sysfs-test-4/cpu/cpu7/topology/thread_siblings
new file mode 100644
index 0000000..d46f197
--- /dev/null
+++ b/tests/nodeinfodata/linux-nodeinfo-sysfs-test-4/cpu/cpu7/topology/thread_siblings
@@ -0,0 +1 @@
+0080
diff --git a/tests/nodeinfodata/linux-nodeinfo-sysfs-test-4/cpu/cpu8/topology/core_id b/tests/nodeinfodata/linux-nodeinfo-sysfs-test-4/cpu/cpu8/topology/core_id
new file mode 100644
index 0000000..573541a
--- /dev/null
+++ b/tests/nodeinfodata/linux-nodeinfo-sysfs-test-4/cpu/cpu8/topology/core_id
@@ -0,0 +1 @@
+0
diff --git a/tests/nodeinfodata/linux-nodeinfo-sysfs-test-4/cpu/cpu8/topology/physical_package_id b/tests/nodeinfodata/linux-nodeinfo-sysfs-test-4/cpu/cpu8/topology/physical_package_id
new file mode 100644
index 0000000..d00491f
--- /dev/null
+++ b/tests/nodeinfodata/linux-nodeinfo-sysfs-test-4/cpu/cpu8/topology/physical_package_id
@@ -0,0 +1 @@
+1
diff --git a/tests/nodeinfodata/linux-nodeinfo-sysfs-test-4/cpu/cpu8/topology/thread_siblings b/tests/nodeinfodata/linux-nodeinfo-sysfs-test-4/cpu/cpu8/topology/thread_siblings
new file mode 100644
index 0000000..e199843
--- /dev/null
+++ b/tests/nodeinfodata/linux-nodeinfo-sysfs-test-4/cpu/cpu8/topology/thread_siblings
@@ -0,0 +1 @@
+0100
diff --git a/tests/nodeinfodata/linux-nodeinfo-sysfs-test-4/cpu/cpu9/topology/core_id b/tests/nodeinfodata/linux-nodeinfo-sysfs-test-4/cpu/cpu9/topology/core_id
new file mode 100644
index 0000000..0cfbf08
--- /dev/null
+++ b/tests/nodeinfodata/linux-nodeinfo-sysfs-test-4/cpu/cpu9/topology/core_id
@@ -0,0 +1 @@
+2
diff --git a/tests/nodeinfodata/linux-nodeinfo-sysfs-test-4/cpu/cpu9/topology/physical_package_id b/tests/nodeinfodata/linux-nodeinfo-sysfs-test-4/cpu/cpu9/topology/physical_package_id
new file mode 100644
index 0000000..d00491f
--- /dev/null
+++ b/tests/nodeinfodata/linux-nodeinfo-sysfs-test-4/cpu/cpu9/topology/physical_package_id
@@ -0,0 +1 @@
+1
diff --git a/tests/nodeinfodata/linux-nodeinfo-sysfs-test-4/cpu/cpu9/topology/thread_siblings b/tests/nodeinfodata/linux-nodeinfo-sysfs-test-4/cpu/cpu9/topology/thread_siblings
new file mode 100644
index 0000000..092ce5f
--- /dev/null
+++ b/tests/nodeinfodata/linux-nodeinfo-sysfs-test-4/cpu/cpu9/topology/thread_siblings
@@ -0,0 +1 @@
+0200
diff --git a/tests/nodeinfodata/linux-nodeinfo-sysfs-test-4/node/node0/meminfo b/tests/nodeinfodata/linux-nodeinfo-sysfs-test-4/node/node0/meminfo
new file mode 100644
index 0000000..c74a372
--- /dev/null
+++ b/tests/nodeinfodata/linux-nodeinfo-sysfs-test-4/node/node0/meminfo
@@ -0,0 +1,29 @@
+
+Node 0 MemTotal:       67002564 kB
+Node 0 MemFree:        63623272 kB
+Node 0 MemUsed:         3379292 kB
+Node 0 Active:          1335192 kB
+Node 0 Inactive:         157792 kB
+Node 0 Active(anon):    1170928 kB
+Node 0 Inactive(anon):     1168 kB
+Node 0 Active(file):     164264 kB
+Node 0 Inactive(file):   156624 kB
+Node 0 Unevictable:           0 kB
+Node 0 Mlocked:               0 kB
+Node 0 Dirty:                56 kB
+Node 0 Writeback:             0 kB
+Node 0 FilePages:        322312 kB
+Node 0 Mapped:            29584 kB
+Node 0 AnonPages:        111848 kB
+Node 0 Shmem:              1432 kB
+Node 0 KernelStack:        3712 kB
+Node 0 PageTables:        12024 kB
+Node 0 NFS_Unstable:          0 kB
+Node 0 Bounce:                0 kB
+Node 0 WritebackTmp:          0 kB
+Node 0 Slab:              88028 kB
+Node 0 SReclaimable:      50972 kB
+Node 0 SUnreclaim:        37056 kB
+Node 0 HugePages_Total:     0
+Node 0 HugePages_Free:      0
+Node 0 HugePages_Surp:      0
diff --git a/tests/nodeinfodata/linux-nodeinfo-sysfs-test-4/node/node1/meminfo b/tests/nodeinfodata/linux-nodeinfo-sysfs-test-4/node/node1/meminfo
new file mode 100644
index 0000000..1f59f19
--- /dev/null
+++ b/tests/nodeinfodata/linux-nodeinfo-sysfs-test-4/node/node1/meminfo
@@ -0,0 +1,29 @@
+
+Node 1 MemTotal:       67108864 kB
+Node 1 MemFree:        61752192 kB
+Node 1 MemUsed:         5356672 kB
+Node 1 Active:          3325724 kB
+Node 1 Inactive:         206476 kB
+Node 1 Active(anon):    3124584 kB
+Node 1 Inactive(anon):     4348 kB
+Node 1 Active(file):     201140 kB
+Node 1 Inactive(file):   202128 kB
+Node 1 Unevictable:           0 kB
+Node 1 Mlocked:               0 kB
+Node 1 Dirty:             25996 kB
+Node 1 Writeback:             0 kB
+Node 1 FilePages:        408200 kB
+Node 1 Mapped:            28620 kB
+Node 1 AnonPages:        112092 kB
+Node 1 Shmem:              4432 kB
+Node 1 KernelStack:        1184 kB
+Node 1 PageTables:        15848 kB
+Node 1 NFS_Unstable:          0 kB
+Node 1 Bounce:                0 kB
+Node 1 WritebackTmp:          0 kB
+Node 1 Slab:             126440 kB
+Node 1 SReclaimable:      52996 kB
+Node 1 SUnreclaim:        73444 kB
+Node 1 HugePages_Total:     0
+Node 1 HugePages_Free:      0
+Node 1 HugePages_Surp:      0
diff --git a/tests/nodeinfodata/linux-nodeinfo-sysfs-test-4/node/possible b/tests/nodeinfodata/linux-nodeinfo-sysfs-test-4/node/possible
new file mode 100644
index 0000000000000000000000000000000000000000..138b411f24a5cecb7a254a97b9584b276c805be2
GIT binary patch
literal 5
McmXreHRNId00K||nE(I)

literal 0
HcmV?d00001

diff --git a/tests/nodeinfotest.c b/tests/nodeinfotest.c
index a2b89dd..09dae40 100644
--- a/tests/nodeinfotest.c
+++ b/tests/nodeinfotest.c
@@ -128,6 +128,7 @@ mymain(void)
        defined(__powerpc64__))
         "nodeinfo-sysfs-test-2",
         "nodeinfo-sysfs-test-3",
+        "nodeinfo-sysfs-test-4",
 # endif
     };

-- 
1.7.8.6




More information about the libvir-list mailing list