dev  

Re: sendfile in darwin

Dirk-Willem van Gulik
Wed, 07 May 2008 12:09:31 -0700


On May 7, 2008, at 8:58 PM, Mads Toftum wrote:

On Wed, May 07, 2008 at 02:50:46PM -0400, Jim Jagielski wrote:
To clarify: I have no idea what you are referring to
as far as what issue you were discussing. This is
because it was on IRC. For myself and everyone else who
did not happen to be on IRC at that moment of time, we
have no idea what this is all about.

18:26 < dirkx> Quick thought anyone.... with a"curl --silent -o
/dev/null -vv http://localhost:8080/manual/images/feather.gif"; on a
basic apache (default install, yadayada) on macosx -- response is
immediate.

18:27 < dirkx> But with curl --silent -o /dev/null -vv
http://localhost:8080/manual/images/feather.gif?x --- note the ?x at the
end -- delay of 2-3 seconds before the reply is streamed on the wire.

18:54 < dirkx> Ah - if I use the '-X' flag -- it is virtually always
there.

19:01 < dirkx> Hmm - a 'Connection: close' in the request header sorts
it out sure.
19:01 < dirkx> Kind of interesting -- dtrace() shows you:
19:01 < dirkx>
open("/Users/dirkx/tmp/apache-httpd-26044/manual/images/feather.gif \0",
0x0, 0x0)II = 10 0
19:02 < dirkx> etsockopt(0x9, 0x6, 0x1)II = 0 0
19:02 < dirkx> setsockopt(0x9, 0x6, 0x4)II = 0 0
19:02 < dirkx> writev(0x9, 0xBFFFEE74, 0x1)II = 245 0
19:02 < dirkx> sendfile(0xA, 0x9, 0x0)II = 0 0
19:02 < dirkx> ... write to log file ...
19:02 < dirkx> close(0xA)II = 0 0
19:02 < dirkx> read(0x9, " ---> returns -1
19:02 < dirkx> ... then waits....
19:02 < dirkx> waits...
19:03 < dirkx> And then the actual reply goes out by TCP simultaneous
with:
19:03 < dirkx> poll(0xBFFFF228, 0x1, 0x1388)II = 1 0
19:03 < dirkx> read(0x9, "\0", 0x1F40)II = 0 0
19:03 < dirkx> shutdown(0x9, 0x1, 0x173460)II = 0 0
19:03 < dirkx> poll(0xBFFFF558, 0x1, 0x7D0)II = 1 0
19:03 < dirkx> read(0x9, "\0", 0x200)II = 0 0
19:03 < dirkx> close(0x9)II = 0 0
19:03 < dirkx> read(0x5, "\0", 0x1)II = -1 Err#35
19:03 < dirkx> As if the 'sendfile' 'hangs' until that happens.

I think that's all of it.

More recent from thereon

-       Folloow up on Quasi -- try EnableSendFile on/off

-       Makes it perfectly reproducable

-       Try patch r654185 - which does not quite fix it.

and that is about it.

Dw