You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@httpd.apache.org by ji...@apache.org on 2014/06/03 17:49:25 UTC
svn commit: r1599625 - /httpd/httpd/trunk/server/mpm/event/event.c
Author: jim
Date: Tue Jun 3 15:49:25 2014
New Revision: 1599625
URL: http://svn.apache.org/r1599625
Log:
fold in performance hack from eventopt
Modified:
httpd/httpd/trunk/server/mpm/event/event.c
Modified: httpd/httpd/trunk/server/mpm/event/event.c
URL: http://svn.apache.org/viewvc/httpd/httpd/trunk/server/mpm/event/event.c?rev=1599625&r1=1599624&r2=1599625&view=diff
==============================================================================
--- httpd/httpd/trunk/server/mpm/event/event.c (original)
+++ httpd/httpd/trunk/server/mpm/event/event.c Tue Jun 3 15:49:25 2014
@@ -57,6 +57,8 @@
#include "apr_atomic.h"
#define APR_WANT_STRFUNC
#include "apr_want.h"
+#include "apr_env.h"
+
#include "apr_version.h"
#include <stdlib.h>
@@ -2418,6 +2420,25 @@ static void join_start_thread(apr_thread
}
}
+static void force_set_tz(apr_pool_t *p) {
+ /* If the TZ variable is unset, many operationg systems,
+ * such as Linux, will at runtime read from /etc/localtime
+ * and call fstat on it.
+ *
+ * By forcing the time zone to UTC if it is unset, we gain
+ * about 2% in raw requests/second (since we format log files
+ * in the local time, if present)
+ *
+ * For more info, see:
+ * <http://www.gnu.org/s/hello/manual/libc/TZ-Variable.html>
+ */
+ char *v = NULL;
+
+ if (apr_env_get(&v, "TZ", p) != APR_SUCCESS) {
+ apr_env_set("TZ", "UTC+0", p);
+ }
+}
+
static void child_main(int child_num_arg)
{
apr_thread_t **threads;
@@ -3566,6 +3587,7 @@ static void event_hooks(apr_pool_t * p)
*/
static const char *const aszSucc[] = { "core.c", NULL };
one_process = 0;
+ force_set_tz(p);
ap_hook_open_logs(event_open_logs, NULL, aszSucc, APR_HOOK_REALLY_FIRST);
/* we need to set the MPM state before other pre-config hooks use MPM query
Re: svn commit: r1599625 - /httpd/httpd/trunk/server/mpm/event/event.c
Posted by Eric Covener <co...@gmail.com>.
On Tue, Sep 29, 2015 at 1:17 AM, Christophe JAILLET
<ch...@wanadoo.fr> wrote:
>
> However, I was wondering if we could call tzset() and use tzname[0] or
> tzname[1] instead of the hard coded "UTC+0". According to [1], tzset() first
> looks at TZ, but, if not set, then at the localtime file.
> This way, we could define TZ if it can be a performance boost in some cases
> and avoid the change of behavior on existing systems.
>
>
> However,
> - I don't know if this is portable
> - I'm unsure about how daylight saving time will be handled
A better guess would be nice. When the runtime doesn't match the test
suite, some tests (ssl/varlookup.t) can fail when the timezone is
behind/ahead on day of the week from UTC.
Re: svn commit: r1599625 -
/httpd/httpd/trunk/server/mpm/event/event.c
Posted by Christophe JAILLET <ch...@wanadoo.fr>.
Hi,
now that SO_REUSEPORT has landed on 2.4.x, it is easier to try to synch
2.4.x and trunk a bit more.
I looked at r1599625 + r1599641, which set the TZ environment variable,
if unset, in order to have a small performance boost.
First, I've not been able to reproduce the 2% performance boost
described in the patch.
My system is Ubuntu 15.04 and $TZ is apparently empty.
Second, I don't think that this patch should be backported as-is because
it may change the timestamp in the log file.
However, I was wondering if we could call tzset() and use tzname[0] or
tzname[1] instead of the hard coded "UTC+0". According to [1], tzset()
first looks at TZ, but, if not set, then at the /localtime/ file.
This way, we could define TZ if it can be a performance boost in some
cases and avoid the change of behavior on existing systems.
However,
- I don't know if this is portable
- I'm unsure about how daylight saving time will be handled
Any thought ?
Best regards,
CJ
[1]: http://linux.die.net/man/3/tzset
Le 03/06/2014 17:49, jim@apache.org a écrit :
> Author: jim
> Date: Tue Jun 3 15:49:25 2014
> New Revision: 1599625
>
> URL:http://svn.apache.org/r1599625
> Log:
> fold in performance hack from eventopt
>
> Modified:
> httpd/httpd/trunk/server/mpm/event/event.c
>
> Modified: httpd/httpd/trunk/server/mpm/event/event.c
> URL:http://svn.apache.org/viewvc/httpd/httpd/trunk/server/mpm/event/event.c?rev=1599625&r1=1599624&r2=1599625&view=diff
> ==============================================================================
> --- httpd/httpd/trunk/server/mpm/event/event.c (original)
> +++ httpd/httpd/trunk/server/mpm/event/event.c Tue Jun 3 15:49:25 2014
> @@ -57,6 +57,8 @@
> #include "apr_atomic.h"
> #define APR_WANT_STRFUNC
> #include "apr_want.h"
> +#include "apr_env.h"
> +
> #include "apr_version.h"
>
> #include <stdlib.h>
> @@ -2418,6 +2420,25 @@ static void join_start_thread(apr_thread
> }
> }
>
> +static void force_set_tz(apr_pool_t *p) {
> + /* If the TZ variable is unset, many operationg systems,
> + * such as Linux, will at runtime read from /etc/localtime
> + * and call fstat on it.
> + *
> + * By forcing the time zone to UTC if it is unset, we gain
> + * about 2% in raw requests/second (since we format log files
> + * in the local time, if present)
> + *
> + * For more info, see:
> + *<http://www.gnu.org/s/hello/manual/libc/TZ-Variable.html>
> + */
> + char *v = NULL;
> +
> + if (apr_env_get(&v, "TZ", p) != APR_SUCCESS) {
> + apr_env_set("TZ", "UTC+0", p);
> + }
> +}
> +
> static void child_main(int child_num_arg)
> {
> apr_thread_t **threads;
> @@ -3566,6 +3587,7 @@ static void event_hooks(apr_pool_t * p)
> */
> static const char *const aszSucc[] = { "core.c", NULL };
> one_process = 0;
> + force_set_tz(p);
>
> ap_hook_open_logs(event_open_logs, NULL, aszSucc, APR_HOOK_REALLY_FIRST);
> /* we need to set the MPM state before other pre-config hooks use MPM query
>
>
>