This is the mail archive of the
mailing list for the glibc project.
Re: [PATCH][AArch64] Single thread lowlevellock optimization
- From: Szabolcs Nagy <szabolcs dot nagy at arm dot com>
- To: GNU C Library <libc-alpha at sourceware dot org>
- Cc: nd at arm dot com, "triegel at redhat dot com" <triegel at redhat dot com>
- Date: Tue, 20 Jun 2017 10:51:40 +0100
- Subject: Re: [PATCH][AArch64] Single thread lowlevellock optimization
- Authentication-results: sourceware.org; auth=none
- Authentication-results: redhat.com; dkim=none (message not signed) header.d=none;redhat.com; dmarc=none action=none header.from=arm.com;
- Nodisclaimer: True
- References: <firstname.lastname@example.org>
- Spamdiagnosticmetadata: NSPM
- Spamdiagnosticoutput: 1:99
On 16/06/17 17:26, Szabolcs Nagy wrote:
> Do single thread lock optimization in aarch64 libc. Atomic operations
> hurt the performance of some single-threaded programs using stdio
> (usually getc/putc in a loop).
> Ideally such optimization should be done at a higher level and in a
> target independent way as in
> but that approach will need more discussion so do it in lowlevellocks,
> similarly to x86, until there is consensus.
> Differences compared to the current x86_64 behaviour:
> - The optimization is not silently applied to shared locks, in that
> case the build fails.
> - Unlock assumes the futex value is 0 or 1, there are no waiters to
> wake (that would not work in single thread and libc does not use
> such locks, to be sure lll_cond* is undefed).
> This speeds up a getchar loop about 2-4x depending on the cpu,
> while only cause around 5-10% regression for the multi-threaded case
> (other libc internal locks are not expected to be performance
> critical or significantly affected by this change).
> 2017-06-16 Szabolcs Nagy <email@example.com>
> * sysdeps/unix/sysv/linux/aarch64/lowlevellock.h: New file.
i'd like to commit this in this release
(and work on the more generic solution later)
i'm waiting for feedback for a while in case somebody
spots some issues.