• David Howells's avatar
    cifs: Fix read-performance regression by dropping readahead expansion · 08f70c0a
    David Howells authored
    cifs_expand_read() is causing a performance regression of around 30% by
    causing extra pagecache to be allocated for an inode in the readahead path
    before we begin actually dispatching RPC requests, thereby delaying the
    actual I/O.  The expansion is sized according to the rsize parameter, which
    seems to be 4MiB on my test system; this is a big step up from the first
    requests made by the fio test program.
    
    Simple repro (look at read bandwidth number):
         fio --name=writetest --filename=/xfstest.test/foo --time_based --runtime=60 --size=16M --numjobs=1 --rw=read
    
    Fix this by removing cifs_expand_readahead().  Readahead expansion is
    mostly useful for when we're using the local cache if the local cache has a
    block size greater than PAGE_SIZE, so we can dispense with it when not
    caching.
    
    Fixes: 69c3c023 ("cifs: Implement netfslib hooks")
    Signed-off-by: default avatarDavid Howells <dhowells@redhat.com>
    Acked-by: default avatarPaulo Alcantara (Red Hat) <pc@manguebit.com>
    cc: Jeff Layton <jlayton@kernel.org>
    cc: Matthew Wilcox <willy@infradead.org>
    cc: linux-cifs@vger.kernel.org
    cc: netfs@lists.linux.dev
    cc: linux-fsdevel@vger.kernel.org
    cc: linux-mm@kvack.org
    Signed-off-by: default avatarSteve French <stfrench@microsoft.com>
    08f70c0a
file.c 86.5 KB