Re: Disk IO performance

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Monday 29 November 2010,

Per Jessen <per@xxxxxxxxxxxx> wrote:

> Daniel Molina Wegener wrote:

> > On Sunday 28 November 2010,

> >

> > Larry Garfield <larry@xxxxxxxxxxxxxxxx> wrote:

> >> There are many things that everybody "knows" about optimizing PHP

> >> code. One of them is that one of the most expensive parts of the

> >> process is loading code off of disk and compiling it, which is why

> >> opcode caches

> >> are such a bit performance boost. The corollary to that, of course,

> >> is that more files = more IO and therefore more of a performance hit.

> >>

> > It depends on the implementation that PHP uses to open the file. For

> >

> > example on Linux and similar operating systems, PHP uses the mmap(2)

> > function instead of read(2) or fread(2) functions, so it maps the

> > complete file into memory, that is more faster than using partial file

> > reads.

>

> I doubt if a read(file,1Mb) and an mmap(file,1Mb) will be very

> different. The file has got to be hauled in from disk regardless of

> which function you choose.

Well, they are different. That's why some php functions and a wide

variety of language implementations are using mmap(2) instead of read(2)

to read files from the hard drive for inclusion or module importing.

Also Apache uses sendfile(2) and mmap(2) when they are available on

the platform because are more faster than read(2).

You just can trace how php loads certain modules when you call

include(), require(), include_once() and require_once(). Also Python,

Perl and other languages have a similar implementation when they

are loading modules.

read(2) depends on the VFS blocksize, which is used as the maximum

unit for chunk reads, mmap(2) not.

Just check the PHP source code or run an strace(1) over php loading

modules and check which function is used to read inclusions.

Best regards,

--

Daniel Molina Wegener <dmw [at] coder [dot] cl>

System Programmer & Web Developer

Phone: +56 (2) 979-0277 | Blog: http://coder.cl/

Attachment: signature.asc
Description: This is a digitally signed message part.


[Index of Archives]     [PHP Home]     [Apache Users]     [PHP on Windows]     [Kernel Newbies]     [PHP Install]     [PHP Classes]     [Pear]     [Postgresql]     [Postgresql PHP]     [PHP on Windows]     [PHP Database Programming]     [PHP SOAP]

  Powered by Linux