This is the mail archive of the
glibc-cvs@sourceware.org
mailing list for the glibc project.
GNU C Library master sources branch master updated. glibc-2.21-117-g6807b1d
- From: vapier at sourceware dot org
- To: glibc-cvs at sourceware dot org
- Date: 25 Feb 2015 04:59:24 -0000
- Subject: GNU C Library master sources branch master updated. glibc-2.21-117-g6807b1d
This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "GNU C Library master sources".
The branch, master has been updated
via 6807b1db8233ed84671f061b5d825622233df303 (commit)
from b433df00ae7b72053b2aac5bea1ded269ea92589 (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
http://sourceware.org/git/gitweb.cgi?p=glibc.git;a=commitdiff;h=6807b1db8233ed84671f061b5d825622233df303
commit 6807b1db8233ed84671f061b5d825622233df303
Author: Kevin Easton <kevin@guarana.org>
Date: Tue Feb 24 23:57:07 2015 -0500
Reduce lock contention in __tz_convert() [BZ #16145] (partial fix)
This patch is an "easy win" partial fix for BZ #16145, which notes
the heavy contention on tzset_lock when multiple threads are converting
times with localtime_r().
In __tz_convert(), the lock does not need to be held after
__tzfile_compute() / __tz_compute() have been called, so we can move the
unlock up. At this point there is still significant work to be done in
__offtime(), so we see some improvement (in my testing with 8 cores
banging on localtime_r(), ~20% improvement in throughput).
diff --git a/ChangeLog b/ChangeLog
index e6db8ef..0d5c1f1 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2015-02-24 Kevin Easton <kevin@guarana.org>
+
+ [BZ #16145] (partial fix)
+ * time/tzset.c (__tz_convert): Unlock tzset_lock earlier
+ to reduce lock contention.
+
2015-02-24 Miroslav Lichvar <mlichvar@redhat.com>
* sysdeps/unix/sysv/linux/bits/timex.h: Update version.
diff --git a/time/tzset.c b/time/tzset.c
index 8bc7a2e..82324ca 100644
--- a/time/tzset.c
+++ b/time/tzset.c
@@ -644,6 +644,8 @@ __tz_convert (const time_t *timer, int use_localtime, struct tm *tp)
leap_extra_secs = 0;
}
+ __libc_lock_unlock (tzset_lock);
+
if (tp)
{
if (! use_localtime)
@@ -659,8 +661,6 @@ __tz_convert (const time_t *timer, int use_localtime, struct tm *tp)
tp = NULL;
}
- __libc_lock_unlock (tzset_lock);
-
return tp;
}
-----------------------------------------------------------------------
Summary of changes:
ChangeLog | 6 ++++++
time/tzset.c | 4 ++--
2 files changed, 8 insertions(+), 2 deletions(-)
hooks/post-receive
--
GNU C Library master sources