This is the mail archive of the glibc-cvs@sourceware.org mailing list for the glibc project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]