From 0e36bf7acfb0abdd1ff348b0af3fb6024e142d70 Mon Sep 17 00:00:00 2001 From: Brice Goglin Date: Thu, 16 Jan 2014 15:07:18 +0100 Subject: [PATCH] tests/linux: add a test with very buggy NUMA info Linux reports 8 NUMA nodes containing the (same) entire list of all cores, hence all of them get merged. Thanks to Jeff Becker for the test case. --- tests/linux/8em64t-2s2ca2c-buggynuma.output | 49 +++++++++++++++++++ tests/linux/8em64t-2s2ca2c-buggynuma.tar.bz2 | Bin 0 -> 10547 bytes tests/linux/Makefile.am | 4 +- 3 files changed, 52 insertions(+), 1 deletion(-) create mode 100644 tests/linux/8em64t-2s2ca2c-buggynuma.output create mode 100644 tests/linux/8em64t-2s2ca2c-buggynuma.tar.bz2 diff --git a/tests/linux/8em64t-2s2ca2c-buggynuma.output b/tests/linux/8em64t-2s2ca2c-buggynuma.output new file mode 100644 index 00000000..86a23198 --- /dev/null +++ b/tests/linux/8em64t-2s2ca2c-buggynuma.output @@ -0,0 +1,49 @@ +Machine (P#0 total=2096684KB DMIProductName=AltixXE320 DMIProductVersion=AltixXE DMIBoardVendor=SM DMIBoardName=X7DWT-INF DMIBoardVersion=1.01 DMIBoardAssetTag= DMIChassisVendor=SGI.COM DMIChassisType=1 DMIChassisVersion=013-5556-002 DMIChassisAssetTag=" " DMIBIOSVendor="Phoenix Technologies LTD" DMIBIOSVersion=.0b DMIBIOSDate=03/24/2008 DMISysVendor=SGI.COM Backend=Linux LinuxCgroup=/) + NUMANode L#0 (P#0 local=2096684KB total=2096684KB) + Socket L#0 (P#0 CPUModel="Intel(R) Xeon(R) CPU E5472 @ 3.00GHz") + L2Cache L#0 (size=6144KB linesize=64 ways=24) + L1dCache L#0 (size=32KB linesize=64 ways=8) + L1iCache L#0 (size=32KB linesize=64 ways=8) + Core L#0 (P#0) + PU L#0 (P#0) + L1dCache L#1 (size=32KB linesize=64 ways=8) + L1iCache L#1 (size=32KB linesize=64 ways=8) + Core L#1 (P#1) + PU L#1 (P#2) + L2Cache L#1 (size=6144KB linesize=64 ways=24) + L1dCache L#2 (size=32KB linesize=64 ways=8) + L1iCache L#2 (size=32KB linesize=64 ways=8) + Core L#2 (P#2) + PU L#2 (P#4) + L1dCache L#3 (size=32KB linesize=64 ways=8) + L1iCache L#3 (size=32KB linesize=64 ways=8) + Core L#3 (P#3) + PU L#3 (P#6) + Socket L#1 (P#1 CPUModel="Intel(R) Xeon(R) CPU E5472 @ 3.00GHz") + L2Cache L#2 (size=6144KB linesize=64 ways=24) + L1dCache L#4 (size=32KB linesize=64 ways=8) + L1iCache L#4 (size=32KB linesize=64 ways=8) + Core L#4 (P#0) + PU L#4 (P#1) + L1dCache L#5 (size=32KB linesize=64 ways=8) + L1iCache L#5 (size=32KB linesize=64 ways=8) + Core L#5 (P#1) + PU L#5 (P#3) + L2Cache L#3 (size=6144KB linesize=64 ways=24) + L1dCache L#6 (size=32KB linesize=64 ways=8) + L1iCache L#6 (size=32KB linesize=64 ways=8) + Core L#6 (P#2) + PU L#6 (P#5) + L1dCache L#7 (size=32KB linesize=64 ways=8) + L1iCache L#7 (size=32KB linesize=64 ways=8) + Core L#7 (P#3) + PU L#7 (P#7) +depth 0: 1 Machine (type #1) + depth 1: 1 NUMANode (type #2) + depth 2: 2 Socket (type #3) + depth 3: 4 L2Cache (type #4) + depth 4: 8 L1dCache (type #4) + depth 5: 8 L1iCache (type #4) + depth 6: 8 Core (type #5) + depth 7: 8 PU (type #6) +Topology not from this system diff --git a/tests/linux/8em64t-2s2ca2c-buggynuma.tar.bz2 b/tests/linux/8em64t-2s2ca2c-buggynuma.tar.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..f32afc5a111f5f514d85d35caad1def2d37588a4 GIT binary patch literal 10547 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