Reduce lock contention in __tz_convert() [BZ #16145] (partial fix)
commit6807b1db8233ed84671f061b5d825622233df303
authorKevin Easton <kevin@guarana.org>
Wed, 25 Feb 2015 04:57:07 +0000 (24 23:57 -0500)
committerMike Frysinger <vapier@gentoo.org>
Wed, 25 Feb 2015 04:58:59 +0000 (24 23:58 -0500)
treebb908172e2818cf53b090c206b213c9d0cb652d2
parentb433df00ae7b72053b2aac5bea1ded269ea92589
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).
ChangeLog
time/tzset.c