* [PATCH 0/3] Revert the use of sched_getaffinity on get_nproc
@ 2021-09-06 18:11 Adhemerval Zanella via Libc-alpha
2021-09-06 18:11 ` [PATCH 1/3] misc: Add __get_nprocs_sched Adhemerval Zanella via Libc-alpha
` (2 more replies)
0 siblings, 3 replies; 9+ messages in thread
From: Adhemerval Zanella via Libc-alpha @ 2021-09-06 18:11 UTC (permalink / raw
To: libc-alpha; +Cc: Florian Weimer, Nicolas Saenz Julienne
The use of sched_getaffinity on get_nproc and
sysconf (_SC_NPROCESSORS_ONLN) done in 903bc7dcc2acafc40 (BZ #27645)
breaks the top command in common hypervisor configurations and also
other monitoring tools.
This patchset revert to previous strategy to obtain the system-wide
information first from sysfs, and then on procfs as a fallback.
The sched_getaffinity is still used on malloc code since it makes more
sense to get the per-process value to tune the maximum arena value.
Adhemerval Zanella (3):
misc: Add __get_nprocs_sched
linux: Simplify get_nprocs
linux: Revert the use of sched_getaffinity on get_nproc (BZ #28310)
include/sys/sysinfo.h | 7 +-
malloc/arena.c | 2 +-
misc/getsysstats.c | 6 +
posix/Makefile | 3 +-
sysdeps/mach/getsysstats.c | 6 +
sysdeps/unix/sysv/linux/getsysstats.c | 192 ++++++++++++++++++++------
6 files changed, 167 insertions(+), 49 deletions(-)
--
2.30.2
^ permalink raw reply [flat|nested] 9+ messages in thread
* [PATCH 1/3] misc: Add __get_nprocs_sched
2021-09-06 18:11 [PATCH 0/3] Revert the use of sched_getaffinity on get_nproc Adhemerval Zanella via Libc-alpha
@ 2021-09-06 18:11 ` Adhemerval Zanella via Libc-alpha
2021-09-06 18:11 ` [PATCH 2/3] linux: Simplify get_nprocs Adhemerval Zanella via Libc-alpha
2021-09-06 18:11 ` [PATCH 3/3] linux: Revert the use of sched_getaffinity on get_nproc (BZ #28310) Adhemerval Zanella via Libc-alpha
2 siblings, 0 replies; 9+ messages in thread
From: Adhemerval Zanella via Libc-alpha @ 2021-09-06 18:11 UTC (permalink / raw
To: libc-alpha; +Cc: Florian Weimer, Nicolas Saenz Julienne
This is an internal function meant to return the number of avaliable
processor where the process can scheduled, different than the
__get_nprocs which returns a the system available online CPU.
The Linux implementation currently only calls __get_nprocs(), which
in tuns calls sched_getaffinity.
---
include/sys/sysinfo.h | 7 ++++++-
malloc/arena.c | 2 +-
misc/getsysstats.c | 6 ++++++
sysdeps/mach/getsysstats.c | 6 ++++++
sysdeps/unix/sysv/linux/getsysstats.c | 6 ++++++
5 files changed, 25 insertions(+), 2 deletions(-)
diff --git a/include/sys/sysinfo.h b/include/sys/sysinfo.h
index 7388356a19..c490561581 100644
--- a/include/sys/sysinfo.h
+++ b/include/sys/sysinfo.h
@@ -9,10 +9,15 @@
extern int __get_nprocs_conf (void);
libc_hidden_proto (__get_nprocs_conf)
-/* Return number of available processors. */
+/* Return number of available processors (not all of them will be
+ available to the caller process). */
extern int __get_nprocs (void);
libc_hidden_proto (__get_nprocs)
+/* Return the number of available processors which the process can
+ be scheduled. */
+extern int __get_nprocs_sched (void) attribute_hidden;
+
/* Return number of physical pages of memory in the system. */
extern long int __get_phys_pages (void);
libc_hidden_proto (__get_phys_pages)
diff --git a/malloc/arena.c b/malloc/arena.c
index 4c398753ae..78ef4cf18c 100644
--- a/malloc/arena.c
+++ b/malloc/arena.c
@@ -878,7 +878,7 @@ arena_get2 (size_t size, mstate avoid_arena)
narenas_limit = mp_.arena_max;
else if (narenas > mp_.arena_test)
{
- int n = __get_nprocs ();
+ int n = __get_nprocs_sched ();
if (n >= 1)
narenas_limit = NARENAS_FROM_NCORES (n);
diff --git a/misc/getsysstats.c b/misc/getsysstats.c
index 2986d62247..5cbba0f9bd 100644
--- a/misc/getsysstats.c
+++ b/misc/getsysstats.c
@@ -44,6 +44,12 @@ weak_alias (__get_nprocs, get_nprocs)
link_warning (get_nprocs, "warning: get_nprocs will always return 1")
+int
+__get_nprocs_sched (void)
+{
+ return 1;
+}
+
long int
__get_phys_pages (void)
{
diff --git a/sysdeps/mach/getsysstats.c b/sysdeps/mach/getsysstats.c
index 1267f39da2..cc8023f979 100644
--- a/sysdeps/mach/getsysstats.c
+++ b/sysdeps/mach/getsysstats.c
@@ -62,6 +62,12 @@ __get_nprocs (void)
libc_hidden_def (__get_nprocs)
weak_alias (__get_nprocs, get_nprocs)
+int
+__get_nprocs_sched (void)
+{
+ return __get_nprocs ();
+}
+
/* Return the number of physical pages on the system. */
long int
__get_phys_pages (void)
diff --git a/sysdeps/unix/sysv/linux/getsysstats.c b/sysdeps/unix/sysv/linux/getsysstats.c
index 8a5d342f0c..e9c0dc4d83 100644
--- a/sysdeps/unix/sysv/linux/getsysstats.c
+++ b/sysdeps/unix/sysv/linux/getsysstats.c
@@ -87,6 +87,12 @@ __get_nprocs (void)
libc_hidden_def (__get_nprocs)
weak_alias (__get_nprocs, get_nprocs)
+int
+__get_nprocs_sched (void)
+{
+ return __get_nprocs ();
+}
+
/* On some architectures it is possible to distinguish between configured
and active cpus. */
--
2.30.2
^ permalink raw reply related [flat|nested] 9+ messages in thread
* [PATCH 2/3] linux: Simplify get_nprocs
2021-09-06 18:11 [PATCH 0/3] Revert the use of sched_getaffinity on get_nproc Adhemerval Zanella via Libc-alpha
2021-09-06 18:11 ` [PATCH 1/3] misc: Add __get_nprocs_sched Adhemerval Zanella via Libc-alpha
@ 2021-09-06 18:11 ` Adhemerval Zanella via Libc-alpha
2021-09-07 9:30 ` Florian Weimer via Libc-alpha
2021-09-07 9:44 ` Florian Weimer via Libc-alpha
2021-09-06 18:11 ` [PATCH 3/3] linux: Revert the use of sched_getaffinity on get_nproc (BZ #28310) Adhemerval Zanella via Libc-alpha
2 siblings, 2 replies; 9+ messages in thread
From: Adhemerval Zanella via Libc-alpha @ 2021-09-06 18:11 UTC (permalink / raw
To: libc-alpha; +Cc: Florian Weimer, Nicolas Saenz Julienne
This patch simplifies the memory allocation code and uses the sched
routines instead of reimplement it. This still uses a stack
allocation buffer, so it can be used on malloc initialization code.
Linux currently supports at maximum of 4096 cpus for most architectures:
$ find -iname Kconfig | xargs git grep -A10 -w NR_CPUS | grep -w range
arch/alpha/Kconfig- range 2 32
arch/arc/Kconfig- range 2 4096
arch/arm/Kconfig- range 2 16 if DEBUG_KMAP_LOCAL
arch/arm/Kconfig- range 2 32 if !DEBUG_KMAP_LOCAL
arch/arm64/Kconfig- range 2 4096
arch/csky/Kconfig- range 2 32
arch/hexagon/Kconfig- range 2 6 if SMP
arch/ia64/Kconfig- range 2 4096
arch/mips/Kconfig- range 2 256
arch/openrisc/Kconfig- range 2 32
arch/parisc/Kconfig- range 2 32
arch/riscv/Kconfig- range 2 32
arch/s390/Kconfig- range 2 512
arch/sh/Kconfig- range 2 32
arch/sparc/Kconfig- range 2 32 if SPARC32
arch/sparc/Kconfig- range 2 4096 if SPARC64
arch/um/Kconfig- range 1 1
arch/x86/Kconfig-# [NR_CPUS_RANGE_BEGIN ... NR_CPUS_RANGE_END] range.
arch/x86/Kconfig- range NR_CPUS_RANGE_BEGIN NR_CPUS_RANGE_END
arch/xtensa/Kconfig- range 2 32
With x86 supporting 8192:
arch/x86/Kconfig
976 config NR_CPUS_RANGE_END
977 int
978 depends on X86_64
979 default 8192 if SMP && CPUMASK_OFFSTACK
980 default 512 if SMP && !CPUMASK_OFFSTACK
981 default 1 if !SMP
So using a maximum of 32k cpu should cover all cases (and I would
expect once we start to have many more CPUs that Linux would provide
a more straightforward way to query for such information).
A test is added to check if sched_getaffinity can successfully return
with large buffers.
Checked on x86_64-linux-gnu and i686-linux-gnu.
---
posix/Makefile | 3 +-
sysdeps/unix/sysv/linux/getsysstats.c | 64 ++++++---------------------
2 files changed, 16 insertions(+), 51 deletions(-)
diff --git a/posix/Makefile b/posix/Makefile
index 059efb3cd2..09460a28e8 100644
--- a/posix/Makefile
+++ b/posix/Makefile
@@ -107,7 +107,8 @@ tests := test-errno tstgetopt testfnm runtests runptests \
tst-sysconf-empty-chroot tst-glob_symlinks tst-fexecve \
tst-glob-tilde test-ssize-max tst-spawn4 bug-regex37 \
bug-regex38 tst-regcomp-truncated tst-spawn-chdir \
- tst-wordexp-nocmd tst-execveat tst-spawn5
+ tst-wordexp-nocmd tst-execveat tst-spawn5 \
+ tst-sched_getaffinity
# Test for the glob symbol version that was replaced in glibc 2.27.
ifeq ($(have-GLIBC_2.26)$(build-shared),yesyes)
diff --git a/sysdeps/unix/sysv/linux/getsysstats.c b/sysdeps/unix/sysv/linux/getsysstats.c
index e9c0dc4d83..b9710f8319 100644
--- a/sysdeps/unix/sysv/linux/getsysstats.c
+++ b/sysdeps/unix/sysv/linux/getsysstats.c
@@ -28,61 +28,25 @@
#include <sys/sysinfo.h>
#include <sysdep.h>
-/* Compute the population count of the entire array. */
-static int
-__get_nprocs_count (const unsigned long int *array, size_t length)
-{
- int count = 0;
- for (size_t i = 0; i < length; ++i)
- if (__builtin_add_overflow (count, __builtin_popcountl (array[i]),
- &count))
- return INT_MAX;
- return count;
-}
-
-/* __get_nprocs with a large buffer. */
-static int
-__get_nprocs_large (void)
-{
- /* This code cannot use scratch_buffer because it is used during
- malloc initialization. */
- size_t pagesize = GLRO (dl_pagesize);
- unsigned long int *page = __mmap (0, pagesize, PROT_READ | PROT_WRITE,
- MAP_ANONYMOUS | MAP_PRIVATE, -1, 0);
- if (page == MAP_FAILED)
- return 2;
- int r = INTERNAL_SYSCALL_CALL (sched_getaffinity, 0, pagesize, page);
- int count;
- if (r > 0)
- count = __get_nprocs_count (page, pagesize / sizeof (unsigned long int));
- else if (r == -EINVAL)
- /* One page is still not enough to store the bits. A more-or-less
- arbitrary value. This assumes t hat such large systems never
- happen in practice. */
- count = GLRO (dl_pagesize) * CHAR_BIT;
- else
- count = 2;
- __munmap (page, GLRO (dl_pagesize));
- return count;
-}
-
int
__get_nprocs (void)
{
- /* Fast path for most systems. The kernel expects a buffer size
- that is a multiple of 8. */
- unsigned long int small_buffer[1024 / CHAR_BIT / sizeof (unsigned long int)];
- int r = INTERNAL_SYSCALL_CALL (sched_getaffinity, 0,
- sizeof (small_buffer), small_buffer);
+ /* This cannot use malloc because it is used on malloc initialization. */
+ enum { max_num_cpus = 32768 };
+ size_t cpu_bits_size = CPU_ALLOC_SIZE (max_num_cpus);
+ __cpu_mask cpu_bits[cpu_bits_size / sizeof (__cpu_mask)];
+ int r = INTERNAL_SYSCALL_CALL (sched_getaffinity, 0, cpu_bits_size,
+ cpu_bits);
if (r > 0)
- return __get_nprocs_count (small_buffer, r / sizeof (unsigned long int));
+ return CPU_COUNT_S (cpu_bits_size, (cpu_set_t*) cpu_bits);
else if (r == -EINVAL)
- /* The kernel requests a larger buffer to store the data. */
- return __get_nprocs_large ();
- else
- /* Some other error. 2 is conservative (not a uniprocessor
- system, so atomics are needed). */
- return 2;
+ /* The input buffer is still not enough to store the number of cpus. This
+ is an arbitrary values assuming such systems should be rare and there
+ is no offline cpus. */
+ return max_num_cpus;
+ /* Some other error. 2 is conservative (not a uniprocessor system, so
+ atomics are needed). */
+ return 2;
}
libc_hidden_def (__get_nprocs)
weak_alias (__get_nprocs, get_nprocs)
--
2.30.2
^ permalink raw reply related [flat|nested] 9+ messages in thread
* [PATCH 3/3] linux: Revert the use of sched_getaffinity on get_nproc (BZ #28310)
2021-09-06 18:11 [PATCH 0/3] Revert the use of sched_getaffinity on get_nproc Adhemerval Zanella via Libc-alpha
2021-09-06 18:11 ` [PATCH 1/3] misc: Add __get_nprocs_sched Adhemerval Zanella via Libc-alpha
2021-09-06 18:11 ` [PATCH 2/3] linux: Simplify get_nprocs Adhemerval Zanella via Libc-alpha
@ 2021-09-06 18:11 ` Adhemerval Zanella via Libc-alpha
2021-09-07 9:45 ` Florian Weimer via Libc-alpha
2 siblings, 1 reply; 9+ messages in thread
From: Adhemerval Zanella via Libc-alpha @ 2021-09-06 18:11 UTC (permalink / raw
To: libc-alpha; +Cc: Florian Weimer, Nicolas Saenz Julienne
The use of sched_getaffinity on get_nproc and
sysconf (_SC_NPROCESSORS_ONLN) done in 903bc7dcc2acafc40 (BZ #27645)
breaks the top command in common hypervisor configurations and also
other monitoring tools.
The main issue using sched_getaffinity changed the symbols semantic
from system-wide scope of online CPUs to per-process one (which can
be changed with kernel cpusets or book parameters in VM).
This patch reverts mostly of the 903bc7dcc2acafc40, with the
exceptions:
* No more cached values and atomic updates, since they are inherent
racy.
* No /proc/cpuinfo fallback, since /proc/stat is already used and
it would require to revert more arch-specific code.
* The alloca is replace with a static buffer of 1024 bytes.
So the implementation first consult the sysfs, and fallbacks to procfs.
Checked on x86_64-linux-gnu.
---
sysdeps/unix/sysv/linux/getsysstats.c | 140 +++++++++++++++++++++++++-
1 file changed, 135 insertions(+), 5 deletions(-)
diff --git a/sysdeps/unix/sysv/linux/getsysstats.c b/sysdeps/unix/sysv/linux/getsysstats.c
index b9710f8319..a1f84c01e2 100644
--- a/sysdeps/unix/sysv/linux/getsysstats.c
+++ b/sysdeps/unix/sysv/linux/getsysstats.c
@@ -17,6 +17,8 @@
<https://www.gnu.org/licenses/>. */
#include <array_length.h>
+#include <assert.h>
+#include <ctype.h>
#include <dirent.h>
#include <errno.h>
#include <ldsodefs.h>
@@ -29,7 +31,7 @@
#include <sysdep.h>
int
-__get_nprocs (void)
+__get_nprocs_sched (void)
{
/* This cannot use malloc because it is used on malloc initialization. */
enum { max_num_cpus = 32768 };
@@ -48,14 +50,142 @@ __get_nprocs (void)
atomics are needed). */
return 2;
}
-libc_hidden_def (__get_nprocs)
-weak_alias (__get_nprocs, get_nprocs)
+
+static char *
+next_line (int fd, char *const buffer, char **cp, char **re,
+ char *const buffer_end)
+{
+ char *res = *cp;
+ char *nl = memchr (*cp, '\n', *re - *cp);
+ if (nl == NULL)
+ {
+ if (*cp != buffer)
+ {
+ if (*re == buffer_end)
+ {
+ memmove (buffer, *cp, *re - *cp);
+ *re = buffer + (*re - *cp);
+ *cp = buffer;
+
+ ssize_t n = __read_nocancel (fd, *re, buffer_end - *re);
+ if (n < 0)
+ return NULL;
+
+ *re += n;
+
+ nl = memchr (*cp, '\n', *re - *cp);
+ while (nl == NULL && *re == buffer_end)
+ {
+ /* Truncate too long lines. */
+ *re = buffer + 3 * (buffer_end - buffer) / 4;
+ n = __read_nocancel (fd, *re, buffer_end - *re);
+ if (n < 0)
+ return NULL;
+
+ nl = memchr (*re, '\n', n);
+ **re = '\n';
+ *re += n;
+ }
+ }
+ else
+ nl = memchr (*cp, '\n', *re - *cp);
+
+ res = *cp;
+ }
+
+ if (nl == NULL)
+ nl = *re - 1;
+ }
+
+ *cp = nl + 1;
+ assert (*cp <= *re);
+
+ return res == *re ? NULL : res;
+}
+
int
-__get_nprocs_sched (void)
+__get_nprocs (void)
{
- return __get_nprocs ();
+ enum { buffer_size = 1024 };
+ char buffer[buffer_size];
+ char *buffer_end = buffer + buffer_size;
+ char *cp = buffer_end;
+ char *re = buffer_end;
+
+ const int flags = O_RDONLY | O_CLOEXEC;
+ /* This file contains comma-separated ranges. */
+ int fd = __open_nocancel ("/sys/devices/system/cpu/online", flags);
+ char *l;
+ int result = 0;
+ if (fd != -1)
+ {
+ l = next_line (fd, buffer, &cp, &re, buffer_end);
+ if (l != NULL)
+ do
+ {
+ char *endp;
+ unsigned long int n = strtoul (l, &endp, 10);
+ if (l == endp)
+ {
+ result = 0;
+ break;
+ }
+
+ unsigned long int m = n;
+ if (*endp == '-')
+ {
+ l = endp + 1;
+ m = strtoul (l, &endp, 10);
+ if (l == endp)
+ {
+ result = 0;
+ break;
+ }
+ }
+
+ result += m - n + 1;
+
+ l = endp;
+ if (l < re && *l == ',')
+ ++l;
+ }
+ while (l < re && *l != '\n');
+
+ __close_nocancel_nostatus (fd);
+
+ if (result > 0)
+ return result;
+ }
+
+ cp = buffer_end;
+ re = buffer_end;
+
+ /* Default to an SMP system in case we cannot obtain an accurate
+ number. */
+ result = 2;
+
+ /* The /proc/stat format is more uniform, use it by default. */
+ fd = __open_nocancel ("/proc/stat", flags);
+ if (fd != -1)
+ {
+ result = 0;
+
+ while ((l = next_line (fd, buffer, &cp, &re, buffer_end)) != NULL)
+ /* The current format of /proc/stat has all the cpu* entries
+ at the front. We assume here that stays this way. */
+ if (strncmp (l, "cpu", 3) != 0)
+ break;
+ else if (isdigit (l[3]))
+ ++result;
+
+ __close_nocancel_nostatus (fd);
+ }
+
+ return result;
}
+libc_hidden_def (__get_nprocs)
+weak_alias (__get_nprocs, get_nprocs)
/* On some architectures it is possible to distinguish between configured
--
2.30.2
^ permalink raw reply related [flat|nested] 9+ messages in thread
* Re: [PATCH 2/3] linux: Simplify get_nprocs
2021-09-06 18:11 ` [PATCH 2/3] linux: Simplify get_nprocs Adhemerval Zanella via Libc-alpha
@ 2021-09-07 9:30 ` Florian Weimer via Libc-alpha
2021-09-07 12:05 ` Adhemerval Zanella via Libc-alpha
2021-09-07 9:44 ` Florian Weimer via Libc-alpha
1 sibling, 1 reply; 9+ messages in thread
From: Florian Weimer via Libc-alpha @ 2021-09-07 9:30 UTC (permalink / raw
To: Adhemerval Zanella; +Cc: Nicolas Saenz Julienne, libc-alpha
* Adhemerval Zanella:
> + /* This cannot use malloc because it is used on malloc initialization. */
> + enum { max_num_cpus = 32768 };
> + size_t cpu_bits_size = CPU_ALLOC_SIZE (max_num_cpus);
> + __cpu_mask cpu_bits[cpu_bits_size / sizeof (__cpu_mask)];
I think cpu_bits_size should be an enum constant as well, to avoid
creating a VLA.
Thanks,
Florian
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH 2/3] linux: Simplify get_nprocs
2021-09-06 18:11 ` [PATCH 2/3] linux: Simplify get_nprocs Adhemerval Zanella via Libc-alpha
2021-09-07 9:30 ` Florian Weimer via Libc-alpha
@ 2021-09-07 9:44 ` Florian Weimer via Libc-alpha
1 sibling, 0 replies; 9+ messages in thread
From: Florian Weimer via Libc-alpha @ 2021-09-07 9:44 UTC (permalink / raw
To: Adhemerval Zanella; +Cc: Nicolas Saenz Julienne, libc-alpha
* Adhemerval Zanella:
> diff --git a/posix/Makefile b/posix/Makefile
> index 059efb3cd2..09460a28e8 100644
> --- a/posix/Makefile
> +++ b/posix/Makefile
> @@ -107,7 +107,8 @@ tests := test-errno tstgetopt testfnm runtests runptests \
> tst-sysconf-empty-chroot tst-glob_symlinks tst-fexecve \
> tst-glob-tilde test-ssize-max tst-spawn4 bug-regex37 \
> bug-regex38 tst-regcomp-truncated tst-spawn-chdir \
> - tst-wordexp-nocmd tst-execveat tst-spawn5
> + tst-wordexp-nocmd tst-execveat tst-spawn5 \
> + tst-sched_getaffinity
>
tst-sched_getaffinity is missing from this patch.
Thanks,
Florian
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH 3/3] linux: Revert the use of sched_getaffinity on get_nproc (BZ #28310)
2021-09-06 18:11 ` [PATCH 3/3] linux: Revert the use of sched_getaffinity on get_nproc (BZ #28310) Adhemerval Zanella via Libc-alpha
@ 2021-09-07 9:45 ` Florian Weimer via Libc-alpha
2021-09-07 12:12 ` Adhemerval Zanella via Libc-alpha
0 siblings, 1 reply; 9+ messages in thread
From: Florian Weimer via Libc-alpha @ 2021-09-07 9:45 UTC (permalink / raw
To: Adhemerval Zanella; +Cc: Nicolas Saenz Julienne, libc-alpha
* Adhemerval Zanella:
> + /* The /proc/stat format is more uniform, use it by default. */
This comment seems outdated. Rest looks okay (but I didn't run the full
test suite).
Thanks,
Florian
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH 2/3] linux: Simplify get_nprocs
2021-09-07 9:30 ` Florian Weimer via Libc-alpha
@ 2021-09-07 12:05 ` Adhemerval Zanella via Libc-alpha
0 siblings, 0 replies; 9+ messages in thread
From: Adhemerval Zanella via Libc-alpha @ 2021-09-07 12:05 UTC (permalink / raw
To: Florian Weimer; +Cc: Nicolas Saenz Julienne, libc-alpha
On 07/09/2021 06:30, Florian Weimer wrote:
> * Adhemerval Zanella:
>
>> + /* This cannot use malloc because it is used on malloc initialization. */
>> + enum { max_num_cpus = 32768 };
>> + size_t cpu_bits_size = CPU_ALLOC_SIZE (max_num_cpus);
>> + __cpu_mask cpu_bits[cpu_bits_size / sizeof (__cpu_mask)];
>
> I think cpu_bits_size should be an enum constant as well, to avoid
> creating a VLA.
Indeed, I will fix it.
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH 3/3] linux: Revert the use of sched_getaffinity on get_nproc (BZ #28310)
2021-09-07 9:45 ` Florian Weimer via Libc-alpha
@ 2021-09-07 12:12 ` Adhemerval Zanella via Libc-alpha
0 siblings, 0 replies; 9+ messages in thread
From: Adhemerval Zanella via Libc-alpha @ 2021-09-07 12:12 UTC (permalink / raw
To: Florian Weimer; +Cc: Nicolas Saenz Julienne, libc-alpha
On 07/09/2021 06:45, Florian Weimer wrote:
> * Adhemerval Zanella:
>
>> + /* The /proc/stat format is more uniform, use it by default. */
>
> This comment seems outdated. Rest looks okay (but I didn't run the full
> test suite).
Ack, I will remove it.
^ permalink raw reply [flat|nested] 9+ messages in thread
end of thread, other threads:[~2021-09-07 12:12 UTC | newest]
Thread overview: 9+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2021-09-06 18:11 [PATCH 0/3] Revert the use of sched_getaffinity on get_nproc Adhemerval Zanella via Libc-alpha
2021-09-06 18:11 ` [PATCH 1/3] misc: Add __get_nprocs_sched Adhemerval Zanella via Libc-alpha
2021-09-06 18:11 ` [PATCH 2/3] linux: Simplify get_nprocs Adhemerval Zanella via Libc-alpha
2021-09-07 9:30 ` Florian Weimer via Libc-alpha
2021-09-07 12:05 ` Adhemerval Zanella via Libc-alpha
2021-09-07 9:44 ` Florian Weimer via Libc-alpha
2021-09-06 18:11 ` [PATCH 3/3] linux: Revert the use of sched_getaffinity on get_nproc (BZ #28310) Adhemerval Zanella via Libc-alpha
2021-09-07 9:45 ` Florian Weimer via Libc-alpha
2021-09-07 12:12 ` Adhemerval Zanella via Libc-alpha
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).