[lkml]   [1997]   [Jun]   [3]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
Messages in this thread
    SubjectRe: kernel > 2.1.36 & nfs
    > However, it is equally correct to say that the current fragment handling
    > is broken too - it does an unnecessary packet re-assembly on receive.

    This is only a tiny part of the issue.

    > This re-assembly simplifies some code, but it not only has a bad impact
    > on memory management, it also involves a "useless" copy operation.

    That "useless" operation is somewhat temporary - its only useless because
    we dont reassemble and checksum in one pass. Also ATM already and HIPPI
    very soon will be giving us 65280 byte frames that are not fragmented.

    > UDP packets on receive without reassembling them - that would get better
    > NFS performance due to getting rid of the copy, and it would also result
    > in better network buffer allocation.

    Its a partial fix.

    What is really needed is something like

    buffer=vreserve(65536); /* Allocate 64K of address space */

    err=vfill(buffer, len, GFP_..); /* Put pages in where needed */
    if(err==-ENOMEM) /* No pages */


    and the following other operations


    x=simple_vbuf(x) /* Test if buffer has a simple linear
    translation to physical */

    The big problem we hit is that we need to rewrite a pile of DMA driven network
    drivers to do scatter gather or at least to spot problems in buffers they
    intend to DMA. Generally speaking it will be fine - something like


    can return the buffer for most cases (not overlapping a page where the
    data is), or a copy for the rare case it isnt and NULL for awkward cases where
    we have to copy and have no RAM. That will make fixing up most drivers simple.


     \ /
      Last update: 2005-03-22 13:39    [W:0.020 / U:4.508 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site