stat /etc/localtime 38000 times on startup?

Started by Andrew Dunstanabout 20 years ago3 messages
#1Andrew Dunstan
andrew@dunslane.net

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

#2Magnus Hagander
mha@sollentuna.net
In reply to: Andrew Dunstan (#1)
Re: stat /etc/localtime 38000 times on startup?

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

#3Tom Lane
tgl@sss.pgh.pa.us
In reply to: Andrew Dunstan (#1)
Re: stat /etc/localtime 38000 times on startup?

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