Thread: stat /etc/localtime 38000 times on startup?

stat /etc/localtime 38000 times on startup?

From
Andrew Dunstan
Date:
I just traced starting up a postmaster, and got over 38000 lines like this:
  stat64("/etc/localtime", {st_mode=S_IFREG|0644, st_size=1267, ...}) = 0

I assume it comes from the timezone library, but it seems highly 
inefficient. Anyone know why we might get this?

cheers

andrew


Re: stat /etc/localtime 38000 times on startup?

From
"Magnus Hagander"
Date:
> I just traced starting up a postmaster, and got over 38000
> lines like this:
>
>    stat64("/etc/localtime", {st_mode=S_IFREG|0644,
> st_size=1267, ...}) = 0
>
> I assume it comes from the timezone library, but it seems
> highly inefficient. Anyone know why we might get this?

Without digging into details, I would guess htat comes from the probing
of available timezones to find one that matches the current one. We do a
whole lot of setting/resetting the TZ there - but only during postmaster
startup.

//Magnus


Re: stat /etc/localtime 38000 times on startup?

From
Tom Lane
Date:
Andrew Dunstan <andrew@dunslane.net> writes:
> I just traced starting up a postmaster, and got over 38000 lines like this:
>    stat64("/etc/localtime", {st_mode=S_IFREG|0644, st_size=1267, ...}) = 0
> I assume it comes from the timezone library, but it seems highly 
> inefficient. Anyone know why we might get this?

glibc's strftime does that if you don't have a TZ value set in the
postmaster's environment.

http://archives.postgresql.org/pgsql-hackers/2005-10/msg00884.php
        regards, tom lane