| Project: | Drupal core |
| Version: | 7.x-dev |
| Component: | base system |
| Category: | bug report |
| Priority: | major |
| Assigned: | Unassigned |
| Status: | closed (fixed) |
| Issue tags: | Favorite-of-Dries, Performance |
Issue Summary
See benchmarks from Heine in this forum post http://drupal.org/node/1020494#comment-3947826
Which I reproduced here: http://ca.tchpole.net/node/2
Critical because:
- there's no aggressive caching via the UI in Drupal 7, so no workaround for the majority of sites.
- sites upgraded from Drupal 6 will only be able to serve 2/3 the requests they could to anonymous users before they fall over.
Around a year ago, I did comparison benchmarks between Drupal 6 and 7 page caching, and they were within 5% of each other. So some patch in the past year has caused the regression.
Berdir pointed out:
The by far slowest function for me is date_default_timezone_set() with almost 20% of the total time.
That is from this line:
date_default_timezone_set(drupal_get_user_timezone());
And that line was added in this issue: http://drupal.org/node/348448
That looks pretty likely to me. This is the patch that was committed:
http://drupal.org/node/348448#comment-2830898
Comments
#1
More issues for background:
#668496: Timezone error on D7 install
Most of the discussion happened in:
#325827: Avoid PHP strict timezone warnings by calling date_default_timezone_set in bootstrap
Benchmarks again (different localhost to yesterday):
oncurrency Level: 1
Time taken for tests: 8.243 seconds
Complete requests: 1000
Failed requests: 0
Write errors: 0
Total transferred: 7635000 bytes
HTML transferred: 7214000 bytes
Requests per second: 121.31 [#/sec] (mean)
Time per request: 8.243 [ms] (mean)
Time per request: 8.243 [ms] (mean, across all concurrent requests)
Transfer rate: 904.49 [Kbytes/sec] received
Connection Times (ms)
min mean[+/-sd] median max
Connect: 0 0 0.0 0 0
Processing: 6 8 1.5 8 16
Waiting: 6 8 1.5 8 16
Total: 6 8 1.5 8 16
The timezone stuff is taking about 5ms on my system. That's definitely accounting for part of this if not all.
Attached screenshot showing that.
Looks like we don't really need to call that so early in bootstrap, and could get away with it only happening in full bootstrap, plus a couple of other places (i.e. it'd need to be called before we call strtotime() when serving cached pages, but we only need to do that for requests sending an if modified since header).
Also, looking in strace I can see both system and overlay modules being loaded - these are both bootstrap modules on my install (which is a clean install from just now), definitely weren't in Drupal 6.
You can see the syscalls for the blocked_ips, cache_page db query, and timezone set here, note:
3718 writev(9, [{"HTTP/1.1 200 OK\r\nDate: Thu, 17 F"..., 482}, {"\37\213\10\0\0\0\0\0\0\3\265X[w\323\270\26~\317\257\20\342\2059\247\266\222R\312\320I\314"..., 2212}], 2) = 26942694 compared to 2790 for pulling the cached database from the database, so that's definitely a significant regression.
3718 write(10, "1\0\0\0\3SELECT 1 FROM blocked_ips W"..., 53) = 533718 read(10, "\1\0\0\1\1\27\0\0\2\3def\0\0\0\0011\0\f?\0\1\0\0\0\10\201\0\0\0\0"..., 16384) = 50
3718 poll([{fd=10, events=POLLIN|POLLPRI}], 1, 0) = 0 (Timeout)
3718 write(10, "\341\0\0\0\3SELECT cache_page.cid AS ci"..., 229) = 229
3718 read(10, "\1\0\0\1\0052\0\0\2\3def\2d7\ncache_page\ncach"..., 16384) = 2790
3718 open("/usr/share/zoneinfo/Asia/Tokyo", O_RDONLY) = 11
3718 fstat(11, {st_mode=S_IFREG|0644, st_size=331, ...}) = 0
3718 mmap(NULL, 331, PROT_READ, MAP_SHARED, 11, 0) = 0x7f6df42c7000
3718 close(11) = 0
3718 munmap(0x7f6df42c7000, 331) = 0
3718 stat("/usr/share/zoneinfo/Asia/Tokyo", {st_mode=S_IFREG|0644, st_size=331, ...}) = 0
3718 chdir("/") = 0
3718 umask(022) = 022
3718 write(10, "\1\0\0\0\1", 5) = 5
3718 shutdown(10, 2 /* send and receive */) = 0
3718 close(10) = 0
3718 open("/dev/urandom", O_RDONLY) = 10
3718 read(10, "\343kG|bq,\231", 8) = 8
3718 close(10) = 0
3718 open("/dev/urandom", O_RDONLY) = 10
3718 read(10, "\304*\263G\303\r\32\263", 8) = 8
3718 close(10) = 0
3718 open("/dev/urandom", O_RDONLY) = 10
3718 read(10, "\237\364>\267\233\27J\261", 8) = 8
3718 close(10) = 0
3718 setitimer(ITIMER_PROF, {it_interval={0, 0}, it_value={0, 0}}, NULL) = 0
3718 writev(9, [{"HTTP/1.1 200 OK\r\nDate: Thu, 17 F"..., 482}, {"\37\213\10\0\0\0\0\0\0\3\265X[w\323\270\26~\317\257\20\342\2059\247\266\222R\312\320I\314"..., 2212}], 2) = 2694
Here's another request, not sure what triggers the full lookup, all I did was refresh the browser a couple of times. I've seen this before on full bootstrap in strace, but didn't have time to look into it yet:
3718 write(10, "1\0\0\0\3SELECT 1 FROM blocked_ips W"..., 53) = 533718 read(10, "\1\0\0\1\1\27\0\0\2\3def\0\0\0\0011\0\f?\0\1\0\0\0\10\201\0\0\0\0"..., 16384) = 50
3718 poll([{fd=10, events=POLLIN|POLLPRI}], 1, 0) = 0 (Timeout)
3718 write(10, "\341\0\0\0\3SELECT cache_page.cid AS ci"..., 229) = 229
3718 read(10, "\1\0\0\1\0052\0\0\2\3def\2d7\ncache_page\ncach"..., 16384) = 2790
3718 open("/usr/share/zoneinfo/", O_RDONLY|O_NONBLOCK|O_DIRECTORY|O_CLOEXEC) = 11
3718 getdents(11, /* 71 entries */, 32768) = 2064
3718 getdents(11, /* 0 entries */, 32768) = 0
3718 close(11) = 0
3718 stat("/usr/share/zoneinfo//localtime", {st_mode=S_IFREG|0644, st_size=331, ...}) = 0
3718 stat("/usr/share/zoneinfo//Zulu", {st_mode=S_IFREG|0644, st_size=118, ...}) = 0
3718 stat("/usr/share/zoneinfo//WET", {st_mode=S_IFREG|0644, st_size=1873, ...}) = 0
3718 stat("/usr/share/zoneinfo//W-SU", {st_mode=S_IFREG|0644, st_size=2194, ...}) = 0
3718 stat("/usr/share/zoneinfo//Universal", {st_mode=S_IFREG|0644, st_size=118, ...}) = 0
3718 stat("/usr/share/zoneinfo//UTC", {st_mode=S_IFREG|0644, st_size=118, ...}) = 0
3718 stat("/usr/share/zoneinfo//US", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
3718 stat("/usr/share/zoneinfo//UCT", {st_mode=S_IFREG|0644, st_size=118, ...}) = 0
3718 stat("/usr/share/zoneinfo//Turkey", {st_mode=S_IFREG|0644, st_size=2721, ...}) = 0
3718 stat("/usr/share/zoneinfo//SystemV", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
3718 stat("/usr/share/zoneinfo//Singapore", {st_mode=S_IFREG|0644, st_size=402, ...}) = 0
3718 stat("/usr/share/zoneinfo//ROK", {st_mode=S_IFREG|0644, st_size=380, ...}) = 0
3718 stat("/usr/share/zoneinfo//ROC", {st_mode=S_IFREG|0644, st_size=724, ...}) = 0
3718 stat("/usr/share/zoneinfo//Portugal", {st_mode=S_IFREG|0644, st_size=3439, ...}) = 0
3718 stat("/usr/share/zoneinfo//Poland", {st_mode=S_IFREG|0644, st_size=2679, ...}) = 0
3718 stat("/usr/share/zoneinfo//Pacific", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
3718 stat("/usr/share/zoneinfo//PST8PDT", {st_mode=S_IFREG|0644, st_size=2294, ...}) = 0
3718 stat("/usr/share/zoneinfo//PRC", {st_mode=S_IFREG|0644, st_size=405, ...}) = 0
3718 stat("/usr/share/zoneinfo//Navajo", {st_mode=S_IFREG|0644, st_size=2427, ...}) = 0
3718 stat("/usr/share/zoneinfo//NZ-CHAT", {st_mode=S_IFREG|0644, st_size=2018, ...}) = 0
3718 stat("/usr/share/zoneinfo//NZ", {st_mode=S_IFREG|0644, st_size=2434, ...}) = 0
3718 stat("/usr/share/zoneinfo//Mideast", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
3718 stat("/usr/share/zoneinfo//Mexico", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
3718 stat("/usr/share/zoneinfo//MST7MDT", {st_mode=S_IFREG|0644, st_size=2294, ...}) = 0
3718 stat("/usr/share/zoneinfo//MST", {st_mode=S_IFREG|0644, st_size=118, ...}) = 0
3718 stat("/usr/share/zoneinfo//MET", {st_mode=S_IFREG|0644, st_size=2102, ...}) = 0
3718 stat("/usr/share/zoneinfo//Libya", {st_mode=S_IFREG|0644, st_size=599, ...}) = 0
3718 stat("/usr/share/zoneinfo//Kwajalein", {st_mode=S_IFREG|0644, st_size=211, ...}) = 0
3718 stat("/usr/share/zoneinfo//Japan", {st_mode=S_IFREG|0644, st_size=331, ...}) = 0
3718 stat("/usr/share/zoneinfo//Jamaica", {st_mode=S_IFREG|0644, st_size=481, ...}) = 0
3718 stat("/usr/share/zoneinfo//Israel", {st_mode=S_IFREG|0644, st_size=2197, ...}) = 0
3718 stat("/usr/share/zoneinfo//Iran", {st_mode=S_IFREG|0644, st_size=1622, ...}) = 0
3718 stat("/usr/share/zoneinfo//Indian", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
3718 stat("/usr/share/zoneinfo//Iceland", {st_mode=S_IFREG|0644, st_size=1141, ...}) = 0
3718 stat("/usr/share/zoneinfo//Hongkong", {st_mode=S_IFREG|0644, st_size=1159, ...}) = 0
3718 stat("/usr/share/zoneinfo//HST", {st_mode=S_IFREG|0644, st_size=119, ...}) = 0
3718 stat("/usr/share/zoneinfo//Greenwich", {st_mode=S_IFREG|0644, st_size=118, ...}) = 0
3718 stat("/usr/share/zoneinfo//GMT0", {st_mode=S_IFREG|0644, st_size=118, ...}) = 0
3718 stat("/usr/share/zoneinfo//GMT-0", {st_mode=S_IFREG|0644, st_size=118, ...}) = 0
3718 stat("/usr/share/zoneinfo//GMT+0", {st_mode=S_IFREG|0644, st_size=118, ...}) = 0
3718 stat("/usr/share/zoneinfo//GMT", {st_mode=S_IFREG|0644, st_size=118, ...}) = 0
3718 stat("/usr/share/zoneinfo//GB-Eire", {st_mode=S_IFREG|0644, st_size=3661, ...}) = 0
3718 stat("/usr/share/zoneinfo//GB", {st_mode=S_IFREG|0644, st_size=3661, ...}) = 0
3718 stat("/usr/share/zoneinfo//Factory", {st_mode=S_IFREG|0644, st_size=255, ...}) = 0
3718 stat("/usr/share/zoneinfo//Europe", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
3718 stat("/usr/share/zoneinfo//Etc", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
3718 stat("/usr/share/zoneinfo//Eire", {st_mode=S_IFREG|0644, st_size=3533, ...}) = 0
3718 stat("/usr/share/zoneinfo//Egypt", {st_mode=S_IFREG|0644, st_size=9371, ...}) = 0
3718 stat("/usr/share/zoneinfo//EST5EDT", {st_mode=S_IFREG|0644, st_size=2294, ...}) = 0
3718 stat("/usr/share/zoneinfo//EST", {st_mode=S_IFREG|0644, st_size=118, ...}) = 0
3718 stat("/usr/share/zoneinfo//EET", {st_mode=S_IFREG|0644, st_size=1876, ...}) = 0
3718 stat("/usr/share/zoneinfo//Cuba", {st_mode=S_IFREG|0644, st_size=2411, ...}) = 0
3718 stat("/usr/share/zoneinfo//Chile", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
3718 stat("/usr/share/zoneinfo//Canada", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
3718 stat("/usr/share/zoneinfo//CST6CDT", {st_mode=S_IFREG|0644, st_size=2294, ...}) = 0
3718 stat("/usr/share/zoneinfo//CET", {st_mode=S_IFREG|0644, st_size=2102, ...}) = 0
3718 stat("/usr/share/zoneinfo//Brazil", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
3718 stat("/usr/share/zoneinfo//Australia", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
3718 stat("/usr/share/zoneinfo//Atlantic", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
3718 stat("/usr/share/zoneinfo//Asia", {st_mode=S_IFDIR|0755, st_size=12288, ...}) = 0
3718 stat("/usr/share/zoneinfo//Arctic", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
3718 stat("/usr/share/zoneinfo//Antarctica", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
3718 stat("/usr/share/zoneinfo//America", {st_mode=S_IFDIR|0755, st_size=20480, ...}) = 0
3718 stat("/usr/share/zoneinfo//Africa", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
3718 open("/usr/share/zoneinfo/Africa", O_RDONLY|O_NONBLOCK|O_DIRECTORY|O_CLOEXEC) = 11
3718 getdents(11, /* 55 entries */, 32768) = 1744
3718 getdents(11, /* 0 entries */, 32768) = 0
3718 close(11) = 0
3718 stat("/usr/share/zoneinfo/Africa/Windhoek", {st_mode=S_IFREG|0644, st_size=1556, ...}) = 0
3718 stat("/usr/share/zoneinfo/Africa/Tunis", {st_mode=S_IFREG|0644, st_size=684, ...}) = 0
3718 stat("/usr/share/zoneinfo/Africa/Tripoli", {st_mode=S_IFREG|0644, st_size=599, ...}) = 0
3718 stat("/usr/share/zoneinfo/Africa/Timbuktu", {st_mode=S_IFREG|0644, st_size=208, ...}) = 0
3718 stat("/usr/share/zoneinfo/Africa/Sao_Tome", {st_mode=S_IFREG|0644, st_size=173, ...}) = 0
3718 stat("/usr/share/zoneinfo/Africa/Porto-Novo", {st_mode=S_IFREG|0644, st_size=195, ...}) = 0
3718 stat("/usr/share/zoneinfo/Africa/Ouagadougou", {st_mode=S_IFREG|0644, st_size=156, ...}) = 0
3718 stat("/usr/share/zoneinfo/Africa/Nouakchott", {st_mode=S_IFREG|0644, st_size=208, ...}) = 0
3718 stat("/usr/share/zoneinfo/Africa/Niamey", {st_mode=S_IFREG|0644, st_size=225, ...}) = 0
3718 stat("/usr/share/zoneinfo/Africa/Ndjamena", {st_mode=S_IFREG|0644, st_size=211, ...}) = 0
3718 stat("/usr/share/zoneinfo/Africa/Nairobi", {st_mode=S_IFREG|0644, st_size=253, ...}) = 0
3718 stat("/usr/share/zoneinfo/Africa/Monrovia", {st_mode=S_IFREG|0644, st_size=215, ...}) = 0
3718 stat("/usr/share/zoneinfo/Africa/Mogadishu", {st_mode=S_IFREG|0644, st_size=194, ...}) = 0
3718 stat("/usr/share/zoneinfo/Africa/Mbabane", {st_mode=S_IFREG|0644, st_size=160, ...}) = 0
3718 stat("/usr/share/zoneinfo/Africa/Maseru", {st_mode=S_IFREG|0644, st_size=204, ...}) = 0
3718 stat("/usr/share/zoneinfo/Africa/Maputo", {st_mode=S_IFREG|0644, st_size=157, ...}) = 0
3718 stat("/usr/share/zoneinfo/Africa/Malabo", {st_mode=S_IFREG|0644, st_size=195, ...}) = 0
3718 stat("/usr/share/zoneinfo/Africa/Lusaka", {st_mode=S_IFREG|0644, st_size=157, ...}) = 0
3718 stat("/usr/share/zoneinfo/Africa/Lubumbashi", {st_mode=S_IFREG|0644, st_size=140, ...}) = 0
3718 stat("/usr/share/zoneinfo/Africa/Luanda", {st_mode=S_IFREG|0644, st_size=178, ...}) = 0
3718 stat("/usr/share/zoneinfo/Africa/Lome", {st_mode=S_IFREG|0644, st_size=139, ...}) = 0
3718 stat("/usr/share/zoneinfo/Africa/Libreville", {st_mode=S_IFREG|0644, st_size=157, ...}) = 0
3718 stat("/usr/share/zoneinfo/Africa/Lagos", {st_mode=S_IFREG|0644, st_size=157, ...}) = 0
3718 stat("/usr/share/zoneinfo/Africa/Kinshasa", {st_mode=S_IFREG|0644, st_size=140, ...}) = 0
3718 stat("/usr/share/zoneinfo/Africa/Kigali", {st_mode=S_IFREG|0644, st_size=157, ...}) = 0
3718 stat("/usr/share/zoneinfo/Africa/Khartoum", {st_mode=S_IFREG|0644, st_size=669, ...}) = 0
3718 stat("/usr/share/zoneinfo/Africa/Kampala", {st_mode=S_IFREG|0644, st_size=253, ...}) = 0
3718 stat("/usr/share/zoneinfo/Africa/Johannesburg", {st_mode=S_IFREG|0644, st_size=245, ...}) = 0
3718 stat("/usr/share/zoneinfo/Africa/Harare", {st_mode=S_IFREG|0644, st_size=157, ...}) = 0
3718 stat("/usr/share/zoneinfo/Africa/Gaborone", {st_mode=S_IFREG|0644, st_size=194, ...}) = 0
3718 stat("/usr/share/zoneinfo/Africa/Freetown", {st_mode=S_IFREG|0644, st_size=665, ...}) = 0
3718 stat("/usr/share/zoneinfo/Africa/El_Aaiun", {st_mode=S_IFREG|0644, st_size=194, ...}) = 0
3718 stat("/usr/share/zoneinfo/Africa/Douala", {st_mode=S_IFREG|0644, st_size=157, ...}) = 0
3718 stat("/usr/share/zoneinfo/Africa/Djibouti", {st_mode=S_IFREG|0644, st_size=157, ...}) = 0
3718 stat("/usr/share/zoneinfo/Africa/Dar_es_Salaam", {st_mode=S_IFREG|0644, st_size=213, ...}) = 0
3718 stat("/usr/share/zoneinfo/Africa/Dakar", {st_mode=S_IFREG|0644, st_size=194, ...}) = 0
3718 stat("/usr/share/zoneinfo/Africa/Conakry", {st_mode=S_IFREG|0644, st_size=208, ...}) = 0
3718 stat("/usr/share/zoneinfo/Africa/Ceuta", {st_mode=S_IFREG|0644, st_size=2049, ...}) = 0
3718 stat("/usr/share/zoneinfo/Africa/Casablanca", {st_mode=S_IFREG|0644, st_size=542, ...}) = 0
3718 stat("/usr/share/zoneinfo/Africa/Cairo", {st_mode=S_IFREG|0644, st_size=9371, ...}) = 0
3718 stat("/usr/share/zoneinfo/Africa/Bujumbura", {st_mode=S_IFREG|0644, st_size=140, ...}) = 0
3718 stat("/usr/share/zoneinfo/Africa/Brazzaville", {st_mode=S_IFREG|0644, st_size=157, ...}) = 0
3718 stat("/usr/share/zoneinfo/Africa/Blantyre", {st_mode=S_IFREG|0644, st_size=157, ...}) = 0
3718 stat("/usr/share/zoneinfo/Africa/Bissau", {st_mode=S_IFREG|0644, st_size=194, ...}) = 0
3718 stat("/usr/share/zoneinfo/Africa/Banjul", {st_mode=S_IFREG|0644, st_size=232, ...}) = 0
3718 stat("/usr/share/zoneinfo/Africa/Bangui", {st_mode=S_IFREG|0644, st_size=157, ...}) = 0
3718 stat("/usr/share/zoneinfo/Africa/Bamako", {st_mode=S_IFREG|0644, st_size=208, ...}) = 0
3718 stat("/usr/share/zoneinfo/Africa/Asmera", {st_mode=S_IFREG|0644, st_size=201, ...}) = 0
3718 stat("/usr/share/zoneinfo/Africa/Asmara", {st_mode=S_IFREG|0644, st_size=201, ...}) = 0
3718 stat("/usr/share/zoneinfo/Africa/Algiers", {st_mode=S_IFREG|0644, st_size=734, ...}) = 0
3718 stat("/usr/share/zoneinfo/Africa/Addis_Ababa", {st_mode=S_IFREG|0644, st_size=180, ...}) = 0
3718 stat("/usr/share/zoneinfo/Africa/Accra", {st_mode=S_IFREG|0644, st_size=378, ...}) = 0
3718 stat("/usr/share/zoneinfo/Africa/Abidjan", {st_mode=S_IFREG|0644, st_size=156, ...}) = 0
3718 open("/usr/share/zoneinfo/America", O_RDONLY|O_NONBLOCK|O_DIRECTORY|O_CLOEXEC) = 11
3718 getdents(11, /* 139 entries */, 32768) = 4464
3718 getdents(11, /* 0 entries */, 32768) = 0
3718 open("/proc/meminfo", O_RDONLY) = 12
3718 fstat(12, {st_mode=S_IFREG|0444, st_size=0, ...}) = 0
3718 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f6df42c7000
3718 read(12, "MemTotal: 2048688 kB\nMemF"..., 1024) = 1024
3718 close(12) = 0
3718 munmap(0x7f6df42c7000, 4096) = 0
3718 close(11) = 0
3718 stat("/usr/share/zoneinfo/America/Yellowknife", {st_mode=S_IFREG|0644, st_size=1966, ...}) = 0
3718 stat("/usr/share/zoneinfo/America/Yakutat", {st_mode=S_IFREG|0644, st_size=2288, ...}) = 0
3718 stat("/usr/share/zoneinfo/America/Winnipeg", {st_mode=S_IFREG|0644, st_size=2865, ...}) = 0
3718 stat("/usr/share/zoneinfo/America/Whitehorse", {st_mode=S_IFREG|0644, st_size=2067, ...}) = 0
3718 stat("/usr/share/zoneinfo/America/Virgin", {st_mode=S_IFREG|0644, st_size=156, ...}) = 0
3718 stat("/usr/share/zoneinfo/America/Vancouver", {st_mode=S_IFREG|0644, st_size=2875, ...}) = 0
3718 stat("/usr/share/zoneinfo/America/Tortola", {st_mode=S_IFREG|0644, st_size=156, ...}) = 0
3718 stat("/usr/share/zoneinfo/America/Toronto", {st_mode=S_IFREG|0644, st_size=3477, ...}) = 0
3718 stat("/usr/share/zoneinfo/America/Tijuana", {st_mode=S_IFREG|0644, st_size=2342, ...}) = 0
3718 stat("/usr/share/zoneinfo/America/Thunder_Bay", {st_mode=S_IFREG|0644, st_size=2185, ...}) = 0
3718 stat("/usr/share/zoneinfo/America/Thule", {st_mode=S_IFREG|0644, st_size=1514, ...}) = 0
3718 stat("/usr/share/zoneinfo/America/Tegucigalpa", {st_mode=S_IFREG|0644, st_size=264, ...}) = 0
3718 stat("/usr/share/zoneinfo/America/Swift_Current", {st_mode=S_IFREG|0644, st_size=560, ...}) = 0
3718 stat("/usr/share/zoneinfo/America/St_Vincent", {st_mode=S_IFREG|0644, st_size=177, ...}) = 0
3718 stat("/usr/share/zoneinfo/America/St_Thomas", {st_mode=S_IFREG|0644, st_size=156, ...}) = 0
3718 stat("/usr/share/zoneinfo/America/St_Lucia", {st_mode=S_IFREG|0644, st_size=177, ...}) = 0
3718 stat("/usr/share/zoneinfo/America/St_Kitts", {st_mode=S_IFREG|0644, st_size=156, ...}) = 0
3718 stat("/usr/share/zoneinfo/America/St_Johns", {st_mode=S_IFREG|0644, st_size=3632, ...}) = 0
3718 stat("/usr/share/zoneinfo/America/St_Barthelemy", {st_mode=S_IFREG|0644, st_size=156, ...}) = 0
3718 stat("/usr/share/zoneinfo/America/Shiprock", {st_mode=S_IFREG|0644, st_size=2427, ...}) = 0
3718 stat("/usr/share/zoneinfo/America/Scoresbysund", {st_mode=S_IFREG|0644, st_size=1911, ...}) = 0
3718 stat("/usr/share/zoneinfo/America/Sao_Paulo", {st_mode=S_IFREG|0644, st_size=2001, ...}) = 0
3718 stat("/usr/share/zoneinfo/America/Santo_Domingo", {st_mode=S_IFREG|0644, st_size=463, ...}) = 0
3718 stat("/usr/share/zoneinfo/America/Santiago", {st_mode=S_IFREG|0644, st_size=9209, ...}) = 0
3718 stat("/usr/share/zoneinfo/America/Santarem", {st_mode=S_IFREG|0644, st_size=612, ...}) = 0
3718 stat("/usr/share/zoneinfo/America/Santa_Isabel", {st_mode=S_IFREG|0644, st_size=2342, ...}) = 0
3718 stat("/usr/share/zoneinfo/America/Rosario", {st_mode=S_IFREG|0644, st_size=1087, ...}) = 0
3718 stat("/usr/share/zoneinfo/America/Rio_Branco", {st_mode=S_IFREG|0644, st_size=612, ...}) = 0
3718 stat("/usr/share/zoneinfo/America/Resolute", {st_mode=S_IFREG|0644, st_size=8554, ...}) = 0
3718 stat("/usr/share/zoneinfo/America/Regina", {st_mode=S_IFREG|0644, st_size=980, ...}) = 0
3718 stat("/usr/share/zoneinfo/America/Recife", {st_mode=S_IFREG|0644, st_size=714, ...}) = 0
3718 stat("/usr/share/zoneinfo/America/Rankin_Inlet", {st_mode=S_IFREG|0644, st_size=1900, ...}) = 0
3718 stat("/usr/share/zoneinfo/America/Rainy_River", {st_mode=S_IFREG|0644, st_size=2105, ...}) = 0
3718 stat("/usr/share/zoneinfo/America/Puerto_Rico", {st_mode=S_IFREG|0644, st_size=229, ...}) = 0
3718 stat("/usr/share/zoneinfo/America/Porto_Velho", {st_mode=S_IFREG|0644, st_size=574, ...}) = 0
3718 stat("/usr/share/zoneinfo/America/Porto_Acre", {st_mode=S_IFREG|0644, st_size=612, ...}) = 0
3718 stat("/usr/share/zoneinfo/America/Port_of_Spain", {st_mode=S_IFREG|0644, st_size=156, ...}) = 0
3718 stat("/usr/share/zoneinfo/America/Port-au-Prince", {st_mode=S_IFREG|0644, st_size=711, ...}) = 0
3718 stat("/usr/share/zoneinfo/America/Phoenix", {st_mode=S_IFREG|0644, st_size=327, ...}) = 0
3718 stat("/usr/share/zoneinfo/America/Paramaribo", {st_mode=S_IFREG|0644, st_size=294, ...}) = 0
3718 stat("/usr/share/zoneinfo/America/Pangnirtung", {st_mode=S_IFREG|0644, st_size=2062, ...}) = 0
3718 stat("/usr/share/zoneinfo/America/Panama", {st_mode=S_IFREG|0644, st_size=177, ...}) = 0
3718 stat("/usr/share/zoneinfo/America/Ojinaga", {st_mode=S_IFREG|0644, st_size=1492, ...}) = 0
3718 stat("/usr/share/zoneinfo/America/North_Dakota", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
3718 stat("/usr/share/zoneinfo/America/Noronha", {st_mode=S_IFREG|0644, st_size=714, ...}) = 0
3718 stat("/usr/share/zoneinfo/America/Nome", {st_mode=S_IFREG|0644, st_size=2350, ...}) = 0
3718 stat("/usr/share/zoneinfo/America/Nipigon", {st_mode=S_IFREG|0644, st_size=2105, ...}) = 0
3718 stat("/usr/share/zoneinfo/America/New_York", {st_mode=S_IFREG|0644, st_size=3519, ...}) = 0
3718 stat("/usr/share/zoneinfo/America/Nassau", {st_mode=S_IFREG|0644, st_size=2270, ...}) = 0
3718 stat("/usr/share/zoneinfo/America/Montserrat", {st_mode=S_IFREG|0644, st_size=156, ...}) = 0
3718 stat("/usr/share/zoneinfo/America/Montreal", {st_mode=S_IFREG|0644, st_size=3477, ...}) = 0
3718 stat("/usr/share/zoneinfo/America/Montevideo", {st_mode=S_IFREG|0644, st_size=2118, ...}) = 0
3718 stat("/usr/share/zoneinfo/America/Monterrey", {st_mode=S_IFREG|0644, st_size=1402, ...}) = 0
3718 stat("/usr/share/zoneinfo/America/Moncton", {st_mode=S_IFREG|0644, st_size=3137, ...}) = 0
3718 stat("/usr/share/zoneinfo/America/Miquelon", {st_mode=S_IFREG|0644, st_size=1670, ...}) = 0
3718 stat("/usr/share/zoneinfo/America/Mexico_City", {st_mode=S_IFREG|0644, st_size=1604, ...}) = 0
3718 stat("/usr/share/zoneinfo/America/Merida", {st_mode=S_IFREG|0644, st_size=1426, ...}) = 0
3718 stat("/usr/share/zoneinfo/America/Menominee", {st_mode=S_IFREG|0644, st_size=2241, ...}) = 0
3718 stat("/usr/share/zoneinfo/America/Mendoza", {st_mode=S_IFREG|0644, st_size=1115, ...}) = 0
3718 stat("/usr/share/zoneinfo/America/Mazatlan", {st_mode=S_IFREG|0644, st_size=1534, ...}) = 0
3718 stat("/usr/share/zoneinfo/America/Matamoros", {st_mode=S_IFREG|0644, st_size=1402, ...}) = 0
3718 stat("/usr/share/zoneinfo/America/Martinique", {st_mode=S_IFREG|0644, st_size=231, ...}) = 0
3718 stat("/usr/share/zoneinfo/America/Marigot", {st_mode=S_IFREG|0644, st_size=156, ...}) = 0
3718 stat("/usr/share/zoneinfo/America/Manaus", {st_mode=S_IFREG|0644, st_size=602, ...}) = 0
3718 stat("/usr/share/zoneinfo/America/Managua", {st_mode=S_IFREG|0644, st_size=421, ...}) = 0
3718 stat("/usr/share/zoneinfo/America/Maceio", {st_mode=S_IFREG|0644, st_size=742, ...}) = 0
3718 stat("/usr/share/zoneinfo/America/Louisville", {st_mode=S_IFREG|0644, st_size=2755, ...}) = 0
3718 stat("/usr/share/zoneinfo/America/Los_Angeles", {st_mode=S_IFREG|0644, st_size=2819, ...}) = 0
3718 stat("/usr/share/zoneinfo/America/Lima", {st_mode=S_IFREG|0644, st_size=395, ...}) = 0
3718 stat("/usr/share/zoneinfo/America/La_Paz", {st_mode=S_IFREG|0644, st_size=217, ...}) = 0
3718 stat("/usr/share/zoneinfo/America/Knox_IN", {st_mode=S_IFREG|0644, st_size=2395, ...}) = 0
3718 stat("/usr/share/zoneinfo/America/Kentucky", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
3718 stat("/usr/share/zoneinfo/America/Juneau", {st_mode=S_IFREG|0644, st_size=2324, ...}) = 0
3718 stat("/usr/share/zoneinfo/America/Jujuy", {st_mode=S_IFREG|0644, st_size=1087, ...}) = 0
3718 stat("/usr/share/zoneinfo/America/Jamaica", {st_mode=S_IFREG|0644, st_size=481, ...}) = 0
3718 stat("/usr/share/zoneinfo/America/Iqaluit", {st_mode=S_IFREG|0644, st_size=2000, ...}) = 0
3718 stat("/usr/share/zoneinfo/America/Inuvik", {st_mode=S_IFREG|0644, st_size=1914, ...}) = 0
3718 stat("/usr/share/zoneinfo/America/Indianapolis", {st_mode=S_IFREG|0644, st_size=1649, ...}) = 0
3718 stat("/usr/share/zoneinfo/America/Indiana", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
3718 stat("/usr/share/zoneinfo/America/Hermosillo", {st_mode=S_IFREG|0644, st_size=424, ...}) = 0
3718 stat("/usr/share/zoneinfo/America/Havana", {st_mode=S_IFREG|0644, st_size=2411, ...}) = 0
3718 stat("/usr/share/zoneinfo/America/Halifax", {st_mode=S_IFREG|0644, st_size=3424, ...}) = 0
3718 stat("/usr/share/zoneinfo/America/Guyana", {st_mode=S_IFREG|0644, st_size=256, ...}) = 0
3718 stat("/usr/share/zoneinfo/America/Guayaquil", {st_mode=S_IFREG|0644, st_size=177, ...}) = 0
3718 stat("/usr/share/zoneinfo/America/Guatemala", {st_mode=S_IFREG|0644, st_size=292, ...}) = 0
3718 stat("/usr/share/zoneinfo/America/Guadeloupe", {st_mode=S_IFREG|0644, st_size=156, ...}) = 0
3718 stat("/usr/share/zoneinfo/America/Grenada", {st_mode=S_IFREG|0644, st_size=156, ...}) = 0
3718 stat("/usr/share/zoneinfo/America/Grand_Turk", {st_mode=S_IFREG|0644, st_size=1871, ...}) = 0
3718 stat("/usr/share/zoneinfo/America/Goose_Bay", {st_mode=S_IFREG|0644, st_size=3187, ...}) = 0
3718 stat("/usr/share/zoneinfo/America/Godthab", {st_mode=S_IFREG|0644, st_size=8296, ...}) = 0
3718 stat("/usr/share/zoneinfo/America/Glace_Bay", {st_mode=S_IFREG|0644, st_size=2192, ...}) = 0
3718 stat("/usr/share/zoneinfo/America/Fortaleza", {st_mode=S_IFREG|0644, st_size=714, ...}) = 0
3718 stat("/usr/share/zoneinfo/America/Fort_Wayne", {st_mode=S_IFREG|0644, st_size=1649, ...}) = 0
3718 stat("/usr/share/zoneinfo/America/Ensenada", {st_mode=S_IFREG|0644, st_size=2342, ...}) = 0
3718 stat("/usr/share/zoneinfo/America/El_Salvador", {st_mode=S_IFREG|0644, st_size=236, ...}) = 0
3718 stat("/usr/share/zoneinfo/America/Eirunepe", {st_mode=S_IFREG|0644, st_size=640, ...}) = 0
3718 stat("/usr/share/zoneinfo/America/Edmonton", {st_mode=S_IFREG|0644, st_size=2388, ...}) = 0
3718 stat("/usr/share/zoneinfo/America/Dominica", {st_mode=S_IFREG|0644, st_size=156, ...}) = 0
3718 stat("/usr/share/zoneinfo/America/Detroit", {st_mode=S_IFREG|0644, st_size=2202, ...}) = 0
3718 stat("/usr/share/zoneinfo/America/Denver", {st_mode=S_IFREG|0644, st_size=2427, ...}) = 0
3718 stat("/usr/share/zoneinfo/America/Dawson_Creek", {st_mode=S_IFREG|0644, st_size=1033, ...}) = 0
3718 stat("/usr/share/zoneinfo/America/Dawson", {st_mode=S_IFREG|0644, st_size=2067, ...}) = 0
3718 stat("/usr/share/zoneinfo/America/Danmarkshavn", {st_mode=S_IFREG|0644, st_size=700, ...}) = 0
3718 stat("/usr/share/zoneinfo/America/Curacao", {st_mode=S_IFREG|0644, st_size=194, ...}) = 0
3718 stat("/usr/share/zoneinfo/America/Cuiaba", {st_mode=S_IFREG|0644, st_size=1973, ...}) = 0
3718 stat("/usr/share/zoneinfo/America/Costa_Rica", {st_mode=S_IFREG|0644, st_size=315, ...}) = 0
3718 stat("/usr/share/zoneinfo/America/Cordoba", {st_mode=S_IFREG|0644, st_size=1087, ...}) = 0
3718 stat("/usr/share/zoneinfo/America/Coral_Harbour", {st_mode=S_IFREG|0644, st_size=319, ...}) = 0
3718 stat("/usr/share/zoneinfo/America/Chihuahua", {st_mode=S_IFREG|0644, st_size=1492, ...}) = 0
3718 stat("/usr/share/zoneinfo/America/Chicago", {st_mode=S_IFREG|0644, st_size=3543, ...}) = 0
3718 stat("/usr/share/zoneinfo/America/Cayman", {st_mode=S_IFREG|0644, st_size=177, ...}) = 0
3718 stat("/usr/share/zoneinfo/America/Cayenne", {st_mode=S_IFREG|0644, st_size=186, ...}) = 0
3718 stat("/usr/share/zoneinfo/America/Catamarca", {st_mode=S_IFREG|0644, st_size=1087, ...}) = 0
3718 stat("/usr/share/zoneinfo/America/Caracas", {st_mode=S_IFREG|0644, st_size=224, ...}) = 0
3718 stat("/usr/share/zoneinfo/America/Cancun", {st_mode=S_IFREG|0644, st_size=1450, ...}) = 0
3718 stat("/usr/share/zoneinfo/America/Campo_Grande", {st_mode=S_IFREG|0644, st_size=2001, ...}) = 0
3718 stat("/usr/share/zoneinfo/America/Cambridge_Bay", {st_mode=S_IFREG|0644, st_size=2052, ...}) = 0
3718 stat("/usr/share/zoneinfo/America/Buenos_Aires", {st_mode=S_IFREG|0644, st_size=1061, ...}) = 0
3718 stat("/usr/share/zoneinfo/America/Boise", {st_mode=S_IFREG|0644, st_size=2377, ...}) = 0
3718 stat("/usr/share/zoneinfo/America/Bogota", {st_mode=S_IFREG|0644, st_size=231, ...}) = 0
3718 stat("/usr/share/zoneinfo/America/Boa_Vista", {st_mode=S_IFREG|0644, st_size=630, ...}) = 0
3718 stat("/usr/share/zoneinfo/America/Blanc-Sablon", {st_mode=S_IFREG|0644, st_size=281, ...}) = 0
3718 stat("/usr/share/zoneinfo/America/Belize", {st_mode=S_IFREG|0644, st_size=962, ...}) = 0
3718 stat("/usr/share/zoneinfo/America/Belem", {st_mode=S_IFREG|0644, st_size=574, ...}) = 0
3718 stat("/usr/share/zoneinfo/America/Barbados", {st_mode=S_IFREG|0644, st_size=330, ...}) = 0
3718 stat("/usr/share/zoneinfo/America/Bahia_Banderas", {st_mode=S_IFREG|0644, st_size=1558, ...}) = 0
3718 stat("/usr/share/zoneinfo/America/Bahia", {st_mode=S_IFREG|0644, st_size=994, ...}) = 0
3718 stat("/usr/share/zoneinfo/America/Atka", {st_mode=S_IFREG|0644, st_size=2353, ...}) = 0
3718 stat("/usr/share/zoneinfo/America/Atikokan", {st_mode=S_IFREG|0644, st_size=319, ...}) = 0
3718 stat("/usr/share/zoneinfo/America/Asuncion", {st_mode=S_IFREG|0644, st_size=2020, ...}) = 0
3718 stat("/usr/share/zoneinfo/America/Aruba", {st_mode=S_IFREG|0644, st_size=194, ...}) = 0
3718 stat("/usr/share/zoneinfo/America/Argentina", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
3718 stat("/usr/share/zoneinfo/America/Araguaina", {st_mode=S_IFREG|0644, st_size=854, ...}) = 0
3718 stat("/usr/share/zoneinfo/America/Antigua", {st_mode=S_IFREG|0644, st_size=194, ...}) = 0
3718 stat("/usr/share/zoneinfo/America/Anguilla", {st_mode=S_IFREG|0644, st_size=156, ...}) = 0
3718 stat("/usr/share/zoneinfo/America/Anchorage", {st_mode=S_IFREG|0644, st_size=2358, ...}) = 0
3718 stat("/usr/share/zoneinfo/America/Adak", {st_mode=S_IFREG|0644, st_size=2353, ...}) = 0
3718 open("/usr/share/zoneinfo/America/Argentina", O_RDONLY|O_NONBLOCK|O_DIRECTORY|O_CLOEXEC) = 11
3718 getdents(11, /* 15 entries */, 32768) = 472
3718 getdents(11, /* 0 entries */, 32768) = 0
3718 close(11) = 0
3718 stat("/usr/share/zoneinfo/America/Argentina/Ushuaia", {st_mode=S_IFREG|0644, st_size=1087, ...}) = 0
3718 stat("/usr/share/zoneinfo/America/Argentina/Tucuman", {st_mode=S_IFREG|0644, st_size=1115, ...}) = 0
3718 stat("/usr/share/zoneinfo/America/Argentina/San_Luis", {st_mode=S_IFREG|0644, st_size=1125, ...}) = 0
3718 stat("/usr/share/zoneinfo/America/Argentina/San_Juan", {st_mode=S_IFREG|0644, st_size=1101, ...}) = 0
3718 stat("/usr/share/zoneinfo/America/Argentina/Salta", {st_mode=S_IFREG|0644, st_size=1059, ...}) = 0
3718 stat("/usr/share/zoneinfo/America/Argentina/Rio_Gallegos", {st_mode=S_IFREG|0644, st_size=1087, ...}) = 0
3718 stat("/usr/share/zoneinfo/America/Argentina/Mendoza", {st_mode=S_IFREG|0644, st_size=1115, ...}) = 0
3718 stat("/usr/share/zoneinfo/America/Argentina/La_Rioja", {st_mode=S_IFREG|0644, st_size=1101, ...}) = 0
3718 stat("/usr/share/zoneinfo/America/Argentina/Jujuy", {st_mode=S_IFREG|0644, st_size=1087, ...}) = 0
3718 stat("/usr/share/zoneinfo/America/Argentina/Cordoba", {st_mode=S_IFREG|0644, st_size=1087, ...}) = 0
3718 stat("/usr/share/zoneinfo/America/Argentina/ComodRivadavia", {st_mode=S_IFREG|0644, st_size=1087, ...}) = 0
3718 stat("/usr/share/zoneinfo/America/Argentina/Catamarca", {st_mode=S_IFREG|0644, st_size=1087, ...}) = 0
3718 stat("/usr/share/zoneinfo/America/Argentina/Buenos_Aires", {st_mode=S_IFREG|0644, st_size=1061, ...}) = 0
3718 open("/usr/share/zoneinfo/America/Indiana", O_RDONLY|O_NONBLOCK|O_DIRECTORY|O_CLOEXEC) = 11
3718 getdents(11, /* 10 entries */, 32768) = 296
3718 getdents(11, /* 0 entries */, 32768) = 0
3718 close(11) = 0
3718 stat("/usr/share/zoneinfo/America/Indiana/Winamac", {st_mode=S_IFREG|0644, st_size=1761, ...}) = 0
3718 stat("/usr/share/zoneinfo/America/Indiana/Vincennes", {st_mode=S_IFREG|0644, st_size=1677, ...}) = 0
3718 stat("/usr/share/zoneinfo/America/Indiana/Vevay", {st_mode=S_IFREG|0644, st_size=1397, ...}) = 0
3718 stat("/usr/share/zoneinfo/America/Indiana/Tell_City", {st_mode=S_IFREG|0644, st_size=1677, ...}) = 0
3718 stat("/usr/share/zoneinfo/America/Indiana/Petersburg", {st_mode=S_IFREG|0644, st_size=1887, ...}) = 0
3718 stat("/usr/share/zoneinfo/America/Indiana/Marengo", {st_mode=S_IFREG|0644, st_size=1705, ...}) = 0
3718 stat("/usr/share/zoneinfo/America/Indiana/Knox", {st_mode=S_IFREG|0644, st_size=2395, ...}) = 0
3718 stat("/usr/share/zoneinfo/America/Indiana/Indianapolis", {st_mode=S_IFREG|0644, st_size=1649, ...}) = 0
3718 open("/usr/share/zoneinfo/America/Kentucky", O_RDONLY|O_NONBLOCK|O_DIRECTORY|O_CLOEXEC) = 11
3718 getdents(11, /* 4 entries */, 32768) = 112
3718 getdents(11, /* 0 entries */, 32768) = 0
3718 close(11) = 0
3718 stat("/usr/share/zoneinfo/America/Kentucky/Monticello", {st_mode=S_IFREG|0644, st_size=2335, ...}) = 0
3718 stat("/usr/share/zoneinfo/America/Kentucky/Louisville", {st_mode=S_IFREG|0644, st_size=2755, ...}) = 0
3718 open("/usr/share/zoneinfo/America/North_Dakota", O_RDONLY|O_NONBLOCK|O_DIRECTORY|O_CLOEXEC) = 11
3718 getdents(11, /* 4 entries */, 32768) = 112
3718 getdents(11, /* 0 entries */, 32768) = 0
3718 close(11) = 0
3718 stat("/usr/share/zoneinfo/America/North_Dakota/New_Salem", {st_mode=S_IFREG|0644, st_size=2363, ...}) = 0
3718 stat("/usr/share/zoneinfo/America/North_Dakota/Center", {st_mode=S_IFREG|0644, st_size=2363, ...}) = 0
3718 open("/usr/share/zoneinfo/Antarctica", O_RDONLY|O_NONBLOCK|O_DIRECTORY|O_CLOEXEC) = 11
3718 getdents(11, /* 13 entries */, 32768) = 408
3718 getdents(11, /* 0 entries */, 32768) = 0
3718 close(11) = 0
3718 stat("/usr/share/zoneinfo/Antarctica/Vostok", {st_mode=S_IFREG|0644, st_size=160, ...}) = 0
3718 stat("/usr/share/zoneinfo/Antarctica/Syowa", {st_mode=S_IFREG|0644, st_size=160, ...}) = 0
3718 stat("/usr/share/zoneinfo/Antarctica/South_Pole", {st_mode=S_IFREG|0644, st_size=2001, ...}) = 0
3718 stat("/usr/share/zoneinfo/Antarctica/Rothera", {st_mode=S_IFREG|0644, st_size=159, ...}) = 0
3718 stat("/usr/share/zoneinfo/Antarctica/Palmer", {st_mode=S_IFREG|0644, st_size=8546, ...}) = 0
3718 stat("/usr/share/zoneinfo/Antarctica/McMurdo", {st_mode=S_IFREG|0644, st_size=2001, ...}) = 0
3718 stat("/usr/share/zoneinfo/Antarctica/Mawson", {st_mode=S_IFREG|0644, st_size=190, ...}) = 0
3718 stat("/usr/share/zoneinfo/Antarctica/Macquarie", {st_mode=S_IFREG|0644, st_size=1549, ...}) = 0
3718 stat("/usr/share/zoneinfo/Antarctica/DumontDUrville", {st_mode=S_IFREG|0644, st_size=213, ...}) = 0
3718 stat("/usr/share/zoneinfo/Antarctica/Davis", {st_mode=S_IFREG|0644, st_size=248, ...}) = 0
3718 stat("/usr/share/zoneinfo/Antarctica/Casey", {st_mode=S_IFREG|0644, st_size=211, ...}) = 0
3718 open("/usr/share/zoneinfo/Arctic", O_RDONLY|O_NONBLOCK|O_DIRECTORY|O_CLOEXEC) = 11
3718 getdents(11, /* 3 entries */, 32768) = 80
3718 getdents(11, /* 0 entries */, 32768) = 0
3718 close(11) = 0
3718 stat("/usr/share/zoneinfo/Arctic/Longyearbyen", {st_mode=S_IFREG|0644, st_size=2225, ...}) = 0
3718 open("/usr/share/zoneinfo/Asia", O_RDONLY|O_NONBLOCK|O_DIRECTORY|O_CLOEXEC) = 11
3718 getdents(11, /* 93 entries */, 32768) = 2920
3718 getdents(11, /* 0 entries */, 32768) = 0
3718 close(11) = 0
3718 stat("/usr/share/zoneinfo/Asia/Yerevan", {st_mode=S_IFREG|0644, st_size=2012, ...}) = 0
3718 stat("/usr/share/zoneinfo/Asia/Yekaterinburg", {st_mode=S_IFREG|0644, st_size=2000, ...}) = 0
3718 stat("/usr/share/zoneinfo/Asia/Yakutsk", {st_mode=S_IFREG|0644, st_size=1914, ...}) = 0
3718 stat("/usr/share/zoneinfo/Asia/Vladivostok", {st_mode=S_IFREG|0644, st_size=1929, ...}) = 0
3718 stat("/usr/share/zoneinfo/Asia/Vientiane", {st_mode=S_IFREG|0644, st_size=239, ...}) = 0
3718 stat("/usr/share/zoneinfo/Asia/Urumqi", {st_mode=S_IFREG|0644, st_size=389, ...}) = 0
3718 stat("/usr/share/zoneinfo/Asia/Ulan_Bator", {st_mode=S_IFREG|0644, st_size=834, ...}) = 0
3718 stat("/usr/share/zoneinfo/Asia/Ulaanbaatar", {st_mode=S_IFREG|0644, st_size=834, ...}) = 0
3718 stat("/usr/share/zoneinfo/Asia/Ujung_Pandang", {st_mode=S_IFREG|0644, st_size=247, ...}) = 0
3718 stat("/usr/share/zoneinfo/Asia/Tokyo", {st_mode=S_IFREG|0644, st_size=331, ...}) = 0
3718 stat("/usr/share/zoneinfo/Asia/Thimphu", {st_mode=S_IFREG|0644, st_size=195, ...}) = 0
3718 stat("/usr/share/zoneinfo/Asia/Thimbu", {st_mode=S_IFREG|0644, st_size=195, ...}) = 0
3718 stat("/usr/share/zoneinfo/Asia/Tel_Aviv", {st_mode=S_IFREG|0644, st_size=2197, ...}) = 0
3718 stat("/usr/share/zoneinfo/Asia/Tehran", {st_mode=S_IFREG|0644, st_size=1622, ...}) = 0
3718 stat("/usr/share/zoneinfo/Asia/Tbilisi", {st_mode=S_IFREG|0644, st_size=1100, ...}) = 0
3718 stat("/usr/share/zoneinfo/Asia/Tashkent", {st_mode=S_IFREG|0644, st_size=667, ...}) = 0
3718 stat("/usr/share/zoneinfo/Asia/Taipei", {st_mode=S_IFREG|0644, st_size=724, ...}) = 0
3718 stat("/usr/share/zoneinfo/Asia/Singapore", {st_mode=S_IFREG|0644, st_size=402, ...}) = 0
3718 stat("/usr/share/zoneinfo/Asia/Shanghai", {st_mode=S_IFREG|0644, st_size=405, ...}) = 0
3718 stat("/usr/share/zoneinfo/Asia/Seoul", {st_mode=S_IFREG|0644, st_size=380, ...}) = 0
3718 stat("/usr/share/zoneinfo/Asia/Samarkand", {st_mode=S_IFREG|0644, st_size=677, ...}) = 0
3718 stat("/usr/share/zoneinfo/Asia/Sakhalin", {st_mode=S_IFREG|0644, st_size=1961, ...}) = 0
3718 stat("/usr/share/zoneinfo/Asia/Saigon", {st_mode=S_IFREG|0644, st_size=239, ...}) = 0
3718 stat("/usr/share/zoneinfo/Asia/Riyadh89", {st_mode=S_IFREG|0644, st_size=8523, ...}) = 0
3718 stat("/usr/share/zoneinfo/Asia/Riyadh88", {st_mode=S_IFREG|0644, st_size=8523, ...}) = 0
3718 stat("/usr/share/zoneinfo/Asia/Riyadh87", {st_mode=S_IFREG|0644, st_size=8669, ...}) = 0
3718 stat("/usr/share/zoneinfo/Asia/Riyadh", {st_mode=S_IFREG|0644, st_size=157, ...}) = 0
3718 stat("/usr/share/zoneinfo/Asia/Rangoon", {st_mode=S_IFREG|0644, st_size=259, ...}) = 0
3718 stat("/usr/share/zoneinfo/Asia/Qyzylorda", {st_mode=S_IFREG|0644, st_size=1068, ...}) = 0
3718 stat("/usr/share/zoneinfo/Asia/Qatar", {st_mode=S_IFREG|0644, st_size=195, ...}) = 0
3718 stat("/usr/share/zoneinfo/Asia/Pyongyang", {st_mode=S_IFREG|0644, st_size=242, ...}) = 0
3718 stat("/usr/share/zoneinfo/Asia/Pontianak", {st_mode=S_IFREG|0644, st_size=359, ...}) = 0
3718 stat("/usr/share/zoneinfo/Asia/Phnom_Penh", {st_mode=S_IFREG|0644, st_size=239, ...}) = 0
3718 stat("/usr/share/zoneinfo/Asia/Oral", {st_mode=S_IFREG|0644, st_size=1086, ...}) = 0
3718 stat("/usr/share/zoneinfo/Asia/Omsk", {st_mode=S_IFREG|0644, st_size=1914, ...}) = 0
3718 stat("/usr/share/zoneinfo/Asia/Novosibirsk", {st_mode=S_IFREG|0644, st_size=1944, ...}) = 0
3718 stat("/usr/share/zoneinfo/Asia/Novokuznetsk", {st_mode=S_IFREG|0644, st_size=1968, ...}) = 0
3718 stat("/usr/share/zoneinfo/Asia/Nicosia", {st_mode=S_IFREG|0644, st_size=2002, ...}) = 0
3718 stat("/usr/share/zoneinfo/Asia/Muscat", {st_mode=S_IFREG|0644, st_size=157, ...}) = 0
3718 stat("/usr/share/zoneinfo/Asia/Manila", {st_mode=S_IFREG|0644, st_size=319, ...}) = 0
3718 stat("/usr/share/zoneinfo/Asia/Makassar", {st_mode=S_IFREG|0644, st_size=247, ...}) = 0
3718 stat("/usr/share/zoneinfo/Asia/Magadan", {st_mode=S_IFREG|0644, st_size=1915, ...}) = 0
3718 stat("/usr/share/zoneinfo/Asia/Macau", {st_mode=S_IFREG|0644, st_size=781, ...}) = 0
3718 stat("/usr/share/zoneinfo/Asia/Macao", {st_mode=S_IFREG|0644, st_size=781, ...}) = 0
3718 stat("/usr/share/zoneinfo/Asia/Kuwait", {st_mode=S_IFREG|0644, st_size=157, ...}) = 0
3718 stat("/usr/share/zoneinfo/Asia/Kuching", {st_mode=S_IFREG|0644, st_size=505, ...}) = 0
3718 stat("/usr/share/zoneinfo/Asia/Kuala_Lumpur", {st_mode=S_IFREG|0644, st_size=372, ...}) = 0
3718 stat("/usr/share/zoneinfo/Asia/Krasnoyarsk", {st_mode=S_IFREG|0644, st_size=1914, ...}) = 0
3718 stat("/usr/share/zoneinfo/Asia/Kolkata", {st_mode=S_IFREG|0644, st_size=265, ...}) = 0
3718 stat("/usr/share/zoneinfo/Asia/Katmandu", {st_mode=S_IFREG|0644, st_size=198, ...}) = 0
3718 stat("/usr/share/zoneinfo/Asia/Kathmandu", {st_mode=S_IFREG|0644, st_size=198, ...}) = 0
3718 stat("/usr/share/zoneinfo/Asia/Kashgar", {st_mode=S_IFREG|0644, st_size=419, ...}) = 0
3718 stat("/usr/share/zoneinfo/Asia/Karachi", {st_mode=S_IFREG|0644, st_size=389, ...}) = 0
3718 stat("/usr/share/zoneinfo/Asia/Kamchatka", {st_mode=S_IFREG|0644, st_size=1915, ...}) = 0
3718 stat("/usr/share/zoneinfo/Asia/Kabul", {st_mode=S_IFREG|0644, st_size=173, ...}) = 0
3718 stat("/usr/share/zoneinfo/Asia/Jerusalem", {st_mode=S_IFREG|0644, st_size=2197, ...}) = 0
3718 stat("/usr/share/zoneinfo/Asia/Jayapura", {st_mode=S_IFREG|0644, st_size=209, ...}) = 0
3718 stat("/usr/share/zoneinfo/Asia/Jakarta", {st_mode=S_IFREG|0644, st_size=344, ...}) = 0
3718 stat("/usr/share/zoneinfo/Asia/Istanbul", {st_mode=S_IFREG|0644, st_size=2721, ...}) = 0
3718 stat("/usr/share/zoneinfo/Asia/Irkutsk", {st_mode=S_IFREG|0644, st_size=1935, ...}) = 0
3718 stat("/usr/share/zoneinfo/Asia/Hovd", {st_mode=S_IFREG|0644, st_size=834, ...}) = 0
3718 stat("/usr/share/zoneinfo/Asia/Hong_Kong", {st_mode=S_IFREG|0644, st_size=1159, ...}) = 0
3718 stat("/usr/share/zoneinfo/Asia/Ho_Chi_Minh", {st_mode=S_IFREG|0644, st_size=239, ...}) = 0
3718 stat("/usr/share/zoneinfo/Asia/Harbin", {st_mode=S_IFREG|0644, st_size=447, ...}) = 0
3718 stat("/usr/share/zoneinfo/Asia/Gaza", {st_mode=S_IFREG|0644, st_size=2285, ...}) = 0
3718 stat("/usr/share/zoneinfo/Asia/Dushanbe", {st_mode=S_IFREG|0644, st_size=597, ...}) = 0
3718 stat("/usr/share/zoneinfo/Asia/Dubai", {st_mode=S_IFREG|0644, st_size=157, ...}) = 0
3718 stat("/usr/share/zoneinfo/Asia/Dili", {st_mode=S_IFREG|0644, st_size=277, ...}) = 0
3718 stat("/usr/share/zoneinfo/Asia/Dhaka", {st_mode=S_IFREG|0644, st_size=364, ...}) = 0
3718 stat("/usr/share/zoneinfo/Asia/Damascus", {st_mode=S_IFREG|0644, st_size=2306, ...}) = 0
3718 stat("/usr/share/zoneinfo/Asia/Dacca", {st_mode=S_IFREG|0644, st_size=364, ...}) = 0
3718 stat("/usr/share/zoneinfo/Asia/Colombo", {st_mode=S_IFREG|0644, st_size=347, ...}) = 0
3718 stat("/usr/share/zoneinfo/Asia/Chungking", {st_mode=S_IFREG|0644, st_size=389, ...}) = 0
3718 stat("/usr/share/zoneinfo/Asia/Chongqing", {st_mode=S_IFREG|0644, st_size=389, ...}) = 0
3718 stat("/usr/share/zoneinfo/Asia/Choibalsan", {st_mode=S_IFREG|0644, st_size=890, ...}) = 0
3718 stat("/usr/share/zoneinfo/Asia/Calcutta", {st_mode=S_IFREG|0644, st_size=265, ...}) = 0
3718 stat("/usr/share/zoneinfo/Asia/Brunei", {st_mode=S_IFREG|0644, st_size=187, ...}) = 0
3718 stat("/usr/share/zoneinfo/Asia/Bishkek", {st_mode=S_IFREG|0644, st_size=1047, ...}) = 0
3718 stat("/usr/share/zoneinfo/Asia/Beirut", {st_mode=S_IFREG|0644, st_size=2149, ...}) = 0
3718 stat("/usr/share/zoneinfo/Asia/Bangkok", {st_mode=S_IFREG|0644, st_size=178, ...}) = 0
3718 stat("/usr/share/zoneinfo/Asia/Baku", {st_mode=S_IFREG|0644, st_size=1942, ...}) = 0
3718 stat("/usr/share/zoneinfo/Asia/Bahrain", {st_mode=S_IFREG|0644, st_size=195, ...}) = 0
3718 stat("/usr/share/zoneinfo/Asia/Baghdad", {st_mode=S_IFREG|0644, st_size=962, ...}) = 0
3718 stat("/usr/share/zoneinfo/Asia/Ashkhabad", {st_mode=S_IFREG|0644, st_size=657, ...}) = 0
3718 stat("/usr/share/zoneinfo/Asia/Ashgabat", {st_mode=S_IFREG|0644, st_size=657, ...}) = 0
3718 stat("/usr/share/zoneinfo/Asia/Aqtobe", {st_mode=S_IFREG|0644, st_size=1038, ...}) = 0
3718 stat("/usr/share/zoneinfo/Asia/Aqtau", {st_mode=S_IFREG|0644, st_size=1112, ...}) = 0
3718 stat("/usr/share/zoneinfo/Asia/Anadyr", {st_mode=S_IFREG|0644, st_size=1931, ...}) = 0
3718 stat("/usr/share/zoneinfo/Asia/Amman", {st_mode=S_IFREG|0644, st_size=8504, ...}) = 0
3718 stat("/usr/share/zoneinfo/Asia/Almaty", {st_mode=S_IFREG|0644, st_size=922, ...}) = 0
3718 stat("/usr/share/zoneinfo/Asia/Aden", {st_mode=S_IFREG|0644, st_size=157, ...}) = 0
3718 open("/usr/share/zoneinfo/Atlantic", O_RDONLY|O_NONBLOCK|O_DIRECTORY|O_CLOEXEC) = 11
3718 getdents(11, /* 14 entries */, 32768) = 440
3718 getdents(11, /* 0 entries */, 32768) = 0
3718 close(11) = 0
3718 stat("/usr/share/zoneinfo/Atlantic/Stanley", {st_mode=S_IFREG|0644, st_size=1961, ...}) = 0
3718 stat("/usr/share/zoneinfo/Atlantic/St_Helena", {st_mode=S_IFREG|0644, st_size=177, ...}) = 0
3718 stat("/usr/share/zoneinfo/Atlantic/South_Georgia", {st_mode=S_IFREG|0644, st_size=139, ...}) = 0
3718 stat("/usr/share/zoneinfo/Atlantic/Reykjavik", {st_mode=S_IFREG|0644, st_size=1141, ...}) = 0
3718 stat("/usr/share/zoneinfo/Atlantic/Madeira", {st_mode=S_IFREG|0644, st_size=3452, ...}) = 0
3718 stat("/usr/share/zoneinfo/Atlantic/Jan_Mayen", {st_mode=S_IFREG|0644, st_size=2225, ...}) = 0
3718 stat("/usr/share/zoneinfo/Atlantic/Faroe", {st_mode=S_IFREG|0644, st_size=1815, ...}) = 0
3718 stat("/usr/share/zoneinfo/Atlantic/Faeroe", {st_mode=S_IFREG|0644, st_size=1815, ...}) = 0
3718 stat("/usr/share/zoneinfo/Atlantic/Cape_Verde", {st_mode=S_IFREG|0644, st_size=240, ...}) = 0
3718 stat("/usr/share/zoneinfo/Atlantic/Canary", {st_mode=S_IFREG|0644, st_size=1899, ...}) = 0
3718 stat("/usr/share/zoneinfo/Atlantic/Bermuda", {st_mode=S_IFREG|0644, st_size=1990, ...}) = 0
3718 stat("/usr/share/zoneinfo/Atlantic/Azores", {st_mode=S_IFREG|0644, st_size=3462, ...}) = 0
3718 open("/usr/share/zoneinfo/Australia", O_RDONLY|O_NONBLOCK|O_DIRECTORY|O_CLOEXEC) = 11
3718 getdents(11, /* 25 entries */, 32768) = 752
3718 getdents(11, /* 0 entries */, 32768) = 0
3718 close(11) = 0
3718 stat("/usr/share/zoneinfo/Australia/Yancowinna", {st_mode=S_IFREG|0644, st_size=2237, ...}) = 0
3718 stat("/usr/share/zoneinfo/Australia/West", {st_mode=S_IFREG|0644, st_size=440, ...}) = 0
3718 stat("/usr/share/zoneinfo/Australia/Victoria", {st_mode=S_IFREG|0644, st_size=2183, ...}) = 0
3718 stat("/usr/share/zoneinfo/Australia/Tasmania", {st_mode=S_IFREG|0644, st_size=2295, ...}) = 0
3718 stat("/usr/share/zoneinfo/Australia/Sydney", {st_mode=S_IFREG|0644, st_size=2183, ...}) = 0
3718 stat("/usr/share/zoneinfo/Australia/South", {st_mode=S_IFREG|0644, st_size=2202, ...}) = 0
3718 stat("/usr/share/zoneinfo/Australia/Queensland", {st_mode=S_IFREG|0644, st_size=413, ...}) = 0
3718 stat("/usr/share/zoneinfo/Australia/Perth", {st_mode=S_IFREG|0644, st_size=440, ...}) = 0
3718 stat("/usr/share/zoneinfo/Australia/North", {st_mode=S_IFREG|0644, st_size=288, ...}) = 0
3718 stat("/usr/share/zoneinfo/Australia/NSW", {st_mode=S_IFREG|0644, st_size=2183, ...}) = 0
3718 stat("/usr/share/zoneinfo/Australia/Melbourne", {st_mode=S_IFREG|0644, st_size=2183, ...}) = 0
3718 stat("/usr/share/zoneinfo/Australia/Lord_Howe", {st_mode=S_IFREG|0644, st_size=1821, ...}) = 0
3718 stat("/usr/share/zoneinfo/Australia/Lindeman", {st_mode=S_IFREG|0644, st_size=483, ...}) = 0
3718 stat("/usr/share/zoneinfo/Australia/LHI", {st_mode=S_IFREG|0644, st_size=1821, ...}) = 0
3718 stat("/usr/share/zoneinfo/Australia/Hobart", {st_mode=S_IFREG|0644, st_size=2295, ...}) = 0
3718 stat("/usr/share/zoneinfo/Australia/Eucla", {st_mode=S_IFREG|0644, st_size=446, ...}) = 0
3718 stat("/usr/share/zoneinfo/Australia/Darwin", {st_mode=S_IFREG|0644, st_size=288, ...}) = 0
3718 stat("/usr/share/zoneinfo/Australia/Currie", {st_mode=S_IFREG|0644, st_size=2183, ...}) = 0
3718 stat("/usr/share/zoneinfo/Australia/Canberra", {st_mode=S_IFREG|0644, st_size=2183, ...}) = 0
3718 stat("/usr/share/zoneinfo/Australia/Broken_Hill", {st_mode=S_IFREG|0644, st_size=2237, ...}) = 0
3718 stat("/usr/share/zoneinfo/Australia/Brisbane", {st_mode=S_IFREG|0644, st_size=413, ...}) = 0
3718 stat("/usr/share/zoneinfo/Australia/Adelaide", {st_mode=S_IFREG|0644, st_size=2202, ...}) = 0
3718 stat("/usr/share/zoneinfo/Australia/ACT", {st_mode=S_IFREG|0644, st_size=2183, ...}) = 0
3718 open("/usr/share/zoneinfo/Brazil", O_RDONLY|O_NONBLOCK|O_DIRECTORY|O_CLOEXEC) = 11
3718 getdents(11, /* 6 entries */, 32768) = 152
3718 getdents(11, /* 0 entries */, 32768) = 0
3718 close(11) = 0
3718 stat("/usr/share/zoneinfo/Brazil/West", {st_mode=S_IFREG|0644, st_size=602, ...}) = 0
3718 stat("/usr/share/zoneinfo/Brazil/East", {st_mode=S_IFREG|0644, st_size=2001, ...}) = 0
3718 stat("/usr/share/zoneinfo/Brazil/DeNoronha", {st_mode=S_IFREG|0644, st_size=714, ...}) = 0
3718 stat("/usr/share/zoneinfo/Brazil/Acre", {st_mode=S_IFREG|0644, st_size=612, ...}) = 0
3718 open("/usr/share/zoneinfo/Canada", O_RDONLY|O_NONBLOCK|O_DIRECTORY|O_CLOEXEC) = 11
3718 getdents(11, /* 11 entries */, 32768) = 344
3718 getdents(11, /* 0 entries */, 32768) = 0
3718 close(11) = 0
3718 stat("/usr/share/zoneinfo/Canada/Yukon", {st_mode=S_IFREG|0644, st_size=2067, ...}) = 0
3718 stat("/usr/share/zoneinfo/Canada/Saskatchewan", {st_mode=S_IFREG|0644, st_size=980, ...}) = 0
3718 stat("/usr/share/zoneinfo/Canada/Pacific", {st_mode=S_IFREG|0644, st_size=2875, ...}) = 0
3718 stat("/usr/share/zoneinfo/Canada/Newfoundland", {st_mode=S_IFREG|0644, st_size=3632, ...}) = 0
3718 stat("/usr/share/zoneinfo/Canada/Mountain", {st_mode=S_IFREG|0644, st_size=2388, ...}) = 0
3718 stat("/usr/share/zoneinfo/Canada/Eastern", {st_mode=S_IFREG|0644, st_size=3477, ...}) = 0
3718 stat("/usr/share/zoneinfo/Canada/East-Saskatchewan", {st_mode=S_IFREG|0644, st_size=980, ...}) = 0
3718 stat("/usr/share/zoneinfo/Canada/Central", {st_mode=S_IFREG|0644, st_size=2865, ...}) = 0
3718 stat("/usr/share/zoneinfo/Canada/Atlantic", {st_mode=S_IFREG|0644, st_size=3424, ...}) = 0
3718 open("/usr/share/zoneinfo/Chile", O_RDONLY|O_NONBLOCK|O_DIRECTORY|O_CLOEXEC) = 11
3718 getdents(11, /* 4 entries */, 32768) = 112
3718 getdents(11, /* 0 entries */, 32768) = 0
3718 close(11) = 0
3718 stat("/usr/share/zoneinfo/Chile/EasterIsland", {st_mode=S_IFREG|0644, st_size=8971, ...}) = 0
3718 stat("/usr/share/zoneinfo/Chile/Continental", {st_mode=S_IFREG|0644, st_size=9209, ...}) = 0
3718 open("/usr/share/zoneinfo/Etc", O_RDONLY|O_NONBLOCK|O_DIRECTORY|O_CLOEXEC) = 11
3718 getdents(11, /* 37 entries */, 32768) = 1128
3718 getdents(11, /* 0 entries */, 32768) = 0
3718 close(11) = 0
3718 stat("/usr/share/zoneinfo/Etc/Zulu", {st_mode=S_IFREG|0644, st_size=118, ...}) = 0
3718 stat("/usr/share/zoneinfo/Etc/Universal", {st_mode=S_IFREG|0644, st_size=118, ...}) = 0
3718 stat("/usr/share/zoneinfo/Etc/UTC", {st_mode=S_IFREG|0644, st_size=118, ...}) = 0
3718 stat("/usr/share/zoneinfo/Etc/UCT", {st_mode=S_IFREG|0644, st_size=118, ...}) = 0
3718 stat("/usr/share/zoneinfo/Etc/Greenwich", {st_mode=S_IFREG|0644, st_size=118, ...}) = 0
3718 stat("/usr/share/zoneinfo/Etc/GMT0", {st_mode=S_IFREG|0644, st_size=118, ...}) = 0
3718 stat("/usr/share/zoneinfo/Etc/GMT-9", {st_mode=S_IFREG|0644, st_size=127, ...}) = 0
3718 stat("/usr/share/zoneinfo/Etc/GMT-8", {st_mode=S_IFREG|0644, st_size=127, ...}) = 0
3718 stat("/usr/share/zoneinfo/Etc/GMT-7", {st_mode=S_IFREG|0644, st_size=127, ...}) = 0
3718 stat("/usr/share/zoneinfo/Etc/GMT-6", {st_mode=S_IFREG|0644, st_size=127, ...}) = 0
3718 stat("/usr/share/zoneinfo/Etc/GMT-5", {st_mode=S_IFREG|0644, st_size=127, ...}) = 0
3718 stat("/usr/share/zoneinfo/Etc/GMT-4", {st_mode=S_IFREG|0644, st_size=127, ...}) = 0
3718 stat("/usr/share/zoneinfo/Etc/GMT-3", {st_mode=S_IFREG|0644, st_size=127, ...}) = 0
3718 stat("/usr/share/zoneinfo/Etc/GMT-2", {st_mode=S_IFREG|0644, st_size=127, ...}) = 0
3718 stat("/usr/share/zoneinfo/Etc/GMT-14", {st_mode=S_IFREG|0644, st_size=131, ...}) = 0
3718 stat("/usr/share/zoneinfo/Etc/GMT-13", {st_mode=S_IFREG|0644, st_size=131, ...}) = 0
3718 stat("/usr/share/zoneinfo/Etc/GMT-12", {st_mode=S_IFREG|0644, st_size=131, ...}) = 0
3718 stat("/usr/share/zoneinfo/Etc/GMT-11", {st_mode=S_IFREG|0644, st_size=131, ...}) = 0
3718 stat("/usr/share/zoneinfo/Etc/GMT-10", {st_mode=S_IFREG|0644, st_size=131, ...}) = 0
3718 stat("/usr/share/zoneinfo/Etc/GMT-1", {st_mode=S_IFREG|0644, st_size=127, ...}) = 0
3718 stat("/usr/share/zoneinfo/Etc/GMT-0", {st_mode=S_IFREG|0644, st_size=118, ...}) = 0
3718 stat("/usr/share/zoneinfo/Etc/GMT+9", {st_mode=S_IFREG|0644, st_size=126, ...}) = 0
3718 stat("/usr/share/zoneinfo/Etc/GMT+8", {st_mode=S_IFREG|0644, st_size=126, ...}) = 0
3718 stat("/usr/share/zoneinfo/Etc/GMT+7", {st_mode=S_IFREG|0644, st_size=126, ...}) = 0
3718 stat("/usr/share/zoneinfo/Etc/GMT+6", {st_mode=S_IFREG|0644, st_size=126, ...}) = 0
3718 stat("/usr/share/zoneinfo/Etc/GMT+5", {st_mode=S_IFREG|0644, st_size=126, ...}) = 0
3718 stat("/usr/share/zoneinfo/Etc/GMT+4", {st_mode=S_IFREG|0644, st_size=126, ...}) = 0
3718 stat("/usr/share/zoneinfo/Etc/GMT+3", {st_mode=S_IFREG|0644, st_size=126, ...}) = 0
3718 stat("/usr/share/zoneinfo/Etc/GMT+2", {st_mode=S_IFREG|0644, st_size=126, ...}) = 0
3718 stat("/usr/share/zoneinfo/Etc/GMT+12", {st_mode=S_IFREG|0644, st_size=130, ...}) = 0
3718 stat("/usr/share/zoneinfo/Etc/GMT+11", {st_mode=S_IFREG|0644, st_size=130, ...}) = 0
3718 stat("/usr/share/zoneinfo/Etc/GMT+10", {st_mode=S_IFREG|0644, st_size=130, ...}) = 0
3718 stat("/usr/share/zoneinfo/Etc/GMT+1", {st_mode=S_IFREG|0644, st_size=126, ...}) = 0
3718 stat("/usr/share/zoneinfo/Etc/GMT+0", {st_mode=S_IFREG|0644, st_size=118, ...}) = 0
3718 stat("/usr/share/zoneinfo/Etc/GMT", {st_mode=S_IFREG|0644, st_size=118, ...}) = 0
3718 open("/usr/share/zoneinfo/Europe", O_RDONLY|O_NONBLOCK|O_DIRECTORY|O_CLOEXEC) = 11
3718 getdents(11, /* 60 entries */, 32768) = 1872
3718 getdents(11, /* 0 entries */, 32768) = 0
3718 close(11) = 0
3718 stat("/usr/share/zoneinfo/Europe/Zurich", {st_mode=S_IFREG|0644, st_size=1892, ...}) = 0
3718 stat("/usr/share/zoneinfo/Europe/Zaporozhye", {st_mode=S_IFREG|0644, st_size=2085, ...}) = 0
3718 stat("/usr/share/zoneinfo/Europe/Zagreb", {st_mode=S_IFREG|0644, st_size=1931, ...}) = 0
3718 stat("/usr/share/zoneinfo/Europe/Warsaw", {st_mode=S_IFREG|0644, st_size=2679, ...}) = 0
3718 stat("/usr/share/zoneinfo/Europe/Volgograd", {st_mode=S_IFREG|0644, st_size=1982, ...}) = 0
3718 stat("/usr/share/zoneinfo/Europe/Vilnius", {st_mode=S_IFREG|0644, st_size=2173, ...}) = 0
3718 stat("/usr/share/zoneinfo/Europe/Vienna", {st_mode=S_IFREG|0644, st_size=2211, ...}) = 0
3718 stat("/usr/share/zoneinfo/Europe/Vatican", {st_mode=S_IFREG|0644, st_size=2652, ...}) = 0
3718 stat("/usr/share/zoneinfo/Europe/Vaduz", {st_mode=S_IFREG|0644, st_size=1799, ...}) = 0
3718 stat("/usr/share/zoneinfo/Europe/Uzhgorod", {st_mode=S_IFREG|0644, st_size=2077, ...}) = 0
3718 stat("/usr/share/zoneinfo/Europe/Tiraspol", {st_mode=S_IFREG|0644, st_size=2407, ...}) = 0
3718 stat("/usr/share/zoneinfo/Europe/Tirane", {st_mode=S_IFREG|0644, st_size=2084, ...}) = 0
3718 stat("/usr/share/zoneinfo/Europe/Tallinn", {st_mode=S_IFREG|0644, st_size=2175, ...}) = 0
3718 stat("/usr/share/zoneinfo/Europe/Stockholm", {st_mode=S_IFREG|0644, st_size=1892, ...}) = 0
3718 stat("/usr/share/zoneinfo/Europe/Sofia", {st_mode=S_IFREG|0644, st_size=2104, ...}) = 0
3718 stat("/usr/share/zoneinfo/Europe/Skopje", {st_mode=S_IFREG|0644, st_size=1931, ...}) = 0
3718 stat("/usr/share/zoneinfo/Europe/Simferopol", {st_mode=S_IFREG|0644, st_size=2113, ...}) = 0
3718 stat("/usr/share/zoneinfo/Europe/Sarajevo", {st_mode=S_IFREG|0644, st_size=1931, ...}) = 0
3718 stat("/usr/share/zoneinfo/Europe/San_Marino", {st_mode=S_IFREG|0644, st_size=2652, ...}) = 0
3718 stat("/usr/share/zoneinfo/Europe/Samara", {st_mode=S_IFREG|0644, st_size=2078, ...}) = 0
3718 stat("/usr/share/zoneinfo/Europe/Rome", {st_mode=S_IFREG|0644, st_size=2652, ...}) = 0
3718 stat("/usr/share/zoneinfo/Europe/Riga", {st_mode=S_IFREG|0644, st_size=2209, ...}) = 0
3718 stat("/usr/share/zoneinfo/Europe/Prague", {st_mode=S_IFREG|0644, st_size=2246, ...}) = 0
3718 stat("/usr/share/zoneinfo/Europe/Podgorica", {st_mode=S_IFREG|0644, st_size=1931, ...}) = 0
3718 stat("/usr/share/zoneinfo/Europe/Paris", {st_mode=S_IFREG|0644, st_size=2945, ...}) = 0
3718 stat("/usr/share/zoneinfo/Europe/Oslo", {st_mode=S_IFREG|0644, st_size=2225, ...}) = 0
3718 stat("/usr/share/zoneinfo/Europe/Nicosia", {st_mode=S_IFREG|0644, st_size=2002, ...}) = 0
3718 stat("/usr/share/zoneinfo/Europe/Moscow", {st_mode=S_IFREG|0644, st_size=2194, ...}) = 0
3718 stat("/usr/share/zoneinfo/Europe/Monaco", {st_mode=S_IFREG|0644, st_size=2927, ...}) = 0
3718 stat("/usr/share/zoneinfo/Europe/Minsk", {st_mode=S_IFREG|0644, st_size=2067, ...}) = 0
3718 stat("/usr/share/zoneinfo/Europe/Mariehamn", {st_mode=S_IFREG|0644, st_size=1883, ...}) = 0
3718 stat("/usr/share/zoneinfo/Europe/Malta", {st_mode=S_IFREG|0644, st_size=2603, ...}) = 0
3718 stat("/usr/share/zoneinfo/Europe/Madrid", {st_mode=S_IFREG|0644, st_size=2593, ...}) = 0
3718 stat("/usr/share/zoneinfo/Europe/Luxembourg", {st_mode=S_IFREG|0644, st_size=2960, ...}) = 0
3718 stat("/usr/share/zoneinfo/Europe/London", {st_mode=S_IFREG|0644, st_size=3661, ...}) = 0
3718 stat("/usr/share/zoneinfo/Europe/Ljubljana", {st_mode=S_IFREG|0644, st_size=1931, ...}) = 0
3718 stat("/usr/share/zoneinfo/Europe/Lisbon", {st_mode=S_IFREG|0644, st_size=3439, ...}) = 0
3718 stat("/usr/share/zoneinfo/Europe/Kiev", {st_mode=S_IFREG|0644, st_size=2057, ...}) = 0
3718 stat("/usr/share/zoneinfo/Europe/Kaliningrad", {st_mode=S_IFREG|0644, st_size=2233, ...}) = 0
3718 stat("/usr/share/zoneinfo/Europe/Jersey", {st_mode=S_IFREG|0644, st_size=3661, ...}) = 0
3718 stat("/usr/share/zoneinfo/Europe/Istanbul", {st_mode=S_IFREG|0644, st_size=2721, ...}) = 0
3718 stat("/usr/share/zoneinfo/Europe/Isle_of_Man", {st_mode=S_IFREG|0644, st_size=3661, ...}) = 0
3718 stat("/usr/share/zoneinfo/Europe/Helsinki", {st_mode=S_IFREG|0644, st_size=1883, ...}) = 0
3718 stat("/usr/share/zoneinfo/Europe/Guernsey", {st_mode=S_IFREG|0644, st_size=3661, ...}) = 0
3718 stat("/usr/share/zoneinfo/Europe/Gibraltar", {st_mode=S_IFREG|0644, st_size=3035, ...}) = 0
3718 stat("/usr/share/zoneinfo/Europe/Dublin", {st_mode=S_IFREG|0644, st_size=3533, ...}) = 0
3718 stat("/usr/share/zoneinfo/Europe/Copenhagen", {st_mode=S_IFREG|0644, st_size=2134, ...}) = 0
3718 stat("/usr/share/zoneinfo/Europe/Chisinau", {st_mode=S_IFREG|0644, st_size=2407, ...}) = 0
3718 stat("/usr/share/zoneinfo/Europe/Budapest", {st_mode=S_IFREG|0644, st_size=2407, ...}) = 0
3718 stat("/usr/share/zoneinfo/Europe/Bucharest", {st_mode=S_IFREG|0644, st_size=2195, ...}) = 0
3718 stat("/usr/share/zoneinfo/Europe/Brussels", {st_mode=S_IFREG|0644, st_size=2944, ...}) = 0
3718 stat("/usr/share/zoneinfo/Europe/Bratislava", {st_mode=S_IFREG|0644, st_size=2246, ...}) = 0
3718 stat("/usr/share/zoneinfo/Europe/Berlin", {st_mode=S_IFREG|0644, st_size=2309, ...}) = 0
3718 stat("/usr/share/zoneinfo/Europe/Belgrade", {st_mode=S_IFREG|0644, st_size=1931, ...}) = 0
3718 stat("/usr/share/zoneinfo/Europe/Belfast", {st_mode=S_IFREG|0644, st_size=3661, ...}) = 0
3718 stat("/usr/share/zoneinfo/Europe/Athens", {st_mode=S_IFREG|0644, st_size=2245, ...}) = 0
3718 stat("/usr/share/zoneinfo/Europe/Andorra", {st_mode=S_IFREG|0644, st_size=1725, ...}) = 0
3718 stat("/usr/share/zoneinfo/Europe/Amsterdam", {st_mode=S_IFREG|0644, st_size=2917, ...}) = 0
3718 open("/usr/share/zoneinfo/Indian", O_RDONLY|O_NONBLOCK|O_DIRECTORY|O_CLOEXEC) = 11
3718 getdents(11, /* 13 entries */, 32768) = 392
3718 getdents(11, /* 0 entries */, 32768) = 0
3718 close(11) = 0
3718 stat("/usr/share/zoneinfo/Indian/Reunion", {st_mode=S_IFREG|0644, st_size=157, ...}) = 0
3718 stat("/usr/share/zoneinfo/Indian/Mayotte", {st_mode=S_IFREG|0644, st_size=157, ...}) = 0
3718 stat("/usr/share/zoneinfo/Indian/Mauritius", {st_mode=S_IFREG|0644, st_size=239, ...}) = 0
3718 stat("/usr/share/zoneinfo/Indian/Maldives", {st_mode=S_IFREG|0644, st_size=178, ...}) = 0
3718 stat("/usr/share/zoneinfo/Indian/Mahe", {st_mode=S_IFREG|0644, st_size=157, ...}) = 0
3718 stat("/usr/share/zoneinfo/Indian/Kerguelen", {st_mode=S_IFREG|0644, st_size=157, ...}) = 0
3718 stat("/usr/share/zoneinfo/Indian/Comoro", {st_mode=S_IFREG|0644, st_size=157, ...}) = 0
3718 stat("/usr/share/zoneinfo/Indian/Cocos", {st_mode=S_IFREG|0644, st_size=143, ...}) = 0
3718 stat("/usr/share/zoneinfo/Indian/Christmas", {st_mode=S_IFREG|0644, st_size=140, ...}) = 0
3718 stat("/usr/share/zoneinfo/Indian/Chagos", {st_mode=S_IFREG|0644, st_size=187, ...}) = 0
3718 stat("/usr/share/zoneinfo/Indian/Antananarivo", {st_mode=S_IFREG|0644, st_size=227, ...}) = 0
3718 open("/usr/share/zoneinfo/Mexico", O_RDONLY|O_NONBLOCK|O_DIRECTORY|O_CLOEXEC) = 11
3718 getdents(11, /* 5 entries */, 32768) = 144
3718 getdents(11, /* 0 entries */, 32768) = 0
3718 close(11) = 0
3718 stat("/usr/share/zoneinfo/Mexico/General", {st_mode=S_IFREG|0644, st_size=1604, ...}) = 0
3718 stat("/usr/share/zoneinfo/Mexico/BajaSur", {st_mode=S_IFREG|0644, st_size=1534, ...}) = 0
3718 stat("/usr/share/zoneinfo/Mexico/BajaNorte", {st_mode=S_IFREG|0644, st_size=2342, ...}) = 0
3718 open("/usr/share/zoneinfo/Mideast", O_RDONLY|O_NONBLOCK|O_DIRECTORY|O_CLOEXEC) = 11
3718 getdents(11, /* 5 entries */, 32768) = 144
3718 getdents(11, /* 0 entries */, 32768) = 0
3718 close(11) = 0
3718 stat("/usr/share/zoneinfo/Mideast/Riyadh89", {st_mode=S_IFREG|0644, st_size=8523, ...}) = 0
3718 stat("/usr/share/zoneinfo/Mideast/Riyadh88", {st_mode=S_IFREG|0644, st_size=8523, ...}) = 0
3718 stat("/usr/share/zoneinfo/Mideast/Riyadh87", {st_mode=S_IFREG|0644, st_size=8669, ...}) = 0
3718 open("/usr/share/zoneinfo/Pacific", O_RDONLY|O_NONBLOCK|O_DIRECTORY|O_CLOEXEC) = 11
3718 getdents(11, /* 44 entries */, 32768) = 1336
3718 getdents(11, /* 0 entries */, 32768) = 0
3718 close(11) = 0
3718 stat("/usr/share/zoneinfo/Pacific/Yap", {st_mode=S_IFREG|0644, st_size=144, ...}) = 0
3718 stat("/usr/share/zoneinfo/Pacific/Wallis", {st_mode=S_IFREG|0644, st_size=141, ...}) = 0
3718 stat("/usr/share/zoneinfo/Pacific/Wake", {st_mode=S_IFREG|0644, st_size=144, ...}) = 0
3718 stat("/usr/share/zoneinfo/Pacific/Truk", {st_mode=S_IFREG|0644, st_size=144, ...}) = 0
3718 stat("/usr/share/zoneinfo/Pacific/Tongatapu", {st_mode=S_IFREG|0644, st_size=313, ...}) = 0
3718 stat("/usr/share/zoneinfo/Pacific/Tarawa", {st_mode=S_IFREG|0644, st_size=144, ...}) = 0
3718 stat("/usr/share/zoneinfo/Pacific/Tahiti", {st_mode=S_IFREG|0644, st_size=160, ...}) = 0
3718 stat("/usr/share/zoneinfo/Pacific/Samoa", {st_mode=S_IFREG|0644, st_size=290, ...}) = 0
3718 stat("/usr/share/zoneinfo/Pacific/Saipan", {st_mode=S_IFREG|0644, st_size=229, ...}) = 0
3718 stat("/usr/share/zoneinfo/Pacific/Rarotonga", {st_mode=S_IFREG|0644, st_size=548, ...}) = 0
3718 stat("/usr/share/zoneinfo/Pacific/Port_Moresby", {st_mode=S_IFREG|0644, st_size=163, ...}) = 0
3718 stat("/usr/share/zoneinfo/Pacific/Ponape", {st_mode=S_IFREG|0644, st_size=144, ...}) = 0
3718 stat("/usr/share/zoneinfo/Pacific/Pohnpei", {st_mode=S_IFREG|0644, st_size=144, ...}) = 0
3718 stat("/usr/share/zoneinfo/Pacific/Pitcairn", {st_mode=S_IFREG|0644, st_size=177, ...}) = 0
3718 stat("/usr/share/zoneinfo/Pacific/Palau", {st_mode=S_IFREG|0644, st_size=140, ...}) = 0
3718 stat("/usr/share/zoneinfo/Pacific/Pago_Pago", {st_mode=S_IFREG|0644, st_size=290, ...}) = 0
3718 stat("/usr/share/zoneinfo/Pacific/Noumea", {st_mode=S_IFREG|0644, st_size=300, ...}) = 0
3718 stat("/usr/share/zoneinfo/Pacific/Norfolk", {st_mode=S_IFREG|0644, st_size=182, ...}) = 0
3718 stat("/usr/share/zoneinfo/Pacific/Niue", {st_mode=S_IFREG|0644, st_size=200, ...}) = 0
3718 stat("/usr/share/zoneinfo/Pacific/Nauru", {st_mode=S_IFREG|0644, st_size=240, ...}) = 0
3718 stat("/usr/share/zoneinfo/Pacific/Midway", {st_mode=S_IFREG|0644, st_size=268, ...}) = 0
3718 stat("/usr/share/zoneinfo/Pacific/Marquesas", {st_mode=S_IFREG|0644, st_size=162, ...}) = 0
3718 stat("/usr/share/zoneinfo/Pacific/Majuro", {st_mode=S_IFREG|0644, st_size=171, ...}) = 0
3718 stat("/usr/share/zoneinfo/Pacific/Kwajalein", {st_mode=S_IFREG|0644, st_size=211, ...}) = 0
3718 stat("/usr/share/zoneinfo/Pacific/Kosrae", {st_mode=S_IFREG|0644, st_size=188, ...}) = 0
3718 stat("/usr/share/zoneinfo/Pacific/Kiritimati", {st_mode=S_IFREG|0644, st_size=204, ...}) = 0
3718 stat("/usr/share/zoneinfo/Pacific/Johnston", {st_mode=S_IFREG|0644, st_size=119, ...}) = 0
3718 stat("/usr/share/zoneinfo/Pacific/Honolulu", {st_mode=S_IFREG|0644, st_size=312, ...}) = 0
3718 stat("/usr/share/zoneinfo/Pacific/Guam", {st_mode=S_IFREG|0644, st_size=199, ...}) = 0
3718 stat("/usr/share/zoneinfo/Pacific/Guadalcanal", {st_mode=S_IFREG|0644, st_size=158, ...}) = 0
3718 stat("/usr/share/zoneinfo/Pacific/Gambier", {st_mode=S_IFREG|0644, st_size=159, ...}) = 0
3718 stat("/usr/share/zoneinfo/Pacific/Galapagos", {st_mode=S_IFREG|0644, st_size=197, ...}) = 0
3718 stat("/usr/share/zoneinfo/Pacific/Funafuti", {st_mode=S_IFREG|0644, st_size=141, ...}) = 0
3718 stat("/usr/share/zoneinfo/Pacific/Fiji", {st_mode=S_IFREG|0644, st_size=296, ...}) = 0
3718 stat("/usr/share/zoneinfo/Pacific/Fakaofo", {st_mode=S_IFREG|0644, st_size=140, ...}) = 0
3718 stat("/usr/share/zoneinfo/Pacific/Enderbury", {st_mode=S_IFREG|0644, st_size=204, ...}) = 0
3718 stat("/usr/share/zoneinfo/Pacific/Efate", {st_mode=S_IFREG|0644, st_size=464, ...}) = 0
3718 stat("/usr/share/zoneinfo/Pacific/Easter", {st_mode=S_IFREG|0644, st_size=8971, ...}) = 0
3718 stat("/usr/share/zoneinfo/Pacific/Chuuk", {st_mode=S_IFREG|0644, st_size=144, ...}) = 0
3718 stat("/usr/share/zoneinfo/Pacific/Chatham", {st_mode=S_IFREG|0644, st_size=2018, ...}) = 0
3718 stat("/usr/share/zoneinfo/Pacific/Auckland", {st_mode=S_IFREG|0644, st_size=2434, ...}) = 0
3718 stat("/usr/share/zoneinfo/Pacific/Apia", {st_mode=S_IFREG|0644, st_size=268, ...}) = 0
3718 open("/usr/share/zoneinfo/SystemV", O_RDONLY|O_NONBLOCK|O_DIRECTORY|O_CLOEXEC) = 11
3718 getdents(11, /* 15 entries */, 32768) = 416
3718 getdents(11, /* 0 entries */, 32768) = 0
3718 close(11) = 0
3718 stat("/usr/share/zoneinfo/SystemV/YST9YDT", {st_mode=S_IFREG|0644, st_size=2358, ...}) = 0
3718 stat("/usr/share/zoneinfo/SystemV/YST9", {st_mode=S_IFREG|0644, st_size=159, ...}) = 0
3718 stat("/usr/share/zoneinfo/SystemV/PST8PDT", {st_mode=S_IFREG|0644, st_size=2819, ...}) = 0
3718 stat("/usr/share/zoneinfo/SystemV/PST8", {st_mode=S_IFREG|0644, st_size=177, ...}) = 0
3718 stat("/usr/share/zoneinfo/SystemV/MST7MDT", {st_mode=S_IFREG|0644, st_size=2427, ...}) = 0
3718 stat("/usr/share/zoneinfo/SystemV/MST7", {st_mode=S_IFREG|0644, st_size=327, ...}) = 0
3718 stat("/usr/share/zoneinfo/SystemV/HST10", {st_mode=S_IFREG|0644, st_size=312, ...}) = 0
3718 stat("/usr/share/zoneinfo/SystemV/EST5EDT", {st_mode=S_IFREG|0644, st_size=3519, ...}) = 0
3718 stat("/usr/share/zoneinfo/SystemV/EST5", {st_mode=S_IFREG|0644, st_size=177, ...}) = 0
3718 stat("/usr/share/zoneinfo/SystemV/CST6CDT", {st_mode=S_IFREG|0644, st_size=3543, ...}) = 0
3718 stat("/usr/share/zoneinfo/SystemV/CST6", {st_mode=S_IFREG|0644, st_size=980, ...}) = 0
3718 stat("/usr/share/zoneinfo/SystemV/AST4ADT", {st_mode=S_IFREG|0644, st_size=3424, ...}) = 0
3718 stat("/usr/share/zoneinfo/SystemV/AST4", {st_mode=S_IFREG|0644, st_size=229, ...}) = 0
3718 open("/usr/share/zoneinfo/US", O_RDONLY|O_NONBLOCK|O_DIRECTORY|O_CLOEXEC) = 11
3718 getdents(11, /* 15 entries */, 32768) = 472
3718 getdents(11, /* 0 entries */, 32768) = 0
3718 close(11) = 0
3718 stat("/usr/share/zoneinfo/US/Samoa", {st_mode=S_IFREG|0644, st_size=290, ...}) = 0
3718 stat("/usr/share/zoneinfo/US/Pacific-New", {st_mode=S_IFREG|0644, st_size=2819, ...}) = 0
3718 stat("/usr/share/zoneinfo/US/Pacific", {st_mode=S_IFREG|0644, st_size=2819, ...}) = 0
3718 stat("/usr/share/zoneinfo/US/Mountain", {st_mode=S_IFREG|0644, st_size=2427, ...}) = 0
3718 stat("/usr/share/zoneinfo/US/Michigan", {st_mode=S_IFREG|0644, st_size=2202, ...}) = 0
3718 stat("/usr/share/zoneinfo/US/Indiana-Starke", {st_mode=S_IFREG|0644, st_size=2395, ...}) = 0
3718 stat("/usr/share/zoneinfo/US/Hawaii", {st_mode=S_IFREG|0644, st_size=312, ...}) = 0
3718 stat("/usr/share/zoneinfo/US/Eastern", {st_mode=S_IFREG|0644, st_size=3519, ...}) = 0
3718 stat("/usr/share/zoneinfo/US/East-Indiana", {st_mode=S_IFREG|0644, st_size=1649, ...}) = 0
3718 stat("/usr/share/zoneinfo/US/Central", {st_mode=S_IFREG|0644, st_size=3543, ...}) = 0
3718 stat("/usr/share/zoneinfo/US/Arizona", {st_mode=S_IFREG|0644, st_size=327, ...}) = 0
3718 stat("/usr/share/zoneinfo/US/Aleutian", {st_mode=S_IFREG|0644, st_size=2353, ...}) = 0
3718 stat("/usr/share/zoneinfo/US/Alaska", {st_mode=S_IFREG|0644, st_size=2358, ...}) = 0
3718 open("/usr/share/zoneinfo/zone.tab", O_RDONLY) = 11
3718 fstat(11, {st_mode=S_IFREG|0644, st_size=19419, ...}) = 0
3718 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f6df42c7000
3718 read(11, "# <pre>\n# @(#)zone.tab\t8.38\n# Th"..., 4096) = 4096
3718 read(11, "l (MA, PI, CE, RN, PB)\nBR\t-0803-"..., 4096) = 4096
3718 read(11, "10-07950\tAmerica/Guayaquil\tmainl"..., 4096) = 4096
3718 read(11, "+2105-08646\tAmerica/Cancun\tCentr"..., 4096) = 4096
3718 read(11, "ica/Port_of_Spain\nTV\t-0831+17913"..., 4096) = 3035
3718 read(11, "", 4096) = 0
3718 close(11) = 0
3718 munmap(0x7f6df42c7000, 4096) = 0
3718 open("/usr/share/zoneinfo/Asia/Tokyo", O_RDONLY) = 11
3718 fstat(11, {st_mode=S_IFREG|0644, st_size=331, ...}) = 0
3718 mmap(NULL, 331, PROT_READ, MAP_SHARED, 11, 0) = 0x7f6df42c7000
3718 close(11) = 0
3718 munmap(0x7f6df42c7000, 331) = 0
3718 stat("/usr/share/zoneinfo/Asia/Tokyo", {st_mode=S_IFREG|0644, st_size=331, ...}) = 0
3718 chdir("/") = 0
3718 umask(022) = 022
3718 munmap(0x7f6df4198000, 528384) = 0
3718 write(10, "\1\0\0\0\1", 5) = 5
3718 shutdown(10, 2 /* send and receive */) = 0
#2
Docs for date_default_timezone_get() show where the syscalls come from:
http://php.net/manual/en/function.date-default-timezone-get.php
Reading the timezone set using the date_default_timezone_set() function (if any)
Reading the TZ environment variable (if non empty) (Prior to PHP 5.3.0)
Reading the value of the date.timezone ini option (if set)
Querying the host operating system (if supported and allowed by the OS)
And here's why we're hitting that:
<?php/**
* Return the time zone of the current user.
*/
function drupal_get_user_timezone() {
global $user;
if (variable_get('configurable_timezones', 1) && $user->uid && $user->timezone) {
return $user->timezone;
}
else {
// Ignore PHP strict notice if time zone has not yet been set in the php.ini
// configuration.
return variable_get('date_default_timezone', @date_default_timezone_get());
}
}
?>
So to fix the E_STRICT warning, we're using @, nice!
#3
So suggestions to fix this:
1. We should not call date_default_timezone_get() until after variable_init() - so that we can load from the database instead of falling back to syscalls.
2. There is absolutely no need for every single request to Drupal 7 that hasn't hardcoded this variable in settings.php to check the operating system timezone. Did it change yet? Did it change again? What about now? Still UTC is it?
3. We should set that variable on install, and add an update. If you move your site to a different server in a different timezone then you might possible find this doesn't get updated, but people will be less likely to move their sites to different servers if we don't completely hobble performance :( Could look at a nested variable_get() for something we can update automatically in drupal_flush_all_caches() - then we could pick up timezone changes ourselves but still allow sites to set it permanently.
4. We still might not want to do any of this in the default page caching workflow, but it looks like the _get() calls that are killing us more than the _set().
#4
subscribe.
#5
subscribe
#6
Subscribing. Also, that @ is a critical bug in itself. We should never be dealing with errors like that, especially strict errors. That is guaranteed to bite us sooner or later, exactly like this.
Catch, if I understand you correctly (and I may not as I've not studied all of our new date code in detail), the issue is that we're asking for a timezone without setting one, which is forcing PHP to take the longest possible route to derive a timezone to return. So instead we should not do that (duh) and always set a timezone.
That seems like a no-brainer to me, especially since modern PHP versions yell at you if you don't do that. If that's the case, then I'm frankly shocked that we're not already always setting a timezone based on the user-defined site timezone.
#7
Meh. If this is so slow , it's hardly our task to fix this, it should be set in php.ini IMO. Also, I have told numerous times that while I agree with notice free, going strict free is a waste of time and effort.
#8
@Crell: yes that's right.
@chx: I just checked php.ini on two production servers with different linux distributions and neither had date.timezone set, so I don't think we can add a requirement for it.
Spoke to chx in irc about this. He thinks we should write this into settings.php - which I think is a good idea, but is going to be tricky for head-head updates since we'd have to tell people to make settings.php writable.
However if we go for my plan of setting the variable in the db, we'll still run into issues in the if-modified-since/strtotime() case if that's called without a variable_initialize() first (although that's more of an edge case at this point).
#9
I do have date.timezone set.
For my system (Windows 7, MySQL via 127.0.0.1) the largest discrepancy comes form the time it takes to open a db connection.
In d6 this takes about 10% of the cached page request time (of 19 ms), in d7 it takes a whopping 35% (of 37 ms).
Note, this is seperate from the IPv6 issue many people run it to. I'm specifically using an ipv4-address. Using localhost takes > 1 second to wait on the first timeout.
#10
With a PHP.ini set timezone drupal_get_user_timezone only takes about 100 microseconds. The PHP team upgraded the warning from E_STRICT to E_WARNING in PHP 5.3.0.
Why suppress it?
#11
Sub.
#12
The PHP team definitely considers it is a bug not to have a
date.timezoneset.So, in _drupal_bootstrap_page_cache() we are *generally* after DRUPAL_BOOTSTRAP_VARIABLES (as long as page_cache_without_database is off). In that case it is legitimate to load the timezone from the database. So we can simply do something like this:
<?php$timezone = variable_get('date_default_timezone');
if (!isset($timezone)) {
$timezone = @date_default_timezone_get();
}
?>
That said, it strikes me as weird that we are relying on the default timezone here (that should already be set... date_default_timezone_set(date_default_timezone_get()) should be a noop :)). So I would like this to become just 'UTC'.
#13
subscribe
#14
Subscribe
#15
I was thinking the same as Damien in #12.
The problem is that we are always calling date_default_timezone_get() for the default value, even if it is hardcoded in settings.php. so that really needs to be improved.
@Heine:
I think the connect is using the socket for me and you are going through the IP. That is probably quite a bit slower. Will try to do a test on a clean install (I have tons of contrib modules enabled on the one I did the test) and using 127.0.0.1 instead of localhost as the database host. Another resource I just found mentiones reverse-lookup on the mysql side: http://allurcode.com/2010/04/07/mysql-very-slow-without-a-reason/
#16
I added date.timezone = Asia/Tokyo and it didn't make any difference to the strace.
Then in drupal_get_user_timezone() I harded coded return 'Asia/Tokyo'; at the top, and that didn't make any difference either.
Only commenting out the date_default_timezone_set() line altogether stopped them.
That may me wonder if date_default_timezone_set() is the problem instead of date_default_timezone_get().
So I looked at PHP source code.
date_default_timezone_set() calls timelib_timezone_id_is_valid()
This calls seek_to_tz_position(&tzf, timezone, tzdb)) - which looks like it could be responsible.
However even with this commented out, I don't see a massive improvement, although the strace is much nicer.
So...
Profiled again, and there are apparently five calls to cache_get() to serve the page, and cache_get() is using db_select().
I reverted #344088: cache.inc cannot be fully converted to dbtng (although apparently that actual patch never went in) and I can now get between 180-220 requests per second, instead of 120-140. Attached a patch for that alongside webgrind screenshots.
Not sure why this didn't show up earlier, since that's not a new change, but maybe dbtng internals changed (autoloader?) and it's become a problem recently.
Either way that's a big chunk of the regression, patch will need a very long code comment to explain why we're doing it like this, but I don't think it's worth losing 50 requests per second for this.
Also need to identify just why we're doing 5 cache_get() here as well, that could also be the source of the regression.
#17
OK here's part two:
We've been fetching cache_get('bootstrap_modules', 'cache_bootstrap'); three times instead of once.
system_list() wasn't checking the static cache for bootstrap modules when called with 'bootstrap' argument, I had a root around in git blame and it's been that way since it went in, which suggests it was relying on module_list() to cache properly.
However module_list() doesn't static cache bootstrap modules either.
So, if we change this as well, we're safely over 200 requests per second (range is around 200-240).
This is still about 10% slower than Drupal 6, but getting closer.
#18
Opened #1064882: Remove syscalls from calling date_default_timezone_set(), date_default_timezone_get() so we can tackle that separately. It's ugly but it's not actually that big of a performance hit at least compared to the cache_get() stuff.
#19
With the patch in #17 and my issue in #1064342: Page caching performance II - PDO connection takes a long time worked around I have D7 serving more pages / s from cache then D6. (480 vs. 460, so in the same league).
#20
Ok, trying the patch...
Without patch:
$ ab -n 1000 -c 1 http://d7i/[...]
Requests per second: 153.02 [#/sec] (mean)
Time per request: 6.535 [ms] (mean)
Time per request: 6.535 [ms] (mean, across all concurrent requests)
[...]
With patch:
$ ab -n 1000 -c 1 http://d7i/[...]
Requests per second: 188.99 [#/sec] (mean)
Time per request: 5.291 [ms] (mean)
Time per request: 5.291 [ms] (mean, across all concurrent requests)
[...]
Requests per second: 197.63 [#/sec] (mean)
Time per request: 5.060 [ms] (mean)
Time per request: 5.060 [ms] (mean, across all concurrent requests)
[...]
Requests per second: 185.27 [#/sec] (mean)
Time per request: 5.398 [ms] (mean)
Time per request: 5.398 [ms] (mean, across all concurrent requests)
Certainly *a lot* faster. I don't quite see the same improvement as catch though.
#21
+++ includes/cache.inc@@ -325,10 +325,7 @@ class DrupalDatabaseCache implements DrupalCacheInterface {
// Garbage collection necessary when enforcing a minimum cache lifetime.
$this->garbageCollection($this->bin);
Garbage collection uses db_delete(), should that also be changed into db_query() then?
+++ includes/cache.inc@@ -325,10 +325,7 @@ class DrupalDatabaseCache implements DrupalCacheInterface {
+ $result = db_query('SELECT cid, data, created, expire, serialized FROM {' . $this->bin . '} WHERE cid IN (:cids)', array(':cids' => $cids));
Might be worth to add a minimal comment to prevent someone from breaking this again in the future.
Powered by Dreditor.
#22
Here's a re-roll adding that comment.
I also compared Drupal 7 with and without the patch with page caching disabled. The system_list()/module_list() bug doesn't appear to occur when page caching is off, this is because hook_exit() is called as module_invoke_all('exit') which doesn't use the bootstrap list - that might explain why the duplicate queries went un-noticed as well.
However there are 16 calls to cache_get() with the minimal profile, and we swap those db_select() for db_query() with the patch applied. Here's the numbers to compare - note that wall time is very variable between requests so don't get too excited, although I think I can see a small measurable improvement when benchmarking too.
HEAD:
Total Incl. Wall Time (microsec): 46,068 microsecs
Total Incl. CPU (microsecs): 40,000 microsecs
Total Incl. MemUse (bytes): 4,869,176 bytes
Total Incl. PeakMemUse (bytes): 5,060,552 bytes
Number of Function Calls: 5,636
Patch:
Total Incl. Wall Time (microsec): 40,380 microsecs
Total Incl. CPU (microsecs): 40,000 microsecs
Total Incl. MemUse (bytes): 4,999,928 bytes
Total Incl. PeakMemUse (bytes): 5,187,336 bytes
Number of Function Calls: 4,439
I don't know why the memory usage goes up with the patch, maybe there's a memory leak in db_query() compared to SelectQuery->execute()? Even xhprof didn't have many clues - inclusive memory usage for cache_get() went down from 1,144,152 to 756,976 but other functions were higher.
Out of interest, here's benchmarks with APC disabled on the 7-minimal install with and without the patch. This should benefit from not loading select.inc and query.inc (although it'd be good to benchmark only with and without the db autoloader to see what difference it makes only including those files - that was something Rasmus didn't like last Drupalcon, different issue though).
HEAD:
Requests per second: 51.00 [#/sec] (mean)
Time per request: 19.610 [ms] (mean)
Time per request: 19.610 [ms] (mean, across all concurrent requests)
Transfer rate: 313.79 [Kbytes/sec] received
Connection Times (ms)
min mean[+/-sd] median max
Connect: 0 0 0.0 0 0
Processing: 15 20 2.5 19 34
Waiting: 15 19 2.5 19 34
Total: 15 20 2.5 19 34
Requests per second: 60.03 [#/sec] (mean)
Time per request: 16.659 [ms] (mean)
Time per request: 16.659 [ms] (mean, across all concurrent requests)
Transfer rate: 369.37 [Kbytes/sec] received
Connection Times (ms)
min mean[+/-sd] median max
Connect: 0 0 0.0 0 0
Processing: 12 17 3.3 16 30
Waiting: 12 16 3.3 16 30
Total: 12 17 3.3 16 30
That only closes the 30 request/second gap compared to Drupal 6 by 10 requests/second, so some things still going on here.
#24
This time with the patch.
#25
And status change, sorry.
#26
Subscribing.
#27
subscribing
#28
It sounds like the documentation of db_select() needs to be updated to educate people about when to use db_select() vs db_query(). I expect that most people will naturally use db_select() over db_query() while they should be using db_query(). I think this part of the database API might be a bit 'misleading' for those who don't read the fine-print.
In chat, Crell suggested that it may be useful to benchmark different queries in db_query vs db_select, without other stuff around them, to get a sense for how big a difference it is.
#29
This is an important patch so I'm tracking it.
#30
There is an issue for that (TM): #835068: Document usage of static vs dynamic queries. I guess the suggested case there needs to be updated with something like "If the query needs to be very fast (eg cache loading), use db_query() also for dynamic queries".
About general performance with db_select/db_query., there are two things:
- Everything that db_select() does is on top of db_query (DatabaseConnection::query() actually). There are multiple classes involved, a lot of string mangling and many many method calls. So it is obviously a lot slower. Some tests might be interesting, I'll see if I can write someting.
- Additionally in this case, it is about using or not using db_select() at all during the whole request. And this means loading includes/databases/select.inc, including includes/database/driver/select.inc if it exists, checking if there is a SelectQuery_driver class and initiate it.
#31
The second bullet of #30 might be worth including in the code comment? Having the rationale makes it easier to understand.
#32
Part of the performance regression was introduced in #978144: cache_get_multiple() inconsistent with cache_get().
#33
I'd prefer it if we open a new issue to discuss the db autoload stuff and benchmark whether the autoload itself is adding overhead compared to just including the files. I took lock.inc out during benchmarks and only saw about 0.5% improvement even without APC, so would rather not write any assumptions into a code comment except for the general one that db_select() is a lot slower.
Eric_A, thanks for finding the commit. This is why we desperately need automated performance testing of core - any potential performance implication of that patch was dismissed in one comment and never looked at again. At least it's only been in for three months though, I'd been thinking I'd missed this last time I checked page caching about 14 months ago.
#34
Re @catch in #33: OK, I think that is reasonable. Given #978144: cache_get_multiple() inconsistent with cache_get() this fix seems RTBC.
There is only a tiny difference. Original:
<?php- $cache = db_query("SELECT data, created, expire, serialized FROM {" . $this->bin . "} WHERE cid = :cid", array(':cid' => $cid))->fetchObject();
?>
New:
<?php+ $result = db_query('SELECT cid, data, created, expire, serialized FROM {' . $this->bin . '} WHERE cid IN (:cids)', array(':cids' => $cids));
?>
But that looks OK.
#35
That's changed to keep this consistent with cache_get_multiple, which is how this regression got in in the first place.
#36
Opened #1066752: Page caching performance has regressed by up to 20% with no opcode cache since we're not quite done yet for opcode cache-less hosts.
#37
My only note is that table names in static queries are not escaped, so I'm not sure if that's a possible SQL injection vector. Presumably you'd never use user-supplied variables for the cache bin name, but if you did and didn't sanitize it first then that would be a possible attack vector. We may want to document that in the docblock.
Other than that, I support this patch.
#38
subscribe
#39
This is a good patch. IMO we should db_quote($table_name) just in case.
Still, we have a problem when we are afraid to use our own APIs. We added a nice db_select() but we can only use it for performance insensitive pages/queries. Thats a drupal WTF, IMO. Reminds me of drupal_static() and drupal_static_fast
#40
@moshe - do you mean db_escape_table()? If so that sounds like a good idea to me, we should benchmark it but I'll be extremely disappointed if that's at all noticeable. That would save adding the comment Crell suggests in #37. Putting this back to CNR since I agree we need to account for this one way or another.
Also on db_select() and drupal_static(). I think the difference is db_select() is really nice, but drupal_static() is a WTF in itself - we shouldn't have added something just to support the testing framework in the first place, and without a clear idea of how we wanted to use it. #581626: Use a consistent/clean pattern for using $reset or drupal_static() is still open. I opened #1067802: Compare db_query() and db_select() performance to start work on the db_select() vs. db_query() comparison.
#41
Added db_escape_table(). ab is erroring out on my localhost so hoping someone else can do benchmarks.
#42
Patch looks good but could use a final benchmark run.
#43
Here we go - different system to most of the benchmarks above:
HEAD: 108.56 #/sec
Patch from #24: 135.53 [#/sec]
Patch from #41: Requests per second: 138.67 [#/sec] (mean)
#41 should not be any faster, so that means there's no obvious regression at least.
And all escapeTable() does is this, in a class that's already been instantiated, so I think we're fine.
public function escapeTable($table) {return preg_replace('/[^A-Za-z0-9_.]+/', '', $table);
}
#44
production site
ab -c5 -n500
w/o patch
Finished 500 requests
Server Software:
Server Hostname: xxx.com
Server Port: 80
Document Path: /
Document Length: 29265 bytes
Concurrency Level: 5
Time taken for tests: 6.202 seconds
Complete requests: 500
Failed requests: 0
Write errors: 0
Total transferred: 14838500 bytes
HTML transferred: 14632500 bytes
Requests per second: 80.62 [#/sec] (mean)
Time per request: 62.023 [ms] (mean)
Time per request: 12.405 [ms] (mean, across all concurrent requests)
Transfer rate: 2336.34 [Kbytes/sec] received
w #41 patch
Finished 500 requests
Server Software:
Server Hostname: xxx.com
Server Port: 80
Document Path: /
Document Length: 29265 bytes
Concurrency Level: 5
Time taken for tests: 5.326 seconds
Complete requests: 500
Failed requests: 0
Write errors: 0
Total transferred: 14838500 bytes
HTML transferred: 14632500 bytes
Requests per second: 93.87 [#/sec] (mean)
Time per request: 53.265 [ms] (mean)
Time per request: 10.653 [ms] (mean, across all concurrent requests)
Transfer rate: 2720.50 [Kbytes/sec] received
16.4 % speed-up
NICE!!!
ns2# drush pm-list | grep Enabled
Administration Actions permissions (actions_permissions) Module EnabledCCK Field Permissions (field_permissions) Module Enabled 7.x-1.x-dev
Chaos tool suite Bulk Export (bulk_export) Module Enabled 7.x-1.0-alpha2
Chaos tool suite Chaos tools (ctools) Module Enabled 7.x-1.0-alpha2
Chaos tool suite Page manager (page_manager) Module Enabled 7.x-1.0-alpha2
Chaos tool suite Views content panes (views_content) Module Enabled 7.x-1.0-alpha2
Content authoring BUEditor (bueditor) Module Enabled
Core Block (block) Module Enabled 7.0
Core Book (book) Module Enabled 7.0
Core Comment (comment) Module Enabled 7.0
Core Contact (contact) Module Enabled 7.0
Core Contextual links (contextual) Module Enabled 7.0
Core Field (field) Module Enabled 7.0
Core Field SQL storage (field_sql_storage) Module Enabled 7.0
Core Field UI (field_ui) Module Enabled 7.0
Core File (file) Module Enabled 7.0
Core Filter (filter) Module Enabled 7.0
Core Image (image) Module Enabled 7.0
Core List (list) Module Enabled 7.0
Core Locale (locale) Module Enabled 7.0
Core Menu (menu) Module Enabled 7.0
Core Node (node) Module Enabled 7.0
Core Number (number) Module Enabled 7.0
Core Options (options) Module Enabled 7.0
Core Path (path) Module Enabled 7.0
Core PHP filter (php) Module Enabled 7.0
Core RDF (rdf) Module Enabled 7.0
Core Search (search) Module Enabled 7.0
Core Shortcut (shortcut) Module Enabled 7.0
Core System (system) Module Enabled 7.0
Core Taxonomy (taxonomy) Module Enabled 7.0
Core Text (text) Module Enabled 7.0
Core Toolbar (toolbar) Module Enabled 7.0
Core Trigger (trigger) Module Enabled 7.0
Core Update manager (update) Module Enabled 7.0
Core User (user) Module Enabled 7.0
Development Coder (coder) Module Enabled 7.x-1.0-beta6
Development Grammar Parser (grammar_parser) Module Enabled 7.x-1.1
Features Features (features) Module Enabled 7.x-1.0-beta1
Feeds Feeds (feeds) Module Enabled 7.x-2.0-alpha3
Fields Meta field (metatags_quick) Module Enabled 7.x-1.0-beta4
Multilanguage Locale updater (l10n_update) Module Enabled
Multilanguage Localization client (l10n_client) Module Enabled
Multilanguage Translation template extractor (potx) Module Enabled 7.x-1.0
Other AddToAny (addtoany) Module Enabled 7.x-1.0-beta1
Other Advanced help (advanced_help) Module Enabled 7.x-1.x-dev
Other Entity CRUD API (entity) Module Enabled
Other Entity Metadata (entity_metadata) Module Enabled
Other Gravatar (gravatar) Module Enabled 7.x-1.1
Other Job Scheduler (job_scheduler) Module Enabled 7.x-2.0-alpha2
Other Libraries (libraries) Module Enabled 7.x-1.x-dev
Other Pathauto (pathauto) Module Enabled 7.x-1.0-beta1
Other Token (token) Module Enabled 7.x-1.0-beta1
Other Transliteration (transliteration) Module Enabled 7.x-3.0-alpha1
Rules Rules (rules) Module Enabled
Rules Rules Scheduler (rules_scheduler) Module Enabled
Spam control CAPTCHA (captcha) Module Enabled 7.x-1.0-alpha2
Spam control Image CAPTCHA (image_captcha) Module Enabled 7.x-1.0-alpha2
Views Views (views) Module Enabled 7.x-3.0-alpha1
Views Views Bulk Operations (views_bulk_operations) Module Enabled
Core Garland (garland) Theme Enabled 7.0
Core Seven (seven) Theme Enabled 7.0
#45
rtbc based on benchmarks
#46
Committed to CVS HEAD. Thanks.
#47
By the same way we need to change isEmpty() - this query is not alterable.
db_select() should be used only for places where query could be altered. db_query() has docs about it.
#48
Actually this is Major follow-up because default cache implementation is involved in bootstrap so db_select() should not used at all!
#49
The last submitted patch, 1064212-cache-empty.patch, failed testing.
#50
+++ includes/cache.inc 24 Feb 2011 19:19:32 -0000@@ -499,11 +499,6 @@ class DrupalDatabaseCache implements Dru
+ return (bool) db_query_range('SELECT 1 FROM {' . db_escape_table($this->bin) . '}', 0, 1)->fetchField();
Missed a ! here. The test is "isEmpty()", not "isNotEmpty()".
Powered by Dreditor.
#51
Now the db_select() witchhunt begins. Sigh.
#52
When do we actually use isEmpty()? It's definitely not on cached pages or I'd have noticed when working on the original patch.
#53
In fact no I'm doing this. Please open a new issue if you think this is important, explaining where isEmpty() is being used that the extra millisecond or so from db_select() is a problem. The fact we have to do db_escape_table() (afaik the only call to that in core now) for cache_get() means there is a perfectly valid reason to use db_select() - because the query is dynamic by virtue of having a variable table name.
#54
Automatically closed -- issue fixed for 2 weeks with no activity.