lkml.org 
[lkml]   [2008]   [Jun]   [24]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: [rfc patch 3/4] splice: remove confirm from pipe_buf_operations


    On Tue, 24 Jun 2008, Miklos Szeredi wrote:
    >
    > OK it could be done, possibly at great pain. But why is it important?
    > What's the use case where it matters that splice-in should not block
    > on the read?

    If you're splicing from one file to another, the _goal_ you should have is
    that you want to have a mode where you can literally steal the page, and
    never _ever_ be IO-synchronous (well, meta-data accesses will be, you
    can't really avoid that sanely).

    IOW, it should be possible to do a

    - splice() file->pipe with SPLICE_STEAL
    don't even wait for the read to finish!

    - splice() pipe->file
    insert the page into the destination page cache, mark it dirty

    an no, we probably do not support that yet (for example, I wouldn't be
    surprised if "dirty + !uptodate" is considered an error for the VM even
    though the page should still be locked from the read), but it really was a
    design goal.

    Also, asynchronous is important even when you "just" want to overlap IO
    with CPU, so even if it's going to the network, then if you can delay the
    "wait for IO to complete" until the last possible moment (ie the _second_
    splice, when you end up copying it into an SKB, then both your throughput
    and your latency are likely going to be noticeably better, because you've
    now been able to do a lot of the costly CPU work (system exit + entry at
    the least, but hopefully a noticeable portion of the TCP stack too)
    overlapped with the disk seeking.

    So asynchronous ops was really one of the big goals for splice.

    Linus


    \
     
     \ /
      Last update: 2008-06-24 19:33    [W:0.026 / U:56.988 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site