Hello, On 2023-08-29 at 16:44:26 -0700, Tony Luck wrote: >Sub-NUMA Cluster divides CPUs sharing an L3 cache into separate NUMA >nodes. Systems may support splitting into either two or four nodes. > >When SNC mode is enabled the effective amount of L3 cache available >for allocation is divided by the number of nodes per L3. > >Detect which SNC mode is active by comparing the number of CPUs >that share a cache with CPU0, with the number of CPUs on node0. > >This gives some hope of tests passing. But additional test >infrastructure changes are needed to bind tests to nodes and >guarantee memory allocation from the local node. > >Reported-by: "Shaopeng Tan (Fujitsu)" <tan.shaopeng@xxxxxxxxxxx> >Signed-off-by: Tony Luck <tony.luck@xxxxxxxxx> >--- > tools/testing/selftests/resctrl/resctrl.h | 1 + > tools/testing/selftests/resctrl/resctrlfs.c | 57 +++++++++++++++++++++ > 2 files changed, 58 insertions(+) > >diff --git a/tools/testing/selftests/resctrl/resctrl.h b/tools/testing/selftests/resctrl/resctrl.h >index 87e39456dee0..a8b43210b573 100644 >--- a/tools/testing/selftests/resctrl/resctrl.h >+++ b/tools/testing/selftests/resctrl/resctrl.h >@@ -13,6 +13,7 @@ > #include <signal.h> > #include <dirent.h> > #include <stdbool.h> >+#include <ctype.h> > #include <sys/stat.h> > #include <sys/ioctl.h> > #include <sys/mount.h> >diff --git a/tools/testing/selftests/resctrl/resctrlfs.c b/tools/testing/selftests/resctrl/resctrlfs.c >index fb00245dee92..79eecbf9f863 100644 >--- a/tools/testing/selftests/resctrl/resctrlfs.c >+++ b/tools/testing/selftests/resctrl/resctrlfs.c >@@ -130,6 +130,61 @@ int get_resource_id(int cpu_no, int *resource_id) > return 0; > } > >+/* >+ * Count number of CPUs in a /sys bit map >+ */ >+static int count_sys_bitmap_bits(char *name) >+{ >+ FILE *fp = fopen(name, "r"); >+ int count = 0, c; >+ >+ if (!fp) >+ return 0; >+ >+ while ((c = fgetc(fp)) != EOF) { >+ if (!isxdigit(c)) >+ continue; >+ switch (c) { >+ case 'f': >+ count++; >+ case '7': case 'b': case 'd': case 'e': >+ count++; >+ case '3': case '5': case '6': case '9': case 'a': case 'c': >+ count++; >+ case '1': case '2': case '4': case '8': >+ count++; >+ } >+ } >+ fclose(fp); >+ >+ return count; >+} >+ The resctrl selftest has a function for counting bits, could it be used here instead of the switch statement like this for example? count = count_bits(c); Or is there some reason this wouldn't be a good fit here? -- Kind regards Maciej Wieczór-Retman