On Nov 20, 2005, at 1:34 PM, Phillip Susi wrote:

Actually you have to use a peg revision, not -r. If you try -r to look at the deleted branch, svn tries to find the named directory in the HEAD revision, then look up it's state as it existed in rev x. This will fail since it does not exist in the head revision, so instead you have to do something like:

svn list http://repos/svn/[EMAIL PROTECTED]

svn list -r x http://repos/svn/deleted fails because deleted does not exist anymore.

By the way, what exactly is the async-dev branch and what are the future plans for it? I actually have spent this entire weekend doing research on the current state of support of async IO in linux and modified the dd program to use overlapped async IO when you pass it the iflag=direct option. It turned out that glibc's posix aio library simply performs sync IO in a background thread, so I ended up hacking together a basic aio implementation that directly uses the kernel's aio support. I'm still testing it but it looks like it yielded substantial cpu savings and throughput increases by keeping the drive directly reading into the userspace buffers. DMA transfers sure beat memcpy()s.


The async-dev branch was a place for testing changes to the httpd core and Event MPM to support nonblocking network writes. These changes have since
been merged into the httpd trunk.  Once the entire response for an HTTP
request has been generated, the worker thread hands off the remainder of
the response transmission to a central pollset.  The new async-read-dev
branch is something I just created as a sandbox for developing nonblocking
network read support.

The async write completion stuff that's now in the trunk does nonblocking network writes, and it uses sendfile to do zero-copy transfer from the filesystem cache to the network on platforms that support it, but it doesn't try to do file I/O asynchronously. Thus it's possible for the current code to block on a
disk read while trying to do a nonblocking socket write.  (The Event MPM
compensates for this by allowing multiple threads to do sendfile calls on
different sockets concurrently; if one thread happens to block on a
physical disk read, it doesn't delay other connections.)  Having a means
of doing nonblocking filesystem I/O, via either aio or something like
mincore checks, might be a nice addition.

Brian

Reply via email to