Package: libnuma1 Version: 0.7pre2-4 Severity: normal Tags: patch Hi,
Currently, when NUMA is not available, libnuma assumes one CPU per node. This assumption is problematic on non-NUMA SMP of multicore of hyperthreaded CPUs: in that case the NUMA layout would separate logical CPUs while they are in the same core. Here is a patch to assume only one node holding all cpus, which makes more sense. Regards, Samuel -- System Information: Debian Release: testing/unstable APT prefers testing APT policy: (900, 'testing'), (500, 'unstable'), (500, 'stable') Architecture: i386 (i686) Shell: /bin/sh linked to /bin/bash Kernel: Linux 2.6.14 Locale: [EMAIL PROTECTED], [EMAIL PROTECTED] (charmap=ISO-8859-15) Versions of packages libnuma1 depends on: ii libc6 2.3.5-8 GNU C Library: Shared libraries an libnuma1 recommends no packages. -- no debconf information
diff -ur numactl-orig/libnuma.c numactl-0.7pre2/libnuma.c --- numactl-orig/libnuma.c 2004-07-06 10:02:29.000000000 +0200 +++ numactl-0.7pre2/libnuma.c 2005-12-15 17:18:54.000000000 +0100 @@ -181,9 +181,9 @@ static int fallback_max_node(void) { - numa_warn_int(W_nosysfs, "/sys not mounted or no numa system. Assuming one node per CPU: %s", + numa_warn_int(W_nosysfs, "/sys not mounted or no numa system. Assuming one node : %s", strerror(errno)); - maxnode = number_of_cpus(); + maxnode = 0; return maxnode; } @@ -471,9 +471,10 @@ f = fopen(fn, "r"); if (!f || getdelim(&line, &len, '\n', f) < 1) { numa_warn_int(W_nosysfs2, - "/sys not mounted or invalid. Assuming nodes equal CPU: %s", + "/sys not mounted or invalid. Assuming node 0 holds all CPUs: %s", strerror(errno)); - set_bit(node, (unsigned long *)mask); + for (n = 0; n < ncpus; n++) + set_bit(n, (unsigned long *)mask); goto out; } n = 0;