ID:               49383
 User updated by:  olga at metacafe dot com
 Reported By:      olga at metacafe dot com
 Status:           Bogus
 Bug Type:         Performance problem
 Operating System: Red Hat 3.4.6-10
 PHP Version:      5.3, 6
 New Comment:

Turning all messages on/off didn't change the behavior. We tend
eliminate the notices on the development stage.

Can you please look at the system calls summary below? fstat() takes
25% of the total time. This doesn't happen in PHP 5.2.9.

% time     seconds  usecs/call     calls    errors syscall
------ ----------- ----------- --------- --------- ----------------
 24.85   33.820248         256    131908           fstat
 13.54   18.431644         263     70002        66 lstat
  9.81   13.346466         259     51520           mmap
  9.72   13.223388         258     51175           munmap
  9.39   12.775102         264     48450       192 stat
  8.83   12.014341         265     45383        10 open
  8.72   11.866944         257     46154           close
  3.47    4.724639         255     18530       396 read
  3.26    4.430927         256     17297           lseek
  1.88    2.557480         244     10477           poll
  1.59    2.170520         261      8326           recvfrom
  1.52    2.073135         259      7994           sendto
...
------ ----------- ----------- --------- --------- ----------------
100.00  136.108580                526555      1324 total

In 5.2.9 fstat() takes about 8% of total time.


Previous Comments:
------------------------------------------------------------------------

[2009-09-01 18:27:31] ras...@php.net

You need to do proper profiling to determine that.  Start by turning on
all warning messages.  If you are throwing warnings or notices, even if
you are not displaying or logging them anywhere, it is going to slow you
down and there are a bunch of new ones in 5.3.  Set your error reporting
to something like 16777215 (0xffffff) which will catch all current and
future error levels and fix anything you see.  Then check your
performance again.

------------------------------------------------------------------------

[2009-09-01 18:13:05] olga at metacafe dot com

When I compare 5.2.9 with 5.3, I see that

(a) 5.3 is slower. According to release notes, I was expecting
performance improvement, or at least the same performance as in previous
version.

(b) top 5 system calls in 5.3 take more time that in 5.2.9
lstat() calls are reduced, but fstat(), mmap() and munmap() are used
much more than before.

Maybe I'm wrong about fstat(), but that's the only difference I found
so far. What else could have caused this performance problem?

------------------------------------------------------------------------

[2009-09-01 15:01:17] ras...@php.net

You suppose it is because of fstat?  I seriously doubt that.  fstat is
really fast because it doesn't need to touch the disk at all.  It simply
grabs the stat struct from an already open file descriptor.  If you can
show me some profiling numbers where fstat is anywhere on the radar,
I'll take a look, but I am highly suspicious that fstat would have
anything to do with any performance issues.

Disk-touching stats like lstat are the ones you need to worry about.  

------------------------------------------------------------------------

[2009-09-01 14:48:03] olga at metacafe dot com

Any PHP code does it.

The code:
<?php
echo "Hello!";
?>

The strace:
open("[path]/test.php", O_RDONLY) = 16
fstat(16, {st_mode=S_IFREG|0644, st_size=82, ...}) = 0
fstat(16, {st_mode=S_IFREG|0644, st_size=82, ...}) = 0
fstat(16, {st_mode=S_IFREG|0644, st_size=82, ...}) = 0
mmap(NULL, 82, PROT_READ, MAP_SHARED, 16, 0) = 0x2a9a8b4000
munmap(0x2a9a8b4000, 82)                = 0
close(16)                               = 0

------------------------------------------------------------------------

[2009-08-31 11:48:20] j...@php.net

Thank you for this bug report. To properly diagnose the problem, we
need a short but complete example script to be able to reproduce
this bug ourselves. 

A proper reproducing script starts with <?php and ends with ?>,
is max. 10-20 lines long and does not require any external 
resources such as databases, etc. If the script requires a 
database to demonstrate the issue, please make sure it creates 
all necessary tables, stored procedures etc.

Please avoid embedding huge scripts into the report.



------------------------------------------------------------------------

The remainder of the comments for this report are too long. To view
the rest of the comments, please view the bug report online at
    http://bugs.php.net/49383

-- 
Edit this bug report at http://bugs.php.net/?id=49383&edit=1

Reply via email to